From 06d9f2265a6fa0395934a088ed07756ddca69d34 Mon Sep 17 00:00:00 2001 From: xiayu Date: Mon, 31 Aug 2026 13:48:24 +0800 Subject: [PATCH 1/3] feat: prepare KsADK 0.8.3 public candidate Allowlisted export from internal master 719723f177858e94628c71c1c385b475ed500db3. The candidate remains unreleased until registry-backed UI assets, final pre-production evidence, and release approvals pass. --- .github/workflows/ci.yml | 4 +- .github/workflows/publish-pypi.yml | 4 +- .github/workflows/release-check.yml | 35 +- .gitignore | 4 + CHANGELOG.md | 28 +- MANIFEST.in | 1 + Makefile | 58 +- README.en.md | 11 + README.md | 12 + README.zh-CN.md | 11 + .../v1/activation-lease.schema.json | 20 + .../agent-kernel/v1/agent-control.schema.json | 268 +++ .../v1/fixtures/activation-lease.json | 32 + .../v1/fixtures/agent-control-enqueue.json | 21 + .../v1/fixtures/agent-control-inject.json | 21 + .../v1/fixtures/agent-control-interrupt.json | 19 + .../v1/fixtures/agent-control-pause.json | 19 + .../v1/fixtures/agent-control-permit.json | 68 + .../v1/fixtures/agent-control-receipts.json | 64 + .../v1/fixtures/agent-control-resume.json | 24 + .../v1/fixtures/agent-control-steer.json | 21 + .../agent-control-submit_interaction.json | 23 + .../v1/fixtures/agent-control.json | 150 ++ .../v1/fixtures/agent-status-snapshot.json | 50 + .../v1/fixtures/interaction-requested.json | 52 + .../v1/fixtures/interaction-resolved.json | 17 + .../v1/fixtures/interaction-submit.json | 8 + .../v1/fixtures/runtime-capability.json | 96 + .../v1/fixtures/session-event-control.json | 179 ++ .../v1/fixtures/session-event-runtime.json | 18 + .../agent-kernel/v1/interaction.schema.json | 194 ++ contracts/agent-kernel/v1/manifest.json | 123 ++ .../v1/runtime-capability.schema.json | 48 + .../agent-kernel/v1/session-event.schema.json | 48 + .../v1/conversation-input.schema.json | 62 + .../v1/conversation-item.schema.json | 58 + .../v1/conversation-surface.schema.json | 50 + .../v1/fixtures/conversation-input.json | 24 + .../v1/fixtures/conversation-item.json | 15 + .../v1/fixtures/conversation-surface.json | 16 + contracts/conversation/v1/manifest.json | 38 + .../v1/agent-bundle-manifest-v2.schema.json | 84 + .../v1/capability-definition.schema.json | 33 + .../plugin/v1/composition-profile.schema.json | 46 + .../plugin/v1/context-contributor.schema.json | 1 + .../v1/dsh-agent-provider-host.schema.json | 72 + .../v1/fixtures/agent-bundle-manifest-v2.json | 32 + .../v1/fixtures/capability-definition.json | 15 + .../v1/fixtures/composition-profile.json | 30 + .../v1/fixtures/context-contributor.json | 59 + .../v1/fixtures/dsh-agent-provider-host.json | 14 + .../plugin-ecosystem-bridge-codex.json | 339 +++ ...plugin-ecosystem-bridge-dual-manifest.json | 33 + .../plugin-ecosystem-bridge-host-missing.json | 37 + .../plugin/v1/fixtures/plugin-inventory.json | 15 + contracts/plugin/v1/fixtures/plugin-lock.json | 40 + .../plugin/v1/fixtures/subagent-provider.json | 74 + contracts/plugin/v1/manifest.json | 108 + .../v1/plugin-ecosystem-bridge.schema.json | 1830 +++++++++++++++++ .../plugin/v1/plugin-inventory.schema.json | 30 + contracts/plugin/v1/plugin-lock.schema.json | 49 + .../plugin/v1/subagent-provider.schema.json | 222 ++ .../v1/fixtures/schedule-occurrence.json | 26 + .../scheduler/v1/fixtures/scheduled-task.json | 30 + contracts/scheduler/v1/manifest.json | 28 + .../v1/schedule-occurrence.schema.json | 59 + .../scheduler/v1/scheduled-task.schema.json | 63 + .../content/docs/framework/guides/meta.json | 1 + .../guides/plugins-and-automations.en.mdx | 132 ++ .../guides/plugins-and-automations.mdx | 130 ++ docs-site/content/docs/framework/meta.json | 1 + .../references/environment-variables.en.mdx | 8 + .../docs/references/environment-variables.mdx | 8 + docs/maintainer-approval-record.md | 52 +- docs/public-release-workflow.md | 13 + ...30\351\207\217\345\217\202\350\200\203.md" | 5 +- export-manifest.json | 167 +- ksadk/builders/managed_runtime_builder.py | 3 + ksadk/cli/__init__.py | 6 + ksadk/cli/cmd_plugin.py | 657 ++++++ ksadk/codex/runtime.py | 58 +- ksadk/configs/env_registry.py | 34 +- ksadk/context_engine/contributors.py | 81 +- ksadk/conversations/__init__.py | 19 + ksadk/conversations/context.py | 128 +- ksadk/conversations/contracts.py | 266 +++ ksadk/conversations/projector.py | 574 ++++++ ksadk/conversations/reducer.py | 98 + ksadk/harness/__init__.py | 80 +- ksadk/harness/runtime.py | 61 +- ksadk/kernel/contract_fingerprints.py | 9 +- ksadk/kernel/contracts.py | 8 + ksadk/kernel/control.py | 1 + ksadk/kernel/ingress.py | 21 + ksadk/kernel/memory_store.py | 1 + ksadk/kernel/postgres_store.py | 1 + ksadk/kernel/sqlite_store.py | 1 + ksadk/kernel/worker.py | 11 + ksadk/memory/providers/local_sqlite.py | 7 + ksadk/plugins/__init__.py | 167 ++ ksadk/plugins/bridges/__init__.py | 45 + ksadk/plugins/bridges/codex.py | 547 +++++ ksadk/plugins/bridges/dsh.py | 1116 ++++++++++ ksadk/plugins/builtins.py | 747 +++++++ ksadk/plugins/bundle.py | 246 +++ ksadk/plugins/bundle_security.py | 167 ++ ksadk/plugins/composition.py | 529 +++++ ksadk/plugins/context_contributor.py | 437 ++++ ksadk/plugins/contracts.py | 451 ++++ ksadk/plugins/dsh_toolchain.py | 935 +++++++++ ksadk/plugins/ecosystem_bridge.py | 1105 ++++++++++ ksadk/plugins/ecosystem_probe.py | 191 ++ ksadk/plugins/host.py | 724 +++++++ ksadk/plugins/providers/__init__.py | 85 + .../bundles/ksadk-codex/cordis.patch.yml | 3 + .../providers/bundles/ksadk-codex/index.mjs | 18 + .../bundles/ksadk-codex/package.json | 19 + .../bundles/ksadk-harness/cordis.patch.yml | 3 + .../providers/bundles/ksadk-harness/index.mjs | 19 + .../bundles/ksadk-harness/package.json | 19 + ksadk/plugins/providers/codex.py | 722 +++++++ ksadk/plugins/providers/codex_dsh.py | 83 + ksadk/plugins/providers/dsh.py | 951 +++++++++ .../plugins/providers/dsh_descriptor_host.py | 226 ++ ksadk/plugins/providers/harness.py | 627 ++++++ ksadk/plugins/providers/harness_dsh.py | 91 + ksadk/plugins/providers/legacy.py | 215 ++ ksadk/plugins/providers/legacy_catalog.py | 100 + ksadk/plugins/providers/shipped_dsh.py | 370 ++++ ksadk/plugins/resolver.py | 331 +++ ksadk/plugins/subagent_providers/__init__.py | 12 + ksadk/plugins/subagent_providers/codex.py | 443 ++++ ksadk/plugins/subagents.py | 333 +++ ksadk/runtime/adapter.py | 1 + ksadk/runtime/factory.py | 78 +- ksadk/runtime/framework_adapters.py | 18 + ksadk/runtime/runner_adapter.py | 5 + ksadk/scheduler/__init__.py | 18 + ksadk/scheduler/calendar.py | 102 + ksadk/scheduler/contracts.py | 254 +++ ksadk/scheduler/dispatcher.py | 129 ++ ksadk/scheduler/engine.py | 416 ++++ ksadk/scheduler/sqlite_store.py | 563 +++++ ...DSU1sWD_.js => ArtifactsPanel-CytJCLMc.js} | 2 +- ...lock-DOH6MVcn.js => CodeBlock-D6tEbvd9.js} | 2 +- ...1R2.js => MathMessageMarkdown-BBnihmbC.js} | 2 +- ...k-Dz4IP-Tx.js => MermaidBlock-CI9NjqQx.js} | 12 +- ...JpZ.js => NativeTerminalPanel-Czpx2MSS.js} | 2 +- ...NV.js => abnfDiagram-VCTEODGH-CNsXewmF.js} | 2 +- .../{arc-C4FzinUA.js => arc-x-74isv6.js} | 2 +- .../assets/architecture-7GRP2DOG-C3S9W0aD.js | 1 + .../assets/architecture-7GRP2DOG-DjKratdf.js | 1 - ... architectureDiagram-5GKGNRK7-tZ3w1B6m.js} | 2 +- ...z.js => blockDiagram-NRAW4CY4-BEhGFh0b.js} | 2 +- ...eq2X.js => c4Diagram-UCG6FXSJ-zrSgZM44.js} | 2 +- .../server/static/assets/channel-4cQHKtx1.js | 1 - .../server/static/assets/channel-CdffTTpb.js | 1 + ...DmgWkESh.js => chunk-2Q5K7J3B-B6k89qGR.js} | 2 +- ...BVHAchFb.js => chunk-5VM5RSS4-VZAcej21.js} | 2 +- ...C-ipQzuS.js => chunk-F27PBJKO-DNUQP5bs.js} | 2 +- ...C2EyJbIK.js => chunk-G27WJ6UU-BVuLv5Os.js} | 2 +- ...vYvVJb_M.js => chunk-JWPE2WC7-CEttzwEN.js} | 2 +- ...BcI6ysPT.js => chunk-LCL6LL3I-BT3bzrVf.js} | 2 +- ...C030x_Z1.js => chunk-POPQ4Y6H-BvutC1JH.js} | 2 +- ...yyGpsz4n.js => chunk-RHFEMEQ7-BIXm03MG.js} | 2 +- ...BLTlmMU7.js => chunk-SVP7TREG--LDO57tP.js} | 2 +- ...C_32ArgP.js => chunk-XXDRQBXY-WtVtVhpq.js} | 2 +- .../assets/classDiagram-DTDB5LWJ-C0BU8Yr9.js | 1 + .../assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js | 1 - .../classDiagram-v2-JRS7N3AN-C0BU8Yr9.js | 1 + .../classDiagram-v2-JRS7N3AN-DLFd9Xi0.js | 1 - ...0.js => cose-bilkent-JH36ORCC-CnqJMsPI.js} | 2 +- .../assets/cynefin-OW5HDTMX-BckONr__.js | 1 + .../assets/cynefin-OW5HDTMX-DjEM48Qp.js | 1 - ...js => cynefinDiagram-5FMLGOSQ-Ci9qjtA_.js} | 2 +- ...DFiQF-6f.js => dagre-3AP2YEHR-Ll3LkcYP.js} | 2 +- .../{dagre-BuhGnRI1.js => dagre-CKrj2THw.js} | 2 +- ...1v8-GC.js => diagram-S7CK7UJ4-BQ1slPEx.js} | 2 +- ...CxJdBK.js => diagram-UQ7AKVKN-BXz7DvIg.js} | 2 +- ...fYwp_9.js => diagram-VSXAHHWV-DOno97OL.js} | 2 +- ...zD-4Le.js => diagram-VX7I27RA-CU2kHvv3.js} | 2 +- ...-nAJ9F.js => diagram-Z3DM3KII-mhpvOavV.js} | 2 +- .../{dist-dydu68Fl.js => dist-2cbEIexW.js} | 2 +- .../{dist-ClxGviKw.js => dist-4j-rswH6.js} | 2 +- .../{dist-B7seoj3d.js => dist-B-VEMnGR.js} | 2 +- .../{dist-BjU6y-A2.js => dist-B6XMlZpc.js} | 2 +- .../{dist-BytlxIDT.js => dist-BQCggVji.js} | 2 +- .../{dist-W-TIVntx.js => dist-BZiMQVbN.js} | 2 +- .../{dist-CXYYBw3_.js => dist-BvMDy0Xp.js} | 2 +- .../{dist-CSh_DE14.js => dist-BxjBfG2w.js} | 2 +- .../{dist-CttYUqzS.js => dist-Byl0QKIY.js} | 2 +- .../{dist-DnfXs8Vn.js => dist-C-Q0Ulfg.js} | 2 +- .../{dist-dDdADKFA.js => dist-C-V2Wj4x.js} | 2 +- .../{dist-DUX-id_F.js => dist-CPZHorum.js} | 2 +- .../{dist-BE7bu-DL.js => dist-CTeZLI0m.js} | 2 +- .../{dist-ngtN0DJB.js => dist-CUFAKgYs.js} | 2 +- .../{dist-BX8z72IC.js => dist-CaTDm1g0.js} | 2 +- .../{dist-DmldrHd_.js => dist-CoCI5ZIy.js} | 2 +- .../{dist-Dq9gLD7L.js => dist-DGFsOxe9.js} | 2 +- .../{dist-C_wsv-Qd.js => dist-DeO3Qj-D.js} | 2 +- .../{dist-DNp6rLRA.js => dist-DgSf2VGQ.js} | 2 +- .../{dist-Bf2M8m3N.js => dist-DwwtGqH9.js} | 2 +- .../{dist-BVDffZ0U.js => dist-hRISJdRx.js} | 2 +- .../{dist-8hqcx0sU.js => dist-oPMjOYRU.js} | 2 +- ...O1.js => ebnfDiagram-PWID7BFC-DAH8tjOy.js} | 2 +- ...qR79.js => erDiagram-SSCWMZ5O-JvDkJGJ3.js} | 2 +- .../assets/eventmodeling-NTZA5JFV-CMgMaJrC.js | 1 - .../assets/eventmodeling-NTZA5JFV-vjy4Z61x.js | 1 + .../assets/flowDiagram-A5DVABFB-BBKL0x3P.js | 1 - .../assets/flowDiagram-A5DVABFB-CvJ64Qzs.js | 1 + ...9.js => ganttDiagram-EL5Y4UJY-B-SEC706.js} | 2 +- .../assets/gitGraph-4MIJSDKK-CX3KwgqY.js | 1 + .../assets/gitGraph-4MIJSDKK-Dw63mrhw.js | 1 - ...s => gitGraphDiagram-WWUBYQGX-D7OJf_No.js} | 2 +- .../{index-8ipRcQ-M.js => index-BkDx9KsG.js} | 129 +- ...{index-ByFCqjlh.css => index-DW7rZ4ml.css} | 2 +- .../static/assets/info-A6RAGUB7-B6iAblII.js | 1 - .../static/assets/info-A6RAGUB7-CYHIOuL5.js | 1 + ...d5.js => infoDiagram-RXCK75RN-CTIHOSud.js} | 2 +- ...s => ishikawaDiagram-5VMMS53U-HMO7FchJ.js} | 2 +- ...js => journeyDiagram-EYS64GPL-DeFbDr5t.js} | 2 +- ...=> kanban-definition-3QL26DDD-D3OeNqXY.js} | 2 +- .../{katex-vFWytM5c.js => katex-DCJHF0vD.js} | 2 +- ...{linear-BHjG8b-J.js => linear-D3-vxS4W.js} | 2 +- ...jWT.js => mermaid-parser.core-C-Sc5_7E.js} | 4 +- ...> mindmap-definition-FBJOCRG2-D-XtspHN.js} | 2 +- .../static/assets/packet-AYTQ26CC-BOYAipuq.js | 1 - .../static/assets/packet-AYTQ26CC-Ctg2wH4o.js | 1 + ...4fD.js => pegDiagram-XKGWAZYB-BYbAq9Nb.js} | 2 +- .../static/assets/pie-WAS4IAKB-CU6GnSzI.js | 1 + .../static/assets/pie-WAS4IAKB-Ctq0Kbku.js | 1 - ...FFp.js => pieDiagram-E7YTZNPT-DQ2yX4VQ.js} | 2 +- ...s => quadrantDiagram-AXDQQJYC-rvRPUN0j.js} | 2 +- .../static/assets/radar-RG4KPBEZ-Bhe0us4A.js | 1 + .../static/assets/radar-RG4KPBEZ-DN0-ul_0.js | 1 - .../assets/railroad-74A4TZTK-C6cC_to0.js | 1 - .../assets/railroad-74A4TZTK-DEgiNGfx.js | 1 + .../assets/railroad-abnf-HS5TGJTU-BimjIuRc.js | 1 - .../assets/railroad-abnf-HS5TGJTU-GK7ct0QX.js | 1 + .../assets/railroad-ebnf-LZEXJU2U-BzlcTUmk.js | 1 + .../assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js | 1 - .../assets/railroad-peg-WCYAUIDC-7ESM96BW.js | 1 + .../assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js | 1 - ...s => railroadDiagram-O6MQD6OU-2OVn6qwA.js} | 2 +- ...> requirementDiagram-EFPCY7ZU-ChWVLAKz.js} | 2 +- ....js => sankeyDiagram-P5KCCOFB-Cb5gXi_j.js} | 2 +- ...s => sequenceDiagram-WJ2MYXX4-D7g_-PUM.js} | 2 +- ...hI.js => sizeCapture-X5ZJPWSS-D__whCj3.js} | 2 +- ...B.js => stateDiagram-HBIQ2CUA-CpKIc0dl.js} | 2 +- .../stateDiagram-v2-4QOOHH4V-BgQY03nz.js | 1 - .../stateDiagram-v2-4QOOHH4V-D7ulg6TV.js | 1 + ...fN_t.js => swimlanes-XN3QIQJK-CFJohC2b.js} | 2 +- .../swimlanesDiagram-VK2B7HYN-A-oZaquE.js | 8 + .../swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js | 8 - ... timeline-definition-24CTP7MA-Dg4AY0KC.js} | 2 +- .../assets/treeView-Q6P3EWNA-BMpO0wsB.js | 1 - .../assets/treeView-Q6P3EWNA-D6u1mSx1.js | 1 + .../assets/treemap-WGGIJYW6-CM87Vav0.js | 1 + .../assets/treemap-WGGIJYW6-Et0aqzU3.js | 1 - ...kh.js => vennDiagram-4TSXK5OY-A6cRoCBU.js} | 2 +- .../assets/wardley-WFR3VGLG-BPoQUTzr.js | 1 + .../assets/wardley-WFR3VGLG-CbY0mhpl.js | 1 - ...js => wardleyDiagram-VM6X3IG4-BVD1hMYl.js} | 2 +- ...js => xychartDiagram-S5SC5T6Z-BlBLXETg.js} | 2 +- ksadk/server/static/index.html | 4 +- ksadk/studio/agent_lifecycle.py | 46 +- ksadk/studio/api.py | 582 +++++- ksadk/studio/api_catalog_routes.py | 5 + ksadk/studio/api_contracts.py | 35 +- ksadk/studio/api_plugin_routes.py | 480 +++++ ksadk/studio/attachment_store.py | 187 ++ ksadk/studio/authoring.py | 14 +- ksadk/studio/authoring_coordinator.py | 14 +- ksadk/studio/builder.py | 166 +- ksadk/studio/codex_agent_service.py | 13 +- ksadk/studio/codex_builder.py | 69 +- ksadk/studio/codex_manifest.py | 22 +- ksadk/studio/codex_run.py | 20 +- ksadk/studio/compatibility_report.py | 445 ++++ ksadk/studio/compiler.py | 7 +- ksadk/studio/contracts.py | 127 +- ksadk/studio/dsh_provider_registration.py | 768 +++++++ ksadk/studio/event_store.py | 60 +- ksadk/studio/framework_run.py | 41 +- ksadk/studio/hosted_kernel.py | 2 +- ksadk/studio/operations.py | 14 +- ksadk/studio/plugin_composition.py | 301 +++ ksadk/studio/plugin_kernel_adapter.py | 128 ++ ksadk/studio/plugin_runtime.py | 652 ++++++ ksadk/studio/resource_catalog.py | 7 +- ksadk/studio/run_service.py | 781 ++++++- ksadk/studio/runtime_source.py | 10 +- ksadk/studio/scheduler_runtime.py | 374 ++++ ksadk/studio/scheduler_service.py | 211 ++ ksadk/studio/service.py | 754 ++++++- ksadk/studio/shared_web.py | 195 +- ksadk/studio/soul.py | 52 + ...-IYN-ffww.js => PrismRenderer-e1psRo9-.js} | 2 +- ksadk/studio/static/assets/index-BLpcdrgW.css | 1 - ksadk/studio/static/assets/index-CYekR2Xv.js | 260 --- ksadk/studio/static/assets/index-DXs1Eq4M.css | 1 + ksadk/studio/static/assets/index-t4JdtanA.js | 267 +++ ...r-BNmTiJ-I.js => react-vendor-D0Ec-185.js} | 2 +- ksadk/studio/static/index.html | 6 +- ksadk/studio/validator.py | 2 +- ksadk/studio/workspace.py | 1 + ksadk/version.py | 2 +- .../workspace_files/path_utils.py | 41 + pyproject.toml | 11 +- scripts/check_approval_record.py | 18 +- scripts/phase2_release_candidate_gate.py | 294 +++ scripts/phase2_release_preflight.py | 795 +++++++ scripts/prepare_ksadk_python_export.py | 66 + scripts/write_build_provenance.py | 105 + tests/__init__.py | 1 + .../v0.8.2-agent-bundle.provenance.json | 50 + .../fixtures/v0.8.2-agent-bundle.zip.b64 | 1 + ...anaged-runtime-agentengine.provenance.json | 9 + .../v0.8.2-managed-runtime-agentengine.yaml | 9 + tests/compat/test_phase2_legacy_compat.py | 199 ++ tests/compat/test_release_082_asset_compat.py | 359 ++++ tests/e2e/chat_completions_stub.py | 111 + tests/e2e/codex_app_server_fixture.py | 58 + tests/e2e/codex_responses_stub.py | 282 +++ .../skills/bridge-check/SKILL.md | 8 + tests/e2e/test_codex_plugin_bridge_e2e.py | 216 ++ .../e2e/test_codex_provider_app_server_e2e.py | 159 ++ tests/e2e/test_codex_subagent_provider_e2e.py | 184 ++ tests/e2e/test_dsh_managed_toolchain_e2e.py | 45 + .../dsh-node-agent-provider/cordis.patch.yml | 3 + .../dsh-node-agent-provider/index.mjs | 201 ++ .../dsh-node-agent-provider/package.json | 24 + .../dsh-node-agent-provider/provider-host.mjs | 67 + tests/harness/__init__.py | 1 + tests/harness/fixtures/__init__.py | 1 + tests/harness/fixtures/mcp_server.py | 90 + .../test_phase2_release_candidate_gate.py | 160 ++ .../test_phase2_release_preflight.py | 501 +++++ .../packaging/test_write_build_provenance.py | 43 + tests/plugins/__init__.py | 1 + tests/plugins/test_codex_provider_vertical.py | 584 ++++++ tests/plugins/test_dsh_node_provider_e2e.py | 543 +++++ tests/studio/__init__.py | 1 + .../e2e/conversation_items_browser_e2e.py | 559 +++++ .../e2e/conversation_reconnect_browser_e2e.py | 145 ++ .../e2e/dsh_client_bundle_browser_e2e.py | 121 ++ tests/studio/e2e/scheduler_browser_e2e.py | 435 ++++ .../e2e/scheduler_fault_matrix_browser_e2e.py | 357 ++++ .../e2e/scheduler_harness_browser_e2e.py | 328 +++ tests/studio/e2e/studio_browser_smoke.py | 6 +- tests/studio/e2e/studio_e2e_support.py | 9 +- tests/studio/e2e/studio_responsive_smoke.py | 38 +- tests/studio/runtime_adapter_fixtures.py | 241 +++ .../studio/test_framework_bundle_integrity.py | 251 +++ tests/studio/test_style_system.py | 7 +- tests/test_check_approval_record.py | 41 + tests/test_config_env_registry.py | 11 +- tests/test_public_release_positioning.py | 66 +- tests/test_runtime_common_packaging.py | 28 +- uv.lock | 9 +- 360 files changed, 36043 insertions(+), 1019 deletions(-) create mode 100644 contracts/agent-kernel/v1/activation-lease.schema.json create mode 100644 contracts/agent-kernel/v1/agent-control.schema.json create mode 100644 contracts/agent-kernel/v1/fixtures/activation-lease.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-enqueue.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-inject.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-interrupt.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-pause.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-permit.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-receipts.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-resume.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-steer.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control-submit_interaction.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-control.json create mode 100644 contracts/agent-kernel/v1/fixtures/agent-status-snapshot.json create mode 100644 contracts/agent-kernel/v1/fixtures/interaction-requested.json create mode 100644 contracts/agent-kernel/v1/fixtures/interaction-resolved.json create mode 100644 contracts/agent-kernel/v1/fixtures/interaction-submit.json create mode 100644 contracts/agent-kernel/v1/fixtures/runtime-capability.json create mode 100644 contracts/agent-kernel/v1/fixtures/session-event-control.json create mode 100644 contracts/agent-kernel/v1/fixtures/session-event-runtime.json create mode 100644 contracts/agent-kernel/v1/interaction.schema.json create mode 100644 contracts/agent-kernel/v1/manifest.json create mode 100644 contracts/agent-kernel/v1/runtime-capability.schema.json create mode 100644 contracts/agent-kernel/v1/session-event.schema.json create mode 100644 contracts/conversation/v1/conversation-input.schema.json create mode 100644 contracts/conversation/v1/conversation-item.schema.json create mode 100644 contracts/conversation/v1/conversation-surface.schema.json create mode 100644 contracts/conversation/v1/fixtures/conversation-input.json create mode 100644 contracts/conversation/v1/fixtures/conversation-item.json create mode 100644 contracts/conversation/v1/fixtures/conversation-surface.json create mode 100644 contracts/conversation/v1/manifest.json create mode 100644 contracts/plugin/v1/agent-bundle-manifest-v2.schema.json create mode 100644 contracts/plugin/v1/capability-definition.schema.json create mode 100644 contracts/plugin/v1/composition-profile.schema.json create mode 100644 contracts/plugin/v1/context-contributor.schema.json create mode 100644 contracts/plugin/v1/dsh-agent-provider-host.schema.json create mode 100644 contracts/plugin/v1/fixtures/agent-bundle-manifest-v2.json create mode 100644 contracts/plugin/v1/fixtures/capability-definition.json create mode 100644 contracts/plugin/v1/fixtures/composition-profile.json create mode 100644 contracts/plugin/v1/fixtures/context-contributor.json create mode 100644 contracts/plugin/v1/fixtures/dsh-agent-provider-host.json create mode 100644 contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-codex.json create mode 100644 contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-dual-manifest.json create mode 100644 contracts/plugin/v1/fixtures/plugin-ecosystem-bridge-host-missing.json create mode 100644 contracts/plugin/v1/fixtures/plugin-inventory.json create mode 100644 contracts/plugin/v1/fixtures/plugin-lock.json create mode 100644 contracts/plugin/v1/fixtures/subagent-provider.json create mode 100644 contracts/plugin/v1/manifest.json create mode 100644 contracts/plugin/v1/plugin-ecosystem-bridge.schema.json create mode 100644 contracts/plugin/v1/plugin-inventory.schema.json create mode 100644 contracts/plugin/v1/plugin-lock.schema.json create mode 100644 contracts/plugin/v1/subagent-provider.schema.json create mode 100644 contracts/scheduler/v1/fixtures/schedule-occurrence.json create mode 100644 contracts/scheduler/v1/fixtures/scheduled-task.json create mode 100644 contracts/scheduler/v1/manifest.json create mode 100644 contracts/scheduler/v1/schedule-occurrence.schema.json create mode 100644 contracts/scheduler/v1/scheduled-task.schema.json create mode 100644 docs-site/content/docs/framework/guides/plugins-and-automations.en.mdx create mode 100644 docs-site/content/docs/framework/guides/plugins-and-automations.mdx create mode 100644 ksadk/cli/cmd_plugin.py create mode 100644 ksadk/conversations/contracts.py create mode 100644 ksadk/conversations/projector.py create mode 100644 ksadk/conversations/reducer.py create mode 100644 ksadk/plugins/__init__.py create mode 100644 ksadk/plugins/bridges/__init__.py create mode 100644 ksadk/plugins/bridges/codex.py create mode 100644 ksadk/plugins/bridges/dsh.py create mode 100644 ksadk/plugins/builtins.py create mode 100644 ksadk/plugins/bundle.py create mode 100644 ksadk/plugins/bundle_security.py create mode 100644 ksadk/plugins/composition.py create mode 100644 ksadk/plugins/context_contributor.py create mode 100644 ksadk/plugins/contracts.py create mode 100644 ksadk/plugins/dsh_toolchain.py create mode 100644 ksadk/plugins/ecosystem_bridge.py create mode 100644 ksadk/plugins/ecosystem_probe.py create mode 100644 ksadk/plugins/host.py create mode 100644 ksadk/plugins/providers/__init__.py create mode 100644 ksadk/plugins/providers/bundles/ksadk-codex/cordis.patch.yml create mode 100644 ksadk/plugins/providers/bundles/ksadk-codex/index.mjs create mode 100644 ksadk/plugins/providers/bundles/ksadk-codex/package.json create mode 100644 ksadk/plugins/providers/bundles/ksadk-harness/cordis.patch.yml create mode 100644 ksadk/plugins/providers/bundles/ksadk-harness/index.mjs create mode 100644 ksadk/plugins/providers/bundles/ksadk-harness/package.json create mode 100644 ksadk/plugins/providers/codex.py create mode 100644 ksadk/plugins/providers/codex_dsh.py create mode 100644 ksadk/plugins/providers/dsh.py create mode 100644 ksadk/plugins/providers/dsh_descriptor_host.py create mode 100644 ksadk/plugins/providers/harness.py create mode 100644 ksadk/plugins/providers/harness_dsh.py create mode 100644 ksadk/plugins/providers/legacy.py create mode 100644 ksadk/plugins/providers/legacy_catalog.py create mode 100644 ksadk/plugins/providers/shipped_dsh.py create mode 100644 ksadk/plugins/resolver.py create mode 100644 ksadk/plugins/subagent_providers/__init__.py create mode 100644 ksadk/plugins/subagent_providers/codex.py create mode 100644 ksadk/plugins/subagents.py create mode 100644 ksadk/scheduler/__init__.py create mode 100644 ksadk/scheduler/calendar.py create mode 100644 ksadk/scheduler/contracts.py create mode 100644 ksadk/scheduler/dispatcher.py create mode 100644 ksadk/scheduler/engine.py create mode 100644 ksadk/scheduler/sqlite_store.py rename ksadk/server/static/assets/{ArtifactsPanel-DSU1sWD_.js => ArtifactsPanel-CytJCLMc.js} (96%) rename ksadk/server/static/assets/{CodeBlock-DOH6MVcn.js => CodeBlock-D6tEbvd9.js} (99%) rename ksadk/server/static/assets/{MathMessageMarkdown-BL8my1R2.js => MathMessageMarkdown-BBnihmbC.js} (98%) rename ksadk/server/static/assets/{MermaidBlock-Dz4IP-Tx.js => MermaidBlock-CI9NjqQx.js} (99%) rename ksadk/server/static/assets/{NativeTerminalPanel-DUrK0JpZ.js => NativeTerminalPanel-Czpx2MSS.js} (99%) rename ksadk/server/static/assets/{abnfDiagram-VCTEODGH-g20pFzNV.js => abnfDiagram-VCTEODGH-CNsXewmF.js} (85%) rename ksadk/server/static/assets/{arc-C4FzinUA.js => arc-x-74isv6.js} (98%) create mode 100644 ksadk/server/static/assets/architecture-7GRP2DOG-C3S9W0aD.js delete mode 100644 ksadk/server/static/assets/architecture-7GRP2DOG-DjKratdf.js rename ksadk/server/static/assets/{architectureDiagram-5GKGNRK7-DpIqL5h4.js => architectureDiagram-5GKGNRK7-tZ3w1B6m.js} (99%) rename ksadk/server/static/assets/{blockDiagram-NRAW4CY4-BjkljTNz.js => blockDiagram-NRAW4CY4-BEhGFh0b.js} (99%) rename ksadk/server/static/assets/{c4Diagram-UCG6FXSJ-Dk_ieq2X.js => c4Diagram-UCG6FXSJ-zrSgZM44.js} (99%) delete mode 100644 ksadk/server/static/assets/channel-4cQHKtx1.js create mode 100644 ksadk/server/static/assets/channel-CdffTTpb.js rename ksadk/server/static/assets/{chunk-2Q5K7J3B-DmgWkESh.js => chunk-2Q5K7J3B-B6k89qGR.js} (66%) rename ksadk/server/static/assets/{chunk-5VM5RSS4-BVHAchFb.js => chunk-5VM5RSS4-VZAcej21.js} (82%) rename ksadk/server/static/assets/{chunk-F27PBJKO-C-ipQzuS.js => chunk-F27PBJKO-DNUQP5bs.js} (93%) rename ksadk/server/static/assets/{chunk-G27WJ6UU-C2EyJbIK.js => chunk-G27WJ6UU-BVuLv5Os.js} (99%) rename ksadk/server/static/assets/{chunk-JWPE2WC7-vYvVJb_M.js => chunk-JWPE2WC7-CEttzwEN.js} (71%) rename ksadk/server/static/assets/{chunk-LCL6LL3I-BcI6ysPT.js => chunk-LCL6LL3I-BT3bzrVf.js} (99%) rename ksadk/server/static/assets/{chunk-POPQ4Y6H-C030x_Z1.js => chunk-POPQ4Y6H-BvutC1JH.js} (87%) rename ksadk/server/static/assets/{chunk-RHFEMEQ7-yyGpsz4n.js => chunk-RHFEMEQ7-BIXm03MG.js} (99%) rename ksadk/server/static/assets/{chunk-SVP7TREG-BLTlmMU7.js => chunk-SVP7TREG--LDO57tP.js} (99%) rename ksadk/server/static/assets/{chunk-XXDRQBXY-C_32ArgP.js => chunk-XXDRQBXY-WtVtVhpq.js} (72%) create mode 100644 ksadk/server/static/assets/classDiagram-DTDB5LWJ-C0BU8Yr9.js delete mode 100644 ksadk/server/static/assets/classDiagram-DTDB5LWJ-DLFd9Xi0.js create mode 100644 ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-C0BU8Yr9.js delete mode 100644 ksadk/server/static/assets/classDiagram-v2-JRS7N3AN-DLFd9Xi0.js rename ksadk/server/static/assets/{cose-bilkent-JH36ORCC-9YQYwdl0.js => cose-bilkent-JH36ORCC-CnqJMsPI.js} (99%) create mode 100644 ksadk/server/static/assets/cynefin-OW5HDTMX-BckONr__.js delete mode 100644 ksadk/server/static/assets/cynefin-OW5HDTMX-DjEM48Qp.js rename ksadk/server/static/assets/{cynefinDiagram-5FMLGOSQ-ErLF5N13.js => cynefinDiagram-5FMLGOSQ-Ci9qjtA_.js} (98%) rename ksadk/server/static/assets/{dagre-3AP2YEHR-DFiQF-6f.js => dagre-3AP2YEHR-Ll3LkcYP.js} (98%) rename ksadk/server/static/assets/{dagre-BuhGnRI1.js => dagre-CKrj2THw.js} (99%) rename ksadk/server/static/assets/{diagram-S7CK7UJ4-Bt1v8-GC.js => diagram-S7CK7UJ4-BQ1slPEx.js} (96%) rename ksadk/server/static/assets/{diagram-UQ7AKVKN-DSCxJdBK.js => diagram-UQ7AKVKN-BXz7DvIg.js} (96%) rename ksadk/server/static/assets/{diagram-VSXAHHWV-DHfYwp_9.js => diagram-VSXAHHWV-DOno97OL.js} (98%) rename ksadk/server/static/assets/{diagram-VX7I27RA-DdzD-4Le.js => diagram-VX7I27RA-CU2kHvv3.js} (98%) rename ksadk/server/static/assets/{diagram-Z3DM3KII-Du-nAJ9F.js => diagram-Z3DM3KII-mhpvOavV.js} (95%) rename ksadk/server/static/assets/{dist-dydu68Fl.js => dist-2cbEIexW.js} (99%) rename ksadk/server/static/assets/{dist-ClxGviKw.js => dist-4j-rswH6.js} (97%) rename ksadk/server/static/assets/{dist-B7seoj3d.js => dist-B-VEMnGR.js} (99%) rename ksadk/server/static/assets/{dist-BjU6y-A2.js => dist-B6XMlZpc.js} (99%) rename ksadk/server/static/assets/{dist-BytlxIDT.js => dist-BQCggVji.js} (96%) rename ksadk/server/static/assets/{dist-W-TIVntx.js => dist-BZiMQVbN.js} (98%) rename ksadk/server/static/assets/{dist-CXYYBw3_.js => dist-BvMDy0Xp.js} (99%) rename ksadk/server/static/assets/{dist-CSh_DE14.js => dist-BxjBfG2w.js} (99%) rename ksadk/server/static/assets/{dist-CttYUqzS.js => dist-Byl0QKIY.js} (99%) rename ksadk/server/static/assets/{dist-DnfXs8Vn.js => dist-C-Q0Ulfg.js} (99%) rename ksadk/server/static/assets/{dist-dDdADKFA.js => dist-C-V2Wj4x.js} (99%) rename ksadk/server/static/assets/{dist-DUX-id_F.js => dist-CPZHorum.js} (99%) rename ksadk/server/static/assets/{dist-BE7bu-DL.js => dist-CTeZLI0m.js} (99%) rename ksadk/server/static/assets/{dist-ngtN0DJB.js => dist-CUFAKgYs.js} (99%) rename ksadk/server/static/assets/{dist-BX8z72IC.js => dist-CaTDm1g0.js} (99%) rename ksadk/server/static/assets/{dist-DmldrHd_.js => dist-CoCI5ZIy.js} (99%) rename ksadk/server/static/assets/{dist-Dq9gLD7L.js => dist-DGFsOxe9.js} (94%) rename ksadk/server/static/assets/{dist-C_wsv-Qd.js => dist-DeO3Qj-D.js} (99%) rename ksadk/server/static/assets/{dist-DNp6rLRA.js => dist-DgSf2VGQ.js} (99%) rename ksadk/server/static/assets/{dist-Bf2M8m3N.js => dist-DwwtGqH9.js} (99%) rename ksadk/server/static/assets/{dist-BVDffZ0U.js => dist-hRISJdRx.js} (96%) rename ksadk/server/static/assets/{dist-8hqcx0sU.js => dist-oPMjOYRU.js} (99%) rename ksadk/server/static/assets/{ebnfDiagram-PWID7BFC-Da9C9NO1.js => ebnfDiagram-PWID7BFC-DAH8tjOy.js} (86%) rename ksadk/server/static/assets/{erDiagram-SSCWMZ5O-EAGqqR79.js => erDiagram-SSCWMZ5O-JvDkJGJ3.js} (99%) delete mode 100644 ksadk/server/static/assets/eventmodeling-NTZA5JFV-CMgMaJrC.js create mode 100644 ksadk/server/static/assets/eventmodeling-NTZA5JFV-vjy4Z61x.js delete mode 100644 ksadk/server/static/assets/flowDiagram-A5DVABFB-BBKL0x3P.js create mode 100644 ksadk/server/static/assets/flowDiagram-A5DVABFB-CvJ64Qzs.js rename ksadk/server/static/assets/{ganttDiagram-EL5Y4UJY-DqJsKb59.js => ganttDiagram-EL5Y4UJY-B-SEC706.js} (99%) create mode 100644 ksadk/server/static/assets/gitGraph-4MIJSDKK-CX3KwgqY.js delete mode 100644 ksadk/server/static/assets/gitGraph-4MIJSDKK-Dw63mrhw.js rename ksadk/server/static/assets/{gitGraphDiagram-WWUBYQGX-B6g4dtDi.js => gitGraphDiagram-WWUBYQGX-D7OJf_No.js} (98%) rename ksadk/server/static/assets/{index-8ipRcQ-M.js => index-BkDx9KsG.js} (54%) rename ksadk/server/static/assets/{index-ByFCqjlh.css => index-DW7rZ4ml.css} (50%) delete mode 100644 ksadk/server/static/assets/info-A6RAGUB7-B6iAblII.js create mode 100644 ksadk/server/static/assets/info-A6RAGUB7-CYHIOuL5.js rename ksadk/server/static/assets/{infoDiagram-RXCK75RN-Djm_nbd5.js => infoDiagram-RXCK75RN-CTIHOSud.js} (76%) rename ksadk/server/static/assets/{ishikawaDiagram-5VMMS53U-DWya9SG2.js => ishikawaDiagram-5VMMS53U-HMO7FchJ.js} (99%) rename ksadk/server/static/assets/{journeyDiagram-EYS64GPL-DutxhSNI.js => journeyDiagram-EYS64GPL-DeFbDr5t.js} (98%) rename ksadk/server/static/assets/{kanban-definition-3QL26DDD-DJdOF8Fm.js => kanban-definition-3QL26DDD-D3OeNqXY.js} (99%) rename ksadk/server/static/assets/{katex-vFWytM5c.js => katex-DCJHF0vD.js} (99%) rename ksadk/server/static/assets/{linear-BHjG8b-J.js => linear-D3-vxS4W.js} (98%) rename ksadk/server/static/assets/{mermaid-parser.core-KGSy4jWT.js => mermaid-parser.core-C-Sc5_7E.js} (99%) rename ksadk/server/static/assets/{mindmap-definition-FBJOCRG2-9-HC88D4.js => mindmap-definition-FBJOCRG2-D-XtspHN.js} (99%) delete mode 100644 ksadk/server/static/assets/packet-AYTQ26CC-BOYAipuq.js create mode 100644 ksadk/server/static/assets/packet-AYTQ26CC-Ctg2wH4o.js rename ksadk/server/static/assets/{pegDiagram-XKGWAZYB-DrEZd4fD.js => pegDiagram-XKGWAZYB-BYbAq9Nb.js} (86%) create mode 100644 ksadk/server/static/assets/pie-WAS4IAKB-CU6GnSzI.js delete mode 100644 ksadk/server/static/assets/pie-WAS4IAKB-Ctq0Kbku.js rename ksadk/server/static/assets/{pieDiagram-E7YTZNPT-DpjqOFFp.js => pieDiagram-E7YTZNPT-DQ2yX4VQ.js} (95%) rename ksadk/server/static/assets/{quadrantDiagram-AXDQQJYC-BiNhgOXX.js => quadrantDiagram-AXDQQJYC-rvRPUN0j.js} (99%) create mode 100644 ksadk/server/static/assets/radar-RG4KPBEZ-Bhe0us4A.js delete mode 100644 ksadk/server/static/assets/radar-RG4KPBEZ-DN0-ul_0.js delete mode 100644 ksadk/server/static/assets/railroad-74A4TZTK-C6cC_to0.js create mode 100644 ksadk/server/static/assets/railroad-74A4TZTK-DEgiNGfx.js delete mode 100644 ksadk/server/static/assets/railroad-abnf-HS5TGJTU-BimjIuRc.js create mode 100644 ksadk/server/static/assets/railroad-abnf-HS5TGJTU-GK7ct0QX.js create mode 100644 ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-BzlcTUmk.js delete mode 100644 ksadk/server/static/assets/railroad-ebnf-LZEXJU2U-CvY65ABq.js create mode 100644 ksadk/server/static/assets/railroad-peg-WCYAUIDC-7ESM96BW.js delete mode 100644 ksadk/server/static/assets/railroad-peg-WCYAUIDC-D72Iq_Tv.js rename ksadk/server/static/assets/{railroadDiagram-O6MQD6OU-_Y3Ojg6G.js => railroadDiagram-O6MQD6OU-2OVn6qwA.js} (83%) rename ksadk/server/static/assets/{requirementDiagram-EFPCY7ZU-DeCFdg9K.js => requirementDiagram-EFPCY7ZU-ChWVLAKz.js} (99%) rename ksadk/server/static/assets/{sankeyDiagram-P5KCCOFB-CPH75rhw.js => sankeyDiagram-P5KCCOFB-Cb5gXi_j.js} (99%) rename ksadk/server/static/assets/{sequenceDiagram-WJ2MYXX4-OEpQQdr4.js => sequenceDiagram-WJ2MYXX4-D7g_-PUM.js} (99%) rename ksadk/server/static/assets/{sizeCapture-X5ZJPWSS-heUErzhI.js => sizeCapture-X5ZJPWSS-D__whCj3.js} (92%) rename ksadk/server/static/assets/{stateDiagram-HBIQ2CUA-DvA3jSMB.js => stateDiagram-HBIQ2CUA-CpKIc0dl.js} (96%) delete mode 100644 ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-BgQY03nz.js create mode 100644 ksadk/server/static/assets/stateDiagram-v2-4QOOHH4V-D7ulg6TV.js rename ksadk/server/static/assets/{swimlanes-XN3QIQJK-CR-dfN_t.js => swimlanes-XN3QIQJK-CFJohC2b.js} (99%) create mode 100644 ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-A-oZaquE.js delete mode 100644 ksadk/server/static/assets/swimlanesDiagram-VK2B7HYN-DLVw3q5Q.js rename ksadk/server/static/assets/{timeline-definition-24CTP7MA-DAVJf1TX.js => timeline-definition-24CTP7MA-Dg4AY0KC.js} (99%) delete mode 100644 ksadk/server/static/assets/treeView-Q6P3EWNA-BMpO0wsB.js create mode 100644 ksadk/server/static/assets/treeView-Q6P3EWNA-D6u1mSx1.js create mode 100644 ksadk/server/static/assets/treemap-WGGIJYW6-CM87Vav0.js delete mode 100644 ksadk/server/static/assets/treemap-WGGIJYW6-Et0aqzU3.js rename ksadk/server/static/assets/{vennDiagram-4TSXK5OY-DwM8eDkh.js => vennDiagram-4TSXK5OY-A6cRoCBU.js} (99%) create mode 100644 ksadk/server/static/assets/wardley-WFR3VGLG-BPoQUTzr.js delete mode 100644 ksadk/server/static/assets/wardley-WFR3VGLG-CbY0mhpl.js rename ksadk/server/static/assets/{wardleyDiagram-VM6X3IG4-DZL-Zz2t.js => wardleyDiagram-VM6X3IG4-BVD1hMYl.js} (99%) rename ksadk/server/static/assets/{xychartDiagram-S5SC5T6Z-Dy6Yh_hu.js => xychartDiagram-S5SC5T6Z-BlBLXETg.js} (99%) create mode 100644 ksadk/studio/api_plugin_routes.py create mode 100644 ksadk/studio/attachment_store.py create mode 100644 ksadk/studio/compatibility_report.py create mode 100644 ksadk/studio/dsh_provider_registration.py create mode 100644 ksadk/studio/plugin_composition.py create mode 100644 ksadk/studio/plugin_kernel_adapter.py create mode 100644 ksadk/studio/plugin_runtime.py create mode 100644 ksadk/studio/scheduler_runtime.py create mode 100644 ksadk/studio/scheduler_service.py create mode 100644 ksadk/studio/soul.py rename ksadk/studio/static/assets/{PrismRenderer-IYN-ffww.js => PrismRenderer-e1psRo9-.js} (99%) delete mode 100644 ksadk/studio/static/assets/index-BLpcdrgW.css delete mode 100644 ksadk/studio/static/assets/index-CYekR2Xv.js create mode 100644 ksadk/studio/static/assets/index-DXs1Eq4M.css create mode 100644 ksadk/studio/static/assets/index-t4JdtanA.js rename ksadk/studio/static/assets/{react-vendor-BNmTiJ-I.js => react-vendor-D0Ec-185.js} (94%) create mode 100644 scripts/phase2_release_candidate_gate.py create mode 100644 scripts/phase2_release_preflight.py create mode 100644 scripts/write_build_provenance.py create mode 100644 tests/__init__.py create mode 100644 tests/compat/fixtures/v0.8.2-agent-bundle.provenance.json create mode 100644 tests/compat/fixtures/v0.8.2-agent-bundle.zip.b64 create mode 100644 tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.provenance.json create mode 100644 tests/compat/fixtures/v0.8.2-managed-runtime-agentengine.yaml create mode 100644 tests/compat/test_phase2_legacy_compat.py create mode 100644 tests/compat/test_release_082_asset_compat.py create mode 100644 tests/e2e/chat_completions_stub.py create mode 100644 tests/e2e/codex_app_server_fixture.py create mode 100644 tests/e2e/codex_responses_stub.py create mode 100644 tests/e2e/fixtures/codex-marketplace/plugins/ksadk-bridge-e2e/skills/bridge-check/SKILL.md create mode 100644 tests/e2e/test_codex_plugin_bridge_e2e.py create mode 100644 tests/e2e/test_codex_provider_app_server_e2e.py create mode 100644 tests/e2e/test_codex_subagent_provider_e2e.py create mode 100644 tests/e2e/test_dsh_managed_toolchain_e2e.py create mode 100644 tests/fixtures/dsh-node-agent-provider/cordis.patch.yml create mode 100644 tests/fixtures/dsh-node-agent-provider/index.mjs create mode 100644 tests/fixtures/dsh-node-agent-provider/package.json create mode 100644 tests/fixtures/dsh-node-agent-provider/provider-host.mjs create mode 100644 tests/harness/__init__.py create mode 100644 tests/harness/fixtures/__init__.py create mode 100644 tests/harness/fixtures/mcp_server.py create mode 100644 tests/packaging/test_phase2_release_candidate_gate.py create mode 100644 tests/packaging/test_phase2_release_preflight.py create mode 100644 tests/packaging/test_write_build_provenance.py create mode 100644 tests/plugins/__init__.py create mode 100644 tests/plugins/test_codex_provider_vertical.py create mode 100644 tests/plugins/test_dsh_node_provider_e2e.py create mode 100644 tests/studio/__init__.py create mode 100644 tests/studio/e2e/conversation_items_browser_e2e.py create mode 100644 tests/studio/e2e/conversation_reconnect_browser_e2e.py create mode 100644 tests/studio/e2e/dsh_client_bundle_browser_e2e.py create mode 100644 tests/studio/e2e/scheduler_browser_e2e.py create mode 100644 tests/studio/e2e/scheduler_fault_matrix_browser_e2e.py create mode 100644 tests/studio/e2e/scheduler_harness_browser_e2e.py create mode 100644 tests/studio/runtime_adapter_fixtures.py create mode 100644 tests/studio/test_framework_bundle_integrity.py 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..99628f3a 100644 --- a/export-manifest.json +++ b/export-manifest.json @@ -1,34 +1,12 @@ { - "generatedAt": "2026-08-26T10:09:38.713417+00:00", + "generatedAt": "2026-08-31T05:46:26.923068+00:00", + "sourceCommit": "719723f177858e94628c71c1c385b475ed500db3", + "sourceTree": "clean", "targetRepository": "https://github.com/kingsoftcloud/ksadk-python", "documentation": "https://kingsoftcloud.github.io/ksadk-python/", - "exportPathCount": 1124, - "excludedPathCount": 751, + "exportPathCount": 1279, + "excludedPathCount": 803, "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", @@ -48,6 +26,7 @@ "docs/archive/workspace/openclaw_通用_memory_backend_bootstrap_设计.md", "docs/archive/workspace/workspace_files_v1_实施说明.md", "docs/archive/workspace/workspace_files_去重改造方案比较稿.md", + "docs/conversation-stream-recovery.md", "docs/evaluation/phase1-smoke-evalset.yaml", "docs/evaluation/端云评测一期开发记录.md", "docs/evaluation/端云评测方案.md", @@ -78,6 +57,7 @@ "docs/openclaw_gateway_channel_flow_hd.png", "docs/openclaw_gateway_technical.html", "docs/openclaw一键部署指南.md", + "docs/phase2-plugin-compatibility.md", "docs/preview/cli-demo/cli_real_terminal_demo.png", "docs/preview/cli-demo/cli_screenshot_demo.sh", "docs/preview/images/claw_logo.png", @@ -164,6 +144,8 @@ "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/agentProviders.test.ts", + "ksadk/studio/react-ui/src/agentProviders.ts", "ksadk/studio/react-ui/src/api.test.mjs", "ksadk/studio/react-ui/src/api.ts", "ksadk/studio/react-ui/src/approvalModes.test.mjs", @@ -184,6 +166,7 @@ "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.behavior.test.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", @@ -233,7 +216,18 @@ "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/conversationProtocol.node.test-bridge.mjs", + "ksadk/studio/react-ui/src/conversationProtocol.test.ts", + "ksadk/studio/react-ui/src/conversationProtocol.ts", "ksadk/studio/react-ui/src/createPage.component-contract.test.mjs", + "ksadk/studio/react-ui/src/dsh-runtime/DshWorkspaceSurface.tsx", + "ksadk/studio/react-ui/src/dsh-runtime/fixtures/demoClientPlugin.tsx", + "ksadk/studio/react-ui/src/dsh-runtime/runtimeOptions.ts", + "ksadk/studio/react-ui/src/dsh-runtime/studioContributions.ts", + "ksadk/studio/react-ui/src/dsh-runtime/studioDshCompositionHost.test.tsx", + "ksadk/studio/react-ui/src/dsh-runtime/studioDshCompositionHost.ts", + "ksadk/studio/react-ui/src/dsh-runtime/studioDshRuntime.test.tsx", + "ksadk/studio/react-ui/src/dsh-runtime/studioDshRuntime.ts", "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", @@ -251,6 +245,7 @@ "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/AutomationsPage.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", @@ -265,6 +260,8 @@ "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/PluginsPage.test.tsx", + "ksadk/studio/react-ui/src/pages/PluginsPage.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", @@ -334,7 +331,6 @@ "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", @@ -373,6 +369,7 @@ "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_plugin.py", "tests/cli/test_cmd_run_runtime_adapter.py", "tests/cli/test_cmd_web_runtime_adapter.py", "tests/cli/test_run_chain_e2e.py", @@ -401,23 +398,47 @@ "tests/context_engine/test_token_counter.py", "tests/context_engine/test_trace_planned_projected_actual.py", "tests/contracts/__init__.py", + "tests/contracts/baselines/phase2/README.md", + "tests/contracts/baselines/phase2/conversation/conversation-input.schema.json", + "tests/contracts/baselines/phase2/conversation/conversation-item.schema.json", + "tests/contracts/baselines/phase2/conversation/conversation-surface.schema.json", + "tests/contracts/baselines/phase2/plugin/agent-bundle-manifest-v2.schema.json", + "tests/contracts/baselines/phase2/plugin/capability-definition.schema.json", + "tests/contracts/baselines/phase2/plugin/composition-profile.schema.json", + "tests/contracts/baselines/phase2/plugin/context-contributor.schema.json", + "tests/contracts/baselines/phase2/plugin/dsh-agent-provider-host.schema.json", + "tests/contracts/baselines/phase2/plugin/plugin-ecosystem-bridge.schema.json", + "tests/contracts/baselines/phase2/plugin/plugin-inventory.schema.json", + "tests/contracts/baselines/phase2/plugin/plugin-lock.schema.json", + "tests/contracts/baselines/phase2/plugin/subagent-provider.schema.json", + "tests/contracts/baselines/phase2/scheduler/schedule-occurrence.schema.json", + "tests/contracts/baselines/phase2/scheduler/scheduled-task.schema.json", "tests/contracts/test_agent_kernel_schema_compatibility.py", "tests/contracts/test_interaction_v1_contract.py", + "tests/contracts/test_phase2_schema_compatibility.py", "tests/conversations/test_ambient_error_guard.py", + "tests/conversations/test_canonical_history_projection.py", + "tests/conversations/test_contracts.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_projection.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_tool_result_projection.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/fixtures/dsh-profile-plugin/cordis.patch.yml", + "tests/e2e/fixtures/dsh-profile-plugin/index.mjs", + "tests/e2e/fixtures/dsh-profile-plugin/package.json", "tests/e2e/test_codex_sdk_process_e2e.py", + "tests/e2e/test_dsh_plugin_bridge_e2e.py", "tests/events/adapters/test_a2a.py", "tests/events/adapters/test_adk.py", "tests/events/adapters/test_codex.py", @@ -436,16 +457,14 @@ "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/harness/test_harness_session_continuity.py", "tests/integration/__init__.py", "tests/integration/test_cloud_managed_e2e.py", "tests/integration/test_codex_adk_conformance.py", @@ -516,6 +535,25 @@ "tests/phase1/test_managed_pg_matrix.py", "tests/phase1/test_phase1_gate.py", "tests/phase1/test_preprod_config.py", + "tests/plugins/test_builtin_capabilities.py", + "tests/plugins/test_bundle_security.py", + "tests/plugins/test_codex_plugin_bridge.py", + "tests/plugins/test_codex_subagent_provider.py", + "tests/plugins/test_composition_compiler.py", + "tests/plugins/test_contracts.py", + "tests/plugins/test_dsh_plugin_bridge.py", + "tests/plugins/test_dsh_provider_vertical.py", + "tests/plugins/test_dsh_toolchain.py", + "tests/plugins/test_ecosystem_bridge_contract.py", + "tests/plugins/test_ecosystem_probe.py", + "tests/plugins/test_execution_vertical.py", + "tests/plugins/test_harness_dsh_bundle.py", + "tests/plugins/test_harness_provider_vertical.py", + "tests/plugins/test_host.py", + "tests/plugins/test_legacy_harness_bundle_adapter.py", + "tests/plugins/test_resolver.py", + "tests/plugins/test_shipped_dsh_providers.py", + "tests/plugins/test_subagent_provider.py", "tests/prompts/test_prompt_compiler.py", "tests/prompts/test_prompt_models.py", "tests/prompts/test_prompt_sources.py", @@ -545,6 +583,12 @@ "tests/runtime/test_registry.py", "tests/runtime/test_responses_streaming.py", "tests/runtime/test_trajectory_events.py", + "tests/scheduler/__init__.py", + "tests/scheduler/test_contracts.py", + "tests/scheduler/test_dispatcher.py", + "tests/scheduler/test_reconciliation.py", + "tests/scheduler/test_runtime_vertical.py", + "tests/scheduler/test_scheduler.py", "tests/server/test_app_factory.py", "tests/server/test_app_factory_a2a.py", "tests/server/test_app_factory_agui.py", @@ -567,14 +611,15 @@ "tests/snapshots/help_snapshots.txt", "tests/snapshots/resource_output_snapshots.txt", "tests/snapshots/workflow_help_snapshots.txt", - "tests/studio/__init__.py", + "tests/studio/e2e/agent_policy_editor_browser_e2e.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_api_plugin_routes.py", + "tests/studio/test_attachment_store.py", "tests/studio/test_authoring.py", "tests/studio/test_builder.py", "tests/studio/test_cli_studio.py", @@ -588,16 +633,17 @@ "tests/studio/test_codex_static.py", "tests/studio/test_contracts.py", "tests/studio/test_direct_cloud_deployment.py", + "tests/studio/test_dsh_provider_registration.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_legacy_harness_product_entry.py", "tests/studio/test_manifest_resolver.py", "tests/studio/test_model_client.py", "tests/studio/test_multi_runtime_agents.py", @@ -608,12 +654,20 @@ "tests/studio/test_pcm_e2e.py", "tests/studio/test_pcm_evidence_api.py", "tests/studio/test_pcm_preview_api.py", + "tests/studio/test_plugin_composition.py", + "tests/studio/test_plugin_kernel_adapter.py", + "tests/studio/test_plugin_runtime.py", "tests/studio/test_real_model_e2e.py", "tests/studio/test_resource_catalog.py", "tests/studio/test_run_service.py", + "tests/studio/test_scheduler_dsh_harness_product.py", + "tests/studio/test_scheduler_product_entry.py", + "tests/studio/test_scheduler_runtime.py", + "tests/studio/test_scheduler_service.py", "tests/studio/test_settings.py", "tests/studio/test_shared_web.py", "tests/studio/test_skill_discovery.py", + "tests/studio/test_soul.py", "tests/studio/test_studio_mcp_runtime.py", "tests/studio/test_templates.py", "tests/studio/test_validator_compiler.py", @@ -789,6 +843,7 @@ "uv.lock" ], "prefixes": [ + "contracts/", "docs-site/", "ksadk/", "ksadk_runtime_common/" @@ -808,20 +863,62 @@ "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/verify_ksadk_web_static.py", + "scripts/write_build_provenance.py" ], "tests": [ + "tests/__init__.py", "tests/cli/test_cmd_create_codex.py", + "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/conftest.py", + "tests/e2e/chat_completions_stub.py", + "tests/e2e/codex_app_server_fixture.py", + "tests/e2e/codex_responses_stub.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_codex_plugin_bridge_e2e.py", + "tests/e2e/test_codex_provider_app_server_e2e.py", + "tests/e2e/test_codex_subagent_provider_e2e.py", + "tests/e2e/test_dsh_managed_toolchain_e2e.py", "tests/events/fixtures/runtime_projection_golden.json", + "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/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_codex_provider_vertical.py", + "tests/plugins/test_dsh_node_provider_e2e.py", "tests/runners/test_adapter_contract.py", "tests/runners/test_codex_runner.py", + "tests/studio/__init__.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", + "tests/studio/runtime_adapter_fixtures.py", + "tests/studio/test_framework_bundle_integrity.py", "tests/studio/test_style_system.py", "tests/test_check_approval_record.py", "tests/test_check_publication_state.py", 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/PrismRenderer-IYN-ffww.js b/ksadk/studio/static/assets/PrismRenderer-e1psRo9-.js similarity index 99% rename from ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js rename to ksadk/studio/static/assets/PrismRenderer-e1psRo9-.js index dab7bd19..aaedb3c1 100644 --- a/ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js +++ b/ksadk/studio/static/assets/PrismRenderer-e1psRo9-.js @@ -1,3 +1,3 @@ -import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-BNmTiJ-I.js";var r=e(t(),1);function i(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var a=e.length;for(t=0;tt in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_=(e,t)=>{for(var n in t||={})m.call(t,n)&&g(e,n,t[n]);if(f)for(var n of f(t))h.call(t,n)&&g(e,n,t[n]);return e},v=(e,t)=>c(e,u(t)),y=(e,t)=>{var n={};for(var r in e)m.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&f)for(var r of f(e))t.indexOf(r)<0&&h.call(e,r)&&(n[r]=e[r]);return n},b=(e,t)=>function(){return t||(0,e[d(e)[0]])((t={exports:{}}).exports,t),t.exports},x=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of d(t))!m.call(e,i)&&i!==n&&s(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e},C=((e,t,n)=>(n=e==null?{}:o(p(e)),S(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(b({"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,`&`).replace(/`+a.content+``};function a(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 o(e,t,n,s,u,d){for(var f in n)if(!(!n.hasOwnProperty(f)||!n[f])){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m=d.reach);C+=S.value.length,S=S.next){var w=S.value;if(t.length>e.length)return;if(!(w instanceof i)){var T=1,E;if(v){if(E=a(x,C,e,_),!E||E.index>=e.length)break;var D=E.index,O=E.index+E[0].length,k=C;for(k+=S.value.length;D>=k;)S=S.next,k+=S.value.length;if(k-=S.value.length,C=k,S.value instanceof i)continue;for(var A=S;A!==t.tail&&(kd.reach&&(d.reach=P);var F=S.prev;M&&(F=c(t,F,M),C+=M.length),l(t,F,T);var I=new i(f,g?r.tokenize(j,g):j,y,j);if(S=c(t,F,I),N&&c(t,S,N),T>1){var L={cause:f+`,`+m,reach:P};o(e,t,n,S.prev,C,L),d&&L.reach>d.reach&&(d.reach=L.reach)}}}}}}function s(){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 c(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 l(e,t,n){for(var r=t.next,i=0;i/,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]},C.languages.markup.tag.inside[`attr-value`].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside[`internal-subset`].inside=C.languages.markup,C.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.replace(/&/,`&`))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n={},n=(n[`language-`+t]={pattern:/(^$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}),t=(n[`language-`+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{});t[e]={pattern:RegExp(`(<__[^>]*>)(?:))*\\]\\]>|(?!)`.replace(/__/g,function(){return e}),`i`),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore(`markup`,`cdata`,t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\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:[t,`language-`+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend(`markup`,{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,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=`(?:[^\\\\-]|`+n.source+`)`,r=RegExp(r+`-`+r),i={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:r,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:`operator`}}},"special-escape":t,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},escape:n}},"special-escape":t,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:`keyword`},{pattern:/\\k<[^<>']+>/,alias:`keyword`,inside:{"group-name":i}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:`function`},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend(`clike`,{"class-name":[C.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}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.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:C.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:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.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:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.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:C.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`}}),C.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),C.languages.markup&&(C.languages.markup.tag.addInlined(`script`,`javascript`),C.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`)),C.languages.js=C.languages.javascript,C.languages.actionscript=C.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:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript[`class-name`].alias=`function`,delete C.languages.actionscript.parameter,delete C.languages.actionscript[`literal-property`],C.languages.markup&&C.languages.insertBefore(`actionscript`,`string`,{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),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}(C),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:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t=typeof t==`string`?[t]:t).forEach(function(t){var r=function(e){e.inside||={},e.inside.rest=n},i=`doc-comment`;if(a=e.languages[t]){var a,o=a[i];if((o||=(a=e.languages.insertBefore(t,`comment`,{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:`comment`}}))[i])instanceof RegExp&&(o=a[i]={pattern:o}),Array.isArray(o))for(var s=0,c=o.length;s|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside[`selector-function-argument`].inside=t,e.languages.insertBefore(`css`,`property`,{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),n={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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),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}(C),function(e){function t(e){return e=e.replace(//g,function(){return`(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))`}),RegExp(`((?:^|[^\\\\])(?:\\\\{2})*)(?:`+e+`)`)}var n="(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+",r=`\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))`.replace(/__/g,function(){return n}),i=`\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)`,a=(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(`^`+r+i+`(?:`+r+`)*`,`m`),inside:{"table-data-rows":{pattern:RegExp(`^(`+r+i+`)(?:`+r+`)*$`),lookbehind:!0,inside:{"table-data":{pattern:RegExp(n),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp(`^(`+r+`)`+i+`$`),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp(`^`+r+`$`),inside:{"table-header":{pattern:RegExp(n),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:t(`\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(`\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(`(~~?)(?:(?!~))+\\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:t(`!?\\[(?:(?!\\]))+\\](?:\\([^\\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){e.language!==`markdown`&&e.language!==`md`||function e(t){if(t&&typeof t!=`string`)for(var n=0,r=t.length;n`,quot:`"`},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.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:C.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+/},C.hooks.add(`after-tokenize`,function(e){if(e.language===`graphql`)for(var t=e.tokens.filter(function(e){return typeof e!=`string`&&e.type!==`comment`&&e.type!==`scalar`}),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript[`template-string`],n=t.pattern.source,r=t.inside.interpolation,i=r.inside[`interpolation-punctuation`],a=r.pattern.source;function o(t,r){if(e.languages[t])return{pattern:RegExp(`((?:`+r+`)\\s*)`+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run(`before-tokenize`,t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run(`after-tokenize`,t),t.tokens}function c(t,n,o){var c=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),l=0,u={},c=s(c.map(function(e){if(typeof e==`string`)return e;for(var n,r,e=e.content;t.indexOf((r=l++,n=`___`+o.toUpperCase()+`_`+r+`___`))!==-1;);return u[n]=e,n}).join(``),n,o),d=Object.keys(u);return l=0,function t(n){for(var a=0;a=d.length)return;var o,c,f,p,m,h,g,_=n[a];typeof _==`string`||typeof _.content==`string`?(o=d[l],(g=(h=typeof _==`string`?_:_.content).indexOf(o))!==-1&&(++l,c=h.substring(0,g),m=u[o],f=void 0,(p={})[`interpolation-punctuation`]=i,(p=e.tokenize(m,p)).length===3&&((f=[1,1]).push.apply(f,s(p[1],e.languages.javascript,`javascript`)),p.splice.apply(p,f)),f=new e.Token(`interpolation`,p,r.alias,m),p=h.substring(g+o.length),m=[],c&&m.push(c),m.push(f),p&&(t(h=[p]),m.push.apply(m,h)),typeof _==`string`?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):_.content=m)):(g=_.content,t(Array.isArray(g)?g:[g]))}}(c),new e.Token(o,c,`language-`+o,t)}e.languages.javascript[`template-string`]=[o(`css`,`\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)`),o(`html`,`\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=`),o(`svg`,`\\bsvg`),o(`markdown`,`\\b(?:markdown|md)`),o(`graphql`,`\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)`),o(`sql`,`\\bsql`),t].filter(Boolean);var l={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return typeof e==`string`?e:Array.isArray(e)?e.map(u).join(``):u(e.content)}e.hooks.add(`after-tokenize`,function(t){t.language in l&&function t(n){for(var r=0,i=n.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}(C),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)}(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})}(C),C.languages.n4js=C.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/}),C.languages.insertBefore(`n4js`,`constant`,{annotation:{pattern:/@+\w+/,alias:`operator`}}),C.languages.n4jsd=C.languages.n4js,function(e){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`,`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`}]}),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*\\.{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);function o(t){for(var n=[],r=0;r`&&n.push({tagName:s(i.content[0].content[1]),openedBraces:0}):0]=?/,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:/[{}[\]();,.:\\]/},C.languages.swift[`string-literal`].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),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}(C),C.languages.c=C.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|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore(`c`,`string`,{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.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},C.languages.c.string],char:C.languages.c.char,comment:C.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:C.languages.c}}}}),C.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 C.languages.c.boolean,C.languages.objectivec=C.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 C.languages.objectivec[`class-name`],C.languages.objc=C.languages.objectivec,C.languages.reason=C.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/}),C.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 C.languages.reason.function,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}(C),C.languages.go=C.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/}),C.languages.insertBefore(`go`,`string`,{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go[`class-name`],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`])}(C),C.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:/[{}[\];(),.:]/},C.languages.python[`string-interpolation`].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.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`}},C.languages.webmanifest=C.languages.json,x({},{dracula:()=>w,duotoneDark:()=>T,duotoneLight:()=>E,github:()=>D,gruvboxMaterialDark:()=>U,gruvboxMaterialLight:()=>W,jettwaveDark:()=>z,jettwaveLight:()=>B,nightOwl:()=>O,nightOwlLight:()=>k,oceanicNext:()=>j,okaidia:()=>M,oneDark:()=>V,oneLight:()=>H,palenight:()=>N,shadesOfPurple:()=>P,synthwave84:()=>F,ultramin:()=>I,vsDark:()=>L,vsLight:()=>R});var w={plain:{color:`#F8F8F2`,backgroundColor:`#282A36`},styles:[{types:[`prolog`,`constant`,`builtin`],style:{color:`rgb(189, 147, 249)`}},{types:[`inserted`,`function`],style:{color:`rgb(80, 250, 123)`}},{types:[`deleted`],style:{color:`rgb(255, 85, 85)`}},{types:[`changed`],style:{color:`rgb(255, 184, 108)`}},{types:[`punctuation`,`symbol`],style:{color:`rgb(248, 248, 242)`}},{types:[`string`,`char`,`tag`,`selector`],style:{color:`rgb(255, 121, 198)`}},{types:[`keyword`,`variable`],style:{color:`rgb(189, 147, 249)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(98, 114, 164)`}},{types:[`attr-name`],style:{color:`rgb(241, 250, 140)`}}]},T={plain:{backgroundColor:`#2a2734`,color:`#9a86fd`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#6c6783`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#e09142`}},{types:[`property`,`function`],style:{color:`#9a86fd`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#eeebff`}},{types:[`attr-name`],style:{color:`#c4b9fe`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`,`placeholder`,`variable`],style:{color:`#ffcc99`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#c4b9fe`}}]},E={plain:{backgroundColor:`#faf8f5`,color:`#728fcb`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#b6ad9a`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#063289`}},{types:[`property`,`function`],style:{color:`#b29762`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#2d2006`}},{types:[`attr-name`],style:{color:`#896724`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`],style:{color:`#728fcb`}},{types:[`placeholder`,`variable`],style:{color:`#93abdc`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#896724`}}]},D={plain:{color:`#393A34`,backgroundColor:`#f6f8fa`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`],style:{color:`#999988`,fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}},{types:[`string`,`attr-value`],style:{color:`#e3116c`}},{types:[`punctuation`,`operator`],style:{color:`#393A34`}},{types:[`entity`,`url`,`symbol`,`number`,`boolean`,`variable`,`constant`,`property`,`regex`,`inserted`],style:{color:`#36acaa`}},{types:[`atrule`,`keyword`,`attr-name`,`selector`],style:{color:`#00a4db`}},{types:[`function`,`deleted`,`tag`],style:{color:`#d73a49`}},{types:[`function-variable`],style:{color:`#6f42c1`}},{types:[`tag`,`selector`,`keyword`],style:{color:`#00009f`}}]},O={plain:{color:`#d6deeb`,backgroundColor:`#011627`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(99, 119, 119)`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`rgb(173, 219, 103)`}},{types:[`variable`],style:{color:`rgb(214, 222, 235)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`],style:{color:`rgb(199, 146, 234)`}},{types:[`selector`,`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(255, 203, 139)`}},{types:[`tag`,`operator`,`keyword`],style:{color:`rgb(127, 219, 202)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`property`],style:{color:`rgb(128, 203, 196)`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}}]},k={plain:{color:`#403f53`,backgroundColor:`#FBFBFB`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(72, 118, 214)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(152, 159, 177)`,fontStyle:`italic`}},{types:[`string`,`builtin`,`char`,`constant`,`url`],style:{color:`rgb(72, 118, 214)`}},{types:[`variable`],style:{color:`rgb(201, 103, 101)`}},{types:[`number`],style:{color:`rgb(170, 9, 130)`}},{types:[`punctuation`],style:{color:`rgb(153, 76, 195)`}},{types:[`function`,`selector`,`doctype`],style:{color:`rgb(153, 76, 195)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(17, 17, 17)`}},{types:[`tag`],style:{color:`rgb(153, 76, 195)`}},{types:[`operator`,`property`,`keyword`,`namespace`],style:{color:`rgb(12, 150, 155)`}},{types:[`boolean`],style:{color:`rgb(188, 84, 84)`}}]},A={char:`#D8DEE9`,comment:`#999999`,keyword:`#c5a5c5`,primitive:`#5a9bcf`,string:`#8dc891`,variable:`#d7deea`,boolean:`#ff8b50`,punctuation:`#5FB3B3`,tag:`#fc929e`,function:`#79b6f2`,className:`#FAC863`,method:`#6699CC`,operator:`#fc929e`},j={plain:{backgroundColor:`#282c34`,color:`#ffffff`},styles:[{types:[`attr-name`],style:{color:A.keyword}},{types:[`attr-value`],style:{color:A.string}},{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`,`shebang`],style:{color:A.comment}},{types:[`property`,`number`,`function-name`,`constant`,`symbol`,`deleted`],style:{color:A.primitive}},{types:[`boolean`],style:{color:A.boolean}},{types:[`tag`],style:{color:A.tag}},{types:[`string`],style:{color:A.string}},{types:[`punctuation`],style:{color:A.string}},{types:[`selector`,`char`,`builtin`,`inserted`],style:{color:A.char}},{types:[`function`],style:{color:A.function}},{types:[`operator`,`entity`,`url`,`variable`],style:{color:A.variable}},{types:[`keyword`],style:{color:A.keyword}},{types:[`atrule`,`class-name`],style:{color:A.className}},{types:[`important`],style:{fontWeight:`400`}},{types:[`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}}]},M={plain:{color:`#f8f8f2`,backgroundColor:`#272822`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`#f92672`,fontStyle:`italic`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`#8292a2`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`#a6e22e`}},{types:[`variable`],style:{color:`#f8f8f2`}},{types:[`number`],style:{color:`#ae81ff`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`#e6db74`}},{types:[`punctuation`],style:{color:`#f8f8f2`}},{types:[`selector`,`doctype`],style:{color:`#a6e22e`,fontStyle:`italic`}},{types:[`tag`,`operator`,`keyword`],style:{color:`#66d9ef`}},{types:[`boolean`],style:{color:`#ae81ff`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`,opacity:.7}},{types:[`tag`,`property`],style:{color:`#f92672`}},{types:[`attr-name`],style:{color:`#a6e22e !important`}},{types:[`doctype`],style:{color:`#8292a2`}},{types:[`rule`],style:{color:`#e6db74`}}]},N={plain:{color:`#bfc7d5`,backgroundColor:`#292d3e`},styles:[{types:[`comment`],style:{color:`rgb(105, 112, 152)`,fontStyle:`italic`}},{types:[`string`,`inserted`],style:{color:`rgb(195, 232, 141)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`,`selector`],style:{color:`rgb(199, 146, 234)`}},{types:[`variable`],style:{color:`rgb(191, 199, 213)`}},{types:[`class-name`,`attr-name`],style:{color:`rgb(255, 203, 107)`}},{types:[`tag`,`deleted`],style:{color:`rgb(255, 85, 114)`}},{types:[`operator`],style:{color:`rgb(137, 221, 255)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`keyword`],style:{fontStyle:`italic`}},{types:[`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}},{types:[`url`],style:{color:`rgb(221, 221, 221)`}}]},P={plain:{color:`#9EFEFF`,backgroundColor:`#2D2A55`},styles:[{types:[`changed`],style:{color:`rgb(255, 238, 128)`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`}},{types:[`comment`],style:{color:`rgb(179, 98, 255)`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`rgb(255, 255, 255)`}},{types:[`constant`],style:{color:`rgb(255, 98, 140)`}},{types:[`string`,`url`],style:{color:`rgb(165, 255, 144)`}},{types:[`variable`],style:{color:`rgb(255, 238, 128)`}},{types:[`number`,`boolean`],style:{color:`rgb(255, 98, 140)`}},{types:[`attr-name`],style:{color:`rgb(255, 180, 84)`}},{types:[`keyword`,`operator`,`property`,`namespace`,`tag`,`selector`,`doctype`],style:{color:`rgb(255, 157, 0)`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`rgb(250, 208, 0)`}}]},F={plain:{backgroundColor:`linear-gradient(to bottom, #2a2139 75%, #34294f)`,backgroundImage:`#34294f`,color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`},styles:[{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`],style:{color:`#495495`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`#ccc`}},{types:[`tag`,`attr-name`,`namespace`,`number`,`unit`,`hexcode`,`deleted`],style:{color:`#e2777a`}},{types:[`property`,`selector`],style:{color:`#72f1b8`,textShadow:`0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475`}},{types:[`function-name`],style:{color:`#6196cc`}},{types:[`boolean`,`selector-id`,`function`],style:{color:`#fdfdfd`,textShadow:`0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975`}},{types:[`class-name`,`maybe-class-name`,`builtin`],style:{color:`#fff5f6`,textShadow:`0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75`}},{types:[`constant`,`symbol`],style:{color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`}},{types:[`important`,`atrule`,`keyword`,`selector-class`],style:{color:`#f4eee4`,textShadow:`0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575`}},{types:[`string`,`char`,`attr-value`,`regex`,`variable`],style:{color:`#f87c32`}},{types:[`parameter`],style:{fontStyle:`italic`}},{types:[`entity`,`url`],style:{color:`#67cdcc`}},{types:[`operator`],style:{color:`ffffffee`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`entity`],style:{cursor:`help`}},{types:[`inserted`],style:{color:`green`}}]},I={plain:{color:`#282a2e`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(197, 200, 198)`}},{types:[`string`,`number`,`builtin`,`variable`],style:{color:`rgb(150, 152, 150)`}},{types:[`class-name`,`function`,`tag`,`attr-name`],style:{color:`rgb(40, 42, 46)`}}]},L={plain:{color:`#9CDCFE`,backgroundColor:`#1E1E1E`},styles:[{types:[`prolog`],style:{color:`rgb(0, 0, 128)`}},{types:[`comment`],style:{color:`rgb(106, 153, 85)`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`rgb(86, 156, 214)`}},{types:[`number`,`inserted`],style:{color:`rgb(181, 206, 168)`}},{types:[`constant`],style:{color:`rgb(100, 102, 149)`}},{types:[`attr-name`,`variable`],style:{color:`rgb(156, 220, 254)`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`rgb(206, 145, 120)`}},{types:[`selector`],style:{color:`rgb(215, 186, 125)`}},{types:[`tag`],style:{color:`rgb(78, 201, 176)`}},{types:[`tag`],languages:[`markup`],style:{color:`rgb(86, 156, 214)`}},{types:[`punctuation`,`operator`],style:{color:`rgb(212, 212, 212)`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`rgb(220, 220, 170)`}},{types:[`class-name`],style:{color:`rgb(78, 201, 176)`}},{types:[`char`],style:{color:`rgb(209, 105, 105)`}}]},R={plain:{color:`#000000`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(0, 128, 0)`}},{types:[`builtin`],style:{color:`rgb(0, 112, 193)`}},{types:[`number`,`variable`,`inserted`],style:{color:`rgb(9, 134, 88)`}},{types:[`operator`],style:{color:`rgb(0, 0, 0)`}},{types:[`constant`,`char`],style:{color:`rgb(129, 31, 63)`}},{types:[`tag`],style:{color:`rgb(128, 0, 0)`}},{types:[`attr-name`],style:{color:`rgb(255, 0, 0)`}},{types:[`deleted`,`string`],style:{color:`rgb(163, 21, 21)`}},{types:[`changed`,`punctuation`],style:{color:`rgb(4, 81, 165)`}},{types:[`function`,`keyword`],style:{color:`rgb(0, 0, 255)`}},{types:[`class-name`],style:{color:`rgb(38, 127, 153)`}}]},z={plain:{color:`#f8fafc`,backgroundColor:`#011627`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#569CD6`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#f8fafc`}},{types:[`attr-name`,`variable`],style:{color:`#9CDCFE`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#cbd5e1`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#D4D4D4`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#7dd3fc`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},B={plain:{color:`#0f172a`,backgroundColor:`#f1f5f9`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#0c4a6e`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#0f172a`}},{types:[`attr-name`,`variable`],style:{color:`#0c4a6e`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#64748b`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#475569`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#0e7490`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},V={plain:{backgroundColor:`hsl(220, 13%, 18%)`,color:`hsl(220, 14%, 71%)`,textShadow:`0 1px rgba(0, 0, 0, 0.3)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(220, 10%, 40%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(220, 14%, 71%)`}},{types:[`attr-name`,`class-name`,`maybe-class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(29, 54%, 61%)`}},{types:[`keyword`],style:{color:`hsl(286, 60%, 67%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(355, 65%, 65%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`],style:{color:`hsl(95, 38%, 62%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(207, 82%, 66%)`}},{types:[`url`],style:{color:`hsl(187, 47%, 55%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(220, 14%, 71%)`}}]},H={plain:{backgroundColor:`hsl(230, 1%, 98%)`,color:`hsl(230, 8%, 24%)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(230, 4%, 64%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(230, 8%, 24%)`}},{types:[`attr-name`,`class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(35, 99%, 36%)`}},{types:[`keyword`],style:{color:`hsl(301, 63%, 40%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(5, 74%, 59%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`,`punctuation`],style:{color:`hsl(119, 34%, 47%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(221, 87%, 60%)`}},{types:[`url`],style:{color:`hsl(198, 99%, 37%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(230, 8%, 24%)`}}]},U={plain:{color:`#ebdbb2`,backgroundColor:`#292828`},styles:[{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`,`function`],style:{color:`#d8a657`}},{types:[`property-access`],style:{color:`#7daea3`}},{types:[`tag`],style:{color:`#e78a4e`}},{types:[`attr-name`,`char`,`url`,`regex`],style:{color:`#a9b665`}},{types:[`attr-value`,`string`],style:{color:`#89b482`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#ea6962`}},{types:[`entity`,`number`,`symbol`],style:{color:`#d3869b`}}]},W={plain:{color:`#654735`,backgroundColor:`#f9f5d7`},styles:[{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#af2528`}},{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`],style:{color:`#b4730e`}},{types:[`string`,`attr-value`],style:{color:`#477a5b`}},{types:[`property-access`],style:{color:`#266b79`}},{types:[`function`,`attr-name`,`char`,`url`],style:{color:`#72761e`}},{types:[`tag`],style:{color:`#b94c07`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`entity`,`number`,`symbol`],style:{color:`#924f79`}}]},G=e=>(0,r.useCallback)(t=>{var n=t,{className:r,style:i,line:o}=n;let s=v(_({},y(n,[`className`,`style`,`line`])),{className:a(`token-line`,r)});return typeof e==`object`&&`plain`in e&&(s.style=e.plain),typeof i==`object`&&(s.style=_(_({},s.style||{}),i)),s},[e]),K=e=>{let t=(0,r.useCallback)(({types:t,empty:n})=>{if(e!=null)return t.length===1&&t[0]===`plain`?n==null?void 0:{display:`inline-block`}:t.length===1&&n!=null?e[t[0]]:Object.assign(n==null?{}:{display:`inline-block`},...t.map(t=>e[t]))},[e]);return(0,r.useCallback)(e=>{var n=e,{token:r,className:i,style:o}=n;let s=v(_({},y(n,[`token`,`className`,`style`])),{className:a(`token`,...r.types,i),children:r.content,style:t(r)});return o!=null&&(s.style=_(_({},s.style||{}),o)),s},[t])},q=/\r\n|\r|\n/,J=e=>{e.length===0?e.push({types:[`plain`],content:` +import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-D0Ec-185.js";var r=e(t(),1);function i(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var a=e.length;for(t=0;tt in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_=(e,t)=>{for(var n in t||={})m.call(t,n)&&g(e,n,t[n]);if(f)for(var n of f(t))h.call(t,n)&&g(e,n,t[n]);return e},v=(e,t)=>c(e,u(t)),y=(e,t)=>{var n={};for(var r in e)m.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&f)for(var r of f(e))t.indexOf(r)<0&&h.call(e,r)&&(n[r]=e[r]);return n},b=(e,t)=>function(){return t||(0,e[d(e)[0]])((t={exports:{}}).exports,t),t.exports},x=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of d(t))!m.call(e,i)&&i!==n&&s(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e},C=((e,t,n)=>(n=e==null?{}:o(p(e)),S(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(b({"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,`&`).replace(/`+a.content+``};function a(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 o(e,t,n,s,u,d){for(var f in n)if(!(!n.hasOwnProperty(f)||!n[f])){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m=d.reach);C+=S.value.length,S=S.next){var w=S.value;if(t.length>e.length)return;if(!(w instanceof i)){var T=1,E;if(v){if(E=a(x,C,e,_),!E||E.index>=e.length)break;var D=E.index,O=E.index+E[0].length,k=C;for(k+=S.value.length;D>=k;)S=S.next,k+=S.value.length;if(k-=S.value.length,C=k,S.value instanceof i)continue;for(var A=S;A!==t.tail&&(kd.reach&&(d.reach=P);var F=S.prev;M&&(F=c(t,F,M),C+=M.length),l(t,F,T);var I=new i(f,g?r.tokenize(j,g):j,y,j);if(S=c(t,F,I),N&&c(t,S,N),T>1){var L={cause:f+`,`+m,reach:P};o(e,t,n,S.prev,C,L),d&&L.reach>d.reach&&(d.reach=L.reach)}}}}}}function s(){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 c(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 l(e,t,n){for(var r=t.next,i=0;i/,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]},C.languages.markup.tag.inside[`attr-value`].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside[`internal-subset`].inside=C.languages.markup,C.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.replace(/&/,`&`))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n={},n=(n[`language-`+t]={pattern:/(^$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}),t=(n[`language-`+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{});t[e]={pattern:RegExp(`(<__[^>]*>)(?:))*\\]\\]>|(?!)`.replace(/__/g,function(){return e}),`i`),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore(`markup`,`cdata`,t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\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:[t,`language-`+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend(`markup`,{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,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=`(?:[^\\\\-]|`+n.source+`)`,r=RegExp(r+`-`+r),i={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:r,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:`operator`}}},"special-escape":t,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},escape:n}},"special-escape":t,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:`keyword`},{pattern:/\\k<[^<>']+>/,alias:`keyword`,inside:{"group-name":i}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:`function`},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend(`clike`,{"class-name":[C.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}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.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:C.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:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.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:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.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:C.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`}}),C.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),C.languages.markup&&(C.languages.markup.tag.addInlined(`script`,`javascript`),C.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`)),C.languages.js=C.languages.javascript,C.languages.actionscript=C.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:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript[`class-name`].alias=`function`,delete C.languages.actionscript.parameter,delete C.languages.actionscript[`literal-property`],C.languages.markup&&C.languages.insertBefore(`actionscript`,`string`,{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),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}(C),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:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t=typeof t==`string`?[t]:t).forEach(function(t){var r=function(e){e.inside||={},e.inside.rest=n},i=`doc-comment`;if(a=e.languages[t]){var a,o=a[i];if((o||=(a=e.languages.insertBefore(t,`comment`,{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:`comment`}}))[i])instanceof RegExp&&(o=a[i]={pattern:o}),Array.isArray(o))for(var s=0,c=o.length;s|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside[`selector-function-argument`].inside=t,e.languages.insertBefore(`css`,`property`,{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),n={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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),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}(C),function(e){function t(e){return e=e.replace(//g,function(){return`(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))`}),RegExp(`((?:^|[^\\\\])(?:\\\\{2})*)(?:`+e+`)`)}var n="(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+",r=`\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))`.replace(/__/g,function(){return n}),i=`\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)`,a=(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(`^`+r+i+`(?:`+r+`)*`,`m`),inside:{"table-data-rows":{pattern:RegExp(`^(`+r+i+`)(?:`+r+`)*$`),lookbehind:!0,inside:{"table-data":{pattern:RegExp(n),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp(`^(`+r+`)`+i+`$`),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp(`^`+r+`$`),inside:{"table-header":{pattern:RegExp(n),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:t(`\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(`\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(`(~~?)(?:(?!~))+\\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:t(`!?\\[(?:(?!\\]))+\\](?:\\([^\\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){e.language!==`markdown`&&e.language!==`md`||function e(t){if(t&&typeof t!=`string`)for(var n=0,r=t.length;n`,quot:`"`},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.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:C.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+/},C.hooks.add(`after-tokenize`,function(e){if(e.language===`graphql`)for(var t=e.tokens.filter(function(e){return typeof e!=`string`&&e.type!==`comment`&&e.type!==`scalar`}),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript[`template-string`],n=t.pattern.source,r=t.inside.interpolation,i=r.inside[`interpolation-punctuation`],a=r.pattern.source;function o(t,r){if(e.languages[t])return{pattern:RegExp(`((?:`+r+`)\\s*)`+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run(`before-tokenize`,t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run(`after-tokenize`,t),t.tokens}function c(t,n,o){var c=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),l=0,u={},c=s(c.map(function(e){if(typeof e==`string`)return e;for(var n,r,e=e.content;t.indexOf((r=l++,n=`___`+o.toUpperCase()+`_`+r+`___`))!==-1;);return u[n]=e,n}).join(``),n,o),d=Object.keys(u);return l=0,function t(n){for(var a=0;a=d.length)return;var o,c,f,p,m,h,g,_=n[a];typeof _==`string`||typeof _.content==`string`?(o=d[l],(g=(h=typeof _==`string`?_:_.content).indexOf(o))!==-1&&(++l,c=h.substring(0,g),m=u[o],f=void 0,(p={})[`interpolation-punctuation`]=i,(p=e.tokenize(m,p)).length===3&&((f=[1,1]).push.apply(f,s(p[1],e.languages.javascript,`javascript`)),p.splice.apply(p,f)),f=new e.Token(`interpolation`,p,r.alias,m),p=h.substring(g+o.length),m=[],c&&m.push(c),m.push(f),p&&(t(h=[p]),m.push.apply(m,h)),typeof _==`string`?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):_.content=m)):(g=_.content,t(Array.isArray(g)?g:[g]))}}(c),new e.Token(o,c,`language-`+o,t)}e.languages.javascript[`template-string`]=[o(`css`,`\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)`),o(`html`,`\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=`),o(`svg`,`\\bsvg`),o(`markdown`,`\\b(?:markdown|md)`),o(`graphql`,`\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)`),o(`sql`,`\\bsql`),t].filter(Boolean);var l={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return typeof e==`string`?e:Array.isArray(e)?e.map(u).join(``):u(e.content)}e.hooks.add(`after-tokenize`,function(t){t.language in l&&function t(n){for(var r=0,i=n.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}(C),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)}(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})}(C),C.languages.n4js=C.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/}),C.languages.insertBefore(`n4js`,`constant`,{annotation:{pattern:/@+\w+/,alias:`operator`}}),C.languages.n4jsd=C.languages.n4js,function(e){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`,`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`}]}),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*\\.{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);function o(t){for(var n=[],r=0;r`&&n.push({tagName:s(i.content[0].content[1]),openedBraces:0}):0]=?/,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:/[{}[\]();,.:\\]/},C.languages.swift[`string-literal`].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),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}(C),C.languages.c=C.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|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore(`c`,`string`,{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.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},C.languages.c.string],char:C.languages.c.char,comment:C.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:C.languages.c}}}}),C.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 C.languages.c.boolean,C.languages.objectivec=C.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 C.languages.objectivec[`class-name`],C.languages.objc=C.languages.objectivec,C.languages.reason=C.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/}),C.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 C.languages.reason.function,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}(C),C.languages.go=C.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/}),C.languages.insertBefore(`go`,`string`,{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go[`class-name`],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`])}(C),C.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:/[{}[\];(),.:]/},C.languages.python[`string-interpolation`].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.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`}},C.languages.webmanifest=C.languages.json,x({},{dracula:()=>w,duotoneDark:()=>T,duotoneLight:()=>E,github:()=>D,gruvboxMaterialDark:()=>U,gruvboxMaterialLight:()=>W,jettwaveDark:()=>z,jettwaveLight:()=>B,nightOwl:()=>O,nightOwlLight:()=>k,oceanicNext:()=>j,okaidia:()=>M,oneDark:()=>V,oneLight:()=>H,palenight:()=>N,shadesOfPurple:()=>P,synthwave84:()=>F,ultramin:()=>I,vsDark:()=>L,vsLight:()=>R});var w={plain:{color:`#F8F8F2`,backgroundColor:`#282A36`},styles:[{types:[`prolog`,`constant`,`builtin`],style:{color:`rgb(189, 147, 249)`}},{types:[`inserted`,`function`],style:{color:`rgb(80, 250, 123)`}},{types:[`deleted`],style:{color:`rgb(255, 85, 85)`}},{types:[`changed`],style:{color:`rgb(255, 184, 108)`}},{types:[`punctuation`,`symbol`],style:{color:`rgb(248, 248, 242)`}},{types:[`string`,`char`,`tag`,`selector`],style:{color:`rgb(255, 121, 198)`}},{types:[`keyword`,`variable`],style:{color:`rgb(189, 147, 249)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(98, 114, 164)`}},{types:[`attr-name`],style:{color:`rgb(241, 250, 140)`}}]},T={plain:{backgroundColor:`#2a2734`,color:`#9a86fd`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#6c6783`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#e09142`}},{types:[`property`,`function`],style:{color:`#9a86fd`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#eeebff`}},{types:[`attr-name`],style:{color:`#c4b9fe`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`,`placeholder`,`variable`],style:{color:`#ffcc99`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#c4b9fe`}}]},E={plain:{backgroundColor:`#faf8f5`,color:`#728fcb`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#b6ad9a`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#063289`}},{types:[`property`,`function`],style:{color:`#b29762`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#2d2006`}},{types:[`attr-name`],style:{color:`#896724`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`],style:{color:`#728fcb`}},{types:[`placeholder`,`variable`],style:{color:`#93abdc`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#896724`}}]},D={plain:{color:`#393A34`,backgroundColor:`#f6f8fa`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`],style:{color:`#999988`,fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}},{types:[`string`,`attr-value`],style:{color:`#e3116c`}},{types:[`punctuation`,`operator`],style:{color:`#393A34`}},{types:[`entity`,`url`,`symbol`,`number`,`boolean`,`variable`,`constant`,`property`,`regex`,`inserted`],style:{color:`#36acaa`}},{types:[`atrule`,`keyword`,`attr-name`,`selector`],style:{color:`#00a4db`}},{types:[`function`,`deleted`,`tag`],style:{color:`#d73a49`}},{types:[`function-variable`],style:{color:`#6f42c1`}},{types:[`tag`,`selector`,`keyword`],style:{color:`#00009f`}}]},O={plain:{color:`#d6deeb`,backgroundColor:`#011627`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(99, 119, 119)`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`rgb(173, 219, 103)`}},{types:[`variable`],style:{color:`rgb(214, 222, 235)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`],style:{color:`rgb(199, 146, 234)`}},{types:[`selector`,`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(255, 203, 139)`}},{types:[`tag`,`operator`,`keyword`],style:{color:`rgb(127, 219, 202)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`property`],style:{color:`rgb(128, 203, 196)`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}}]},k={plain:{color:`#403f53`,backgroundColor:`#FBFBFB`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(72, 118, 214)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(152, 159, 177)`,fontStyle:`italic`}},{types:[`string`,`builtin`,`char`,`constant`,`url`],style:{color:`rgb(72, 118, 214)`}},{types:[`variable`],style:{color:`rgb(201, 103, 101)`}},{types:[`number`],style:{color:`rgb(170, 9, 130)`}},{types:[`punctuation`],style:{color:`rgb(153, 76, 195)`}},{types:[`function`,`selector`,`doctype`],style:{color:`rgb(153, 76, 195)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(17, 17, 17)`}},{types:[`tag`],style:{color:`rgb(153, 76, 195)`}},{types:[`operator`,`property`,`keyword`,`namespace`],style:{color:`rgb(12, 150, 155)`}},{types:[`boolean`],style:{color:`rgb(188, 84, 84)`}}]},A={char:`#D8DEE9`,comment:`#999999`,keyword:`#c5a5c5`,primitive:`#5a9bcf`,string:`#8dc891`,variable:`#d7deea`,boolean:`#ff8b50`,punctuation:`#5FB3B3`,tag:`#fc929e`,function:`#79b6f2`,className:`#FAC863`,method:`#6699CC`,operator:`#fc929e`},j={plain:{backgroundColor:`#282c34`,color:`#ffffff`},styles:[{types:[`attr-name`],style:{color:A.keyword}},{types:[`attr-value`],style:{color:A.string}},{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`,`shebang`],style:{color:A.comment}},{types:[`property`,`number`,`function-name`,`constant`,`symbol`,`deleted`],style:{color:A.primitive}},{types:[`boolean`],style:{color:A.boolean}},{types:[`tag`],style:{color:A.tag}},{types:[`string`],style:{color:A.string}},{types:[`punctuation`],style:{color:A.string}},{types:[`selector`,`char`,`builtin`,`inserted`],style:{color:A.char}},{types:[`function`],style:{color:A.function}},{types:[`operator`,`entity`,`url`,`variable`],style:{color:A.variable}},{types:[`keyword`],style:{color:A.keyword}},{types:[`atrule`,`class-name`],style:{color:A.className}},{types:[`important`],style:{fontWeight:`400`}},{types:[`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}}]},M={plain:{color:`#f8f8f2`,backgroundColor:`#272822`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`#f92672`,fontStyle:`italic`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`#8292a2`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`#a6e22e`}},{types:[`variable`],style:{color:`#f8f8f2`}},{types:[`number`],style:{color:`#ae81ff`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`#e6db74`}},{types:[`punctuation`],style:{color:`#f8f8f2`}},{types:[`selector`,`doctype`],style:{color:`#a6e22e`,fontStyle:`italic`}},{types:[`tag`,`operator`,`keyword`],style:{color:`#66d9ef`}},{types:[`boolean`],style:{color:`#ae81ff`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`,opacity:.7}},{types:[`tag`,`property`],style:{color:`#f92672`}},{types:[`attr-name`],style:{color:`#a6e22e !important`}},{types:[`doctype`],style:{color:`#8292a2`}},{types:[`rule`],style:{color:`#e6db74`}}]},N={plain:{color:`#bfc7d5`,backgroundColor:`#292d3e`},styles:[{types:[`comment`],style:{color:`rgb(105, 112, 152)`,fontStyle:`italic`}},{types:[`string`,`inserted`],style:{color:`rgb(195, 232, 141)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`,`selector`],style:{color:`rgb(199, 146, 234)`}},{types:[`variable`],style:{color:`rgb(191, 199, 213)`}},{types:[`class-name`,`attr-name`],style:{color:`rgb(255, 203, 107)`}},{types:[`tag`,`deleted`],style:{color:`rgb(255, 85, 114)`}},{types:[`operator`],style:{color:`rgb(137, 221, 255)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`keyword`],style:{fontStyle:`italic`}},{types:[`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}},{types:[`url`],style:{color:`rgb(221, 221, 221)`}}]},P={plain:{color:`#9EFEFF`,backgroundColor:`#2D2A55`},styles:[{types:[`changed`],style:{color:`rgb(255, 238, 128)`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`}},{types:[`comment`],style:{color:`rgb(179, 98, 255)`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`rgb(255, 255, 255)`}},{types:[`constant`],style:{color:`rgb(255, 98, 140)`}},{types:[`string`,`url`],style:{color:`rgb(165, 255, 144)`}},{types:[`variable`],style:{color:`rgb(255, 238, 128)`}},{types:[`number`,`boolean`],style:{color:`rgb(255, 98, 140)`}},{types:[`attr-name`],style:{color:`rgb(255, 180, 84)`}},{types:[`keyword`,`operator`,`property`,`namespace`,`tag`,`selector`,`doctype`],style:{color:`rgb(255, 157, 0)`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`rgb(250, 208, 0)`}}]},F={plain:{backgroundColor:`linear-gradient(to bottom, #2a2139 75%, #34294f)`,backgroundImage:`#34294f`,color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`},styles:[{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`],style:{color:`#495495`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`#ccc`}},{types:[`tag`,`attr-name`,`namespace`,`number`,`unit`,`hexcode`,`deleted`],style:{color:`#e2777a`}},{types:[`property`,`selector`],style:{color:`#72f1b8`,textShadow:`0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475`}},{types:[`function-name`],style:{color:`#6196cc`}},{types:[`boolean`,`selector-id`,`function`],style:{color:`#fdfdfd`,textShadow:`0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975`}},{types:[`class-name`,`maybe-class-name`,`builtin`],style:{color:`#fff5f6`,textShadow:`0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75`}},{types:[`constant`,`symbol`],style:{color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`}},{types:[`important`,`atrule`,`keyword`,`selector-class`],style:{color:`#f4eee4`,textShadow:`0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575`}},{types:[`string`,`char`,`attr-value`,`regex`,`variable`],style:{color:`#f87c32`}},{types:[`parameter`],style:{fontStyle:`italic`}},{types:[`entity`,`url`],style:{color:`#67cdcc`}},{types:[`operator`],style:{color:`ffffffee`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`entity`],style:{cursor:`help`}},{types:[`inserted`],style:{color:`green`}}]},I={plain:{color:`#282a2e`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(197, 200, 198)`}},{types:[`string`,`number`,`builtin`,`variable`],style:{color:`rgb(150, 152, 150)`}},{types:[`class-name`,`function`,`tag`,`attr-name`],style:{color:`rgb(40, 42, 46)`}}]},L={plain:{color:`#9CDCFE`,backgroundColor:`#1E1E1E`},styles:[{types:[`prolog`],style:{color:`rgb(0, 0, 128)`}},{types:[`comment`],style:{color:`rgb(106, 153, 85)`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`rgb(86, 156, 214)`}},{types:[`number`,`inserted`],style:{color:`rgb(181, 206, 168)`}},{types:[`constant`],style:{color:`rgb(100, 102, 149)`}},{types:[`attr-name`,`variable`],style:{color:`rgb(156, 220, 254)`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`rgb(206, 145, 120)`}},{types:[`selector`],style:{color:`rgb(215, 186, 125)`}},{types:[`tag`],style:{color:`rgb(78, 201, 176)`}},{types:[`tag`],languages:[`markup`],style:{color:`rgb(86, 156, 214)`}},{types:[`punctuation`,`operator`],style:{color:`rgb(212, 212, 212)`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`rgb(220, 220, 170)`}},{types:[`class-name`],style:{color:`rgb(78, 201, 176)`}},{types:[`char`],style:{color:`rgb(209, 105, 105)`}}]},R={plain:{color:`#000000`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(0, 128, 0)`}},{types:[`builtin`],style:{color:`rgb(0, 112, 193)`}},{types:[`number`,`variable`,`inserted`],style:{color:`rgb(9, 134, 88)`}},{types:[`operator`],style:{color:`rgb(0, 0, 0)`}},{types:[`constant`,`char`],style:{color:`rgb(129, 31, 63)`}},{types:[`tag`],style:{color:`rgb(128, 0, 0)`}},{types:[`attr-name`],style:{color:`rgb(255, 0, 0)`}},{types:[`deleted`,`string`],style:{color:`rgb(163, 21, 21)`}},{types:[`changed`,`punctuation`],style:{color:`rgb(4, 81, 165)`}},{types:[`function`,`keyword`],style:{color:`rgb(0, 0, 255)`}},{types:[`class-name`],style:{color:`rgb(38, 127, 153)`}}]},z={plain:{color:`#f8fafc`,backgroundColor:`#011627`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#569CD6`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#f8fafc`}},{types:[`attr-name`,`variable`],style:{color:`#9CDCFE`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#cbd5e1`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#D4D4D4`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#7dd3fc`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},B={plain:{color:`#0f172a`,backgroundColor:`#f1f5f9`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#0c4a6e`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#0f172a`}},{types:[`attr-name`,`variable`],style:{color:`#0c4a6e`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#64748b`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#475569`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#0e7490`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},V={plain:{backgroundColor:`hsl(220, 13%, 18%)`,color:`hsl(220, 14%, 71%)`,textShadow:`0 1px rgba(0, 0, 0, 0.3)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(220, 10%, 40%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(220, 14%, 71%)`}},{types:[`attr-name`,`class-name`,`maybe-class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(29, 54%, 61%)`}},{types:[`keyword`],style:{color:`hsl(286, 60%, 67%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(355, 65%, 65%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`],style:{color:`hsl(95, 38%, 62%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(207, 82%, 66%)`}},{types:[`url`],style:{color:`hsl(187, 47%, 55%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(220, 14%, 71%)`}}]},H={plain:{backgroundColor:`hsl(230, 1%, 98%)`,color:`hsl(230, 8%, 24%)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(230, 4%, 64%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(230, 8%, 24%)`}},{types:[`attr-name`,`class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(35, 99%, 36%)`}},{types:[`keyword`],style:{color:`hsl(301, 63%, 40%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(5, 74%, 59%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`,`punctuation`],style:{color:`hsl(119, 34%, 47%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(221, 87%, 60%)`}},{types:[`url`],style:{color:`hsl(198, 99%, 37%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(230, 8%, 24%)`}}]},U={plain:{color:`#ebdbb2`,backgroundColor:`#292828`},styles:[{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`,`function`],style:{color:`#d8a657`}},{types:[`property-access`],style:{color:`#7daea3`}},{types:[`tag`],style:{color:`#e78a4e`}},{types:[`attr-name`,`char`,`url`,`regex`],style:{color:`#a9b665`}},{types:[`attr-value`,`string`],style:{color:`#89b482`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#ea6962`}},{types:[`entity`,`number`,`symbol`],style:{color:`#d3869b`}}]},W={plain:{color:`#654735`,backgroundColor:`#f9f5d7`},styles:[{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#af2528`}},{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`],style:{color:`#b4730e`}},{types:[`string`,`attr-value`],style:{color:`#477a5b`}},{types:[`property-access`],style:{color:`#266b79`}},{types:[`function`,`attr-name`,`char`,`url`],style:{color:`#72761e`}},{types:[`tag`],style:{color:`#b94c07`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`entity`,`number`,`symbol`],style:{color:`#924f79`}}]},G=e=>(0,r.useCallback)(t=>{var n=t,{className:r,style:i,line:o}=n;let s=v(_({},y(n,[`className`,`style`,`line`])),{className:a(`token-line`,r)});return typeof e==`object`&&`plain`in e&&(s.style=e.plain),typeof i==`object`&&(s.style=_(_({},s.style||{}),i)),s},[e]),K=e=>{let t=(0,r.useCallback)(({types:t,empty:n})=>{if(e!=null)return t.length===1&&t[0]===`plain`?n==null?void 0:{display:`inline-block`}:t.length===1&&n!=null?e[t[0]]:Object.assign(n==null?{}:{display:`inline-block`},...t.map(t=>e[t]))},[e]);return(0,r.useCallback)(e=>{var n=e,{token:r,className:i,style:o}=n;let s=v(_({},y(n,[`token`,`className`,`style`])),{className:a(`token`,...r.types,i),children:r.content,style:t(r)});return o!=null&&(s.style=_(_({},s.style||{}),o)),s},[t])},q=/\r\n|\r|\n/,J=e=>{e.length===0?e.push({types:[`plain`],content:` `,empty:!0}):e.length===1&&e[0].content===``&&(e[0].content=` `,e[0].empty=!0)},Y=(e,t)=>{let n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{let t=[[]],n=[e],r=[0],i=[e.length],a=0,o=0,s=[],c=[s];for(;o>-1;){for(;(a=r[o]++)0?l:[`plain`],e=u):(l=Y(l,u.type),u.alias&&(l=Y(l,u.alias)),e=u.content),typeof e!=`string`){o++,t.push(l),n.push(e),r.push(0),i.push(e.length);continue}let d=e.split(q),f=d.length;s.push({types:l,content:d[0]});for(let e=1;e(0,r.useMemo)(()=>{if(n==null)return X([t]);let r={code:t,grammar:n,language:i,tokens:[]};return e.hooks.run(`before-tokenize`,r),r.tokens=e.tokenize(t,n),e.hooks.run(`after-tokenize`,r),X(r.tokens)},[t,n,i,e]),Q=(e,t)=>{let{plain:n}=e,r=e.styles.reduce((e,n)=>{let{languages:r,style:i}=n;return r&&!r.includes(t)||n.types.forEach(t=>{e[t]=_(_({},e[t]),i)}),e},{});return r.root=n,r.plain=v(_({},n),{backgroundColor:void 0}),r},ee=({children:e,language:t,code:n,theme:r,prism:i})=>{let a=t.toLowerCase(),o=Q(r,a),s=G(o),c=K(o),l=i.languages[a];return e({tokens:Z({prism:i,language:a,code:n,grammar:l}),className:`prism-code language-${a}`,style:o==null?{}:o.root,getLineProps:s,getTokenProps:c})},te=e=>(0,r.createElement)(ee,v(_({},e),{prism:e.prism||C,theme:e.theme||L,code:e.code,language:e.language})),$=n(),ne={plain:{color:`var(--code-text)`,backgroundColor:`transparent`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`],style:{color:`var(--code-token-comment)`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`var(--code-token-punctuation)`}},{types:[`property`,`tag`,`constant`,`symbol`,`deleted`,`attr-name`],style:{color:`var(--code-token-property)`}},{types:[`boolean`,`number`],style:{color:`var(--code-token-number)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`attr-value`],style:{color:`var(--code-token-string)`}},{types:[`operator`,`entity`,`url`],style:{color:`var(--code-token-operator)`}},{types:[`atrule`,`keyword`],style:{color:`var(--code-token-keyword)`}},{types:[`function`],style:{color:`var(--code-token-function)`}},{types:[`class-name`],style:{color:`var(--code-token-class)`}},{types:[`regex`,`important`,`variable`],style:{color:`var(--code-token-variable)`}}]};function re({code:e,language:t,showLineNumbers:n}){return(0,$.jsx)(te,{code:e,language:t||`text`,theme:ne,children:({className:e,tokens:t,getLineProps:i,getTokenProps:a})=>(0,$.jsx)(`pre`,{className:`${e} code-viewer-pre`,children:(0,$.jsx)(`code`,{children:t.map((e,t)=>{let o=i({line:e});return(0,r.createElement)(`span`,{...o,className:`${o.className} code-viewer-line`,key:t},n&&(0,$.jsx)(`span`,{className:`code-viewer-line-number`,"aria-hidden":`true`,children:t+1}),(0,$.jsx)(`span`,{className:`code-viewer-line-content`,children:e.map((e,t)=>(0,$.jsx)(`span`,{...a({token:e})},t))}))})})})})}export{re as default}; \ No newline at end of file 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-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/assets/index-t4JdtanA.js b/ksadk/studio/static/assets/index-t4JdtanA.js new file mode 100644 index 00000000..c03a38e2 --- /dev/null +++ b/ksadk/studio/static/assets/index-t4JdtanA.js @@ -0,0 +1,267 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrismRenderer-e1psRo9-.js","assets/rolldown-runtime-hePW80VL.js","assets/react-vendor-D0Ec-185.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-D0Ec-185.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:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]]),ae=D(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),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 ei;var t=ni(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])}},ii=$r(),ai=`data-scroll-locked`,oi=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[${ai}] { + 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[${ai}] { + ${Nr}: ${s}px; + } +`},si=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},ci=function(){s.useEffect(function(){return document.body.setAttribute(ai,(si()+1).toString()),function(){var e=si()-1;e<=0?document.body.removeAttribute(ai):document.body.setAttribute(ai,e.toString())}},[])},li=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;ci();var a=s.useMemo(function(){return ri(i)},[i]);return s.createElement(ii,{styles:oi(a,!t,i,n?``:`!important`)})},ui=!1;if(typeof window<`u`)try{var di=Object.defineProperty({},"passive",{get:function(){return ui=!0,!0}});window.addEventListener(`test`,di,di),window.removeEventListener(`test`,di,di)}catch{ui=!1}var fi=ui?{passive:!1}:!1,pi=function(e){return e.tagName===`TEXTAREA`},mi=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!pi(e)&&n[t]===`visible`)},hi=function(e){return mi(e,`overflowY`)},gi=function(e){return mi(e,`overflowX`)},_i=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),bi(e,r)){var i=xi(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},vi=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},yi=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},bi=function(e,t){return e===`v`?hi(t):gi(t)},xi=function(e,t){return e===`v`?vi(t):yi(t)},Si=function(e,t){return e===`h`&&t===`rtl`?-1:1},Ci=function(e,t,n,r,i){var a=Si(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=xi(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&bi(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},wi=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Ti=function(e){return[e.deltaX,e.deltaY]},Ei=function(e){return e&&`current`in e?e.current:e},Di=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Oi=function(e){return` + .block-interactivity-${e} {pointer-events: none;} + .allow-interactivity-${e} {pointer-events: all;} +`},ki=0,Ai=[];function ji(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),i=s.useState(ki++)[0],a=s.useState($r)[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(Ei),!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=wi(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=_i(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=_i(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 Ci(h,t,e,h===`h`?s:c,!0)},[]),l=s.useCallback(function(e){var n=e;if(!(!Ai.length||Ai[Ai.length-1]!==a)){var r=`deltaY`in n?Ti(n):wi(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&Di(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var s=(o.current.shards||[]).map(Ei).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:Mi(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=wi(e),r.current=void 0},[]),f=s.useCallback(function(t){u(t.type,Ti(t),t.target,c(t,e.lockRef.current))},[]),p=s.useCallback(function(t){u(t.type,wi(t),t.target,c(t,e.lockRef.current))},[]);s.useEffect(function(){return Ai.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,l,fi),document.addEventListener(`touchmove`,l,fi),document.addEventListener(`touchstart`,d,fi),function(){Ai=Ai.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,l,fi),document.removeEventListener(`touchmove`,l,fi),document.removeEventListener(`touchstart`,d,fi)}},[]);var m=e.removeScrollBar,h=e.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:Oi(i)}):null,m?s.createElement(li,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Mi(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Ni=Ur(Wr,ji),Pi=s.forwardRef(function(e,t){return s.createElement(Kr,Dr({},e,{ref:t,sideCar:Ni}))});Pi.classNames=Kr.classNames;var Fi=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Ii=new WeakMap,Li=new WeakMap,Ri={},zi=0,Bi=function(e){return e&&(e.host||Bi(e.parentNode))},Vi=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Bi(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})},Hi=function(e,t,n,r){var i=Vi(t,Array.isArray(e)?e:[e]);Ri[n]||(Ri[n]=new WeakMap);var a=Ri[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=(Ii.get(e)||0)+1,l=(a.get(e)||0)+1;Ii.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Li.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(),zi++,function(){o.forEach(function(e){var t=Ii.get(e)-1,i=a.get(e)-1;Ii.set(e,t),a.set(e,i),t||(Li.has(e)||e.removeAttribute(r),Li.delete(e)),i||e.removeAttribute(n)}),zi--,zi||(Ii=new WeakMap,Ii=new WeakMap,Li=new WeakMap,Ri={})}},Ui=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Fi(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Hi(r,i,n,`aria-hidden`)):function(){return null}},Wi=Object.defineProperty,Gi=(e,t)=>Wi(e,`name`,{value:t,configurable:!0}),Ki=`Dialog`,[qi,Ji]=zt(Ki),[Yi,Xi]=qi(Ki),Zi=Gi(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:Ki}),[f,p]=s.useState(0),[m,h]=s.useState(0);return(0,G.jsx)(Yi,{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`),Qi=`DialogPortal`,[$i,ea]=qi(Qi,{forceMount:void 0}),ta=Gi(e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Xi(Qi,t);return(0,G.jsx)($i,{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`),na=`DialogOverlay`,ra=s.forwardRef(Gi(function(e,t){let n=ea(na,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Xi(na,e.__scopeDialog);return a.modal?(0,G.jsx)(fr,{present:r||a.open,children:(0,G.jsx)(aa,{...i,ref:t})}):null},`DialogOverlay`)),ia=un(`DialogOverlay.RemoveScroll`),aa=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(na,n),a=Ft(t,Rn());return(0,G.jsx)(Pi,{as:ia,allowPinchZoom:!0,shards:[i.contentRef],children:(0,G.jsx)(Tn.div,{"data-state":_a(i.open),...r,ref:a,style:{pointerEvents:`auto`,...r.style}})})},`DialogOverlayImpl`)),oa=`DialogContent`,sa=s.forwardRef(Gi(function(e,t){let n=ea(oa,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Xi(oa,e.__scopeDialog);return(0,G.jsx)(fr,{present:r||a.open,children:a.modal?(0,G.jsx)(ca,{...i,ref:t}):(0,G.jsx)(la,{...i,ref:t})})},`DialogContent`)),ca=s.forwardRef(Gi(function(e,t){let n=Xi(oa,e.__scopeDialog),r=s.useRef(null),i=Ft(t,n.contentRef,r);return s.useEffect(()=>{let e=r.current;if(e)return Ui(e)},[]),(0,G.jsx)(ua,{...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`)),la=s.forwardRef(Gi(function(e,t){let n=Xi(oa,e.__scopeDialog),r=s.useRef(!1),i=s.useRef(!1);return(0,G.jsx)(ua,{...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`)),ua=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=Xi(oa,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":_a(s.open),...o,ref:t,deferPointerDownOutside:!0,onDismiss:()=>s.onOpenChange(!1)})})})},`DialogContentImpl`)),da=`DialogTitle`,fa=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(da,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`)),pa=`DialogDescription`,ma=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(pa,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`)),ha=`DialogClose`,ga=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(ha,n);return(0,G.jsx)(Tn.button,{type:`button`,...r,ref:t,onClick:K(e.onClick,()=>i.onOpenChange(!1))})},`DialogClose`));function _a(e){return e?`open`:`closed`}Gi(_a,`getState`);var va=[],ya=new Map,ba=[`.skip-link`,`.sidebar`,`.global-header`,`#mainContent`];function xa(e){if(e){for(let e of document.querySelectorAll(ba.join(`,`)))ya.has(e)||ya.set(e,e.hasAttribute(`inert`)),e.setAttribute(`inert`,``);return}for(let[e,t]of ya)e.isConnected&&!t&&e.removeAttribute(`inert`);ya.clear()}function Sa(e){if(e.key!==`Escape`||!va.length)return;let t=va[va.length-1];e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t.disabled||t.close()}function Ca(e){return va.length||(document.addEventListener(`keydown`,Sa,!0),xa(!0)),va.push(e),()=>{let t=va.lastIndexOf(e);t>=0&&va.splice(t,1),va.length||(document.removeEventListener(`keydown`,Sa,!0),xa(!1))}}function wa({open:e,onOpenChange:t,closeDisabled:n=!1,children:r}){return(0,G.jsx)(Zi,{open:e,onOpenChange:e=>{!e&&n||t(e)},children:r})}function Ta({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,Ca(c.current)},[e]),(0,G.jsx)(ta,{children:(0,G.jsxs)(`div`,{className:`overlay`,children:[(0,G.jsx)(ra,{className:`overlay-backdrop`}),(0,G.jsx)(sa,{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 Ea({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)(wa,{open:e,onOpenChange:t,closeDisabled:s,children:(0,G.jsxs)(Ta,{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)(fa,{children:n}),r?(0,G.jsx)(ma,{children:r}):null]}),c?(0,G.jsx)(ga,{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 Da({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)(wa,{open:e,onOpenChange:t,closeDisabled:o,children:(0,G.jsxs)(Ta,{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)(fa,{children:n}),r?(0,G.jsx)(ma,{children:r}):null]}),(0,G.jsx)(ga,{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 Oa({title:e,description:t,confirmText:n=`确认`,danger:r=!0,busy:i=!1,onConfirm:a,onCancel:o}){return(0,G.jsx)(Ea,{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)(ga,{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 ka=Object.defineProperty,Aa=(e,t)=>ka(e,`name`,{value:t,configurable:!0});function ja(e){let t=e+`CollectionProvider`,[n,r]=zt(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=Aa(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 Aa(h,`useCollection`),[{Provider:o,Slot:u,ItemSlot:m},h,r]}Aa(ja,`createCollection`);var Ma=new WeakMap,Na=class e extends Map{static{Aa(this,`OrderedDict`)}#e;constructor(e){super(e),this.#e=[...super.keys()],Ma.set(this,!0)}set(e,t){return Ma.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=Ia(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 Pa(e,t){if(`at`in Array.prototype)return Array.prototype.at.call(e,t);let n=Fa(e,t);return n===-1?void 0:e[n]}Aa(Pa,`at`);function Fa(e,t){let n=e.length,r=Ia(t),i=r>=0?r:n+r;return i<0||i>=n?-1:i}Aa(Fa,`toSafeIndex`);function Ia(e){return e!==e||e===0?0:Math.trunc(e)}Aa(Ia,`toSafeInteger`);function La(e){let t=e+`CollectionProvider`,[n,r]=zt(t),[i,a]=n(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new Na,setItemMap:Aa(()=>void 0,`setItemMap`)}),o=Aa(({state:e,...t})=>e?(0,G.jsx)(l,{...t,state:e}):(0,G.jsx)(c,{...t}),`CollectionProvider`);o.displayName=t;let c=Aa(e=>{let t=g();return(0,G.jsx)(l,{...e,state:t})},`CollectionInit`);c.displayName=t+`Init`;let l=Aa(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=Va(()=>{});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);Ra(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(Ba):(t.set(c,{...e,element:c}),t.toSorted(Ba)):t),()=>{d(e=>!c||!e.has(c)?e:(e.delete(c),new Na(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 Na)}Aa(g,`useInitCollection`);function _(t){let{itemMap:n}=a(e+`CollectionConsumer`,t);return n}return Aa(_,`useCollection`),[{Provider:o,Slot:f,ItemSlot:h},{createCollectionScope:r,useCollection:_,useInitCollection:g}]}Aa(La,`createCollection`);function Ra(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}Aa(Ra,`shallowEqual`);function za(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}Aa(za,`isElementPreceding`);function Ba(e,t){return!e[1].element||!t[1].element?0:za(e[1].element,t[1].element)?-1:1}Aa(Ba,`sortByDocumentPosition`);function Va(e){return new MutationObserver(t=>{for(let n of t)if(n.type===`childList`){e();return}})}Aa(Va,`getChildListObserver`);var Ha=Object.defineProperty,Ua=(e,t)=>Ha(e,`name`,{value:t,configurable:!0}),Wa=s.createContext(void 0);function Ga(e){let t=s.useContext(Wa);return e||t||`ltr`}Ua(Ga,`useDirection`);var Ka=[`top`,`right`,`bottom`,`left`],qa=Math.min,Ja=Math.max,Ya=Math.round,Xa=Math.floor,Za=e=>({x:e,y:e}),Qa={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function $a(e,t,n){return Ja(e,qa(t,n))}function eo(e,t){return typeof e==`function`?e(t):e}function to(e){return e.split(`-`)[0]}function no(e){return e.split(`-`)[1]}function ro(e){return e===`x`?`y`:`x`}function io(e){return e===`y`?`height`:`width`}function ao(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function oo(e){return ro(ao(e))}function so(e,t,n){n===void 0&&(n=!1);let r=no(e),i=oo(e),a=io(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=_o(o)),[o,_o(o)]}function co(e){let t=_o(e);return[lo(e),t,lo(t)]}function lo(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var uo=[`left`,`right`],fo=[`right`,`left`],po=[`top`,`bottom`],mo=[`bottom`,`top`];function ho(e,t,n){switch(e){case`top`:case`bottom`:return n?t?fo:uo:t?uo:fo;case`left`:case`right`:return t?po:mo;default:return[]}}function go(e,t,n,r){let i=no(e),a=ho(to(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(lo)))),a}function _o(e){let t=to(e);return Qa[t]+e.slice(t.length)}function vo(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function yo(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:vo(e)}function bo(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 xo(e,t,n){let{reference:r,floating:i}=e,a=ao(t),o=oo(t),s=io(o),c=to(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=no(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function So(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}=eo(t,e),p=yo(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=bo(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=bo(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 Co=50,wo=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:So},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=xo(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}=eo(e,t)||{};if(l==null)return{};let d=yo(u),f={x:n,y:r},p=oo(i),m=io(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=qa(d[_],T),D=qa(d[v],T),O=C-h[m]-D,k=C/2-h[m]/2+w,A=$a(E,k,O),j=!c.arrow&&no(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===ao(t)||T.every(e=>ao(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=ao(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 Do(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Oo(e){return Ka.some(t=>e[t]>=0)}var ko=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=eo(e,t);switch(i){case`referenceHidden`:{let e=Do(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Oo(e)}}}case`escaped`:{let e=Do(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Oo(e)}}}default:return{}}}}},Ao=new Set([`left`,`top`]);async function jo(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=to(n),s=no(n),c=ao(n)===`y`,l=Ao.has(o)?-1:1,u=a&&c?-1:1,d=eo(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 Mo=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 jo(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}}}}},No=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}=eo(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=ao(i),p=ro(f),m=u[p],h=u[f],g=(e,t)=>$a(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}}}}}},Po=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}=eo(e,t),u={x:n,y:r},d=ao(i),f=ro(d),p=u[f],m=u[d],h=eo(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=Ao.has(to(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}}}},Fo=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}=eo(e,t),c=await i.detectOverflow(t,s),l=to(n),u=no(n),d=ao(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=qa(p-c[m],g),y=qa(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*Ja(c.left,c.right):S=p-2*Ja(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 Io(){return typeof window<`u`}function Lo(e){return Bo(e)?(e.nodeName||``).toLowerCase():`#document`}function Ro(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function zo(e){return((Bo(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Bo(e){return Io()?e instanceof Node||e instanceof Ro(e).Node:!1}function Vo(e){return Io()?e instanceof Element||e instanceof Ro(e).Element:!1}function Ho(e){return Io()?e instanceof HTMLElement||e instanceof Ro(e).HTMLElement:!1}function Uo(e){return!Io()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof Ro(e).ShadowRoot}function Wo(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=ts(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Go(e){return/^(table|td|th)$/.test(Lo(e))}function Ko(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var qo=/transform|translate|scale|rotate|perspective|filter/,Jo=/paint|layout|strict|content/,Yo=e=>!!e&&e!==`none`,Xo;function Zo(e){let t=Vo(e)?ts(e):e;return Yo(t.transform)||Yo(t.translate)||Yo(t.scale)||Yo(t.rotate)||Yo(t.perspective)||!$o()&&(Yo(t.backdropFilter)||Yo(t.filter))||qo.test(t.willChange||``)||Jo.test(t.contain||``)}function Qo(e){let t=rs(e);for(;Ho(t)&&!es(t);){if(Zo(t))return t;if(Ko(t))return null;t=rs(t)}return null}function $o(){return Xo??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Xo}function es(e){return/^(html|body|#document)$/.test(Lo(e))}function ts(e){return Ro(e).getComputedStyle(e)}function ns(e){return Vo(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function rs(e){if(Lo(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Uo(e)&&e.host||zo(e);return Uo(t)?t.host:t}function is(e){let t=rs(e);return es(t)?(e.ownerDocument||e).body:Ho(t)&&Wo(t)?t:is(t)}function as(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=is(e),i=r===e.ownerDocument?.body,a=Ro(r);if(i){let e=os(a);return t.concat(a,a.visualViewport||[],Wo(r)?r:[],e&&n?as(e):[])}return t.concat(r,as(r,[],n))}function os(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ss(e){let t=ts(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Ho(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Ya(n)!==a||Ya(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function cs(e){return Vo(e)?e:e.contextElement}function ls(e){let t=cs(e);if(!Ho(t))return Za(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=ss(t),o=(a?Ya(n.width):n.width)/r,s=(a?Ya(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var us=Za(0);function ds(e){let t=Ro(e);return!$o()||!t.visualViewport?us:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function fs(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===Ro(e)}function ps(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=cs(e),o=Za(1);t&&(r?Vo(r)&&(o=ls(r)):o=ls(e));let s=fs(a,n,r)?ds(a):Za(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=Ro(a),t=Vo(r)?Ro(r):r,n=e,i=os(n);for(;i&&t!==n;){let e=ls(i),t=i.getBoundingClientRect(),r=ts(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=Ro(i),i=os(n)}}return bo({width:u,height:d,x:c,y:l})}function ms(e,t){let n=ns(e).scrollLeft;return t?t.left+n:ps(zo(e)).left+n}function hs(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-ms(e,n),y:n.top+t.scrollTop}}function gs(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=zo(r),s=t?Ko(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=Za(1),u=Za(0),d=Ho(r);if((d||!a)&&((Lo(r)!==`body`||Wo(o))&&(c=ns(r)),d)){let e=ps(r);l=ls(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?hs(o,c):Za(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 _s(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function vs(e){let t=ns(e),n=e.ownerDocument.body,r=Ja(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=Ja(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+ms(e),o=-t.scrollTop;return ts(n).direction===`rtl`&&(a+=Ja(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var ys=25;function bs(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=Ro(e),a=zo(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!$o()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(ms(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<=ys&&(s-=o)}return{width:s,height:c,x:l,y:u}}function xs(e,t){let n=ps(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=ls(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Ss(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=bs(e,n,t);else if(t===`document`)r=vs(zo(e));else if(Vo(t))r=xs(t,n);else{let n=ds(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return bo(r)}function Cs(e,t){let n=t.get(e);if(n)return n;let r=as(e,[],!1).filter(e=>Vo(e)&&Lo(e)!==`body`),i=null,a=ts(e).position===`fixed`,o=a?rs(e):e;for(;Vo(o)&&!es(o);){let e=ts(o),t=Zo(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=rs(o)}return t.set(e,r),r}function ws(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Ko(t)?[]:Cs(t,this._c):[].concat(n),r],o=Ss(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=Ro(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function Fs(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=cs(e),u=i||a?[...l?as(l):[],...t?as(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?Ps(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?ps(e):null;c&&g();function g(){let t=ps(e);h&&!Ns(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 Is=Mo,Ls=No,Rs=Eo,zs=Fo,Bs=ko,Vs=To,Hs=Po,Us=(e,t,n)=>{let r=new Map,i=n??{},a={...Ms,...i.platform,_c:r};return wo(e,t,{...i,platform:a})},Ws=typeof document<`u`?s.useLayoutEffect:function(){};function Gs(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(!Gs(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)&&!Gs(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Ks(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function qs(e,t){let n=Ks(e);return Math.round(t*n)/n}function Js(e){let t=s.useRef(e);return Ws(()=>{t.current=e}),t}function Ys(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);Gs(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=Js(l),O=Js(i),k=Js(u),A=s.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),Us(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!Gs(T.current,t)&&(T.current=t,sn.flushSync(()=>{f(t)}))})},[p,t,n,O,k]);Ws(()=>{u===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(e=>({...e,isPositioned:!1})))},[u]);let j=s.useRef(!1);Ws(()=>(j.current=!0,()=>{j.current=!1}),[]),Ws(()=>{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=qs(N.floating,d.x),r=qs(N.floating,d.y);return c?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Ks(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 Xs=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?{}:Vs({element:r.current,padding:i}).fn(n):r?Vs({element:r,padding:i}).fn(n):{}}}},Zs=(e,t)=>{let n=Is(e);return{name:n.name,fn:n.fn,options:[e,t]}},Qs=(e,t)=>{let n=Ls(e);return{name:n.name,fn:n.fn,options:[e,t]}},$s=(e,t)=>({fn:Hs(e).fn,options:[e,t]}),ec=(e,t)=>{let n=Rs(e);return{name:n.name,fn:n.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=Xs(e);return{name:n.name,fn:n.fn,options:[e,t]}},ic=Object.defineProperty,ac=s.forwardRef(((e,t)=>ic(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`)),oc=Object.defineProperty,sc=(e,t)=>oc(e,`name`,{value:t,configurable:!0});function cc(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}sc(cc,`useSize`);var lc=Object.defineProperty,uc=(e,t)=>lc(e,`name`,{value:t,configurable:!0}),dc=`Popper`,[fc,pc]=zt(dc),[mc,hc]=fc(dc),gc=uc(e=>{let{__scopePopper:t,children:n}=e,[r,i]=s.useState(null),[a,o]=s.useState(void 0);return(0,G.jsx)(mc,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})},`Popper`),_c=`PopperAnchor`,vc=s.forwardRef(uc(function(e,t){let{__scopePopper:n,virtualRef:r,...i}=e,a=hc(_c,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&&Oc(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`)),yc=`PopperContent`,[bc,xc]=fc(yc),Sc=s.forwardRef(uc(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,_=hc(yc,n),[v,y]=s.useState(null),b=Ft(t,y),[x,S]=s.useState(null),C=cc(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(Ec),altBoundary:k},{refs:j,floatingStyles:M,placement:N,isPositioned:P,middlewareData:F}=Ys({strategy:`fixed`,placement:E,whileElementsMounted:uc((...e)=>Fs(...e,{animationFrame:m===`always`}),`whileElementsMounted`),elements:{reference:_.anchor},middleware:[Zs({mainAxis:i+T,alignmentAxis:o}),l&&Qs({mainAxis:!0,crossAxis:!1,limiter:f===`partial`?$s():void 0,...A}),l&&ec({...A}),tc({...A,apply:uc(({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&&rc({element:x,padding:c}),Dc({arrowWidth:w,arrowHeight:T}),p&&nc({strategy:`referenceHidden`,...A,boundary:k?A.boundary:void 0})]}),I=_.setPlacementState;Vt(()=>(I(N),()=>{I(void 0)}),[N,I]);let[L,R]=Oc(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)(bc,{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`)),Cc=`PopperArrow`,wc={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Tc=s.forwardRef(uc(function(e,t){let{__scopePopper:n,...r}=e,i=xc(Cc,n),a=wc[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)(ac,{...r,ref:t,style:{...r.style,display:`block`}})})},`PopperArrow`));function Ec(e){return e!==null}uc(Ec,`isNotNull`);var Dc=uc(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]=Oc(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 Oc(e){let[t,n=`center`]=e.split(`-`);return[t,n]}uc(Oc,`getSideAndAlignFromPlacement`);var kc=gc,Ac=vc,jc=Sc,Mc=Tc,Nc=Object.defineProperty,Pc=(e,t)=>Nc(e,`name`,{value:t,configurable:!0}),Fc=!1;function Ic(){let[e,t]=s.useState(Fc);return s.useEffect(()=>{Fc||(Fc=!0,t(!0))},[]),e}Pc(Ic,`useIsHydrated`);var Lc=s.useSyncExternalStore;function Rc(){return()=>{}}Pc(Rc,`subscribe`);function zc(){return Lc(Rc,()=>!0,()=>!1)}Pc(zc,`useIsHydratedModern`);var Bc=typeof Lc==`function`?zc:Ic,Vc=Object.defineProperty,Hc=(e,t)=>Vc(e,`name`,{value:t,configurable:!0}),Uc=`rovingFocusGroup.onEntryFocus`,Wc={bubbles:!1,cancelable:!0},Gc=`RovingFocusGroup`,[Kc,qc,Jc]=ja(Gc),[Yc,Xc]=zt(Gc,[Jc]),[Zc,Qc]=Yc(Gc),$c=s.forwardRef(Hc(function(e,t){return(0,G.jsx)(Kc.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,G.jsx)(Kc.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,G.jsx)(el,{...e,ref:t})})})},`RovingFocusGroup`)),el=s.forwardRef(Hc(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=Ga(a),[g,_]=tn({prop:o,defaultProp:c??null,onChange:l,caller:Gc}),[v,y]=s.useState(!1),b=kn(u),x=qc(n),S=s.useRef(!1),[C,w]=s.useState(0);return s.useEffect(()=>{let e=p.current;if(e)return e.addEventListener(Uc,b),()=>e.removeEventListener(Uc,b)},[b]),(0,G.jsx)(Zc,{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(Uc,Wc);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);ol([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`)),tl=`RovingFocusGroupItem`,nl=s.forwardRef(Hc(function(e,t){let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...c}=e,l=Kt(),u=a||l,d=Qc(tl,n),f=d.currentTabStopId===u,p=qc(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:g}=d,_=Bc();return Vt(()=>{if(!(!_||!r))return m(),()=>h()},[_,r,m,h]),s.useEffect(()=>{if(!(_||!r))return m(),()=>h()},[_,r,m,h]),(0,G.jsx)(Kc.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=al(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?sl(n,r+1):n.slice(r+1)}setTimeout(()=>ol(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:g!=null}):o})})},`RovingFocusGroupItem`)),rl={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function il(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}Hc(il,`getDirectionAwareKey`);function al(e,t,n){let r=il(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return rl[r]}Hc(al,`getFocusIntent`);function ol(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}Hc(ol,`focusFirst`);function sl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Hc(sl,`wrapArray`);var cl=$c,ll=nl,ul=Object.defineProperty,dl=(e,t)=>ul(e,`name`,{value:t,configurable:!0}),fl=[`Enter`,` `],pl=[`ArrowDown`,`PageUp`,`Home`],ml=[`ArrowUp`,`PageDown`,`End`],hl=[...pl,...ml],gl={ltr:[...fl,`ArrowRight`],rtl:[...fl,`ArrowLeft`]},_l={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},vl=`Menu`,[yl,bl,xl]=ja(vl),[Sl,Cl]=zt(vl,[xl,pc,Xc]),wl=pc(),Tl=Xc(),[El,Dl]=Sl(vl),[Ol,kl]=Sl(vl),Al=dl(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,c=wl(t),[l,u]=s.useState(null),d=s.useRef(!1),f=kn(a),p=Ga(i);return s.useEffect(()=>{let e=dl(()=>{d.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=dl(()=>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=dl(()=>f(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,f]),(0,G.jsx)(kc,{...c,children:(0,G.jsx)(El,{scope:t,open:n,onOpenChange:f,content:l,onContentChange:u,children:(0,G.jsx)(Ol,{scope:t,onClose:s.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:d,dir:p,modal:o,children:r})})})},`Menu`),jl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e,i=wl(n);return(0,G.jsx)(Ac,{...i,...r,ref:t})},`MenuAnchor`)),Ml=`MenuPortal`,[Nl,Pl]=Sl(Ml,{forceMount:void 0}),Fl=dl(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Dl(Ml,t);return(0,G.jsx)(Nl,{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`),Il=`MenuContent`,[Ll,Rl]=Sl(Il),zl=s.forwardRef(dl(function(e,t){let n=Pl(Il,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Dl(Il,e.__scopeMenu),o=kl(Il,e.__scopeMenu);return(0,G.jsx)(yl.Provider,{scope:e.__scopeMenu,children:(0,G.jsx)(fr,{present:r||a.open,children:(0,G.jsx)(yl.Slot,{scope:e.__scopeMenu,children:o.modal?(0,G.jsx)(Bl,{...i,ref:t}):(0,G.jsx)(Vl,{...i,ref:t})})})})},`MenuContent`)),Bl=s.forwardRef(dl(function(e,t){let n=Dl(Il,e.__scopeMenu),r=s.useRef(null),i=Ft(t,r);return s.useEffect(()=>{let e=r.current;if(e)return Ui(e)},[]),(0,G.jsx)(Ul,{...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`)),Vl=s.forwardRef(dl(function(e,t){let n=Dl(Il,e.__scopeMenu);return(0,G.jsx)(Ul,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Hl=un(`MenuContent.ScrollLock`),Ul=s.forwardRef(dl(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,_=Dl(Il,n),v=kl(Il,n),y=wl(n),b=Tl(n),x=bl(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?Pi:s.Fragment,N=h?{as:Hl,allowPinchZoom:!0}:void 0,P=dl(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=yu(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;dl((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&&xu(e,k.current?.area),[]);return(0,G.jsx)(Ll,{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)(cl,{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)(jc,{role:`menu`,"aria-orientation":`vertical`,"data-state":mu(_.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||!hl.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);ml.includes(e.key)&&a.reverse(),_u(a)}),onBlur:K(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(E.current),D.current=``)}),onPointerMove:K(e.onPointerMove,Su(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`)),Wl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{role:`group`,...r,ref:t})},`MenuGroup`)),Gl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{...r,ref:t})},`MenuLabel`)),Kl=`MenuItem`,ql=`menu.itemSelect`,Jl=s.forwardRef(dl(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=s.useRef(null),o=kl(Kl,e.__scopeMenu),c=Rl(Kl,e.__scopeMenu),l=Ft(t,a),u=s.useRef(!1),d=dl(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(ql,{bubbles:!0,cancelable:!0});e.addEventListener(ql,e=>r?.(e),{once:!0}),En(e,t),t.defaultPrevented?u.current=!1:o.onClose()}},`handleSelect`);return(0,G.jsx)(Yl,{...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!==` `)&&fl.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),Yl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Rl(Kl,n),c=Tl(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)(yl.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,G.jsx)(ll,{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,Su(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:K(e.onPointerLeave,Su(e=>o.onItemLeave(e))),onFocus:K(e.onFocus,()=>f(!0)),onBlur:K(e.onBlur,()=>f(!1))})})})},`MenuItemImpl`)),[Xl,Zl]=Sl(`MenuRadioGroup`,{value:void 0,onValueChange:dl(()=>{},`onValueChange`)}),Ql=s.forwardRef(dl(function(e,t){let{value:n,onValueChange:r,...i}=e,a=kn(r);return(0,G.jsx)(Xl,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,G.jsx)(Wl,{...i,ref:t})})},`MenuRadioGroup`)),$l=`MenuRadioItem`,eu=s.forwardRef(dl(function(e,t){let{value:n,...r}=e,i=Zl($l,e.__scopeMenu),a=n===i.value;return(0,G.jsx)(nu,{scope:e.__scopeMenu,checked:a,children:(0,G.jsx)(Jl,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":gu(a),onSelect:K(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})},`MenuRadioItem`)),tu=`MenuItemIndicator`,[nu,ru]=Sl(tu,{checked:!1}),iu=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,forceMount:r,...i}=e,a=ru(tu,n);return(0,G.jsx)(fr,{present:r||hu(a.checked)||a.checked===!0,children:(0,G.jsx)(Tn.span,{...i,ref:t,"data-state":gu(a.checked)})})},`MenuItemIndicator`)),au=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),ou=`MenuSub`,[su,cu]=Sl(ou),lu=dl(e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Dl(ou,t),o=wl(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)(kc,{...o,children:(0,G.jsx)(El,{scope:t,open:r,onOpenChange:f,content:u,onContentChange:d,children:(0,G.jsx)(su,{scope:t,contentId:Kt(),triggerId:Kt(),trigger:c,onTriggerChange:l,children:n})})})},`MenuSub`),uu=`MenuSubTrigger`,du=s.forwardRef(dl(function(e,t){let n=Dl(uu,e.__scopeMenu),r=kl(uu,e.__scopeMenu),i=cu(uu,e.__scopeMenu),a=Rl(uu,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)(jl,{asChild:!0,...u,children:(0,G.jsx)(Yl,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":n.open?i.contentId:void 0,"data-state":mu(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,Su(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,Su(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!==` `)&&gl[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})},`MenuSubTrigger`)),fu=`MenuSubContent`,pu=s.forwardRef(dl(function(e,t){let n=Pl(Il,e.__scopeMenu),{forceMount:r=n.forceMount,align:i=`start`,...a}=e,o=Dl(Il,e.__scopeMenu),c=kl(Il,e.__scopeMenu),l=cu(fu,e.__scopeMenu),u=s.useRef(null),d=Ft(t,u);return(0,G.jsx)(yl.Provider,{scope:e.__scopeMenu,children:(0,G.jsx)(fr,{present:r||o.open,children:(0,G.jsx)(yl.Slot,{scope:e.__scopeMenu,children:(0,G.jsx)(Ul,{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=_l[c.dir].includes(e.key);t&&n&&(o.onOpenChange(!1),l.trigger?.focus(),e.preventDefault())})})})})})},`MenuSubContent`));function mu(e){return e?`open`:`closed`}dl(mu,`getOpenState`);function hu(e){return e===`indeterminate`}dl(hu,`isIndeterminate`);function gu(e){return hu(e)?`indeterminate`:e?`checked`:`unchecked`}dl(gu,`getCheckedState`);function _u(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}dl(_u,`focusFirst`);function vu(e,t){return e.map((n,r)=>e[(t+r)%e.length])}dl(vu,`wrapArray`);function yu(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=vu(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}dl(yu,`getNextMatch`);function bu(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}dl(bu,`isPointInPolygon`);function xu(e,t){return t?bu({x:e.clientX,y:e.clientY},t):!1}dl(xu,`isPointerInGraceArea`);function Su(e){return t=>t.pointerType===`mouse`?e(t):void 0}dl(Su,`whenMouse`);var Cu=Al,wu=jl,Tu=Fl,Eu=zl,Du=Gl,Ou=Jl,ku=Ql,Au=eu,ju=iu,Mu=au,Nu=lu,Pu=du,Fu=pu,Iu=Object.defineProperty,Lu=(e,t)=>Iu(e,`name`,{value:t,configurable:!0}),Ru=`DropdownMenu`,[zu,Bu]=zt(Ru,[Cl]),Vu=Cl(),[Hu,Uu]=zu(Ru),Wu=Lu(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:c=!0}=e,l=Vu(t),u=s.useRef(null),[d,f]=tn({prop:i,defaultProp:a??!1,onChange:o,caller:Ru});return(0,G.jsx)(Hu,{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)(Cu,{...l,open:d,onOpenChange:f,dir:r,modal:c,children:n})})},`DropdownMenu`),Gu=`DropdownMenuTrigger`,Ku=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Uu(Gu,n),o=Vu(n),s=Ft(t,a.triggerRef);return(0,G.jsx)(wu,{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`)),qu=Lu(e=>{let{__scopeDropdownMenu:t,...n}=e,r=Vu(t);return(0,G.jsx)(Tu,{...r,...n})},`DropdownMenuPortal`),Ju=`DropdownMenuContent`,Yu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Uu(Ju,n),a=Vu(n),o=s.useRef(!1);return(0,G.jsx)(Eu,{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`)),Xu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Du,{...i,...r,ref:t})},`DropdownMenuLabel`)),Zu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Ou,{...i,...r,ref:t})},`DropdownMenuItem`)),Qu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(ku,{...i,...r,ref:t})},`DropdownMenuRadioGroup`)),$u=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Au,{...i,...r,ref:t})},`DropdownMenuRadioItem`)),ed=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(ju,{...i,...r,ref:t})},`DropdownMenuItemIndicator`)),td=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Mu,{...i,...r,ref:t})},`DropdownMenuSeparator`)),nd=Lu(e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Vu(t),[s,c]=tn({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,G.jsx)(Nu,{...o,open:s,onOpenChange:c,children:n})},`DropdownMenuSub`),rd=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Pu,{...i,...r,ref:t})},`DropdownMenuSubTrigger`)),id=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Fu,{...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`)),ad=Wu,od=Ku,sd=qu,cd=Yu,ld=Xu,ud=Zu,dd=Qu,fd=$u,pd=ed,md=td,hd=nd,gd=rd,_d=id;function vd({items:e,label:t=`更多操作`}){let n=e.findIndex(e=>e.danger);return(0,G.jsxs)(ad,{children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsx)(cd,{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)(md,{className:`more-actions-separator`}),(0,G.jsx)(ud,{className:`more-actions-item${e.danger?` danger`:``}`,disabled:e.disabled,onSelect:e.onSelect,children:e.label})]},e.label))})})]})}function yd({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 bd({children:e}){return(0,G.jsx)(yd,{targetId:`pageHeaderTools`,children:e})}function xd({children:e}){return(0,G.jsx)(yd,{targetId:`pageHeaderActions`,children:e})}function Sd(e){return Cd(e)||typeof e==`function`||wd(e)}function Cd(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function wd(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function Td(e,t){return e==null?null:Sd(e)?s.createElement(e,t):e}function Ed(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?Td(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:Td(n.cell,t.getContext())}return`header`in e&&e.header?Td(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?Td(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Dd({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 Od(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 kd=[],Ad=0,{link:jd,unlink:Md,propagate:Nd,checkDirty:Pd,shallowPropagate:Fd}=Dd({update(e){return e._update()},notify(e){kd[Ld++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Vd(e))}}),Id=0,Ld=0,Rd,zd=0;function Bd(e){try{++zd,e()}finally{--zd||Hd()}}function Vd(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Md(n,e)}function Hd(){if(!(zd>0)){for(;Id{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Rd,o=t?.compare??Object.is;if(n)Rd=i,++Ad,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{Rd=a,n&&(i.flags&=-5),Vd(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&Pd(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Fd(e)}}else e&32&&(i.flags=e&-33);return Rd!==void 0&&jd(i,Rd,Ad),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Nd(e),Fd(e),Hd())}},i}function Wd(e){let t=()=>{let t=Rd;Rd=n,++Ad,n.depsTail=void 0,n.flags=6;try{return e()}finally{Rd=t,n.flags&=-5,Vd(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&&Pd(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Vd(this)}};return t(),n}function Gd(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=Kd(e);if(n.length!==Kd(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})),Jd=n(((e,t)=>{t.exports=qd()})),Yd=n((e=>{var t=r(),n=Jd();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}})),Xd=t(n(((e,t)=>{t.exports=Yd()}))(),1);function Zd(e,t){return e===t}function Qd(e,t=e=>e,n){let r=n?.compare??Zd,i=(0,s.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,s.useCallback)(()=>e.get(),[e]);return(0,Xd.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function $d(e){let t=Qd(e.source,e.selector,{compare:Gd});return typeof e.children==`function`?e.children(t):e.children}function ef(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function tf(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 nf(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 rf(){return tf({createAtom:Ud,batch:Bd})}function af(e,t){return typeof e==`function`?e(t):e}function of(e){if(Array.isArray(e))return e.map(of);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?sf():{},r=Object.keys(e);for(let t=0;tObject.prototype.propertyIsEnumerable.call(e,t))}var df=3;function ff(e,t){return pf(e,t,df)}function pf(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!lf(e)||!lf(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=uf(e),i=uf(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e{let t=af(n,e);return r(e,t)?e:t})}function hf(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 gf=({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 vf({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 gf({...a,...s})}function yf(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function bf(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=yf(r);t[n]=a?vf({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function xf(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=yf(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=vf({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 Sf(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function Cf(e){return e.row.getValue(e.column.id)}function wf(e){return e.getValue()??e.table.options.renderFallbackValue}function Tf(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var Ef={assignCellPrototype:(e,t)=>{xf(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>Cf(e)},cell_renderValue:{fn:e=>wf(e)},cell_getContext:{fn:e=>Tf(e),memoDeps:e=>[e]}})}};function Df(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;nSf(e,`getIsVisible`,Af)):(cf(t,e.id)?t[e.id]:void 0)??!0}function jf(e){return e.getAllLeafColumns().filter(e=>Sf(e,`getIsVisible`,Af))}function Mf(e,t=1){let n=t;for(let r=0;r0&&If(s,t-1,n,r,i,a)}function Lf(e){for(let t=0;t{let n=t;for(let t=0;te[i.accessorKey]}if(!s)throw Error();let l=zf(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 Wf(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return Sf(e.table,`getOrderColumns`,Vf)(t)}return[e]}function Gf(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 Kf(e,t,n,r=0){let i=Array(t.length);for(let a=0;ae.getFlatColumns())}function Yf(e){let t=sf(),n=e.getAllFlatColumns();for(let e=0;ee.getLeafColumns());return Sf(e,`getOrderColumns`,Vf)(t)}function Zf(e){let t=sf(),n=e.getAllLeafColumns();for(let e=0;e{xf(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>Uf(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>Wf(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{bf(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>Gf(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>qf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>Jf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>Yf(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>Xf(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>Zf(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>Qf(e,t)}})}};function ep(e,t){for(let n=0;n!t.includes(e.id)&&!n.includes(e.id));return Rf(r,[...o,...c,...s],e)}function ip(e){return[...e.getHeaderGroups()].reverse()}function ap(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e{xf(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>tp(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>np(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{bf(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>rp(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:()=>ip(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>ap(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>op(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function cp(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{let s=cp(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=sf(),c._valuesCache=sf(),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;edp(e))}function pp(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>mp(e))}function mp(e,t){let n=e.initialState.expanded;mf(e,`expanded`,t?sf():n===!0||Object.assign(sf(),of(n??{})))}var hp=0;function gp(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??hp)===hp)return;yp(e,!0)}}function _p(e,t){mf(e,`pagination`,t)}function vp(e,t){_p(e,n=>{let r=af(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 yp(e,t){vp(e,t?hp:e.initialState.pagination?.pageIndex??hp)}function bp(e,t){mf(e,`sorting`,t)}function xp(e,t){bp(e,t?[]:of(e.initialState.sorting??[]))}function Sp(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&xp(e)}function Cp(){return e=>vf({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>Tp(e,e.options.data),onAfterUpdate:_f(()=>{pp(e),gp(e),Sp(e),fp(e)})})}function wp(e,t,n,r=0,i){let a=[];for(let o=0;o{bf(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>Ep(e)},table_getPreFilteredRowModel:{fn:()=>Dp(e)},table_getFilteredRowModel:{fn:()=>Op(e)},table_getPreGroupedRowModel:{fn:()=>kp(e)},table_getGroupedRowModel:{fn:()=>Ap(e)},table_getPreSortedRowModel:{fn:()=>jp(e)},table_getSortedRowModel:{fn:()=>Mp(e)},table_getPreExpandedRowModel:{fn:()=>Np(e)},table_getExpandedRowModel:{fn:()=>Pp(e)},table_getPrePaginatedRowModel:{fn:()=>Fp(e)},table_getPaginatedRowModel:{fn:()=>Ip(e)},table_getRowModel:{fn:()=>Lp(e)}})}};function zp(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 qp(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e{xf(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>Vp(e)},row_getAllCellsByColumnId:{fn:e=>Zp(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>Xp(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>Kp(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>Jp(e)},row_getParentRows:{fn:e=>Yp(e)},row_getUniqueValues:{fn:(e,t)=>Wp(e,t)},row_getValue:{fn:(e,t)=>Up(e,t)},row_renderValue:{fn:(e,t)=>Gp(e,t)}})},constructTableAPIs:e=>{bf(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>Hp(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)=>$p(e,t,n)},table_getMaxSubRowDepth:{fn:()=>qp(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function tm(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 nm(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{tm(e,t,n),e._reactivity.commit?.()})}function rm(e){let t=of(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;rr):e.options=r,n?.syncExternalState!==!1&&nm(e,r.state??null)}var om={coreCellsFeature:Ef,coreColumnsFeature:$f,coreHeadersFeature:sp,coreRowModelsFeature:Rp,coreRowsFeature:em,coreTablesFeature:{constructTableAPIs:e=>{bf(`coreTablesFeature`,e,{table_reset:{fn:()=>rm(e)},table_setOptions:{fn:t=>am(e,t)}})}}};function sm(){return{accessor:(e,t)=>typeof e==`function`?{...t,accessorFn:e}:{...t,accessorKey:e},columns:e=>e,display:e=>e,group:e=>e}}function cm(e){return e}function lm(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=um(e);if(n.length!==um(t).length)return!1;for(let r=0;r{t=e.getInitialState?.(t)??t}),of(t)}function fm(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:{...om,..._},_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=dm(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&&cf(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}tm(v),v.store=ef(t.createReadonlyAtom(()=>{let e={};for(let t=0;t`u`?s.useEffect:s.useLayoutEffect;function mm(e,t){let[{table:n,rootSource:r}]=(0,s.useState)(()=>{let t=fm({...e,features:{coreReactivityFeature:rf(),...e.features}});return t.Subscribe=(e=>$d({...e,source:e.source??t.store})),t.FlexRender=Ed,{table:t,rootSource:nf(t.store,Gd)}}),i=n;am(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),c=Qd(r,t,{compare:Gd});return pm(()=>{r.markCommitted(o),nm(i,a??null,Gd)}),(0,s.useMemo)(()=>({...n,options:e,state:c}),[n,e,c])}var hm=cm({});function gm(e){return typeof e==`number`?`${e}px`:e}function _m(e){return e instanceof Element&&!!e.closest(`button, a, input, select, textarea, [role='button']`)}function vm({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)(()=>sm(),[]),m=mm({features:hm,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:gm(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:gm(r?.width),minWidth:gm(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&&!_m(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 ym=Object.defineProperty,bm=(e,t)=>ym(e,`name`,{value:t,configurable:!0});function xm(e,[t,n]){return Math.min(n,Math.max(t,e))}bm(xm,`clamp`);var Sm=Object.defineProperty,Cm=(e,t)=>Sm(e,`name`,{value:t,configurable:!0});function wm(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])}Cm(wm,`usePrevious`);var Tm=Object.defineProperty,Em=(e,t)=>Tm(e,`name`,{value:t,configurable:!0}),Dm=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`}),Om=s.forwardRef(Em(function(e,t){return(0,G.jsx)(Tn.span,{...e,ref:t,style:{...Dm,...e.style}})},`VisuallyHidden`)),km=Object.defineProperty,Am=(e,t)=>km(e,`name`,{value:t,configurable:!0}),jm=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Mm=[` `,`Enter`],Nm=`Select`,[Pm,Fm,Im]=ja(Nm),[Lm,Rm]=zt(Nm,[Im,pc]),zm=pc(),[Bm,Vm]=Lm(Nm),[Hm,Um]=Lm(Nm);function Wm(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,_=zm(t),[v,y]=s.useState(null),[b,x]=s.useState(null),[S,C]=s.useState(!1),w=Ga(u),[T,E]=tn({prop:r,defaultProp:i??!1,onChange:a,caller:Nm}),[D,O]=tn({prop:o,defaultProp:c,onChange:l,caller:Nm}),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=Am(()=>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)(kc,{..._,children:(0,G.jsx)(Bm,{scope:t,...R,children:(0,G.jsx)(Pm.Provider,{scope:t,children:(0,G.jsx)(Hm,{scope:t,onNativeOptionAdd:I,onNativeOptionRemove:L,children:jh(g)?g(R):n})})})})}Am(Wm,`SelectProvider`);var Gm=Am(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,G.jsx)(Wm,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,G.jsxs)(G.Fragment,{children:[n,e?(0,G.jsx)(Ah,{__scopeSelect:t}):null]})})},`Select`),Km=`SelectTrigger`,qm=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,disabled:r=!1,...i}=e,a=zm(n),o=Vm(Km,n),c=o.disabled||r,l=Ft(t,o.onTriggerChange),u=Fm(n),d=s.useRef(`touch`),[f,p,m]=Nh(e=>{let t=u().filter(e=>!e.disabled),n=Ph(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=Am(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)(Ac,{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":Mh(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===` `)&&jm.includes(e.key)&&(h(),e.preventDefault())})})})},`SelectTrigger`)),Jm=`SelectValue`,Ym=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=Vm(Jm,n),{onValueNodeHasChildrenChange:u}=l,d=a!==void 0,f=Ft(t,l.onValueNodeChange);Vt(()=>{u(d)},[u,d]);let p=Mh(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`)),Xm=s.forwardRef(Am(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`)),[Zm,Qm]=Lm(`SelectPortal`,{forceMount:void 0}),$m=Am(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,G.jsx)(Zm,{scope:e.__scopeSelect,forceMount:n,children:(0,G.jsx)(cr,{asChild:!0,...r})})},`SelectPortal`),eh=`SelectContent`,th=s.forwardRef(Am(function(e,t){let n=Qm(eh,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=Vm(eh,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)(sh,{...i,ref:t}):(0,G.jsx)(nh,{...i,fragment:o})})},`SelectContent`)),nh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?sn.createPortal((0,G.jsx)(ih,{scope:n,children:(0,G.jsx)(Pm.Slot,{scope:n,children:(0,G.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),rh=10,[ih,ah]=Lm(eh),oh=un(`SelectContent.RemoveScroll`),sh=s.forwardRef(Am(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=Vm(eh,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=Fm(n),[A,j]=s.useState(!1),M=s.useRef(!1);s.useEffect(()=>{if(b)return Ui(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=Am(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=Am(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=Am(()=>F(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[F]);let[L,R]=Nh(e=>{let t=k().filter(e=>!e.disabled),n=Ph(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`?lh:ch,ee=H===lh?{side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_}:{};return(0,G.jsx)(ih,{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)(Pi,{as:oh,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`)),ch=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,onPlaced:r,...i}=e,a=Vm(eh,n),o=ah(eh,n),[c,l]=s.useState(null),[u,d]=s.useState(null),f=Ft(t,d),p=Fm(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-rh,d=xm(a,[rh,Math.max(rh,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-rh,d=xm(a,[rh,Math.max(rh,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=p(),s=window.innerHeight-rh*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-rh,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=`${rh}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)(uh,{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`)),lh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=rh,...a}=e,o=zm(n);return(0,G.jsx)(jc,{...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`)),[uh,dh]=Lm(eh,{}),fh=`SelectViewport`,ph=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,nonce:r,...i}=e,a=ah(fh,n),o=dh(fh,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)(Pm.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-rh*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`)),[mh,hh]=Lm(`SelectGroup`),gh=`SelectItem`,[_h,vh]=Lm(gh),yh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,c=Vm(gh,n),l=ah(gh,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=Am(()=>{i||(c.onValueChange(r),c.onOpenChange(!1))},`handleSelect`);return(0,G.jsx)(_h,{scope:n,value:r,disabled:i,textId:g,isSelected:u,onItemTextChange:s.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,G.jsx)(Pm.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!==` `)&&(Mm.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),bh=`SelectItemText`,xh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,className:r,style:i,...a}=e,o=Vm(bh,n),c=ah(bh,n),l=vh(bh,n),u=Um(bh,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&&!Mh(o.value)?sn.createPortal(a.children,o.valueNode):null]})},`SelectItemText`)),Sh=`SelectItemIndicator`,Ch=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,...r}=e;return vh(Sh,n).isSelected?(0,G.jsx)(Tn.span,{"aria-hidden":!0,...r,ref:t}):null},`SelectItemIndicator`)),wh=`SelectScrollUpButton`,Th=s.forwardRef(Am(function(e,t){let n=ah(wh,e.__scopeSelect),r=dh(wh,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)};Am(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,G.jsx)(Oh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),Eh=`SelectScrollDownButton`,Dh=s.forwardRef(Am(function(e,t){let n=ah(Eh,e.__scopeSelect),r=dh(Eh,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)(Oh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),Oh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=ah(`SelectScrollButton`,n),o=s.useRef(null),c=Fm(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`)),kh=`SelectBubbleInput`,Ah=s.forwardRef(Am(function({__scopeSelect:e,...t},n){let r=Vm(kh,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??``,_=wm(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:{...Dm,...t.style},ref:h,defaultValue:g,children:[Mh(i)&&!v?(0,G.jsx)(`option`,{value:``}):null,Array.from(f)]},p)},`SelectBubbleInput`));function jh(e){return typeof e==`function`}Am(jh,`isFunction`);function Mh(e){return e===``||e===void 0}Am(Mh,`shouldShowPlaceholder`);function Nh(e){let t=kn(e),n=s.useRef(``),r=s.useRef(0),i=s.useCallback(e=>{let i=n.current+e;t(i),Am((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]}Am(Nh,`useTypeaheadSearch`);function Ph(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=Fh(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}Am(Ph,`findNextItem`);function Fh(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Am(Fh,`wrapArray`);function Ih({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)(Gm,{value:n||void 0,open:l,disabled:a,onOpenChange:u,onValueChange:e=>{u(!1),c(e)},children:[(0,G.jsxs)(qm,{id:e,className:`studio-select-trigger${o?` ${o}`:``}`,"aria-label":t,title:d?.label||r,children:[(0,G.jsx)(Ym,{placeholder:r,children:d?.label}),(0,G.jsx)(Xm,{className:`studio-select-chevron`,children:(0,G.jsx)(H,{size:15})})]}),(0,G.jsx)($m,{children:(0,G.jsxs)(th,{className:`studio-select-content`,position:`popper`,sideOffset:5,collisionPadding:10,children:[(0,G.jsx)(Th,{className:`studio-select-scroll`,children:(0,G.jsx)(ne,{size:14})}),(0,G.jsx)(ph,{className:`studio-select-viewport`,children:i.map(e=>(0,G.jsxs)(yh,{value:e.value,disabled:e.disabled,className:`studio-select-item`,children:[(0,G.jsx)(xh,{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)(Ch,{className:`studio-select-check`,children:(0,G.jsx)(V,{size:14})})]},e.value))}),(0,G.jsx)(Dh,{className:`studio-select-scroll`,children:(0,G.jsx)(H,{size:14})})]})})]})}function Lh(e){return e.spec?.runtime?.type===`codex`}function Rh({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:Lh(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)(vd,{label:`${e.metadata.name} 的更多操作`,items:[{label:`配置`,onSelect:()=>a(e.metadata.id)},{label:Lh(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)(xd,{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)(Ih,{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)(vm,{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)(Oa,{title:`确认删除 Agent「${y.metadata.name}」?`,description:`Agent ID:${y.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:x,onConfirm:D,onCancel:()=>b(null)})]})}var zh=e=>e.type===`checkbox`,Bh=e=>e.type===`file`,Vh=e=>e instanceof Date,Hh=e=>e==null,Uh=e=>typeof e==`object`,Wh=e=>!Hh(e)&&!Array.isArray(e)&&Uh(e)&&!Vh(e),Gh=e=>Wh(e)&&e.target?zh(e.target)?e.target.checked:Bh(e.target)?e.target.files:e.target.value:e,Kh=/[.[\]'"]/,qh=e=>e.split(Kh).filter(Boolean),Jh=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),Yh=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function Xh(e){if(typeof e!=`object`||!e)return e;if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(Yh&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&e.constructor!==Object)return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=Xh(e[t]));return r}var Zh={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},Qh={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},$h={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},eg=`root`,tg=[`__proto__`,`constructor`,`prototype`],ng=/^\w*$/,rg=e=>ng.test(e),ig=e=>e===void 0,q=(e,t,n)=>{if(!t||!Wh(e))return n;let r=rg(t)?[t]:qh(t);if(r.some(e=>tg.includes(e)))return n;let i=r.reduce((e,t)=>Hh(e)?void 0:e[t],e);return ig(i)||i===e?ig(e[t])?n:e[t]:i},ag=e=>typeof e==`boolean`,og=e=>typeof e==`function`,sg=(e,t,n)=>{let r=-1,i=rg(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]!==Qh.all&&(t._proxyFormState[i]=!r||Qh.all),n&&(n[i]=!0),e[i]}});return i},ug=Yh?s.useLayoutEffect:s.useEffect,dg=e=>{let t=e.constructor&&e.constructor.prototype;return Wh(t)&&t.hasOwnProperty(`isPrototypeOf`)},fg=e=>Hh(e)||!Uh(e),pg=(e,t)=>t.length===0&&!Array.isArray(e)&&!dg(e);function mg(e,t,n=new WeakMap){if(e===t)return!0;if(fg(e)||fg(t))return Object.is(e,t);if(Vh(e)&&Vh(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(pg(e,r)||pg(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(Vh(r)&&Vh(e)||(Wh(r)||Array.isArray(r))&&(Wh(e)||Array.isArray(e))?!mg(r,e,n):!Object.is(r,e))return!1}}return!0}function hg(e){let t=s.useRef(!1),n=s.useRef(!1),r=s.useRef(void 0),i=s.useRef(0);return i.current++,!n.current&&e&&(n.current=!0,r.current=Xh(e())),{resyncIfNeeded:s.useCallback((e,a,o)=>{if(e&&(t.current||n.current&&i.current>1)){let e=a();mg(r.current,e)||o(e)}t.current=!0},[]),snapshot:s.useCallback((e,t)=>{e&&(r.current=Xh(t()))},[])}}var gg=e=>typeof e==`string`,_g=(e,t,n,r,i)=>gg(e)?(r&&t.watch.add(e),q(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),q(n,e,q(i,e)))):(r&&(t.watchAll=!0),n),vg=e=>({isOnSubmit:!e||e===Qh.onSubmit,isOnBlur:e===Qh.onBlur,isOnChange:e===Qh.onChange,isOnAll:e===Qh.all,isOnTouch:e===Qh.onTouched}),yg=(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},bg=(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(bg(a,t))break}else if((Wh(a)||Array.isArray(a))&&bg(a,t))break}}},xg=(e,t,n)=>{let r=q(e,n),i=Array.isArray(r)?r:[];return sg(i,eg,t[n]),sg(e,n,i),e},Sg=e=>Wh(e)&&!Object.keys(e).length,Cg=e=>{if(!Yh)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},wg=e=>e.type===`radio`,Tg=e=>e instanceof RegExp,Eg=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},Dg={value:!1,isValid:!1},Og={value:!0,isValid:!0},kg=e=>{if(!Array.isArray(e))return Dg;if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}let t=e[0];return!t||!t.checked||t.disabled?Dg:!t.attributes||!(`value`in t.attributes)||ig(t.value)||t.value===``?Og:{value:t.value,isValid:!0}},Ag={isValid:!1,value:null},jg=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Ag):Ag;function Mg(e,t,n=`validate`){if(gg(e)||Array.isArray(e)&&e.every(gg)||ag(e)&&!e)return{type:n,message:gg(e)?e:``,ref:t}}var Ng=e=>Wh(e)&&!Tg(e)?e:{value:e,message:``},Pg=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=wg(o),C=zh(o),w=S||C,T=(g||Bh(o))&&ig(o.value)&&ig(v)||Cg(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,E=Eg.bind(null,h,r,x),D=(e,t,n,r=$h.maxLength,i=$h.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||Hh(v))||ag(v)&&!v||C&&!kg(s).isValid||S&&!jg(s).isValid)){let{value:e,message:t}=gg(c)?{value:!!c,message:c}:Ng(c);if(e&&(x[h]={type:$h.required,message:t,ref:y,...E($h.required,t)},!r))return b(t),x}if(!T&&(!Hh(d)||!Hh(f))){let e,t,n=Ng(f),i=Ng(d);if(!Hh(v)&&!Vh(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;Hh(n.value)||(e=r>n.value),Hh(i.value)||(t=rnew Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;gg(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),gg(i.value)&&v&&(t=s?a(v)+e.value,i=!Hh(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&&gg(v)){let{value:e,message:t}=Ng(p);if(Tg(e)&&!v.match(e)&&(x[h]={type:$h.pattern,message:t,ref:o,...E($h.pattern,t)},!r))return b(t),x}if(m){if(og(m)){let e=Mg(await m(v,n),y);if(e&&(x[h]={...e,...E($h.validate,e.message)},!r))return b(e.message),x}else if(Wh(m)){let e={};for(let t in m){if(!Sg(e)&&!r)break;let i=Mg(await m[t](v,n),y,t);i&&(e={...i,...E(t,i.message)},b(i.message),r&&(x[h]=e))}if(!Sg(e)&&(x[h]={ref:y,...e},!r))return x}}let O=x[h];return b(!O||O.message),x},Fg=e=>Array.isArray(e)?e:[e],Ig=e=>Array.isArray(e)?e.filter(Boolean):[];function Lg(e,t){let n=t.length-1,r=0;for(;rtg.includes(String(e))))return e;let r=n.length===1?e:Lg(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(Wh(r)&&Sg(r)||Array.isArray(r)&&Rg(r))&&zg(e,n.slice(0,-1)),e}var Bg=s.createContext(null);Bg.displayName=`HookFormContext`;var Vg=({children:e,watch:t,getValues:n,getErrors:r,getFieldState:i,setError:a,clearErrors:o,setValue:c,setValues:l,trigger:u,formState:d,resetField:f,reset:p,resetDefaultValues:m,handleSubmit:h,unregister:g,control:_,register:v,setFocus:y,subscribe:b})=>{let x=s.useMemo(()=>({watch:t,getValues:n,getErrors:r,getFieldState:i,setError:a,clearErrors:o,setValue:c,setValues:l,trigger:u,formState:d,resetField:f,reset:p,resetDefaultValues:m,handleSubmit:h,unregister:g,control:_,register:v,setFocus:y,subscribe:b}),[o,_,d,r,i,n,h,v,p,m,f,a,y,c,l,b,u,g,t]);return s.createElement(Bg.Provider,{value:x},s.createElement(cg.Provider,{value:x.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&&Wh(i)&&a){let e=Ug(i,a);Wh(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Wg=(e,t)=>e!==null&&Uh(e)&&Object.prototype.hasOwnProperty.call(e,t),Gg=(e,t)=>{if(!t)return!1;let n=e;for(let r of rg(t)?[t]:qh(t)){if(!Wg(n,r))return Wg(e,t);n=n[r]}return!0},Kg=e=>e.type===`select-multiple`,qg=e=>wg(e)||zh(e),Jg=e=>Cg(e)&&e.isConnected;function Yg(e){return Array.isArray(e)||Wh(e)}function Xg(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];Yg(o)&&Yg(q(t,a))?Xg(o,t,a,r):r.push(a)}return r}var Zg=e=>{for(let t in e)if(og(e[t]))return!0;return!1};function Qg(e){return Array.isArray(e)||Wh(e)&&!Zg(e)}function $g(e){return!!(e&&`_f`in e)}function e_(e){return Array.isArray(e)?!e.some(e=>!ig(e)):!Object.keys(e).length}function t_(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function n_(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];Qg(i)&&(!Array.isArray(i)||!$g(a))?(t[r]=Array.isArray(i)?[]:{},n_(i,t[r],a),e_(t[r])&&t_(t,r)):ig(i)||(t[r]=!0)}return t}function r_(e,t,n,r){n||=n_(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];Qg(a)&&(!Array.isArray(a)||!$g(o))?(ig(t)||fg(n[i])?n[i]=n_(a,Array.isArray(a)?[]:{},o):r_(a,Hh(t)?{}:t[i],n[i],o),e_(n[i])&&t_(n,i)):mg(a,t[i])?t_(n,i):n[i]=!0}return n}var i_=(e,t)=>{let n=t.split(`.`),r=[],i=n[0];for(let t=1;tig(e)?e:t?e===``?NaN:e&&+e:n&&gg(e)?new Date(e):r?r(e):e;function o_(e){let t=e.ref;return Bh(t)?t.files:wg(t)?jg(e.refs).value:Kg(t)?[...t.selectedOptions].map(({value:e})=>e):zh(t)?kg(e.refs).value:a_(t.value,e)}var s_=(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}},c_=e=>ig(e)?e:Tg(e)?e.source:Wh(e)?Tg(e.value)?e.value.source:e.value:e,l_=`AsyncFunction`,u_=e=>{if(!e||!e.validate)return!1;if(og(e.validate))return e.validate.constructor.name===l_;if(Wh(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===l_)return!0}return!1},d_=e=>e.mount&&(e.required||!ig(e.required)&&e.required!==!1||!ig(e.min)||!ig(e.max)||!ig(e.maxLength)||!ig(e.minLength)||e.pattern||e.validate);function f_(e,t,n){let r=q(e,n);if(r||rg(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 p_=(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||Qh.all))},m_=(e,t,n)=>!e||!t||e===t||Fg(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),h_=(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,g_=(e,t)=>{let n=q(e,t);!Ig(n).length&&!(n!=null&&n.root)&&zg(e,t)},__={mode:Qh.onSubmit,reValidateMode:Qh.onChange,shouldFocusError:!0},v_=`form`,y_=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},b_={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function x_(e={}){let t={...__,...e},n={...Xh(b_),isLoading:og(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(Wh(t.defaultValues)||Wh(t.values))&&Xh(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:Xh(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=vg(t.mode),f=vg(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===Qh.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=Sg((await j()).errors),e===_&&x()):i=await P({fields:r,onlyCheckValid:!0,eventType:Zh.VALID}),e===_&&i!==n.isValid&&g.state.next({isValid:i})}},x=(e,r)=>{!t.disabled&&(m.isValidating||m.validatingFields||h.isValidating||h.validatingFields)&&((e||s.mount).forEach(e=>{e&&(r?sg(n.validatingFields,e,r):zg(n.validatingFields,e))}),g.state.next({validatingFields:n.validatingFields,isValidating:!Sg(n.validatingFields)}))},S=()=>{n.dirtyFields=r_(i,a,void 0,r)},C=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){o.action=!0;let t=q(r,e);if(o.actionArrayLengths.has(e)||o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0),u&&Array.isArray(t)){let n=s(t,c.argA,c.argB);l&&sg(r,e,n)}let a=q(n.errors,e);if(u&&Array.isArray(a)){let t=a.root,r=s(a,c.argA,c.argB)||a;t&&(r.root=t),l&&sg(n.errors,e,r),g_(n.errors,e)}let d=q(n.touchedFields,e);if((m.touchedFields||h.touchedFields)&&u&&Array.isArray(d)){let t=s(d,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=rg(e)?[e]:qh(e),n=a,r=i;for(let e=0;e{if(!o.actionArrayLengths.size)return!1;let t=rg(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=q(r,t);if(d){if(E(t)||D(t))return;let r=ig(q(a,t)),f=q(a,t,ig(l)?q(i,t):l);ig(f)||u&&u.defaultChecked||c?sg(a,t,c?f:o_(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&&!ig(q(a,t))&&yg(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=mg(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?zg(n.dirtyFields,e):sg(n.dirtyFields,e,!0):y_(n.dirtyFields,r_(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):zg(n.errors,e),n.errors={...n.errors}),(i?!mg(o,i):o)||!Sg(a)||s){let t={...a,...s&&ag(r)?{isValid:r}:{},errors:n.errors,name:e};g.state.next(t)}},j=async e=>(x(e,!0),await t.resolver(a,t.context,s_(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)&&Wh(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?xg(n.errors,{[r]:e},r):sg(n.errors,r,e):zg(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(Wh(i))for(let e in i){let t=i[e];t&&se(`${v_}.${e}`,{message:gg(t.message)?t.message:``,type:t.type||$h.validate})}else gg(i)||!i?se(v_,{message:i||``,type:$h.validate}):oe(v_);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&&u_(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&x([r.name],!0);let f=await Pg(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?xg(n.errors,f,r.name):sg(n.errors,r.name,f[r.name]):zg(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!Sg(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=>!Jg(e)):!Jg(t._f.ref))&&de(e)}s.unMount=new Set},I=(e,t)=>(e&&t&&sg(a,e,t),!mg(o.mount?a:i,i)),L=(e,t,n)=>_g(e,s,{...o.mount?a:ig(t)||gg(e)?i:t},n,t),R=e=>Ig(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,a_(t,n)),l=Cg(n.ref)&&Hh(t)?``:t,Kg(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?zh(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):Bh(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:Xh(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:Xh(a)});for(let a in t){if(!t.hasOwnProperty(a))continue;let l=t[a],u=e+`.`+a,d=q(r,u);(s.array.has(e)||Wh(l)||d&&!d._f)&&!Vh(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:Xh(t),p=mg(q(a,e),f);if(p||sg(a,e,f),d)g.array.next({name:e,values:c?a:Xh(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||Sg(f),n=!p&&!l;!u||u._f||Hh(f)||t?z(e,f,i,c,l,n):B(e,f,i,c,l,n)}if(!p&&!l){let t=yg(e,s),r=c?a:Xh(a);if(g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r}),!d)for(let t of i_(s.array,e))g.state.next({name:t,values:r})}},H=(e,t,n={})=>V(e,t,n,!1),ee=(e,t={})=>{let r=og(e)?e(a):e;if(!mg(a,r)){a={...a,...r};for(let e of s.mount)Gg(r,e)&&V(e,q(r,e),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)||Vh(e)&&isNaN(e.getTime())||mg(e,q(a,p,e))};if(y){let o,C,w=l.type?o_(y._f):Gh(i),T=i.type===Zh.BLUR||i.type===Zh.FOCUS_OUT,E=!d_(y._f)&&!e.validate&&!t.resolver&&!q(n.errors,p)&&!y._f.deps,D=E||h_(T,q(n.touchedFields,p),n.isSubmitted,f,d),O=yg(p,s,T);if(sg(a,p,Xh(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=!Sg(M)||O;if(!T&&g.state.next({name:p,type:i.type,...u?{values:Xh(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),!_){!Sg(M)&&g.state.next(M);return}let t=f_(n.errors,r,p),i=f_(e,r,t.name||p);o=i.error,p=i.name,C=Sg(e)}else x([p],!0),o=(await Pg(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=Fg(e);if(t.resolver){let t=await M(ig(e)?e:u);a=Sg(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:Zh.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&b()):o=a=await P({fields:r,name:e,eventType:Zh.TRIGGER});if(i.delayError&&t.delayError&&gg(e)){let r=q(n.errors,e);r?(zg(n.errors,e),c[e]=y(e,()=>w(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}if(i.shouldTouch)for(let t of e?u:s.mount)!s.array.has(t)&&sg(n.touchedFields,t,!0);return g.state.next({...!gg(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},...i.shouldTouch&&(m.touchedFields||h.touchedFields)?{touchedFields:n.touchedFields}:{},errors:n.errors}),i.shouldFocus&&!o&&bg(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)),ig(e)?r:gg(e)?q(r,e):e.map(e=>q(r,e))},ie=e=>ig(e)?{...n.errors}:gg(e)?q(n.errors,e):e.map(e=>q(n.errors,e)),ae=(e,t)=>{let r=t||n,i=q(r.errors,e);return{invalid:!!i,isDirty:!!q(r.dirtyFields,e),error:i,isValidating:!!q(n.validatingFields,e),isTouched:!!q(r.touchedFields,e)}},oe=e=>{let t=e?Fg(e):void 0;t?.forEach(e=>zg(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},se=(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()},ce=(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)},le=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(m_(e.name,t.name,e.exact)&&p_(t,e.formState||m,be,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())}},ue=e=>(o.mount=!0,h={...h,...e.formState},le({...e,formState:{...p,...e.formState}})),de=(e,o={})=>{for(let c of e?Fg(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(zg(r,c),zg(a,c)),!o.keepError&&zg(n.errors,c),!o.keepDirty&&zg(n.dirtyFields,c),!o.keepTouched&&zg(n.touchedFields,c),!o.keepIsValidating&&zg(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&zg(i,c);u&&g.state.next({values:Xh(a)}),g.state.next({...n,...o.keepDirty?{}:{isDirty:I()}}),!o.keepIsValid&&b()},W=({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()}},fe=(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?W({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:c_(n.min),max:c_(n.max),minLength:c_(n.minLength),maxLength:c_(n.maxLength),pattern:c_(n.pattern)}:{},name:e,onChange:te,onBlur:te,ref:c=>{if(c){s.registerName.add(e),fe(e,n),s.registerName.delete(e),a=q(r,e);let t=ig(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=qg(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(Jg),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)&&!(Jh(s.array,e)&&o.action)&&s.unMount.add(e)}}},pe=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&bg(r,ne,s.mount),me=e=>{ag(e)&&(g.state.next({disabled:e}),bg(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))},he=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=Xh(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await j();x(),n.errors=e,u=Xh(t)}else await P({fields:r,eventType:Zh.SUBMIT});if(s.disabled.size)for(let e of s.disabled)zg(u,e);if(zg(n.errors,eg),Sg(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),pe(),setTimeout(pe);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Sg(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},ge=(e,t={})=>{q(r,e)&&(ig(t.defaultValue)?H(e,Xh(q(i,e))):(H(e,t.defaultValue),sg(i,e,Xh(t.defaultValue))),t.keepTouched||zg(n.touchedFields,e),t.keepDirty||(zg(n.dirtyFields,e),n.isDirty=t.defaultValue?I(e,Xh(q(i,e))):I()),t.keepError||(zg(n.errors,e),b()),g.state.next({...n}))},_e=(e,c={})=>{let l=e?Xh(e):i,u=Xh(l),d=Sg(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Xg(r_(i,a,void 0,p),n.dirtyFields)]);for(let t of e){let e=q(n.dirtyFields,t),r=q(a,t),i=q(f,t);e&&!ig(r)?sg(f,t,r):!e&&!ig(i)&&H(t,i)}}else{if(Yh&&ig(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(Cg(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?Xh(i):{},c.keepFieldsRef)for(let e of s.mount)sg(a,e,q(f,e))}else a=Xh(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&&!Sg(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&&!mg(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?r_(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?r_(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})},ve=(e,n)=>_e(og(e)?e(a):e,{...t.resetOptions,...n}),ye=(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()})}},be=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:be});let xe={control:{register:fe,unregister:de,getFieldState:ae,handleSubmit:he,setError:se,_subscribe:le,_runSchema:j,_updateIsValidating:x,_focusError:pe,_getWatch:L,_getDirty:I,_setValid:b,_setFieldArray:C,_setDisabledField:W,_setErrors:T,_getFieldArray:R,_reset:_e,_resetDefaultValues:()=>og(t.defaultValues)&&t.defaultValues().then(e=>{ve(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:F,_disableForm:me,_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=vg(t.mode),f=vg(t.reValidateMode)}},subscribe:ue,trigger:U,register:fe,handleSubmit:he,watch:ce,setValue:H,setValues:ee,getValues:re,getErrors:ie,reset:ve,resetField:ge,resetDefaultValues:(e,t={})=>{if(i=Xh(e),!t.keepDirty){let e=r_(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!Sg(e)}t.keepIsValid||b(),g.state.next({...n,defaultValues:i})},clearErrors:oe,unregister:de,setError:se,setFocus:ye,getFieldState:ae};return{...xe,formControl:xe}}function S_(e={}){let t=s.useRef(void 0),n=s.useRef(void 0),r=s.useRef(e.formControl),[i,a]=s.useState(()=>({...Xh(b_),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}=x_(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:c,snapshot:l}=hg();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&&!mg(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 C_=(e,t,n)=>{if(e&&`reportValidity`in e){let r=q(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},w_=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?C_(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>C_(t,n,e))}},T_=(e,t)=>{t.shouldUseNativeValidation&&w_(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(E_(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},E_=(e,t)=>{let n=D_(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>D_(e).match(`^${n}\\.\\d+`))};function D_(e){return e.replace(/\[(\d+)]/g,`.$1`).replace(/[[\]]/g,``)}function O_(){return O_=Object.assign?Object.assign.bind():function(e){for(var t=1;t0){var s=r.errors.reduce(function(e,t){return t.lengthe([...N_]))}function J(e,t=``,n=`success`){let r=`${n}:${e}:${t}`;if(N_.some(e=>e.toastKey===r))return;let i={key:++P_,toastKey:r,title:e,message:t,type:n};N_=[...N_,i],I_(),window.setTimeout(()=>{N_=N_.filter(e=>e.key!==i.key),I_()},n===`error`?7e3:3600)}function L_(){let[e,t]=(0,s.useState)(N_);return(0,s.useEffect)(()=>{let e=e=>t(e);return F_.add(e),()=>{F_.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 R_=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})),z_=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}})),B_=n(((e,t)=>{var n=z_(),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})),V_=n(((e,t)=>{var n=R_(),r=B_(),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})),H_=t(n(((e,t)=>{t.exports=V_()}))(),1);function U_(e,t,n,r,i,a){a===void 0&&(a=0);var o=rv(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 W_(e){return e.width>e.height?e.width/e.naturalWidth:e.height/e.naturalHeight}function G_(e,t,n,r,i){i===void 0&&(i=0);var a=rv(t.width,t.height,i),o=a.width,s=a.height;return{x:K_(e.x,o,n.width,r),y:K_(e.y,s,n.height,r)}}function K_(e,t,n,r){var i=Math.abs(t*r/2-n/2);return iv(e,-i,i)}function q_(e,t){return Math.sqrt((e.y-t.y)**2+(e.x-t.x)**2)}function J_(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function Y_(e,t,n,r,i,a,o){a===void 0&&(a=0),o===void 0&&(o=!0);var s=o?X_:Z_,c=rv(t.width,t.height,a),l=rv(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 X_(e,t){return Math.min(e,Math.max(0,t))}function Z_(e,t){return t}function Q_(e,t,n,r,i,a){var o=rv(t.width,t.height,n),s=iv(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 $_(e,t,n){var r=W_(t);return n.height>n.width?n.height/(e.height*r):n.width/(e.width*r)}function ev(e,t,n,r,i,a){n===void 0&&(n=0);var o=rv(t.naturalWidth,t.naturalHeight,n),s=iv($_(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 tv(e,t){return{x:(t.x+e.x)/2,y:(t.y+e.y)/2}}function nv(e){return e*Math.PI/180}function rv(e,t,n){var r=nv(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 iv(e,t,n){return Math.min(Math.max(e,t),n)}function av(){return[...arguments].filter(function(e){return typeof e==`string`&&e.length>0}).join(` `).trim()}var ov=`.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; +} +`,sv=1,cv=3,lv=1,uv=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=Q_(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=ev(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:U_(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?G_(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,H_.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=iv(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?G_(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?Y_(n.props.restrictPosition?G_(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?G_(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=G_(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=ov,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 gv({name:e,appearance:t,disabled:n=!1,onSave:r}){let[i,a]=(0,s.useState)(()=>pv(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(pv(t)),[t]),(0,s.useEffect)(()=>()=>{o&&URL.revokeObjectURL(o)},[o]);let C=pv(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 hv(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:dv.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:fv.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)(Ea,{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)(uv,{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 _v=Object.defineProperty,vv=s.forwardRef(((e,t)=>_v(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`)),yv=Object.defineProperty,bv=(e,t)=>yv(e,`name`,{value:t,configurable:!0}),[xv,Sv]=zt(`Tooltip`,[pc]),Cv=pc(),wv=`TooltipProvider`,Tv=700,Ev=`tooltip.open`,[Dv,Ov]=xv(wv),kv=bv(e=>{let{__scopeTooltip:t,delayDuration:n=Tv,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)(Dv,{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`),Av=`Tooltip`,[jv,Mv]=xv(Av),Nv=bv(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:c}=e,l=Ov(Av,e.__scopeTooltip),u=Cv(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:bv(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(Ev))):l.onClose(),a?.(e)},`onChange`),caller:Av}),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)(kc,{...u,children:(0,G.jsx)(jv,{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`),Pv=`TooltipTrigger`,Fv=s.forwardRef(bv(function(e,t){let{__scopeTooltip:n,...r}=e,i=Mv(Pv,n),a=Ov(Pv,n),o=Cv(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)(Ac,{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`)),Iv=`TooltipPortal`,[Lv,Rv]=xv(Iv,{forceMount:void 0}),zv=bv(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=Mv(Iv,t);return(0,G.jsx)(Lv,{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`),Bv=`TooltipContent`,Vv=s.forwardRef(bv(function(e,t){let n=Rv(Bv,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=Mv(Bv,e.__scopeTooltip);return(0,G.jsx)(fr,{present:r||o.open,children:o.disableHoverableContent?(0,G.jsx)(Wv,{side:i,...a,ref:t}):(0,G.jsx)(Hv,{side:i,...a,ref:t})})},`TooltipContent`)),Hv=s.forwardRef(bv(function(e,t){let n=Mv(Bv,e.__scopeTooltip),r=Ov(Bv,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=qv(r,Kv(r,n.getBoundingClientRect())),a=Jv(t.getBoundingClientRect()),o=Xv([...i,...a]);c(o),f(!0)},[f]);return s.useEffect(()=>()=>p(),[p]),s.useEffect(()=>{if(l&&d){let e=bv(e=>m(e,d),`handleTriggerLeave`),t=bv(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=bv(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=l?.contains(t)||d?.contains(t),i=!Yv(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)(Wv,{...e,ref:a})},`TooltipContentHoverable`)),Uv=fn(`TooltipContent`),Wv=s.forwardRef(bv(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":i,id:a,onEscapeKeyDown:o,onPointerDownOutside:c,...l}=e,u=Mv(Bv,n),d=Cv(n),{onClose:f}=u;s.useEffect(()=>(document.addEventListener(Ev,f),()=>document.removeEventListener(Ev,f)),[f]),s.useEffect(()=>{if(u.trigger){let e=bv(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)(jc,{"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)(Uv,{children:r}),i?(0,G.jsx)(Om,{id:u.contentId,role:`tooltip`,children:i}):null]})})},`TooltipContentImpl`)),Gv=s.forwardRef(bv(function(e,t){let{__scopeTooltip:n,...r}=e,i=Cv(n);return(0,G.jsx)(Mc,{...i,...r,ref:t})},`TooltipArrow`));function Kv(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`)}}bv(Kv,`getExitSideFromRect`);function qv(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}bv(qv,`getPaddedExitPoints`);function Jv(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}]}bv(Jv,`getPointsFromRect`);function Yv(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}bv(Yv,`isPointInPolygon`);function Xv(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Zv(t)}bv(Xv,`getHull`);function Zv(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)}bv(Zv,`getHullPresorted`);var Qv=kv,$v=Nv,ey=Fv,ty=zv,ny=Vv,ry=Gv,iy={required:`*`,optional:``,generated:`自动生成`};function ay({children:e,htmlFor:t,requirement:n,hint:r}){return(0,G.jsxs)(`div`,{className:`studio-field-label-row`,children:[(0,G.jsxs)(vv,{className:`studio-field-label`,htmlFor:t,children:[(0,G.jsx)(`span`,{children:e}),n&&iy[n]?(0,G.jsxs)(`span`,{className:`studio-field-requirement ${n}`,children:[(0,G.jsx)(`span`,{"aria-hidden":`true`,children:iy[n]}),n===`required`&&(0,G.jsx)(`span`,{className:`sr-only`,children:`必填`})]}):null]}),r?(0,G.jsx)(Qv,{delayDuration:240,children:(0,G.jsxs)($v,{children:[(0,G.jsx)(ey,{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)(ty,{children:(0,G.jsxs)(ny,{className:`studio-tooltip field-help-tooltip`,side:`top`,sideOffset:7,children:[r,(0,G.jsx)(ry,{className:`studio-tooltip-arrow`})]})})]})}):null]})}function oy({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)(ay,{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)(oy,{id:d,children:r}):null]})}var sy=Object.defineProperty,cy=(e,t)=>sy(e,`name`,{value:t,configurable:!0}),ly=`Popover`,[uy,dy]=zt(ly,[pc]),fy=pc(),[py,my]=uy(ly),hy=cy(e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,c=fy(t),l=s.useRef(null),[u,d]=s.useState(!1),[f,p]=tn({prop:r,defaultProp:i??!1,onChange:a,caller:ly});return(0,G.jsx)(kc,{...c,children:(0,G.jsx)(py,{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`),gy=`PopoverTrigger`,_y=s.forwardRef(cy(function(e,t){let{__scopePopover:n,...r}=e,i=my(gy,n),a=fy(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":Oy(i.open),...r,ref:o,onClick:K(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,G.jsx)(Ac,{asChild:!0,...a,children:s})},`PopoverTrigger`)),vy=`PopoverPortal`,[yy,by]=uy(vy,{forceMount:void 0}),xy=cy(e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=my(vy,t);return(0,G.jsx)(yy,{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`),Sy=`PopoverContent`,Cy=s.forwardRef(cy(function(e,t){let n=by(Sy,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=my(Sy,e.__scopePopover);return(0,G.jsx)(fr,{present:r||a.open,children:a.modal?(0,G.jsx)(Ty,{...i,ref:t}):(0,G.jsx)(Ey,{...i,ref:t})})},`PopoverContent`)),wy=un(`PopoverContent.RemoveScroll`),Ty=s.forwardRef(cy(function(e,t){let n=my(Sy,e.__scopePopover),r=s.useRef(null),i=Ft(t,r),a=s.useRef(!1);return s.useEffect(()=>{let e=r.current;if(e)return Ui(e)},[]),(0,G.jsx)(Pi,{as:wy,allowPinchZoom:!0,children:(0,G.jsx)(Dy,{...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`)),Ey=s.forwardRef(cy(function(e,t){let n=my(Sy,e.__scopePopover),r=s.useRef(!1),i=s.useRef(!1);return(0,G.jsx)(Dy,{...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`)),Dy=s.forwardRef(cy(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=my(Sy,n),p=fy(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)(jc,{"data-state":Oy(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 Oy(e){return e?`open`:`closed`}cy(Oy,`getState`);var ky=hy,Ay=_y,jy=xy,My=Cy,Ny=1,Py=.9,Fy=.8,Iy=.17,Ly=.1,Ry=.999,zy=.9999,By=.99,Vy=/[\\\/_+.#"@\[\(\{&]/,Hy=/[\\\/_+.#"@\[\(\{&]/g,Uy=/[\s-]/,Wy=/[\s-]/g;function Gy(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?Ny:By;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=Gy(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=Ny:Vy.test(e.charAt(l-1))?(d*=Fy,p=e.slice(i,l-1).match(Hy),p&&i>0&&(d*=Ry**+p.length)):Uy.test(e.charAt(l-1))?(d*=Py,m=e.slice(i,l-1).match(Wy),m&&i>0&&(d*=Ry**+m.length)):(d*=Iy,i>0&&(d*=Ry**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=zy)),(dd&&(d=f*Ly)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Ky(e){return e.toLowerCase().replace(Wy,` `)}function qy(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,Gy(e,t,Ky(e),Ky(t),0,0,{})}var Jy=`[cmdk-group=""]`,Yy=`[cmdk-group-items=""]`,Xy=`[cmdk-group-heading=""]`,Zy=`[cmdk-item=""]`,Qy=`${Zy}:not([aria-disabled="true"])`,$y=`cmdk-item-select`,eb=`data-value`,tb=(e,t,n)=>qy(e,t,n),nb=s.createContext(void 0),rb=()=>s.useContext(nb),ib=s.createContext(void 0),ab=()=>s.useContext(ib),ob=s.createContext(void 0),sb=s.forwardRef((e,t)=>{let n=xb(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=xb(()=>new Set),i=xb(()=>new Map),a=xb(()=>new Map),o=xb(()=>new Set),c=yb(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=wb();bb(()=>{if(d!==void 0){let e=d.trim();n.current.value=e,w.emit()}},[d]),bb(()=>{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??tb;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(Yy);t?t.appendChild(e.parentElement===t?e:e.closest(`${Yy} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${Yy} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=S.current?.querySelector(`${Jy}[${eb}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function O(){let e=M().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(eb);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(Jy)?.querySelector(Xy))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function j(){return S.current?.querySelector(`${Zy}[aria-selected="true"]`)}function M(){return Array.from(S.current?.querySelectorAll(Qy)||[])}function N(e){let t=M()[e];t&&w.setState(`value`,t.getAttribute(eb))}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(eb))}function F(e){let t=j()?.closest(Jy),n;for(;t&&!n;)t=e>0?_b(t,Jy):vb(t,Jy),n=t?.querySelector(Qy);n?w.setState(`value`,n.getAttribute(eb)):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($y);t.dispatchEvent(e)}}}}},s.createElement(`label`,{"cmdk-label":``,htmlFor:T.inputId,id:T.labelId,style:Db},l),Eb(e,e=>s.createElement(ib.Provider,{value:w},s.createElement(nb.Provider,{value:T},e))))}),cb=s.forwardRef((e,t)=>{let n=Kt(),r=s.useRef(null),i=s.useContext(ob),a=rb(),o=yb(e),c=o.current?.forceMount??i?.forceMount;bb(()=>{if(!c)return a.item(n,i?.id)},[c]);let l=Cb(n,r,[e.value,e.children,r],e.keywords),u=ab(),d=Sb(e=>e.value&&e.value===l.current),f=Sb(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($y,p),()=>t.removeEventListener($y,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)}),lb=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=rb(),f=Sb(e=>i||d.filter()===!1?!0:!e.search||e.filtered.groups.has(o));bb(()=>d.group(o),[]),Cb(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),Eb(e,e=>s.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?u:void 0},s.createElement(ob.Provider,{value:p},e))))}),ub=s.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=s.useRef(null),a=Sb(e=>!e.search);return!n&&!a?null:s.createElement(Tn.div,{ref:Pt(i,t),...r,"cmdk-separator":``,role:`separator`})}),db=s.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=ab(),o=Sb(e=>e.search),c=Sb(e=>e.selectedItemId),l=rb();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)}})}),fb=s.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=s.useRef(null),o=s.useRef(null),c=Sb(e=>e.selectedItemId),l=rb();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},Eb(e,e=>s.createElement(`div`,{ref:Pt(o,l.listInnerRef),"cmdk-list-sizer":``},e)))}),pb=s.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...c}=e;return s.createElement(Zi,{open:n,onOpenChange:r},s.createElement(ta,{container:o},s.createElement(ra,{"cmdk-overlay":``,className:i}),s.createElement(sa,{"aria-label":e.label,"cmdk-dialog":``,className:a},s.createElement(sb,{ref:t,...c}))))}),mb=s.forwardRef((e,t)=>Sb(e=>e.filtered.count===0)?s.createElement(Tn.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),hb=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},Eb(e,e=>s.createElement(`div`,{"aria-hidden":!0},e)))}),gb=Object.assign(sb,{List:fb,Item:cb,Input:db,Group:lb,Separator:ub,Dialog:pb,Empty:mb,Loading:hb});function _b(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function vb(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function yb(e){let t=s.useRef(e);return bb(()=>{t.current=e}),t}var bb=typeof window>`u`?s.useEffect:s.useLayoutEffect;function xb(e){let t=s.useRef();return t.current===void 0&&(t.current=e()),t}function Sb(e){let t=ab(),n=()=>e(t.snapshot());return s.useSyncExternalStore(t.subscribe,n,n)}function Cb(e,t,n,r=[]){let i=s.useRef(),a=rb();return bb(()=>{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(eb,s),i.current=s}),i}var wb=()=>{let[e,t]=s.useState(),n=xb(()=>new Map);return bb(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function Tb(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Eb({asChild:e,children:t},n){return e&&s.isValidElement(t)?s.cloneElement(Tb(t),{ref:t.ref},n(t.props.children)):n(t)}var Db={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`};function Ob({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)(ky,{open:d,onOpenChange:f,children:[(0,G.jsx)(Ay,{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)(jy,{children:(0,G.jsx)(My,{className:`studio-multi-select-popover`,align:`start`,sideOffset:6,collisionPadding:12,children:(0,G.jsxs)(gb,{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)(gb.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)(gb.List,{className:`studio-command-list`,children:[(0,G.jsx)(gb.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)(gb.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 kb=(0,s.lazy)(()=>f(()=>import(`./PrismRenderer-e1psRo9-.js`),__vite__mapDeps([0,1,2])));function Ab({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)(kb,{code:e,language:t||`text`,showLineNumbers:i})})})]})}function jb(e){return(e.split(`.`).filter(Boolean).at(-1)||e).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function Mb(e){if(!e?.length)return null;let t=e[e.length-1];return typeof t==`string`?t:null}function Nb(e,t,n){typeof t==`string`&&t.trim()&&typeof n==`string`&&n&&(e[jb(t)]=n)}function Pb(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t))typeof r==`string`?Nb(e,n,r):Array.isArray(r)&&typeof r[0]==`string`&&Nb(e,n,r[0])}function Fb(e){if(!e||typeof e!=`object`)return null;let t=e,n={};Pb(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)Nb(n,e.field||Mb(e.loc),e.message);else i&&typeof i==`object`&&Pb(n,i.fields)}return Object.keys(n).length?n:null}function Ib(e,t){let n=Fb(e);if(!n)return!1;for(let[e,r]of Object.entries(n))t(e,{type:`server`,message:r});return!0}function Lb(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 Rb(e,t=`|`){return e.map(e=>rx(e)).join(t)}function zb(e,t){return typeof t==`bigint`?t.toString():t}function Bb(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Vb(e){return e==null}function Hb(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Ub(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function Yb(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Xb=Bb(()=>{if(Hx.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Zb(e){if(Yb(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Yb(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function Qb(e){return Zb(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var $b=new Set([`string`,`number`,`symbol`]);function ex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function tx(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function nx(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 rx(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function ix(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var ax={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ox(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 tx(e,Gb(e._zod.def,{get shape(){let e={};for(let r of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,r))throw Error(`Unrecognized key: "${String(r)}"`);t[r]&&Wb(e,r,n.shape[r])}return Wb(this,`shape`,e),e},checks:[]}))}function sx(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 tx(e,Gb(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,e))throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&delete r[e]}return Wb(this,`shape`,r),r},checks:[]}))}function cx(e,t){if(!Zb(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 of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return tx(e,Gb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Wb(this,`shape`,n),n}}))}function lx(e,t){if(!Zb(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return tx(e,Gb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Wb(this,`shape`,n),n}}))}function ux(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return tx(e,Gb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return Wb(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function dx(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);return tx(t,Gb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(r,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t of Reflect.ownKeys(r))i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return Wb(this,`shape`,i),i},checks:[]}))}function fx(e,t,n){return tx(t,Gb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(i,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t of Reflect.ownKeys(r))i[t]=new e({type:`nonoptional`,innerType:r[t]});return Wb(this,`shape`,i),i}}))}function px(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 gx(e){return typeof e==`string`?e:e?.message}function _x(e,t,n){var r;for(let i=t;ie;return t[Px]=!0,t}var Ix,Lx={value:void 0,enumerable:!1},Rx=`captureStackTrace`in Error?Error:null;function zx(e){let t=Rx;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Rx=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function X(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){Lx.value=new a(r);try{Object.defineProperty(n,"_zod",Lx)}finally{Lx.value=void 0}}if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),wx(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?zx(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var Bx=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Vx=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Ix=globalThis).__zod_globalConfig??(Ix.__zod_globalConfig={});var Hx=globalThis.__zod_globalConfig;function Ux(e){return e&&Object.assign(Hx,e),Hx}function Wx(){let e=this._zod;return e.message??=JSON.stringify(e.def,zb,2),e.message}function Gx(e){this._zod.message=e}var Kx={get:Wx,set:Gx,enumerable:!0,configurable:!0},qx={value:void 0,enumerable:!1},Jx={value:void 0,enumerable:!1},Yx=new WeakSet([Object.prototype,Error.prototype]),Xx=(e,t)=>{e.name=`$ZodError`,qx.value=e._zod,Object.defineProperty(e,"_zod",qx),Jx.value=t,Object.defineProperty(e,"issues",Jx),qx.value=void 0,Jx.value=void 0,Object.defineProperty(e,"message",Kx);let n=Object.getPrototypeOf(e);Yx.has(n)||(Yx.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Zx=X(`$ZodError`,Xx),Qx=X(`$ZodError`,Xx,void 0,{Parent:Error});function $x(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function eS(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?$x(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function tS(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{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new Bx;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>vx(e,o,Ux())));throw Jb(n,a?.callee??t),n}return s.value};return t},iS=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>vx(e,o,Ux())));throw Jb(n,a?.callee??t),n}return s.value};return t},aS=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 Bx;return a.issues.length?{success:!1,error:new(e??Zx)(a.issues.map(e=>vx(e,i,Ux())))}:{success:!0,data:a.value}},oS=aS(Qx),sS=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=>vx(e,i,Ux())))}:{success:!0,data:a.value}},cS=sS(Qx),lS=e=>{let t=rS(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,nS(n,a))};return n},uS=e=>{let t=rS(e),n=(e,r,i,a)=>t(e,r,i,nS(n,a));return n},dS=e=>{let t=iS(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,nS(n,a))};return n},fS=e=>{let t=iS(e),n=async(e,r,i,a)=>await t(e,r,i,nS(n,a));return n},pS=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return aS(e)(t,n,i)},mS=e=>(t,n,r)=>aS(e)(t,n,r),hS=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return sS(e)(t,n,i)},gS=e=>async(t,n,r)=>sS(e)(t,n,r),_S=/^[cC][0-9a-z]{6,}$/,vS=/^[0-9a-z]+$/,yS=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,bS=/^[0-9a-vA-V]{20}$/,xS=/^[A-Za-z0-9]{27}$/,SS=/^[a-zA-Z0-9_-]{21}$/;function CS(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var wS=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,TS=/^([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})$/,ES=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)$/,DS=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,OS=`^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function kS(){return new RegExp(OS,`u`)}var AS=/^(?:(?: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])$/,jS=/^(([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}|:))$/,MS=/^((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}:){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}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,PS=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,FS=/^[A-Za-z0-9_-]*$/,IS=/^https?$/,LS=/^\+[1-9]\d{6,14}$/,RS=`(?:(?:\\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])))`;function zS(e){return RegExp(`^${e}$`)}var BS=zS(RS);function VS(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}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function HS(e){return RegExp(`^${VS(e)}$`)}function US(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${VS({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${VS({precision:e.precision})}`:n;return RegExp(`^${RS}T(?:${r})$`)}var WS=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},GS=/^-?\d+$/,KS=/^-?\d+(?:\.\d+)?$/,qS=/^(?:true|false)$/i,JS=/^[^A-Z]*$/,YS=/^[^a-z]*$/,XS=X(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ZS=e=>{let t=e.value;return!Vb(t)&&t.length!==void 0},QS={number:`number`,bigint:`bigint`,object:`date`},$S=X(`$ZodCheckLessThan`,(e,t)=>{XS.init(e,t);let n=QS[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{XS.init(e,t);let n=QS[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:QS[typeof r.value]??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})}}),tC=X(`$ZodCheckMultipleOf`,(e,t)=>{XS.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`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Ub(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})}}),nC=X(`$ZodCheckNumberFormat`,(e,t)=>{XS.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=ax[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=GS)}),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})}}),rC=X(`$ZodCheckMaxLength`,(e,t)=>{var n;XS.init(e,t),(n=e._zod.def).when??(n.when=ZS),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?bx(r):i)<=t.maximum)return;let a=xx(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),iC=X(`$ZodCheckMinLength`,(e,t)=>{var n;XS.init(e,t),(n=e._zod.def).when??(n.when=ZS),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,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=xx(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),aC=X(`$ZodCheckLengthEquals`,(e,t)=>{var n;XS.init(e,t),(n=e._zod.def).when??(n.when=ZS),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,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?bx(r):i;if(a===t.length)return;let o=xx(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),oC=X(`$ZodCheckStringFormat`,(e,t)=>{var n,r;XS.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=()=>{})}),sC=X(`$ZodCheckRegex`,(e,t)=>{oC.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})}}),cC=X(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=JS,oC.init(e,t)}),lC=X(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=YS,oC.init(e,t)}),uC=X(`$ZodCheckIncludes`,(e,t)=>{XS.init(e,t);let n=ex(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})}}),dC=X(`$ZodCheckStartsWith`,(e,t)=>{XS.init(e,t);let n=RegExp(`^${ex(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})}}),fC=X(`$ZodCheckEndsWith`,(e,t)=>{XS.init(e,t);let n=RegExp(`.*${ex(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})}}),pC=X(`$ZodCheckOverwrite`,(e,t)=>{XS.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),mC=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}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?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` +`)}\n};`)(...Object.values(this.closed))}},hC={major:4,minor:5,patch:4},gC=X(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=hC;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=px(t),a;for(let o of n){if(o._zod.def.when){if(mx(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new Bx;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(_x(t.issues,n,e),i||=px(t,n))});else{if(t.issues.length===n)continue;_x(t.issues,n,e),i||=px(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(px(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new Bx;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new Bx;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Ex(this,`~standard`,vC(this))},set"~standard"(e){Tx(this,`~standard`,e)}}),_C=e=>e.success?{value:e.data}:{issues:e.error?.issues};function vC(e){return{validate:t=>{try{return _C(oS(e,t))}catch{return cS(e,t).then(_C)}},vendor:`zod`,version:1}}var yC=X(`$ZodString`,(e,t)=>{gC.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??WS(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}}),bC=X(`$ZodStringFormat`,(e,t)=>{oC.init(e,t),yC.init(e,t)}),xC=X(`$ZodGUID`,(e,t)=>{t.pattern??=TS,bC.init(e,t)}),SC=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??=ES(e)}else t.pattern??=ES();bC.init(e,t)}),CC=X(`$ZodEmail`,(e,t)=>{t.pattern??=DS,bC.init(e,t)});function wC(e,t){if(!t.normalize&&t.protocol?.source===IS.source&&!/^https?:\/\//i.test(e))return 1;try{return new URL(e)}catch{return 2}}var TC=/[\t\n\r]/g;function EC(e){return e.replace(TC,``)}function DC(e,t){return t.lastIndex=0,t.test(e.hostname)}function OC(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var kC=X(`$ZodURL`,(e,t)=>{bC.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=wC(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}t.hostname&&!DC(i,t.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&&!OC(i,t.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:EC(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),AC=X(`$ZodEmoji`,(e,t)=>{t.pattern??=kS(),bC.init(e,t)}),jC=X(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?SS:CS(t.length),bC.init(e,t)}),MC=X(`$ZodCUID`,(e,t)=>{t.pattern??=_S,bC.init(e,t)}),NC=X(`$ZodCUID2`,(e,t)=>{t.pattern??=vS,bC.init(e,t)}),PC=X(`$ZodULID`,(e,t)=>{t.pattern??=yS,bC.init(e,t)}),FC=X(`$ZodXID`,(e,t)=>{t.pattern??=bS,bC.init(e,t)}),IC=X(`$ZodKSUID`,(e,t)=>{t.pattern??=xS,bC.init(e,t)}),LC=X(`$ZodISODateTime`,(e,t)=>{t.pattern??=US(t),bC.init(e,t),(t.local||t.precision===-1)&&(e._zod.bag.laxFormat=!0,e._zod.onattach.push(e=>{e._zod.bag.laxFormat=!0}))}),RC=X(`$ZodISODate`,(e,t)=>{t.pattern??=BS,bC.init(e,t)}),zC=X(`$ZodISOTime`,(e,t)=>{t.pattern??=HS(t),bC.init(e,t)}),BC=X(`$ZodISODuration`,(e,t)=>{t.pattern??=wS,bC.init(e,t)}),VC=X(`$ZodIPv4`,(e,t)=>{t.pattern??=AS,bC.init(e,t),e._zod.bag.format=`ipv4`}),HC=/^[0-9a-fA-F:.]+$/;function UC(e){if(!HC.test(e))return!1;try{return new URL(`http://[${e}]`),!0}catch{return!1}}var WC=X(`$ZodIPv6`,(e,t)=>{t.pattern??=jS,bC.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{UC(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),GC=X(`$ZodCIDRv4`,(e,t)=>{t.pattern??=MS,bC.init(e,t)});function KC(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:UC(n)}var qC=X(`$ZodCIDRv6`,(e,t)=>{t.pattern??=NS,bC.init(e,t),e._zod.check=n=>{KC(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function JC(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var YC=X(`$ZodBase64`,(e,t)=>{t.pattern??=PS,bC.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{JC(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function XC(e){if(!FS.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return JC(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var ZC=X(`$ZodBase64URL`,(e,t)=>{t.pattern??=FS,bC.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{XC(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),QC=X(`$ZodE164`,(e,t)=>{t.pattern??=LS,bC.init(e,t)});function $C(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 ew=X(`$ZodJWT`,(e,t)=>{bC.init(e,t),e._zod.check=n=>{$C(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),tw=X(`$ZodNumber`,(e,t)=>{gC.init(e,t),e._zod.pattern=e._zod.bag.pattern??KS,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:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),nw=X(`$ZodNumberFormat`,(e,t)=>{nC.init(e,t),tw.init(e,t)}),rw=X(`$ZodBoolean`,(e,t)=>{gC.init(e,t),e._zod.pattern=qS,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}}),iw=X(`$ZodUnknown`,(e,t)=>{gC.init(e,t),e._zod.parse=e=>e}),aw=X(`$ZodNever`,(e,t)=>{gC.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function ow(e,t,n){e.issues.length&&t.issues.push(...hx(n,e.issues)),t.value[n]=e.value}var sw=X(`$ZodArray`,(e,t)=>{gC.init(e,t);let n=Hx.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[];for(let e=0;eow(t,r,e))):ow(s,r,e)}return o.length?Promise.all(o).then(()=>r):r}});function cw(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(!(!o&&s&&i===`optional`)){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...hx(n,e.issues))}if(!o&&i===void 0){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}}var lw=[];function uw(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:lw,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=ix(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function dw(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin,d=c.optout;for(let i in t){if(s.has(i))continue;if(i===`__proto__`){l===`never`&&o.push(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=>cw(e,n,i,t,u,d))):cw(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var fw=new WeakMap,pw=X(`$ZodObject`,(e,t)=>{if(gC.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;fw.set(t,e),Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),fw.set(t,n),n}})}let n=Bb(()=>uw(t));Mx(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||Wb(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let r=Yb,i=t.catchall,a,o=Hx.memoizer;o?.attach(e),e._zod.parse=(t,s)=>{a??=n.value;let c=t.value;if(!r(c))return t.issues.push({expected:`object`,code:`invalid_type`,input:c,inst:e}),t;t.value=o?o.alloc(e,t,{},s):{};let l=[],u=a.shape;for(let e of a.allKeys){if(e===`__proto__`)continue;let n=u[e],r=n._zod.optin,i=n._zod.optout,a=n._zod.run({value:c[e],issues:[]},s);a instanceof Promise?l.push(a.then(n=>cw(n,t,e,c,r,i))):cw(a,t,e,c,r,i)}return i?dw(l,c,t,s,n.value,e):l.length?Promise.all(l).then(()=>t):t}}),mw=X(`$ZodObjectJIT`,(e,t)=>{pw.init(e,t);let n=e._zod.parse,r=Bb(()=>uw(t)),i=Hx.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new mC([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` + for (let i = 0; i < ${e}.issues.length; i++) { + const iss = ${e}.issues[i]; + iss.path = iss.path ? [${t}, ...iss.path] : [${t}]; + payload.issues.push(iss); + }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:Kb(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` + const ${n}_present = ${i}; + if (!${n}.issues.length || ${n}_present) { + if (${n}.issues.length) {${c(n,r)} + } + + if (${e}) { + newResult[${r}] = ${n}.value; + } + } + + `)}else f?o.write(` + if (${n}.issues.length) {${c(n,r)} + } + + if (${n}.value === undefined) { + if (${i}) { + newResult[${r}] = undefined; + } + } else { + newResult[${r}] = ${n}.value; + } + + `):o.write(` + const ${n}_present = ${i}; + if (${n}.issues.length) {${c(n,r)} + } + if (!${n}_present && !${n}.issues.length) { + payload.issues.push({ + code: "invalid_type", + expected: "nonoptional", + input: undefined, + path: [${r}] + }); + } + + if (${n}_present) { + newResult[${r}] = ${n}.value; + } + + `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Yb,c=!Hx.jitless,l=c&&Xb.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?dw([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function hw(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=>!px(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=>vx(e,r,Ux())))}),t)}var gw=X(`$ZodUnion`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),Mx(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Mx(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),Mx(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>Hb(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=>hw(t,r,e,i)):hw(o,r,e,i)}}),_w=X(`$ZodIntersection`,(e,t)=>{gC.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])=>yw(e,t,n)):yw(e,i,a)}});function vw(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Zb(e)&&Zb(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=vw(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;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=vw(t.value,n.value);if(!c.valid){if(px(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var bw=X(`$ZodEnum`,(e,t)=>{gC.init(e,t);let n=Lb(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>$b.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>ex(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`),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}}),xw=X(`$ZodLiteral`,(e,t)=>{gC.init(e,t);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(t.values.length?`^(${t.values.map(e=>typeof e==`string`?ex(e):e?ex(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`),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}}),Sw=X(`$ZodTransform`,(e,t)=>{gC.init(e,t),e._zod.optin=`optional`,Hx.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Vx(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));if(i instanceof Promise)throw new Bx;return n.value=i,n}});function Cw(e,t){return e.value=t.issues.length?void 0:t.value,e}var ww=X(`$ZodOptional`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,Mx(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),Mx(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Hb(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Cw(e,t)):Cw(e,r)}return t.innerType._zod.run(e,n)}}),Tw=X(`$ZodExactOptional`,(e,t)=>{ww.init(e,t),Mx(e,`values`,e=>e.def.innerType._zod.values),Mx(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Ew=X(`$ZodNullable`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.innerType._zod.optin),Mx(e,`optout`,e=>e.def.innerType._zod.optout),Mx(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Hb(t.source)}|null)$`):void 0}),Mx(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Dw=X(`$ZodDefault`,(e,t)=>{gC.init(e,t),e._zod.optin=`defaulted`,Mx(e,`values`,e=>e.def.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=>Ow(e,t)):Ow(r,t)}});function Ow(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var kw=X(`$ZodPrefault`,(e,t)=>{gC.init(e,t),e._zod.optin=`defaulted`,Mx(e,`values`,e=>e.def.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))}),Aw=X(`$ZodNonOptional`,(e,t)=>{gC.init(e,t),Mx(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].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=>jw(t,e)):jw(i,e)}});function jw(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Mw(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>vx(e,r,Ux()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Nw=X(`$ZodCatch`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),Mx(e,`optout`,e=>e.def.innerType._zod.optout),Mx(e,`values`,e=>e.def.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({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Mw(e,r,t,n)):Mw(e,r,t,n)}}),Pw=X(`$ZodPipe`,(e,t)=>{gC.init(e,t),Mx(e,`values`,e=>e.def.in._zod.values),Mx(e,`optin`,e=>e.def.in._zod.optin),Mx(e,`optout`,e=>e.def.out._zod.optout),Mx(e,`propValues`,e=>e.def.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=>Fw(e,t.in,n)):Fw(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Fw(e,t.out,n)):Fw(r,t.out,n)}});function Fw(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var Iw=X(`$ZodReadonly`,(e,t)=>{gC.init(e,t),Mx(e,`propValues`,e=>e.def.innerType._zod.propValues),Mx(e,`values`,e=>e.def.innerType._zod.values),Mx(e,`optin`,e=>e.def.innerType?._zod?.optin),Mx(e,`optout`,e=>e.def.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(Lw):Lw(r)}});function Lw(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Rw=X(`$ZodCustom`,(e,t)=>{XS.init(e,t),gC.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=>zw(t,n,r,e));zw(i,n,r,e)}});function zw(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(Cx(e))}}var Bw=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},Vw=`~memo`,Hw=[];function Uw(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Ww=new WeakMap;function Gw(e,t){let n=Ww.get(e);if(n!==void 0)return n;if(t.has(e))return!0;t.add(e);let r=!1,i=e=>{!r&&e?._zod&&Gw(e,t)&&(r=!0)},a=e._zod.def;switch(a.type){case`object`:for(let e of Reflect.ownKeys(a.shape))i(a.shape[e]);i(a.catchall);break;case`array`:i(a.element);break;case`tuple`:for(let e of a.items)i(e);i(a.rest);break;case`record`:case`map`:i(a.keyType),i(a.valueType);break;case`set`:i(a.valueType);break;case`union`:for(let e of a.options)i(e);break;case`intersection`:i(a.left),i(a.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:i(a.innerType);break;case`pipe`:i(a.in),i(a.out);break;case`function`:i(a.input),i(a.output);break;case`lazy`:i(e._zod.innerType);break;case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in a){let t=Object.getOwnPropertyDescriptor(a,e);if(!t||t.get)continue;let n=t.value;if(!(!n||typeof n!=`object`)){if(n._zod)i(n);else if(Array.isArray(n))for(let e of n)i(e)}}}return t.delete(e),Ww.set(e,r),r}function Kw(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var qw,Jw=[],Yw={alloc(e,t,n){let r=qw;if(!r)return n;qw=void 0;let i={value:n,issues:null};return r.set(t.value,i),Jw.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&Zw(n,e.value))throw new Bw;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,a=(o,s)=>{if(n===void 0&&(n=Gw(e,new Set),!n))return e._zod.parse=t,e._zod.run===a&&(e._zod.run=t),t(o,s);let c=o.value;if(typeof c!=`object`||!c)return t(o,s);let l=s[Vw];l||(l={buckets:new Map,backEdges:void 0},s[Vw]=l);let u;r===s?u=i:(u=Kw(l,e),r=s,i=u);let d=u.get(c);if(d)return o.value=d.value,d.issues?d.issues.length&&o.issues.push(...Uw(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;qw=u;let f=Jw.length,p=t(o,s);qw=void 0;let m=Jw.length>f?Jw.pop():void 0;return p instanceof Promise?p.then(e=>(m&&(m.issues=e.issues.length?Uw(e.issues):Hw),e)):(m&&(m.issues=p.issues.length?Uw(p.issues):Hw),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function Xw(){return Yw}function Zw(e,t){let n=e[Vw]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var Qw=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,credit_card:`credit card number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(Sx(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${rx(e.values[0])}`:`Invalid option: expected one of ${Rb(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${Rb(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function $w(){return{localeError:Qw()}}var eT,tT=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 nT(){return new tT}(eT=globalThis).__zod_globalRegistry??(eT.__zod_globalRegistry=nT());var rT=globalThis.__zod_globalRegistry;function iT(e,t){return new e({type:`string`,...nx(t)})}function aT(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...nx(t)})}function oT(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...nx(t)})}function sT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...nx(t)})}function cT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...nx(t)})}function lT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...nx(t)})}function uT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...nx(t)})}function dT(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...nx(t)})}function fT(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...nx(t)})}function pT(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...nx(t)})}function mT(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...nx(t)})}function hT(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...nx(t)})}function gT(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...nx(t)})}function _T(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...nx(t)})}function vT(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...nx(t)})}function yT(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...nx(t)})}function bT(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...nx(t)})}function xT(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...nx(t)})}function ST(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...nx(t)})}function CT(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...nx(t)})}function wT(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...nx(t)})}function TT(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...nx(t)})}function ET(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...nx(t)})}function DT(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...nx(t)})}function OT(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...nx(t)})}function kT(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...nx(t)})}function AT(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...nx(t)})}function jT(e,t){return new e({type:`number`,coerce:!0,checks:[],...nx(t)})}function MT(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...nx(t)})}function NT(e,t){return new e({type:`boolean`,...nx(t)})}function PT(e){return new e({type:`unknown`})}function FT(e,t){return new e({type:`never`,...nx(t)})}function IT(e,t){return new $S({check:`less_than`,...nx(t),value:e,inclusive:!1})}function LT(e,t){return new $S({check:`less_than`,...nx(t),value:e,inclusive:!0})}function RT(e,t){return new eC({check:`greater_than`,...nx(t),value:e,inclusive:!1})}function zT(e,t){return new eC({check:`greater_than`,...nx(t),value:e,inclusive:!0})}function BT(e,t){return new tC({check:`multiple_of`,...nx(t),value:e})}function VT(e,t){return new rC({check:`max_length`,...nx(t),maximum:e})}function HT(e,t){return new iC({check:`min_length`,...nx(t),minimum:e})}function UT(e,t){return new aC({check:`length_equals`,...nx(t),length:e})}function WT(e,t){return new sC({check:`string_format`,format:`regex`,...nx(t),pattern:e})}function GT(e){return new cC({check:`string_format`,format:`lowercase`,...nx(e)})}function KT(e){return new lC({check:`string_format`,format:`uppercase`,...nx(e)})}function qT(e,t){return new uC({check:`string_format`,format:`includes`,...nx(t),includes:e})}function JT(e,t){return new dC({check:`string_format`,format:`starts_with`,...nx(t),prefix:e})}function YT(e,t){return new fC({check:`string_format`,format:`ends_with`,...nx(t),suffix:e})}function XT(e){return new pC({check:`overwrite`,tx:e})}function ZT(e){return XT(t=>t.normalize(e))}function QT(){return XT(e=>e.trim())}function $T(){return XT(e=>e.toLowerCase())}function eE(){return XT(e=>e.toUpperCase())}function tE(){return XT(e=>qb(e))}function nE(e,t,n){return new e({type:`array`,element:t,...nx(n)})}function rE(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...nx(n)})}function iE(e,t){let n=aE(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Cx(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Cx(r))}},e(t.value,t)),t);return n}function aE(e,t){let n=new XS({check:`custom`,...nx(t)});return n._zod.check=e,n}function oE(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&Wb(e,t,n[t]);return e}function sE(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??rT,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function cE(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function lE(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),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;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,lE(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&oE(o.schema,c),t.io===`input`&&yE(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 uE(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function dE(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;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}/${uE(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+uE(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}}e.external&&(e.sharedDefsExtractedFor=e.external)}function fE(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;fE(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var pE=new Set([`type`,`properties`,`required`,`additionalProperties`]),mE=[`oneOf`,`anyOf`];function hE(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function gE(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!pE.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??hE(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Wb(n,r,e.length===1?e[0]:gE(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=hE(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function _E(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of pE)if(t in e)return;let n=t.filter(e=>mE.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=gE(t);else{let e=n[0],i=mE.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>gE([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,oE(e,r))}function vE(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)):oE(i,s),oE(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??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())fE(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])_E(e)}}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)}oE(i,n.defId?n.schema: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??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Wb(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),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:xE(t,`input`,e.processors),output:xE(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function yE(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 yE(r.element,n);if(r.type===`set`)return yE(r.valueType,n);if(r.type===`lazy`)return yE(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`||r.type===`catch`)return yE(r.innerType,n);if(r.type===`intersection`)return yE(r.left,n)||yE(r.right,n);if(r.type===`record`||r.type===`map`)return yE(r.keyType,n)||yE(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:yE(r.in,n)||yE(r.out,n);if(r.type===`object`){for(let e in r.shape)if(yE(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(yE(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(yE(e,n))return!0;return!!(r.rest&&yE(r.rest,n))}return!1}var bE=(e,t={})=>n=>{let r=sE({...n,processors:t});return lE(e,r),dE(r,e),vE(r,e)},xE=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=sE({...i??{},target:a,io:t,processors:n});return lE(e,o),dE(o,e),vE(o,e)},SE={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},CE=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=SE[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&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}))])}},wE=(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`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):cE(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},TE=(e,t,n,r)=>{n.type=`boolean`},EE=(e,t,n,r)=>{n.not={}},DE=(e,t,n,r)=>{let i=e._zod.def,a=Lb(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},OE=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(cE(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(cE(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);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}},kE=(e,t,n,r)=>{cE(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},AE=(e,t,n,r)=>{cE(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},jE=(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=lE(a.element,t,{...r,path:[...r.path,`items`]})};function ME(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?ME(t.out):t.type===`catch`?ME(t.innerType):e._zod.optin}var NE=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&cE(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Wb(i.properties,e,lE(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];return t.io===`input`?ME(n)===void 0:n._zod.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=lE(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},PE=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>lE(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},FE=(e,t,n,r)=>{let i=e._zod.def,a=lE(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=lE(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},IE=(e,t,n,r)=>{let i=e._zod.def,a=lE(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`}]},LE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},RE=Symbol();function zE(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(cE(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),RE):JSON.parse(o)}var BE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=zE(i.defaultValue,e,t,n,r);o!==RE&&(n.default=o)},VE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=zE(i.defaultValue,e,t,n,r);o!==RE&&(n._prefault=o)},HE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{cE(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},UE=(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;lE(o,t,r);let s=t.seen.get(e);s.ref=o},WE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},GE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},KE=new WeakSet([Object.prototype,Error.prototype]);function qE(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var JE=X(`ZodError`,(e,t)=>{Zx.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);KE.has(n)||(KE.add(n),qE(n,`format`,e=>t=>tS(e,t)),qE(n,`flatten`,e=>t=>eS(e,t)),qE(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,zb,2)}),qE(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,zb,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),YE=rS(JE),XE=iS(JE),ZE=aS(JE),QE=sS(JE),$E=lS(JE),eD=uS(JE),tD=dS(JE),nD=fS(JE),rD=pS(JE),iD=mS(JE),aD=hS(JE),oD=gS(JE);function sD(){Hx.localeError||Ux($w())}function cD(){Hx.memoizer||Ux({memoizer:Xw()})}var lD=X(`ZodType`,(e,t)=>(sD(),gC.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(Gb(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 tx(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(EO(e,t))},superRefine(e,t){return this.check(DO(e,t))},overwrite(e){return this.check(XT(e))},optional(){return cO(this)},exactOptional(){return uO(this)},nullable(){return fO(this)},nullish(){return cO(fO(this))},nonoptional(e){return vO(this,e)},array(){return JD(this)},or(e){return QD([this,e])},and(e){return eO(this,e)},transform(e){return SO(this,oO(e))},default(e){return mO(this,e)},prefault(e){return gO(this,e)},catch(e){return bO(this,e)},pipe(e){return SO(this,e)},readonly(){return wO(this)},describe(e){let t=this.clone();return rT.add(t,{description:e}),t},meta(...e){if(e.length===0)return rT.get(this);let t=this.clone();return rT.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Ex(this,`~standard`,{...vC(this),jsonSchema:{input:xE(this,`input`),output:xE(this,`output`)}})},set"~standard"(e){Tx(this,`~standard`,e)},parse:function e(t,n){return YE(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await XE(this,t,n,{callee:e})},safeParse(e,t){return ZE(this,e,t)},async safeParseAsync(e,t){return QE(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){Tx(this,`spa`,e)},encode:function e(t,n){return $E(this,t,n,{callee:e})},decode:function e(t,n){return eD(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await tD(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await nD(this,t,n,{callee:e})},safeEncode(e,t){return rD(this,e,t)},safeDecode(e,t){return iD(this,e,t)},async safeEncodeAsync(e,t){return aD(this,e,t)},async safeDecodeAsync(e,t){return oD(this,e,t)},toJSONSchema(e){return bE(this,{})(e)},get description(){return rT.get(this)?.description},get _def(){return this._zod.def}}),uD=X(`_ZodString`,(e,t)=>{yC.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>CE(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(WT(...e))},includes(...e){return this.check(qT(...e))},startsWith(...e){return this.check(JT(...e))},endsWith(...e){return this.check(YT(...e))},min(...e){return this.check(HT(...e))},max(...e){return this.check(VT(...e))},length(...e){return this.check(UT(...e))},nonempty(...e){return this.check(HT(1,...e))},lowercase(e){return this.check(GT(e))},uppercase(e){return this.check(KT(e))},trim(){return this.check(QT())},normalize(...e){return this.check(ZT(...e))},toLowerCase(){return this.check($T())},toUpperCase(){return this.check(eE())},slugify(){return this.check(tE())}}),dD=X(`ZodString`,(e,t)=>{yC.init(e,t),uD.init(e,t)},{email(e){return this.check(aT(vD,e))},url(e){return this.check(dT(xD,e))},jwt(e){return this.check(ET(LD,e))},emoji(e){return this.check(fT(CD,e))},guid(e){return this.check(oT(yD,e))},uuid(e){return this.check(sT(bD,e))},uuidv4(e){return this.check(cT(bD,e))},uuidv6(e){return this.check(lT(bD,e))},uuidv7(e){return this.check(uT(bD,e))},nanoid(e){return this.check(pT(wD,e))},cuid(e){return this.check(mT(TD,e))},cuid2(e){return this.check(hT(ED,e))},ulid(e){return this.check(gT(DD,e))},base64(e){return this.check(CT(PD,e))},base64url(e){return this.check(wT(FD,e))},xid(e){return this.check(_T(OD,e))},ksuid(e){return this.check(vT(kD,e))},ipv4(e){return this.check(yT(AD,e))},ipv6(e){return this.check(bT(jD,e))},cidrv4(e){return this.check(xT(MD,e))},cidrv6(e){return this.check(ST(ND,e))},e164(e){return this.check(TT(ID,e))},datetime(e){return this.check(DT(mD,e))},date(e){return this.check(OT(hD,e))},time(e){return this.check(kT(gD,e))},duration(e){return this.check(AT(_D,e))}});function fD(e){return iT(dD,e)}var pD=X(`ZodStringFormat`,(e,t)=>{bC.init(e,t),uD.init(e,t)}),mD=X(`ZodISODateTime`,(e,t)=>{LC.init(e,t),pD.init(e,t)}),hD=X(`ZodISODate`,(e,t)=>{RC.init(e,t),pD.init(e,t)}),gD=X(`ZodISOTime`,(e,t)=>{zC.init(e,t),pD.init(e,t)}),_D=X(`ZodISODuration`,(e,t)=>{BC.init(e,t),pD.init(e,t)}),vD=X(`ZodEmail`,(e,t)=>{CC.init(e,t),pD.init(e,t)}),yD=X(`ZodGUID`,(e,t)=>{xC.init(e,t),pD.init(e,t)}),bD=X(`ZodUUID`,(e,t)=>{SC.init(e,t),pD.init(e,t)}),xD=X(`ZodURL`,(e,t)=>{kC.init(e,t),pD.init(e,t)});function SD(e){return dT(xD,e)}var CD=X(`ZodEmoji`,(e,t)=>{AC.init(e,t),pD.init(e,t)}),wD=X(`ZodNanoID`,(e,t)=>{jC.init(e,t),pD.init(e,t)}),TD=X(`ZodCUID`,(e,t)=>{MC.init(e,t),pD.init(e,t)}),ED=X(`ZodCUID2`,(e,t)=>{NC.init(e,t),pD.init(e,t)}),DD=X(`ZodULID`,(e,t)=>{PC.init(e,t),pD.init(e,t)}),OD=X(`ZodXID`,(e,t)=>{FC.init(e,t),pD.init(e,t)}),kD=X(`ZodKSUID`,(e,t)=>{IC.init(e,t),pD.init(e,t)}),AD=X(`ZodIPv4`,(e,t)=>{VC.init(e,t),pD.init(e,t)}),jD=X(`ZodIPv6`,(e,t)=>{WC.init(e,t),pD.init(e,t)}),MD=X(`ZodCIDRv4`,(e,t)=>{GC.init(e,t),pD.init(e,t)}),ND=X(`ZodCIDRv6`,(e,t)=>{qC.init(e,t),pD.init(e,t)}),PD=X(`ZodBase64`,(e,t)=>{YC.init(e,t),pD.init(e,t)}),FD=X(`ZodBase64URL`,(e,t)=>{ZC.init(e,t),pD.init(e,t)}),ID=X(`ZodE164`,(e,t)=>{QC.init(e,t),pD.init(e,t)}),LD=X(`ZodJWT`,(e,t)=>{ew.init(e,t),pD.init(e,t)}),RD=X(`ZodNumber`,(e,t)=>{tw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wE(e,t,n,r);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},{gt(e,t){return this.check(RT(e,t))},gte(e,t){return this.check(zT(e,t))},min(e,t){return this.check(zT(e,t))},lt(e,t){return this.check(IT(e,t))},lte(e,t){return this.check(LT(e,t))},max(e,t){return this.check(LT(e,t))},int(e){return this.check(BD(e))},safe(e){return this.check(BD(e))},positive(e){return this.check(RT(0,e))},nonnegative(e){return this.check(zT(0,e))},negative(e){return this.check(IT(0,e))},nonpositive(e){return this.check(LT(0,e))},multipleOf(e,t){return this.check(BT(e,t))},step(e,t){return this.check(BT(e,t))},finite(){return this}}),zD=X(`ZodNumberFormat`,(e,t)=>{nw.init(e,t),RD.init(e,t)});function BD(e){return MT(zD,e)}var VD=X(`ZodBoolean`,(e,t)=>{rw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>TE(e,t,n,r)});function HD(e){return NT(VD,e)}var UD=X(`ZodUnknown`,(e,t)=>{iw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function WD(){return PT(UD)}var GD=X(`ZodNever`,(e,t)=>{aw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>EE(e,t,n,r)});function KD(e){return FT(GD,e)}var qD=X(`ZodArray`,(e,t)=>{cD(),sw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jE(e,t,n,r),e.element=t.element},{min(e,t){return this.check(HT(e,t))},nonempty(e){return this.check(HT(1,e))},max(e,t){return this.check(VT(e,t))},length(e,t){return this.check(UT(e,t))},unwrap(){return this.element}});function JD(e,t){return nE(qD,e,t)}var YD=X(`ZodObject`,(e,t)=>{cD(),mw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>NE(e,t,n,r),Nx(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return nO(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:WD()})},loose(){return this.clone({...this._zod.def,catchall:WD()})},strict(){return this.clone({...this._zod.def,catchall:KD()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return cx(this,e)},safeExtend(e){return lx(this,e)},merge(e){return ux(this,e)},pick(e){return ox(this,e)},omit(e){return sx(this,e)},partial(...e){return dx(sO,this,e[0])},exactPartial(...e){return dx(lO,this,e[0],`exactPartial`)},required(...e){return fx(_O,this,e[0])}});function XD(e,t){return new YD({type:`object`,shape:e??{},...nx(t)})}var ZD=X(`ZodUnion`,(e,t)=>{gw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>PE(e,t,n,r),e.options=t.options});function QD(e,t){return new ZD({type:`union`,options:e,...nx(t)})}var $D=X(`ZodIntersection`,(e,t)=>{_w.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>FE(e,t,n,r)});function eO(e,t){return new $D({type:`intersection`,left:e,right:t})}var tO=X(`ZodEnum`,(e,t)=>{bw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>DE(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 tO({...t,checks:[],...nx(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 tO({...t,checks:[],...nx(r),entries:i})}});function nO(e,t){return new tO({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...nx(t)})}var rO=X(`ZodLiteral`,(e,t)=>{xw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>OE(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 iO(e,t){return new rO({type:`literal`,values:Array.isArray(e)?e:[e],...nx(t)})}var aO=X(`ZodTransform`,(e,t)=>{cD(),Sw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>AE(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Vx(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Cx(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(Cx(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function oO(e){return new aO({type:`transform`,transform:e})}var sO=X(`ZodOptional`,(e,t)=>{ww.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>GE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function cO(e){return new sO({type:`optional`,innerType:e})}var lO=X(`ZodExactOptional`,(e,t)=>{Tw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>GE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function uO(e){return new lO({type:`optional`,innerType:e})}var dO=X(`ZodNullable`,(e,t)=>{Ew.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>IE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function fO(e){return new dO({type:`nullable`,innerType:e})}var pO=X(`ZodDefault`,(e,t)=>{Dw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>BE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function mO(e,t){return new pO({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Qb(t)}})}var hO=X(`ZodPrefault`,(e,t)=>{kw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>VE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function gO(e,t){return new hO({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Qb(t)}})}var _O=X(`ZodNonOptional`,(e,t)=>{Aw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>LE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function vO(e,t){return new _O({type:`nonoptional`,innerType:e,...nx(t)})}var yO=X(`ZodCatch`,(e,t)=>{Nw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>HE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function bO(e,t){return new yO({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Fx(t)})}var xO=X(`ZodPipe`,(e,t)=>{Pw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>UE(e,t,n,r),e.in=t.in,e.out=t.out});function SO(e,t){return new xO({type:`pipe`,in:e,out:t})}var CO=X(`ZodReadonly`,(e,t)=>{Iw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>WE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function wO(e){return new CO({type:`readonly`,innerType:e})}var TO=X(`ZodCustom`,(e,t)=>{Rw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kE(e,t,n,r)});function EO(e,t={}){return rE(TO,e,t)}function DO(e,t){return iE(e,t)}function OO(e){return jT(RD,e)}var kO=fD().trim().min(1,`请填写 Agent 名称`).max(128,`Agent 名称不能超过 128 个字符`),AO=fD().trim().min(3,`本地标识至少填写 3 个字符`).max(63,`本地标识不能超过 63 个字符`).regex(/^[a-z][a-z0-9-]*$/,`本地标识只能包含小写字母、数字和连字符`),jO=QD([iO(``),AO]),MO=nO([`codex`,`adk`,`langgraph`,`plugin`]),NO=nO([`codex`,`adk`,`langgraph`]),PO=fD().trim().min(4,`系统提示词至少填写 4 个字符`).max(32768,`系统提示词不能超过 32768 个字符`),FO=fD().trim().min(4,`Agent 目标与要求至少填写 4 个字符`).max(32768,`Agent 目标与要求不能超过 32768 个字符`),IO=fD().trim().max(1024,`描述不能超过 1024 个字符`).default(``),LO=XD({name:kO,slug:AO,runtimeType:MO,template:nO([`blank`,`research`]).default(`blank`),prompt:FO,description:IO,audience:fD().trim().max(256,`目标读者不能超过 256 个字符`).default(``),language:nO([`zh-CN`,`en-US`]).default(`zh-CN`),depth:nO([`focused`,`standard`,`deep`]).default(`deep`),format:nO([`report`,`brief`,`evidence-table`]).default(`report`),systemPrompt:fD().trim().min(4,`最终系统规则至少填写 4 个字符`).max(32768,`最终系统规则不能超过 32768 个字符`).default(``),taskPrompt:fD().max(32768,`任务契约不能超过 32768 个字符`).default(``),buildAfterCreate:HD().default(!0)}).superRefine((e,t)=>{e.template===`research`&&!e.audience&&t.addIssue({code:`custom`,path:[`audience`],message:`请填写目标读者`})}),RO=XD({name:kO,slug:AO,runtimeType:MO,prompt:PO,description:IO}),zO=XD({name:kO,slug:AO,runtimeType:NO,prompt:PO,description:IO.optional(),modelProfileId:fD().trim().min(3,`请选择用于构建的模型`).max(256).optional()}),BO=XD({name:kO,slug:jO.default(``)}),VO=XD({name:kO,slug:jO.default(``),path:fD().trim().min(1,`请选择项目目录`).max(4096,`项目路径不能超过 4096 个字符`)}),HO=/(?:secret|password|token|api[_-]?key)/i,UO=[`secret://`,`env://`,`credential://`,`vault://`];function WO(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 GO(r,`providerConfig`,[],i),r}function GO(e,t,n,r){if(Array.isArray(e)){e.forEach((e,i)=>GO(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((HO.test(e)||c)&&i!==null&&(typeof i!=`string`||!UO.some(e=>i.startsWith(e))))throw Error(`${a} 只能填写 Secret 引用,不能填写明文`);GO(i,a,o,r)})}function KO(e){let t=e.selectable?`已启用`:e.reason?.message||`不可用`;return`${e.pluginId}@${e.resolvedVersion} · ${t}`}var qO=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function JO(e){return e?.contract?.model||e?.name||``}function YO(e){return e===`adk`?`ADKRuntimeAdapter`:e===`langgraph`?`LangGraphRuntimeAdapter`:e===`plugin`?`External AgentProvider`:`CodexRuntimeAdapter`}function XO(e){return e===`codex`?{type:`codex`}:{type:e,projectPath:`.`,entryPoint:e===`adk`?`agent.py`:`graph.py`,agentVariable:e===`adk`?`root_agent`:`app`}}function ZO(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 QO(e,t){let n=new Map((e||[]).map(e=>[e.resourceId,e]));return t.map(e=>n.get(e)||{resourceId:e,enabled:!0})}function $O(e){return e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}async function ek(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(qO.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 tk({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=S_({resolver:M_(RO),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)(()=>ZO(Ye,b,`model`),[Ye,b]),et=(0,s.useMemo)(()=>ZO(Xe,S,`skill`),[Xe,S]),tt=(0,s.useMemo)(()=>ZO(Ze,w,`mcp`),[Ze,w]),nt=(0,s.useMemo)(()=>ZO(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:KO(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=>JO(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(JO).filter(Boolean),mt=ue?[` soul:`,` schemaVersion: agentkit.soul/v1`,` identity: |-`,...W.split(` +`).map(e=>` ${e}`),...$O(me).length?[` principles:`,...$O(me).map(e=>` - ${e}`)]:[],...$O(ge).length?[` boundaries:`,...$O(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}`),...$O(me).length?[` principles:`,...$O(me).map(e=>` - ${e}`)]:[],...$O(ge).length?[` boundaries:`,...$O(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: ${JO(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=WO(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}:{...XO(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:$O(me),boundaries:$O(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:QO(a.bindings?.skills,S),mcpServers:QO(a.bindings?.mcpServers,w),tools:QO(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(Ib(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 ek(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:YO(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)(gv,{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)(Ih,{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)(Ih,{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)(Ih,{id:`editDefaultModel`,ariaLabel:`默认模型`,value:v,placeholder:ut||`请先绑定模型`,disabled:!rt.length,options:rt.map(e=>({value:e.resourceId,label:e.displayName,description:JO(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)(Ob,{ariaLabel:`选择绑定模型`,items:$e,selectedIds:b,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${JO(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)(Ob,{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)(Ob,{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)(Ob,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Ih,{id:`editContextOwnership`,ariaLabel:`上下文管理方式`,value:oe,options:lt,onValueChange:se})}),(0,G.jsx)(Y,{label:`上下文优化`,requirement:`optional`,htmlFor:`editContextEngineRollout`,hint:`仅观察只生成诊断证据;正式启用会执行预算、压缩和降载。`,children:(0,G.jsx)(Ih,{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)(Ab,{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 nk({title:e,subtitle:t,wide:n=!1,closeDisabled:r=!1,onClose:i,footer:a,children:o}){return(0,G.jsx)(Da,{open:!0,onOpenChange:e=>{e||i()},title:e,subtitle:t,wide:n,closeDisabled:r,footer:a,children:o})}function rk({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 ik(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var ak=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ok=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,sk={};function ck(e,t){return((t||sk).jsx?ok:ak).test(e)}var lk=/[ \t\n\f\r]/g;function uk(e){return typeof e==`object`?e.type===`text`&&dk(e.value):dk(e)}function dk(e){return e.replace(lk,``)===``}var fk=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};fk.prototype.normal={},fk.prototype.property={},fk.prototype.space=void 0;function pk(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new fk(n,r,t)}function mk(e){return e.toLowerCase()}var hk=class{constructor(e,t){this.attribute=t,this.property=e}};hk.prototype.attribute=``,hk.prototype.booleanish=!1,hk.prototype.boolean=!1,hk.prototype.commaOrSpaceSeparated=!1,hk.prototype.commaSeparated=!1,hk.prototype.defined=!1,hk.prototype.mustUseProperty=!1,hk.prototype.number=!1,hk.prototype.overloadedBoolean=!1,hk.prototype.property=``,hk.prototype.spaceSeparated=!1,hk.prototype.space=void 0;var gk=e({boolean:()=>vk,booleanish:()=>yk,commaOrSpaceSeparated:()=>Ck,commaSeparated:()=>Sk,number:()=>Z,overloadedBoolean:()=>bk,spaceSeparated:()=>xk}),_k=0,vk=wk(),yk=wk(),bk=wk(),Z=wk(),xk=wk(),Sk=wk(),Ck=wk();function wk(){return 2**++_k}var Tk=Object.keys(gk),Ek=class extends hk{constructor(e,t,n,r){let i=-1;if(super(e,t),Dk(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&Bk.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(zk,Uk);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!zk.test(e)){let n=e.replace(Rk,Hk);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=Ek}return new i(r,t)}function Hk(e){return`-`+e.toLowerCase()}function Uk(e){return e.charAt(1).toUpperCase()}var Wk=pk([kk,Mk,Pk,Fk,Ik],`html`),Gk=pk([kk,Nk,Pk,Fk,Ik],`svg`);function Kk(e){return e.join(` `).trim()}var qk=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})),Jk=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(qk());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}})),Yk=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))}})),Xk=n(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(Jk()),r=Yk();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})),Zk=$k(`end`),Qk=$k(`start`);function $k(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 eA(e){let t=Qk(e),n=Zk(e);if(t&&n)return{start:t,end:n}}function tA(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?rA(e.position):`start`in e||`end`in e?rA(e):`line`in e||`column`in e?nA(e):``}function nA(e){return iA(e&&e.line)+`:`+iA(e&&e.column)}function rA(e){return nA(e&&e.start)+`-`+nA(e&&e.end)}function iA(e){return e&&typeof e==`number`?e:1}var aA=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=tA(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}};aA.prototype.file=``,aA.prototype.name=``,aA.prototype.reason=``,aA.prototype.message=``,aA.prototype.stack=``,aA.prototype.column=void 0,aA.prototype.line=void 0,aA.prototype.ancestors=void 0,aA.prototype.cause=void 0,aA.prototype.fatal=void 0,aA.prototype.place=void 0,aA.prototype.ruleId=void 0,aA.prototype.source=void 0;var oA=t(Xk(),1),sA={}.hasOwnProperty,cA=new Map,lA=/[A-Z]/g,uA=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),dA=new Set([`td`,`th`]),fA=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function pA(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=wA(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=CA(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`?Gk:Wk,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=mA(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function mA(e,t,n){if(t.type===`element`)return hA(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return gA(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return vA(e,t,n);if(t.type===`mdxjsEsm`)return _A(e,t);if(t.type===`root`)return yA(e,t,n);if(t.type===`text`)return bA(e,t)}function hA(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=Gk,e.schema=i),e.ancestors.push(t);let a=AA(e,t.tagName,!1),o=TA(e,t),s=DA(e,t);return uA.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!uk(e)})),xA(e,o,a,t),SA(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function gA(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)}jA(e,t.position)}function _A(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);jA(e,t.position)}function vA(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=Gk,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:AA(e,t.name,!0),o=EA(e,t),s=DA(e,t);return xA(e,o,a,t),SA(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function yA(e,t,n){let r={};return SA(r,DA(e,t)),e.create(t,e.Fragment,r,n)}function bA(e,t){return t.value}function xA(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function SA(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function CA(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 wA(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Qk(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 TA(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&sA.call(t.properties,i)){let a=OA(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&dA.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 EA(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 jA(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 jA(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function DA(e,t){let n=[],r=-1,i=e.passKeys?new Map:cA;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?(UA(e,e.length,0,t),e):t}var GA={}.hasOwnProperty;function KA(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 XA(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var ZA=lj(/[A-Za-z]/),QA=lj(/[\dA-Za-z]/),$A=lj(/[#-'*+\--9=?A-Z^-~]/);function ej(e){return e!==null&&(e<32||e===127)}var tj=lj(/\d/),nj=lj(/[\dA-Fa-f]/),rj=lj(/[!-/:-@[-`{-~]/);function ij(e){return e!==null&&e<-2}function aj(e){return e!==null&&(e<0||e===32)}function oj(e){return e===-2||e===-1||e===32}var sj=lj(/\p{P}|\p{S}/u),cj=lj(/\s/);function lj(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function uj(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 dj(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return oj(r)?(e.enter(n),s(r)):t(r)}function s(r){return oj(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 _j(e,t,n){return dj(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function vj(e){if(e===null||aj(e)||cj(e))return 1;if(sj(e))return 2}function yj(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};Cj(d,-c),Cj(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=WA(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=WA(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=WA(l,yj(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=WA(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=WA(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,UA(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n0&&oj(t)?dj(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||ij(t)?e.check(Ij,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||ij(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`),oj(t)?dj(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`),oj(t)?dj(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||ij(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function zj(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 Bj={name:`codeIndented`,tokenize:Hj},Vj={partial:!0,tokenize:Uj};function Hj(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),dj(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):ij(t)?e.attempt(Vj,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||ij(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function Uj(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):ij(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):dj(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):ij(e)?i(e):n(e)}}var Wj={name:`codeText`,previous:Kj,resolve:Gj,tokenize:qj};function Gj(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&&Yj(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),Yj(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Yj(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 rM(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||ej(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||ij(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||aj(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):ij(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||ij(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!oj(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function aM(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):ij(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),dj(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||ij(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 oM(e,t){let n;return r;function r(i){return ij(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):oj(i)?dj(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var sM={name:`definition`,tokenize:lM},cM={partial:!0,tokenize:uM};function lM(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return iM.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=XA(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 aj(t)?oM(e,l)(t):l(t)}function l(t){return rM(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(cM,d,d)(t)}function d(t){return oj(t)?dj(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||ij(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function uM(e,t,n){return r;function r(t){return aj(t)?oM(e,i)(t):n(t)}function i(t){return aM(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return oj(t)?dj(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||ij(e)?t(e):n(e)}}var dM={name:`hardBreakEscape`,tokenize:fM};function fM(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return ij(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var pM={name:`headingAtx`,resolve:mM,tokenize:hM};function mM(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`},UA(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function hM(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||aj(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||ij(n)?(e.exit(`atxHeading`),t(n)):oj(n)?dj(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||aj(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var gM=`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(`.`),_M=[`pre`,`script`,`style`,`textarea`],vM={concrete:!0,name:`htmlFlow`,resolveTo:xM,tokenize:SM},yM={partial:!0,tokenize:wM},bM={partial:!0,tokenize:CM};function xM(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 SM(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):ZA(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):ZA(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 ZA(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||aj(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&_M.includes(l)?(i=1,r.interrupt?t(s):O(s)):gM.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||QA(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 oj(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||ZA(t)?(e.consume(t),b):oj(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||QA(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):oj(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):oj(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||ij(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||aj(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||oj(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||ij(t)?O(t):oj(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):ij(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(yM,R,k)(t)):t===null||ij(t)?(e.exit(`htmlFlowData`),k(t)):(e.consume(t),O)}function k(t){return e.check(bM,A,R)(t)}function A(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),j}function j(t){return t===null||ij(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 _M.includes(n)?(e.consume(t),L):O(t)}return ZA(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||ij(t)?(e.exit(`htmlFlowData`),R(t)):(e.consume(t),L)}function R(n){return e.exit(`htmlFlow`),t(n)}}function CM(e,t,n){let r=this;return i;function i(t){return ij(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 wM(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(Ej,t,n)}}var TM={name:`htmlText`,tokenize:EM};function EM(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):ZA(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):ZA(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):ij(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):ij(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):ij(t)?(o=v,N(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):ij(t)?(o=y,N(t)):(e.consume(t),y)}function b(e){return e===62?M(e):y(e)}function x(t){return ZA(t)?(e.consume(t),S):n(t)}function S(t){return t===45||QA(t)?(e.consume(t),S):C(t)}function C(t){return ij(t)?(o=C,N(t)):oj(t)?(e.consume(t),C):M(t)}function w(t){return t===45||QA(t)?(e.consume(t),w):t===47||t===62||aj(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),M):t===58||t===95||ZA(t)?(e.consume(t),E):ij(t)?(o=T,N(t)):oj(t)?(e.consume(t),T):M(t)}function E(t){return t===45||t===46||t===58||t===95||QA(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),O):ij(t)?(o=D,N(t)):oj(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):ij(t)?(o=O,N(t)):oj(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):ij(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||aj(t)?T(t):(e.consume(t),A)}function j(e){return e===47||e===62||aj(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 oj(t)?dj(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 DM={name:`labelEnd`,resolveAll:jM,resolveTo:MM,tokenize:NM},OM={tokenize:PM},kM={tokenize:FM},AM={tokenize:IM};function jM(e){let t=-1,n=[];for(;++t=3&&(a===null||ij(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),oj(t)?dj(e,s,`whitespace`)(t):s(t))}}var GM={continuation:{tokenize:YM},exit:ZM,name:`list`,tokenize:JM},KM={partial:!0,tokenize:QM},qM={partial:!0,tokenize:XM};function JM(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:tj(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(UM,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 tj(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(Ej,r.interrupt?n:u,e.attempt(KM,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return oj(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 YM(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(Ej,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,dj(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!oj(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(qM,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,dj(e,e.attempt(GM,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function XM(e,t,n){let r=this;return dj(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 ZM(e){e.exit(this.containerState.type)}function QM(e,t,n){let r=this;return dj(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!oj(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var $M={name:`setextUnderline`,resolveTo:eN,tokenize:tN};function eN(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 tN(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`),oj(t)?dj(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||ij(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var nN={tokenize:rN};function rN(e){let t=this,n=e.attempt(Ej,r,e.attempt(this.parser.constructs.flowInitial,i,dj(e,e.attempt(this.parser.constructs.flow,i,e.attempt(Qj,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 iN={resolveAll:cN()},aN=sN(`string`),oN=sN(`text`);function sN(e){return{resolveAll:cN(e===`text`?lN: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(;++ivN,contentInitial:()=>fN,disable:()=>yN,document:()=>dN,flow:()=>mN,flowInitial:()=>pN,insideSpan:()=>_N,string:()=>hN,text:()=>gN}),dN={42:GM,43:GM,45:GM,48:GM,49:GM,50:GM,51:GM,52:GM,53:GM,54:GM,55:GM,56:GM,57:GM,62:Oj},fN={91:sM},pN={[-2]:Bj,[-1]:Bj,32:Bj},mN={35:pM,42:UM,45:[$M,UM],60:vM,61:$M,95:UM,96:Lj,126:Lj},hN={38:Pj,92:Mj},gN={[-5]:VM,[-4]:VM,[-3]:VM,33:LM,38:Pj,42:bj,60:[wj,TM],91:zM,92:[dM,Mj],93:DM,95:bj,96:Wj},_N={null:[bj,iN]},vN={null:[42,95]},yN={null:[]};function bN(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=WA(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=yj(a,l.events,l),l.events):[]}function f(e,t){return SN(p(e),t)}function p(e){return xN(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 SN(e,t){let n=-1,r=[],i;for(;++n0){let e=a.tokenStack[a.tokenStack.length-1];(e[1]||IN).call(a,void 0,e[0])}for(r.position={start:NN(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:NN(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 VN(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function HN(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function UN(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=uj(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 WN(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 GN(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function KN(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 qN(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return KN(e,t);let i={src:uj(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 JN(e,t){let n={src:uj(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 YN(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 XN(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return KN(e,t);let i={href:uj(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 ZN(e,t){let n={href:uj(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 QN(e,t,n){let r=e.all(t),i=n?$N(n):eP(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 tP(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=Qk(t.children[1]),o=Zk(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 oP(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(dP(t.slice(i),i>0,!1)),a.join(``)}function dP(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===cP||t===lP;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===cP||t===lP;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function fP(e,t){let n={type:`text`,value:uP(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function pP(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var mP={blockquote:RN,break:zN,code:BN,delete:VN,emphasis:HN,footnoteReference:UN,heading:WN,html:GN,imageReference:qN,image:JN,inlineCode:YN,linkReference:XN,link:ZN,listItem:QN,list:tP,paragraph:nP,root:rP,strong:iP,table:aP,tableCell:sP,tableRow:oP,text:fP,thematicBreak:pP,toml:hP,yaml:hP,definition:hP,footnoteDefinition:hP};function hP(){}var{defineProperty:gP}=Object,_P=typeof self==`object`?self:globalThis,vP=(e,t)=>{switch(e){case`Function`:case`SharedWorker`:case`Worker`:case`eval`:case`setInterval`:case`setTimeout`:throw TypeError(`unable to deserialize `+e)}return new _P[e](t)},yP=(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){let i=r(t),a=r(n);i===`__proto__`?gP(e,i,{value:a,configurable:!0,enumerable:!0,writable:!0}):e[i]=a}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 _P[e]==`function`?vP(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)}case`-0`:return-0}return n(vP(a,o),i)};return r},bP=e=>yP(new Map,e)(0),xP=``,{toString:SP}={},{keys:CP,is:wP}=Object,TP=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=SP.call(e).slice(8,-1);switch(n){case`Array`:return[1,xP];case`Object`:return[2,xP];case`Date`:return[3,xP];case`RegExp`:return[4,xP];case`Map`:return[5,xP];case`Set`:return[6,xP];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:e instanceof Error?[7,e.name||`Error`]:[2,n]},EP=([e,t])=>e===0&&(t===`function`||t===`symbol`),DP=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=o=>{if(n.has(o))return n.get(o);let[s,c]=TP(o);switch(s){case 0:{let t=o;switch(c){case`bigint`:s=8,t=o.toString();break;case`number`:if(!o&&wP(o,-0))return r.push([`-0`])-1;break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+c);t=null;break;case`undefined`:return i([-1],o)}return i([s,t],o)}case 1:{if(c){let e=o;return c===`DataView`?e=new Uint8Array(o.buffer):c===`ArrayBuffer`&&(e=new Uint8Array(o)),i([c,[...e]],o)}let e=[],t=i([s,e],o);for(let t of o)e.push(a(t));return t}case 2:{if(c)switch(c){case`BigInt`:return i([c,o.toString()],o);case`Boolean`:case`Number`:case`String`:return i([c,o.valueOf()],o)}if(t&&`toJSON`in o)return a(o.toJSON());let n=[],r=i([s,n],o);for(let t of CP(o))(e||!EP(TP(o[t])))&&n.push([a(t),a(o[t])]);return r}case 3:return i([s,isNaN(o.getTime())?xP:o.toISOString()],o);case 4:{let{source:e,flags:t}=o;return i([s,{source:e,flags:t}],o)}case 5:{let t=[],n=i([s,t],o);for(let[n,r]of o)(e||!(EP(TP(n))||EP(TP(r))))&&t.push([a(n),a(r)]);return n}case 6:{let t=[],n=i([s,t],o);for(let n of o)(e||!EP(TP(n)))&&t.push(a(n));return n}}let{message:l}=o;return i([s,{name:c,message:l}],o)};return a},OP=(e,{json:t,lossy:n}={})=>{let r=[];return DP(!(t||n),!!t,new Map,r)(e),r},kP=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?bP(OP(e,t)):structuredClone(e):(e,t)=>bP(OP(e,t));function AP(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 jP(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function MP(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||AP,r=e.options.footnoteBackLabel||jP,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:{...kP(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 NP=(function(e){if(e==null)return RP;if(typeof e==`function`)return LP(e);if(typeof e==`object`)return Array.isArray(e)?PP(e):FP(e);if(typeof e==`string`)return IP(e);throw Error(`Expected function, string, or object as test`)});function PP(e){let t=[],n=-1;for(;++n`:``))+`)`})}return u;function u(){let l=VP,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=UP(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 QP(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function $P(e,t){let n=qP(e,t),r=n.one(e,void 0),i=MP(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 eF(e,t){return e&&`run`in e?async function(n,r){let i=$P(n,{file:r,...t});await e.run(i,r)}:function(n,r){return $P(n,{file:r,...e||t})}}function tF(e){if(e)throw e}var nF=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 oF={basename:sF,dirname:cF,extname:lF,join:uF,sep:`/`};function sF(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);pF(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 cF(e){if(pF(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 lF(e){pF(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 uF(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function fF(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 pF(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var mF={cwd:hF};function hF(){return`/`}function gF(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function _F(e){if(typeof e==`string`)e=new URL(e);else if(!gF(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 vF(e)}function vF(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];rF(o)&&rF(r)&&(r=(0,EF.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function kF(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function AF(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function jF(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 MF(e){if(!rF(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function NF(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function PF(e){return FF(e)?e:new bF(e)}function FF(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function IF(e){return typeof e==`string`||LF(e)}function LF(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var RF=[],zF={allowDangerousHtml:!0},BF=/^(https?|ircs?|mailto|xmpp)$/i,VF=[{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 HF(e){let t=UF(e),n=WF(e);return GF(t.runSync(t.parse(n),n),e)}function UF(e){let t=e.rehypePlugins||RF,n=e.remarkPlugins||RF,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...zF}:zF;return OF().use(LN).use(n).use(eF,r).use(t)}function WF(e){let t=e.children||``,n=new bF;return typeof t==`string`?n.value=t:``+t,n}function GF(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||KF;for(let e of VF)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return WP(e,l),pA(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 FA)if(Object.hasOwn(FA,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=FA[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 KF(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||BF.test(e.slice(0,t))?e:``}function qF(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 JF(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function YF(e,t,n){let r=NP((n||{}).ignore||[]),i=XF(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=qF(e,`(`),a=qF(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 mI(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||cj(n)||sj(n))&&(!t||n!==47)}wI.peek=CI;function hI(){this.buffer()}function gI(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function _I(){this.buffer()}function vI(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function yI(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=XA(this.sliceSerialize(e)).toLowerCase(),n.label=t}function bI(e){this.exit(e)}function xI(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=XA(this.sliceSerialize(e)).toLowerCase(),n.label=t}function SI(e){this.exit(e)}function CI(){return`[`}function wI(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 TI(){return{enter:{gfmFootnoteCallString:hI,gfmFootnoteCall:gI,gfmFootnoteDefinitionLabelString:_I,gfmFootnoteDefinition:vI},exit:{gfmFootnoteCallString:yI,gfmFootnoteCall:bI,gfmFootnoteDefinitionLabelString:xI,gfmFootnoteDefinition:SI}}}function EI(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:wI},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?OI:DI))),s(),o}}function DI(e,t,n){return t===0?e:OI(e,t,n)}function OI(e,t,n){return(n?``:` `)+e}var kI=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];PI.peek=FI;function AI(){return{canContainEols:[`delete`],enter:{strikethrough:MI},exit:{strikethrough:NI}}}function jI(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:kI}],handlers:{delete:PI}}}function MI(e){this.enter({type:`delete`,children:[]},e)}function NI(e){this.exit(e)}function PI(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 FI(){return`~`}function II(e){return e.length}function LI(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||II,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()),VI);return i(),o}function VI(e,t,n){return`>`+(n?``:` `)+e}function HI(e,t){return UI(e,t.inConstruct,!0)&&!UI(e,t.notInConstruct,!1)}function UI(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 KI(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 qI(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function JI(e,t,n,r){let i=qI(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(KI(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,YI);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(GI(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 YI(e,t,n){return(n?``:` `)+e}function XI(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function ZI(e,t,n,r){let i=XI(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 QI(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function $I(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function eL(e,t,n){let r=vj(e),i=vj(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}}tL.peek=nL;function tL(e,t,n,r){let i=QI(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=eL(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=$I(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=eL(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+$I(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function nL(e,t,n){return n.options.emphasis||`*`}function rL(e,t){let n=!1;return WP(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)&&LA(e)&&(t.options.setext||n))}function iL(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(rL(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=$I(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}aL.peek=oL;function aL(e){return e.value||``}function oL(){return`<`}sL.peek=cL;function sL(e,t,n,r){let i=XI(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 cL(){return`!`}lL.peek=uL;function lL(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 uL(){return`!`}dL.peek=fL;function dL(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))}mL.peek=hL;function mL(e,t,n,r){let i=XI(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(pL(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 hL(e,t,n){return pL(e,n)?`<`:`[`}gL.peek=_L;function gL(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 _L(){return`[`}function vL(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 yL(e){let t=vL(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 bL(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function xL(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 SL(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?bL(n):vL(n),s=e.ordered?o===`.`?`)`:`.`:yL(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),xL(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 TL(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var EL=NP([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function DL(e,t,n,r){return(e.children.some(function(e){return EL(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function OL(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}kL.peek=AL;function kL(e,t,n,r){let i=OL(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=eL(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=$I(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=eL(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+$I(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function AL(e,t,n){return n.options.strong||`*`}function jL(e,t,n,r){return n.safe(e.value,r)}function ML(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 NL(e,t,n){let r=(xL(n)+(n.options.ruleSpaces?` `:``)).repeat(ML(n));return n.options.ruleSpaces?r.slice(0,-1):r}var PL={blockquote:BI,break:WI,code:JI,definition:ZI,emphasis:tL,hardBreak:WI,heading:iL,html:aL,image:sL,imageReference:lL,inlineCode:dL,link:mL,linkReference:gL,list:SL,listItem:wL,paragraph:TL,root:DL,strong:kL,text:jL,thematicBreak:NL};function FL(){return{enter:{table:IL,tableData:BL,tableHeader:BL,tableRow:RL},exit:{codeText:VL,table:LL,tableData:zL,tableHeader:zL,tableRow:zL}}}function IL(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 LL(e){this.exit(e),this.data.inTable=void 0}function RL(e){this.enter({type:`tableRow`,children:[]},e)}function zL(e){this.exit(e)}function BL(e){this.enter({type:`tableCell`,children:[]},e)}function VL(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,HL));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function HL(e,t){return t===`|`?t:e}function UL(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 LI(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 xR={tokenize:kR,partial:!0};function SR(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:ER,continuation:{tokenize:DR},exit:OR}},text:{91:{name:`gfmFootnoteCall`,tokenize:TR},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:CR,resolveTo:wR}}}}function CR(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=XA(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 wR(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 TR(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||aj(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(XA(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return aj(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 ER(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||aj(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=XA(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return aj(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),dj(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function DR(e,t,n){return e.check(Ej,t,e.attempt(xR,t,n))}function OR(e){e.exit(`gfmFootnoteDefinition`)}function kR(e,t,n){let r=this;return dj(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 AR(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=vj(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var jR=class{constructor(){this.map=[]}add(e,t,n){MR(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 MR(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):ij(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):oj(t)?dj(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||aj(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,oj(t)?dj(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 oj(t)?dj(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||ij(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 oj(t)?dj(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||ij(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||ij(n)?(e.exit(`tableRow`),t(n)):oj(n)?dj(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||aj(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 IR(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 jR;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({},zR(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function RR(e,t,n,r,i){let a=[],o=zR(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 zR(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var BR={name:`tasklistCheck`,tokenize:HR};function VR(){return{text:{91:BR}}}function HR(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 aj(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 ij(r)?t(r):oj(r)?e.check({tokenize:UR},t,n)(r):n(r)}}function UR(e,t,n){return dj(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function WR(e){return KA([oR(),SR(),AR(e),PR(),VR()])}var GR={};function KR(e){let t=this,n=e||GR,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(WR(n)),a.push(YL()),o.push(XL(n))}function qR(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 JR({content:e}){let{frontmatter:t,markdown:n}=qR(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)(Ab,{code:t,language:`yaml`,filename:`frontmatter.yaml`,showLineNumbers:!1,wrap:!0})]}),(0,G.jsx)(`article`,{className:`markdown-preview`,children:(0,G.jsx)(HF,{remarkPlugins:[KR],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)(Ab,{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 YR(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 XR(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function ZR(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 QR(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 $R({files:e,selected:t,onSelect:n}){let r=(0,s.useMemo)(()=>QR(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 ez({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 XR(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 XR(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)(nk,{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)(rk,{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)($R,{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,` · `,YR(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)(rk,{kind:`error`,title:`无法预览文件`,message:_}),!f&&!_&&c?.kind===`markdown`&&(0,G.jsx)(JR,{content:c.content||``}),!f&&!_&&[`script`,`text`].includes(c?.kind||``)&&(0,G.jsx)(Ab,{code:c?.content||``,language:ZR(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 tz=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`]]),nz=class extends Error{constructor(e){super(`DataTransferItem is not a file`),this.item=e,this.name=`UnexpectedObjectError`}};function rz(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`&&az(r,`path`,a),n!==void 0&&Object.defineProperty(r,"handle",{value:n,writable:!1,configurable:!1,enumerable:!0}),az(r,`relativePath`,a),r}function iz(e,t=tz){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 az(e,t,n){Object.defineProperty(e,t,{value:n,writable:!1,configurable:!1,enumerable:!0})}var oz=[`.DS_Store`,`Thumbs.db`];async function sz(e,{mimeTypes:t=tz}={}){return(await cz(e)).map(e=>e instanceof File?iz(e,t):e)}async function cz(e){return fz(e)&&lz(e.dataTransfer)?hz(e.dataTransfer,e.type):uz(e)?gz(e.clipboardData):dz(e)?pz(e):Array.isArray(e)&&e.every(e=>`getFile`in e&&typeof e.getFile==`function`)?mz(e):[]}function lz(e){return fz(e)}function uz(e){return fz(e)&&lz(e.clipboardData)}function dz(e){return fz(e)&&fz(e.target)}function fz(e){return typeof e==`object`&&!!e}function pz(e){return vz(e.target.files).map(e=>rz(e))}async function mz(e){return(await Promise.all(e.map(e=>e.getFile()))).map(e=>rz(e))}async function hz(e,t){let n=vz(e.items).filter(e=>e.kind===`file`);return t===`drop`?_z(bz(await Promise.all(n.map(yz)))):n}function gz(e){let t=vz(e.items).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>e!==null);return _z((t.length>0?t:vz(e.files)).map(e=>rz(e)))}function _z(e){return e.filter(e=>oz.indexOf(e.name)===-1)}function vz(e){return e===null?[]:Array.from(e)}async function yz(e){if(typeof e.webkitGetAsEntry!=`function`)return xz(e);let t=e.webkitGetAsEntry();if(t?.isDirectory){let n=await Sz(e);return n?.kind===`directory`?Cz(n,`/${n.name}`):Tz(t)}return xz(e,t)}function bz(e){let t=[];for(let n of e)Array.isArray(n)?t.push(...bz(n)):t.push(n);return t}async function xz(e,t){let n=e.getAsFile(),r=await Sz(e);if(r!=null){let e=n??await r.getFile();return e.handle=r,rz(e)}if(!n)throw new nz(e);return rz(n,t?.fullPath??void 0)}async function Sz(e){if(globalThis.isSecureContext&&typeof e.getAsFileSystemHandle==`function`)return e.getAsFileSystemHandle()}async function Cz(e,t){let n=[];for await(let r of e.values()){let e=`${t}/${r.name}`;if(r.kind===`directory`)n.push(...await Cz(r,e));else{let t=await r.getFile();n.push(rz(t,e,r))}}return n}async function wz(e){return e.isDirectory?Tz(e):Ez(e)}function Tz(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(wz));r.push(e),i()}else try{e(await Promise.all(r))}catch(e){n(e)}},e=>{n(e)})}i()})}async function Ez(e){return new Promise((t,n)=>{e.file(n=>{t(rz(n,e.fullPath))},e=>{n(e)})})}function Dz(e,t){if(e&&t){let n=Array.isArray(t)?t:t.split(`,`);if(n.length===0)return!0;let r=e.name||``,i=(e.type||``).toLowerCase(),a=i.replace(/\/.*$/,``);return n.some(e=>{let t=e.trim().toLowerCase();return t.charAt(0)===`.`?r.toLowerCase().endsWith(t):t.endsWith(`/*`)?a===t.replace(/\/.*$/,``):i===t})}return!0}var Oz=typeof Dz==`function`?Dz:Dz.default,kz=`file-invalid-type`,Az=`file-too-large`,jz=`file-too-small`,Mz=`too-many-files`;function Nz(e=``){let t=e.split(`,`);return{code:kz,message:`File type must be ${t.length>1?`one of ${t.join(`, `)}`:t[0]}`}}var Pz=[`KB`,`MB`,`GB`,`TB`,`PB`];function Fz(e){if(e<1024)return`${e} ${e===1?`byte`:`bytes`}`;let t=e/1024,n=0;for(;t>=1024&&nn)return[!1,Iz(n)];if(e.sizen)return[!1,Iz(n)]}return[!0,null]}function Hz(e){return e!=null}function Uz(e){return e!=null&&typeof e.then==`function`}function Wz({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]=Bz(e,t),[o,s]=Vz(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(Rz,e)]})}),l.length>0?{verdict:`reject`,rejections:l}:{verdict:o?`unknown`:`accept`,rejections:l}}function Gz(e){return typeof e.isPropagationStopped==`function`?e.isPropagationStopped():e.cancelBubble!==void 0&&e.cancelBubble}function Kz(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??[],qz):!!e.target&&!!e.target.files}function qz(e){return typeof e==`object`&&!!e&&e.kind===`file`}function Jz(e){e.preventDefault()}function Yz(e){return e.indexOf(`MSIE`)!==-1||e.indexOf(`Trident/`)!==-1}function Xz(e){return e.indexOf(`Edge/`)!==-1}function Zz(e=window.navigator.userAgent){return Yz(e)||Xz(e)}function Qz(...e){return(t,...n)=>e.some(e=>(!Gz(t)&&e&&e(t,...n),Gz(t)))}function $z(){return`showOpenFilePicker`in window}function eB(e){return Array.isArray(e)?e:typeof e==`string`?[e]:[]}function tB(e){if(Hz(e))return Array.isArray(e)?e.filter(e=>Hz(e)&&Hz(e.accept)):[{accept:e}]}function nB(e){let t=[],n=Object.keys(e);for(let n of Object.values(e))for(let e of eB(n))t.includes(e)||t.push(e);return t.length>0?t.join(`, `):n.length>0?n.join(`, `):`Files`}function rB(e){let t=tB(e);if(!Hz(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 eB(r))e.includes(t)||e.push(t)}return n}function iB(e){let t=tB(e);if(!Hz(t))return;let n=t.map(e=>{let t=Object.entries(e.accept).filter(([e,t])=>{let n=!0;return lB(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`)||!eB(t).every(dB))&&(console.warn(`Skipped "${e}" because an invalid file extension was provided.`),n=!1),n}).reduce((e,[t,n])=>(e[t]=eB(n),e),{});return{description:Hz(e.description)&&e.description!==``?e.description:nB(t),accept:t}}).filter(e=>Object.keys(e.accept).length>0);return n.length>0?n:void 0}function aB(e,{omitWildcardMimeTypesWithExtensions:t=!1}={}){if(Hz(e))return Object.entries(e).reduce((e,[n,r])=>{let i=eB(r);return t&&uB(n)&&i.some(dB)?e.push(...i):e.push(n,...i),e},[]).filter(e=>lB(e)||dB(e)).join(`,`)}function oB(e){return e instanceof DOMException&&(e.name===`AbortError`||e.code===e.ABORT_ERR)}function sB(e){return e instanceof DOMException&&(e.name===`SecurityError`||e.code===e.SECURITY_ERR)}function cB(e){return e instanceof DOMException&&e.name===`NotAllowedError`}function lB(e){return e===`audio/*`||e===`video/*`||e===`image/*`||e===`text/*`||e===`application/*`||/\w+\/[-+.\w]+/g.test(e)}function uB(e){return e.endsWith(`/*`)}function dB(e){return/^.*\.[\w]+$/.test(e)}var fB=(0,s.forwardRef)(({children:e,...t},n)=>{let{open:r,...i}=mB(t);return(0,s.useImperativeHandle)(n,()=>({open:r}),[r]),(0,G.jsx)(G.Fragment,{children:e?.({...i,open:r})})});fB.displayName=`Dropzone`;var pB={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,isDragGlobal:!1,isProcessing:!1,acceptedFiles:[],fileRejections:[],dragFileRejections:[]};function mB(e={}){let{accept:t,disabled:n=!1,getFilesFromEvent:r=sz,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)(()=>rB(t),[t]),k=(0,s.useMemo)(()=>aB(O),[O]),A=(0,s.useMemo)(()=>aB(O,{omitWildcardMimeTypesWithExtensions:!0}),[O]),j=(0,s.useMemo)(()=>iB(t),[t]),M=(0,s.useMemo)(()=>typeof g==`function`?g:gB,[g]),N=(0,s.useMemo)(()=>typeof h==`function`?h:gB,[h]),P=(0,s.useRef)(null),F=(0,s.useRef)(null),[I,L]=(0,s.useReducer)(hB,pB),{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&&_&&$z()),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`,Jz,!1),document.addEventListener(`drop`,ie,!1)),()=>{y&&(document.removeEventListener(`dragover`,Jz),document.removeEventListener(`drop`,ie))}),[P,y]),(0,s.useEffect)(()=>{let e=e=>{e.target&&(re.current=[...re.current,e.target]),Kz(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],Kz(e)&&Promise.resolve(r(e)).then(t=>{if(Gz(e)&&!C)return;let n=t.length>0?Wz({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=Kz(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:[]}),Kz(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(Rz,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]=Bz(e,A),[r,o]=Vz(e,a,i);return{file:e,accepted:t,acceptError:n,sizeMatch:r,sizeError:o,customErrors:E?E(e):null}});if(!l.some(({customErrors:e})=>Uz(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`}),Kz(e))){let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(Gz(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(!Kz(e))return;e.preventDefault(),e.persist?.(),be(e);let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(Gz(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),oB(e)?(N(e),L({type:`closeDialog`})):sB(e)||cB(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||(Zz()?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(Qz(r,fe)),onFocus:_e(Qz(i,pe)),onBlur:_e(Qz(a,me)),onClick:ge(Qz(o,he)),onDragEnter:ve(Qz(s,oe)),onDragOver:ve(Qz(c,se)),onDragLeave:ve(Qz(l,ce)),onDrop:ve(Qz(u,ue)),onPaste:ye(Qz(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(Qz(t,ue)),onClick:ge(Qz(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 hB(e,t){switch(t.type){case`focus`:return{...e,isFocused:!0};case`blur`:return{...e,isFocused:!1};case`openDialog`:return{...pB,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{...pB};default:return e}}function gB(){}function _B(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(+(e<10240))} KiB`:`${(e/1048576).toFixed(1)} MiB`}function vB(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 yB({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}=mB({accept:e,maxSize:t,multiple:!1,noClick:!!n,onDropAccepted:e=>{i(``),r(e[0]||null)},onDropRejected:e=>{r(null),i(vB(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:[_B(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 bB=`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 xB(){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)(Ab,{code:bB,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 SB=fD().trim().min(1,`请填写显示名称`).max(128,`显示名称不能超过 128 个字符`),CB=fD().trim().min(2,`资源标识至少填写 2 个字符`).max(128,`资源标识不能超过 128 个字符`).regex(/^[a-z][a-z0-9._-]*$/,`资源标识只能包含小写字母、数字、点、下划线和连字符`),wB=fD().trim().min(1,`请填写 Python 标识`).max(128,`Python 标识不能超过 128 个字符`).regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`请输入有效的 Python 标识`),TB=fD().trim().url(`请输入有效的接口地址`).max(1024,`接口地址不能超过 1024 个字符`),EB=fD().trim().max(512,`凭证引用不能超过 512 个字符`).regex(/^env:\/\/[A-Za-z_][A-Za-z0-9_]*$/,`凭证引用需使用 env://环境变量名`),DB=fD().trim().max(4096,`描述不能超过 4096 个字符`).default(``),OB=XD({name:CB,displayName:SB,model:fD().trim().min(1,`请填写模型 ID`).max(256,`模型 ID 不能超过 256 个字符`),endpointUrl:TB,credentialRef:EB,description:DB.optional(),apiKey:fD().max(16384,`API Key 不能超过 16384 个字符`).default(``),temperature:OO().min(0,`temperature 需在 0-2 之间`).max(2,`temperature 需在 0-2 之间`).default(.2),maxTokens:OO().int(`max_tokens 需为 1-131072 的整数`).min(1,`max_tokens 需为 1-131072 的整数`).max(131072,`max_tokens 需为 1-131072 的整数`).default(2048),addressMode:nO([`endpoint`,`base`]).default(`endpoint`),wireApi:nO([``,`chat`,`responses`]).default(``)}),kB=XD({displayName:SB,name:CB,transport:nO([`stdio`,`sse`,`http`,`streamable-http`]),endpointUrl:fD().trim().max(1024,`Server URL 不能超过 1024 个字符`).default(``),command:fD().trim().max(4096,`Command 不能超过 4096 个字符`).default(``),args:fD().trim().max(8192,`Arguments 不能超过 8192 个字符`).default(``),apiKeyName:QD([iO(``),fD().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`环境变量名需为合法标识符`)]).default(``),apiKeyValue:fD().max(16384,`API Key 不能超过 16384 个字符`).default(``),description:DB}).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}SD().safeParse(e.endpointUrl).success||t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请输入有效的 Server URL`})}),AB=XD({displayName:SB,name:wB,callableName:wB,description:fD().trim().max(1024,`描述不能超过 1024 个字符`).default(``),sourceMode:nO([`upload`,`workspace`]).default(`upload`),sourcePath:fD().trim().max(4096,`工作区路径不能超过 4096 个字符`).default(``)}).superRefine((e,t)=>{e.sourceMode===`workspace`&&!e.sourcePath&&t.addIssue({code:`custom`,path:[`sourcePath`],message:`请填写工作区 Python 文件`})}),jB=XD({value:fD().max(16384,`API Key 不能超过 16384 个字符`)}),MB=XD({sandbox:nO([`read-only`,`read_only`,`workspace-write`,`workspace-write-auto`,`full-access`]),buildAfterCreate:HD(),codexProxy:nO([`auto`,`forced`,`direct`]),cloudRegion:fD().trim().max(128,`Region 不能超过 128 个字符`).default(``),cloudBucket:fD().trim().max(128,`KS3 Bucket 不能超过 128 个字符`).default(``),cloudAccessKey:fD().trim().max(256,`Access Key 不能超过 256 个字符`).default(``),cloudSecretKey:fD().trim().max(256,`Secret Key 不能超过 256 个字符`).default(``),cloudAccountId:fD().trim().max(128,`Account ID 不能超过 128 个字符`).default(``)});function NB(e){return e.status===`ready`||e.status===`conflict`}function PB(e){return new Set(e.filter(NB).map(e=>e.candidateId))}async function FB({candidates:e,selectedIds:t,overwriteIds:n,commit:r,onResult:i}){let a=e.filter(e=>t.has(e.candidateId)&&NB(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 IB={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}},LB={provider:`模型服务`,builtin:`ksadk 内置`,local:`工作区自定义`,market:`市场`},RB=20;async function zB(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function BB(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function VB(e){return e.replace(/^env:\/\//,``)}function HB(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 UB({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)(RB),[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 zB(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 zB(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 zB(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=IB[e],W=(0,s.useMemo)(()=>[{id:`name`,header:`名称`,minWidth:190,className:`resource-name-column`,headerClassName:`resource-name-column`,cell:e=>(0,G.jsx)(WB,{item:e})},{id:`source`,header:de.headings[0],minWidth:120,className:`resource-source-column`,headerClassName:`resource-source-column`,cell:e=>LB[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)(GB,{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)(KB,{item:e})},{id:`status`,header:`状态`,minWidth:92,className:`resource-status-column`,headerClassName:`resource-status-column`,cell:e=>(0,G.jsx)(qB,{item:e})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column resource-actions-column`,headerClassName:`actions-column resource-actions-column`,cell:e=>(0,G.jsx)(JB,{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)(xd,{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(IB).map(n=>(0,G.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e===n,onClick:()=>t(n),children:[IB[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)(Ih,{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)(Ih,{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)(Ih,{className:`compact-select`,ariaLabel:`资源排序`,value:p,options:[{value:`default`,label:`默认排序`},{value:`displayName:asc`,label:`名称升序`},{value:`displayName:desc`,label:`名称降序`}],onValueChange:m}),(0,G.jsx)(Ih,{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)(vm,{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)(YB,{model:A,onClose:()=>j(null),onChanged:oe}),M&&(0,G.jsx)(XB,{onClose:()=>N(!1),onAdded:()=>{N(!1),oe()}}),P&&(0,G.jsx)(ZB,{onClose:()=>F(!1),onConnected:()=>{F(!1),oe()}}),I&&(0,G.jsx)(QB,{item:I,onClose:()=>L(null)}),R&&(0,G.jsx)($B,{item:R,onClose:()=>z(null)}),B&&(0,G.jsx)(eV,{onClose:()=>V(!1),onCatalogChanged:oe}),H&&(0,G.jsx)(tV,{onClose:()=>ee(!1),onAdded:()=>{ee(!1),oe()}}),te&&(0,G.jsx)(Oa,{title:`确认删除资源「${te.displayName||te.name}」?`,description:`删除后已绑定该资源的 Agent 不会自动更新,需手动重新编辑。`,confirmText:`确认删除`,busy:U,onConfirm:le,onCancel:()=>ne(null)})]})}function WB({item:e}){let t=IB[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 GB({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 KB({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 qB({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 JB({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)(vd,{label:`${e.displayName} 的更多操作`,items:a})]})}function YB({model:e,onClose:t,onChanged:n}){let r=BB(e),i=VB(r),[a,o]=(0,s.useState)(null),c=S_({resolver:M_(jB),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 zB(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 zB(r,`凭证清除失败`));n?.(),J(`会话凭证已清除`,e.displayName),t()}catch(e){u({title:`凭证清除失败`,message:e.message})}f(``)}return(0,G.jsx)(Vg,{...c,children:(0,G.jsxs)(nk,{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)(rk,{kind:`error`,title:l.title,message:l.message})]})})}function XB({onClose:e,onAdded:t}){let n=S_({resolver:M_(OB),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 zB(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 zB(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(Ib(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)(nk,{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)(rk,{kind:`error`,title:`添加模型`,message:v})]})})}function ZB({onClose:e,onConnected:t}){let n=(0,s.useRef)(null),r=S_({resolver:M_(kB),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 zB(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(Ib(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 zB(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)(nk,{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)(Ih,{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)(rk,{kind:`error`,title:`连接失败`,message:a})]})})}function QB({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)(nk,{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 $B({item:e,onClose:t}){let[n,r]=(0,s.useState)(!1),i=e.contract||{},a=[[`Resource ID`,e.resourceId],[`来源`,LB[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)(nk,{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)(ez,{title:e.displayName||e.name,endpoint:`/api/v1/catalog/skills/${encodeURIComponent(e.resourceId)}/files`,onClose:()=>r(!1)})]})}function eV({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 zB(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=PB(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 FB({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 zB(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)(nk,{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,` / `,PB(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} 个文件 · ${HB(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)(rk,{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)(rk,{kind:`error`,title:`Skill 发现或导入失败`,message:v}),w&&(0,G.jsx)(Oa,{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)(ez,{title:E.displayName||E.name||`Skill`,endpoint:`/api/v1/catalog/skills/discoveries/${encodeURIComponent(i.inspectionToken)}/candidates/${encodeURIComponent(E.candidateId)}/files`,onClose:()=>D(null)})]})}function tV({onClose:e,onAdded:t}){let n=S_({resolver:M_(AB),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 zB(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(Ib(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)(nk,{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)(xB,{}),r===`upload`?(0,G.jsx)(Y,{label:`Python 文件`,requirement:`required`,hint:`拖放 .py 文件,或点击选择;检查只解析 AST,不会执行脚本。`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(yB,{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)(Ih,{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)(rk,{kind:`error`,title:`Tool 添加失败`,message:d})]})})}function nV(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 rV({value:e,onChange:t,error:n,generate:r=nV,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 iV={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 aV(e){return e&&iV[e]?.text||iV.resolving_model.text}function oV(e){return e&&iV[e]?.tip||iV.resolving_model.tip}function sV(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 cV({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=oV(e),o=t?sV(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:aV(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 lV={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`},uV=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 dV(e,t){return(0,s.useSyncExternalStore)(n=>e.subscribe(t,n),()=>e.getEntries(t),()=>e.getEntries(t))}function fV(e){return e==null}function pV(e,t,n){return Object.defineProperty(e,t,{writable:!0,value:n,enumerable:!1})}function mV(e,t){return arguments.length===1?t=>mV(e,t):e in globalThis&&t instanceof globalThis[e]||Object.prototype.toString.call(t).slice(8,-1)===e}function hV(e){return mV(`ArrayBuffer`,e)||mV(`SharedArrayBuffer`,e)}function gV(e){return hV(e)||ArrayBuffer.isView(e)}var _V;(function(e){e.is=hV,e.isSource=gV;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 yV(e){return vV(e,[45,95],45)}var bV=yV,xV;(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})(xV||={});var SV=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`)},CV=function*(){}.constructor,wV=async function*(){}.constructor;function TV(e){return!(!e.prototype||e instanceof CV||wV!==Function&&e instanceof wV)}function EV(e,t){if(e===Object.prototype)return t;let n=Object.create(EV(Object.getPrototypeOf(e),t));for(let t of Reflect.ownKeys(e))Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function DV(e){return e&&(typeof e==`object`||typeof e==`function`)}function OV(e,t){let n=e;for(;n;){let e=Reflect.getOwnPropertyDescriptor(n,t);if(e)return e;n=Object.getPrototypeOf(n)}}function kV(e,t){if(!DV(t))return t;if(Object.hasOwn(t,Q.shadow))return Object.getPrototypeOf(t);let n=t[Q.tracker];return n?PV(e,t,n):t}function AV(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 jV(e,t,n){return AV(e,Object.defineProperty(Object.create(null),t,{value:n,writable:!1}))}function MV(e,t,n,r){if(!n)return r;let i=Reflect.getOwnPropertyDescriptor(t,n)?.value;return i?jV(r,n,e.extend({[Q.shadow]:i})):r}function NV(e,t,n,r){return new Proxy(t,{apply:(t,i,a)=>(i===n&&(i=r),kV(e,Reflect.apply(t,i,a)))})}function PV(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}`,jV(e,Q.receiver,i));let a,o,s=OV(t,r);s&&`value`in s?o=s.value:(a=MV(e,t,n.property,i),o=Reflect.get(t,r,a));let c=o?.[Q.tracker];return c?PV(e,o,c):!n.noShadow&&typeof o==`function`?(a??=MV(e,t,n.property,i),NV(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,jV(e,Q.receiver,a));let o=MV(e,t,n.property,a);return Reflect.set(t,r,i,o)},apply:(e,t,n)=>FV(r,e,t,n)});return r}function FV(e,t,n,r){return t[Q.invoke]?t[Q.invoke].apply(e,r):Reflect.apply(t,n,r)}function IV(e,t,n){let r=function(...e){return FV(PV(r.ctx,r,n),r,this,e)};return pV(r,`name`,e),Object.setPrototypeOf(r,t)}function LV(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 RV(e,t=zV()){let n={offset:1,error:Error()};try{let r=e(n);return DV(r)&&`then`in r?r.then(void 0,e=>LV(n,e,t)):r}catch(e){LV(n,e,t)}}function zV(e=0){let t=Error();return()=>t.stack.split(` +`).slice(3+e)}function BV(e){return e!==null&&e!==!1&&e!==void 0}var VV=class{ctx;_hooks={};constructor(e){this.ctx=e,pV(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 SV)[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?.[uH.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(BV(n))return n}}bail(...e){for(let t of this.dispatch(`bail`,e)){let n=t(...e);if(BV(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}},HV={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)=>WV.color(t,WV.code(n.name,t.colors),e)};function UV(e){return e instanceof Error&&Array.isArray(e.errors)}var WV=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?KV:GV:[];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]??HV[i];return typeof a==`function`?a(n.shift(),e,t):r});let i=e.formatters?.o??HV.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(UV(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??=bV(n.name),new WV({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 JV(e){let t=e.stack.split(` +`);return t.splice(0,2,`Error: ${e.message}`),e.stack=t.join(` +`),e}var YV=[`prototype`,`then`];function XV(e){return typeof e==`symbol`||YV.includes(e)||parseInt(e).toString()===e||e.startsWith(`_`)}var ZV=class{ctx;static handler={get:(e,t,n)=>{if(XV(t))return Reflect.get(e,t,n);if(Reflect.has(e,t))return kV(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 kV(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?JV(e):e}},set:(e,t,n,r)=>{if(XV(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 JV(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?JV(e):e}},has:(e,t)=>XV(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,pV(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 kV(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(fV(r))return r;let a=t?AV(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?AV(n,a):a;return Reflect.set(a,e,t,o)}})},`ctx.mixin(${JSON.stringify(e)})`)}trace(e){return kV(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)})}},QV=Symbol.for(`ValidationError`),$V=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($V.prototype,QV,{value:!0});function eH(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 $V(n.issues);return n.value}var tH=new WeakMap;function nH(e){let t=e();return tH.get(e)?.()??t}function rH(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 iH=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`}})(iH||={});var aH=`__INACTIVE__`,oH=class{parent;inject;runtime;uid;ctx;config;_config;state=0;dispose;store;inertia;_hooks=Object.create(null);_disposables=new SV;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[uH.intercept]=Object.create(e[uH.intercept]);for(let[e,n]of t)fV(n)||(this.ctx[uH.intercept][e]=n)}this._runner={epoch:aH,getOuterStack:i,execute:function(){if(TV(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,rH(this.context,this),this.ctx.registry.has(r.callback)&&(e(),r.fibers.length||this.ctx.registry.delete(r.callback)),this._setEpoch(aH),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 iH(`INACTIVE_EFFECT`)}_execute(e){let t=e.epoch;return RV(n=>{let r=t=>{if(typeof t==`function`)e.collect(t);else if(!fV(t))throw TypeError(`Invalid effect`)},i=e.execute.call(this);if(typeof i==`function`)return e.collect(i);if(!fV(i)){if(!DV(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 iH(`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(()=>nH(t));else{let n=nH(t);DV(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:zV()},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(DV(t)&&`then`in t){let e=Promise.resolve(t).finally(()=>{h(),m===e&&(m=void 0)});return m=e}return h(),t},y=pV(()=>s.epoch?(s.epoch=!1,v(()=>l?_(g()):c?_(c):a())):p?m:void 0,Q.effect,o);tH.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 DV(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===aH?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(kV(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=aH;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!==aH&&t===aH?(this.inertia=this._reload(),1):(this.inertia=this._unload(),5)))}_resolveConfig(e){return e=this.context.waterfall(this,`internal/config`,e,()=>e),this.runtime?eH(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=aH}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 RV(async t=>{await Promise.resolve(),t.error=Error(),await nH(e)},this._runner.getOuterStack)}catch(e){this.ctx.logger.error(e)}})),this.store=void 0,this._updateState(()=>{if(this._runner.epoch===aH)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(aH),this._refresh(),await this.await()}update(e,t=!1){if(this.assertActive(),this._config=e,this.state!==2){this._error=void 0,this._setEpoch(aH),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 sH(e){return e&&typeof e==`object`&&typeof e.apply==`function`}function cH(e,t){return function(n,r){if(r.kind===`class`)Object.hasOwn(n,`inject`)||(pV(n,`inject`,Object.create(Object.getPrototypeOf(n).inject??null)),pV(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?AV(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})(cH||={});var lH=class{ctx;_counter=0;_internal=new Map;constructor(e){this.ctx=e,pV(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(sH(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=zV()){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 SV,Config:e.Config},this._internal.set(r,i)}let a=new oH(this.ctx,t,cH.resolve(e.inject),i,n),o=Object.create(a);return o.then=(e,t)=>a.await().then(e,t),o}},uH=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,ZV.handler);return this.root=e,this.baseUrl=void 0,this.fiber=new oH(e,{},Object.create(null),null,()=>[]),this.reflect=new ZV(e),this.registry=new lH(e),this.events=new VV(e),this.logger=new qV(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(kV(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=IV(t,EV(Object.getPrototypeOf(this),Function.prototype),r)),n.ctx=e,n.name=t,pV(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]?IV(this.name,this,this[Q.tracker]):Object.create(this),Object.assign(n,t)}[Q.resolveConfig](e,t){let n=this.ctx[uH.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 dH=class{contributions=new uV;context=new uH;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()}},fH=new dH,pH=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}];function mH(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?[...pH]:[...pH,{value:`plugin`,label:r.size===1?`${n[0]?.displayName||t.find(e=>e.selectable)?.displayName||`DSH AgentProvider`} · Plugin`:`DSH AgentProvider · ${r.size} 个可用`}]}var hH=`agentkit.studio.agentDraft.v1`;function gH(e){return e?.requiredSecretRefs?.[0]||e?.contract?.credentialRef||e?.contract?.credential_ref||e?.contract?.requiredSecretRefs?.[0]||e?.contract?.required_secret_refs?.[0]||``}var _H={loose:{title:`宽松权限策略`,description:`本地 Tool 全部自动允许,外部操作仍需审批。`},strict:{title:`严格权限策略`,description:`只读 Tool 自动允许,外部或写入操作需要审批。`},custom:{title:`自定义权限策略`,description:`沿用每个 Tool Contract 中配置的审批策略。`}},vH=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}],yH=[[`定义 Agent`,`模板与系统提示词`],[`绑定能力`,`Model · Tool · MCP · Skill`],[`Prompt 与策略`,`检查并调整`],[`检查并创建`,`构建与打开会话`]],bH=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]),xH=[`deepseek`,`glm`,`kimi`,`minimax`,`qwen`];function SH(e){let t=String(e.contract?.model||e.name||``).toLowerCase(),n=t.includes(`/`)?t.split(`/`,2)[1]:t,r=n.replaceAll(`.`,`-`),i=xH.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?xH.length:i,a,n]}function CH(e,t){let[n,r,i]=SH(e),[a,o,s]=SH(t);if(n!==a)return n-a;for(let e=0;enull);if(!t.ok)throw Error(n?.error?.message||`构建状态获取失败(${t.status})`);if(bH.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 OH({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=dV(fH.contributions,lV.agentProvider),[T,E]=(0,s.useState)(1),[D,O]=(0,s.useState)(1),k=S_({resolver:M_(LO),defaultValues:{name:`New Agent`,slug:nV(),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=S_({resolver:M_(zO),defaultValues:{name:``,slug:nV(),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=S_({resolver:M_(BO),defaultValues:{name:``,slug:nV()}}),[Ft,It]=(0,s.useState)(null),Lt=S_({resolver:M_(VO),defaultValues:{name:``,slug:nV(),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(gH).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(CH),[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:KO(e),disabled:!e.selectable})),[Jt]),Zt=(0,s.useMemo)(()=>mH(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=gH(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`${hH}: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{WO(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:WO(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(Ib(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 DH(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:nV(),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(TH(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=EH(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(Ib(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:nV()})}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(Ib(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:nV(),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(Ib(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=_H[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?[...yH.slice(0,3),[`检查并创建`,`校验声明与打开会话`]]:yH,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)(xd,{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)(Da,{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)(tk,{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:wH(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)(cV,{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:[vH.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)(Ih,{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)(Ih,{id:`conversationRuntime`,ariaLabel:`Runtime`,value:tn,options:vH,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)(Ob,{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)(Ob,{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)(Ob,{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)(Ob,{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)(rV,{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:vH.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)(yB,{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)(rV,{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)(Ab,{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)(rV,{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)(Ab,{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)(rV,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Ob,{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)(Ob,{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)(Ob,{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)(Ob,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Da,{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)(YB,{model:Pe,onClose:()=>Fe(null),onChanged:Ut}),Ie&&(0,G.jsx)(ZB,{onClose:()=>Re(!1),onConnected:()=>{Re(!1),Ut()}})]})}function kH(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 AH(e){return e.displayName||e.command.payload.content?.slice(0,28)||e.taskId}function jH(e){return e.kind===`once`?`单次 · ${kH(e.at)}`:e.kind===`interval`?`每 ${e.everySeconds||60} 秒`:e.expression||`Cron`}function MH(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 NH(e){return{...MH(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 PH(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 FH(e){return e===`succeeded`?`成功`:e===`failed`?`失败`:e===`running`?`运行中`:e===`accepted`?`已接收`:e===`claimed`?`已认领`:e===`skipped`?`已跳过`:e===`cancelled`?`已取消`:e||`未知`}function IH(e){return e===`succeeded`?`ready`:e===`failed`||e===`cancelled`?`failed`:`pending`}function LH(e){return e.state===`claimed`||e.state===`accepted`||e.state===`running`}var RH={DISPATCH_FAILED:`提交失败`,PLUGIN_EXECUTION_FAILED:`插件执行失败`,RUNTIME_TIMEOUT:`执行超时`,misfire_skipped:`错过计划时间,已按策略跳过`,concurrency_forbid_active_occurrence:`已有执行未结束,本次已跳过`,runtime_completed:`运行时已确认完成`};function zH(e){return e?RH[e]||e:``}function BH(e){if(!e.errorCode)return`执行说明`;let t=zH(e.errorCode);return t===e.errorCode?t:`${t} · ${e.errorCode}`}function VH(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 HH({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=VH(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":IH(e.state),children:FH(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:kH(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:FH(e.state)}),(0,G.jsx)(`time`,{children:kH(e.at)}),(e.errorCode||e.detail)&&(0,G.jsx)(`small`,{children:zH(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:BH(e)}),(0,G.jsx)(`span`,{children:zH(e.detail)||`—`})]})]},e.occurrenceId)})}):(0,G.jsx)(`p`,{className:`automation-empty`,children:`还没有执行记录。`})}function UH({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)(()=>MH(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(MH(e))},[e,w]);let R=b.some(LH);(0,s.useEffect)(()=>{if(!v||!R)return;let e=window.setInterval(()=>{L(v,!1).then(e=>{e.some(LH)||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,AH(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:AH(e)}),(0,G.jsx)(`span`,{children:B.get(e.target.agentId||``)||e.target.agentId||`历史任务`})]})},{id:`trigger`,header:`触发规则`,minWidth:150,cell:e=>jH(e.schedule)},{id:`next`,header:`下次执行`,minWidth:120,cell:e=>kH(e.nextRunAt)},{id:`mode`,header:`会话`,minWidth:100,cell:e=>e.continuity===`continue_session`?`继续会话`:`新会话`},{id:`recent`,header:`最近终态`,minWidth:110,cell:e=>te.has(e.taskId)?FH(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(NH(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=PH(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(MH(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={...NH(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(PH(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)(xd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>{T(``),C(MH(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:kH(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)(vm,{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=>`查看定时任务 ${AH(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(MH(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:AH(v)}),(0,G.jsxs)(`p`,{children:[`下次执行 `,kH(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:jH(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]?`${FH(b[0].state)} · ${kH(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)(HH,{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(MH(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)(HH,{items:ee,taskNames:V,agentNames:B})]}),A&&(0,G.jsx)(Oa,{title:`删除定时任务「${AH(A)}」?`,description:`任务定义将被删除;已写入的执行历史仍可用于审计。`,confirmText:`删除任务`,busy:!1,onConfirm:()=>void oe(),onCancel:()=>j(null)})]})}function WH(e,t){let n=new URLSearchParams({buildId:e});return t&&n.set(`agentId`,t),`#/deployments/new?${n.toString()}`}function GH(e){return`#/deployments/${encodeURIComponent(e)}`}function KH(e){if(window.location.hash===e){window.dispatchEvent(new HashChangeEvent(`hashchange`));return}window.location.hash=e}function qH(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function JH({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)(nk,{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)(Ab,{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 YH({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||qH(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&&KH(N?GH(N.id):WH(M.id,D.metadata.id))}return(0,G.jsxs)(`div`,{className:`page-container`,"data-layout":`document`,children:[(0,G.jsxs)(xd,{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)(vd,{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:qH(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)(UH,{currentAgentId:e,agents:[{metadata:{id:e,name:D.metadata.name}}],onSelectAgent:()=>{},scopedAgentId:e,embedded:!0,onTaskCountChanged:C}),p&&(0,G.jsx)(Oa,{title:`确认删除 Agent「${D.metadata.name}」?`,description:`Agent ID:${D.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:v,onConfirm:E,onCancel:()=>m(!1)}),h&&(0,G.jsx)(JH,{detail:o,catalog:l,buildId:M?.id,onClose:()=>_(!1)})]})}var XH=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function ZH(e){return e===`SUCCEEDED`?`ready`:[`FAILED`,`CANCELLED`,`TIMED_OUT`].includes(e)?`failed`:e===`IDLE`?`idle`:`pending`}function QH(e){return{IDLE:`尚未构建`,QUEUED:`排队中`,RUNNING:`构建中`,SUCCEEDED:`构建完成`,FAILED:`构建失败`,CANCELLED:`已取消`,TIMED_OUT:`已超时`}[e]||e}function $H(e,t=42){return e.length>t?`${e.slice(0,t)}…`:e}function eU(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 tU(e){let t=await g(`/api/v1${e}`);return t.ok?eU(await t.text()):[]}function nU({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:QH(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),KH(WH(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 tU(`/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`),XH.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=ZH(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)(xd,{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:$H(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?`· ${$H(d,28)}`:``]}),(0,G.jsx)(`pre`,{ref:h,children:l})]})]})]})}var rU=new Set([`hermes`,`openclaw`]);function iU(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 aU(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(iU(e.capabilities))return{kind:`studio-session-events`,reason:`declared-session-event-chat-capability`};let t=String(e.runtimeType||e.framework||``).trim().toLowerCase();return rU.has(t)?{kind:`official-dashboard`,reason:`native-runtime-without-session-event-chat-capability`}:{kind:`studio-session-events`,reason:`studio-compatible-framework`}}var oU={READY:5,DEPLOYING:4,ADMITTING:3,FAILED:2,ROLLED_BACK:1};function sU(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=oU[r.status||``]||0,l=oU[i?.status||``]||0;(!i||o&&!s||o===s&&c>l)&&n.set(e,r)}return[...n.values()]}function cU(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=sU(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 lU=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`,`INTERRUPTED`]),uU=`agentkit-studio:deployment-operation-attempts:v2`,dU=500,fU=new Set([403,404,410]),pU=new Map,mU={},hU=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`OperationStatusError`}};function gU(){try{return typeof document>`u`?void 0:document.defaultView?.localStorage}catch{return}}function _U(e,t){return t?g(e,{signal:t}):g(e)}function vU(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 yU(e){try{let t=gU();if(!t)return{...mU[e]||{}};let n=JSON.parse(t.getItem(e)||`{}`);return n&&typeof n==`object`?n:{}}catch{return{...mU[e]||{}}}}function bU(e,t){mU={...mU,[e]:{...t}};try{gU()?.setItem(e,JSON.stringify(t))}catch{}}function xU(e){return`studio-${e}-${globalThis.crypto?.randomUUID?.()||`${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}`}function SU(e,t,n){let r=yU(e),i=r[t];if(i?.idempotencyKey)return i;let a={actionKey:t,idempotencyKey:xU(n),operationId:``};return r[t]=a,bU(e,r),a}function CU(e,t,n){let r={...t,operationId:n},i=yU(e);return i[t.actionKey]=r,bU(e,i),r}function wU(e,t){let n=yU(e),r=n[t.actionKey];!r||r.idempotencyKey!==t.idempotencyKey||(delete n[t.actionKey],bU(e,n))}function TU(e){return e instanceof DOMException&&e.name===`AbortError`}function EU(e){if(e.aborted)throw new DOMException(`Operation aborted`,`AbortError`)}async function DU(e,t){EU(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 OU(e,t){let n=pU.get(e)||Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.then(()=>i);pU.set(e,a),await n;try{return await t()}finally{r(),pU.get(e)===a&&pU.delete(e)}}async function kU(e,t,n){EU(t);let r=navigator.locks;return r?r.request(e,{mode:`exclusive`,signal:t},async()=>n()):OU(e,async()=>(EU(t),n()))}async function AU(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`${uU}:${encodeURIComponent(r)}:${encodeURIComponent(i)}`}async function jU(e,t,n){for(;;){await DU(dU,n);let r=await g(`/api/v1/operations/${encodeURIComponent(e)}`,{signal:n});if(!r.ok)throw new hU(`${t}状态读取失败(${r.status})`,r.status);let i=await r.json();if(lU.has(i.status))return i}}async function MU(e,t,n,r,i,a){let o=`${e}:${t}`,s=await kU(o,i,async()=>{let o=SU(e,t,n);if(!o.operationId){let t=await a(o.idempotencyKey,i);if(!t.ok){t.status<500&&wU(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 wU(e,o),Error(`${r}提交结果缺少 operation_id`);o=CU(e,o,s)}return o}),c;try{c=await jU(s.operationId,r,i)}catch(t){throw t instanceof hU&&fU.has(t.status)&&await kU(o,i,async()=>{wU(e,s)}),t}return await kU(o,i,async()=>{wU(e,s)}),c}function NU(e){return[`READY`,`RUNNING`].includes(e)?`ready`:[`FAILED`,`ROLLED_BACK`,`ERROR`,`TERMINATED`].includes(e)?`failed`:[`ADMITTING`,`DEPLOYING`,`CREATING`,`UPDATING`].includes(e)?`pending`:`idle`}function PU(e){return{ADMITTING:`准入中`,DEPLOYING:`部署中`,READY:`已就绪`,FAILED:`部署失败`,ROLLED_BACK:`已回滚`,RUNNING:`运行中`,CREATING:`创建中`,UPDATING:`更新中`,ERROR:`异常`,TERMINATED:`已终止`}[e]||`状态未知`}function FU(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function IU(){let e=window.location.hash.match(/^#\/deployments\/([^/?]+)(?:\?.*)?$/),t=e?decodeURIComponent(e[1]):``;return t===`new`?``:t}function LU(){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 RU(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}function zU({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)(()=>LU()),[k,j]=(0,s.useState)([]),[M,N]=(0,s.useState)(()=>LU()?.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([_U(`/api/v1/deployments`,e),_U(`/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(()=>_U(`/api/v1/cloud-agents/${encodeURIComponent(t)}`,e)).then(async e=>e.ok?await e.json():null).catch(e=>{if(TU(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=cU(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){!TU(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=LU();if(O(e),e){N(e.buildId),b(null);return}let t=IU();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=>NU(e.status)===`ready`).length,pending:r.filter(e=>NU(e.status)===`pending`).length,failed:r.filter(e=>NU(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`?vU(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=vU(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(aU(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 _U(`/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 _U(`/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 _U(`/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 _U(`/api/v1/cloud-agents/${encodeURIComponent(a.agentId)}`,n).catch(e=>{if(TU(e))throw e;return null});e?.ok&&(o=vU(a,await e.json()))}if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t));let s=await _U(`/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 _U(`/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(TU(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 MU(await AU(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||`部署未完成`);EU(n.signal),await ne(n.signal),EU(n.signal);let i=String(r.resourceId||``).trim();KH(i?GH(i):`#/deployments`),J(`已提交云端部署`,`${e.agentName||e.agentId} · ${e.id}`)}catch(e){!TU(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 MU(await AU(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||`更新未完成`);EU(r.signal),b(null),await ne(r.signal),EU(r.signal),J(`已提交云端更新`,`Build ${t}`)}catch(e){!TU(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 MU(await AU(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||`回滚未完成`);EU(o.signal),h(!1),p(``),await ne(o.signal),await se(e,!1,o.signal),EU(o.signal),J(`已提交版本回滚`,`云端版本 ${n}`)}catch(e){!TU(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)(xd,{children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>KH(`#/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:FU(e.id,24)}),(0,G.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:RU(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=aU(y.deployment);return(0,G.jsxs)(`div`,{className:`delivery-page deployment-detail-page`,"data-layout":`document`,children:[(0,G.jsxs)(xd,{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`}),NU(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:PU(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:RU(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:RU(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)(Oa,{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)(xd,{children:[(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>KH(`#/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=aU(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:FU(e.agentId||e.id,24)})]})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-status-badge`,"data-state":NU(e.status),children:PU(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:FU(e.versionId||`—`,20)})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-updated-at`,children:RU(e.updatedAt)})}),(0,G.jsxs)(`td`,{className:`delivery-row-actions`,children:[NU(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)(vd,{label:`${e.agentName||e.agentId||e.id} 的更多操作`,items:[{label:n?`正在刷新状态`:`刷新状态`,disabled:n,onSelect:()=>void re(e)},...NU(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:()=>KH(`#/deployments/new`),children:`部署 Agent`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`创建 Agent`})]})]}),C&&(0,G.jsx)(Oa,{title:`删除云端 Agent?`,description:`将删除 ${C.agentId||C.id} 的云端实例和本地部署记录。此操作不会删除本地 Agent 与 Build。`,confirmText:`删除云端 Agent`,busy:T,onConfirm:()=>void W(),onCancel:()=>w(null)})]})}var BU=e=>typeof e==`boolean`||e instanceof Boolean,VU=e=>typeof e==`number`||e instanceof Number,HU=e=>typeof e==`bigint`||e instanceof BigInt,UU=e=>!!e&&e instanceof Date,WU=e=>typeof e==`string`||e instanceof String,GU=e=>Array.isArray(e),KU=e=>typeof e==`object`&&!!e,qU=e=>!!e&&e instanceof Object&&typeof e==`function`;function JU(e,t){return t===void 0&&(t=!1),!e||t?`"${e}"`:e}function YU(e,t,n){return n?JSON.stringify(e):t?`"${e}"`:e}function XU(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 ZU({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},JU(t,l.quotesForFieldNames),`:`):(0,s.createElement)(`span`,{className:l.label},JU(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)(tW,{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 ZU(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},JU(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 QU(e){let{field:t,value:n,style:r,lastElement:i,shouldExpandNode:a,clickToExpandNode:o,level:s,outerRef:c,beforeExpandChange:l}=e;return XU({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 $U(e){let{field:t,value:n,style:r,lastElement:i,level:a,shouldExpandNode:o,clickToExpandNode:s,outerRef:c,beforeExpandChange:l}=e;return XU({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 eW(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):WU(n)?(a=YU(n,!r.noQuotesForStringValues,r.stringifyStringValues),o=r.stringValue):BU(n)?(a=n?`true`:`false`,o=r.booleanValue):VU(n)?(a=n.toString(),o=r.numberValue):HU(n)?(a=`${n.toString()}n`,o=r.numberValue):a=UU(n)?n.toISOString():qU(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},JU(t,r.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:o},a),!i&&(0,s.createElement)(`span`,{className:r.punctuation},`,`))}function tW(e){let t=e.value;return GU(t)?(0,s.createElement)($U,Object.assign({},e)):KU(t)&&!UU(t)&&!qU(t)?(0,s.createElement)(QU,Object.assign({},e)):(0,s.createElement)(eW,Object.assign({},e))}var nW={"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`},rW={container:nW[`container-light`],basicChildStyle:nW[`basic-element-style`],childFieldsContainer:nW[`child-fields-container`],label:nW[`label-light`],clickableLabel:nW[`clickable-label-light`],nullValue:nW[`value-null-light`],undefinedValue:nW[`value-undefined-light`],stringValue:nW[`value-string-light`],booleanValue:nW[`value-boolean-light`],numberValue:nW[`value-number-light`],otherValue:nW[`value-other-light`],punctuation:nW[`punctuation-light`],collapseIcon:nW[`collapse-icon-light`],expandIcon:nW[`expand-icon-light`],collapsedContent:nW[`collapsed-content-light`],noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:{collapseJson:`collapse JSON`,expandJson:`expand JSON`},stringifyStringValues:!1};nW[`container-dark`],nW[`basic-element-style`],nW[`child-fields-container`],nW[`label-dark`],nW[`clickable-label-dark`],nW[`value-null-dark`],nW[`value-undefined-dark`],nW[`value-string-dark`],nW[`value-boolean-dark`],nW[`value-number-dark`],nW[`value-other-dark`],nW[`punctuation-dark`],nW[`collapse-icon-dark`],nW[`expand-icon-dark`],nW[`collapsed-content-dark`];var iW=()=>!0,aW=e=>e<1,oW=e=>{let{data:t,style:n=rW,shouldExpandNode:r=iW,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&&KU(t)?Object.entries(t).map(e=>{let[t,o]=e;return(0,s.createElement)(tW,{key:t,field:t,value:o,style:{...rW,...n},lastElement:!0,level:1,shouldExpandNode:r,clickToExpandNode:i,beforeExpandChange:a,outerRef:l})}):(0,s.createElement)(tW,{value:t,style:{...rW,...n},lastElement:!0,level:0,shouldExpandNode:r,clickToExpandNode:i,outerRef:l,beforeExpandChange:a}))};function sW(e){return e===`failed`||e===`canceled`||e===`cancelled`||e===`interrupted`?3:e===`completed`?2:+(e===`running`)}function cW(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=sW(t.status)>=sW(e?.status||null)?t.status??e?.status??null:e?.status??null,d=!!(u&&sW(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 lW(e,t){let n=e.byRecordId.get(t.recordId);if(n===void 0){e.byRecordId.set(t.recordId,e.items.length),e.items.push(cW(void 0,t));return}e.items[n]=cW(e.items[n],t)}function uW(e){return{...e,items:[...e.items],bySeq:new Map(e.bySeq),byRecordId:new Map(e.byRecordId)}}function dW(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),lW(n,t),n.lastSeqId=t.seqId);return n}function fW(e,t,n=!0){if(e.bySeq.has(t.seqId))return e;let r=uW(e);if(r.bySeq.set(t.seqId,t),t.seqId<=r.lastSeqId)return r;if(!n)return lW(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;)lW(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 pW(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=dW([...r.values()],n);return i.followTail=e.followTail,i}function mW(e){return e===null||Number.isNaN(e)?`不可用`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(e<1e4?2:1)} s`}function hW(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 gW(e){return[vW(e),e.status||`未上报`,mW(e.durationMs)].join(` · `)}function _W(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function vW(e){let t=e.details.name??e.details.model;return typeof t==`string`&&t?t:e.summary}function yW(e,t){let n=_W(e.details.usage)[t];return typeof n==`number`?String(n):`-`}function bW(e){return{user:`User`,context:`Context`,assistant:`Assistant`,tool:`Tool`,approval:`Approval`,artifact:`Artifact`,system:`System`}[e]}function xW(e){return e.category===`user`||e.category===`context`?`input`:e.category===`assistant`?`model`:e.category===`tool`?`tools`:null}function SW(e,t){let n=new URLSearchParams({limit:`100`});return t&&n.set(`invocationId`,t),`/api/v1/sessions/${encodeURIComponent(e)}/events?${n}`}function CW({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:vW(e)}),(0,G.jsxs)(`span`,{children:[bW(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 wW({sessionId:e,invocationId:t,onSelectionChange:n}){let[r,i]=(0,s.useState)(()=>dW()),[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(dW()),h(null),g(SW(e,t)).then(async e=>{if(!e.ok)throw Error(`轨迹加载失败(${e.status})`);return e.json()}).then(a=>{if(n)return;let o=dW(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=>fW(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)=>fW(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=>pW(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(_W(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=>xW(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 · `,mW(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=>xW(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:vW(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":gW(t),onClick:()=>h(t.recordId),children:[(0,G.jsx)(`span`,{className:`trajectory-row-icon`,children:hW(t.category)}),(0,G.jsxs)(`span`,{className:`trajectory-row-copy`,children:[(0,G.jsx)(`strong`,{children:vW(t)}),(0,G.jsxs)(`small`,{children:[bW(t.category),` · `,t.status||`未上报`]})]}),C.hasUsage&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:yW(t,`input_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:yW(t,`output_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:yW(t,`reasoning_tokens`)})]}),(0,G.jsx)(`span`,{className:`trajectory-row-duration`,children:mW(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 TW(e,t=18){let n=String(e||``);return n.length>t?`${n.slice(0,t)}…`:n}function EW(e,t=`-`){return e==null||e===``?t:String(e)}function DW(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 OW(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 kW(e){return e==null?`未上报`:new Intl.NumberFormat(`zh-CN`).format(Number(e))}function AW(e){if(e==null||typeof e==`boolean`)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function jW(e){let t=AW(e.totalTokens);if(t!==null&&e.usageCompleteness?.totalTokens!==!1)return t;let n=AW(e.inputTokens),r=AW(e.outputTokens);return n!==null&&r!==null&&e.usageCompleteness?.inputTokens!==!1&&e.usageCompleteness?.outputTokens!==!1?n+r:null}function MW(e){return[e.inputTokens,e.outputTokens,e.totalTokens].some(e=>AW(e)!==null)}function NW(e){let t=jW(e);return t===null?MW(e)?`部分上报`:`未上报`:kW(t)}function PW(e){let t=AW(e.inputTokens),n=AW(e.outputTokens);return`${t===null?`—`:`${e.usageCompleteness?.inputTokens===!1?`≥`:``}${kW(t)}`} 输入 · ${n===null?`—`:`${e.usageCompleteness?.outputTokens===!1?`≥`:``}${kW(n)}`} 输出`}function FW(e){let t=jW(e);if(t!==null)return kW(t);if(AW(e.totalTokens)!==null)return`部分上报`;let n=AW(e.inputTokens),r=AW(e.outputTokens);return n!==null&&r!==null||n!==null&&e.usageCompleteness?.inputTokens===!1||r!==null&&e.usageCompleteness?.outputTokens===!1?`部分上报`:n===null?r===null?`未上报`:`${kW(r)} 输出`:`${kW(n)} 输入`}function IW(e){try{let t=Number(BigInt(String(e||`0`))/1000000n);return t?new Date(t).toISOString():`-`}catch{return`-`}}function LW(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 RW(e){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2)}catch{return String(e)}}function zW(e){return e==null?`-`:typeof e==`object`?RW(e):String(e)}var BW={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 节点`}},VW=[`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 HW(e){if(!e)return``;for(let t of VW){let n=e[t];if(typeof n==`string`&&n.trim())return n;if(typeof n==`number`||typeof n==`boolean`)return String(n)}return``}function UW(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=HW(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 WW(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 GW({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(),WW(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 KW({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)(GW,{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 qW({span:e}){let t=e.attributes||{},n=t[`agentkit.tool.input`],r=t[`agentkit.tool.output`],i=UW(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)(KW,{label:`工具输入`,text:zW(n),tone:`tool`}),r!=null&&r!==``&&(0,G.jsx)(KW,{label:`工具输出`,text:zW(r),tone:`tool`}),i.map((e,t)=>(0,G.jsx)(KW,{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 JW({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:zW(t)}),(0,G.jsx)(GW,{text:zW(t),className:`trace-kv-copy`})]},e))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`没有可展示的字段。`})})}var YW=[{id:`spans`,label:`Spans`},{id:`trajectory`,label:`轨迹`},{id:`attributes`,label:`Attributes`},{id:`events`,label:`Events`},{id:`resource`,label:`Resource`},{id:`raw`,label:`Raw OTLP`}],XW=50;function ZW({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(XW),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}`}),DW(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:TW(e.runId||e.traceId,32)})]})]})}},{id:`startedAt`,header:`开始时间`,minWidth:140,cell:e=>LW(e.startedAt)},{id:`duration`,header:`耗时`,width:110,cell:e=>OW(e.durationMs)},{id:`model`,header:`模型`,minWidth:140,cell:e=>e.model||`-`},{id:`tokens`,header:`Token`,width:110,cell:e=>FW(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 WW(`00-${_.traceId}-${_.rootSpanId}-01`),J(`traceparent 已复制`,TW(_.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 WW(JSON.stringify(e,null,2)),J(`Raw OTLP 已复制`,TW(_.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)(bd,{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)(xd,{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)(QW,{overview:m,range:f}),!_&&(0,G.jsxs)(`div`,{className:`trace-toolbar`,"aria-label":`Trace 筛选`,children:[(0,G.jsx)(Ih,{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)(Ih,{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:_?DW(_.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:_?OW(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:_?NW(ge):`未上报`}),(0,G.jsx)(`small`,{children:_&&MW(ge)?PW(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)(vm,{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:XW,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:TW(e.runId||e.traceId,22)})]})]}),(0,G.jsxs)(`span`,{className:`trace-run-meta`,children:[(0,G.jsx)(`span`,{className:`mono`,children:OW(e.durationMs)}),(0,G.jsx)(`span`,{className:`badge`,"data-state":e.status===`FAILED`?`failed`:e.status===`COMPLETED`?`ready`:`running`,title:e.status,children:DW(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,` · `,TW(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:OW(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?EW(W.name):`Span 详情`}),(0,G.jsx)(`span`,{children:W?`${EW(W.kind)} · ${DW(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:YW.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)(wW,{sessionId:_.sessionId,invocationId:_.runId||void 0,onSelectionChange:w}),(0,G.jsx)(`aside`,{className:`trajectory-selection`,"aria-label":`轨迹详情`,children:C?(0,G.jsx)(CW,{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)(qW,{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:DW(W.status)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`开始`}),(0,G.jsx)(`dd`,{children:IW(W.startTimeUnixNano)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`耗时`}),(0,G.jsx)(`dd`,{children:OW(W.durationMs)})]})]})]}),W&&x===`attributes`&&(0,G.jsx)(JW,{values:W.attributes||{}}),W&&x===`events`&&(0,G.jsx)(tG,{events:W.events||[]}),W&&x===`resource`&&(0,G.jsx)(JW,{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)(oW,{"aria-label":`Raw OTLP JSON`,data:T,style:BW,shouldExpandNode:M?iW:aW,clickToExpandNode:!0})}),x===`raw`&&!D&&!T&&(0,G.jsx)(`div`,{className:`trace-raw-loading`,children:`没有可显示的 OTLP JSON。`})]})]})]})]})]})]})}function QW({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?`—`:OW(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)($W,{icon:(0,G.jsx)(O,{size:15}),label:t===`7d`?`近 7 天运行`:`近 24 小时运行`,value:String(n)}),(0,G.jsx)($W,{icon:(0,G.jsx)(re,{size:15}),label:`成功率`,value:i,note:n?`${r} / ${n}`:void 0,tone:`success`}),(0,G.jsx)($W,{icon:(0,G.jsx)(ue,{size:15}),label:`平均耗时`,value:a,note:r?`${r} 个完成运行`:void 0}),(0,G.jsx)($W,{icon:(0,G.jsx)(pe,{size:15}),label:`Token`,value:n?o?kW(o):`未上报`:`—`,note:o?`${kW(s)} 输入 · ${kW(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)(eG,{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 $W({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 eG({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 tG({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+=HW(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)(KW,{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:IW(e.event.timeUnixNano)}),(0,G.jsx)(JW,{values:e.event.attributes||{}})]},t))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`该 Span 没有 Events。`})})}var nG=[{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 rG(e){return e===`ready`?`可用`:e===`missing-secret`?`缺少凭证`:e===`unhealthy`||e===`failed`?`异常`:e===`unresolved`?`未解析`:e||`未知`}function iG(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function aG({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(iG).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[iG(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)(bd,{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:nG.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:rG(t)})]},e.resourceId)})})]},e.kind)})})]})]})]})}function oG(e){return typeof e==`object`&&!!e&&typeof e.apply==`function`}async function sG(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(!oG(i))throw Error(`DSH client bundle ${e.pluginId} did not export a Cordis plugin`);return i}var cG=new class{target;bundleLoader;activeDigest=``;activeRuntime=null;pending=Promise.resolve();constructor(e,t=sG){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 dH;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 uV),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}}(fH);function lG(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 uG=e=>[e.ecosystem,e.marketplaceName||`default`,e.pluginId,e.resolvedVersion||`host-managed`].join(`:`),dG=e=>e.ecosystem===`dsh`?`DeepSeek Harness 插件`:`Codex 官方插件`,fG={"@kingsoftcloud/ksadk-codex-provider":{title:`Codex AgentProvider`,publisher:`KsADK 官方`,kind:`Agent Provider`,summary:`让 Agent 使用 Codex App Server 的原生会话、工具与审批能力。`}};function pG(e){let t=fG[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 mG(e){let t=fG[e.pluginId];return t?t.publisher:e.pluginId.match(/^(@[^/]+)\//)?.[1]||e.marketplaceName||(e.ecosystem===`dsh`?`DeepSeek Harness`:`Codex Marketplace`)}function hG(e){let t=fG[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 gG(e){let t=fG[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 _G=[`常用`,`效率`,`创意`,`开发`,`更多`];function vG(e){let t=`${e.pluginId} ${pG(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 yG=(e,t)=>e?.error?.message||e?.detail||e?.message||t,bG={installed:`待启用`,enabled:`已启用`,ready:`就绪`,bound:`已绑定`,failed:`失败`};function xG({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}),` `,bG[e.state]]})}function SG({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 CG(){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(lG),u=[...(i.items||[]).map(lG),...l.filter(e=>e.installed)];t(u),r(l.filter(e=>!e.installed)),a({dsh:i.host,codex:s.host}),!o&&u[0]&&c(uG(u[0]))}catch(e){C(e?.message||`插件状态加载失败`)}finally{x(``)}},[o]);(0,s.useEffect)(()=>{w()},[]);let T=(0,s.useMemo)(()=>e.find(e=>uG(e)===o)||null,[e,o]),E=(0,s.useMemo)(()=>{let e=h.trim().toLowerCase(),t=n.filter(t=>!e||[pG(t),mG(t),hG(t),gG(t),t.pluginId].some(t=>t.toLowerCase().includes(e)));return _G.map(e=>({category:e,items:t.filter(t=>vG(t)===e)})).filter(e=>e.items.length>0)},[h,n]);async function D(){try{await cG.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=lG(t);c(uG(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:${uG(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(yG(n,`Codex 插件安装失败`));let r=lG(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(yG(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(yG(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)(xd,{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${uG(e)===o?` selected`:``}`,"aria-current":uG(e)===o?`true`:void 0,onClick:()=>c(uG(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:pG(e)}),(0,G.jsxs)(`small`,{children:[mG(e),` · `,hG(e)]}),(0,G.jsx)(`em`,{children:gG(e)})]}),(0,G.jsx)(xG,{item:e})]},uG(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:pG(T)}),(0,G.jsxs)(`p`,{children:[mG(T),` · `,hG(T)]})]}),(0,G.jsx)(xG,{item:T})]}),(0,G.jsx)(`p`,{className:`plugin-detail-summary`,children:gG(T)}),T.failed&&T.errorCode&&(0,G.jsx)(`p`,{className:`form-error`,role:`status`,children:T.errorCode}),(0,G.jsx)(SG,{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:dG(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:pG(e)}),(0,G.jsxs)(`small`,{children:[mG(e),` · `,hG(e)]}),(0,G.jsx)(`em`,{children:gG(e)})]}),(0,G.jsx)(`button`,{className:`button secondary small`,disabled:!p||!!b,onClick:()=>void k(e),children:b===`codex:${uG(e)}`?(0,G.jsx)(Ne,{className:`animate-spin`,size:15}):`安装`})]},uG(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 wG(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n{}};function EG(){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}})}DG.prototype=EG.prototype={constructor:DG,on:function(e,t){var n=this._,r=OG(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)),jG.hasOwnProperty(t)?{space:jG[t],local:e}:e}function NG(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 PG(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function FG(e){var t=MG(e);return(t.local?PG:NG)(t)}function IG(){}function LG(e){return e==null?IG:function(){return this.querySelector(e)}}function RG(e){typeof e!=`function`&&(e=LG(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 mK(e){e||=hK;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 gK(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function _K(){return Array.from(this)}function vK(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?AK:typeof t==`function`?MK:jK)(e,t,n??``)):PK(this.node(),e)}function PK(e,t){return e.style.getPropertyValue(t)||kK(e).getComputedStyle(e,null).getPropertyValue(t)}function FK(e){return function(){delete this[e]}}function IK(e,t){return function(){this[e]=t}}function LK(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function RK(e,t){return arguments.length>1?this.each((t==null?FK:typeof t==`function`?LK:IK)(e,t)):this.node()[e]}function zK(e){return e.trim().split(/^|\s+/)}function BK(e){return e.classList||new VK(e)}function VK(e){this._node=e,this._names=zK(e.getAttribute(`class`)||``)}VK.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 HK(e,t){for(var n=BK(e),r=-1,i=t.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function _q(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n()=>e;function zq(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}})}zq.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Bq(e){return!e.ctrlKey&&!e.button}function Vq(){return this.parentNode}function Hq(e,t){return t??{x:e.x,y:e.y}}function Uq(){return navigator.maxTouchPoints||`ontouchstart`in this}function Wq(){var e=Bq,t=Vq,n=Hq,r=Uq,i={},a=EG(`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`,_,Mq).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&&(kq(n.view).on(`mousemove.drag`,m,Nq).on(`mouseup.drag`,h,Nq),Iq(n.view),Pq(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(Fq(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){kq(e.view).on(`mousemove.drag mouseup.drag`,null),Lq(e.view,l),Fq(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?pJ(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?pJ(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=eJ.exec(e))?new gJ(t[1],t[2],t[3],1):(t=tJ.exec(e))?new gJ(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=nJ.exec(e))?pJ(t[1],t[2],t[3],t[4]):(t=rJ.exec(e))?pJ(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=iJ.exec(e))?CJ(t[1],t[2]/100,t[3]/100,1):(t=aJ.exec(e))?CJ(t[1],t[2]/100,t[3]/100,t[4]):oJ.hasOwnProperty(e)?fJ(oJ[e]):e===`transparent`?new gJ(NaN,NaN,NaN,0):null}function fJ(e){return new gJ(e>>16&255,e>>8&255,e&255,1)}function pJ(e,t,n,r){return r<=0&&(e=t=n=NaN),new gJ(e,t,n,r)}function mJ(e){return e instanceof qq||(e=dJ(e)),e?(e=e.rgb(),new gJ(e.r,e.g,e.b,e.opacity)):new gJ}function hJ(e,t,n,r){return arguments.length===1?mJ(e):new gJ(e,t,n,r??1)}function gJ(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Gq(gJ,hJ,Kq(qq,{brighter(e){return e=e==null?Yq:Yq**+e,new gJ(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Jq:Jq**+e,new gJ(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new gJ(xJ(this.r),xJ(this.g),xJ(this.b),bJ(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:_J,formatHex:_J,formatHex8:vJ,formatRgb:yJ,toString:yJ}));function _J(){return`#${SJ(this.r)}${SJ(this.g)}${SJ(this.b)}`}function vJ(){return`#${SJ(this.r)}${SJ(this.g)}${SJ(this.b)}${SJ((isNaN(this.opacity)?1:this.opacity)*255)}`}function yJ(){let e=bJ(this.opacity);return`${e===1?`rgb(`:`rgba(`}${xJ(this.r)}, ${xJ(this.g)}, ${xJ(this.b)}${e===1?`)`:`, ${e})`}`}function bJ(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function xJ(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function SJ(e){return e=xJ(e),(e<16?`0`:``)+e.toString(16)}function CJ(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new EJ(e,t,n,r)}function wJ(e){if(e instanceof EJ)return new EJ(e.h,e.s,e.l,e.opacity);if(e instanceof qq||(e=dJ(e)),!e)return new EJ;if(e instanceof EJ)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 EJ(o,s,c,e.opacity)}function TJ(e,t,n,r){return arguments.length===1?wJ(e):new EJ(e,t,n,r??1)}function EJ(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Gq(EJ,TJ,Kq(qq,{brighter(e){return e=e==null?Yq:Yq**+e,new EJ(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Jq:Jq**+e,new EJ(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 gJ(kJ(e>=240?e-240:e+120,i,r),kJ(e,i,r),kJ(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new EJ(DJ(this.h),OJ(this.s),OJ(this.l),bJ(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=bJ(this.opacity);return`${e===1?`hsl(`:`hsla(`}${DJ(this.h)}, ${OJ(this.s)*100}%, ${OJ(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function DJ(e){return e=(e||0)%360,e<0?e+360:e}function OJ(e){return Math.max(0,Math.min(1,e||0))}function kJ(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 AJ=e=>()=>e;function jJ(e,t){return function(n){return e+n*t}}function MJ(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function NJ(e){return(e=+e)==1?PJ:function(t,n){return n-t?MJ(t,n,e):AJ(isNaN(t)?n:t)}}function PJ(e,t){var n=t-e;return n?jJ(e,n):AJ(isNaN(e)?t:e)}var FJ=(function e(t){var n=NJ(t);function r(e,t){var r=n((e=hJ(e)).r,(t=hJ(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=PJ(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 IJ(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:BJ(r,i)})),n=UJ.lastIndex;return n180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:BJ(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:BJ(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:BJ(e,n)},{i:s-2,x:BJ(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;--cY}function wY(){hY=(mY=_Y.now())+gY,cY=lY=0;try{CY()}finally{cY=0,EY(),hY=0}}function TY(){var e=_Y.now(),t=e-mY;t>dY&&(gY-=t,mY=e)}function EY(){for(var e,t=fY,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:fY=n);pY=e,DY(r)}function DY(e){cY||(lY&&=clearTimeout(lY),e-hY>24?(e<1/0&&(lY=setTimeout(wY,e-_Y.now()-gY)),uY&&=clearInterval(uY)):(uY||=(mY=_Y.now(),setInterval(TY,dY)),cY=1,vY(wY)))}function OY(e,t,n){var r=new xY;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var kY=EG(`start`,`end`,`cancel`,`interrupt`),AY=[];function jY(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;FY(e,n,{name:t,index:r,group:i,on:kY,tween:AY,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function MY(e,t){var n=PY(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function NY(e,t){var n=PY(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function PY(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function FY(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=SY(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 OY(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 LY(e){return this.each(function(){IY(this,e)})}function RY(e,t){var n,r;return function(){var i=NY(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 mX(e,t,n){var r,i,a=pX(t)?MY:NY;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function hX(e,t){var n=this._id;return arguments.length<2?PY(this.node(),n).on.on(e):this.each(mX(n,e,t))}function gX(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function _X(){return this.on(`end.remove`,gX(this._id))}function vX(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=LG(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o()=>e;function JX(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 YX(e,t,n){this.k=e,this.x=t,this.y=n}YX.prototype={constructor:YX,scale:function(e){return e===1?this:new YX(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new YX(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 XX=new YX(1,0,0);ZX.prototype=YX.prototype;function ZX(e){for(;!e.__zoom;)if(!(e=e.parentNode))return XX;return e.__zoom}function QX(e){e.stopImmediatePropagation()}function $X(e){e.preventDefault(),e.stopImmediatePropagation()}function eZ(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function tZ(){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 nZ(){return this.__zoom||XX}function rZ(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function iZ(){return navigator.maxTouchPoints||`ontouchstart`in this}function aZ(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 oZ(){var e=eZ,t=tZ,n=aZ,r=rZ,i=iZ,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=sY,l=EG(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,nZ).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`,nZ),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(XX.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 YX(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 YX(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 YX(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=kq(this.that).datum();l.call(e,this.that,new JX(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=jq(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)],IY(this),s.start();$X(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=kq(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=jq(t,i),l=t.clientX,u=t.clientY;Iq(t.view),QX(t),a.mouse=[c,this.__zoom.invert(c)],IY(this),a.start();function d(e){if($X(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]=jq(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),Lq(e.view,a.moved),$X(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=jq(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);$X(r),s>0?kq(this).transition().duration(s).call(x,d,c,r):kq(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(QX(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.`},cZ=[[-1/0,-1/0],[1/0,1/0]],lZ=[`Enter`,` `,`Escape`],uZ={"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`},dZ;(function(e){e.Strict=`strict`,e.Loose=`loose`})(dZ||={});var fZ;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(fZ||={});var pZ;(function(e){e.Partial=`partial`,e.Full=`full`})(pZ||={});var mZ={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},hZ;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(hZ||={});var gZ;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(gZ||={});var $;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})($||={});var _Z={[$.Left]:$.Right,[$.Right]:$.Left,[$.Top]:$.Bottom,[$.Bottom]:$.Top},vZ=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,yZ=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),bZ=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),xZ=(e,t=[0,0])=>{let{width:n,height:r}=tQ(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},SZ=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};let n=!1,r=e.reduce((e,r)=>{let i=typeof r==`string`,a=!t.nodeLookup&&!i?r:void 0;return t.nodeLookup&&(a=i?t.nodeLookup.get(r):bZ(r)?r:t.nodeLookup.get(r.id)),a?(n=!0,FZ(e,zZ(a,t.nodeOrigin))):e},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?LZ(r):{x:0,y:0,width:0,height:0}},CZ=(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=FZ(n,zZ(e)),r=!0)}),r?LZ(n):{x:0,y:0,width:0,height:0}},wZ=(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=VZ(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},TZ=(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 EZ(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}=tQ(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 DZ({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=QZ(CZ(EZ(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 OZ({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`,sZ.error005());else{let{width:e,height:t}=tQ(s);e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&eQ(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=eQ(d)?jZ(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,sZ.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 kZ({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=TZ(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 AZ=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),jZ=(e={x:0,y:0},t,n)=>({x:AZ(e.x,t[0][0],t[1][0]-(n?.width??0)),y:AZ(e.y,t[0][1],t[1][1]-(n?.height??0))});function MZ(e,t,n){let{width:r,height:i}=tQ(n),{x:a,y:o}=n.internals.positionAbsolute;return jZ(e,[[a,o],[a+r,o+i]],t)}var NZ=(e,t,n)=>en?-AZ(Math.abs(e-n),1,t)/t:0,PZ=(e,t,n=15,r=40)=>[NZ(e.x,r,t.width-r)*n,NZ(e.y,r,t.height-r)*n],FZ=(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)}),IZ=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),LZ=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),RZ=(e,t=[0,0])=>{let{x:n,y:r}=bZ(e)?e.internals.positionAbsolute:xZ(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}},zZ=(e,t=[0,0])=>{let{x:n,y:r}=bZ(e)?e.internals.positionAbsolute:xZ(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)}},BZ=(e,t)=>LZ(FZ(IZ(e),IZ(t))),VZ=(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)},HZ=(e,t)=>VZ(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),UZ=e=>WZ(e.width)&&WZ(e.height)&&WZ(e.x)&&WZ(e.y),WZ=e=>!isNaN(e)&&isFinite(e),GZ=(e,t)=>(e,t)=>{},KZ=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),qZ=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?KZ(s,o):s},JZ=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function YZ(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 XZ(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=YZ(e,n),i=YZ(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=YZ(e.top??e.y??0,n),i=YZ(e.bottom??e.y??0,n),a=YZ(e.left??e.x??0,t),o=YZ(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 ZZ(e,t,n,r,i,a){let{x:o,y:s}=JZ(e,[t,n,r]),{x:c,y:l}=JZ({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 QZ=(e,t,n,r,i,a)=>{let o=XZ(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=AZ(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=ZZ(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}},$Z=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function eQ(e){return e!=null&&e!==`parent`}function tQ(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function nQ(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function rQ(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 iQ(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function aQ(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function oQ(e){return{...uZ,...e||{}}}function sQ(e){return e===null?null:e?`valid`:`invalid`}function cQ(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=mQ(e),s=qZ({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?KZ(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var lQ=e=>({width:e.offsetWidth,height:e.offsetHeight}),uQ=e=>e?.getRootNode?.()||window?.document,dQ=[`INPUT`,`SELECT`,`TEXTAREA`];function fQ(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?dQ.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var pQ=e=>`clientX`in e,mQ=(e,t)=>{let n=pQ(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)}},hQ=(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,...lQ(t)}})};function gQ({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 _Q(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function vQ({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case $.Left:return[t-_Q(t-r,a),n];case $.Right:return[t+_Q(r-t,a),n];case $.Top:return[t,n-_Q(n-i,a)];case $.Bottom:return[t,n+_Q(i-n,a)]}}function yQ({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top,curvature:o=.25}){let[s,c]=vQ({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=vQ({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=gQ({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 bQ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n0}var CQ=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,wQ=(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)),TQ=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,sZ.error006()),t;let r=n.getEdgeId||CQ,i;return i=vZ(e)?{...e}:{...e,id:r(e)},wQ(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function EQ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=bQ({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var DQ={[$.Left]:{x:-1,y:0},[$.Right]:{x:1,y:0},[$.Top]:{x:0,y:-1},[$.Bottom]:{x:0,y:1}},OQ=({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 AQ({source:e,sourcePosition:t=$.Bottom,target:n,targetPosition:r=$.Top,center:i,offset:a,stepPosition:o}){let s=DQ[t],c=DQ[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=OQ({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]=bQ({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 jQ(e,t,n,r){let i=Math.min(kQ(e,t)/2,kQ(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 RQ(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function zQ(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=RQ(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 BQ=1e3,VQ=10,HQ={nodeOrigin:[0,0],nodeExtent:cZ,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},UQ={...HQ,checkEquality:!0};function WQ(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function GQ(e,t,n){let r=WQ(HQ,n);for(let n of e.values())if(n.parentId)XQ(n,e,t,r);else{let e=jZ(xZ(n,r.nodeOrigin),eQ(n.extent)?n.extent:r.nodeExtent,tQ(n));n.internals.positionAbsolute=e}}function KQ(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 qQ(e){return e===`manual`}function JQ(e,t,n,r={}){let i=WQ(UQ,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!qQ(i.zIndexMode)?BQ: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=jZ(xZ(u,i.nodeOrigin),eQ(u.extent)?u.extent:i.nodeExtent,tQ(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:KQ(u,e),z:ZQ(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&&XQ(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function YQ(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 XQ(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=WQ(HQ,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}YQ(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*VQ),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=QQ(e,u,o,s,a&&!qQ(c)?BQ: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 ZQ(e,t,n){let r=WZ(e.zIndex)?e.zIndex:0;return qQ(n)?r:r+(e.selected?t:0)}function QQ(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=tQ(e),l=xZ(e,n),u=eQ(e.extent)?jZ(l,e.extent,c):l,d=jZ({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=MZ(d,c,t));let f=ZQ(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function $Q(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=BZ(a.get(n.parentId)?.expandedRect??RZ(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=tQ(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=$Q(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function t$({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 n$(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 r$(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}`;n$(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),n$(`target`,s,c,e,i,o),t.set(r.id,r)}}function i$(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:i$(n,t):!1}function a$(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 o$(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!i$(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 s$({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 c$({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=KZ(a,t);return{x:o.x-a.x,y:o.y-a.y}}function l$({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=kq(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?IZ(CZ(s)):null,x=v&&l?c$({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)}:KZ(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}=OZ({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]=s$({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]=PZ(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=cQ(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=o$(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=s$({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=Wq().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=cQ(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=mQ(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=cQ(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=mQ(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=mQ(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]=s$({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||!a$(t,`.${g}`,v))&&(!_||a$(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function u$(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())HZ(i,RZ(e))>0&&r.push(e);return r}var d$=250;function f$(e,t,n,r){let i=[],a=1/0,o=u$(e,n,t+d$);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}=IQ(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 p$(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,...IQ(o,c,c.position,!0)}:c}function m$(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function h$(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var g$=()=>!0;function _$(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:_=g$,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=uQ(e.target),E=0,D,{x:O,y:k}=mQ(e),A=m$(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=p$(i,A,r,c,t);if(!N)return;let P=mQ(e,j),F=!1,I=null,L=!1,R=null;function z(){if(!u||!j)return;let[e,t]=PZ(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:IQ(V,B,$.Left,!0),fromHandle:B,fromPosition:B.position,fromNode:V,to:P,toHandle:null,toPosition:_Z[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}=mQ(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=mQ(e,j),D=f$(qZ(P,a,!1,[1,1]),n,c,B),F||=(z(),!0);let s=v$(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=h$(!!D,s.isValid);let u=c.get(i),f=u?IQ(u,B,$.Left,!0):H.from,p={...H,from:f,isValid:L,to:s.toHandle&&L?JZ({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:_Z[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 v$(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=g$,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}=mQ(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=m$(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===dZ.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=p$(t,e,a,u,n,!0)}return _}var y$={onPointerDown:_$,isValid:v$};function b$({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=kq(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&&$Z()?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=oZ().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:jq}}var x$=e=>({x:e.x,y:e.y,zoom:e.k}),S$=({x:e,y:t,zoom:n})=>XX.translate(e,t).scale(n),C$=(e,t)=>e.target.closest(`.${t}`),w$=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),T$=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,E$=(e,t=0,n=T$,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},D$=e=>{let t=e.ctrlKey&&$Z()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function O$({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(C$(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=jq(u),t=d*2**D$(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===fZ.Vertical?0:u.deltaX*f,m=i===fZ.Horizontal?0:u.deltaY*f;!$Z()&&u.shiftKey&&i!==fZ.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=x$(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 k$({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=C$(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function A$({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=x$(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 j$({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&w$(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,x$(a.transform))}}function M$({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&w$(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=x$(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function N$({panActivationKeyPressed:e,zoomActivationKeyPressed:t,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:i,panOnScroll:a,zoomOnDoubleClick:o,userSelectionActive:s,noWheelClassName:c,noPanClassName:l,lib:u,connectionInProgress:d}){return f=>{let p=t||n,m=r&&f.ctrlKey,h=f.type===`wheel`;if(f.button===1&&f.type===`mousedown`&&(C$(f,`${u}-flow__node`)||C$(f,`${u}-flow__edge`)||C$(f,`${u}-flow__selection`)||C$(f,`${u}-flow__nodesselection`)))return!0;if(!i&&!p&&!a&&!o&&!r||s||d&&!h||C$(f,c)&&h||C$(f,l)&&(!h||a&&h&&!t)||!r&&f.ctrlKey&&h)return!1;if(!r&&f.type===`touchstart`&&f.touches?.length>1)return f.preventDefault(),!1;if(!p&&!a&&!m&&h||!i&&(f.type===`mousedown`||f.type===`touchstart`)||Array.isArray(i)&&!i.includes(f.button)&&f.type===`mousedown`)return!1;let g=Array.isArray(i)&&i.includes(f.button)||!f.button||f.button<=1;return(!f.ctrlKey||h||e)&&g}}function P$({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=oZ().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=kq(e).call(f);y({x:i.x,y:i.y,zoom:AZ(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(D$);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?qJ:sY).transform(E$(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,panActivationKeyPressed:S=!1,zoomActivationKeyPressed:C,lib:w,onTransformChange:T,connectionInProgress:E,paneClickDistance:D,selectionOnDrag:O}){r&&!l.isZoomingOrPanning&&v();let k=i&&!C&&!r;f.clickDistance(O?1/0:!WZ(D)||D<0?0:D);let A=k?O$({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):k$({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,A,{passive:!1});let j=A$({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,j);let M=j$({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:T});f.on(`zoom`,M);let N=M$({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,N);let P=N$({panActivationKeyPressed:S,zoomActivationKeyPressed:C,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:w,connectionInProgress:E});f.filter(P),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=S$(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=S$(e);return await g(n,t),n}function x(e){if(p){let t=S$(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?ZX(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`?qJ:sY).scaleTo(E$(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?qJ:sY).scaleBy(E$(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=!WZ(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 F$;(function(e){e.Line=`line`,e.Handle=`handle`})(F$||={});function I$({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 L$(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 R$(e,t){return Math.max(0,t-e)}function z$(e,t){return Math.max(0,e-t)}function B$(e,t,n){return Math.max(0,t-e,e-n)}function V$(e,t){return e?!t:t}function H$(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=B$(E,h,g),j=B$(D,_,v);if(o){let e=0,t=0;c&&w<0?e=R$(y+w+O,o[0][0]):!c&&w>0&&(e=z$(y+E+O,o[1][0])),l&&T<0?t=R$(b+T+k,o[0][1]):!l&&T>0&&(t=z$(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=z$(y+w,s[0][0]):!c&&w<0&&(e=R$(y+E,s[1][0])),l&&T>0?t=z$(b+T,s[0][1]):!l&&T<0&&(t=R$(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=B$(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?z$(b+k+E/C,o[1][1])*C:R$(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?R$(b+E/C,s[1][1])*C:z$(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=B$(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?z$(y+D*C+O,o[1][0])/C:R$(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?R$(y+D*C,s[1][0])/C:z$(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=(V$(c,l)?-w:w)/C:w=(V$(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 U$={width:0,height:0,x:0,y:0},W$={...U$,pointerX:0,pointerY:0,aspectRatio:1};function G$(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 K$({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=kq(e),o={controlDirection:L$(`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={...U$},h={...W$};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:L$(e)};let g,_=null,v=[],y,b,x,S=!1,C=Wq().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}=cQ(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=eQ(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=G$(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=cQ(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}=H$(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 q$=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},J$=e=>e?q$(e):q$,{useDebugValue:Y$}=s.default,{useSyncExternalStoreWithSelector:X$}=Xd.default,Z$=e=>e;function Q$(e,t=Z$,n){let r=X$(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return Y$(r),r}var $$=(e,t)=>{let n=J$(e),r=(e,r=t)=>Q$(n,e,r);return Object.assign(r,n),r},e1=(e,t)=>e?$$(e,t):$$;function t1(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 n1=(0,s.createContext)(null),r1=n1.Provider,i1=sZ.error001(`react`);function a1(e,t){let n=(0,s.useContext)(n1);if(n===null)throw Error(i1);return Q$(n,e,t)}function o1(){let e=(0,s.useContext)(n1);if(e===null)throw Error(i1);return(0,s.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var s1={display:`none`},c1={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},l1=`react-flow__node-desc`,u1=`react-flow__edge-desc`,d1=`react-flow__aria-live`,f1=e=>e.ariaLiveMessage,p1=e=>e.ariaLabelConfig;function m1({rfId:e}){let t=a1(f1);return(0,G.jsx)(`div`,{id:`${d1}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:c1,children:t})}function h1({rfId:e,disableKeyboardA11y:t}){let n=a1(p1);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{id:`${l1}-${e}`,style:s1,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,G.jsx)(`div`,{id:`${u1}-${e}`,style:s1,children:n[`edge.a11yDescription.default`]}),!t&&(0,G.jsx)(m1,{rfId:e})]})}var g1=(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:wG([`react-flow__panel`,n,...o]),style:r,ref:a,...i,children:t})});g1.displayName=`Panel`;var _1=`https://reactflow.dev?utm_source=attribution`;function v1({proOptions:e,position:t=`bottom-right`}){return(0,s.useEffect)(()=>{},[]),e?.hideAttribution?null:(0,G.jsx)(g1,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${_1}`,children:(0,G.jsx)(`a`,{href:_1,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var y1=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}},b1=e=>e.id;function x1(e,t){return t1(e.selectedNodes.map(b1),t.selectedNodes.map(b1))&&t1(e.selectedEdges.map(b1),t.selectedEdges.map(b1))}function S1({onSelectionChange:e}){let t=o1(),{selectedNodes:n,selectedEdges:r}=a1(y1,x1);return(0,s.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var C1=e=>!!e.onSelectionChangeHandlers;function w1({onSelectionChange:e}){let t=a1(C1);return e||t?(0,G.jsx)(S1,{onSelectionChange:e}):null}var T1=[0,0],E1={x:0,y:0,zoom:1},D1=[...`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`],O1=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}),k1={translateExtent:cZ,nodeOrigin:T1,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function A1(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:c,setDefaultNodesAndEdges:l}=a1(O1,t1),u=o1();(0,s.useEffect)(()=>(l(e.defaultNodes,e.defaultEdges),()=>{d.current=k1,c()}),[]);let d=(0,s.useRef)(k1);return(0,s.useEffect)(()=>{for(let s of D1){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:oQ(c)}):s===`fitView`?u.setState({fitViewQueued:c}):s===`fitViewOptions`?u.setState({fitViewOptions:c}):u.setState({[s]:c}))}d.current=e},D1.map(t=>e[t])),null}function j1(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function M1(e){let[t,n]=(0,s.useState)(e===`system`?null:e);return(0,s.useEffect)(()=>{if(e!==`system`){n(e);return}let t=j1(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?j1()?.matches?`dark`:`light`:t}var N1=typeof document<`u`?document:null;function P1(e=null,t={target:N1,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(/\+/g,` +`).replace(` + +`,` ++`).split(` +`));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return(0,s.useEffect)(()=>{let n=t?.target??N1,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)&&fQ(e))return!1;let n=I1(e.code,c);if(a.current.add(e[n]),F1(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=I1(e.code,c);F1(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 F1(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function I1(e,t){return t.includes(e)?`code`:`key`}var L1=()=>{let e=o1();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=QZ(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 qZ(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=JZ(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function R1(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)z1(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 z1(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 B1(e,t){return R1(e,t)}function V1(e,t){return R1(e,t)}function H1(e,t){return{id:e,type:`select`,selected:t}}function U1(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(H1(a.id,e)))}return r}function W1({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 G1(e){return{id:e.id,type:`remove`}}var K1=GZ(`React Flow`,`https://reactflow.dev/`);function q1(e,t,n={}){return TQ(e,t,{...n,onError:n.onError??K1})}var J1=e=>yZ(e),Y1=e=>vZ(e);function X1(e){return(0,s.forwardRef)(e)}var Z1=typeof window<`u`?s.useLayoutEffect:s.useEffect;function Q1(e){let[t,n]=(0,s.useState)(BigInt(0)),[r]=(0,s.useState)(()=>$1(()=>n(e=>e+BigInt(1))));return Z1(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function $1(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var e0=(0,s.createContext)(null);function t0({children:e}){let t=o1(),n=Q1((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=W1({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=Q1((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(W1({items:s,lookup:o}))},[])),i=(0,s.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,G.jsx)(e0.Provider,{value:i,children:e})}function n0(){let e=(0,s.useContext)(e0);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var r0=e=>!!e.panZoom;function i0(){let e=L1(),t=o1(),n=n0(),r=a1(r0),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=J1(e)?e:n.get(e.id),a=i.parentId?rQ(i.position,i.measured,i.parentId,n,r):i.position;return RZ({...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&&J1(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&&Y1(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 kZ({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(G1);o?.(f),c(e)}if(m){let e=d.map(G1);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=UZ(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=RZ(s?r:a),l=HZ(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=UZ(e)?e:a(e);if(!r)return!1;let i=HZ(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 SZ(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??aQ();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 a0=e=>e.selected,o0=typeof window<`u`?window:void 0;function s0({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=o1(),{deleteElements:r}=i0(),i=P1(e,{actInsideInputWithModifier:!1}),a=P1(t,{target:o0});(0,s.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(a0),edges:e.filter(a0)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,s.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function c0(e){let t=o1();(0,s.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=lQ(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,sZ.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 l0={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},u0=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function d0({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panActivationKeyPressed:i,panOnScrollSpeed:a=.5,panOnScrollMode:o=fZ.Free,zoomOnDoubleClick:c=!0,panOnDrag:l=!0,defaultViewport:u,translateExtent:d,minZoom:f,maxZoom:p,zoomActivationKeyCode:m,preventScrolling:h=!0,children:g,noWheelClassName:_,noPanClassName:v,onViewportChange:y,isControlledViewport:b,paneClickDistance:x,selectionOnDrag:S}){let C=o1(),w=(0,s.useRef)(null),{userSelectionActive:T,lib:E,connectionInProgress:D}=a1(u0,t1),O=P1(m),k=(0,s.useRef)();c0(w);let A=(0,s.useCallback)(e=>{y?.({x:e[0],y:e[1],zoom:e[2]}),b||C.setState({transform:e})},[y,b]);return(0,s.useEffect)(()=>{if(w.current){k.current=P$({domNode:w.current,minZoom:f,maxZoom:p,translateExtent:d,viewport:u,onDraggingChange:e=>C.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=C.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=C.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=C.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=k.current.getViewport();return C.setState({panZoom:k.current,transform:[e,t,n],domNode:w.current.closest(`.react-flow`)}),()=>{k.current?.destroy()}}},[]),(0,s.useEffect)(()=>{k.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panActivationKeyPressed:i,panOnScrollSpeed:a,panOnScrollMode:o,zoomOnDoubleClick:c,panOnDrag:l,zoomActivationKeyPressed:O,preventScrolling:h,noPanClassName:v,userSelectionActive:T,noWheelClassName:_,lib:E,onTransformChange:A,connectionInProgress:D,selectionOnDrag:S,paneClickDistance:x})},[e,t,n,r,i,a,o,c,l,O,h,v,T,_,E,A,D,S,x]),(0,G.jsx)(`div`,{className:`react-flow__renderer`,ref:w,style:l0,children:g})}var f0=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function p0(){let{userSelectionActive:e,userSelectionRect:t}=a1(f0,t1);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 m0=(e,t)=>n=>{n.target===t.current&&e?.(n)},h0=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function g0({isSelecting:e,selectionKeyPressed:t,selectionMode:n=pZ.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=o1(),{userSelectionActive:y,elementsSelectable:b,dragging:x,panBy:S,autoPanSpeed:C}=a1(h0,t1),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=>{if(n.pointerType===`touch`&&r!==!1&&!t)return;let{domNode:i,transform:a}=v.getState();if(E.current=i?.getBoundingClientRect(),!E.current)return;let s=n.target===T.current;if(!s&&n.target.closest(`.nokey`)||!e||!(o&&s||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),A.current=!1;let{x:c,y:l}=mQ(n.nativeEvent,E.current),u=qZ({x:c,y:l},a);v.setState({userSelectionRect:{width:0,height:0,startX:u.x,startY:u.y,x:c,y:l}}),s||(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}=JZ(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)}}iQ(h,D.current)||c(U1(a,D.current,!0)),iQ(g,O.current)||l(U1(o,O.current)),v.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!i||!E.current)return;let[e,t]=PZ(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}=mQ(e.nativeEvent,E.current);j.current={x:o,y:s};let l=JZ({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:wG([`react-flow__pane`,{draggable:te,dragging:x,selection:e}]),onClick:w?void 0:m0(N,T),onContextMenu:m0(P,T),onWheel:m0(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:l0,children:[g,(0,G.jsx)(p0,{})]})}function _0({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`,sZ.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function v0({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let c=o1(),[l,u]=(0,s.useState)(!1),d=(0,s.useRef)();return(0,s.useEffect)(()=>{if(!t)return d.current=l$({getStoreItems:()=>c.getState(),onNodeMouseDown:t=>{_0({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 y0=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function b0(){let e=o1();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=y0(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=KZ(t,i));let{position:a,positionAbsolute:s}=OZ({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 x0=(0,s.createContext)(null),S0=x0.Provider;x0.Consumer;var C0=()=>(0,s.useContext)(x0),w0=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),T0=(0,s.createContext)(null);function E0({children:e}){let t=a1(w0,t1);return(0,G.jsx)(T0.Provider,{value:t,children:e})}function D0(){let e=(0,s.useContext)(T0);if(!e)throw Error(`useHandleConfig must be used within a HandleConfigProvider`);return e}var O0={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},k0=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o;if(!s&&!i)return O0;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===dZ.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function A0({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=o1(),_=C0(),{connectOnClick:v,noPanClassName:y,rfId:b}=D0(),{connectingFrom:x,connectingTo:S,clickConnecting:C,isPossibleEndHandle:w,connectionInProcess:T,clickConnectionInProcess:E,valid:D}=a1(k0(_,m,e),t1);_||g.getState().onError?.(`010`,sZ.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(q1(i,e,{onError:n}))}n?.(i),s?.(i)},k=e=>{if(!_)return;let t=pQ(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();y$.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:wG([`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=uQ(t.target),h=n||c,{connection:v,isValid:y}=y$.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 j0=(0,s.memo)(X1(A0));function M0({data:e,isConnectable:t,sourcePosition:n=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[e?.label,(0,G.jsx)(j0,{type:`source`,position:n,isConnectable:t})]})}function N0({data:e,isConnectable:t,targetPosition:n=$.Top,sourcePosition:r=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(j0,{type:`target`,position:n,isConnectable:t}),e?.label,(0,G.jsx)(j0,{type:`source`,position:r,isConnectable:t})]})}function P0(){return null}function F0({data:e,isConnectable:t,targetPosition:n=$.Top}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(j0,{type:`target`,position:n,isConnectable:t}),e?.label]})}var I0={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},L0={input:M0,default:N0,output:F0,group:P0};function R0(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 z0=e=>{let{width:t,height:n,x:r,y:i}=CZ(e.nodeLookup,{filter:e=>!!e.selected});return{width:WZ(t)?t:null,height:WZ(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 B0({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=o1(),{width:i,height:a,transformString:o,userSelectionActive:c}=a1(z0,t1),l=b0(),u=(0,s.useRef)(null);(0,s.useEffect)(()=>{n||u.current?.focus({preventScroll:!0})},[n]);let d=!c&&i!==null&&a!==null;if(v0({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:wG([`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(I0,e.key)&&(e.preventDefault(),l({direction:I0[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var V0=typeof window<`u`?window:void 0,H0=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function U0({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}=a1(H0,t1),z=P1(l,{target:V0}),B=P1(h,{target:V0}),V=B||w,H=B||b,ee=u&&V!==!0,te=z||R||ee;return s0({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,G.jsx)(d0,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:H,panActivationKeyPressed:B,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)(g0,{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)(B0,{onSelectionContextMenu:j,noPanClassName:N,disableKeyboardA11y:P})]})})}U0.displayName=`FlowRenderer`;var W0=(0,s.memo)(U0),G0=e=>t=>e?wZ(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 K0(e){return a1((0,s.useCallback)(G0(e),[e]),t1)}var q0=e=>e.updateNodeInternals;function J0(){let e=a1(q0),[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 Y0({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=o1(),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 X0({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}=a1(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},t1),S=y.type||`default`,C=g?.[S]||L0[S];C===void 0&&(v?.(`003`,sZ.error003(S)),S=`default`,C=g?.default||L0.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=o1(),k=nQ(y),A=Y0({node:y,nodeType:S,hasDimensions:k,resizeObserver:d}),j=v0({nodeRef:A,disabled:y.hidden||!w,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:_}),M=b0();if(y.hidden)return null;let N=tQ(y),P=R0(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)&&_0({id:e,store:O,nodeRef:A}),t&&t(n,{...b.userNode})},H=t=>{if(!(fQ(t.nativeEvent)||m)){if(lZ.includes(t.key)&&T){let n=t.key===`Escape`;_0({id:e,store:O,unselect:n,nodeRef:A})}else if(w&&y.selected&&Object.prototype.hasOwnProperty.call(I0,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:I0[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&&(wZ(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:wG([`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:`${l1}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,G.jsx)(S0,{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 Z0=(0,s.memo)(X0),Q0=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function $0(e){let{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:i}=a1(Q0,t1),a=K0(e.onlyRenderVisibleElements),o=J0();return(0,G.jsx)(`div`,{className:`react-flow__nodes`,style:l0,children:a.map(a=>(0,G.jsx)(Z0,{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))})}$0.displayName=`NodeRenderer`;var e2=(0,s.memo)($0);function t2(e){return a1((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&&SQ({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),t1)}var n2=({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`})},r2=({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`})},i2={[gZ.Arrow]:n2,[gZ.ArrowClosed]:r2};function a2(e){let t=o1();return(0,s.useMemo)(()=>Object.prototype.hasOwnProperty.call(i2,e)?i2[e]:(t.getState().onError?.(`009`,sZ.error009(e)),null),[e])}var o2=({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=a2(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},s2=({defaultColor:e,rfId:t})=>{let n=a1(e=>e.edges),r=a1(e=>e.defaultEdgeOptions),i=(0,s.useMemo)(()=>zQ(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)(o2,{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};s2.displayName=`MarkerDefinitions`;var c2=(0,s.memo)(s2);function l2({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=wG([`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}l2.displayName=`EdgeText`;var u2=(0,s.memo)(l2);function d2({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:wG([`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&&WZ(t)&&WZ(n)?(0,G.jsx)(u2,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function f2({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===$.Left||e===$.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function p2({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top}){let[o,s]=f2({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=f2({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=gQ({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 m2(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]=p2({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s}),x=e.isInternal?void 0:t;return(0,G.jsx)(d2,{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 h2=m2({isInternal:!1}),g2=m2({isInternal:!0});h2.displayName=`SimpleBezierEdge`,g2.displayName=`SimpleBezierEdgeInternal`;function _2(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]=MQ({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)(d2,{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 v2=_2({isInternal:!1}),y2=_2({isInternal:!0});v2.displayName=`SmoothStepEdge`,y2.displayName=`SmoothStepEdgeInternal`;function b2(e){return(0,s.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,G.jsx)(v2,{...n,id:r,pathOptions:(0,s.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var x2=b2({isInternal:!1}),S2=b2({isInternal:!0});x2.displayName=`StepEdge`,S2.displayName=`StepEdgeInternal`;function C2(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]=EQ({sourceX:n,sourceY:r,targetX:i,targetY:a}),y=e.isInternal?void 0:t;return(0,G.jsx)(d2,{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 w2=C2({isInternal:!1}),T2=C2({isInternal:!0});w2.displayName=`StraightEdge`,T2.displayName=`StraightEdgeInternal`;function E2(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]=yQ({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature}),S=e.isInternal?void 0:t;return(0,G.jsx)(d2,{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 D2=E2({isInternal:!1}),O2=E2({isInternal:!0});D2.displayName=`BezierEdge`,O2.displayName=`BezierEdgeInternal`;var k2={default:O2,straight:T2,step:S2,smoothstep:y2,simplebezier:g2},A2={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},j2=(e,t,n)=>n===$.Left?e-t:n===$.Right?e+t:e,M2=(e,t,n)=>n===$.Top?e-t:n===$.Bottom?e+t:e,N2=`react-flow__edgeupdater`;function P2({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:wG([N2,`${N2}-${s}`]),cx:j2(t,r,e),cy:M2(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function F2({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=o1(),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`;y$.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)(P2,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,G.jsx)(P2,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function I2({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=a1(t=>t.edgeLookup.get(e)),x=a1(e=>e.defaultEdgeOptions);b=x?{...x,...b}:b;let S=b.type||`default`,C=g?.[S]||k2[S];C===void 0&&(v?.(`011`,sZ.error011(S)),S=`default`,C=g?.default||k2.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=o1(),{zIndex:N=b.zIndex,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z}=a1((0,s.useCallback)(t=>{let n=t.nodeLookup.get(b.source),r=t.nodeLookup.get(b.target);if(!n||!r)return A2;let i=PQ({id:e,sourceNode:n,targetNode:r,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:t.connectionMode,onError:v}),a=xQ({selected:b.selected,zIndex:b.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||A2,zIndex:a}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex,v]),t1),B=(0,s.useMemo)(()=>b.markerStart?`url('#${RQ(b.markerStart,h)}')`:void 0,[b.markerStart,h]),V=(0,s.useMemo)(()=>b.markerEnd?`url('#${RQ(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:wG([`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&&lZ.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?`${u1}-${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)(F2,{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 L2=(0,s.memo)(I2),R2=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function z2({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}=a1(R2,t1),b=t2(t);return(0,G.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,G.jsx)(c2,{defaultColor:e,rfId:n}),b.map(e=>(0,G.jsx)(L2,{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))]})}z2.displayName=`EdgeRenderer`;var B2=(0,s.memo)(z2),V2=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function H2({children:e}){let t=o1(),n=(0,s.useRef)(null),[r]=(0,s.useState)(()=>t.getState().transform);return Z1(()=>{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=V2(r)))};return r(),t.subscribe(r)},[t]),(0,G.jsx)(`div`,{ref:n,className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:V2(r)},children:e})}function U2(e){let t=i0(),n=(0,s.useRef)(!1);(0,s.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var W2=e=>e.panZoom?.syncViewport;function G2(e){let t=a1(W2),n=o1();return(0,s.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function K2(e){return e.connection.inProgress?{...e.connection,to:qZ(e.connection.to,e.transform)}:{...e.connection}}function q2(e){return e?t=>e(K2(t)):K2}function J2(e){return a1(q2(e),t1)}var Y2=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function X2({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=a1(Y2,t1);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:wG([`react-flow__connection`,sQ(s)]),children:(0,G.jsx)(Z2,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var Z2=({style:e,type:t=hZ.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}=J2();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:sQ(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 hZ.Bezier:[m]=yQ(h);break;case hZ.SimpleBezier:[m]=p2(h);break;case hZ.Step:[m]=MQ({...h,borderRadius:0});break;case hZ.SmoothStep:[m]=MQ(h);break;default:[m]=EQ(h)}return(0,G.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};Z2.displayName=`ConnectionLine`;var Q2={};function $2(e=Q2){(0,s.useRef)(e),o1(),(0,s.useEffect)(()=>{},[e])}function e4(){o1(),(0,s.useRef)(!1),(0,s.useEffect)(()=>{},[])}function t4({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 $2(e),$2(t),e4(),U2(n),G2(ve),(0,G.jsx)(W0,{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)(H2,{children:[(0,G.jsx)(B2,{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)(X2,{style:h,type:m,component:g,containerStyle:_}),(0,G.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,G.jsx)(e2,{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`})]})})}t4.displayName=`GraphView`;var n4=(0,s.memo)(t4),r4=GZ(`React Flow`,`https://reactflow.dev/`),i4=({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??cZ;r$(h,g,_);let{nodesInitialized:x}=JQ(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=QZ(CZ(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:cZ,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:dZ.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:{...mZ},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:r4,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:uZ,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},a4=({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})=>e1((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 DZ({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...i4({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,nodeExtent:i,elevateNodesOnSelect:a,fitViewQueued:o,zIndexMode:s,nodesSelectionActive:c}=m(),{nodesInitialized:l,hasSelectedNodes:u}=JQ(e,t,n,{nodeOrigin:r,nodeExtent:i,elevateNodesOnSelect:a,checkEquality:!0,zIndexMode:s}),d=c&&u;o&&l?(h(),p({nodes:e,nodesInitialized:l,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:d})):p({nodes:e,nodesInitialized:l,nodesSelectionActive:d})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();r$(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}=e$(e,n,r,i,a,o,l);d&&(GQ(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=IQ(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=$Q(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(B1(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(V1(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=>H1(e,!0)));return}i(U1(r,new Set([...e]),!0)),a(U1(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>H1(e,!0)));return}a(U1(n,new Set([...e]))),i(U1(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(H1(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(H1(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,H1(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,H1(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])&&(JQ(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 t$({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:{...mZ}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...i4()})}},Object.is);function o4({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)(()=>a4({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)(r1,{value:h,children:(0,G.jsx)(t0,{children:(0,G.jsx)(E0,{children:m})})})}function s4({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)(n1)?(0,G.jsx)(G.Fragment,{children:e}):(0,G.jsx)(o4,{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 c4={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function l4({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=hZ.Bezier,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,deleteKeyCode:ee=`Backspace`,selectionKeyCode:te=`Shift`,selectionOnDrag:ne=!1,selectionMode:U=pZ.Full,panActivationKeyCode:re=`Space`,multiSelectionKeyCode:ie=$Z()?`Meta`:`Control`,zoomActivationKeyCode:ae=$Z()?`Meta`:`Control`,snapToGrid:oe,snapGrid:se,onlyRenderVisibleElements:ce=!1,selectNodesOnDrag:le,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:W,nodesFocusable:fe,nodeOrigin:pe=T1,edgesFocusable:me,edgesReconnectable:he,elementsSelectable:ge=!0,defaultViewport:_e=E1,minZoom:ve=.5,maxZoom:ye=2,translateExtent:be=cZ,preventScrolling:xe=!0,nodeExtent:Se,defaultMarkerColor:Ce=`#b1b1b7`,zoomOnScroll:we=!0,zoomOnPinch:Te=!0,panOnScroll:Ee=!1,panOnScrollSpeed:De=.5,panOnScrollMode:Oe=fZ.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=M1(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,...c4},ref:kt,className:wG([`react-flow`,i,jt]),id:_t,role:`application`,children:(0,G.jsxs)(s4,{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)(A1,{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)(n4,{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)(w1,{onSelectionChange:A}),ze,(0,G.jsx)(v1,{proOptions:it,position:rt}),(0,G.jsx)(h1,{rfId:At,disableKeyboardA11y:ct})]})})}var u4=X1(l4);sZ.error014();function d4({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:wG([`react-flow__background-pattern`,n,r])})}function f4({radius:e,className:t}){return(0,G.jsx)(`circle`,{cx:e,cy:e,r:e,className:wG([`react-flow__background-pattern`,`dots`,t])})}var p4;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(p4||={});var m4={[p4.Dots]:1,[p4.Lines]:1,[p4.Cross]:6},h4=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function g4({id:e,variant:t=p4.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}=a1(h4,t1),h=r||m4[t],g=t===p4.Dots,_=t===p4.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]+S[0]/2,x[1]*p[2]+S[1]/2],w=`${m}${e||``}`;return(0,G.jsxs)(`svg`,{className:wG([`react-flow__background`,u]),style:{...l,...l0,"--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)(f4,{radius:b/2,className:d}):(0,G.jsx)(d4,{dimensions:S,lineWidth:i,variant:t,className:d})}),(0,G.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${w})`})]})}g4.displayName=`Background`,(0,s.memo)(g4);function _4(){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 v4(){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 y4(){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 b4(){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 x4(){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 S4({children:e,className:t,...n}){return(0,G.jsx)(`button`,{type:`button`,className:wG([`react-flow__controls-button`,t]),...n,children:e})}var C4=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function w4({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=o1(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=a1(C4,t1),{zoomIn:y,zoomOut:b,fitView:x}=i0();return(0,G.jsxs)(g1,{className:wG([`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)(S4,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,G.jsx)(_4,{})}),(0,G.jsx)(S4,{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)(v4,{})})]}),n&&(0,G.jsx)(S4,{className:`react-flow__controls-fitview`,onClick:()=>{x(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,G.jsx)(y4,{})}),r&&(0,G.jsx)(S4,{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)(x4,{}):(0,G.jsx)(b4,{})}),u]})}w4.displayName=`Controls`;var T4=(0,s.memo)(w4);function E4({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:wG([`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 D4=(0,s.memo)(E4),O4=e=>e.nodes.map(e=>e.id),k4=e=>e instanceof Function?e:()=>e;function A4({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=D4,onClick:o}){let s=a1(O4,t1),c=k4(t),l=k4(e),u=k4(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,G.jsx)(G.Fragment,{children:s.map(e=>(0,G.jsx)(M4,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function j4({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}=a1(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}=tQ(r);return{node:r,x:i,y:a,width:o,height:s}},t1);return!l||l.hidden||!nQ(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 M4=(0,s.memo)(j4),N4=(0,s.memo)(A4),P4=200,F4=150,I4=e=>!e.hidden,L4=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]},n=!1;for(let t of e.nodeLookup.values())if(!t.hidden){n=!0;break}return{viewBB:t,boundingRect:n?BZ(CZ(e.nodeLookup,{filter:I4}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},R4=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,z4=(e,t)=>R4(e.viewBB,t.viewBB)&&R4(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,B4=`react-flow__minimap-desc`;function V4({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=o1(),C=(0,s.useRef)(null),{boundingRect:w,panZoom:T,viewBB:E,rfId:D,translateExtent:O,flowWidth:k,flowHeight:A,ariaLabelConfig:j}=a1(L4,z4),M=e?.width??P4,N=e?.height??F4,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=`${B4}-${D}`,ne=(0,s.useRef)(0),U=(0,s.useRef)();ne.current=I,(0,s.useEffect)(()=>{let e=S.getState().panZoom;if(C.current&&e)return U.current=b$({domNode:C.current,panZoom:e,getTransform:()=>S.getState().transform,getViewScale:()=>ne.current}),()=>{U.current?.destroy()}},[T]),(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=(0,s.useCallback)((e,t)=>{let n=S.getState().nodeLookup.get(t).internals.userNode;h?.(e,n)},[h]),ae=h?ie:void 0,oe=v??j[`minimap.ariaLabel`];return(0,G.jsx)(g1,{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:wG([`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:[oe&&(0,G.jsx)(`title`,{id:te,children:oe}),(0,G.jsx)(N4,{onClick:ae,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${E.x},${E.y}h${E.width}v${E.height}h${-E.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}V4.displayName=`MiniMap`,(0,s.memo)(V4);var H4=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,U4={[F$.Line]:`right`,[F$.Handle]:`bottom-right`};function W4({nodeId:e,position:t,variant:n=F$.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=C0(),b=typeof e==`string`?e:y,x=o1(),S=(0,s.useRef)(null),C=n===F$.Handle,w=a1((0,s.useCallback)(H4(C&&m),[C,m]),t1),T=(0,s.useRef)(null),E=t??U4[n];(0,s.useEffect)(()=>{if(!(!S.current||!b))return T.current||=K$({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=$Q([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...rQ({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:wG([`react-flow__resize-control`,`nodrag`,...D,n,r]),ref:S,style:{...i,scale:w,...o&&{[C?`backgroundColor`:`borderColor`]:o}},children:a})}(0,s.memo)(W4);var G4=204,K4=96,q4=84,J4={input:Le,runtime:W,model:ge,capabilities:Ve,output:ie};function Y4(e,t=34){return e?e.length<=t?e:`${e.slice(0,t)}…`:`-`}function X4(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 Z4(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 Q4(e){return e===`COMPLETED`||e===`SUCCEEDED`?`成功`:e===`RUNNING`?`运行中`:e===`FAILED`?`失败`:e===`PAUSED`?`已暂停`:e||`未知`}function $4({data:e}){let t=J4[e.icon];return(0,G.jsxs)(`div`,{className:`pipeline-node-card`,title:e.fullTitle||e.title,children:[(0,G.jsx)(j0,{id:`top`,type:`target`,position:$.Top}),(0,G.jsx)(j0,{id:`top-out`,type:`source`,position:$.Top}),(0,G.jsx)(j0,{id:`right`,type:`source`,position:$.Right}),(0,G.jsx)(j0,{id:`right-in`,type:`target`,position:$.Right}),(0,G.jsx)(j0,{id:`bottom`,type:`source`,position:$.Bottom}),(0,G.jsx)(j0,{id:`bottom-in`,type:`target`,position:$.Bottom}),(0,G.jsx)(j0,{id:`left`,type:`target`,position:$.Left}),(0,G.jsx)(j0,{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 e3={pipeline:$4};function t3(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*G4+(r-1)*q4,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:G4,height:K4}})),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:gZ.ArrowClosed,width:14,height:14}}})}}function n3(){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 r3({steps:e}){let{containerRef:t,width:n}=n3(),[r,i]=(0,s.useState)(null),a=(0,s.useMemo)(()=>t3(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)(u4,{nodes:a.nodes,edges:a.edges,nodeTypes:e3,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)(T4,{showFitView:!1,position:`bottom-right`,children:(0,G.jsx)(S4,{"aria-label":`适应画布`,title:`适应画布`,onClick:()=>r?.fitView({padding:.16,duration:260}),children:(0,G.jsx)(Pe,{size:14})})})})})}function i3({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||X4(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:Y4(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)(xd,{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]?Q4(_[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)(r3,{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:Y4(e.input||`运行`)}),(0,G.jsxs)(`small`,{children:[Z4(e.startedAt),` · `,Q4(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 a3=new Set([`QUEUED`,`RUNNING`]);function o3(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 s3(e){return e==null?`-`:e<1e3?`${e} ms`:`${(e/1e3).toFixed(2)} s`}function c3(e){if(!e.completedAt)return a3.has(e.status)?`进行中`:`-`;let t=new Date(e.completedAt).getTime()-new Date(e.createdAt).getTime();return Number.isFinite(t)&&t>=0?s3(t):`-`}function l3(e){return e===`PASSED`||e===`SUCCEEDED`?`success`:a3.has(e)?`info`:e===`CANCELLED`||e===`INTERRUPTED`?`warning`:`danger`}function u3(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 d3(e,t){try{let n=await e.json();return n?.error?.message||n?.detail?.message||t}catch{return t}}var f3=[{id:`response_contract@v1`,label:`响应契约`},{id:`runtime_budget@v1`,label:`运行预算`},{id:`tool_trajectory@v1`,label:`工具轨迹`},{id:`reference_match@v1`,label:`参考答案匹配`}],p3=f3.slice(0,3).map(e=>e.id);function m3({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)(()=>[...p3]),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 d3(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=>a3.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 d3(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 d3(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 ${l3(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=>o3(e.createdAt)},{id:`duration`,header:`耗时`,width:100,cell:c3}],[]),ie=i.filter(e=>a3.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)(xd,{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)(vm,{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)(nk,{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)(Ih,{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)(Ih,{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)(Ih,{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:f3.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 h3(e){return typeof e==`string`?e:e==null?`-`:JSON.stringify(e,null,2)}function g3(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 _3({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 d3(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||!a3.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||!a3.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 d3(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&&a3.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 ${l3(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:c3(r)}),(0,G.jsx)(`small`,{children:o3(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:a3.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 ${l3(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=u3(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 ${l3(t)}`,children:t}),(0,G.jsx)(`small`,{children:s3(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||h3(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=g3(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:h3(e.value)}),(0,G.jsx)(`span`,{className:`status-badge ${l3(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:[s3(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 ${l3(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 v3=[{value:`system`,label:`跟随系统`,description:`随 macOS 或浏览器切换`,icon:ze},{value:`light`,label:`浅色`,description:`始终使用明亮界面`,icon:dt},{value:`dark`,label:`深色`,description:`始终使用暗色界面`,icon:Be}],y3=[{id:`general`,label:`通用`},{id:`credentials`,label:`模型与凭证`},{id:`cloud`,label:`云端连接`},{id:`runtime`,label:`运行与沙箱`},{id:`about`,label:`关于`}];function b3(e){return e===`workspace`||e===`session`?`工作区`:e===`environment`?`启动环境`:e===`missing`?`未配置`:e}function x3(e){let t=(e||`read-only`).replaceAll(`_`,`-`);return t===`workspace-write`||t===`workspace-write-auto`||t===`full-access`?t:`read-only`}function S3({themePreference:e,onThemePreferenceChange:t,initialSection:n=`general`,onClose:r}){let[i,a]=(0,s.useState)(null),o=S_({resolver:M_(MB),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:x3(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(Ib(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)(nk,{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:y3.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:v3.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)(Ih,{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?`已配置 · ${b3(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)(Ih,{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)(YB,{model:m,onClose:()=>h(null),onChanged:b})]})})}var C3=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}},w3=`conversation.ksadk.io/v1`,T3=/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/,E3=new Set([`native`,`translated`,`degraded`,`unavailable`]),D3=new Set([`user_message`,`assistant_text`,`reasoning`,`tool_call`,`approval`,`progress`,`plan`,`goal`,`artifact`,`a2ui`,`error`,`unknown`]),O3=new Set([`append`,`replace`,`completed`]),k3=new Set([`pending`,`streaming`,`completed`,`failed`]),A3=new Set([`public`,`internal`,`hidden`]),j3=new Set([`apiVersion`,`kind`,`inputId`,`sessionId`,`idempotencyKey`,`parts`,`modelRef`,`reasoning`,`extensions`]),M3=new Set([`kind`,`text`]),N3=new Set([`kind`,`attachmentRef`,`mediaType`,`name`]),P3=`ksadk.approval`,F3=`ksadk.collaboration`,I3=`ksadk.goal`;function L3(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function R3(e,t){return typeof e==`string`&&e.length>0&&e.length<=t}function z3(e,t,n=!1){return e==null||typeof e==`string`&&e.length<=t&&(n||e.length>0)}function B3(e,t){return Object.keys(e).every(e=>t.has(e))}function V3(e){let t=L3(e);return!t||typeof t.kind!=`string`?null:t.kind===`text`?!B3(t,M3)||!R3(t.text,131072)?null:{kind:`text`,text:t.text}:t.kind===`attachment`?!B3(t,N3)||!R3(t.attachmentRef,2048)||!R3(t.mediaType,256)||!z3(t.name,1024,!0)?null:{kind:`attachment`,attachmentRef:t.attachmentRef,mediaType:t.mediaType,...t.name===void 0?{}:{name:t.name}}:null}function H3(e){if(e===void 0)return{};let t=L3(e);if(!t||Object.keys(t).some(e=>!T3.test(e)||!e.includes(`.`)))return null;let n=t[P3],r=t[F3],i=t[I3];return n!==void 0&&![`ask`,`risk`,`full`].includes(String(n))||r!==void 0&&![`default`,`plan`].includes(String(r))||i!==void 0&&!R3(i,4096)?null:{...t}}function U3(e){let t=L3(e);if(!t||!B3(t,j3)||t.apiVersion!==w3||t.kind!==`ConversationInput`||!R3(t.inputId,256)||!R3(t.sessionId,256)||!R3(t.idempotencyKey,512)||!Array.isArray(t.parts)||t.parts.length===0||!z3(t.modelRef,256)||!z3(t.reasoning,64))return null;let n=t.parts.map(V3),r=H3(t.extensions);return n.some(e=>e===null)||r===null?null:{apiVersion:w3,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 W3(e){let t=U3({...e,apiVersion:e.apiVersion||w3,kind:e.kind||`ConversationInput`});if(!t)throw new C3(`conversation_contract_mismatch`,`Conversation input does not match conversation.ksadk.io/v1.`);return t}function G3(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===P3?t.push(`approval`):n===F3?e.extensions?.[n]===`plan`&&t.push(`plan`):n===I3?t.push(`goal`):t.push(n);return[...new Set(t)]}function K3(e,t){if(e.sessionId!==t.sessionId)throw new C3(`conversation_session_mismatch`,`Conversation input session does not match the active surface.`);for(let n of G3(t))if(!Z3(e,n))throw new C3(`conversation_input_unsupported`,`Conversation input is not declared by the active surface.`,{capability:n});return t}function q3(e){let t=L3(e);return!t||!R3(t.name,128)||!T3.test(t.name)||!E3.has(t.mode)||!z3(t.reason,512,!0)||(t.mode===`degraded`||t.mode===`unavailable`)&&!R3(t.reason,512)?null:{name:t.name,mode:t.mode,...t.reason===void 0?{}:{reason:t.reason}}}function J3(e){if(e===void 0)return[];if(!Array.isArray(e))return null;let t=e.map(q3);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 Y3(e){let t=L3(e);if(!t||t.apiVersion!==w3||t.kind!==`ConversationSurface`||!R3(t.surfaceId,256)||!R3(t.sessionId,256)||!R3(t.providerRef,256))return null;let n=J3(t.inputs),r=J3(t.outputs);return!n||!r?null:{apiVersion:w3,kind:`ConversationSurface`,surfaceId:t.surfaceId,sessionId:t.sessionId,providerRef:t.providerRef,inputs:n,outputs:r}}function X3(e){let t=L3(e);if(!t||t.apiVersion!==w3||t.kindVersion!==1||!R3(t.itemId,512)||!z3(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||!R3(t.sessionId,256)||!R3(t.runId,256)||!R3(t.kind,128)||!O3.has(t.operation)||!k3.has(t.lifecycle)||t.visibility!==void 0&&!A3.has(t.visibility)||!R3(t.payloadSchemaRef,256)||!z3(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?{}:L3(t.payload),a=t.nativeRef===void 0?{}:L3(t.nativeRef);if(!i||!a)return null;let o=String(t.kind||`unknown`),s=D3.has(o)?o:`unknown`;return{apiVersion:w3,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 Z3(e,...t){return e.inputs.some(e=>t.includes(e.name)&&(e.mode===`native`||e.mode===`translated`))}var Q3={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 $3(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function e6(e){let t=Q3[e.kind];return t===void 0||t===e.payloadSchemaRef}function t6(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 n6(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 r6(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:t6(e.payload.uri)}}function i6(e,t){let n=e.payload[t];return typeof n==`string`&&n?n:null}function a6(e){if(e.kind===`tool_call`){let t=i6(e,`callId`);if(t)return`tool:${t}`}if(e.kind===`approval`){let t=i6(e,`interactionId`);if(t)return`approval:${t}`}if(e.kind===`a2ui`){let t=i6(e,`surfaceId`);if(t)return`a2ui:${t}`}return`item:${e.itemId}`}function o6(e,t){let n=$3(e)&&!$3(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 s6(e){let t=[],n=new Map;for(let r of e){let e=a6(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:o6(a.item,r),sourceItemIds:[...new Set([...a.sourceItemIds,r.itemId])]}}return t}function c6(e,t={}){let n=e.items.filter(e=>e.visibility===`public`||t.includeInternal===!0&&e.visibility===`internal`),r=n.filter(e6),i=n.filter(e=>!e6(e)),a=new Set([`user_message`,`assistant_text`,`reasoning`]),o=r.filter(e=>a.has(e.kind)).map(n6),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`)&&$3(e));return{timeline:s6(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(r6),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 l6(){return{items:[],appliedSources:[]}}function u6(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function d6(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 f6(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&&u6(a)&&!u6(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:d6(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 p6=class{state=l6();apply(e){let t=f6(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]}}},m6=8;function h6(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function g6(e){if(e?.aborted)throw new C3(`conversation_aborted`,`Conversation request was aborted.`)}function _6(e,t){return t?.aborted===!0||e instanceof Error&&e.name===`AbortError`}function v6(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 C3(`conversation_contract_mismatch`,`Conversation base URL must be an HTTP(S) URL without embedded credentials.`,{cause:e})}}function y6(e){return Math.min(200*2**Math.max(0,e-1),2e3)}function b6(e){return new Promise(t=>{setTimeout(t,e)})}async function x6(e,t,n){if(g6(n),!n){await e(t);return}await new Promise((r,i)=>{let a=()=>i(new C3(`conversation_aborted`,`Conversation request was aborted.`));n.addEventListener(`abort`,a,{once:!0}),e(t).then(r,i).finally(()=>{n.removeEventListener(`abort`,a)})})}function S6(e,t,n){let r=e.snapshot();return{cursor:t,runId:n,state:r,presentation:c6(r)}}function C6(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 C3(`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 C3(`conversation_contract_mismatch`,`Conversation stream contains invalid JSON.`,{cause:e})}let o=h6(a);if(!o||o.conversationItem===void 0){n!==void 0&&(t.cursor=Math.max(t.cursor,n));return}if(n===void 0)throw new C3(`conversation_stream_error`,`Canonical conversation items require an SSE replay cursor.`);let s=X3(o.conversationItem);if(!s)throw new C3(`conversation_contract_mismatch`,`Conversation stream item does not match conversation.ksadk.io/v1.`);if(t.runId&&t.runId!==s.runId)throw new C3(`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?.(S6(t.reducer,t.cursor,t.runId))}async function w6(e,t){if(!e.body)throw new C3(`conversation_stream_error`,`Conversation response has no event stream body.`);let n=e.body.getReader(),r=new TextDecoder,i=``;try{for(;;){g6(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;C6(i.slice(0,e),t),i=i.slice(e+n),o=/\r?\n\r?\n/.exec(i)}}i+=r.decode(),i.trim()&&C6(i,t)}catch(e){throw e instanceof C3?e:(_6(e,t.options.signal)&&g6(t.options.signal),new C3(`conversation_stream_error`,`Conversation event stream was interrupted.`,{cause:e,runId:t.runId||void 0,cursor:t.cursor}))}finally{n.releaseLock()}}function T6(e){return e.state.items.some(e=>(e.kind===`progress`||e.kind===`error`)&&(e.lifecycle===`completed`||e.lifecycle===`failed`))}var E6=class{fetcher;baseUrl;maxReconnects;sleep;retryDelayMs;constructor(e={}){if(!Number.isInteger(e.maxReconnects??m6)||(e.maxReconnects??m6)<0||(e.maxReconnects??m6)>32)throw new C3(`conversation_contract_mismatch`,`Conversation reconnect limit must be an integer from 0 to 32.`);this.fetcher=e.fetch,this.baseUrl=v6(e.baseUrl||``),this.maxReconnects=e.maxReconnects??m6,this.sleep=e.sleep||b6,this.retryDelayMs=e.retryDelayMs||y6}fetch(){if(this.fetcher)return this.fetcher;if(typeof globalThis.fetch==`function`)return globalThis.fetch.bind(globalThis);throw new C3(`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`){g6(n);try{return await this.fetch()(e,t)}catch(e){throw e instanceof C3?e:(_6(e,n)&&g6(n),new C3(r,`Conversation network request failed.`,{cause:e}))}}assertOk(e){if(!e.ok)throw new C3(`conversation_http_error`,`Conversation endpoint returned HTTP ${e.status}.`,{status:e.status})}async getSurface(e,t,n={}){if(!e||!t)throw new C3(`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 C3(`conversation_contract_mismatch`,`Conversation surface response is not valid JSON.`,{cause:e})}let o=h6(a),s=Y3(o?.surface);if(!o||typeof o.buildId!=`string`||!o.buildId||!s)throw new C3(`conversation_contract_mismatch`,`Conversation surface response does not match conversation.ksadk.io/v1.`);return{buildId:o.buildId,surface:s}}async streamTurn(e){g6(e.signal),K3(e.bootstrap.surface,e.input);let t={cursor:0,runId:``,reducer:new p6,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 w6(r,t)}catch(e){if(!(e instanceof C3)||e.code!==`conversation_stream_error`||!t.runId)throw e}let i=S6(t.reducer,t.cursor,t.runId);if(T6(i))return i;if(!t.runId)throw new C3(`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 x6(this.sleep,this.retryDelayMs(n),e.signal),g6(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 w6(r,t)}catch(e){if(e instanceof C3&&e.code===`conversation_aborted`||e instanceof C3&&e.code===`conversation_contract_mismatch`||e instanceof C3&&e.code===`conversation_http_error`&&e.status!==void 0&&e.status<500)throw e;continue}if(i=S6(t.reducer,t.cursor,t.runId),T6(i))return i}throw new C3(`conversation_reconnect_exhausted`,`Conversation replay stopped after the configured reconnect limit.`,{runId:t.runId,cursor:t.cursor})}};function D6(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 O6(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 k6(e){return[...e].reverse().find(e=>e.usage?.reported===!0&&Number.isFinite(e.usage.inputTokens))?.usage?.inputTokens}var A6=new Set([`RUNNING`,`PAUSED`,`WAITING_INPUT`]);function j6(e){return[...e].filter(e=>A6.has(String(e.status||``))).sort((e,t)=>Date.parse(e.startedAt||`1970-01-01`)-Date.parse(t.startedAt||`1970-01-01`)).at(-1)}function M6(e,t){return t?e.filter(e=>e.id!==t):e}function N6(e){let t=e.completedAt||e.startedAt||``,n=Date.parse(t);return Number.isFinite(n)?n:0}function P6(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)=>N6(e)-N6(t)),r=n[0],i=n.at(-1),a=[...n].reverse().find(e=>A6.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 F6(e,t){return{localId:e,responseId:e,sessionId:t,runId:``,reasoning:``,output:``,status:`streaming`,error:``,activities:[],surfaces:[],conversationItems:l6(),timeline:[],artifacts:[],fallbacks:[],pendingApprovals:[],transport:`responses`}}function I6(e){return e&&typeof e==`object`?e:{}}function L6(e,t){if(typeof e.detail==`string`&&e.detail.trim())return e.detail;let n=I6(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 R6(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:Y6(e.payload),data:e.payload})),...n.approvalItems.map(e=>({id:`approval:${e.itemId}`,kind:`approval`,title:L6(e.payload,`等待批准`),status:e.lifecycle===`failed`?`failed`:e.lifecycle===`completed`?`completed`:`waiting`,detail:Y6(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:L6(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=W6(i,{type:`a2ui.surface.update`,runId:e.runId,operations:t})}for(let e of n.structuredInputItems){let t=String(e.payload.surfaceId||``);t&&(i=W6(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:I6(e.payload.inputSchema),revision:Number(e.payload.revision||0)}))}}return i}function z6(e,t){return R6(e,t.state,t.presentation)}function B6(e,t){let n=String(t.type||``),r=X3(t.conversationItem);if(r){let t=f6(e.conversationItems,r);return t===e.conversationItems?e:R6(e,t,c6(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=I6(t.error);return{...e,status:`failed`,error:String(n.message||t.message||`Agent 运行失败`)}}if(n===`response.created`||n===`response.in_progress`){let n=I6(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=X6(I6(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 W6(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:I6(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=I6(t.response),r=I6(n.metadata);return{...e,responseId:String(n.id||e.responseId),runId:String(r.runtime_run_id||r.runtimeRunId||e.runId),usage:I6(n.usage),status:`completed`}}if(n===`response.cancelled`||n===`response.canceled`)return{...e,status:`cancelled`};if(n===`response.failed`||n===`error`){let n=I6(t.response),r=I6(t.error||n.error);return{...e,status:`failed`,error:String(r.message||t.message||`Agent 运行失败`)}}return e}function V6(e){return{id:e,catalogId:``,components:{},roots:[],dataModel:{}}}function H6(e){let t=e.a2uiOperations??e.a2ui_operations??e.operations;return Array.isArray(t)?t.map(I6):[]}function U6(e,t){for(let n of t){let t=I6(n.createSurface);if(Object.keys(t).length){let n=String(t.surfaceId||t.surface_id||``);if(!n)continue;let r=e.get(n)||V6(n);e.set(n,{...r,catalogId:String(t.catalogId||t.catalog_id||r.catalogId)});continue}let r=I6(n.updateComponents);if(Object.keys(r).length){let t=String(r.surfaceId||r.surface_id||``);if(!t)continue;let n=e.get(t)||V6(t),i={...n.components},a=Array.isArray(r.components)?r.components.map(I6):[];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=I6(n.updateDataModel);if(Object.keys(i).length){let t=String(i.surfaceId||i.surface_id||``);if(!t)continue;let n=e.get(t)||V6(t),r=I6(i.value);e.set(t,{...n,dataModel:String(i.path||`/`)===`/`?r:{...n.dataModel,...r}});continue}let a=I6(n.deleteSurface);if(Object.keys(a).length){let t=String(a.surfaceId||a.surface_id||``);t&&e.delete(t)}}}function W6(e,t){let n=new Map(e.surfaces.map(e=>[e.id,{...e,components:{...e.components},dataModel:{...e.dataModel}}]));U6(n,H6(t));let r=String(t.type||``),i=String(t.surfaceId||t.surface_id||``);if(r===`a2ui.interaction`&&i){let e=n.get(i)||V6(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:I6(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 G6(e){let t=F6(`persisted`,`persisted`);for(let n of e)n.type.startsWith(`a2ui.`)&&(t=W6(t,{type:n.type,...n.data||{}}));return t.surfaces}function K6(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 q6(e,t){return String(e.callId||e.call_id||e.toolCallId||e.tool_call_id||t)}function J6(e,t){return String(e===`command`?t.command||t.name||`执行命令`:e===`tool`?t.name||t.tool||`调用工具`:t.kind||t.action||`等待批准`)}function Y6(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 X6(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=I6(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:Y6(e),data:e}}function Z6(e){return[String(e.runId||``),String(e.scopeId||``),String(e.itemId||``),String(e.partId||``)].join(`/`)}function Q6(e){let t=I6(e.data?.runtimeEvent),n=t.output_refs??t.outputRefs;return Array.isArray(n)?n.map(I6):[]}function $6(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}:${Z6(e)}`,u=n.get(l),d=I6(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=Q6(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=q6(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:J6(l,e),status:m,detail:Y6(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===J6(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 e8(e){let t=Number(e.totalTokens??e.total_tokens??0);return`${Number.isFinite(t)?t.toLocaleString(`en-US`):`0`} tokens`}function t8(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 n8(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=I6(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:t8(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}:${q6(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=Y6(e)||l?.detail||``,p=J6(s,e),m=J6(s,{});i(r,{id:r,kind:s,title:p===m&&l?.title?l.title:p,summary:t8(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:e8(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 r8(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 i8(e){return!Number.isFinite(e)||Number(e)<0?`未上报`:Number(e)<1e3?`${Math.round(Number(e))}ms`:`${(Number(e)/1e3).toFixed(2)}s`}function a8(e){return Number.isFinite(e)?Number(e).toLocaleString():`未上报`}function o8(e){return{platform_safety:`平台安全规则`,agent_identity:`角色定义`,agent_policy:`任务规则`,runtime_capabilities:`运行时能力说明`,resource_manifest:`工具与 Skill 说明`,request_instructions:`本次请求指令`}[e]||e}function s8(e){return{platform_safety:`平台策略`,agent_identity:`Agent Revision`,agent_policy:`Agent Revision`,runtime_capabilities:`Runtime Adapter`,resource_manifest:`构建资源清单`,request_instructions:`本次请求`}[e]||`Prompt Compiler`}function c8(e){return e.length>20?`${e.slice(0,17)}…`:e}function l8(e){return e===`RUNNING`||e===`CREATED`?`运行中`:e===`COMPLETED`?`已完成`:e===`CANCELLED`?`已取消`:e===`INTERRUPTED`?`已中断`:e===`TIMED_OUT`?`已超时`:`失败`}function u8(e){try{return BigInt(String(e.startTimeUnixNano||`0`))}catch{return 0n}}function d8(e){if(!e.length)return[];let t=[...e].sort((e,t)=>u8(e){let n=u8(t);return!e||nNumber(u8(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 f8(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 p8(e){let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return[];let n=[],r=K6(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 m8({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([p8(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)(()=>n8(a),[a]),D=(0,s.useMemo)(()=>d8(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(o8),F=u?.tokensByKind?.recalled_memory,I=(0,s.useMemo)(()=>r8(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:l8(r.status)}),(0,G.jsx)(`span`,{title:r.id,children:c8(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:i8(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?a8(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?`${a8(r.usage?.inputTokens)} / ${a8(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:o8(e.id)}),(0,G.jsxs)(`small`,{children:[`来源:`,s8(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:i8(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:f8(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 h8=[{value:`ask`,label:`请求批准`,compactLabel:`请求批准`,description:`文件修改与外部写入会逐次请求确认`},{value:`risk`,label:`帮我批准`,compactLabel:`帮我批准`,description:`仅在检测到风险操作时请求确认`},{value:`full`,label:`完全访问权限`,compactLabel:`完全访问`,description:`不受限制地访问互联网和工作区文件`}];function g8(e){return e===`ask`||e===`risk`||e===`full`?e:`risk`}function _8(e){return`agentkit-studio:approval:${e}`}function v8(e){return h8.find(t=>t.value===e)||h8[1]}function y8(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 b8(e){return(Array.isArray(e.children)?e.children:typeof e.child==`string`?[e.child]:[]).filter(e=>typeof e==`string`)}function x8({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=y8(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=b8(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=y8(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)(Ih,{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 S8=[{id:`plan`,slash:`/plan`,label:`计划模式`,description:`下一轮只分析并形成可执行计划`},{id:`goal`,slash:`/goal`,label:`设定长期目标`,description:`启动可暂停、可持续的 Codex Goal`},{id:`default`,slash:`/default`,label:`默认模式`,description:`返回直接执行模式`}];function C8(e){if(!e.startsWith(`/`)||/\s/.test(e))return[];let t=e.toLocaleLowerCase();return S8.filter(e=>e.slash.startsWith(t))}function w8(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 T8(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 E8=new Set([`txt`,`md`,`json`,`yaml`,`yml`,`csv`,`ts`,`tsx`,`js`,`jsx`,`py`,`go`,`rs`,`java`,`sh`,`css`,`html`,`xml`,`toml`,`ini`,`log`]),D8=[`image/*`,`.txt`,`.md`,`.json`,`.yaml`,`.yml`,`.csv`,`.ts`,`.tsx`,`.js`,`.jsx`,`.py`,`.go`,`.rs`,`.java`,`.sh`,`.css`,`.html`,`.xml`,`.toml`,`.ini`,`.log`].join(`,`);function O8(e){return new TextEncoder().encode(JSON.stringify(T8(``,e))).byteLength}function k8(e){return e.split(`.`).at(-1)?.toLocaleLowerCase()||``}function A8(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 j8(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 M8(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 A8(e)};if(e.type.startsWith(`text/`)||E8.has(k8(e.name)))return{...t,kind:`text`,text:await j8(e)};throw Error(`暂不支持 ${e.name};请添加图片或 UTF-8 文本/代码文件`)}function N8(e){return e<1024?`${e} B`:`${Math.max(.1,e/1024).toFixed(1)} KiB`}function P8({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 F8({disabled:e,onTogglePlan:t,onStartGoal:n,onFiles:r,active:i=!0,allowAttachments:a=!0,allowPlan:o=!0,allowGoal:c=!0,attachmentAccept:l=D8,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)(ad,{open:f,onOpenChange:p,children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsxs)(cd,{className:`composer-action-menu`,side:`top`,align:`start`,sideOffset:10,collisionPadding:12,children:[a&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ld,{className:`composer-action-heading`,children:`添加到本轮`}),(0,G.jsxs)(ud,{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)(md,{className:`composer-action-separator`}),(o||c)&&(0,G.jsx)(ld,{className:`composer-action-heading`,children:`运行方式`}),o&&(0,G.jsxs)(ud,{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)(ud,{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 I8({input:e,activeIndex:t,onSelect:n,allowPlan:r=!0,allowGoal:i=!0}){let a=C8(e).filter(e=>(e.id!==`plan`||r)&&(e.id!==`goal`||i)&&(e.id!=="default"||r));return a.length?(0,G.jsx)(gb,{className:`composer-command-menu`,shouldFilter:!1,"aria-label":`斜杠命令`,children:(0,G.jsx)(gb.List,{children:a.map((e,r)=>(0,G.jsxs)(gb.Item,{value:e.id,"data-active":r===t?`true`:`false`,onSelect:()=>n(e.id),children:[(0,G.jsx)(P8,{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 L8=[{value:``,label:`自动`,description:`使用模型或 Agent 的默认推理强度`},{value:`low`,label:`低`,description:`优先缩短响应时间`},{value:`medium`,label:`中`,description:`平衡速度与推理深度`},{value:`high`,label:`高`,description:`优先更充分的推理`}];function R8({value:e,onChange:t,active:n}){let[r,i]=(0,s.useState)(!1);(0,s.useEffect)(()=>{n||i(!1)},[n]);let a=v8(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)(ad,{open:r,onOpenChange:i,children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsxs)(cd,{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)(dd,{value:e,onValueChange:e=>t(g8(e)),children:h8.map(e=>(0,G.jsxs)(fd,{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)(pd,{className:`chat-approval-indicator`,children:(0,G.jsx)(V,{size:16})})]},e.value))})]})})]})}function z8({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,_=L8.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)(ad,{open:d,onOpenChange:f,children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsxs)(cd,{className:`chat-model-menu chat-model-reasoning-menu`,side:`top`,sideOffset:9,align:`end`,collisionPadding:12,children:[a&&(0,G.jsxs)(hd,{children:[(0,G.jsxs)(gd,{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)(sd,{children:(0,G.jsx)(_d,{className:`chat-model-menu chat-model-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(dd,{value:t,onValueChange:c,children:e.map(e=>(0,G.jsxs)(fd,{value:e.id,className:`chat-model-option`,children:[(0,G.jsx)(`span`,{children:e.label}),(0,G.jsx)(pd,{children:(0,G.jsx)(V,{size:15})})]},e.id))})})})]}),g&&(0,G.jsxs)(hd,{children:[(0,G.jsxs)(gd,{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)(sd,{children:(0,G.jsx)(_d,{className:`chat-model-menu chat-model-submenu chat-reasoning-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(dd,{value:n,onValueChange:e=>l(e),children:L8.filter(e=>e.value===``||h.includes(e.value)).map(e=>(0,G.jsxs)(fd,{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)(pd,{children:(0,G.jsx)(V,{size:15})})]},e.value||`auto`))})})})]})]})})]})}function B8({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=C8(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)(I8,{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`?`文本`:`文件`,` · `,N8(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)(F8,{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)(R8,{value:o,onChange:x,active:r}),(0,G.jsx)(`span`,{className:`chat-composer-spacer`}),f,(0,G.jsx)(z8,{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 V8(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 H8(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 U8({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}),` `,H8(r),` · `,V8(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 W8(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 G8(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 K8(e){if(!(e instanceof C3))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 q8(e,...t){return e.status===`legacy`||e.status===`declared`&&Z3(e.surface,...t)}function J8(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function Y8({usedTokens:e,limitTokens:t,known:n,percent:r}){let i=(0,s.useId)(),a=O6({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 X8(e){return`${e}_${typeof crypto.randomUUID==`function`?crypto.randomUUID().replaceAll(`-`,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function Z8(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 Q8(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 $8(e,t=34){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}function e5(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 t5(e){let t=await e.clone().json().catch(()=>null);return t?.error?.message||t?.Message||t?.message||`请求失败(HTTP ${e.status})`}async function n5(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 t5(i));let a=await i.json();if(typeof a?.attachmentRef!=`string`||typeof a?.mediaType!=`string`||typeof a?.name!=`string`)throw Error(`附件上传响应无效`);return a}function r5({error:e,onConfigure:t,onOpenSettings:n,onRetry:r}){let i=G8(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:W8(e)})]})]})]})}function i5(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 a5(e){return e.kind===`command`?`命令`:e.kind===`approval`?`人工确认`:`工具`}function o5(e){let t=e.replace(/```[\s\S]*?```/g,` `).replace(/[`#>*_[\]()-]+/g,` `).replace(/\s+/g,` `).trim();return t?$8(t.split(/[。!?!?]+|\.(?=\s|$)/).map(e=>e.trim()).filter(Boolean).at(-1)||t,72):``}function s5({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=e5(r),o=n?i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:o5(e)?`正在思考 · ${o5(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)(c5,{activity:e},e.id))]})]})}function c5({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:i5(e.kind)}),(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:a5(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 l5({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)(m5,{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:Y6(n.payload),data:n.payload};return(0,G.jsx)(c5,{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 u5({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)(x8,{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 d5({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=K6(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)(u5,{surfaces:G6(r),onInteraction:(t,r,i,a)=>n(e,t,r,i,a)})}function f5({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 t5(t));let r=[],i=K6(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)(()=>$6(a),[a]),d=(0,s.useMemo)(()=>G6(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)(s5,{reasoning:u.reasoning,activities:u.activities,streaming:t===`RUNNING`,durationMs:n}),f.map(t=>(0,G.jsx)(x8,{surface:t,onSubmit:(t,n,r,a)=>i(e,t,n,r,a)},t.id)),r&&u.output&&(0,G.jsx)(m5,{children:u.output})]})}function p5({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 m5({children:e,streaming:t=!1}){return(0,G.jsx)(`div`,{className:`chat-markdown${t?` streaming`:``}`,children:(0,G.jsx)(HF,{remarkPlugins:[KR],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)(p5,{children:e})},children:e})})}function h5({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:Q8(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:Q8(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)(f5,{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)(r5,{error:c,onConfigure:i,onOpenSettings:a,onRetry:()=>o(e.input)}):c?(0,G.jsx)(m5,{children:c}):null]})]})]})}function g5({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)(l5,{items:t.timeline,streaming:t.status===`streaming`}):(0,G.jsx)(s5,{reasoning:t.reasoning,activities:t.activities,streaming:t.status===`streaming`}),t.surfaces.filter(e=>e.interaction?.status!==`pending`).map(e=>(0,G.jsx)(x8,{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)(m5,{streaming:t.status===`streaming`,children:t.output}):t.error?(0,G.jsx)(r5,{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 _5({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)(()=>X8(`ses_surface`),[e]),le=(0,s.useMemo)(()=>P6(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=j6(de),fe=F?.status||String(W?.status||``).toLowerCase(),pe=[`streaming`,`paused`,`waiting_input`].includes(fe)||!!W,me=M6(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=D6(Ce?.input_tokens??Ce?.inputTokens??k6(de),Se?.context_window_tokens??Se?.contextWindowTokens),Te=d.map(e=>({id:e.id,label:e.display_name||e.displayName||e.id,reasoningEfforts:J8(e)})),Ee=J8(Se).includes(E)?E:``,De=q8(A,`text`),Oe=q8(A,`attachment.image`,`attachments`),ke=q8(A,`attachment.file`,`attachments`),Ae=Oe||ke,je=q8(A,`plan`),Me=q8(A,`goal`),Pe=q8(A,`approval`,`approval.mode`),Ie=q8(A,`model.select`),Le=q8(A,`reasoning.effort`),Re=A.status===`loading`,ze=Oe&&ke?D8:Oe?`image/*`:D8.split(`,`).filter(e=>e!==`image/*`).join(`,`);(0,s.useEffect)(()=>{E&&!J8(Se).includes(E)&&D(``)},[E,Se]),(0,s.useEffect)(()=>{let t=new AbortController,n=!1,r=h||ce;return j({status:`loading`}),new E6({fetch:g}).getSurface(e,r,{signal:t.signal}).then(({buildId:e,surface:t})=>{if(t.sessionId!==r)throw new C3(`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 C3&&e.code===`conversation_aborted`)){if(e instanceof C3&&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 t5(t));let n=(await t.json()).items||[],r=P6(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 t5(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(g8(localStorage.getItem(_8(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 M8(e))}catch(e){J(`无法添加附件`,e instanceof Error?e.message:String(e),`error`)}if(!i.length)return;let a=[...O,...i];if(O8(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=w8(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:X8(`ses`)),d=X8(`resp`),f=S,m=new AbortController;ae.current=m;let v={...F6(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=B6(v,e),I(v)};if(A.status===`declared`){let e=await Promise.all(y.map(e=>n5(e,m.signal))),t=W3({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 E6({fetch:g}).streamTurn({bootstrap:{buildId:A.buildId,surface:A.surface},input:t,signal:m.signal,onUpdate:e=>{v=z6(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:T8(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 t5(n));let r=new TextDecoder,i=K6(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=K8(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(_8(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 t5(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 t5(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 t5(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 t5(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 t5(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} · ${Z8(e.updatedAt)}`,children:[(0,G.jsx)(`strong`,{children:$8(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":`删除会话:${$8(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)(h5,{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)(g5,{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)(u5,{surfaces:F.surfaces,approvals:F.pendingApprovals,onInteraction:(e,t,n,r)=>rt(F.runId,e,t,n,r)}):xe.map(e=>(0,G.jsx)(d5,{runId:e.id,status:e.status,onInteraction:rt},e.id)),pe&&ge&&(0,G.jsx)(U8,{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)(B8,{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)(Y8,{...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)(Oa,{title:`删除这个会话?`,description:`相关 Run 与 Trace 会从当前本地工作区移除。`,confirmText:`删除会话`,busy:ee,onConfirm:it,onCancel:()=>H(``)})]})}function v5(e){YF(e,[/\r?\n|\r/g,y5])}function y5(){return{type:`break`}}function b5(){return function(e){v5(e)}}function x5(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function S5(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 S5(t.text??t.content??t.value??``)}return``}).filter(Boolean).join(` +`);if(e&&typeof e==`object`){let t=e;return S5(t.text??t.content??t.value??``)}return``}function C5(e){return typeof e==`string`||typeof e==`number`?String(e):``}function w5(...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=w5(e.message,e.detail,e.reason,e.error,e.text);if(n)return n}return``}function T5(e){return e&&typeof e==`object`?e:{}}function E5(e){if(!e||typeof e!=`object`)return null;let t=e,n=Object.keys(T5(t.payload)).length?T5(t.payload):t,r=T5(n.content),i=[r.runtime_event,r.runtimeEvent,n.runtime_event,n.runtimeEvent,t.runtime_event,t.runtimeEvent].map(T5).find(e=>Object.keys(e).length>0)||{},a=Object.keys(i).length?i:n,o=C5(t.event_type??t.eventType??n.event_type??n.eventType).toLowerCase();return{event:a,eventType:C5(a.event_type??a.eventType??a.type).toLowerCase()||o,runId:C5(a.run_id??a.runId??n.run_id??n.runId??t.run_id??t.runId),invocationId:C5(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 D5(e){return e.reduce((e,t)=>{let n=E5(t);return Math.max(e,n?.seq||0)},0)}function O5(e){let t=T5(e);return(Array.isArray(t.parts)?t.parts.map(T5):[])[0]||t}function k5(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function A5(e){let t=T5(e),n=T5(t.payload),r=T5(n.content),i=E5(e)?.event||{},a=[t.conversationItem,n.conversationItem,r.conversationItem,i.conversationItem];for(let e of a){let t=X3(e);if(t)return t}return null}function j5(e){let t=A5(e);if(!t||t.visibility!==`public`||t.kind===`unknown`||t.kind===`progress`)return null;let n=S5(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=S5(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||k5(t.payload),status:r,operation:t.operation===`append`?`append`:`replace`}}function M5(e){let t=j5(e);if(t)return t;let n=E5(e);if(!n)return null;let r=n.event;if([`message.delta`,`response.output_text.delta`,`output_text.delta`].includes(n.eventType)){let e=T5(r.content),t=T5(r.update),i=S5(t.delta??t.text??r.delta??e.delta??r.text);if(!i)return null;let a=C5(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||C5(r.op).toLowerCase()===`replace`?`replace`:`append`}}if(![`item.started`,`item.updated`,`item.completed`,`item.failed`].includes(n.eventType))return null;let i=C5(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=T5(o),c=O5(o),l=S5(c.text??c.delta??c.content??s.parts??r.text),u=S5(c.name??r.name??r.tool_name??r.title)||(a===`reasoning`?`思考过程`:a===`approval`?`等待确认`:a===`tool`?`工具调用`:`回复`),d=l||k5(c.result??c.output??c.arguments??c.error??``),f=C5(r.item_id??r.itemId??c.call_id??c.callId)||`${a}:${u}`;return{id:[n.invocationId||n.runId,C5(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:C5(r.op).toLowerCase()===`append`?`append`:`replace`}}function N5(e){let t=M5(e);if(t)return[t];let n=E5(e);if(!n)return[];let r=n.event,i=n.eventType,a=C5(r.id??r.response_id??r.responseId)||n.invocationId||n.runId||`direct`,o=[],s=Array.isArray(r.choices)?r.choices.map(T5):[];if(s.forEach((e,t)=>{let n=T5(e.delta),r=S5(n.reasoning_content??n.reasoning??n.thinking);r&&o.push({id:`${a}//reasoning:${C5(e.index)||t}`,kind:`reasoning`,title:`思考过程`,text:r,detail:r,status:`running`,operation:`append`});let i=S5(n.content);i&&o.push({id:`${a}//message:${C5(e.index)||t}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:`append`}),(Array.isArray(n.tool_calls)?n.tool_calls.map(T5):[]).forEach((n,r)=>{let i=T5(n.function),s=S5(i.name??n.name)||`工具调用`,c=S5(i.arguments??n.arguments);o.push({id:`${a}//tool:${C5(e.index)||t}:${C5(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=S5(r.delta??r.text??T5(r.part).text);e&&o.push({id:`${a}//reasoning:${C5(r.item_id??r.itemId)||`summary`}`,kind:`reasoning`,title:`思考过程`,text:e,detail:e,status:`running`,operation:r.replace===!0||C5(r.op).toLowerCase()===`replace`?`replace`:`append`})}if([`response.output_item.added`,`response.output_item.done`].includes(i)){let e=T5(r.item),t=C5(e.type).toLowerCase();[`mcp_approval_request`,`approval_request`].includes(t)&&o.push({id:`${a}//approval:${C5(e.id??e.approval_request_id??e.call_id)||`request`}`,kind:`approval`,title:S5(e.title??e.name??e.server_label)||`等待确认`,text:``,detail:S5(e.message)||k5(e.arguments??e.request??``),status:`waiting`,operation:`replace`}),[`function_call`,`tool_call`,`computer_call`,`mcp_call`].includes(t)&&o.push({id:`${a}//tool:${C5(e.id??e.call_id??r.output_index)||`output`}`,kind:`tool`,title:S5(e.name)||`工具调用`,text:``,detail:S5(e.arguments??e.output)||k5(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=S5(r.delta);o.push({id:`${a}//tool:${C5(r.item_id??r.itemId??r.call_id)||`output`}`,kind:`tool`,title:S5(r.name)||`工具调用`,text:``,detail:e,status:`running`,operation:`append`})}return i===`response.approval_request`&&o.push({id:`${a}//approval:${C5(r.interaction_id??r.approval_request_id??r.item_id)||`request`}`,kind:`approval`,title:S5(r.title??r.message??T5(r.request).title)||`等待确认`,text:``,detail:S5(r.message)||k5(r.request??``),status:`waiting`,operation:`replace`}),o}function P5(e){let t=E5(e);if(!t)return``;let n=C5(t.event.event_id??t.event.eventId);return n?`${t.runId||t.invocationId}/${n}`:``}function F5(e){let t=E5(e);if(!t)return null;let n=t.event,r=t.eventType;if(C5(n.object).toLowerCase()===`response`){let e=C5(n.status).toLowerCase();if(e===`completed`)return{status:`completed`,error:``};if([`failed`,`cancelled`,`canceled`,`incomplete`].includes(e))return{status:`failed`,error:w5(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:w5(n.error,n.response,n.message,n.detail)||`云端流式响应失败`}:null}function I5(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 L5(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:S5(t.title??t.summary??t.first_prompt??``)||`新会话`,updatedAt:C5(t.updated_at??t.updatedAt??t.created_at),state:C5(t.active_run_status??t.state),error:w5(t.active_run_error,t.activeRunError,t.last_error,t.lastError,t.error)}:null}function R5(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 z5(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:S5(t.content),timestamp:String(t.timestamp??``)}}function B5(e){let t=new Map;for(let n of e){let e=E5(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:S5(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 V5(e,t,n,r){if(!t&&!n&&r<=0)return null;for(let i of e){let e=E5(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=w5(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||w5(t.error,t.message,t.reason)}}}return null}async function H5(e,t,n){if(!e.ok)throw Error(await U5(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 U5(e){try{let t=await e.json();return String(t?.error?.message||t?.message||t?.detail||`请求失败 (${e.status})`)}catch{return`请求失败 (${e.status})`}}async function W5(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 G5({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 K5({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 U5(t));let n=await t.json(),r=(n.sessions||n.items||[]).map(L5).filter(e=>!!e);o(r);let i=r.find(e=>e.id===ae.current);i&&R5(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 U5(t));let n=((await t.json()).messages||[]).map(z5).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 U5(t));let n=await t.json(),r=Array.isArray(n.events)?n.events:[];de.current.set(e,Math.max(de.current.get(e)||0,D5(r)));let i=V5(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(B5(a)),!me.current){let e=r.reduce((e,t)=>{let n=M5(t);return n&&n.kind!==`message`?I5(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 U5(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(g8(localStorage.getItem(_8(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=x5(xe).includes(k)?k:``;(0,s.useEffect)(()=>{k&&!x5(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 U5(e));let t=await e.json(),n=L5(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=w8(_);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 W5(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=>I5(t,e));return}p(t=>I5(t,e))};g(`${ge}/sessions/${encodeURIComponent(r)}/events/stream?afterSeqId=${ue.current}`,{headers:{Accept:`text/event-stream`},signal:a.signal}).then(e=>H5(e,e=>{let t=E5(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(B5(pe.current));let a=M5(e);if(a&&a.kind!==`message`){let t=P5(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||o(a,`session`)}let s=V5([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 H5(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(B5(pe.current));let t=P5(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||N5(e).forEach(e=>o(e,`direct`));let r=F5(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 U5(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 U5(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=R5(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||R5(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)(HF,{remarkPlugins:[KR,b5],children:e.content||`…`})})]},e.id)),(0,G.jsx)(G5,{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)(HF,{remarkPlugins:[KR,b5],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)(B8,{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:x5(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(_8(t),e)},onModelChange:w,onReasoningEffortChange:A,onCommandSelect:De,onCommandIndexChange:M,onSend:()=>{Te()}}),(0,G.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]})]})}function q5(e){return e<=1023?`compact`:e<=1439?`laptop`:e<=1919?`desktop`:`wide`}function J5(){let[e,t]=(0,s.useState)(()=>q5(window.innerWidth));return(0,s.useEffect)(()=>{let e=()=>t(q5(window.innerWidth));return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}var Y5=`agentkit-studio-theme`,X5=`(prefers-color-scheme: dark)`;function Z5(e){return e===`light`||e===`dark`||e===`system`?e:`light`}function Q5(e,t){return e===`system`?t?`dark`:`light`:e}function $5(){try{return Z5(window.localStorage.getItem(Y5))}catch{return`light`}}function e7(){return typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches}function t7(e){let t=document.documentElement;t.classList.toggle(`dark`,e===`dark`),t.dataset.theme=e,t.style.colorScheme=e}function n7(){let e=$5();return t7(Q5(e,e7())),e}function r7(){let[e,t]=(0,s.useState)($5),[n,r]=(0,s.useState)(e7),i=Q5(e,n);return(0,s.useEffect)(()=>{let e=window.matchMedia(X5),t=()=>r(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,s.useLayoutEffect)(()=>{t7(i)},[i]),{preference:e,resolvedTheme:i,setPreference:(0,s.useCallback)(e=>{t(e);try{window.localStorage.setItem(Y5,e)}catch{}},[])}}var i7=`agentkit.studio.rail-expanded`,a7=[{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 o7(){try{let e=window.localStorage.getItem(i7);return e===null?null:e===`true`}catch{return null}}function s7(e){try{window.localStorage.setItem(i7,String(e))}catch{}}function c7(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 l7({label:e,children:t}){return(0,G.jsxs)($v,{children:[(0,G.jsx)(ey,{asChild:!0,children:t}),(0,G.jsx)(ty,{children:(0,G.jsxs)(ny,{className:`studio-tooltip`,side:`right`,sideOffset:8,children:[e,(0,G.jsx)(ry,{className:`studio-tooltip-arrow`})]})})]})}function u7({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)(Qv,{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)(l7,{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:[a7.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=c7(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)(l7,{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)(l7,{label:t.label,children:i},t.id)})]})]}),(0,G.jsxs)(`div`,{className:`sidebar-footer`,children:[(0,G.jsx)(l7,{label:`本地用户`,children:(0,G.jsx)(`span`,{className:`user-avatar`,"aria-label":`本地用户`,children:`A`})}),(0,G.jsx)(l7,{label:`设置`,children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`设置`,onClick:u,children:(0,G.jsx)(it,{size:16})})})]})]})})}function d7({currentAgentId:e,registry:t=fH.contributions,route:n}){let r=t.getEntries(lV.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 f7={agents:`Agent`,create:`创建 Agent`,"agent-detail":`Agent 配置`,conversations:`会话`,resources:`工程资源`,builds:`构建`,deployments:`部署`,observability:`可观测`,evaluations:`评测`,"runtime-resources":`运行资源`,plugins:`已安装插件`,automations:`自动化`,orchestration:`任务编排`,extension:`插件`},p7=Object.keys(f7),m7=[`model`,`tool`,`mcp`,`skill`],h7=new Set([`conversations`,`builds`,`observability`,`automations`,`orchestration`]),g7=`agentkit-studio:chat-target:v1`;function _7(){try{return b7(window.localStorage.getItem(g7)||``)}catch{return{kind:``,id:``}}}function v7(e){try{window.localStorage.setItem(g7,e)}catch{}}function y7(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`:p7.includes(a)?a:`agents`;return{view:s,resourceKind:s===`resources`&&m7.includes(t[1])?t[1]:`model`,editingAgentId:n,detailAgentId:r,evaluationRunId:i,extensionPath:o}}function b7(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 x7(e,t,n){return e===`extension`&&!n.some(e=>e.path===t)}function S7(){let e=J5(),t=r7(),n=y7(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=_7();return e.kind===`cloud`?e.id:``}),[te,ne]=(0,s.useState)(!1),[U,re]=(0,s.useState)(0),[ie,ae]=(0,s.useState)(o7),oe=dV(fH.contributions,lV.sidebarNavigation),se=dV(fH.contributions,lV.route);(0,s.useEffect)(()=>{cG.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=y7(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=cU(i,[...c.values()]);z(l),ee(e=>l.some(t=>t.id===e&&aU(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=>aU(e).kind===`studio-session-events`),_e=ge.find(e=>e.id===H),ve=r===`conversations`&&!!_e;(0,s.useEffect)(()=>{r!==`conversations`||!m||!B||(_e?v7(`cloud:${_e.id}`):fe&&v7(`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}=b7(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){aU(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`:f7[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),s7(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)(()=>{x7(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)(u7,{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)(Ih,{className:`header-agent-selector conversation-target-selector`,ariaLabel:`切换会话目标`,value:be,placeholder:`选择会话目标`,options:ye,onValueChange:xe}):h7.has(r)&&(0,G.jsx)(Ih,{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)(K5,{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)(_5,{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)(m8,{agentId:_,onClose:()=>ne(!1),onOpenTrace:()=>ce(`observability`)})]}),(0,G.jsxs)(`div`,{style:{display:r===`conversations`?`none`:void 0},children:[r===`agents`&&(0,G.jsx)(Rh,{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)(OH,{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)(YH,{agentId:x,onBack:()=>ce(`agents`),onChat:Se,onBuild:()=>ce(`builds`),onEdit:Ee,onChanged:de}),r===`resources`&&(0,G.jsx)(UB,{kind:u,onKindChange:De,refreshTick:U}),r===`builds`&&(0,G.jsx)(nU,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`deployments`&&(0,G.jsx)(zU,{onCreate:Te,onOpenChat:Ce,onSelectBuild:()=>ce(`builds`)}),r===`observability`&&(0,G.jsx)(ZW,{refreshTick:U}),r===`evaluations`&&!a&&(0,G.jsx)(m3,{refreshTick:U,onOpenRun:le}),r===`evaluations`&&a&&(0,G.jsx)(_3,{runId:a,onBack:ue}),r===`runtime-resources`&&(0,G.jsx)(aG,{refreshTick:U,onOpenResources:De}),r===`plugins`&&(0,G.jsx)(CG,{}),r===`automations`&&(0,G.jsx)(UH,{currentAgentId:_,agents:f,onSelectAgent:v,scopedAgentId:y}),r===`orchestration`&&(0,G.jsx)(i3,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`extension`&&Re&&(0,G.jsx)(d7,{currentAgentId:_,route:Re})]})]})]}),j&&(0,G.jsx)(S3,{themePreference:t.preference,onThemePreferenceChange:t.setPreference,initialSection:P,onClose:()=>M(!1)}),(0,G.jsx)(L_,{})]})]})}async function C7(){n7();try{await _()}catch{}(0,c.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(s.StrictMode,{children:(0,G.jsx)(S7,{})}))}C7(); \ No newline at end of file diff --git a/ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js b/ksadk/studio/static/assets/react-vendor-D0Ec-185.js similarity index 94% rename from ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js rename to ksadk/studio/static/assets/react-vendor-D0Ec-185.js index d17f60dd..7a4c0881 100644 --- a/ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js +++ b/ksadk/studio/static/assets/react-vendor-D0Ec-185.js @@ -1,4 +1,4 @@ -import{t as e}from"./rolldown-runtime-hePW80VL.js";var t=e((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 ie(e,t){return re(e.type,t,e.props)}function C(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function se(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function ce(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 le(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,le(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+se(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),le(o,r,i,``,function(e){return e})):o!=null&&(C(o)&&(o=ie(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{n.exports=t()})),r=e((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,C());else{var t=n(l);t!==null&&se(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&&se(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}}}finally{i?C():ee=!1}}}var C;if(typeof y==`function`)C=function(){y(ie)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=ie,C=function(){oe.postMessage(null)}}else C=function(){_(ie,0)};function se(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,se(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,C()))),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}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(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=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1me||(e.current=pe[me],pe[me]=null,me--)}function D(e,t){me++,pe[me]=e.current,e.current=t}var ge=he(null),_e=he(null),ve=he(null),ye=he(null);function be(e,t){switch(D(ve,t),D(_e,e),D(ge,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}E(ge),D(ge,e)}function xe(){E(ge),E(_e),E(ve)}function Se(e){e.memoizedState!==null&&D(ye,e);var t=ge.current,n=Hd(t,e.type);t!==n&&(D(_e,e),D(ge,n))}function Ce(e){_e.current===e&&(E(ge),E(_e)),ye.current===e&&(E(ye),Qf._currentValue=fe)}var we,Te;function Ee(e){if(we===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);we=t&&t[1]||``,Te=-1{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 ie(e,t){return re(e.type,t,e.props)}function C(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function se(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function ce(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 le(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,le(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+se(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),le(o,r,i,``,function(e){return e})):o!=null&&(C(o)&&(o=ie(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{n.exports=t()})),r=e((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,C());else{var t=n(l);t!==null&&se(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&&se(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?C():ee=!1}}}var C;if(typeof y==`function`)C=function(){y(ie)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=ie,C=function(){oe.postMessage(null)}}else C=function(){_(ie,0)};function se(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,se(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,C()))),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}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(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=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1me||(e.current=pe[me],pe[me]=null,me--)}function D(e,t){me++,pe[me]=e.current,e.current=t}var ge=he(null),_e=he(null),ve=he(null),ye=he(null);function be(e,t){switch(D(ve,t),D(_e,e),D(ge,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}E(ge),D(ge,e)}function xe(){E(ge),E(_e),E(ve)}function Se(e){e.memoizedState!==null&&D(ye,e);var t=ge.current,n=Hd(t,e.type);t!==n&&(D(_e,e),D(ge,n))}function Ce(e){_e.current===e&&(E(ge),E(_e)),ye.current===e&&(E(ye),Qf._currentValue=fe)}var we,Te;function Ee(e){if(we===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);we=t&&t[1]||``,Te=-1)`:-1 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/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..2ad8c081 100644 --- a/scripts/prepare_ksadk_python_export.py +++ b/scripts/prepare_ksadk_python_export.py @@ -64,6 +64,7 @@ } EXPORT_PREFIXES = ( + "contracts/", "docs-site/", "ksadk/", "ksadk_runtime_common/", @@ -107,15 +108,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 +158,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 +265,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 +391,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) @@ -342,6 +406,8 @@ def copy_export(plan: ExportPlan, output_dir: Path) -> None: manifest = { "generatedAt": datetime.now(timezone.utc).isoformat(), + "sourceCommit": source_commit, + "sourceTree": source_tree, "targetRepository": TARGET_REPOSITORY, "documentation": DOCUMENTATION_URL, "exportPathCount": len(plan.export_paths), 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..7745942a --- /dev/null +++ b/tests/packaging/test_phase2_release_preflight.py @@ -0,0 +1,501 @@ +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, + 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=False) + + +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..96676010 100644 --- a/tests/studio/e2e/studio_browser_smoke.py +++ b/tests/studio/e2e/studio_browser_smoke.py @@ -86,10 +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() + expect( + page.get_by_role("banner", name="当前页面").get_by_text(label, exact=True) + ).to_be_visible() page.wait_for_load_state("networkidle") 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..9be8ab8a 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.144.4", + "codex-cli 0.144.4", + ), + ) + with ( + studio_server(workspace, service=service) as base_url, + sync_playwright() as playwright, + ): browser = playwright.chromium.launch(headless=True) try: context = browser.new_context( 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_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" }, From 33727497feb4af6dba149f1f5ccea18b3589f304 Mon Sep 17 00:00:00 2001 From: xiayu Date: Mon, 31 Aug 2026 14:20:00 +0800 Subject: [PATCH 2/3] fix(release): minimize public export manifest --- export-manifest.json | 944 +------------------------ scripts/open_source_audit.py | 155 ++++ scripts/prepare_ksadk_python_export.py | 37 +- tests/test_open_source_audit.py | 60 ++ 4 files changed, 245 insertions(+), 951 deletions(-) diff --git a/export-manifest.json b/export-manifest.json index 99628f3a..316c84e3 100644 --- a/export-manifest.json +++ b/export-manifest.json @@ -1,942 +1,14 @@ { - "generatedAt": "2026-08-31T05:46:26.923068+00:00", - "sourceCommit": "719723f177858e94628c71c1c385b475ed500db3", + "schemaVersion": 1, + "generatedAt": "2026-08-31T06:18:37.740455+00:00", + "sourceCommit": "0c4279c1ab6bddecf1f885529007c483e07da446", "sourceTree": "clean", "targetRepository": "https://github.com/kingsoftcloud/ksadk-python", "documentation": "https://kingsoftcloud.github.io/ksadk-python/", "exportPathCount": 1279, - "excludedPathCount": 803, - "excludedPaths": [ - "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/conversation-stream-recovery.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/phase2-plugin-compatibility.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/agentProviders.test.ts", - "ksadk/studio/react-ui/src/agentProviders.ts", - "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.behavior.test.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/conversationProtocol.node.test-bridge.mjs", - "ksadk/studio/react-ui/src/conversationProtocol.test.ts", - "ksadk/studio/react-ui/src/conversationProtocol.ts", - "ksadk/studio/react-ui/src/createPage.component-contract.test.mjs", - "ksadk/studio/react-ui/src/dsh-runtime/DshWorkspaceSurface.tsx", - "ksadk/studio/react-ui/src/dsh-runtime/fixtures/demoClientPlugin.tsx", - "ksadk/studio/react-ui/src/dsh-runtime/runtimeOptions.ts", - "ksadk/studio/react-ui/src/dsh-runtime/studioContributions.ts", - "ksadk/studio/react-ui/src/dsh-runtime/studioDshCompositionHost.test.tsx", - "ksadk/studio/react-ui/src/dsh-runtime/studioDshCompositionHost.ts", - "ksadk/studio/react-ui/src/dsh-runtime/studioDshRuntime.test.tsx", - "ksadk/studio/react-ui/src/dsh-runtime/studioDshRuntime.ts", - "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/AutomationsPage.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/PluginsPage.test.tsx", - "ksadk/studio/react-ui/src/pages/PluginsPage.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/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_plugin.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/baselines/phase2/README.md", - "tests/contracts/baselines/phase2/conversation/conversation-input.schema.json", - "tests/contracts/baselines/phase2/conversation/conversation-item.schema.json", - "tests/contracts/baselines/phase2/conversation/conversation-surface.schema.json", - "tests/contracts/baselines/phase2/plugin/agent-bundle-manifest-v2.schema.json", - "tests/contracts/baselines/phase2/plugin/capability-definition.schema.json", - "tests/contracts/baselines/phase2/plugin/composition-profile.schema.json", - "tests/contracts/baselines/phase2/plugin/context-contributor.schema.json", - "tests/contracts/baselines/phase2/plugin/dsh-agent-provider-host.schema.json", - "tests/contracts/baselines/phase2/plugin/plugin-ecosystem-bridge.schema.json", - "tests/contracts/baselines/phase2/plugin/plugin-inventory.schema.json", - "tests/contracts/baselines/phase2/plugin/plugin-lock.schema.json", - "tests/contracts/baselines/phase2/plugin/subagent-provider.schema.json", - "tests/contracts/baselines/phase2/scheduler/schedule-occurrence.schema.json", - "tests/contracts/baselines/phase2/scheduler/scheduled-task.schema.json", - "tests/contracts/test_agent_kernel_schema_compatibility.py", - "tests/contracts/test_interaction_v1_contract.py", - "tests/contracts/test_phase2_schema_compatibility.py", - "tests/conversations/test_ambient_error_guard.py", - "tests/conversations/test_canonical_history_projection.py", - "tests/conversations/test_contracts.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_projection.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_tool_result_projection.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/fixtures/dsh-profile-plugin/cordis.patch.yml", - "tests/e2e/fixtures/dsh-profile-plugin/index.mjs", - "tests/e2e/fixtures/dsh-profile-plugin/package.json", - "tests/e2e/test_codex_sdk_process_e2e.py", - "tests/e2e/test_dsh_plugin_bridge_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/conftest.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/harness/test_harness_session_continuity.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/plugins/test_builtin_capabilities.py", - "tests/plugins/test_bundle_security.py", - "tests/plugins/test_codex_plugin_bridge.py", - "tests/plugins/test_codex_subagent_provider.py", - "tests/plugins/test_composition_compiler.py", - "tests/plugins/test_contracts.py", - "tests/plugins/test_dsh_plugin_bridge.py", - "tests/plugins/test_dsh_provider_vertical.py", - "tests/plugins/test_dsh_toolchain.py", - "tests/plugins/test_ecosystem_bridge_contract.py", - "tests/plugins/test_ecosystem_probe.py", - "tests/plugins/test_execution_vertical.py", - "tests/plugins/test_harness_dsh_bundle.py", - "tests/plugins/test_harness_provider_vertical.py", - "tests/plugins/test_host.py", - "tests/plugins/test_legacy_harness_bundle_adapter.py", - "tests/plugins/test_resolver.py", - "tests/plugins/test_shipped_dsh_providers.py", - "tests/plugins/test_subagent_provider.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/scheduler/__init__.py", - "tests/scheduler/test_contracts.py", - "tests/scheduler/test_dispatcher.py", - "tests/scheduler/test_reconciliation.py", - "tests/scheduler/test_runtime_vertical.py", - "tests/scheduler/test_scheduler.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/e2e/agent_policy_editor_browser_e2e.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/test_agent_budget_chain.py", - "tests/studio/test_api.py", - "tests/studio/test_api_plugin_routes.py", - "tests/studio/test_attachment_store.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_dsh_provider_registration.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_import.py", - "tests/studio/test_framework_run_prompt_ownership.py", - "tests/studio/test_hosted_kernel_bundle_preflight.py", - "tests/studio/test_legacy_harness_product_entry.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_plugin_composition.py", - "tests/studio/test_plugin_kernel_adapter.py", - "tests/studio/test_plugin_runtime.py", - "tests/studio/test_real_model_e2e.py", - "tests/studio/test_resource_catalog.py", - "tests/studio/test_run_service.py", - "tests/studio/test_scheduler_dsh_harness_product.py", - "tests/studio/test_scheduler_product_entry.py", - "tests/studio/test_scheduler_runtime.py", - "tests/studio/test_scheduler_service.py", - "tests/studio/test_settings.py", - "tests/studio/test_shared_web.py", - "tests/studio/test_skill_discovery.py", - "tests/studio/test_soul.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": [ - "contracts/", - "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/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" - ], - "tests": [ - "tests/__init__.py", - "tests/cli/test_cmd_create_codex.py", - "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/conftest.py", - "tests/e2e/chat_completions_stub.py", - "tests/e2e/codex_app_server_fixture.py", - "tests/e2e/codex_responses_stub.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_codex_plugin_bridge_e2e.py", - "tests/e2e/test_codex_provider_app_server_e2e.py", - "tests/e2e/test_codex_subagent_provider_e2e.py", - "tests/e2e/test_dsh_managed_toolchain_e2e.py", - "tests/events/fixtures/runtime_projection_golden.json", - "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/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_codex_provider_vertical.py", - "tests/plugins/test_dsh_node_provider_e2e.py", - "tests/runners/test_adapter_contract.py", - "tests/runners/test_codex_runner.py", - "tests/studio/__init__.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", - "tests/studio/runtime_adapter_fixtures.py", - "tests/studio/test_framework_bundle_integrity.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." - ] + "exportPolicy": { + "mode": "allowlist", + "schemaVersion": 1, + "sha256": "e9437447d631e549e5146277a47da6081201087fbd7e4449786c5007448d62dc" + } } 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/prepare_ksadk_python_export.py b/scripts/prepare_ksadk_python_export.py index 2ad8c081..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 @@ -404,29 +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/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() From 7248231000111ee22a64721112b4cc6b8ec2aae3 Mon Sep 17 00:00:00 2001 From: xiayu Date: Mon, 31 Aug 2026 14:59:13 +0800 Subject: [PATCH 3/3] fix(release): align public gates with final source --- export-manifest.json | 4 +- ...-e1psRo9-.js => PrismRenderer-IYN-ffww.js} | 2 +- .../{index-t4JdtanA.js => index-CXcKPd6_.js} | 158 ++++++++++-------- ...r-D0Ec-185.js => react-vendor-BNmTiJ-I.js} | 2 +- ksadk/studio/static/index.html | 4 +- .../test_phase2_release_preflight.py | 5 +- tests/studio/e2e/studio_browser_smoke.py | 4 +- tests/studio/e2e/studio_responsive_smoke.py | 5 +- 8 files changed, 101 insertions(+), 83 deletions(-) rename ksadk/studio/static/assets/{PrismRenderer-e1psRo9-.js => PrismRenderer-IYN-ffww.js} (99%) rename ksadk/studio/static/assets/{index-t4JdtanA.js => index-CXcKPd6_.js} (52%) rename ksadk/studio/static/assets/{react-vendor-D0Ec-185.js => react-vendor-BNmTiJ-I.js} (94%) diff --git a/export-manifest.json b/export-manifest.json index 316c84e3..78b69394 100644 --- a/export-manifest.json +++ b/export-manifest.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, - "generatedAt": "2026-08-31T06:18:37.740455+00:00", - "sourceCommit": "0c4279c1ab6bddecf1f885529007c483e07da446", + "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/", diff --git a/ksadk/studio/static/assets/PrismRenderer-e1psRo9-.js b/ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js similarity index 99% rename from ksadk/studio/static/assets/PrismRenderer-e1psRo9-.js rename to ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js index aaedb3c1..dab7bd19 100644 --- a/ksadk/studio/static/assets/PrismRenderer-e1psRo9-.js +++ b/ksadk/studio/static/assets/PrismRenderer-IYN-ffww.js @@ -1,3 +1,3 @@ -import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-D0Ec-185.js";var r=e(t(),1);function i(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var a=e.length;for(t=0;tt in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_=(e,t)=>{for(var n in t||={})m.call(t,n)&&g(e,n,t[n]);if(f)for(var n of f(t))h.call(t,n)&&g(e,n,t[n]);return e},v=(e,t)=>c(e,u(t)),y=(e,t)=>{var n={};for(var r in e)m.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&f)for(var r of f(e))t.indexOf(r)<0&&h.call(e,r)&&(n[r]=e[r]);return n},b=(e,t)=>function(){return t||(0,e[d(e)[0]])((t={exports:{}}).exports,t),t.exports},x=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of d(t))!m.call(e,i)&&i!==n&&s(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e},C=((e,t,n)=>(n=e==null?{}:o(p(e)),S(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(b({"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,`&`).replace(/`+a.content+``};function a(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 o(e,t,n,s,u,d){for(var f in n)if(!(!n.hasOwnProperty(f)||!n[f])){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m=d.reach);C+=S.value.length,S=S.next){var w=S.value;if(t.length>e.length)return;if(!(w instanceof i)){var T=1,E;if(v){if(E=a(x,C,e,_),!E||E.index>=e.length)break;var D=E.index,O=E.index+E[0].length,k=C;for(k+=S.value.length;D>=k;)S=S.next,k+=S.value.length;if(k-=S.value.length,C=k,S.value instanceof i)continue;for(var A=S;A!==t.tail&&(kd.reach&&(d.reach=P);var F=S.prev;M&&(F=c(t,F,M),C+=M.length),l(t,F,T);var I=new i(f,g?r.tokenize(j,g):j,y,j);if(S=c(t,F,I),N&&c(t,S,N),T>1){var L={cause:f+`,`+m,reach:P};o(e,t,n,S.prev,C,L),d&&L.reach>d.reach&&(d.reach=L.reach)}}}}}}function s(){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 c(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 l(e,t,n){for(var r=t.next,i=0;i/,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]},C.languages.markup.tag.inside[`attr-value`].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside[`internal-subset`].inside=C.languages.markup,C.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.replace(/&/,`&`))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n={},n=(n[`language-`+t]={pattern:/(^$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}),t=(n[`language-`+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{});t[e]={pattern:RegExp(`(<__[^>]*>)(?:))*\\]\\]>|(?!)`.replace(/__/g,function(){return e}),`i`),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore(`markup`,`cdata`,t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\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:[t,`language-`+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend(`markup`,{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,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=`(?:[^\\\\-]|`+n.source+`)`,r=RegExp(r+`-`+r),i={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:r,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:`operator`}}},"special-escape":t,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},escape:n}},"special-escape":t,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:`keyword`},{pattern:/\\k<[^<>']+>/,alias:`keyword`,inside:{"group-name":i}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:`function`},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend(`clike`,{"class-name":[C.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}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.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:C.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:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.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:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.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:C.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`}}),C.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),C.languages.markup&&(C.languages.markup.tag.addInlined(`script`,`javascript`),C.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`)),C.languages.js=C.languages.javascript,C.languages.actionscript=C.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:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript[`class-name`].alias=`function`,delete C.languages.actionscript.parameter,delete C.languages.actionscript[`literal-property`],C.languages.markup&&C.languages.insertBefore(`actionscript`,`string`,{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),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}(C),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:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t=typeof t==`string`?[t]:t).forEach(function(t){var r=function(e){e.inside||={},e.inside.rest=n},i=`doc-comment`;if(a=e.languages[t]){var a,o=a[i];if((o||=(a=e.languages.insertBefore(t,`comment`,{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:`comment`}}))[i])instanceof RegExp&&(o=a[i]={pattern:o}),Array.isArray(o))for(var s=0,c=o.length;s|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside[`selector-function-argument`].inside=t,e.languages.insertBefore(`css`,`property`,{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),n={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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),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}(C),function(e){function t(e){return e=e.replace(//g,function(){return`(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))`}),RegExp(`((?:^|[^\\\\])(?:\\\\{2})*)(?:`+e+`)`)}var n="(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+",r=`\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))`.replace(/__/g,function(){return n}),i=`\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)`,a=(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(`^`+r+i+`(?:`+r+`)*`,`m`),inside:{"table-data-rows":{pattern:RegExp(`^(`+r+i+`)(?:`+r+`)*$`),lookbehind:!0,inside:{"table-data":{pattern:RegExp(n),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp(`^(`+r+`)`+i+`$`),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp(`^`+r+`$`),inside:{"table-header":{pattern:RegExp(n),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:t(`\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(`\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(`(~~?)(?:(?!~))+\\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:t(`!?\\[(?:(?!\\]))+\\](?:\\([^\\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){e.language!==`markdown`&&e.language!==`md`||function e(t){if(t&&typeof t!=`string`)for(var n=0,r=t.length;n`,quot:`"`},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.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:C.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+/},C.hooks.add(`after-tokenize`,function(e){if(e.language===`graphql`)for(var t=e.tokens.filter(function(e){return typeof e!=`string`&&e.type!==`comment`&&e.type!==`scalar`}),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript[`template-string`],n=t.pattern.source,r=t.inside.interpolation,i=r.inside[`interpolation-punctuation`],a=r.pattern.source;function o(t,r){if(e.languages[t])return{pattern:RegExp(`((?:`+r+`)\\s*)`+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run(`before-tokenize`,t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run(`after-tokenize`,t),t.tokens}function c(t,n,o){var c=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),l=0,u={},c=s(c.map(function(e){if(typeof e==`string`)return e;for(var n,r,e=e.content;t.indexOf((r=l++,n=`___`+o.toUpperCase()+`_`+r+`___`))!==-1;);return u[n]=e,n}).join(``),n,o),d=Object.keys(u);return l=0,function t(n){for(var a=0;a=d.length)return;var o,c,f,p,m,h,g,_=n[a];typeof _==`string`||typeof _.content==`string`?(o=d[l],(g=(h=typeof _==`string`?_:_.content).indexOf(o))!==-1&&(++l,c=h.substring(0,g),m=u[o],f=void 0,(p={})[`interpolation-punctuation`]=i,(p=e.tokenize(m,p)).length===3&&((f=[1,1]).push.apply(f,s(p[1],e.languages.javascript,`javascript`)),p.splice.apply(p,f)),f=new e.Token(`interpolation`,p,r.alias,m),p=h.substring(g+o.length),m=[],c&&m.push(c),m.push(f),p&&(t(h=[p]),m.push.apply(m,h)),typeof _==`string`?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):_.content=m)):(g=_.content,t(Array.isArray(g)?g:[g]))}}(c),new e.Token(o,c,`language-`+o,t)}e.languages.javascript[`template-string`]=[o(`css`,`\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)`),o(`html`,`\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=`),o(`svg`,`\\bsvg`),o(`markdown`,`\\b(?:markdown|md)`),o(`graphql`,`\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)`),o(`sql`,`\\bsql`),t].filter(Boolean);var l={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return typeof e==`string`?e:Array.isArray(e)?e.map(u).join(``):u(e.content)}e.hooks.add(`after-tokenize`,function(t){t.language in l&&function t(n){for(var r=0,i=n.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}(C),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)}(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})}(C),C.languages.n4js=C.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/}),C.languages.insertBefore(`n4js`,`constant`,{annotation:{pattern:/@+\w+/,alias:`operator`}}),C.languages.n4jsd=C.languages.n4js,function(e){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`,`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`}]}),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*\\.{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);function o(t){for(var n=[],r=0;r`&&n.push({tagName:s(i.content[0].content[1]),openedBraces:0}):0]=?/,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:/[{}[\]();,.:\\]/},C.languages.swift[`string-literal`].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),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}(C),C.languages.c=C.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|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore(`c`,`string`,{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.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},C.languages.c.string],char:C.languages.c.char,comment:C.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:C.languages.c}}}}),C.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 C.languages.c.boolean,C.languages.objectivec=C.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 C.languages.objectivec[`class-name`],C.languages.objc=C.languages.objectivec,C.languages.reason=C.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/}),C.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 C.languages.reason.function,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}(C),C.languages.go=C.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/}),C.languages.insertBefore(`go`,`string`,{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go[`class-name`],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`])}(C),C.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:/[{}[\];(),.:]/},C.languages.python[`string-interpolation`].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.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`}},C.languages.webmanifest=C.languages.json,x({},{dracula:()=>w,duotoneDark:()=>T,duotoneLight:()=>E,github:()=>D,gruvboxMaterialDark:()=>U,gruvboxMaterialLight:()=>W,jettwaveDark:()=>z,jettwaveLight:()=>B,nightOwl:()=>O,nightOwlLight:()=>k,oceanicNext:()=>j,okaidia:()=>M,oneDark:()=>V,oneLight:()=>H,palenight:()=>N,shadesOfPurple:()=>P,synthwave84:()=>F,ultramin:()=>I,vsDark:()=>L,vsLight:()=>R});var w={plain:{color:`#F8F8F2`,backgroundColor:`#282A36`},styles:[{types:[`prolog`,`constant`,`builtin`],style:{color:`rgb(189, 147, 249)`}},{types:[`inserted`,`function`],style:{color:`rgb(80, 250, 123)`}},{types:[`deleted`],style:{color:`rgb(255, 85, 85)`}},{types:[`changed`],style:{color:`rgb(255, 184, 108)`}},{types:[`punctuation`,`symbol`],style:{color:`rgb(248, 248, 242)`}},{types:[`string`,`char`,`tag`,`selector`],style:{color:`rgb(255, 121, 198)`}},{types:[`keyword`,`variable`],style:{color:`rgb(189, 147, 249)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(98, 114, 164)`}},{types:[`attr-name`],style:{color:`rgb(241, 250, 140)`}}]},T={plain:{backgroundColor:`#2a2734`,color:`#9a86fd`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#6c6783`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#e09142`}},{types:[`property`,`function`],style:{color:`#9a86fd`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#eeebff`}},{types:[`attr-name`],style:{color:`#c4b9fe`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`,`placeholder`,`variable`],style:{color:`#ffcc99`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#c4b9fe`}}]},E={plain:{backgroundColor:`#faf8f5`,color:`#728fcb`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#b6ad9a`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#063289`}},{types:[`property`,`function`],style:{color:`#b29762`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#2d2006`}},{types:[`attr-name`],style:{color:`#896724`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`],style:{color:`#728fcb`}},{types:[`placeholder`,`variable`],style:{color:`#93abdc`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#896724`}}]},D={plain:{color:`#393A34`,backgroundColor:`#f6f8fa`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`],style:{color:`#999988`,fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}},{types:[`string`,`attr-value`],style:{color:`#e3116c`}},{types:[`punctuation`,`operator`],style:{color:`#393A34`}},{types:[`entity`,`url`,`symbol`,`number`,`boolean`,`variable`,`constant`,`property`,`regex`,`inserted`],style:{color:`#36acaa`}},{types:[`atrule`,`keyword`,`attr-name`,`selector`],style:{color:`#00a4db`}},{types:[`function`,`deleted`,`tag`],style:{color:`#d73a49`}},{types:[`function-variable`],style:{color:`#6f42c1`}},{types:[`tag`,`selector`,`keyword`],style:{color:`#00009f`}}]},O={plain:{color:`#d6deeb`,backgroundColor:`#011627`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(99, 119, 119)`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`rgb(173, 219, 103)`}},{types:[`variable`],style:{color:`rgb(214, 222, 235)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`],style:{color:`rgb(199, 146, 234)`}},{types:[`selector`,`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(255, 203, 139)`}},{types:[`tag`,`operator`,`keyword`],style:{color:`rgb(127, 219, 202)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`property`],style:{color:`rgb(128, 203, 196)`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}}]},k={plain:{color:`#403f53`,backgroundColor:`#FBFBFB`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(72, 118, 214)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(152, 159, 177)`,fontStyle:`italic`}},{types:[`string`,`builtin`,`char`,`constant`,`url`],style:{color:`rgb(72, 118, 214)`}},{types:[`variable`],style:{color:`rgb(201, 103, 101)`}},{types:[`number`],style:{color:`rgb(170, 9, 130)`}},{types:[`punctuation`],style:{color:`rgb(153, 76, 195)`}},{types:[`function`,`selector`,`doctype`],style:{color:`rgb(153, 76, 195)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(17, 17, 17)`}},{types:[`tag`],style:{color:`rgb(153, 76, 195)`}},{types:[`operator`,`property`,`keyword`,`namespace`],style:{color:`rgb(12, 150, 155)`}},{types:[`boolean`],style:{color:`rgb(188, 84, 84)`}}]},A={char:`#D8DEE9`,comment:`#999999`,keyword:`#c5a5c5`,primitive:`#5a9bcf`,string:`#8dc891`,variable:`#d7deea`,boolean:`#ff8b50`,punctuation:`#5FB3B3`,tag:`#fc929e`,function:`#79b6f2`,className:`#FAC863`,method:`#6699CC`,operator:`#fc929e`},j={plain:{backgroundColor:`#282c34`,color:`#ffffff`},styles:[{types:[`attr-name`],style:{color:A.keyword}},{types:[`attr-value`],style:{color:A.string}},{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`,`shebang`],style:{color:A.comment}},{types:[`property`,`number`,`function-name`,`constant`,`symbol`,`deleted`],style:{color:A.primitive}},{types:[`boolean`],style:{color:A.boolean}},{types:[`tag`],style:{color:A.tag}},{types:[`string`],style:{color:A.string}},{types:[`punctuation`],style:{color:A.string}},{types:[`selector`,`char`,`builtin`,`inserted`],style:{color:A.char}},{types:[`function`],style:{color:A.function}},{types:[`operator`,`entity`,`url`,`variable`],style:{color:A.variable}},{types:[`keyword`],style:{color:A.keyword}},{types:[`atrule`,`class-name`],style:{color:A.className}},{types:[`important`],style:{fontWeight:`400`}},{types:[`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}}]},M={plain:{color:`#f8f8f2`,backgroundColor:`#272822`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`#f92672`,fontStyle:`italic`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`#8292a2`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`#a6e22e`}},{types:[`variable`],style:{color:`#f8f8f2`}},{types:[`number`],style:{color:`#ae81ff`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`#e6db74`}},{types:[`punctuation`],style:{color:`#f8f8f2`}},{types:[`selector`,`doctype`],style:{color:`#a6e22e`,fontStyle:`italic`}},{types:[`tag`,`operator`,`keyword`],style:{color:`#66d9ef`}},{types:[`boolean`],style:{color:`#ae81ff`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`,opacity:.7}},{types:[`tag`,`property`],style:{color:`#f92672`}},{types:[`attr-name`],style:{color:`#a6e22e !important`}},{types:[`doctype`],style:{color:`#8292a2`}},{types:[`rule`],style:{color:`#e6db74`}}]},N={plain:{color:`#bfc7d5`,backgroundColor:`#292d3e`},styles:[{types:[`comment`],style:{color:`rgb(105, 112, 152)`,fontStyle:`italic`}},{types:[`string`,`inserted`],style:{color:`rgb(195, 232, 141)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`,`selector`],style:{color:`rgb(199, 146, 234)`}},{types:[`variable`],style:{color:`rgb(191, 199, 213)`}},{types:[`class-name`,`attr-name`],style:{color:`rgb(255, 203, 107)`}},{types:[`tag`,`deleted`],style:{color:`rgb(255, 85, 114)`}},{types:[`operator`],style:{color:`rgb(137, 221, 255)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`keyword`],style:{fontStyle:`italic`}},{types:[`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}},{types:[`url`],style:{color:`rgb(221, 221, 221)`}}]},P={plain:{color:`#9EFEFF`,backgroundColor:`#2D2A55`},styles:[{types:[`changed`],style:{color:`rgb(255, 238, 128)`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`}},{types:[`comment`],style:{color:`rgb(179, 98, 255)`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`rgb(255, 255, 255)`}},{types:[`constant`],style:{color:`rgb(255, 98, 140)`}},{types:[`string`,`url`],style:{color:`rgb(165, 255, 144)`}},{types:[`variable`],style:{color:`rgb(255, 238, 128)`}},{types:[`number`,`boolean`],style:{color:`rgb(255, 98, 140)`}},{types:[`attr-name`],style:{color:`rgb(255, 180, 84)`}},{types:[`keyword`,`operator`,`property`,`namespace`,`tag`,`selector`,`doctype`],style:{color:`rgb(255, 157, 0)`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`rgb(250, 208, 0)`}}]},F={plain:{backgroundColor:`linear-gradient(to bottom, #2a2139 75%, #34294f)`,backgroundImage:`#34294f`,color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`},styles:[{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`],style:{color:`#495495`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`#ccc`}},{types:[`tag`,`attr-name`,`namespace`,`number`,`unit`,`hexcode`,`deleted`],style:{color:`#e2777a`}},{types:[`property`,`selector`],style:{color:`#72f1b8`,textShadow:`0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475`}},{types:[`function-name`],style:{color:`#6196cc`}},{types:[`boolean`,`selector-id`,`function`],style:{color:`#fdfdfd`,textShadow:`0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975`}},{types:[`class-name`,`maybe-class-name`,`builtin`],style:{color:`#fff5f6`,textShadow:`0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75`}},{types:[`constant`,`symbol`],style:{color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`}},{types:[`important`,`atrule`,`keyword`,`selector-class`],style:{color:`#f4eee4`,textShadow:`0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575`}},{types:[`string`,`char`,`attr-value`,`regex`,`variable`],style:{color:`#f87c32`}},{types:[`parameter`],style:{fontStyle:`italic`}},{types:[`entity`,`url`],style:{color:`#67cdcc`}},{types:[`operator`],style:{color:`ffffffee`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`entity`],style:{cursor:`help`}},{types:[`inserted`],style:{color:`green`}}]},I={plain:{color:`#282a2e`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(197, 200, 198)`}},{types:[`string`,`number`,`builtin`,`variable`],style:{color:`rgb(150, 152, 150)`}},{types:[`class-name`,`function`,`tag`,`attr-name`],style:{color:`rgb(40, 42, 46)`}}]},L={plain:{color:`#9CDCFE`,backgroundColor:`#1E1E1E`},styles:[{types:[`prolog`],style:{color:`rgb(0, 0, 128)`}},{types:[`comment`],style:{color:`rgb(106, 153, 85)`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`rgb(86, 156, 214)`}},{types:[`number`,`inserted`],style:{color:`rgb(181, 206, 168)`}},{types:[`constant`],style:{color:`rgb(100, 102, 149)`}},{types:[`attr-name`,`variable`],style:{color:`rgb(156, 220, 254)`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`rgb(206, 145, 120)`}},{types:[`selector`],style:{color:`rgb(215, 186, 125)`}},{types:[`tag`],style:{color:`rgb(78, 201, 176)`}},{types:[`tag`],languages:[`markup`],style:{color:`rgb(86, 156, 214)`}},{types:[`punctuation`,`operator`],style:{color:`rgb(212, 212, 212)`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`rgb(220, 220, 170)`}},{types:[`class-name`],style:{color:`rgb(78, 201, 176)`}},{types:[`char`],style:{color:`rgb(209, 105, 105)`}}]},R={plain:{color:`#000000`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(0, 128, 0)`}},{types:[`builtin`],style:{color:`rgb(0, 112, 193)`}},{types:[`number`,`variable`,`inserted`],style:{color:`rgb(9, 134, 88)`}},{types:[`operator`],style:{color:`rgb(0, 0, 0)`}},{types:[`constant`,`char`],style:{color:`rgb(129, 31, 63)`}},{types:[`tag`],style:{color:`rgb(128, 0, 0)`}},{types:[`attr-name`],style:{color:`rgb(255, 0, 0)`}},{types:[`deleted`,`string`],style:{color:`rgb(163, 21, 21)`}},{types:[`changed`,`punctuation`],style:{color:`rgb(4, 81, 165)`}},{types:[`function`,`keyword`],style:{color:`rgb(0, 0, 255)`}},{types:[`class-name`],style:{color:`rgb(38, 127, 153)`}}]},z={plain:{color:`#f8fafc`,backgroundColor:`#011627`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#569CD6`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#f8fafc`}},{types:[`attr-name`,`variable`],style:{color:`#9CDCFE`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#cbd5e1`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#D4D4D4`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#7dd3fc`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},B={plain:{color:`#0f172a`,backgroundColor:`#f1f5f9`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#0c4a6e`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#0f172a`}},{types:[`attr-name`,`variable`],style:{color:`#0c4a6e`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#64748b`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#475569`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#0e7490`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},V={plain:{backgroundColor:`hsl(220, 13%, 18%)`,color:`hsl(220, 14%, 71%)`,textShadow:`0 1px rgba(0, 0, 0, 0.3)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(220, 10%, 40%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(220, 14%, 71%)`}},{types:[`attr-name`,`class-name`,`maybe-class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(29, 54%, 61%)`}},{types:[`keyword`],style:{color:`hsl(286, 60%, 67%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(355, 65%, 65%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`],style:{color:`hsl(95, 38%, 62%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(207, 82%, 66%)`}},{types:[`url`],style:{color:`hsl(187, 47%, 55%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(220, 14%, 71%)`}}]},H={plain:{backgroundColor:`hsl(230, 1%, 98%)`,color:`hsl(230, 8%, 24%)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(230, 4%, 64%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(230, 8%, 24%)`}},{types:[`attr-name`,`class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(35, 99%, 36%)`}},{types:[`keyword`],style:{color:`hsl(301, 63%, 40%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(5, 74%, 59%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`,`punctuation`],style:{color:`hsl(119, 34%, 47%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(221, 87%, 60%)`}},{types:[`url`],style:{color:`hsl(198, 99%, 37%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(230, 8%, 24%)`}}]},U={plain:{color:`#ebdbb2`,backgroundColor:`#292828`},styles:[{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`,`function`],style:{color:`#d8a657`}},{types:[`property-access`],style:{color:`#7daea3`}},{types:[`tag`],style:{color:`#e78a4e`}},{types:[`attr-name`,`char`,`url`,`regex`],style:{color:`#a9b665`}},{types:[`attr-value`,`string`],style:{color:`#89b482`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#ea6962`}},{types:[`entity`,`number`,`symbol`],style:{color:`#d3869b`}}]},W={plain:{color:`#654735`,backgroundColor:`#f9f5d7`},styles:[{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#af2528`}},{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`],style:{color:`#b4730e`}},{types:[`string`,`attr-value`],style:{color:`#477a5b`}},{types:[`property-access`],style:{color:`#266b79`}},{types:[`function`,`attr-name`,`char`,`url`],style:{color:`#72761e`}},{types:[`tag`],style:{color:`#b94c07`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`entity`,`number`,`symbol`],style:{color:`#924f79`}}]},G=e=>(0,r.useCallback)(t=>{var n=t,{className:r,style:i,line:o}=n;let s=v(_({},y(n,[`className`,`style`,`line`])),{className:a(`token-line`,r)});return typeof e==`object`&&`plain`in e&&(s.style=e.plain),typeof i==`object`&&(s.style=_(_({},s.style||{}),i)),s},[e]),K=e=>{let t=(0,r.useCallback)(({types:t,empty:n})=>{if(e!=null)return t.length===1&&t[0]===`plain`?n==null?void 0:{display:`inline-block`}:t.length===1&&n!=null?e[t[0]]:Object.assign(n==null?{}:{display:`inline-block`},...t.map(t=>e[t]))},[e]);return(0,r.useCallback)(e=>{var n=e,{token:r,className:i,style:o}=n;let s=v(_({},y(n,[`token`,`className`,`style`])),{className:a(`token`,...r.types,i),children:r.content,style:t(r)});return o!=null&&(s.style=_(_({},s.style||{}),o)),s},[t])},q=/\r\n|\r|\n/,J=e=>{e.length===0?e.push({types:[`plain`],content:` +import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-vendor-BNmTiJ-I.js";var r=e(t(),1);function i(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var a=e.length;for(t=0;tt in e?s(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_=(e,t)=>{for(var n in t||={})m.call(t,n)&&g(e,n,t[n]);if(f)for(var n of f(t))h.call(t,n)&&g(e,n,t[n]);return e},v=(e,t)=>c(e,u(t)),y=(e,t)=>{var n={};for(var r in e)m.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&f)for(var r of f(e))t.indexOf(r)<0&&h.call(e,r)&&(n[r]=e[r]);return n},b=(e,t)=>function(){return t||(0,e[d(e)[0]])((t={exports:{}}).exports,t),t.exports},x=(e,t)=>{for(var n in t)s(e,n,{get:t[n],enumerable:!0})},S=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(let i of d(t))!m.call(e,i)&&i!==n&&s(e,i,{get:()=>t[i],enumerable:!(r=l(t,i))||r.enumerable});return e},C=((e,t,n)=>(n=e==null?{}:o(p(e)),S(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(b({"../../node_modules/.pnpm/prismjs@1.29.0_patch_hash=vrxx3pzkik6jpmgpayxfjunetu/node_modules/prismjs/prism.js"(e,t){var n=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof i?new i(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,`&`).replace(/`+a.content+``};function a(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 o(e,t,n,s,u,d){for(var f in n)if(!(!n.hasOwnProperty(f)||!n[f])){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m=d.reach);C+=S.value.length,S=S.next){var w=S.value;if(t.length>e.length)return;if(!(w instanceof i)){var T=1,E;if(v){if(E=a(x,C,e,_),!E||E.index>=e.length)break;var D=E.index,O=E.index+E[0].length,k=C;for(k+=S.value.length;D>=k;)S=S.next,k+=S.value.length;if(k-=S.value.length,C=k,S.value instanceof i)continue;for(var A=S;A!==t.tail&&(kd.reach&&(d.reach=P);var F=S.prev;M&&(F=c(t,F,M),C+=M.length),l(t,F,T);var I=new i(f,g?r.tokenize(j,g):j,y,j);if(S=c(t,F,I),N&&c(t,S,N),T>1){var L={cause:f+`,`+m,reach:P};o(e,t,n,S.prev,C,L),d&&L.reach>d.reach&&(d.reach=L.reach)}}}}}}function s(){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 c(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 l(e,t,n){for(var r=t.next,i=0;i/,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]},C.languages.markup.tag.inside[`attr-value`].inside.entity=C.languages.markup.entity,C.languages.markup.doctype.inside[`internal-subset`].inside=C.languages.markup,C.hooks.add(`wrap`,function(e){e.type===`entity`&&(e.attributes.title=e.content.replace(/&/,`&`))}),Object.defineProperty(C.languages.markup.tag,"addInlined",{value:function(e,t){var n={},n=(n[`language-`+t]={pattern:/(^$)/i,lookbehind:!0,inside:C.languages[t]},n.cdata=/^$/i,{"included-cdata":{pattern://i,inside:n}}),t=(n[`language-`+t]={pattern:/[\s\S]+/,inside:C.languages[t]},{});t[e]={pattern:RegExp(`(<__[^>]*>)(?:))*\\]\\]>|(?!)`.replace(/__/g,function(){return e}),`i`),lookbehind:!0,greedy:!0,inside:n},C.languages.insertBefore(`markup`,`cdata`,t)}}),Object.defineProperty(C.languages.markup.tag,"addAttribute",{value:function(e,t){C.languages.markup.tag.inside[`special-attr`].push({pattern:RegExp(`(^|["'\\s])(?:`+e+`)\\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:[t,`language-`+t],inside:C.languages[t]},punctuation:[{pattern:/^=/,alias:`attr-equals`},/"|'/]}}}})}}),C.languages.html=C.languages.markup,C.languages.mathml=C.languages.markup,C.languages.svg=C.languages.markup,C.languages.xml=C.languages.extend(`markup`,{}),C.languages.ssml=C.languages.xml,C.languages.atom=C.languages.xml,C.languages.rss=C.languages.xml,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=`(?:[^\\\\-]|`+n.source+`)`,r=RegExp(r+`-`+r),i={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:r,inside:{escape:n,"range-punctuation":{pattern:/-/,alias:`operator`}}},"special-escape":t,"char-set":{pattern:/\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},escape:n}},"special-escape":t,"char-set":{pattern:/\.|\\[wsd]|\\p\{[^{}]+\}/i,alias:`class-name`},backreference:[{pattern:/\\(?![123][0-7]{2})[1-9]/,alias:`keyword`},{pattern:/\\k<[^<>']+>/,alias:`keyword`,inside:{"group-name":i}}],anchor:{pattern:/[$^]|\\[ABbGZz]/,alias:`function`},escape:n,group:[{pattern:/\((?:\?(?:<[^<>']+>|'[^<>']+'|[>:]|]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},C.languages.javascript=C.languages.extend(`clike`,{"class-name":[C.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}|\?\?=?|\?\.?|[~:]/}),C.languages.javascript[`class-name`][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,C.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:C.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:C.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:C.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:C.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:C.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),C.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:C.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`}}),C.languages.insertBefore(`javascript`,`operator`,{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:`property`}}),C.languages.markup&&(C.languages.markup.tag.addInlined(`script`,`javascript`),C.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`)),C.languages.js=C.languages.javascript,C.languages.actionscript=C.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:/\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<>?>?|[!=]=?)=?|[~?@]/}),C.languages.actionscript[`class-name`].alias=`function`,delete C.languages.actionscript.parameter,delete C.languages.actionscript[`literal-property`],C.languages.markup&&C.languages.insertBefore(`actionscript`,`string`,{xml:{pattern:/(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/,lookbehind:!0,inside:C.languages.markup}}),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}(C),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:/[{}]/};Object.defineProperty(t,"addSupport",{value:function(t,n){(t=typeof t==`string`?[t]:t).forEach(function(t){var r=function(e){e.inside||={},e.inside.rest=n},i=`doc-comment`;if(a=e.languages[t]){var a,o=a[i];if((o||=(a=e.languages.insertBefore(t,`comment`,{"doc-comment":{pattern:/(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/,lookbehind:!0,alias:`comment`}}))[i])instanceof RegExp&&(o=a[i]={pattern:o}),Array.isArray(o))for(var s=0,c=o.length;s|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside[`selector-function-argument`].inside=t,e.languages.insertBefore(`css`,`property`,{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}}),{pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0}),n={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:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,number:n})}(C),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}(C),function(e){function t(e){return e=e.replace(//g,function(){return`(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))`}),RegExp(`((?:^|[^\\\\])(?:\\\\{2})*)(?:`+e+`)`)}var n="(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+",r=`\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))`.replace(/__/g,function(){return n}),i=`\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)`,a=(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(`^`+r+i+`(?:`+r+`)*`,`m`),inside:{"table-data-rows":{pattern:RegExp(`^(`+r+i+`)(?:`+r+`)*$`),lookbehind:!0,inside:{"table-data":{pattern:RegExp(n),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp(`^(`+r+`)`+i+`$`),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp(`^`+r+`$`),inside:{"table-header":{pattern:RegExp(n),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:t(`\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(`\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*`),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(`(~~?)(?:(?!~))+\\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:t(`!?\\[(?:(?!\\]))+\\](?:\\([^\\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){e.language!==`markdown`&&e.language!==`md`||function e(t){if(t&&typeof t!=`string`)for(var n=0,r=t.length;n`,quot:`"`},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(C),C.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:C.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+/},C.hooks.add(`after-tokenize`,function(e){if(e.language===`graphql`)for(var t=e.tokens.filter(function(e){return typeof e!=`string`&&e.type!==`comment`&&e.type!==`scalar`}),n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript[`template-string`],n=t.pattern.source,r=t.inside.interpolation,i=r.inside[`interpolation-punctuation`],a=r.pattern.source;function o(t,r){if(e.languages[t])return{pattern:RegExp(`((?:`+r+`)\\s*)`+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:`string`},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(t,n,r){return t={code:t,grammar:n,language:r},e.hooks.run(`before-tokenize`,t),t.tokens=e.tokenize(t.code,t.grammar),e.hooks.run(`after-tokenize`,t),t.tokens}function c(t,n,o){var c=e.tokenize(t,{interpolation:{pattern:RegExp(a),lookbehind:!0}}),l=0,u={},c=s(c.map(function(e){if(typeof e==`string`)return e;for(var n,r,e=e.content;t.indexOf((r=l++,n=`___`+o.toUpperCase()+`_`+r+`___`))!==-1;);return u[n]=e,n}).join(``),n,o),d=Object.keys(u);return l=0,function t(n){for(var a=0;a=d.length)return;var o,c,f,p,m,h,g,_=n[a];typeof _==`string`||typeof _.content==`string`?(o=d[l],(g=(h=typeof _==`string`?_:_.content).indexOf(o))!==-1&&(++l,c=h.substring(0,g),m=u[o],f=void 0,(p={})[`interpolation-punctuation`]=i,(p=e.tokenize(m,p)).length===3&&((f=[1,1]).push.apply(f,s(p[1],e.languages.javascript,`javascript`)),p.splice.apply(p,f)),f=new e.Token(`interpolation`,p,r.alias,m),p=h.substring(g+o.length),m=[],c&&m.push(c),m.push(f),p&&(t(h=[p]),m.push.apply(m,h)),typeof _==`string`?(n.splice.apply(n,[a,1].concat(m)),a+=m.length-1):_.content=m)):(g=_.content,t(Array.isArray(g)?g:[g]))}}(c),new e.Token(o,c,`language-`+o,t)}e.languages.javascript[`template-string`]=[o(`css`,`\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)`),o(`html`,`\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=`),o(`svg`,`\\bsvg`),o(`markdown`,`\\b(?:markdown|md)`),o(`graphql`,`\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)`),o(`sql`,`\\bsql`),t].filter(Boolean);var l={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function u(e){return typeof e==`string`?e:Array.isArray(e)?e.map(u).join(``):u(e.content)}e.hooks.add(`after-tokenize`,function(t){t.language in l&&function t(n){for(var r=0,i=n.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}(C),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)}(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})}(C),C.languages.n4js=C.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/}),C.languages.insertBefore(`n4js`,`constant`,{annotation:{pattern:/@+\w+/,alias:`operator`}}),C.languages.n4jsd=C.languages.n4js,function(e){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`,`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`}]}),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*\\.{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);function o(t){for(var n=[],r=0;r`&&n.push({tagName:s(i.content[0].content[1]),openedBraces:0}):0]=?/,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:/[{}[\]();,.:\\]/},C.languages.swift[`string-literal`].forEach(function(e){e.inside.interpolation.inside=C.languages.swift}),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}(C),C.languages.c=C.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|[?:~]|[-+*/%&|^!=<>]=?/}),C.languages.insertBefore(`c`,`string`,{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),C.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},C.languages.c.string],char:C.languages.c.char,comment:C.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:C.languages.c}}}}),C.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 C.languages.c.boolean,C.languages.objectivec=C.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 C.languages.objectivec[`class-name`],C.languages.objc=C.languages.objectivec,C.languages.reason=C.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/}),C.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 C.languages.reason.function,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}(C),C.languages.go=C.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/}),C.languages.insertBefore(`go`,`string`,{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete C.languages.go[`class-name`],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`])}(C),C.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:/[{}[\];(),.:]/},C.languages.python[`string-interpolation`].inside.interpolation.inside.rest=C.languages.python,C.languages.py=C.languages.python,C.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`}},C.languages.webmanifest=C.languages.json,x({},{dracula:()=>w,duotoneDark:()=>T,duotoneLight:()=>E,github:()=>D,gruvboxMaterialDark:()=>U,gruvboxMaterialLight:()=>W,jettwaveDark:()=>z,jettwaveLight:()=>B,nightOwl:()=>O,nightOwlLight:()=>k,oceanicNext:()=>j,okaidia:()=>M,oneDark:()=>V,oneLight:()=>H,palenight:()=>N,shadesOfPurple:()=>P,synthwave84:()=>F,ultramin:()=>I,vsDark:()=>L,vsLight:()=>R});var w={plain:{color:`#F8F8F2`,backgroundColor:`#282A36`},styles:[{types:[`prolog`,`constant`,`builtin`],style:{color:`rgb(189, 147, 249)`}},{types:[`inserted`,`function`],style:{color:`rgb(80, 250, 123)`}},{types:[`deleted`],style:{color:`rgb(255, 85, 85)`}},{types:[`changed`],style:{color:`rgb(255, 184, 108)`}},{types:[`punctuation`,`symbol`],style:{color:`rgb(248, 248, 242)`}},{types:[`string`,`char`,`tag`,`selector`],style:{color:`rgb(255, 121, 198)`}},{types:[`keyword`,`variable`],style:{color:`rgb(189, 147, 249)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(98, 114, 164)`}},{types:[`attr-name`],style:{color:`rgb(241, 250, 140)`}}]},T={plain:{backgroundColor:`#2a2734`,color:`#9a86fd`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#6c6783`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#e09142`}},{types:[`property`,`function`],style:{color:`#9a86fd`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#eeebff`}},{types:[`attr-name`],style:{color:`#c4b9fe`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`,`placeholder`,`variable`],style:{color:`#ffcc99`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#c4b9fe`}}]},E={plain:{backgroundColor:`#faf8f5`,color:`#728fcb`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`,`punctuation`],style:{color:`#b6ad9a`}},{types:[`namespace`],style:{opacity:.7}},{types:[`tag`,`operator`,`number`],style:{color:`#063289`}},{types:[`property`,`function`],style:{color:`#b29762`}},{types:[`tag-id`,`selector`,`atrule-id`],style:{color:`#2d2006`}},{types:[`attr-name`],style:{color:`#896724`}},{types:[`boolean`,`string`,`entity`,`url`,`attr-value`,`keyword`,`control`,`directive`,`unit`,`statement`,`regex`,`atrule`],style:{color:`#728fcb`}},{types:[`placeholder`,`variable`],style:{color:`#93abdc`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`#896724`}}]},D={plain:{color:`#393A34`,backgroundColor:`#f6f8fa`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`],style:{color:`#999988`,fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}},{types:[`string`,`attr-value`],style:{color:`#e3116c`}},{types:[`punctuation`,`operator`],style:{color:`#393A34`}},{types:[`entity`,`url`,`symbol`,`number`,`boolean`,`variable`,`constant`,`property`,`regex`,`inserted`],style:{color:`#36acaa`}},{types:[`atrule`,`keyword`,`attr-name`,`selector`],style:{color:`#00a4db`}},{types:[`function`,`deleted`,`tag`],style:{color:`#d73a49`}},{types:[`function-variable`],style:{color:`#6f42c1`}},{types:[`tag`,`selector`,`keyword`],style:{color:`#00009f`}}]},O={plain:{color:`#d6deeb`,backgroundColor:`#011627`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(99, 119, 119)`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`rgb(173, 219, 103)`}},{types:[`variable`],style:{color:`rgb(214, 222, 235)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`],style:{color:`rgb(199, 146, 234)`}},{types:[`selector`,`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(255, 203, 139)`}},{types:[`tag`,`operator`,`keyword`],style:{color:`rgb(127, 219, 202)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`property`],style:{color:`rgb(128, 203, 196)`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}}]},k={plain:{color:`#403f53`,backgroundColor:`#FBFBFB`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`,fontStyle:`italic`}},{types:[`inserted`,`attr-name`],style:{color:`rgb(72, 118, 214)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`rgb(152, 159, 177)`,fontStyle:`italic`}},{types:[`string`,`builtin`,`char`,`constant`,`url`],style:{color:`rgb(72, 118, 214)`}},{types:[`variable`],style:{color:`rgb(201, 103, 101)`}},{types:[`number`],style:{color:`rgb(170, 9, 130)`}},{types:[`punctuation`],style:{color:`rgb(153, 76, 195)`}},{types:[`function`,`selector`,`doctype`],style:{color:`rgb(153, 76, 195)`,fontStyle:`italic`}},{types:[`class-name`],style:{color:`rgb(17, 17, 17)`}},{types:[`tag`],style:{color:`rgb(153, 76, 195)`}},{types:[`operator`,`property`,`keyword`,`namespace`],style:{color:`rgb(12, 150, 155)`}},{types:[`boolean`],style:{color:`rgb(188, 84, 84)`}}]},A={char:`#D8DEE9`,comment:`#999999`,keyword:`#c5a5c5`,primitive:`#5a9bcf`,string:`#8dc891`,variable:`#d7deea`,boolean:`#ff8b50`,punctuation:`#5FB3B3`,tag:`#fc929e`,function:`#79b6f2`,className:`#FAC863`,method:`#6699CC`,operator:`#fc929e`},j={plain:{backgroundColor:`#282c34`,color:`#ffffff`},styles:[{types:[`attr-name`],style:{color:A.keyword}},{types:[`attr-value`],style:{color:A.string}},{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`,`shebang`],style:{color:A.comment}},{types:[`property`,`number`,`function-name`,`constant`,`symbol`,`deleted`],style:{color:A.primitive}},{types:[`boolean`],style:{color:A.boolean}},{types:[`tag`],style:{color:A.tag}},{types:[`string`],style:{color:A.string}},{types:[`punctuation`],style:{color:A.string}},{types:[`selector`,`char`,`builtin`,`inserted`],style:{color:A.char}},{types:[`function`],style:{color:A.function}},{types:[`operator`,`entity`,`url`,`variable`],style:{color:A.variable}},{types:[`keyword`],style:{color:A.keyword}},{types:[`atrule`,`class-name`],style:{color:A.className}},{types:[`important`],style:{fontWeight:`400`}},{types:[`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`namespace`],style:{opacity:.7}}]},M={plain:{color:`#f8f8f2`,backgroundColor:`#272822`},styles:[{types:[`changed`],style:{color:`rgb(162, 191, 252)`,fontStyle:`italic`}},{types:[`deleted`],style:{color:`#f92672`,fontStyle:`italic`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`,fontStyle:`italic`}},{types:[`comment`],style:{color:`#8292a2`,fontStyle:`italic`}},{types:[`string`,`url`],style:{color:`#a6e22e`}},{types:[`variable`],style:{color:`#f8f8f2`}},{types:[`number`],style:{color:`#ae81ff`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`#e6db74`}},{types:[`punctuation`],style:{color:`#f8f8f2`}},{types:[`selector`,`doctype`],style:{color:`#a6e22e`,fontStyle:`italic`}},{types:[`tag`,`operator`,`keyword`],style:{color:`#66d9ef`}},{types:[`boolean`],style:{color:`#ae81ff`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`,opacity:.7}},{types:[`tag`,`property`],style:{color:`#f92672`}},{types:[`attr-name`],style:{color:`#a6e22e !important`}},{types:[`doctype`],style:{color:`#8292a2`}},{types:[`rule`],style:{color:`#e6db74`}}]},N={plain:{color:`#bfc7d5`,backgroundColor:`#292d3e`},styles:[{types:[`comment`],style:{color:`rgb(105, 112, 152)`,fontStyle:`italic`}},{types:[`string`,`inserted`],style:{color:`rgb(195, 232, 141)`}},{types:[`number`],style:{color:`rgb(247, 140, 108)`}},{types:[`builtin`,`char`,`constant`,`function`],style:{color:`rgb(130, 170, 255)`}},{types:[`punctuation`,`selector`],style:{color:`rgb(199, 146, 234)`}},{types:[`variable`],style:{color:`rgb(191, 199, 213)`}},{types:[`class-name`,`attr-name`],style:{color:`rgb(255, 203, 107)`}},{types:[`tag`,`deleted`],style:{color:`rgb(255, 85, 114)`}},{types:[`operator`],style:{color:`rgb(137, 221, 255)`}},{types:[`boolean`],style:{color:`rgb(255, 88, 116)`}},{types:[`keyword`],style:{fontStyle:`italic`}},{types:[`doctype`],style:{color:`rgb(199, 146, 234)`,fontStyle:`italic`}},{types:[`namespace`],style:{color:`rgb(178, 204, 214)`}},{types:[`url`],style:{color:`rgb(221, 221, 221)`}}]},P={plain:{color:`#9EFEFF`,backgroundColor:`#2D2A55`},styles:[{types:[`changed`],style:{color:`rgb(255, 238, 128)`}},{types:[`deleted`],style:{color:`rgba(239, 83, 80, 0.56)`}},{types:[`inserted`],style:{color:`rgb(173, 219, 103)`}},{types:[`comment`],style:{color:`rgb(179, 98, 255)`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`rgb(255, 255, 255)`}},{types:[`constant`],style:{color:`rgb(255, 98, 140)`}},{types:[`string`,`url`],style:{color:`rgb(165, 255, 144)`}},{types:[`variable`],style:{color:`rgb(255, 238, 128)`}},{types:[`number`,`boolean`],style:{color:`rgb(255, 98, 140)`}},{types:[`attr-name`],style:{color:`rgb(255, 180, 84)`}},{types:[`keyword`,`operator`,`property`,`namespace`,`tag`,`selector`,`doctype`],style:{color:`rgb(255, 157, 0)`}},{types:[`builtin`,`char`,`constant`,`function`,`class-name`],style:{color:`rgb(250, 208, 0)`}}]},F={plain:{backgroundColor:`linear-gradient(to bottom, #2a2139 75%, #34294f)`,backgroundImage:`#34294f`,color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`},styles:[{types:[`comment`,`block-comment`,`prolog`,`doctype`,`cdata`],style:{color:`#495495`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`#ccc`}},{types:[`tag`,`attr-name`,`namespace`,`number`,`unit`,`hexcode`,`deleted`],style:{color:`#e2777a`}},{types:[`property`,`selector`],style:{color:`#72f1b8`,textShadow:`0 0 2px #100c0f, 0 0 10px #257c5575, 0 0 35px #21272475`}},{types:[`function-name`],style:{color:`#6196cc`}},{types:[`boolean`,`selector-id`,`function`],style:{color:`#fdfdfd`,textShadow:`0 0 2px #001716, 0 0 3px #03edf975, 0 0 5px #03edf975, 0 0 8px #03edf975`}},{types:[`class-name`,`maybe-class-name`,`builtin`],style:{color:`#fff5f6`,textShadow:`0 0 2px #000, 0 0 10px #fc1f2c75, 0 0 5px #fc1f2c75, 0 0 25px #fc1f2c75`}},{types:[`constant`,`symbol`],style:{color:`#f92aad`,textShadow:`0 0 2px #100c0f, 0 0 5px #dc078e33, 0 0 10px #fff3`}},{types:[`important`,`atrule`,`keyword`,`selector-class`],style:{color:`#f4eee4`,textShadow:`0 0 2px #393a33, 0 0 8px #f39f0575, 0 0 2px #f39f0575`}},{types:[`string`,`char`,`attr-value`,`regex`,`variable`],style:{color:`#f87c32`}},{types:[`parameter`],style:{fontStyle:`italic`}},{types:[`entity`,`url`],style:{color:`#67cdcc`}},{types:[`operator`],style:{color:`ffffffee`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`entity`],style:{cursor:`help`}},{types:[`inserted`],style:{color:`green`}}]},I={plain:{color:`#282a2e`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(197, 200, 198)`}},{types:[`string`,`number`,`builtin`,`variable`],style:{color:`rgb(150, 152, 150)`}},{types:[`class-name`,`function`,`tag`,`attr-name`],style:{color:`rgb(40, 42, 46)`}}]},L={plain:{color:`#9CDCFE`,backgroundColor:`#1E1E1E`},styles:[{types:[`prolog`],style:{color:`rgb(0, 0, 128)`}},{types:[`comment`],style:{color:`rgb(106, 153, 85)`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`rgb(86, 156, 214)`}},{types:[`number`,`inserted`],style:{color:`rgb(181, 206, 168)`}},{types:[`constant`],style:{color:`rgb(100, 102, 149)`}},{types:[`attr-name`,`variable`],style:{color:`rgb(156, 220, 254)`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`rgb(206, 145, 120)`}},{types:[`selector`],style:{color:`rgb(215, 186, 125)`}},{types:[`tag`],style:{color:`rgb(78, 201, 176)`}},{types:[`tag`],languages:[`markup`],style:{color:`rgb(86, 156, 214)`}},{types:[`punctuation`,`operator`],style:{color:`rgb(212, 212, 212)`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`rgb(220, 220, 170)`}},{types:[`class-name`],style:{color:`rgb(78, 201, 176)`}},{types:[`char`],style:{color:`rgb(209, 105, 105)`}}]},R={plain:{color:`#000000`,backgroundColor:`#ffffff`},styles:[{types:[`comment`],style:{color:`rgb(0, 128, 0)`}},{types:[`builtin`],style:{color:`rgb(0, 112, 193)`}},{types:[`number`,`variable`,`inserted`],style:{color:`rgb(9, 134, 88)`}},{types:[`operator`],style:{color:`rgb(0, 0, 0)`}},{types:[`constant`,`char`],style:{color:`rgb(129, 31, 63)`}},{types:[`tag`],style:{color:`rgb(128, 0, 0)`}},{types:[`attr-name`],style:{color:`rgb(255, 0, 0)`}},{types:[`deleted`,`string`],style:{color:`rgb(163, 21, 21)`}},{types:[`changed`,`punctuation`],style:{color:`rgb(4, 81, 165)`}},{types:[`function`,`keyword`],style:{color:`rgb(0, 0, 255)`}},{types:[`class-name`],style:{color:`rgb(38, 127, 153)`}}]},z={plain:{color:`#f8fafc`,backgroundColor:`#011627`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#569CD6`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#f8fafc`}},{types:[`attr-name`,`variable`],style:{color:`#9CDCFE`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#cbd5e1`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#D4D4D4`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#7dd3fc`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},B={plain:{color:`#0f172a`,backgroundColor:`#f1f5f9`},styles:[{types:[`prolog`],style:{color:`#000080`}},{types:[`comment`],style:{color:`#6A9955`}},{types:[`builtin`,`changed`,`keyword`,`interpolation-punctuation`],style:{color:`#0c4a6e`}},{types:[`number`,`inserted`],style:{color:`#B5CEA8`}},{types:[`constant`],style:{color:`#0f172a`}},{types:[`attr-name`,`variable`],style:{color:`#0c4a6e`}},{types:[`deleted`,`string`,`attr-value`,`template-punctuation`],style:{color:`#64748b`}},{types:[`selector`],style:{color:`#D7BA7D`}},{types:[`tag`],style:{color:`#0ea5e9`}},{types:[`tag`],languages:[`markup`],style:{color:`#0ea5e9`}},{types:[`punctuation`,`operator`],style:{color:`#475569`}},{types:[`punctuation`],languages:[`markup`],style:{color:`#808080`}},{types:[`function`],style:{color:`#0e7490`}},{types:[`class-name`],style:{color:`#0ea5e9`}},{types:[`char`],style:{color:`#D16969`}}]},V={plain:{backgroundColor:`hsl(220, 13%, 18%)`,color:`hsl(220, 14%, 71%)`,textShadow:`0 1px rgba(0, 0, 0, 0.3)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(220, 10%, 40%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(220, 14%, 71%)`}},{types:[`attr-name`,`class-name`,`maybe-class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(29, 54%, 61%)`}},{types:[`keyword`],style:{color:`hsl(286, 60%, 67%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(355, 65%, 65%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`],style:{color:`hsl(95, 38%, 62%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(207, 82%, 66%)`}},{types:[`url`],style:{color:`hsl(187, 47%, 55%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(220, 14%, 71%)`}}]},H={plain:{backgroundColor:`hsl(230, 1%, 98%)`,color:`hsl(230, 8%, 24%)`},styles:[{types:[`comment`,`prolog`,`cdata`],style:{color:`hsl(230, 4%, 64%)`}},{types:[`doctype`,`punctuation`,`entity`],style:{color:`hsl(230, 8%, 24%)`}},{types:[`attr-name`,`class-name`,`boolean`,`constant`,`number`,`atrule`],style:{color:`hsl(35, 99%, 36%)`}},{types:[`keyword`],style:{color:`hsl(301, 63%, 40%)`}},{types:[`property`,`tag`,`symbol`,`deleted`,`important`],style:{color:`hsl(5, 74%, 59%)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`regex`,`attr-value`,`punctuation`],style:{color:`hsl(119, 34%, 47%)`}},{types:[`variable`,`operator`,`function`],style:{color:`hsl(221, 87%, 60%)`}},{types:[`url`],style:{color:`hsl(198, 99%, 37%)`}},{types:[`deleted`],style:{textDecorationLine:`line-through`}},{types:[`inserted`],style:{textDecorationLine:`underline`}},{types:[`italic`],style:{fontStyle:`italic`}},{types:[`important`,`bold`],style:{fontWeight:`bold`}},{types:[`important`],style:{color:`hsl(230, 8%, 24%)`}}]},U={plain:{color:`#ebdbb2`,backgroundColor:`#292828`},styles:[{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`,`function`],style:{color:`#d8a657`}},{types:[`property-access`],style:{color:`#7daea3`}},{types:[`tag`],style:{color:`#e78a4e`}},{types:[`attr-name`,`char`,`url`,`regex`],style:{color:`#a9b665`}},{types:[`attr-value`,`string`],style:{color:`#89b482`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#ea6962`}},{types:[`entity`,`number`,`symbol`],style:{color:`#d3869b`}}]},W={plain:{color:`#654735`,backgroundColor:`#f9f5d7`},styles:[{types:[`delimiter`,`boolean`,`keyword`,`selector`,`important`,`atrule`,`property`,`variable`,`deleted`],style:{color:`#af2528`}},{types:[`imports`,`class-name`,`maybe-class-name`,`constant`,`doctype`,`builtin`],style:{color:`#b4730e`}},{types:[`string`,`attr-value`],style:{color:`#477a5b`}},{types:[`property-access`],style:{color:`#266b79`}},{types:[`function`,`attr-name`,`char`,`url`],style:{color:`#72761e`}},{types:[`tag`],style:{color:`#b94c07`}},{types:[`comment`,`prolog`,`cdata`,`operator`,`inserted`],style:{color:`#a89984`}},{types:[`entity`,`number`,`symbol`],style:{color:`#924f79`}}]},G=e=>(0,r.useCallback)(t=>{var n=t,{className:r,style:i,line:o}=n;let s=v(_({},y(n,[`className`,`style`,`line`])),{className:a(`token-line`,r)});return typeof e==`object`&&`plain`in e&&(s.style=e.plain),typeof i==`object`&&(s.style=_(_({},s.style||{}),i)),s},[e]),K=e=>{let t=(0,r.useCallback)(({types:t,empty:n})=>{if(e!=null)return t.length===1&&t[0]===`plain`?n==null?void 0:{display:`inline-block`}:t.length===1&&n!=null?e[t[0]]:Object.assign(n==null?{}:{display:`inline-block`},...t.map(t=>e[t]))},[e]);return(0,r.useCallback)(e=>{var n=e,{token:r,className:i,style:o}=n;let s=v(_({},y(n,[`token`,`className`,`style`])),{className:a(`token`,...r.types,i),children:r.content,style:t(r)});return o!=null&&(s.style=_(_({},s.style||{}),o)),s},[t])},q=/\r\n|\r|\n/,J=e=>{e.length===0?e.push({types:[`plain`],content:` `,empty:!0}):e.length===1&&e[0].content===``&&(e[0].content=` `,e[0].empty=!0)},Y=(e,t)=>{let n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)},X=e=>{let t=[[]],n=[e],r=[0],i=[e.length],a=0,o=0,s=[],c=[s];for(;o>-1;){for(;(a=r[o]++)0?l:[`plain`],e=u):(l=Y(l,u.type),u.alias&&(l=Y(l,u.alias)),e=u.content),typeof e!=`string`){o++,t.push(l),n.push(e),r.push(0),i.push(e.length);continue}let d=e.split(q),f=d.length;s.push({types:l,content:d[0]});for(let e=1;e(0,r.useMemo)(()=>{if(n==null)return X([t]);let r={code:t,grammar:n,language:i,tokens:[]};return e.hooks.run(`before-tokenize`,r),r.tokens=e.tokenize(t,n),e.hooks.run(`after-tokenize`,r),X(r.tokens)},[t,n,i,e]),Q=(e,t)=>{let{plain:n}=e,r=e.styles.reduce((e,n)=>{let{languages:r,style:i}=n;return r&&!r.includes(t)||n.types.forEach(t=>{e[t]=_(_({},e[t]),i)}),e},{});return r.root=n,r.plain=v(_({},n),{backgroundColor:void 0}),r},ee=({children:e,language:t,code:n,theme:r,prism:i})=>{let a=t.toLowerCase(),o=Q(r,a),s=G(o),c=K(o),l=i.languages[a];return e({tokens:Z({prism:i,language:a,code:n,grammar:l}),className:`prism-code language-${a}`,style:o==null?{}:o.root,getLineProps:s,getTokenProps:c})},te=e=>(0,r.createElement)(ee,v(_({},e),{prism:e.prism||C,theme:e.theme||L,code:e.code,language:e.language})),$=n(),ne={plain:{color:`var(--code-text)`,backgroundColor:`transparent`},styles:[{types:[`comment`,`prolog`,`doctype`,`cdata`],style:{color:`var(--code-token-comment)`,fontStyle:`italic`}},{types:[`punctuation`],style:{color:`var(--code-token-punctuation)`}},{types:[`property`,`tag`,`constant`,`symbol`,`deleted`,`attr-name`],style:{color:`var(--code-token-property)`}},{types:[`boolean`,`number`],style:{color:`var(--code-token-number)`}},{types:[`selector`,`string`,`char`,`builtin`,`inserted`,`attr-value`],style:{color:`var(--code-token-string)`}},{types:[`operator`,`entity`,`url`],style:{color:`var(--code-token-operator)`}},{types:[`atrule`,`keyword`],style:{color:`var(--code-token-keyword)`}},{types:[`function`],style:{color:`var(--code-token-function)`}},{types:[`class-name`],style:{color:`var(--code-token-class)`}},{types:[`regex`,`important`,`variable`],style:{color:`var(--code-token-variable)`}}]};function re({code:e,language:t,showLineNumbers:n}){return(0,$.jsx)(te,{code:e,language:t||`text`,theme:ne,children:({className:e,tokens:t,getLineProps:i,getTokenProps:a})=>(0,$.jsx)(`pre`,{className:`${e} code-viewer-pre`,children:(0,$.jsx)(`code`,{children:t.map((e,t)=>{let o=i({line:e});return(0,r.createElement)(`span`,{...o,className:`${o.className} code-viewer-line`,key:t},n&&(0,$.jsx)(`span`,{className:`code-viewer-line-number`,"aria-hidden":`true`,children:t+1}),(0,$.jsx)(`span`,{className:`code-viewer-line-content`,children:e.map((e,t)=>(0,$.jsx)(`span`,{...a({token:e})},t))}))})})})})}export{re as default}; \ No newline at end of file diff --git a/ksadk/studio/static/assets/index-t4JdtanA.js b/ksadk/studio/static/assets/index-CXcKPd6_.js similarity index 52% rename from ksadk/studio/static/assets/index-t4JdtanA.js rename to ksadk/studio/static/assets/index-CXcKPd6_.js index c03a38e2..9859c529 100644 --- a/ksadk/studio/static/assets/index-t4JdtanA.js +++ b/ksadk/studio/static/assets/index-CXcKPd6_.js @@ -1,10 +1,10 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/PrismRenderer-e1psRo9-.js","assets/rolldown-runtime-hePW80VL.js","assets/react-vendor-D0Ec-185.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-D0Ec-185.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:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]]),ae=D(`circle-dot`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),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 ei;var t=ni(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])}},ii=$r(),ai=`data-scroll-locked`,oi=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` +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[${ai}] { + body[${oi}] { overflow: hidden ${r}; overscroll-behavior: contain; ${[t&&`position: relative ${r};`,n===`margin`&&` @@ -33,13 +33,13 @@ import{n as e,r as t,t as n}from"./rolldown-runtime-hePW80VL.js";import{i as r,n margin-right: 0 ${r}; } - body[${ai}] { + body[${oi}] { ${Nr}: ${s}px; } -`},si=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},ci=function(){s.useEffect(function(){return document.body.setAttribute(ai,(si()+1).toString()),function(){var e=si()-1;e<=0?document.body.removeAttribute(ai):document.body.setAttribute(ai,e.toString())}},[])},li=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;ci();var a=s.useMemo(function(){return ri(i)},[i]);return s.createElement(ii,{styles:oi(a,!t,i,n?``:`!important`)})},ui=!1;if(typeof window<`u`)try{var di=Object.defineProperty({},"passive",{get:function(){return ui=!0,!0}});window.addEventListener(`test`,di,di),window.removeEventListener(`test`,di,di)}catch{ui=!1}var fi=ui?{passive:!1}:!1,pi=function(e){return e.tagName===`TEXTAREA`},mi=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!pi(e)&&n[t]===`visible`)},hi=function(e){return mi(e,`overflowY`)},gi=function(e){return mi(e,`overflowX`)},_i=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),bi(e,r)){var i=xi(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},vi=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},yi=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},bi=function(e,t){return e===`v`?hi(t):gi(t)},xi=function(e,t){return e===`v`?vi(t):yi(t)},Si=function(e,t){return e===`h`&&t===`rtl`?-1:1},Ci=function(e,t,n,r,i){var a=Si(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=xi(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&bi(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},wi=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Ti=function(e){return[e.deltaX,e.deltaY]},Ei=function(e){return e&&`current`in e?e.current:e},Di=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Oi=function(e){return` +`},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;} -`},ki=0,Ai=[];function ji(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),i=s.useState(ki++)[0],a=s.useState($r)[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(Ei),!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=wi(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=_i(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=_i(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 Ci(h,t,e,h===`h`?s:c,!0)},[]),l=s.useCallback(function(e){var n=e;if(!(!Ai.length||Ai[Ai.length-1]!==a)){var r=`deltaY`in n?Ti(n):wi(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&Di(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var s=(o.current.shards||[]).map(Ei).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:Mi(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=wi(e),r.current=void 0},[]),f=s.useCallback(function(t){u(t.type,Ti(t),t.target,c(t,e.lockRef.current))},[]),p=s.useCallback(function(t){u(t.type,wi(t),t.target,c(t,e.lockRef.current))},[]);s.useEffect(function(){return Ai.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,l,fi),document.addEventListener(`touchmove`,l,fi),document.addEventListener(`touchstart`,d,fi),function(){Ai=Ai.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,l,fi),document.removeEventListener(`touchmove`,l,fi),document.removeEventListener(`touchstart`,d,fi)}},[]);var m=e.removeScrollBar,h=e.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:Oi(i)}):null,m?s.createElement(li,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Mi(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var Ni=Ur(Wr,ji),Pi=s.forwardRef(function(e,t){return s.createElement(Kr,Dr({},e,{ref:t,sideCar:Ni}))});Pi.classNames=Kr.classNames;var Fi=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},Ii=new WeakMap,Li=new WeakMap,Ri={},zi=0,Bi=function(e){return e&&(e.host||Bi(e.parentNode))},Vi=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Bi(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})},Hi=function(e,t,n,r){var i=Vi(t,Array.isArray(e)?e:[e]);Ri[n]||(Ri[n]=new WeakMap);var a=Ri[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=(Ii.get(e)||0)+1,l=(a.get(e)||0)+1;Ii.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Li.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(),zi++,function(){o.forEach(function(e){var t=Ii.get(e)-1,i=a.get(e)-1;Ii.set(e,t),a.set(e,i),t||(Li.has(e)||e.removeAttribute(r),Li.delete(e)),i||e.removeAttribute(n)}),zi--,zi||(Ii=new WeakMap,Ii=new WeakMap,Li=new WeakMap,Ri={})}},Ui=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Fi(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Hi(r,i,n,`aria-hidden`)):function(){return null}},Wi=Object.defineProperty,Gi=(e,t)=>Wi(e,`name`,{value:t,configurable:!0}),Ki=`Dialog`,[qi,Ji]=zt(Ki),[Yi,Xi]=qi(Ki),Zi=Gi(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:Ki}),[f,p]=s.useState(0),[m,h]=s.useState(0);return(0,G.jsx)(Yi,{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`),Qi=`DialogPortal`,[$i,ea]=qi(Qi,{forceMount:void 0}),ta=Gi(e=>{let{__scopeDialog:t,forceMount:n,children:r,container:i}=e,a=Xi(Qi,t);return(0,G.jsx)($i,{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`),na=`DialogOverlay`,ra=s.forwardRef(Gi(function(e,t){let n=ea(na,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Xi(na,e.__scopeDialog);return a.modal?(0,G.jsx)(fr,{present:r||a.open,children:(0,G.jsx)(aa,{...i,ref:t})}):null},`DialogOverlay`)),ia=un(`DialogOverlay.RemoveScroll`),aa=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(na,n),a=Ft(t,Rn());return(0,G.jsx)(Pi,{as:ia,allowPinchZoom:!0,shards:[i.contentRef],children:(0,G.jsx)(Tn.div,{"data-state":_a(i.open),...r,ref:a,style:{pointerEvents:`auto`,...r.style}})})},`DialogOverlayImpl`)),oa=`DialogContent`,sa=s.forwardRef(Gi(function(e,t){let n=ea(oa,e.__scopeDialog),{forceMount:r=n.forceMount,...i}=e,a=Xi(oa,e.__scopeDialog);return(0,G.jsx)(fr,{present:r||a.open,children:a.modal?(0,G.jsx)(ca,{...i,ref:t}):(0,G.jsx)(la,{...i,ref:t})})},`DialogContent`)),ca=s.forwardRef(Gi(function(e,t){let n=Xi(oa,e.__scopeDialog),r=s.useRef(null),i=Ft(t,n.contentRef,r);return s.useEffect(()=>{let e=r.current;if(e)return Ui(e)},[]),(0,G.jsx)(ua,{...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`)),la=s.forwardRef(Gi(function(e,t){let n=Xi(oa,e.__scopeDialog),r=s.useRef(!1),i=s.useRef(!1);return(0,G.jsx)(ua,{...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`)),ua=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:i,onCloseAutoFocus:a,...o}=e,s=Xi(oa,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":_a(s.open),...o,ref:t,deferPointerDownOutside:!0,onDismiss:()=>s.onOpenChange(!1)})})})},`DialogContentImpl`)),da=`DialogTitle`,fa=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(da,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`)),pa=`DialogDescription`,ma=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(pa,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`)),ha=`DialogClose`,ga=s.forwardRef(Gi(function(e,t){let{__scopeDialog:n,...r}=e,i=Xi(ha,n);return(0,G.jsx)(Tn.button,{type:`button`,...r,ref:t,onClick:K(e.onClick,()=>i.onOpenChange(!1))})},`DialogClose`));function _a(e){return e?`open`:`closed`}Gi(_a,`getState`);var va=[],ya=new Map,ba=[`.skip-link`,`.sidebar`,`.global-header`,`#mainContent`];function xa(e){if(e){for(let e of document.querySelectorAll(ba.join(`,`)))ya.has(e)||ya.set(e,e.hasAttribute(`inert`)),e.setAttribute(`inert`,``);return}for(let[e,t]of ya)e.isConnected&&!t&&e.removeAttribute(`inert`);ya.clear()}function Sa(e){if(e.key!==`Escape`||!va.length)return;let t=va[va.length-1];e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t.disabled||t.close()}function Ca(e){return va.length||(document.addEventListener(`keydown`,Sa,!0),xa(!0)),va.push(e),()=>{let t=va.lastIndexOf(e);t>=0&&va.splice(t,1),va.length||(document.removeEventListener(`keydown`,Sa,!0),xa(!1))}}function wa({open:e,onOpenChange:t,closeDisabled:n=!1,children:r}){return(0,G.jsx)(Zi,{open:e,onOpenChange:e=>{!e&&n||t(e)},children:r})}function Ta({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,Ca(c.current)},[e]),(0,G.jsx)(ta,{children:(0,G.jsxs)(`div`,{className:`overlay`,children:[(0,G.jsx)(ra,{className:`overlay-backdrop`}),(0,G.jsx)(sa,{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 Ea({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)(wa,{open:e,onOpenChange:t,closeDisabled:s,children:(0,G.jsxs)(Ta,{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)(fa,{children:n}),r?(0,G.jsx)(ma,{children:r}):null]}),c?(0,G.jsx)(ga,{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 Da({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)(wa,{open:e,onOpenChange:t,closeDisabled:o,children:(0,G.jsxs)(Ta,{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)(fa,{children:n}),r?(0,G.jsx)(ma,{children:r}):null]}),(0,G.jsx)(ga,{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 Oa({title:e,description:t,confirmText:n=`确认`,danger:r=!0,busy:i=!1,onConfirm:a,onCancel:o}){return(0,G.jsx)(Ea,{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)(ga,{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 ka=Object.defineProperty,Aa=(e,t)=>ka(e,`name`,{value:t,configurable:!0});function ja(e){let t=e+`CollectionProvider`,[n,r]=zt(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=Aa(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 Aa(h,`useCollection`),[{Provider:o,Slot:u,ItemSlot:m},h,r]}Aa(ja,`createCollection`);var Ma=new WeakMap,Na=class e extends Map{static{Aa(this,`OrderedDict`)}#e;constructor(e){super(e),this.#e=[...super.keys()],Ma.set(this,!0)}set(e,t){return Ma.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=Ia(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 Pa(e,t){if(`at`in Array.prototype)return Array.prototype.at.call(e,t);let n=Fa(e,t);return n===-1?void 0:e[n]}Aa(Pa,`at`);function Fa(e,t){let n=e.length,r=Ia(t),i=r>=0?r:n+r;return i<0||i>=n?-1:i}Aa(Fa,`toSafeIndex`);function Ia(e){return e!==e||e===0?0:Math.trunc(e)}Aa(Ia,`toSafeInteger`);function La(e){let t=e+`CollectionProvider`,[n,r]=zt(t),[i,a]=n(t,{collectionElement:null,collectionRef:{current:null},collectionRefObject:{current:null},itemMap:new Na,setItemMap:Aa(()=>void 0,`setItemMap`)}),o=Aa(({state:e,...t})=>e?(0,G.jsx)(l,{...t,state:e}):(0,G.jsx)(c,{...t}),`CollectionProvider`);o.displayName=t;let c=Aa(e=>{let t=g();return(0,G.jsx)(l,{...e,state:t})},`CollectionInit`);c.displayName=t+`Init`;let l=Aa(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=Va(()=>{});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);Ra(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(Ba):(t.set(c,{...e,element:c}),t.toSorted(Ba)):t),()=>{d(e=>!c||!e.has(c)?e:(e.delete(c),new Na(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 Na)}Aa(g,`useInitCollection`);function _(t){let{itemMap:n}=a(e+`CollectionConsumer`,t);return n}return Aa(_,`useCollection`),[{Provider:o,Slot:f,ItemSlot:h},{createCollectionScope:r,useCollection:_,useInitCollection:g}]}Aa(La,`createCollection`);function Ra(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}Aa(Ra,`shallowEqual`);function za(e,t){return!!(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}Aa(za,`isElementPreceding`);function Ba(e,t){return!e[1].element||!t[1].element?0:za(e[1].element,t[1].element)?-1:1}Aa(Ba,`sortByDocumentPosition`);function Va(e){return new MutationObserver(t=>{for(let n of t)if(n.type===`childList`){e();return}})}Aa(Va,`getChildListObserver`);var Ha=Object.defineProperty,Ua=(e,t)=>Ha(e,`name`,{value:t,configurable:!0}),Wa=s.createContext(void 0);function Ga(e){let t=s.useContext(Wa);return e||t||`ltr`}Ua(Ga,`useDirection`);var Ka=[`top`,`right`,`bottom`,`left`],qa=Math.min,Ja=Math.max,Ya=Math.round,Xa=Math.floor,Za=e=>({x:e,y:e}),Qa={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function $a(e,t,n){return Ja(e,qa(t,n))}function eo(e,t){return typeof e==`function`?e(t):e}function to(e){return e.split(`-`)[0]}function no(e){return e.split(`-`)[1]}function ro(e){return e===`x`?`y`:`x`}function io(e){return e===`y`?`height`:`width`}function ao(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function oo(e){return ro(ao(e))}function so(e,t,n){n===void 0&&(n=!1);let r=no(e),i=oo(e),a=io(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=_o(o)),[o,_o(o)]}function co(e){let t=_o(e);return[lo(e),t,lo(t)]}function lo(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var uo=[`left`,`right`],fo=[`right`,`left`],po=[`top`,`bottom`],mo=[`bottom`,`top`];function ho(e,t,n){switch(e){case`top`:case`bottom`:return n?t?fo:uo:t?uo:fo;case`left`:case`right`:return t?po:mo;default:return[]}}function go(e,t,n,r){let i=no(e),a=ho(to(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(lo)))),a}function _o(e){let t=to(e);return Qa[t]+e.slice(t.length)}function vo(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function yo(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:vo(e)}function bo(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 xo(e,t,n){let{reference:r,floating:i}=e,a=ao(t),o=oo(t),s=io(o),c=to(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=no(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function So(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}=eo(t,e),p=yo(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=bo(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=bo(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 Co=50,wo=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:So},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=xo(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}=eo(e,t)||{};if(l==null)return{};let d=yo(u),f={x:n,y:r},p=oo(i),m=io(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=qa(d[_],T),D=qa(d[v],T),O=C-h[m]-D,k=C/2-h[m]/2+w,A=$a(E,k,O),j=!c.arrow&&no(i)!=null&&k!==A&&a.reference[m]/2-(ke<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(u!==`alignment`||_===ao(t)||T.every(e=>ao(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=ao(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 Do(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Oo(e){return Ka.some(t=>e[t]>=0)}var ko=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=eo(e,t);switch(i){case`referenceHidden`:{let e=Do(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Oo(e)}}}case`escaped`:{let e=Do(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Oo(e)}}}default:return{}}}}},Ao=new Set([`left`,`top`]);async function jo(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=to(n),s=no(n),c=ao(n)===`y`,l=Ao.has(o)?-1:1,u=a&&c?-1:1,d=eo(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 Mo=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 jo(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}}}}},No=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}=eo(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=ao(i),p=ro(f),m=u[p],h=u[f],g=(e,t)=>$a(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}}}}}},Po=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}=eo(e,t),u={x:n,y:r},d=ao(i),f=ro(d),p=u[f],m=u[d],h=eo(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=Ao.has(to(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}}}},Fo=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}=eo(e,t),c=await i.detectOverflow(t,s),l=to(n),u=no(n),d=ao(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=qa(p-c[m],g),y=qa(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*Ja(c.left,c.right):S=p-2*Ja(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 Io(){return typeof window<`u`}function Lo(e){return Bo(e)?(e.nodeName||``).toLowerCase():`#document`}function Ro(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function zo(e){return((Bo(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Bo(e){return Io()?e instanceof Node||e instanceof Ro(e).Node:!1}function Vo(e){return Io()?e instanceof Element||e instanceof Ro(e).Element:!1}function Ho(e){return Io()?e instanceof HTMLElement||e instanceof Ro(e).HTMLElement:!1}function Uo(e){return!Io()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof Ro(e).ShadowRoot}function Wo(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=ts(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function Go(e){return/^(table|td|th)$/.test(Lo(e))}function Ko(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var qo=/transform|translate|scale|rotate|perspective|filter/,Jo=/paint|layout|strict|content/,Yo=e=>!!e&&e!==`none`,Xo;function Zo(e){let t=Vo(e)?ts(e):e;return Yo(t.transform)||Yo(t.translate)||Yo(t.scale)||Yo(t.rotate)||Yo(t.perspective)||!$o()&&(Yo(t.backdropFilter)||Yo(t.filter))||qo.test(t.willChange||``)||Jo.test(t.contain||``)}function Qo(e){let t=rs(e);for(;Ho(t)&&!es(t);){if(Zo(t))return t;if(Ko(t))return null;t=rs(t)}return null}function $o(){return Xo??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Xo}function es(e){return/^(html|body|#document)$/.test(Lo(e))}function ts(e){return Ro(e).getComputedStyle(e)}function ns(e){return Vo(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function rs(e){if(Lo(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Uo(e)&&e.host||zo(e);return Uo(t)?t.host:t}function is(e){let t=rs(e);return es(t)?(e.ownerDocument||e).body:Ho(t)&&Wo(t)?t:is(t)}function as(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=is(e),i=r===e.ownerDocument?.body,a=Ro(r);if(i){let e=os(a);return t.concat(a,a.visualViewport||[],Wo(r)?r:[],e&&n?as(e):[])}return t.concat(r,as(r,[],n))}function os(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ss(e){let t=ts(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Ho(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Ya(n)!==a||Ya(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function cs(e){return Vo(e)?e:e.contextElement}function ls(e){let t=cs(e);if(!Ho(t))return Za(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=ss(t),o=(a?Ya(n.width):n.width)/r,s=(a?Ya(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var us=Za(0);function ds(e){let t=Ro(e);return!$o()||!t.visualViewport?us:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function fs(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===Ro(e)}function ps(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=cs(e),o=Za(1);t&&(r?Vo(r)&&(o=ls(r)):o=ls(e));let s=fs(a,n,r)?ds(a):Za(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=Ro(a),t=Vo(r)?Ro(r):r,n=e,i=os(n);for(;i&&t!==n;){let e=ls(i),t=i.getBoundingClientRect(),r=ts(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=Ro(i),i=os(n)}}return bo({width:u,height:d,x:c,y:l})}function ms(e,t){let n=ns(e).scrollLeft;return t?t.left+n:ps(zo(e)).left+n}function hs(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-ms(e,n),y:n.top+t.scrollTop}}function gs(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=zo(r),s=t?Ko(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=Za(1),u=Za(0),d=Ho(r);if((d||!a)&&((Lo(r)!==`body`||Wo(o))&&(c=ns(r)),d)){let e=ps(r);l=ls(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?hs(o,c):Za(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 _s(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function vs(e){let t=ns(e),n=e.ownerDocument.body,r=Ja(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=Ja(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+ms(e),o=-t.scrollTop;return ts(n).direction===`rtl`&&(a+=Ja(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var ys=25;function bs(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=Ro(e),a=zo(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!$o()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(ms(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<=ys&&(s-=o)}return{width:s,height:c,x:l,y:u}}function xs(e,t){let n=ps(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=ls(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Ss(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=bs(e,n,t);else if(t===`document`)r=vs(zo(e));else if(Vo(t))r=xs(t,n);else{let n=ds(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return bo(r)}function Cs(e,t){let n=t.get(e);if(n)return n;let r=as(e,[],!1).filter(e=>Vo(e)&&Lo(e)!==`body`),i=null,a=ts(e).position===`fixed`,o=a?rs(e):e;for(;Vo(o)&&!es(o);){let e=ts(o),t=Zo(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=rs(o)}return t.set(e,r),r}function ws(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Ko(t)?[]:Cs(t,this._c):[].concat(n),r],o=Ss(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=Ro(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function Fs(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=cs(e),u=i||a?[...l?as(l):[],...t?as(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?Ps(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?ps(e):null;c&&g();function g(){let t=ps(e);h&&!Ns(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 Is=Mo,Ls=No,Rs=Eo,zs=Fo,Bs=ko,Vs=To,Hs=Po,Us=(e,t,n)=>{let r=new Map,i=n??{},a={...Ms,...i.platform,_c:r};return wo(e,t,{...i,platform:a})},Ws=typeof document<`u`?s.useLayoutEffect:function(){};function Gs(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(!Gs(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)&&!Gs(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Ks(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function qs(e,t){let n=Ks(e);return Math.round(t*n)/n}function Js(e){let t=s.useRef(e);return Ws(()=>{t.current=e}),t}function Ys(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);Gs(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=Js(l),O=Js(i),k=Js(u),A=s.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),Us(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!Gs(T.current,t)&&(T.current=t,sn.flushSync(()=>{f(t)}))})},[p,t,n,O,k]);Ws(()=>{u===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(e=>({...e,isPositioned:!1})))},[u]);let j=s.useRef(!1);Ws(()=>(j.current=!0,()=>{j.current=!1}),[]),Ws(()=>{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=qs(N.floating,d.x),r=qs(N.floating,d.y);return c?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Ks(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 Xs=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?{}:Vs({element:r.current,padding:i}).fn(n):r?Vs({element:r,padding:i}).fn(n):{}}}},Zs=(e,t)=>{let n=Is(e);return{name:n.name,fn:n.fn,options:[e,t]}},Qs=(e,t)=>{let n=Ls(e);return{name:n.name,fn:n.fn,options:[e,t]}},$s=(e,t)=>({fn:Hs(e).fn,options:[e,t]}),ec=(e,t)=>{let n=Rs(e);return{name:n.name,fn:n.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=Xs(e);return{name:n.name,fn:n.fn,options:[e,t]}},ic=Object.defineProperty,ac=s.forwardRef(((e,t)=>ic(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`)),oc=Object.defineProperty,sc=(e,t)=>oc(e,`name`,{value:t,configurable:!0});function cc(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}sc(cc,`useSize`);var lc=Object.defineProperty,uc=(e,t)=>lc(e,`name`,{value:t,configurable:!0}),dc=`Popper`,[fc,pc]=zt(dc),[mc,hc]=fc(dc),gc=uc(e=>{let{__scopePopper:t,children:n}=e,[r,i]=s.useState(null),[a,o]=s.useState(void 0);return(0,G.jsx)(mc,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})},`Popper`),_c=`PopperAnchor`,vc=s.forwardRef(uc(function(e,t){let{__scopePopper:n,virtualRef:r,...i}=e,a=hc(_c,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&&Oc(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`)),yc=`PopperContent`,[bc,xc]=fc(yc),Sc=s.forwardRef(uc(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,_=hc(yc,n),[v,y]=s.useState(null),b=Ft(t,y),[x,S]=s.useState(null),C=cc(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(Ec),altBoundary:k},{refs:j,floatingStyles:M,placement:N,isPositioned:P,middlewareData:F}=Ys({strategy:`fixed`,placement:E,whileElementsMounted:uc((...e)=>Fs(...e,{animationFrame:m===`always`}),`whileElementsMounted`),elements:{reference:_.anchor},middleware:[Zs({mainAxis:i+T,alignmentAxis:o}),l&&Qs({mainAxis:!0,crossAxis:!1,limiter:f===`partial`?$s():void 0,...A}),l&&ec({...A}),tc({...A,apply:uc(({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&&rc({element:x,padding:c}),Dc({arrowWidth:w,arrowHeight:T}),p&&nc({strategy:`referenceHidden`,...A,boundary:k?A.boundary:void 0})]}),I=_.setPlacementState;Vt(()=>(I(N),()=>{I(void 0)}),[N,I]);let[L,R]=Oc(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)(bc,{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`)),Cc=`PopperArrow`,wc={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Tc=s.forwardRef(uc(function(e,t){let{__scopePopper:n,...r}=e,i=xc(Cc,n),a=wc[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)(ac,{...r,ref:t,style:{...r.style,display:`block`}})})},`PopperArrow`));function Ec(e){return e!==null}uc(Ec,`isNotNull`);var Dc=uc(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]=Oc(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 Oc(e){let[t,n=`center`]=e.split(`-`);return[t,n]}uc(Oc,`getSideAndAlignFromPlacement`);var kc=gc,Ac=vc,jc=Sc,Mc=Tc,Nc=Object.defineProperty,Pc=(e,t)=>Nc(e,`name`,{value:t,configurable:!0}),Fc=!1;function Ic(){let[e,t]=s.useState(Fc);return s.useEffect(()=>{Fc||(Fc=!0,t(!0))},[]),e}Pc(Ic,`useIsHydrated`);var Lc=s.useSyncExternalStore;function Rc(){return()=>{}}Pc(Rc,`subscribe`);function zc(){return Lc(Rc,()=>!0,()=>!1)}Pc(zc,`useIsHydratedModern`);var Bc=typeof Lc==`function`?zc:Ic,Vc=Object.defineProperty,Hc=(e,t)=>Vc(e,`name`,{value:t,configurable:!0}),Uc=`rovingFocusGroup.onEntryFocus`,Wc={bubbles:!1,cancelable:!0},Gc=`RovingFocusGroup`,[Kc,qc,Jc]=ja(Gc),[Yc,Xc]=zt(Gc,[Jc]),[Zc,Qc]=Yc(Gc),$c=s.forwardRef(Hc(function(e,t){return(0,G.jsx)(Kc.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,G.jsx)(Kc.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,G.jsx)(el,{...e,ref:t})})})},`RovingFocusGroup`)),el=s.forwardRef(Hc(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=Ga(a),[g,_]=tn({prop:o,defaultProp:c??null,onChange:l,caller:Gc}),[v,y]=s.useState(!1),b=kn(u),x=qc(n),S=s.useRef(!1),[C,w]=s.useState(0);return s.useEffect(()=>{let e=p.current;if(e)return e.addEventListener(Uc,b),()=>e.removeEventListener(Uc,b)},[b]),(0,G.jsx)(Zc,{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(Uc,Wc);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=x().filter(e=>e.focusable);ol([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`)),tl=`RovingFocusGroupItem`,nl=s.forwardRef(Hc(function(e,t){let{__scopeRovingFocusGroup:n,focusable:r=!0,active:i=!1,tabStopId:a,children:o,...c}=e,l=Kt(),u=a||l,d=Qc(tl,n),f=d.currentTabStopId===u,p=qc(n),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:g}=d,_=Bc();return Vt(()=>{if(!(!_||!r))return m(),()=>h()},[_,r,m,h]),s.useEffect(()=>{if(!(_||!r))return m(),()=>h()},[_,r,m,h]),(0,G.jsx)(Kc.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=al(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?sl(n,r+1):n.slice(r+1)}setTimeout(()=>ol(n))}}),children:typeof o==`function`?o({isCurrentTabStop:f,hasTabStop:g!=null}):o})})},`RovingFocusGroupItem`)),rl={ArrowLeft:`prev`,ArrowUp:`prev`,ArrowRight:`next`,ArrowDown:`next`,PageUp:`first`,Home:`first`,PageDown:`last`,End:`last`};function il(e,t){return t===`rtl`?e===`ArrowLeft`?`ArrowRight`:e===`ArrowRight`?`ArrowLeft`:e:e}Hc(il,`getDirectionAwareKey`);function al(e,t,n){let r=il(e.key,n);if(!(t===`vertical`&&[`ArrowLeft`,`ArrowRight`].includes(r))&&!(t===`horizontal`&&[`ArrowUp`,`ArrowDown`].includes(r)))return rl[r]}Hc(al,`getFocusIntent`);function ol(e,t=!1){let n=document.activeElement;for(let r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}Hc(ol,`focusFirst`);function sl(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Hc(sl,`wrapArray`);var cl=$c,ll=nl,ul=Object.defineProperty,dl=(e,t)=>ul(e,`name`,{value:t,configurable:!0}),fl=[`Enter`,` `],pl=[`ArrowDown`,`PageUp`,`Home`],ml=[`ArrowUp`,`PageDown`,`End`],hl=[...pl,...ml],gl={ltr:[...fl,`ArrowRight`],rtl:[...fl,`ArrowLeft`]},_l={ltr:[`ArrowLeft`],rtl:[`ArrowRight`]},vl=`Menu`,[yl,bl,xl]=ja(vl),[Sl,Cl]=zt(vl,[xl,pc,Xc]),wl=pc(),Tl=Xc(),[El,Dl]=Sl(vl),[Ol,kl]=Sl(vl),Al=dl(e=>{let{__scopeMenu:t,open:n=!1,children:r,dir:i,onOpenChange:a,modal:o=!0}=e,c=wl(t),[l,u]=s.useState(null),d=s.useRef(!1),f=kn(a),p=Ga(i);return s.useEffect(()=>{let e=dl(()=>{d.current=!0,document.addEventListener(`pointerdown`,t,{capture:!0,once:!0}),document.addEventListener(`pointermove`,t,{capture:!0,once:!0})},`handleKeyDown`),t=dl(()=>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=dl(()=>f(!1),`handleBlur`);return window.addEventListener(`blur`,e),()=>window.removeEventListener(`blur`,e)},[n,f]),(0,G.jsx)(kc,{...c,children:(0,G.jsx)(El,{scope:t,open:n,onOpenChange:f,content:l,onContentChange:u,children:(0,G.jsx)(Ol,{scope:t,onClose:s.useCallback(()=>f(!1),[f]),isUsingKeyboardRef:d,dir:p,modal:o,children:r})})})},`Menu`),jl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e,i=wl(n);return(0,G.jsx)(Ac,{...i,...r,ref:t})},`MenuAnchor`)),Ml=`MenuPortal`,[Nl,Pl]=Sl(Ml,{forceMount:void 0}),Fl=dl(e=>{let{__scopeMenu:t,forceMount:n,children:r,container:i}=e,a=Dl(Ml,t);return(0,G.jsx)(Nl,{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`),Il=`MenuContent`,[Ll,Rl]=Sl(Il),zl=s.forwardRef(dl(function(e,t){let n=Pl(Il,e.__scopeMenu),{forceMount:r=n.forceMount,...i}=e,a=Dl(Il,e.__scopeMenu),o=kl(Il,e.__scopeMenu);return(0,G.jsx)(yl.Provider,{scope:e.__scopeMenu,children:(0,G.jsx)(fr,{present:r||a.open,children:(0,G.jsx)(yl.Slot,{scope:e.__scopeMenu,children:o.modal?(0,G.jsx)(Bl,{...i,ref:t}):(0,G.jsx)(Vl,{...i,ref:t})})})})},`MenuContent`)),Bl=s.forwardRef(dl(function(e,t){let n=Dl(Il,e.__scopeMenu),r=s.useRef(null),i=Ft(t,r);return s.useEffect(()=>{let e=r.current;if(e)return Ui(e)},[]),(0,G.jsx)(Ul,{...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`)),Vl=s.forwardRef(dl(function(e,t){let n=Dl(Il,e.__scopeMenu);return(0,G.jsx)(Ul,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})},`MenuRootContentNonModal`)),Hl=un(`MenuContent.ScrollLock`),Ul=s.forwardRef(dl(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,_=Dl(Il,n),v=kl(Il,n),y=wl(n),b=Tl(n),x=bl(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?Pi:s.Fragment,N=h?{as:Hl,allowPinchZoom:!0}:void 0,P=dl(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=yu(n.map(e=>e.textValue),t,i),o=n.find(e=>e.textValue===a)?.ref.current;dl((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&&xu(e,k.current?.area),[]);return(0,G.jsx)(Ll,{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)(cl,{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)(jc,{role:`menu`,"aria-orientation":`vertical`,"data-state":mu(_.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||!hl.includes(e.key))return;e.preventDefault();let a=x().filter(e=>!e.disabled).map(e=>e.ref.current);ml.includes(e.key)&&a.reverse(),_u(a)}),onBlur:K(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(E.current),D.current=``)}),onPointerMove:K(e.onPointerMove,Su(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`)),Wl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{role:`group`,...r,ref:t})},`MenuGroup`)),Gl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{...r,ref:t})},`MenuLabel`)),Kl=`MenuItem`,ql=`menu.itemSelect`,Jl=s.forwardRef(dl(function(e,t){let{disabled:n=!1,onSelect:r,...i}=e,a=s.useRef(null),o=kl(Kl,e.__scopeMenu),c=Rl(Kl,e.__scopeMenu),l=Ft(t,a),u=s.useRef(!1),d=dl(()=>{let e=a.current;if(!n&&e){let t=new CustomEvent(ql,{bubbles:!0,cancelable:!0});e.addEventListener(ql,e=>r?.(e),{once:!0}),En(e,t),t.defaultPrevented?u.current=!1:o.onClose()}},`handleSelect`);return(0,G.jsx)(Yl,{...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!==` `)&&fl.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})},`MenuItem`)),Yl=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,disabled:r=!1,textValue:i,...a}=e,o=Rl(Kl,n),c=Tl(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)(yl.ItemSlot,{scope:n,disabled:r,textValue:i??p,children:(0,G.jsx)(ll,{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,Su(e=>{r?o.onItemLeave(e):(o.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:K(e.onPointerLeave,Su(e=>o.onItemLeave(e))),onFocus:K(e.onFocus,()=>f(!0)),onBlur:K(e.onBlur,()=>f(!1))})})})},`MenuItemImpl`)),[Xl,Zl]=Sl(`MenuRadioGroup`,{value:void 0,onValueChange:dl(()=>{},`onValueChange`)}),Ql=s.forwardRef(dl(function(e,t){let{value:n,onValueChange:r,...i}=e,a=kn(r);return(0,G.jsx)(Xl,{scope:e.__scopeMenu,value:n,onValueChange:a,children:(0,G.jsx)(Wl,{...i,ref:t})})},`MenuRadioGroup`)),$l=`MenuRadioItem`,eu=s.forwardRef(dl(function(e,t){let{value:n,...r}=e,i=Zl($l,e.__scopeMenu),a=n===i.value;return(0,G.jsx)(nu,{scope:e.__scopeMenu,checked:a,children:(0,G.jsx)(Jl,{role:`menuitemradio`,"aria-checked":a,...r,ref:t,"data-state":gu(a),onSelect:K(r.onSelect,()=>i.onValueChange?.(n),{checkForDefaultPrevented:!1})})})},`MenuRadioItem`)),tu=`MenuItemIndicator`,[nu,ru]=Sl(tu,{checked:!1}),iu=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,forceMount:r,...i}=e,a=ru(tu,n);return(0,G.jsx)(fr,{present:r||hu(a.checked)||a.checked===!0,children:(0,G.jsx)(Tn.span,{...i,ref:t,"data-state":gu(a.checked)})})},`MenuItemIndicator`)),au=s.forwardRef(dl(function(e,t){let{__scopeMenu:n,...r}=e;return(0,G.jsx)(Tn.div,{role:`separator`,"aria-orientation":`horizontal`,...r,ref:t})},`MenuSeparator`)),ou=`MenuSub`,[su,cu]=Sl(ou),lu=dl(e=>{let{__scopeMenu:t,children:n,open:r=!1,onOpenChange:i}=e,a=Dl(ou,t),o=wl(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)(kc,{...o,children:(0,G.jsx)(El,{scope:t,open:r,onOpenChange:f,content:u,onContentChange:d,children:(0,G.jsx)(su,{scope:t,contentId:Kt(),triggerId:Kt(),trigger:c,onTriggerChange:l,children:n})})})},`MenuSub`),uu=`MenuSubTrigger`,du=s.forwardRef(dl(function(e,t){let n=Dl(uu,e.__scopeMenu),r=kl(uu,e.__scopeMenu),i=cu(uu,e.__scopeMenu),a=Rl(uu,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)(jl,{asChild:!0,...u,children:(0,G.jsx)(Yl,{id:i.triggerId,"aria-haspopup":`menu`,"aria-expanded":n.open,"aria-controls":n.open?i.contentId:void 0,"data-state":mu(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,Su(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,Su(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!==` `)&&gl[r.dir].includes(t.key)&&(n.onOpenChange(!0),n.content?.focus(),t.preventDefault())})})})},`MenuSubTrigger`)),fu=`MenuSubContent`,pu=s.forwardRef(dl(function(e,t){let n=Pl(Il,e.__scopeMenu),{forceMount:r=n.forceMount,align:i=`start`,...a}=e,o=Dl(Il,e.__scopeMenu),c=kl(Il,e.__scopeMenu),l=cu(fu,e.__scopeMenu),u=s.useRef(null),d=Ft(t,u);return(0,G.jsx)(yl.Provider,{scope:e.__scopeMenu,children:(0,G.jsx)(fr,{present:r||o.open,children:(0,G.jsx)(yl.Slot,{scope:e.__scopeMenu,children:(0,G.jsx)(Ul,{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=_l[c.dir].includes(e.key);t&&n&&(o.onOpenChange(!1),l.trigger?.focus(),e.preventDefault())})})})})})},`MenuSubContent`));function mu(e){return e?`open`:`closed`}dl(mu,`getOpenState`);function hu(e){return e===`indeterminate`}dl(hu,`isIndeterminate`);function gu(e){return hu(e)?`indeterminate`:e?`checked`:`unchecked`}dl(gu,`getCheckedState`);function _u(e){let t=document.activeElement;for(let n of e)if(n===t||(n.focus(),document.activeElement!==t))return}dl(_u,`focusFirst`);function vu(e,t){return e.map((n,r)=>e[(t+r)%e.length])}dl(vu,`wrapArray`);function yu(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=vu(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}dl(yu,`getNextMatch`);function bu(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}dl(bu,`isPointInPolygon`);function xu(e,t){return t?bu({x:e.clientX,y:e.clientY},t):!1}dl(xu,`isPointerInGraceArea`);function Su(e){return t=>t.pointerType===`mouse`?e(t):void 0}dl(Su,`whenMouse`);var Cu=Al,wu=jl,Tu=Fl,Eu=zl,Du=Gl,Ou=Jl,ku=Ql,Au=eu,ju=iu,Mu=au,Nu=lu,Pu=du,Fu=pu,Iu=Object.defineProperty,Lu=(e,t)=>Iu(e,`name`,{value:t,configurable:!0}),Ru=`DropdownMenu`,[zu,Bu]=zt(Ru,[Cl]),Vu=Cl(),[Hu,Uu]=zu(Ru),Wu=Lu(e=>{let{__scopeDropdownMenu:t,children:n,dir:r,open:i,defaultOpen:a,onOpenChange:o,modal:c=!0}=e,l=Vu(t),u=s.useRef(null),[d,f]=tn({prop:i,defaultProp:a??!1,onChange:o,caller:Ru});return(0,G.jsx)(Hu,{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)(Cu,{...l,open:d,onOpenChange:f,dir:r,modal:c,children:n})})},`DropdownMenu`),Gu=`DropdownMenuTrigger`,Ku=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,disabled:r=!1,...i}=e,a=Uu(Gu,n),o=Vu(n),s=Ft(t,a.triggerRef);return(0,G.jsx)(wu,{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`)),qu=Lu(e=>{let{__scopeDropdownMenu:t,...n}=e,r=Vu(t);return(0,G.jsx)(Tu,{...r,...n})},`DropdownMenuPortal`),Ju=`DropdownMenuContent`,Yu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Uu(Ju,n),a=Vu(n),o=s.useRef(!1);return(0,G.jsx)(Eu,{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`)),Xu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Du,{...i,...r,ref:t})},`DropdownMenuLabel`)),Zu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Ou,{...i,...r,ref:t})},`DropdownMenuItem`)),Qu=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(ku,{...i,...r,ref:t})},`DropdownMenuRadioGroup`)),$u=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Au,{...i,...r,ref:t})},`DropdownMenuRadioItem`)),ed=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(ju,{...i,...r,ref:t})},`DropdownMenuItemIndicator`)),td=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Mu,{...i,...r,ref:t})},`DropdownMenuSeparator`)),nd=Lu(e=>{let{__scopeDropdownMenu:t,children:n,open:r,onOpenChange:i,defaultOpen:a}=e,o=Vu(t),[s,c]=tn({prop:r,defaultProp:a??!1,onChange:i,caller:`DropdownMenuSub`});return(0,G.jsx)(Nu,{...o,open:s,onOpenChange:c,children:n})},`DropdownMenuSub`),rd=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Pu,{...i,...r,ref:t})},`DropdownMenuSubTrigger`)),id=s.forwardRef(Lu(function(e,t){let{__scopeDropdownMenu:n,...r}=e,i=Vu(n);return(0,G.jsx)(Fu,{...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`)),ad=Wu,od=Ku,sd=qu,cd=Yu,ld=Xu,ud=Zu,dd=Qu,fd=$u,pd=ed,md=td,hd=nd,gd=rd,_d=id;function vd({items:e,label:t=`更多操作`}){let n=e.findIndex(e=>e.danger);return(0,G.jsxs)(ad,{children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsx)(cd,{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)(md,{className:`more-actions-separator`}),(0,G.jsx)(ud,{className:`more-actions-item${e.danger?` danger`:``}`,disabled:e.disabled,onSelect:e.onSelect,children:e.label})]},e.label))})})]})}function yd({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 bd({children:e}){return(0,G.jsx)(yd,{targetId:`pageHeaderTools`,children:e})}function xd({children:e}){return(0,G.jsx)(yd,{targetId:`pageHeaderActions`,children:e})}function Sd(e){return Cd(e)||typeof e==`function`||wd(e)}function Cd(e){return typeof e==`function`&&(()=>{let t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function wd(e){return typeof e==`object`&&typeof e.$$typeof==`symbol`&&[`react.memo`,`react.forward_ref`].includes(e.$$typeof.description)}function Td(e,t){return e==null?null:Sd(e)?s.createElement(e,t):e}function Ed(e){if(`cell`in e&&e.cell){let t=e.cell,n=t.column.columnDef,r=t,i=n;return r.getIsAggregated?.()?Td(i.aggregatedCell??n.cell,t.getContext()):r.getIsPlaceholder?.()?null:Td(n.cell,t.getContext())}return`header`in e&&e.header?Td(e.header.column.columnDef.header,e.header.getContext()):`footer`in e&&e.footer?Td(e.footer.column.columnDef.footer,e.footer.getContext()):null}function Dd({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 Od(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 kd=[],Ad=0,{link:jd,unlink:Md,propagate:Nd,checkDirty:Pd,shallowPropagate:Fd}=Dd({update(e){return e._update()},notify(e){kd[Ld++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Vd(e))}}),Id=0,Ld=0,Rd,zd=0;function Bd(e){try{++zd,e()}finally{--zd||Hd()}}function Vd(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Md(n,e)}function Hd(){if(!(zd>0)){for(;Id{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Rd,o=t?.compare??Object.is;if(n)Rd=i,++Ad,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{Rd=a,n&&(i.flags&=-5),Vd(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&Pd(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Fd(e)}}else e&32&&(i.flags=e&-33);return Rd!==void 0&&jd(i,Rd,Ad),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Nd(e),Fd(e),Hd())}},i}function Wd(e){let t=()=>{let t=Rd;Rd=n,++Ad,n.depsTail=void 0,n.flags=6;try{return e()}finally{Rd=t,n.flags&=-5,Vd(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&&Pd(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Vd(this)}};return t(),n}function Gd(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=Kd(e);if(n.length!==Kd(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})),Jd=n(((e,t)=>{t.exports=qd()})),Yd=n((e=>{var t=r(),n=Jd();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}})),Xd=t(n(((e,t)=>{t.exports=Yd()}))(),1);function Zd(e,t){return e===t}function Qd(e,t=e=>e,n){let r=n?.compare??Zd,i=(0,s.useCallback)(t=>{let{unsubscribe:n}=e.subscribe(t);return n},[e]),a=(0,s.useCallback)(()=>e.get(),[e]);return(0,Xd.useSyncExternalStoreWithSelector)(i,a,a,t,r)}function $d(e){let t=Qd(e.source,e.selector,{compare:Gd});return typeof e.children==`function`?e.children(t):e.children}function ef(e){let t=e;return Object.defineProperty(e,"state",{get(){return e.get()}}),`set`in e&&(t.setState=e.set.bind(e)),t}function tf(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 nf(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 rf(){return tf({createAtom:Ud,batch:Bd})}function af(e,t){return typeof e==`function`?e(t):e}function of(e){if(Array.isArray(e))return e.map(of);if(e&&typeof e==`object`){let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n=t===null?sf():{},r=Object.keys(e);for(let t=0;tObject.prototype.propertyIsEnumerable.call(e,t))}var df=3;function ff(e,t){return pf(e,t,df)}function pf(e,t,n){if(Object.is(e,t))return!0;if(n<=0||!lf(e)||!lf(t)||(Array.isArray(e)||Array.isArray(t))&&(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length))return!1;let r=uf(e),i=uf(t);if(r.length!==i.length)return!1;let a=e,o=t;for(let e=0;e{let t=af(n,e);return r(e,t)?e:t})}function hf(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 gf=({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 vf({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 gf({...a,...s})}function yf(e,t=`_`){let[n,r]=e.split(t);return{fnKey:r,fnName:`${n}.${r}`,parentName:n}}function bf(e,t,n){for(let[r,{fn:i,memoDeps:a}]of Object.entries(n)){let{fnKey:n,fnName:o}=yf(r);t[n]=a?vf({memoDeps:a,fn:i,fnName:o,table:t,feature:e}):i}}function xf(e,t,n,r){for(let[i,{fn:a,memoDeps:o}]of Object.entries(r)){let{fnKey:r,fnName:s}=yf(i);if(o){let i=`_memo_${r}`;t[r]=function(...t){if(!this[i]){let t=this;this[i]=vf({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 Sf(e,t,n,...r){return e[t]?.(...r)??n(e,...r)}function Cf(e){return e.row.getValue(e.column.id)}function wf(e){return e.getValue()??e.table.options.renderFallbackValue}function Tf(e){return{table:e.table,column:e.column,row:e.row,cell:e,getValue:()=>e.getValue(),renderValue:()=>e.renderValue()}}var Ef={assignCellPrototype:(e,t)=>{xf(`coreCellsFeature`,e,t,{cell_getValue:{fn:e=>Cf(e)},cell_renderValue:{fn:e=>wf(e)},cell_getContext:{fn:e=>Tf(e),memoDeps:e=>[e]}})}};function Df(e){if(!e._headerPrototype){e._headerPrototype={table:e};let t=Object.values(e._features);for(let n=0;nSf(e,`getIsVisible`,Af)):(cf(t,e.id)?t[e.id]:void 0)??!0}function jf(e){return e.getAllLeafColumns().filter(e=>Sf(e,`getIsVisible`,Af))}function Mf(e,t=1){let n=t;for(let r=0;r0&&If(s,t-1,n,r,i,a)}function Lf(e){for(let t=0;t{let n=t;for(let t=0;te[i.accessorKey]}if(!s)throw Error();let l=zf(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 Wf(e){if(e.columns.length){let t=e.columns.flatMap(e=>e.getLeafColumns());return Sf(e.table,`getOrderColumns`,Vf)(t)}return[e]}function Gf(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 Kf(e,t,n,r=0){let i=Array(t.length);for(let a=0;ae.getFlatColumns())}function Yf(e){let t=sf(),n=e.getAllFlatColumns();for(let e=0;ee.getLeafColumns());return Sf(e,`getOrderColumns`,Vf)(t)}function Zf(e){let t=sf(),n=e.getAllLeafColumns();for(let e=0;e{xf(`coreColumnsFeature`,e,t,{column_getFlatColumns:{fn:e=>Uf(e),memoDeps:e=>[e.table.options.columns]},column_getLeafColumns:{fn:e=>Wf(e),memoDeps:e=>[e.table.atoms.columnOrder?.get(),e.table.atoms.grouping?.get(),e.table.options.columns,e.table.options.groupedColumnMode]}})},constructTableAPIs:e=>{bf(`coreColumnsFeature`,e,{table_getDefaultColumnDef:{fn:()=>Gf(e),memoDeps:()=>[e.options.defaultColumn]},table_getAllColumns:{fn:()=>qf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumns:{fn:()=>Jf(e),memoDeps:()=>[e.options.columns]},table_getAllFlatColumnsById:{fn:()=>Yf(e),memoDeps:()=>[e.options.columns]},table_getAllLeafColumns:{fn:()=>Xf(e),memoDeps:()=>[e.atoms.columnOrder?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode]},table_getAllLeafColumnsById:{fn:()=>Zf(e),memoDeps:()=>[e.getAllLeafColumns()]},table_getColumn:{fn:t=>Qf(e,t)}})}};function ep(e,t){for(let n=0;n!t.includes(e.id)&&!n.includes(e.id));return Rf(r,[...o,...c,...s],e)}function ip(e){return[...e.getHeaderGroups()].reverse()}function ap(e){let t=e.getHeaderGroups(),n=[];for(let e=0;e{xf(`coreHeadersFeature`,e,t,{header_getLeafHeaders:{fn:e=>tp(e),memoDeps:e=>[e.column.table.options.columns]},header_getContext:{fn:e=>np(e),memoDeps:e=>[e.column.table.options.columns]}})},constructTableAPIs:e=>{bf(`coreHeadersFeature`,e,{table_getHeaderGroups:{fn:()=>rp(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:()=>ip(e),memoDeps:()=>[e.getHeaderGroups()]},table_getFlatHeaders:{fn:()=>ap(e),memoDeps:()=>[e.getHeaderGroups()]},table_getLeafHeaders:{fn:()=>op(e),memoDeps:()=>[e.getHeaderGroups()]}})}};function cp(e){if(!e._rowPrototype){e._rowPrototype={table:e};let t=Object.values(e._features);for(let n=0;n{let s=cp(e),c=Object.create(s);c._displayIndexCache=-1,c._uniqueValuesCache=sf(),c._valuesCache=sf(),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;edp(e))}function pp(e){e.atoms.expanded&&(e.options.autoResetAll??e.options.autoResetExpanded??!e.options.manualExpanding)&&e._reactivity.schedule(()=>mp(e))}function mp(e,t){let n=e.initialState.expanded;mf(e,`expanded`,t?sf():n===!0||Object.assign(sf(),of(n??{})))}var hp=0;function gp(e){if(e.options.autoResetAll??e.options.autoResetPageIndex??!e.options.manualPagination){if((e.atoms.pagination?.get()?.pageIndex??hp)===hp)return;yp(e,!0)}}function _p(e,t){mf(e,`pagination`,t)}function vp(e,t){_p(e,n=>{let r=af(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 yp(e,t){vp(e,t?hp:e.initialState.pagination?.pageIndex??hp)}function bp(e,t){mf(e,`sorting`,t)}function xp(e,t){bp(e,t?[]:of(e.initialState.sorting??[]))}function Sp(e){e.atoms.sorting&&(e.options.autoResetAll??e.options.autoResetSorting??!1)&&xp(e)}function Cp(){return e=>vf({feature:`coreRowModelsFeature`,table:e,fnName:`table.getCoreRowModel`,memoDeps:()=>[e.options.data],fn:()=>Tp(e,e.options.data),onAfterUpdate:_f(()=>{pp(e),gp(e),Sp(e),fp(e)})})}function wp(e,t,n,r=0,i){let a=[];for(let o=0;o{bf(`coreRowModelsFeature`,e,{table_getCoreRowModel:{fn:()=>Ep(e)},table_getPreFilteredRowModel:{fn:()=>Dp(e)},table_getFilteredRowModel:{fn:()=>Op(e)},table_getPreGroupedRowModel:{fn:()=>kp(e)},table_getGroupedRowModel:{fn:()=>Ap(e)},table_getPreSortedRowModel:{fn:()=>jp(e)},table_getSortedRowModel:{fn:()=>Mp(e)},table_getPreExpandedRowModel:{fn:()=>Np(e)},table_getExpandedRowModel:{fn:()=>Pp(e)},table_getPrePaginatedRowModel:{fn:()=>Fp(e)},table_getPaginatedRowModel:{fn:()=>Ip(e)},table_getRowModel:{fn:()=>Lp(e)}})}};function zp(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 qp(e){let t=e.getCoreRowModel().flatRows,n=0;for(let e=0;e{xf(`coreRowsFeature`,e,t,{row_getDisplayIndex:{fn:e=>Vp(e)},row_getAllCellsByColumnId:{fn:e=>Zp(e),memoDeps:e=>[e.getAllCells()]},row_getAllCells:{fn:e=>Xp(e),memoDeps:e=>[e.table.getAllLeafColumns()]},row_getLeafRows:{fn:e=>Kp(e),memoDeps:e=>[e.subRows]},row_getParentRow:{fn:e=>Jp(e)},row_getParentRows:{fn:e=>Yp(e)},row_getUniqueValues:{fn:(e,t)=>Wp(e,t)},row_getValue:{fn:(e,t)=>Up(e,t)},row_renderValue:{fn:(e,t)=>Gp(e,t)}})},constructTableAPIs:e=>{bf(`coreRowsFeature`,e,{table_getRowsInDisplayOrder:{fn:()=>Hp(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)=>$p(e,t,n)},table_getMaxSubRowDepth:{fn:()=>qp(e),memoDeps:()=>[e.getCoreRowModel()]}})}};function tm(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 nm(e,t,n=(e,t)=>e===t){e._reactivity.batch(()=>{tm(e,t,n),e._reactivity.commit?.()})}function rm(e){let t=of(e.initialState);e._reactivity.batch(()=>{let n=Object.keys(t);for(let r=0;rr):e.options=r,n?.syncExternalState!==!1&&nm(e,r.state??null)}var om={coreCellsFeature:Ef,coreColumnsFeature:$f,coreHeadersFeature:sp,coreRowModelsFeature:Rp,coreRowsFeature:em,coreTablesFeature:{constructTableAPIs:e=>{bf(`coreTablesFeature`,e,{table_reset:{fn:()=>rm(e)},table_setOptions:{fn:t=>am(e,t)}})}}};function sm(){return{accessor:(e,t)=>typeof e==`function`?{...t,accessorFn:e}:{...t,accessorKey:e},columns:e=>e,display:e=>e,group:e=>e}}function cm(e){return e}function lm(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=um(e);if(n.length!==um(t).length)return!1;for(let r=0;r{t=e.getInitialState?.(t)??t}),of(t)}function fm(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:{...om,..._},_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=dm(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&&cf(i,n)){let e=i[n];return e===void 0?v.initialState[n]:e}return r},{debugName:`table/atoms/${n}`})}tm(v),v.store=ef(t.createReadonlyAtom(()=>{let e={};for(let t=0;t`u`?s.useEffect:s.useLayoutEffect;function mm(e,t){let[{table:n,rootSource:r}]=(0,s.useState)(()=>{let t=fm({...e,features:{coreReactivityFeature:rf(),...e.features}});return t.Subscribe=(e=>$d({...e,source:e.source??t.store})),t.FlexRender=Ed,{table:t,rootSource:nf(t.store,Gd)}}),i=n;am(i,t=>({...t,...e}),{syncExternalState:!1});let a=i.options.state,o=r.get(),c=Qd(r,t,{compare:Gd});return pm(()=>{r.markCommitted(o),nm(i,a??null,Gd)}),(0,s.useMemo)(()=>({...n,options:e,state:c}),[n,e,c])}var hm=cm({});function gm(e){return typeof e==`number`?`${e}px`:e}function _m(e){return e instanceof Element&&!!e.closest(`button, a, input, select, textarea, [role='button']`)}function vm({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)(()=>sm(),[]),m=mm({features:hm,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:gm(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:gm(r?.width),minWidth:gm(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&&!_m(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 ym=Object.defineProperty,bm=(e,t)=>ym(e,`name`,{value:t,configurable:!0});function xm(e,[t,n]){return Math.min(n,Math.max(t,e))}bm(xm,`clamp`);var Sm=Object.defineProperty,Cm=(e,t)=>Sm(e,`name`,{value:t,configurable:!0});function wm(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])}Cm(wm,`usePrevious`);var Tm=Object.defineProperty,Em=(e,t)=>Tm(e,`name`,{value:t,configurable:!0}),Dm=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`}),Om=s.forwardRef(Em(function(e,t){return(0,G.jsx)(Tn.span,{...e,ref:t,style:{...Dm,...e.style}})},`VisuallyHidden`)),km=Object.defineProperty,Am=(e,t)=>km(e,`name`,{value:t,configurable:!0}),jm=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Mm=[` `,`Enter`],Nm=`Select`,[Pm,Fm,Im]=ja(Nm),[Lm,Rm]=zt(Nm,[Im,pc]),zm=pc(),[Bm,Vm]=Lm(Nm),[Hm,Um]=Lm(Nm);function Wm(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,_=zm(t),[v,y]=s.useState(null),[b,x]=s.useState(null),[S,C]=s.useState(!1),w=Ga(u),[T,E]=tn({prop:r,defaultProp:i??!1,onChange:a,caller:Nm}),[D,O]=tn({prop:o,defaultProp:c,onChange:l,caller:Nm}),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=Am(()=>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)(kc,{..._,children:(0,G.jsx)(Bm,{scope:t,...R,children:(0,G.jsx)(Pm.Provider,{scope:t,children:(0,G.jsx)(Hm,{scope:t,onNativeOptionAdd:I,onNativeOptionRemove:L,children:jh(g)?g(R):n})})})})}Am(Wm,`SelectProvider`);var Gm=Am(e=>{let{__scopeSelect:t,children:n,...r}=e;return(0,G.jsx)(Wm,{__scopeSelect:t,...r,internal_do_not_use_render:({isFormControl:e})=>(0,G.jsxs)(G.Fragment,{children:[n,e?(0,G.jsx)(Ah,{__scopeSelect:t}):null]})})},`Select`),Km=`SelectTrigger`,qm=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,disabled:r=!1,...i}=e,a=zm(n),o=Vm(Km,n),c=o.disabled||r,l=Ft(t,o.onTriggerChange),u=Fm(n),d=s.useRef(`touch`),[f,p,m]=Nh(e=>{let t=u().filter(e=>!e.disabled),n=Ph(t,e,t.find(e=>e.value===o.value));n!==void 0&&o.onValueChange(n.value)}),h=Am(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)(Ac,{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":Mh(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===` `)&&jm.includes(e.key)&&(h(),e.preventDefault())})})})},`SelectTrigger`)),Jm=`SelectValue`,Ym=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=Vm(Jm,n),{onValueNodeHasChildrenChange:u}=l,d=a!==void 0,f=Ft(t,l.onValueNodeChange);Vt(()=>{u(d)},[u,d]);let p=Mh(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`)),Xm=s.forwardRef(Am(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`)),[Zm,Qm]=Lm(`SelectPortal`,{forceMount:void 0}),$m=Am(e=>{let{__scopeSelect:t,forceMount:n,...r}=e;return(0,G.jsx)(Zm,{scope:e.__scopeSelect,forceMount:n,children:(0,G.jsx)(cr,{asChild:!0,...r})})},`SelectPortal`),eh=`SelectContent`,th=s.forwardRef(Am(function(e,t){let n=Qm(eh,e.__scopeSelect),{forceMount:r=n.forceMount,...i}=e,a=Vm(eh,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)(sh,{...i,ref:t}):(0,G.jsx)(nh,{...i,fragment:o})})},`SelectContent`)),nh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,children:r,fragment:i}=e;return i?sn.createPortal((0,G.jsx)(ih,{scope:n,children:(0,G.jsx)(Pm.Slot,{scope:n,children:(0,G.jsx)(`div`,{ref:t,children:r})})}),i):null},`SelectContentFragment`)),rh=10,[ih,ah]=Lm(eh),oh=un(`SelectContent.RemoveScroll`),sh=s.forwardRef(Am(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=Vm(eh,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=Fm(n),[A,j]=s.useState(!1),M=s.useRef(!1);s.useEffect(()=>{if(b)return Ui(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=Am(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=Am(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=Am(()=>F(!1),`close`);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[F]);let[L,R]=Nh(e=>{let t=k().filter(e=>!e.disabled),n=Ph(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`?lh:ch,ee=H===lh?{side:c,sideOffset:l,align:u,alignOffset:d,arrowPadding:f,collisionBoundary:p,collisionPadding:m,sticky:h,hideWhenDetached:g,avoidCollisions:_}:{};return(0,G.jsx)(ih,{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)(Pi,{as:oh,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`)),ch=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,onPlaced:r,...i}=e,a=Vm(eh,n),o=ah(eh,n),[c,l]=s.useState(null),[u,d]=s.useState(null),f=Ft(t,d),p=Fm(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-rh,d=xm(a,[rh,Math.max(rh,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-rh,d=xm(a,[rh,Math.max(rh,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=p(),s=window.innerHeight-rh*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-rh,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=`${rh}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)(uh,{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`)),lh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,align:r=`start`,collisionPadding:i=rh,...a}=e,o=zm(n);return(0,G.jsx)(jc,{...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`)),[uh,dh]=Lm(eh,{}),fh=`SelectViewport`,ph=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,nonce:r,...i}=e,a=ah(fh,n),o=dh(fh,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)(Pm.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-rh*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`)),[mh,hh]=Lm(`SelectGroup`),gh=`SelectItem`,[_h,vh]=Lm(gh),yh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...o}=e,c=Vm(gh,n),l=ah(gh,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=Am(()=>{i||(c.onValueChange(r),c.onOpenChange(!1))},`handleSelect`);return(0,G.jsx)(_h,{scope:n,value:r,disabled:i,textId:g,isSelected:u,onItemTextChange:s.useCallback(e=>{f(t=>t||(e?.textContent??``).trim())},[]),children:(0,G.jsx)(Pm.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!==` `)&&(Mm.includes(e.key)&&v(),e.key===` `&&e.preventDefault())})})})})},`SelectItem`)),bh=`SelectItemText`,xh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,className:r,style:i,...a}=e,o=Vm(bh,n),c=ah(bh,n),l=vh(bh,n),u=Um(bh,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&&!Mh(o.value)?sn.createPortal(a.children,o.valueNode):null]})},`SelectItemText`)),Sh=`SelectItemIndicator`,Ch=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,...r}=e;return vh(Sh,n).isSelected?(0,G.jsx)(Tn.span,{"aria-hidden":!0,...r,ref:t}):null},`SelectItemIndicator`)),wh=`SelectScrollUpButton`,Th=s.forwardRef(Am(function(e,t){let n=ah(wh,e.__scopeSelect),r=dh(wh,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)};Am(e,`handleScroll`);let t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,G.jsx)(Oh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null},`SelectScrollUpButton`)),Eh=`SelectScrollDownButton`,Dh=s.forwardRef(Am(function(e,t){let n=ah(Eh,e.__scopeSelect),r=dh(Eh,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)(Oh,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null},`SelectScrollDownButton`)),Oh=s.forwardRef(Am(function(e,t){let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=ah(`SelectScrollButton`,n),o=s.useRef(null),c=Fm(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`)),kh=`SelectBubbleInput`,Ah=s.forwardRef(Am(function({__scopeSelect:e,...t},n){let r=Vm(kh,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??``,_=wm(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:{...Dm,...t.style},ref:h,defaultValue:g,children:[Mh(i)&&!v?(0,G.jsx)(`option`,{value:``}):null,Array.from(f)]},p)},`SelectBubbleInput`));function jh(e){return typeof e==`function`}Am(jh,`isFunction`);function Mh(e){return e===``||e===void 0}Am(Mh,`shouldShowPlaceholder`);function Nh(e){let t=kn(e),n=s.useRef(``),r=s.useRef(0),i=s.useCallback(e=>{let i=n.current+e;t(i),Am((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]}Am(Nh,`useTypeaheadSearch`);function Ph(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=Fh(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}Am(Ph,`findNextItem`);function Fh(e,t){return e.map((n,r)=>e[(t+r)%e.length])}Am(Fh,`wrapArray`);function Ih({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)(Gm,{value:n||void 0,open:l,disabled:a,onOpenChange:u,onValueChange:e=>{u(!1),c(e)},children:[(0,G.jsxs)(qm,{id:e,className:`studio-select-trigger${o?` ${o}`:``}`,"aria-label":t,title:d?.label||r,children:[(0,G.jsx)(Ym,{placeholder:r,children:d?.label}),(0,G.jsx)(Xm,{className:`studio-select-chevron`,children:(0,G.jsx)(H,{size:15})})]}),(0,G.jsx)($m,{children:(0,G.jsxs)(th,{className:`studio-select-content`,position:`popper`,sideOffset:5,collisionPadding:10,children:[(0,G.jsx)(Th,{className:`studio-select-scroll`,children:(0,G.jsx)(ne,{size:14})}),(0,G.jsx)(ph,{className:`studio-select-viewport`,children:i.map(e=>(0,G.jsxs)(yh,{value:e.value,disabled:e.disabled,className:`studio-select-item`,children:[(0,G.jsx)(xh,{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)(Ch,{className:`studio-select-check`,children:(0,G.jsx)(V,{size:14})})]},e.value))}),(0,G.jsx)(Dh,{className:`studio-select-scroll`,children:(0,G.jsx)(H,{size:14})})]})})]})}function Lh(e){return e.spec?.runtime?.type===`codex`}function Rh({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:Lh(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)(vd,{label:`${e.metadata.name} 的更多操作`,items:[{label:`配置`,onSelect:()=>a(e.metadata.id)},{label:Lh(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)(xd,{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)(Ih,{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)(vm,{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)(Oa,{title:`确认删除 Agent「${y.metadata.name}」?`,description:`Agent ID:${y.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:x,onConfirm:D,onCancel:()=>b(null)})]})}var zh=e=>e.type===`checkbox`,Bh=e=>e.type===`file`,Vh=e=>e instanceof Date,Hh=e=>e==null,Uh=e=>typeof e==`object`,Wh=e=>!Hh(e)&&!Array.isArray(e)&&Uh(e)&&!Vh(e),Gh=e=>Wh(e)&&e.target?zh(e.target)?e.target.checked:Bh(e.target)?e.target.files:e.target.value:e,Kh=/[.[\]'"]/,qh=e=>e.split(Kh).filter(Boolean),Jh=(e,t)=>t.split(`.`).some((t,n,r)=>!isNaN(Number(t))&&e.has(r.slice(0,n).join(`.`))),Yh=typeof window<`u`&&window.HTMLElement!==void 0&&typeof document<`u`;function Xh(e){if(typeof e!=`object`||!e)return e;if(e instanceof Date)return new Date(e);let t=typeof FileList<`u`&&e instanceof FileList;if(Yh&&(e instanceof Blob||t))return e;let n=Array.isArray(e);if(!n&&e.constructor!==Object)return e;let r=n?[]:Object.create(Object.getPrototypeOf(e));for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(r[t]=Xh(e[t]));return r}var Zh={BLUR:`blur`,FOCUS_OUT:`focusout`,CHANGE:`change`,SUBMIT:`submit`,TRIGGER:`trigger`,VALID:`valid`},Qh={onBlur:`onBlur`,onChange:`onChange`,onSubmit:`onSubmit`,onTouched:`onTouched`,all:`all`},$h={max:`max`,min:`min`,maxLength:`maxLength`,minLength:`minLength`,pattern:`pattern`,required:`required`,validate:`validate`},eg=`root`,tg=[`__proto__`,`constructor`,`prototype`],ng=/^\w*$/,rg=e=>ng.test(e),ig=e=>e===void 0,q=(e,t,n)=>{if(!t||!Wh(e))return n;let r=rg(t)?[t]:qh(t);if(r.some(e=>tg.includes(e)))return n;let i=r.reduce((e,t)=>Hh(e)?void 0:e[t],e);return ig(i)||i===e?ig(e[t])?n:e[t]:i},ag=e=>typeof e==`boolean`,og=e=>typeof e==`function`,sg=(e,t,n)=>{let r=-1,i=rg(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]!==Qh.all&&(t._proxyFormState[i]=!r||Qh.all),n&&(n[i]=!0),e[i]}});return i},ug=Yh?s.useLayoutEffect:s.useEffect,dg=e=>{let t=e.constructor&&e.constructor.prototype;return Wh(t)&&t.hasOwnProperty(`isPrototypeOf`)},fg=e=>Hh(e)||!Uh(e),pg=(e,t)=>t.length===0&&!Array.isArray(e)&&!dg(e);function mg(e,t,n=new WeakMap){if(e===t)return!0;if(fg(e)||fg(t))return Object.is(e,t);if(Vh(e)&&Vh(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(pg(e,r)||pg(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(Vh(r)&&Vh(e)||(Wh(r)||Array.isArray(r))&&(Wh(e)||Array.isArray(e))?!mg(r,e,n):!Object.is(r,e))return!1}}return!0}function hg(e){let t=s.useRef(!1),n=s.useRef(!1),r=s.useRef(void 0),i=s.useRef(0);return i.current++,!n.current&&e&&(n.current=!0,r.current=Xh(e())),{resyncIfNeeded:s.useCallback((e,a,o)=>{if(e&&(t.current||n.current&&i.current>1)){let e=a();mg(r.current,e)||o(e)}t.current=!0},[]),snapshot:s.useCallback((e,t)=>{e&&(r.current=Xh(t()))},[])}}var gg=e=>typeof e==`string`,_g=(e,t,n,r,i)=>gg(e)?(r&&t.watch.add(e),q(n,e,i)):Array.isArray(e)?e.map(e=>(r&&t.watch.add(e),q(n,e,q(i,e)))):(r&&(t.watchAll=!0),n),vg=e=>({isOnSubmit:!e||e===Qh.onSubmit,isOnBlur:e===Qh.onBlur,isOnChange:e===Qh.onChange,isOnAll:e===Qh.all,isOnTouch:e===Qh.onTouched}),yg=(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},bg=(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(bg(a,t))break}else if((Wh(a)||Array.isArray(a))&&bg(a,t))break}}},xg=(e,t,n)=>{let r=q(e,n),i=Array.isArray(r)?r:[];return sg(i,eg,t[n]),sg(e,n,i),e},Sg=e=>Wh(e)&&!Object.keys(e).length,Cg=e=>{if(!Yh)return!1;let t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},wg=e=>e.type===`radio`,Tg=e=>e instanceof RegExp,Eg=(e,t,n,r,i)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[r]:i||!0}}:{},Dg={value:!1,isValid:!1},Og={value:!0,isValid:!0},kg=e=>{if(!Array.isArray(e))return Dg;if(e.length>1){let t=e.filter(e=>e&&e.checked&&!e.disabled).map(e=>e.value);return{value:t,isValid:!!t.length}}let t=e[0];return!t||!t.checked||t.disabled?Dg:!t.attributes||!(`value`in t.attributes)||ig(t.value)||t.value===``?Og:{value:t.value,isValid:!0}},Ag={isValid:!1,value:null},jg=e=>Array.isArray(e)?e.reduce((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e,Ag):Ag;function Mg(e,t,n=`validate`){if(gg(e)||Array.isArray(e)&&e.every(gg)||ag(e)&&!e)return{type:n,message:gg(e)?e:``,ref:t}}var Ng=e=>Wh(e)&&!Tg(e)?e:{value:e,message:``},Pg=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=wg(o),C=zh(o),w=S||C,T=(g||Bh(o))&&ig(o.value)&&ig(v)||Cg(o)&&o.value===``||v===``||Array.isArray(v)&&!v.length,E=Eg.bind(null,h,r,x),D=(e,t,n,r=$h.maxLength,i=$h.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||Hh(v))||ag(v)&&!v||C&&!kg(s).isValid||S&&!jg(s).isValid)){let{value:e,message:t}=gg(c)?{value:!!c,message:c}:Ng(c);if(e&&(x[h]={type:$h.required,message:t,ref:y,...E($h.required,t)},!r))return b(t),x}if(!T&&(!Hh(d)||!Hh(f))){let e,t,n=Ng(f),i=Ng(d);if(!Hh(v)&&!Vh(v)&&!isNaN(v)){let r=o.valueAsNumber||v&&+v;Hh(n.value)||(e=r>n.value),Hh(i.value)||(t=rnew Date(new Date().toDateString()+` `+e),s=o.type==`time`,c=o.type==`week`;gg(n.value)&&v&&(e=s?a(v)>a(n.value):c?v>n.value:r>new Date(n.value)),gg(i.value)&&v&&(t=s?a(v)+e.value,i=!Hh(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&&gg(v)){let{value:e,message:t}=Ng(p);if(Tg(e)&&!v.match(e)&&(x[h]={type:$h.pattern,message:t,ref:o,...E($h.pattern,t)},!r))return b(t),x}if(m){if(og(m)){let e=Mg(await m(v,n),y);if(e&&(x[h]={...e,...E($h.validate,e.message)},!r))return b(e.message),x}else if(Wh(m)){let e={};for(let t in m){if(!Sg(e)&&!r)break;let i=Mg(await m[t](v,n),y,t);i&&(e={...i,...E(t,i.message)},b(i.message),r&&(x[h]=e))}if(!Sg(e)&&(x[h]={ref:y,...e},!r))return x}}let O=x[h];return b(!O||O.message),x},Fg=e=>Array.isArray(e)?e:[e],Ig=e=>Array.isArray(e)?e.filter(Boolean):[];function Lg(e,t){let n=t.length-1,r=0;for(;rtg.includes(String(e))))return e;let r=n.length===1?e:Lg(e,n),i=n.length-1,a=n[i];return r&&delete r[a],i!==0&&(Wh(r)&&Sg(r)||Array.isArray(r)&&Rg(r))&&zg(e,n.slice(0,-1)),e}var Bg=s.createContext(null);Bg.displayName=`HookFormContext`;var Vg=({children:e,watch:t,getValues:n,getErrors:r,getFieldState:i,setError:a,clearErrors:o,setValue:c,setValues:l,trigger:u,formState:d,resetField:f,reset:p,resetDefaultValues:m,handleSubmit:h,unregister:g,control:_,register:v,setFocus:y,subscribe:b})=>{let x=s.useMemo(()=>({watch:t,getValues:n,getErrors:r,getFieldState:i,setError:a,clearErrors:o,setValue:c,setValues:l,trigger:u,formState:d,resetField:f,reset:p,resetDefaultValues:m,handleSubmit:h,unregister:g,control:_,register:v,setFocus:y,subscribe:b}),[o,_,d,r,i,n,h,v,p,m,f,a,y,c,l,b,u,g,t]);return s.createElement(Bg.Provider,{value:x},s.createElement(cg.Provider,{value:x.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&&Wh(i)&&a){let e=Ug(i,a);Wh(e)&&(n[r]=e)}else e[r]&&(n[r]=a)}return n}var Wg=(e,t)=>e!==null&&Uh(e)&&Object.prototype.hasOwnProperty.call(e,t),Gg=(e,t)=>{if(!t)return!1;let n=e;for(let r of rg(t)?[t]:qh(t)){if(!Wg(n,r))return Wg(e,t);n=n[r]}return!0},Kg=e=>e.type===`select-multiple`,qg=e=>wg(e)||zh(e),Jg=e=>Cg(e)&&e.isConnected;function Yg(e){return Array.isArray(e)||Wh(e)}function Xg(e,t,n=``,r=[]){for(let i in e){let a=n?`${n}.${i}`:i,o=e[i];Yg(o)&&Yg(q(t,a))?Xg(o,t,a,r):r.push(a)}return r}var Zg=e=>{for(let t in e)if(og(e[t]))return!0;return!1};function Qg(e){return Array.isArray(e)||Wh(e)&&!Zg(e)}function $g(e){return!!(e&&`_f`in e)}function e_(e){return Array.isArray(e)?!e.some(e=>!ig(e)):!Object.keys(e).length}function t_(e,t){Array.isArray(e)?e[t]=void 0:delete e[t]}function n_(e,t={},n){for(let r in e){let i=e[r],a=n&&n[r];Qg(i)&&(!Array.isArray(i)||!$g(a))?(t[r]=Array.isArray(i)?[]:{},n_(i,t[r],a),e_(t[r])&&t_(t,r)):ig(i)||(t[r]=!0)}return t}function r_(e,t,n,r){n||=n_(t,{},r);for(let i in e){let a=e[i],o=r&&r[i];Qg(a)&&(!Array.isArray(a)||!$g(o))?(ig(t)||fg(n[i])?n[i]=n_(a,Array.isArray(a)?[]:{},o):r_(a,Hh(t)?{}:t[i],n[i],o),e_(n[i])&&t_(n,i)):mg(a,t[i])?t_(n,i):n[i]=!0}return n}var i_=(e,t)=>{let n=t.split(`.`),r=[],i=n[0];for(let t=1;tig(e)?e:t?e===``?NaN:e&&+e:n&&gg(e)?new Date(e):r?r(e):e;function o_(e){let t=e.ref;return Bh(t)?t.files:wg(t)?jg(e.refs).value:Kg(t)?[...t.selectedOptions].map(({value:e})=>e):zh(t)?kg(e.refs).value:a_(t.value,e)}var s_=(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}},c_=e=>ig(e)?e:Tg(e)?e.source:Wh(e)?Tg(e.value)?e.value.source:e.value:e,l_=`AsyncFunction`,u_=e=>{if(!e||!e.validate)return!1;if(og(e.validate))return e.validate.constructor.name===l_;if(Wh(e.validate)){for(let t in e.validate)if(e.validate[t].constructor.name===l_)return!0}return!1},d_=e=>e.mount&&(e.required||!ig(e.required)&&e.required!==!1||!ig(e.min)||!ig(e.max)||!ig(e.maxLength)||!ig(e.minLength)||e.pattern||e.validate);function f_(e,t,n){let r=q(e,n);if(r||rg(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 p_=(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||Qh.all))},m_=(e,t,n)=>!e||!t||e===t||Fg(e).some(e=>e&&(n?e===t||e.startsWith(t+`.`):e.startsWith(t)||t.startsWith(e))),h_=(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,g_=(e,t)=>{let n=q(e,t);!Ig(n).length&&!(n!=null&&n.root)&&zg(e,t)},__={mode:Qh.onSubmit,reValidateMode:Qh.onChange,shouldFocusError:!0},v_=`form`,y_=(e,t)=>{for(let n in e)n in t||delete e[n];Object.assign(e,t)},b_={submitCount:0,isDirty:!1,isReady:!1,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{}};function x_(e={}){let t={...__,...e},n={...Xh(b_),isLoading:og(t.defaultValues),errors:t.errors||{},disabled:t.disabled||!1},r={},i=(Wh(t.defaultValues)||Wh(t.values))&&Xh(t.defaultValues||t.values)||{},a=t.shouldUnregister?{}:Xh(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=vg(t.mode),f=vg(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===Qh.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=Sg((await j()).errors),e===_&&x()):i=await P({fields:r,onlyCheckValid:!0,eventType:Zh.VALID}),e===_&&i!==n.isValid&&g.state.next({isValid:i})}},x=(e,r)=>{!t.disabled&&(m.isValidating||m.validatingFields||h.isValidating||h.validatingFields)&&((e||s.mount).forEach(e=>{e&&(r?sg(n.validatingFields,e,r):zg(n.validatingFields,e))}),g.state.next({validatingFields:n.validatingFields,isValidating:!Sg(n.validatingFields)}))},S=()=>{n.dirtyFields=r_(i,a,void 0,r)},C=(e,i=[],s,c,l=!0,u=!0)=>{if(c&&s&&!t.disabled){o.action=!0;let t=q(r,e);if(o.actionArrayLengths.has(e)||o.actionArrayLengths.set(e,Array.isArray(t)?t.length:0),u&&Array.isArray(t)){let n=s(t,c.argA,c.argB);l&&sg(r,e,n)}let a=q(n.errors,e);if(u&&Array.isArray(a)){let t=a.root,r=s(a,c.argA,c.argB)||a;t&&(r.root=t),l&&sg(n.errors,e,r),g_(n.errors,e)}let d=q(n.touchedFields,e);if((m.touchedFields||h.touchedFields)&&u&&Array.isArray(d)){let t=s(d,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=rg(e)?[e]:qh(e),n=a,r=i;for(let e=0;e{if(!o.actionArrayLengths.size)return!1;let t=rg(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=q(r,t);if(d){if(E(t)||D(t))return;let r=ig(q(a,t)),f=q(a,t,ig(l)?q(i,t):l);ig(f)||u&&u.defaultChecked||c?sg(a,t,c?f:o_(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&&!ig(q(a,t))&&yg(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=mg(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?zg(n.dirtyFields,e):sg(n.dirtyFields,e,!0):y_(n.dirtyFields,r_(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):zg(n.errors,e),n.errors={...n.errors}),(i?!mg(o,i):o)||!Sg(a)||s){let t={...a,...s&&ag(r)?{isValid:r}:{},errors:n.errors,name:e};g.state.next(t)}},j=async e=>(x(e,!0),await t.resolver(a,t.context,s_(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)&&Wh(e)&&!Object.keys(e).some(e=>!Number.isNaN(Number(e)))?xg(n.errors,{[r]:e},r):sg(n.errors,r,e):zg(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(Wh(i))for(let e in i){let t=i[e];t&&se(`${v_}.${e}`,{message:gg(t.message)?t.message:``,type:t.type||$h.validate})}else gg(i)||!i?se(v_,{message:i||``,type:$h.validate}):oe(v_);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&&u_(u._f),d=m.validatingFields||m.isValidating||h.validatingFields||h.isValidating;c&&d&&x([r.name],!0);let f=await Pg(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?xg(n.errors,f,r.name):sg(n.errors,r.name,f[r.name]):zg(n.errors,r.name)),e.shouldUseNativeValidation&&f[r.name]))break}!Sg(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=>!Jg(e)):!Jg(t._f.ref))&&de(e)}s.unMount=new Set},I=(e,t)=>(e&&t&&sg(a,e,t),!mg(o.mount?a:i,i)),L=(e,t,n)=>_g(e,s,{...o.mount?a:ig(t)||gg(e)?i:t},n,t),R=e=>Ig(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,a_(t,n)),l=Cg(n.ref)&&Hh(t)?``:t,Kg(n.ref)?[...n.ref.options].forEach(e=>e.selected=l.includes(e.value)):n.refs?zh(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):Bh(n.ref)?n.ref.value=``:(n.ref.value=l,!n.ref.type&&!o&&!s&&g.state.next({name:e,values:i?a:Xh(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:Xh(a)});for(let a in t){if(!t.hasOwnProperty(a))continue;let l=t[a],u=e+`.`+a,d=q(r,u);(s.array.has(e)||Wh(l)||d&&!d._f)&&!Vh(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:Xh(t),p=mg(q(a,e),f);if(p||sg(a,e,f),d)g.array.next({name:e,values:c?a:Xh(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||Sg(f),n=!p&&!l;!u||u._f||Hh(f)||t?z(e,f,i,c,l,n):B(e,f,i,c,l,n)}if(!p&&!l){let t=yg(e,s),r=c?a:Xh(a);if(g.state.next({...t&&n,name:o.mount||t?e:void 0,values:r}),!d)for(let t of i_(s.array,e))g.state.next({name:t,values:r})}},H=(e,t,n={})=>V(e,t,n,!1),ee=(e,t={})=>{let r=og(e)?e(a):e;if(!mg(a,r)){a={...a,...r};for(let e of s.mount)Gg(r,e)&&V(e,q(r,e),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)||Vh(e)&&isNaN(e.getTime())||mg(e,q(a,p,e))};if(y){let o,C,w=l.type?o_(y._f):Gh(i),T=i.type===Zh.BLUR||i.type===Zh.FOCUS_OUT,E=!d_(y._f)&&!e.validate&&!t.resolver&&!q(n.errors,p)&&!y._f.deps,D=E||h_(T,q(n.touchedFields,p),n.isSubmitted,f,d),O=yg(p,s,T);if(sg(a,p,Xh(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=!Sg(M)||O;if(!T&&g.state.next({name:p,type:i.type,...u?{values:Xh(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),!_){!Sg(M)&&g.state.next(M);return}let t=f_(n.errors,r,p),i=f_(e,r,t.name||p);o=i.error,p=i.name,C=Sg(e)}else x([p],!0),o=(await Pg(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=Fg(e);if(t.resolver){let t=await M(ig(e)?e:u);a=Sg(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:Zh.TRIGGER})}))).every(Boolean),!(!o&&!n.isValid)&&b()):o=a=await P({fields:r,name:e,eventType:Zh.TRIGGER});if(i.delayError&&t.delayError&&gg(e)){let r=q(n.errors,e);r?(zg(n.errors,e),c[e]=y(e,()=>w(e,r)),c[e](t.delayError)):(clearTimeout(l[e]),delete c[e])}if(i.shouldTouch)for(let t of e?u:s.mount)!s.array.has(t)&&sg(n.touchedFields,t,!0);return g.state.next({...!gg(e)||(m.isValid||h.isValid)&&a!==n.isValid?{}:{name:e},...t.resolver||!e?{isValid:a}:{},...i.shouldTouch&&(m.touchedFields||h.touchedFields)?{touchedFields:n.touchedFields}:{},errors:n.errors}),i.shouldFocus&&!o&&bg(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)),ig(e)?r:gg(e)?q(r,e):e.map(e=>q(r,e))},ie=e=>ig(e)?{...n.errors}:gg(e)?q(n.errors,e):e.map(e=>q(n.errors,e)),ae=(e,t)=>{let r=t||n,i=q(r.errors,e);return{invalid:!!i,isDirty:!!q(r.dirtyFields,e),error:i,isValidating:!!q(n.validatingFields,e),isTouched:!!q(r.touchedFields,e)}},oe=e=>{let t=e?Fg(e):void 0;t?.forEach(e=>zg(n.errors,e)),t?t.forEach(e=>{g.state.next({name:e,errors:n.errors})}):(n.errors={},g.state.next({errors:n.errors}))},se=(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()},ce=(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)},le=e=>{let t=!!e.formState?.values;t&&u++;let{unsubscribe:r}=g.state.subscribe({next:t=>{if(m_(e.name,t.name,e.exact)&&p_(t,e.formState||m,be,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())}},ue=e=>(o.mount=!0,h={...h,...e.formState},le({...e,formState:{...p,...e.formState}})),de=(e,o={})=>{for(let c of e?Fg(e):s.mount)s.mount.delete(c),s.array.delete(c),o.keepValue||(zg(r,c),zg(a,c)),!o.keepError&&zg(n.errors,c),!o.keepDirty&&zg(n.dirtyFields,c),!o.keepTouched&&zg(n.touchedFields,c),!o.keepIsValidating&&zg(n.validatingFields,c),!t.shouldUnregister&&!o.keepDefaultValue&&zg(i,c);u&&g.state.next({values:Xh(a)}),g.state.next({...n,...o.keepDirty?{}:{isDirty:I()}}),!o.keepIsValid&&b()},W=({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()}},fe=(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?W({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:c_(n.min),max:c_(n.max),minLength:c_(n.minLength),maxLength:c_(n.maxLength),pattern:c_(n.pattern)}:{},name:e,onChange:te,onBlur:te,ref:c=>{if(c){s.registerName.add(e),fe(e,n),s.registerName.delete(e),a=q(r,e);let t=ig(c.value)&&c.querySelectorAll&&c.querySelectorAll(`input,select,textarea`)[0]||c,o=qg(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(Jg),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)&&!(Jh(s.array,e)&&o.action)&&s.unMount.add(e)}}},pe=()=>t.shouldFocusError&&!t.shouldUseNativeValidation&&bg(r,ne,s.mount),me=e=>{ag(e)&&(g.state.next({disabled:e}),bg(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))},he=(e,i)=>async o=>{let c,l;o&&(o.preventDefault&&o.preventDefault(),o.persist&&o.persist());let u=Xh(a);if(g.state.next({isSubmitting:!0}),t.resolver){let{errors:e,values:t}=await j();x(),n.errors=e,u=Xh(t)}else await P({fields:r,eventType:Zh.SUBMIT});if(s.disabled.size)for(let e of s.disabled)zg(u,e);if(zg(n.errors,eg),Sg(n.errors)){g.state.next({errors:{}});try{c=await e(u,o)}catch(e){l=e}}else i&&await i({...n.errors},o),pe(),setTimeout(pe);if(g.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Sg(n.errors)&&!l,submitCount:n.submitCount+1,errors:n.errors}),l)throw l;return c},ge=(e,t={})=>{q(r,e)&&(ig(t.defaultValue)?H(e,Xh(q(i,e))):(H(e,t.defaultValue),sg(i,e,Xh(t.defaultValue))),t.keepTouched||zg(n.touchedFields,e),t.keepDirty||(zg(n.dirtyFields,e),n.isDirty=t.defaultValue?I(e,Xh(q(i,e))):I()),t.keepError||(zg(n.errors,e),b()),g.state.next({...n}))},_e=(e,c={})=>{let l=e?Xh(e):i,u=Xh(l),d=Sg(e),f=u,p=r;if(c.keepDefaultValues||(i=l),!c.keepValues){if(c.keepDirtyValues){let e=new Set([...s.mount,...Xg(r_(i,a,void 0,p),n.dirtyFields)]);for(let t of e){let e=q(n.dirtyFields,t),r=q(a,t),i=q(f,t);e&&!ig(r)?sg(f,t,r):!e&&!ig(i)&&H(t,i)}}else{if(Yh&&ig(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(Cg(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?Xh(i):{},c.keepFieldsRef)for(let e of s.mount)sg(a,e,q(f,e))}else a=Xh(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&&!Sg(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&&!mg(e,i)),isSubmitted:c.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:d?{}:c.keepDirtyValues?c.keepDefaultValues&&a?r_(i,a,void 0,p):n.dirtyFields:c.keepDefaultValues&&e?r_(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})},ve=(e,n)=>_e(og(e)?e(a):e,{...t.resetOptions,...n}),ye=(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()})}},be=e=>{let{name:t,type:r,values:i,...a}=e;n={...n,...a}};g.state.subscribe({next:be});let xe={control:{register:fe,unregister:de,getFieldState:ae,handleSubmit:he,setError:se,_subscribe:le,_runSchema:j,_updateIsValidating:x,_focusError:pe,_getWatch:L,_getDirty:I,_setValid:b,_setFieldArray:C,_setDisabledField:W,_setErrors:T,_getFieldArray:R,_reset:_e,_resetDefaultValues:()=>og(t.defaultValues)&&t.defaultValues().then(e=>{ve(e,t.resetOptions),g.state.next({isLoading:!1})}),_removeUnmounted:F,_disableForm:me,_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=vg(t.mode),f=vg(t.reValidateMode)}},subscribe:ue,trigger:U,register:fe,handleSubmit:he,watch:ce,setValue:H,setValues:ee,getValues:re,getErrors:ie,reset:ve,resetField:ge,resetDefaultValues:(e,t={})=>{if(i=Xh(e),!t.keepDirty){let e=r_(i,a,void 0,r);n.dirtyFields=e,n.isDirty=!Sg(e)}t.keepIsValid||b(),g.state.next({...n,defaultValues:i})},clearErrors:oe,unregister:de,setError:se,setFocus:ye,getFieldState:ae};return{...xe,formControl:xe}}function S_(e={}){let t=s.useRef(void 0),n=s.useRef(void 0),r=s.useRef(e.formControl),[i,a]=s.useState(()=>({...Xh(b_),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}=x_(e);t.current={...r,formState:i}}}let o=t.current.control;o._options=e;let{resyncIfNeeded:c,snapshot:l}=hg();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&&!mg(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 C_=(e,t,n)=>{if(e&&`reportValidity`in e){let r=q(n,t);e.setCustomValidity(r&&r.message||``),e.reportValidity()}},w_=(e,t)=>{for(let n in t.fields){let r=t.fields[n];r&&r.ref&&`reportValidity`in r.ref?C_(r.ref,n,e):r&&r.refs&&r.refs.forEach(t=>C_(t,n,e))}},T_=(e,t)=>{t.shouldUseNativeValidation&&w_(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(E_(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},E_=(e,t)=>{let n=D_(t).replace(/[.*+?^${}()|\\]/g,`\\$&`);return e.some(e=>D_(e).match(`^${n}\\.\\d+`))};function D_(e){return e.replace(/\[(\d+)]/g,`.$1`).replace(/[[\]]/g,``)}function O_(){return O_=Object.assign?Object.assign.bind():function(e){for(var t=1;t0){var s=r.errors.reduce(function(e,t){return t.lengthe([...N_]))}function J(e,t=``,n=`success`){let r=`${n}:${e}:${t}`;if(N_.some(e=>e.toastKey===r))return;let i={key:++P_,toastKey:r,title:e,message:t,type:n};N_=[...N_,i],I_(),window.setTimeout(()=>{N_=N_.filter(e=>e.key!==i.key),I_()},n===`error`?7e3:3600)}function L_(){let[e,t]=(0,s.useState)(N_);return(0,s.useEffect)(()=>{let e=e=>t(e);return F_.add(e),()=>{F_.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 R_=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})),z_=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}})),B_=n(((e,t)=>{var n=z_(),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})),V_=n(((e,t)=>{var n=R_(),r=B_(),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})),H_=t(n(((e,t)=>{t.exports=V_()}))(),1);function U_(e,t,n,r,i,a){a===void 0&&(a=0);var o=rv(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 W_(e){return e.width>e.height?e.width/e.naturalWidth:e.height/e.naturalHeight}function G_(e,t,n,r,i){i===void 0&&(i=0);var a=rv(t.width,t.height,i),o=a.width,s=a.height;return{x:K_(e.x,o,n.width,r),y:K_(e.y,s,n.height,r)}}function K_(e,t,n,r){var i=Math.abs(t*r/2-n/2);return iv(e,-i,i)}function q_(e,t){return Math.sqrt((e.y-t.y)**2+(e.x-t.x)**2)}function J_(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function Y_(e,t,n,r,i,a,o){a===void 0&&(a=0),o===void 0&&(o=!0);var s=o?X_:Z_,c=rv(t.width,t.height,a),l=rv(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 X_(e,t){return Math.min(e,Math.max(0,t))}function Z_(e,t){return t}function Q_(e,t,n,r,i,a){var o=rv(t.width,t.height,n),s=iv(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 $_(e,t,n){var r=W_(t);return n.height>n.width?n.height/(e.height*r):n.width/(e.width*r)}function ev(e,t,n,r,i,a){n===void 0&&(n=0);var o=rv(t.naturalWidth,t.naturalHeight,n),s=iv($_(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 tv(e,t){return{x:(t.x+e.x)/2,y:(t.y+e.y)/2}}function nv(e){return e*Math.PI/180}function rv(e,t,n){var r=nv(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 iv(e,t,n){return Math.min(Math.max(e,t),n)}function av(){return[...arguments].filter(function(e){return typeof e==`string`&&e.length>0}).join(` `).trim()}var ov=`.reactEasyCrop_Container { +`},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; @@ -119,97 +119,111 @@ import{n as e,r as t,t as n}from"./rolldown-runtime-hePW80VL.js";import{i as r,n border-left: 0; border-right: 0; } -`,sv=1,cv=3,lv=1,uv=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=Q_(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=ev(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:U_(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?G_(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,H_.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=iv(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?G_(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?Y_(n.props.restrictPosition?G_(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?G_(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=G_(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=ov,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 gv({name:e,appearance:t,disabled:n=!1,onSave:r}){let[i,a]=(0,s.useState)(()=>pv(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(pv(t)),[t]),(0,s.useEffect)(()=>()=>{o&&URL.revokeObjectURL(o)},[o]);let C=pv(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 hv(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:dv.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:fv.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)(Ea,{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)(uv,{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 _v=Object.defineProperty,vv=s.forwardRef(((e,t)=>_v(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`)),yv=Object.defineProperty,bv=(e,t)=>yv(e,`name`,{value:t,configurable:!0}),[xv,Sv]=zt(`Tooltip`,[pc]),Cv=pc(),wv=`TooltipProvider`,Tv=700,Ev=`tooltip.open`,[Dv,Ov]=xv(wv),kv=bv(e=>{let{__scopeTooltip:t,delayDuration:n=Tv,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)(Dv,{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`),Av=`Tooltip`,[jv,Mv]=xv(Av),Nv=bv(e=>{let{__scopeTooltip:t,children:n,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:o,delayDuration:c}=e,l=Ov(Av,e.__scopeTooltip),u=Cv(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:bv(e=>{e?(l.onOpen(),document.dispatchEvent(new CustomEvent(Ev))):l.onClose(),a?.(e)},`onChange`),caller:Av}),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)(kc,{...u,children:(0,G.jsx)(jv,{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`),Pv=`TooltipTrigger`,Fv=s.forwardRef(bv(function(e,t){let{__scopeTooltip:n,...r}=e,i=Mv(Pv,n),a=Ov(Pv,n),o=Cv(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)(Ac,{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`)),Iv=`TooltipPortal`,[Lv,Rv]=xv(Iv,{forceMount:void 0}),zv=bv(e=>{let{__scopeTooltip:t,forceMount:n,children:r,container:i}=e,a=Mv(Iv,t);return(0,G.jsx)(Lv,{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`),Bv=`TooltipContent`,Vv=s.forwardRef(bv(function(e,t){let n=Rv(Bv,e.__scopeTooltip),{forceMount:r=n.forceMount,side:i=`top`,...a}=e,o=Mv(Bv,e.__scopeTooltip);return(0,G.jsx)(fr,{present:r||o.open,children:o.disableHoverableContent?(0,G.jsx)(Wv,{side:i,...a,ref:t}):(0,G.jsx)(Hv,{side:i,...a,ref:t})})},`TooltipContent`)),Hv=s.forwardRef(bv(function(e,t){let n=Mv(Bv,e.__scopeTooltip),r=Ov(Bv,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=qv(r,Kv(r,n.getBoundingClientRect())),a=Jv(t.getBoundingClientRect()),o=Xv([...i,...a]);c(o),f(!0)},[f]);return s.useEffect(()=>()=>p(),[p]),s.useEffect(()=>{if(l&&d){let e=bv(e=>m(e,d),`handleTriggerLeave`),t=bv(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=bv(e=>{let t=e.target,n={x:e.clientX,y:e.clientY},r=l?.contains(t)||d?.contains(t),i=!Yv(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)(Wv,{...e,ref:a})},`TooltipContentHoverable`)),Uv=fn(`TooltipContent`),Wv=s.forwardRef(bv(function(e,t){let{__scopeTooltip:n,children:r,"aria-label":i,id:a,onEscapeKeyDown:o,onPointerDownOutside:c,...l}=e,u=Mv(Bv,n),d=Cv(n),{onClose:f}=u;s.useEffect(()=>(document.addEventListener(Ev,f),()=>document.removeEventListener(Ev,f)),[f]),s.useEffect(()=>{if(u.trigger){let e=bv(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)(jc,{"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)(Uv,{children:r}),i?(0,G.jsx)(Om,{id:u.contentId,role:`tooltip`,children:i}):null]})})},`TooltipContentImpl`)),Gv=s.forwardRef(bv(function(e,t){let{__scopeTooltip:n,...r}=e,i=Cv(n);return(0,G.jsx)(Mc,{...i,...r,ref:t})},`TooltipArrow`));function Kv(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`)}}bv(Kv,`getExitSideFromRect`);function qv(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}bv(qv,`getPaddedExitPoints`);function Jv(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}]}bv(Jv,`getPointsFromRect`);function Yv(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}bv(Yv,`isPointInPolygon`);function Xv(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),Zv(t)}bv(Xv,`getHull`);function Zv(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)}bv(Zv,`getHullPresorted`);var Qv=kv,$v=Nv,ey=Fv,ty=zv,ny=Vv,ry=Gv,iy={required:`*`,optional:``,generated:`自动生成`};function ay({children:e,htmlFor:t,requirement:n,hint:r}){return(0,G.jsxs)(`div`,{className:`studio-field-label-row`,children:[(0,G.jsxs)(vv,{className:`studio-field-label`,htmlFor:t,children:[(0,G.jsx)(`span`,{children:e}),n&&iy[n]?(0,G.jsxs)(`span`,{className:`studio-field-requirement ${n}`,children:[(0,G.jsx)(`span`,{"aria-hidden":`true`,children:iy[n]}),n===`required`&&(0,G.jsx)(`span`,{className:`sr-only`,children:`必填`})]}):null]}),r?(0,G.jsx)(Qv,{delayDuration:240,children:(0,G.jsxs)($v,{children:[(0,G.jsx)(ey,{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)(ty,{children:(0,G.jsxs)(ny,{className:`studio-tooltip field-help-tooltip`,side:`top`,sideOffset:7,children:[r,(0,G.jsx)(ry,{className:`studio-tooltip-arrow`})]})})]})}):null]})}function oy({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)(ay,{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)(oy,{id:d,children:r}):null]})}var sy=Object.defineProperty,cy=(e,t)=>sy(e,`name`,{value:t,configurable:!0}),ly=`Popover`,[uy,dy]=zt(ly,[pc]),fy=pc(),[py,my]=uy(ly),hy=cy(e=>{let{__scopePopover:t,children:n,open:r,defaultOpen:i,onOpenChange:a,modal:o=!1}=e,c=fy(t),l=s.useRef(null),[u,d]=s.useState(!1),[f,p]=tn({prop:r,defaultProp:i??!1,onChange:a,caller:ly});return(0,G.jsx)(kc,{...c,children:(0,G.jsx)(py,{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`),gy=`PopoverTrigger`,_y=s.forwardRef(cy(function(e,t){let{__scopePopover:n,...r}=e,i=my(gy,n),a=fy(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":Oy(i.open),...r,ref:o,onClick:K(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,G.jsx)(Ac,{asChild:!0,...a,children:s})},`PopoverTrigger`)),vy=`PopoverPortal`,[yy,by]=uy(vy,{forceMount:void 0}),xy=cy(e=>{let{__scopePopover:t,forceMount:n,children:r,container:i}=e,a=my(vy,t);return(0,G.jsx)(yy,{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`),Sy=`PopoverContent`,Cy=s.forwardRef(cy(function(e,t){let n=by(Sy,e.__scopePopover),{forceMount:r=n.forceMount,...i}=e,a=my(Sy,e.__scopePopover);return(0,G.jsx)(fr,{present:r||a.open,children:a.modal?(0,G.jsx)(Ty,{...i,ref:t}):(0,G.jsx)(Ey,{...i,ref:t})})},`PopoverContent`)),wy=un(`PopoverContent.RemoveScroll`),Ty=s.forwardRef(cy(function(e,t){let n=my(Sy,e.__scopePopover),r=s.useRef(null),i=Ft(t,r),a=s.useRef(!1);return s.useEffect(()=>{let e=r.current;if(e)return Ui(e)},[]),(0,G.jsx)(Pi,{as:wy,allowPinchZoom:!0,children:(0,G.jsx)(Dy,{...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`)),Ey=s.forwardRef(cy(function(e,t){let n=my(Sy,e.__scopePopover),r=s.useRef(!1),i=s.useRef(!1);return(0,G.jsx)(Dy,{...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`)),Dy=s.forwardRef(cy(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=my(Sy,n),p=fy(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)(jc,{"data-state":Oy(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 Oy(e){return e?`open`:`closed`}cy(Oy,`getState`);var ky=hy,Ay=_y,jy=xy,My=Cy,Ny=1,Py=.9,Fy=.8,Iy=.17,Ly=.1,Ry=.999,zy=.9999,By=.99,Vy=/[\\\/_+.#"@\[\(\{&]/,Hy=/[\\\/_+.#"@\[\(\{&]/g,Uy=/[\s-]/,Wy=/[\s-]/g;function Gy(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?Ny:By;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=Gy(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=Ny:Vy.test(e.charAt(l-1))?(d*=Fy,p=e.slice(i,l-1).match(Hy),p&&i>0&&(d*=Ry**+p.length)):Uy.test(e.charAt(l-1))?(d*=Py,m=e.slice(i,l-1).match(Wy),m&&i>0&&(d*=Ry**+m.length)):(d*=Iy,i>0&&(d*=Ry**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=zy)),(dd&&(d=f*Ly)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function Ky(e){return e.toLowerCase().replace(Wy,` `)}function qy(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,Gy(e,t,Ky(e),Ky(t),0,0,{})}var Jy=`[cmdk-group=""]`,Yy=`[cmdk-group-items=""]`,Xy=`[cmdk-group-heading=""]`,Zy=`[cmdk-item=""]`,Qy=`${Zy}:not([aria-disabled="true"])`,$y=`cmdk-item-select`,eb=`data-value`,tb=(e,t,n)=>qy(e,t,n),nb=s.createContext(void 0),rb=()=>s.useContext(nb),ib=s.createContext(void 0),ab=()=>s.useContext(ib),ob=s.createContext(void 0),sb=s.forwardRef((e,t)=>{let n=xb(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=xb(()=>new Set),i=xb(()=>new Map),a=xb(()=>new Map),o=xb(()=>new Set),c=yb(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=wb();bb(()=>{if(d!==void 0){let e=d.trim();n.current.value=e,w.emit()}},[d]),bb(()=>{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??tb;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(Yy);t?t.appendChild(e.parentElement===t?e:e.closest(`${Yy} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${Yy} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=S.current?.querySelector(`${Jy}[${eb}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function O(){let e=M().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(eb);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(Jy)?.querySelector(Xy))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function j(){return S.current?.querySelector(`${Zy}[aria-selected="true"]`)}function M(){return Array.from(S.current?.querySelectorAll(Qy)||[])}function N(e){let t=M()[e];t&&w.setState(`value`,t.getAttribute(eb))}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(eb))}function F(e){let t=j()?.closest(Jy),n;for(;t&&!n;)t=e>0?_b(t,Jy):vb(t,Jy),n=t?.querySelector(Qy);n?w.setState(`value`,n.getAttribute(eb)):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($y);t.dispatchEvent(e)}}}}},s.createElement(`label`,{"cmdk-label":``,htmlFor:T.inputId,id:T.labelId,style:Db},l),Eb(e,e=>s.createElement(ib.Provider,{value:w},s.createElement(nb.Provider,{value:T},e))))}),cb=s.forwardRef((e,t)=>{let n=Kt(),r=s.useRef(null),i=s.useContext(ob),a=rb(),o=yb(e),c=o.current?.forceMount??i?.forceMount;bb(()=>{if(!c)return a.item(n,i?.id)},[c]);let l=Cb(n,r,[e.value,e.children,r],e.keywords),u=ab(),d=Sb(e=>e.value&&e.value===l.current),f=Sb(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($y,p),()=>t.removeEventListener($y,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)}),lb=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=rb(),f=Sb(e=>i||d.filter()===!1?!0:!e.search||e.filtered.groups.has(o));bb(()=>d.group(o),[]),Cb(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),Eb(e,e=>s.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?u:void 0},s.createElement(ob.Provider,{value:p},e))))}),ub=s.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=s.useRef(null),a=Sb(e=>!e.search);return!n&&!a?null:s.createElement(Tn.div,{ref:Pt(i,t),...r,"cmdk-separator":``,role:`separator`})}),db=s.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=ab(),o=Sb(e=>e.search),c=Sb(e=>e.selectedItemId),l=rb();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)}})}),fb=s.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=s.useRef(null),o=s.useRef(null),c=Sb(e=>e.selectedItemId),l=rb();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},Eb(e,e=>s.createElement(`div`,{ref:Pt(o,l.listInnerRef),"cmdk-list-sizer":``},e)))}),pb=s.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...c}=e;return s.createElement(Zi,{open:n,onOpenChange:r},s.createElement(ta,{container:o},s.createElement(ra,{"cmdk-overlay":``,className:i}),s.createElement(sa,{"aria-label":e.label,"cmdk-dialog":``,className:a},s.createElement(sb,{ref:t,...c}))))}),mb=s.forwardRef((e,t)=>Sb(e=>e.filtered.count===0)?s.createElement(Tn.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),hb=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},Eb(e,e=>s.createElement(`div`,{"aria-hidden":!0},e)))}),gb=Object.assign(sb,{List:fb,Item:cb,Input:db,Group:lb,Separator:ub,Dialog:pb,Empty:mb,Loading:hb});function _b(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function vb(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function yb(e){let t=s.useRef(e);return bb(()=>{t.current=e}),t}var bb=typeof window>`u`?s.useEffect:s.useLayoutEffect;function xb(e){let t=s.useRef();return t.current===void 0&&(t.current=e()),t}function Sb(e){let t=ab(),n=()=>e(t.snapshot());return s.useSyncExternalStore(t.subscribe,n,n)}function Cb(e,t,n,r=[]){let i=s.useRef(),a=rb();return bb(()=>{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(eb,s),i.current=s}),i}var wb=()=>{let[e,t]=s.useState(),n=xb(()=>new Map);return bb(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function Tb(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Eb({asChild:e,children:t},n){return e&&s.isValidElement(t)?s.cloneElement(Tb(t),{ref:t.ref},n(t.props.children)):n(t)}var Db={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`};function Ob({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)(ky,{open:d,onOpenChange:f,children:[(0,G.jsx)(Ay,{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)(jy,{children:(0,G.jsx)(My,{className:`studio-multi-select-popover`,align:`start`,sideOffset:6,collisionPadding:12,children:(0,G.jsxs)(gb,{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)(gb.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)(gb.List,{className:`studio-command-list`,children:[(0,G.jsx)(gb.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)(gb.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 kb=(0,s.lazy)(()=>f(()=>import(`./PrismRenderer-e1psRo9-.js`),__vite__mapDeps([0,1,2])));function Ab({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)(kb,{code:e,language:t||`text`,showLineNumbers:i})})})]})}function jb(e){return(e.split(`.`).filter(Boolean).at(-1)||e).replace(/_([a-z])/g,(e,t)=>t.toUpperCase())}function Mb(e){if(!e?.length)return null;let t=e[e.length-1];return typeof t==`string`?t:null}function Nb(e,t,n){typeof t==`string`&&t.trim()&&typeof n==`string`&&n&&(e[jb(t)]=n)}function Pb(e,t){if(!(!t||typeof t!=`object`||Array.isArray(t)))for(let[n,r]of Object.entries(t))typeof r==`string`?Nb(e,n,r):Array.isArray(r)&&typeof r[0]==`string`&&Nb(e,n,r[0])}function Fb(e){if(!e||typeof e!=`object`)return null;let t=e,n={};Pb(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)Nb(n,e.field||Mb(e.loc),e.message);else i&&typeof i==`object`&&Pb(n,i.fields)}return Object.keys(n).length?n:null}function Ib(e,t){let n=Fb(e);if(!n)return!1;for(let[e,r]of Object.entries(n))t(e,{type:`server`,message:r});return!0}function Lb(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 Rb(e,t=`|`){return e.map(e=>rx(e)).join(t)}function zb(e,t){return typeof t==`bigint`?t.toString():t}function Bb(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Vb(e){return e==null}function Hb(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function Ub(e,t){let n=e/t,r=Math.round(n),i=4*2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function Yb(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var Xb=Bb(()=>{if(Hx.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function Zb(e){if(Yb(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return Yb(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function Qb(e){return Zb(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var $b=new Set([`string`,`number`,`symbol`]);function ex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function tx(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function nx(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 rx(e){return typeof e==`bigint`?e.toString()+`n`:typeof e==`string`?`"${e}"`:`${e}`}function ix(e){return Object.keys(e).filter(t=>e[t]._zod.optin!==void 0&&e[t]._zod.optout===`optional`)}var ax={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ox(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 tx(e,Gb(e._zod.def,{get shape(){let e={};for(let r of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,r))throw Error(`Unrecognized key: "${String(r)}"`);t[r]&&Wb(e,r,n.shape[r])}return Wb(this,`shape`,e),e},checks:[]}))}function sx(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 tx(e,Gb(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e of Reflect.ownKeys(t)){if(!Object.prototype.hasOwnProperty.call(n.shape,e))throw Error(`Unrecognized key: "${String(e)}"`);t[e]&&delete r[e]}return Wb(this,`shape`,r),r},checks:[]}))}function cx(e,t){if(!Zb(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 of Reflect.ownKeys(t))if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return tx(e,Gb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Wb(this,`shape`,n),n}}))}function lx(e,t){if(!Zb(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return tx(e,Gb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return Wb(this,`shape`,n),n}}))}function ux(e,t){if(!t?._zod?.def)throw Error("Invalid input to merge: expected an object schema. To merge a plain shape, use `.extend()`.");if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return tx(e,Gb(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return Wb(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function dx(e,t,n,r=`partial`){let i=t._zod.def.checks;if(i&&i.length>0)throw Error(`.${r}() cannot be used on object schemas containing refinements`);return tx(t,Gb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(r,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t of Reflect.ownKeys(r))i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return Wb(this,`shape`,i),i},checks:[]}))}function fx(e,t,n){return tx(t,Gb(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t of Reflect.ownKeys(n)){if(!Object.prototype.hasOwnProperty.call(i,t))throw Error(`Unrecognized key: "${String(t)}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t of Reflect.ownKeys(r))i[t]=new e({type:`nonoptional`,innerType:r[t]});return Wb(this,`shape`,i),i}}))}function px(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 gx(e){return typeof e==`string`?e:e?.message}function _x(e,t,n){var r;for(let i=t;ie;return t[Px]=!0,t}var Ix,Lx={value:void 0,enumerable:!1},Rx=`captureStackTrace`in Error?Error:null;function zx(e){let t=Rx;if(t){let n=t.stackTraceLimit;if(typeof n==`number`){try{t.stackTraceLimit=0}catch{return Rx=null,new e}try{return new e}finally{t.stackTraceLimit=n}}}return new e}function X(e,t,n,r){let i={};function a(e){this.def=e,this.constr=d,this.traits=new Set}a.prototype=i;let o=n,s=o&&new WeakSet;function c(n,r){if(!n._zod){Lx.value=new a(r);try{Object.defineProperty(n,"_zod",Lx)}finally{Lx.value=void 0}}if(n._zod.traits.has(e))return;if(n._zod.traits.add(e),t(n,r),s){let e=Object.getPrototypeOf(n),t=n._zod.constr.prototype,r=e;for(;r&&r!==t;)r=Object.getPrototypeOf(r);let i=r??e;s.has(i)||(s.add(i),wx(i,o))}let i=d.prototype;for(let e in i)Object.prototype.hasOwnProperty.call(i,e)&&(e in n||(n[e]=i[e].bind(n)))}let l=r?.Parent??Object;class u extends l{}Object.defineProperty(u,"name",{value:e});function d(e){let t=r?.Parent?zx(u):this;c(t,e);let n=t._zod.deferred;if(n){for(let e of n)e();t._zod.deferred=void 0}let i=globalThis.__zod_globalConfig?.postProcessor;return i&&i(t),t}return Object.defineProperty(d,"init",{value:c}),Object.defineProperty(d,Symbol.hasInstance,{value:t=>r?.Parent&&t instanceof r.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(d,"name",{value:e}),d}var Bx=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},Vx=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Ix=globalThis).__zod_globalConfig??(Ix.__zod_globalConfig={});var Hx=globalThis.__zod_globalConfig;function Ux(e){return e&&Object.assign(Hx,e),Hx}function Wx(){let e=this._zod;return e.message??=JSON.stringify(e.def,zb,2),e.message}function Gx(e){this._zod.message=e}var Kx={get:Wx,set:Gx,enumerable:!0,configurable:!0},qx={value:void 0,enumerable:!1},Jx={value:void 0,enumerable:!1},Yx=new WeakSet([Object.prototype,Error.prototype]),Xx=(e,t)=>{e.name=`$ZodError`,qx.value=e._zod,Object.defineProperty(e,"_zod",qx),Jx.value=t,Object.defineProperty(e,"issues",Jx),qx.value=void 0,Jx.value=void 0,Object.defineProperty(e,"message",Kx);let n=Object.getPrototypeOf(e);Yx.has(n)||(Yx.add(n),Object.defineProperty(n,"toString",{configurable:!0,enumerable:!1,get(){let e=()=>this.message;return Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,"toString",{value:e,configurable:!0,writable:!0})}}))},Zx=X(`$ZodError`,Xx),Qx=X(`$ZodError`,Xx,void 0,{Parent:Error});function $x(e,t,n){return Object.prototype.hasOwnProperty.call(e,t)||(t===`__proto__`?Object.defineProperty(e,t,{value:n(),writable:!0,enumerable:!0,configurable:!0}):e[t]=n()),e[t]}function eS(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?$x(n,i.path[0],()=>[]).push(t(i)):r.push(t(i));return{formErrors:r,fieldErrors:n}}function tS(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{let t=(n,r,i,a)=>{let o=i?{...i,async:!1}:{async:!1},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new Bx;if(s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>vx(e,o,Ux())));throw Jb(n,a?.callee??t),n}return s.value};return t},iS=e=>{let t=async(n,r,i,a)=>{let o=i?{...i,async:!0}:{async:!0},s=n._zod.run({value:r,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let n=new((a?.Err)??e)(s.issues.map(e=>vx(e,o,Ux())));throw Jb(n,a?.callee??t),n}return s.value};return t},aS=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 Bx;return a.issues.length?{success:!1,error:new(e??Zx)(a.issues.map(e=>vx(e,i,Ux())))}:{success:!0,data:a.value}},oS=aS(Qx),sS=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=>vx(e,i,Ux())))}:{success:!0,data:a.value}},cS=sS(Qx),lS=e=>{let t=rS(e),n=(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return t(e,r,o,nS(n,a))};return n},uS=e=>{let t=rS(e),n=(e,r,i,a)=>t(e,r,i,nS(n,a));return n},dS=e=>{let t=iS(e),n=async(e,r,i,a)=>{let o=i?{...i,direction:`backward`}:{direction:`backward`};return await t(e,r,o,nS(n,a))};return n},fS=e=>{let t=iS(e),n=async(e,r,i,a)=>await t(e,r,i,nS(n,a));return n},pS=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return aS(e)(t,n,i)},mS=e=>(t,n,r)=>aS(e)(t,n,r),hS=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return sS(e)(t,n,i)},gS=e=>async(t,n,r)=>sS(e)(t,n,r),_S=/^[cC][0-9a-z]{6,}$/,vS=/^[0-9a-z]+$/,yS=/^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$/,bS=/^[0-9a-vA-V]{20}$/,xS=/^[A-Za-z0-9]{27}$/,SS=/^[a-zA-Z0-9_-]{21}$/;function CS(e){return RegExp(`^[a-zA-Z0-9_-]{${e}}$`)}var wS=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,TS=/^([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})$/,ES=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)$/,DS=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,OS=`^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$`;function kS(){return new RegExp(OS,`u`)}var AS=/^(?:(?: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])$/,jS=/^(([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}|:))$/,MS=/^((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}:){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}|:))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,PS=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,FS=/^[A-Za-z0-9_-]*$/,IS=/^https?$/,LS=/^\+[1-9]\d{6,14}$/,RS=`(?:(?:\\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])))`;function zS(e){return RegExp(`^${e}$`)}var BS=zS(RS);function VS(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}}`:e.seconds?`${t}:[0-5]\\d(?:\\.\\d+)?`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function HS(e){return RegExp(`^${VS(e)}$`)}function US(e){let t=[`Z`];e.offset&&t.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let n=`${VS({precision:e.precision,seconds:!0})}(?:${t.join(`|`)})`,r=e.local?`${n}|${VS({precision:e.precision})}`:n;return RegExp(`^${RS}T(?:${r})$`)}var WS=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},GS=/^-?\d+$/,KS=/^-?\d+(?:\.\d+)?$/,qS=/^(?:true|false)$/i,JS=/^[^A-Z]*$/,YS=/^[^a-z]*$/,XS=X(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ZS=e=>{let t=e.value;return!Vb(t)&&t.length!==void 0},QS={number:`number`,bigint:`bigint`,object:`date`},$S=X(`$ZodCheckLessThan`,(e,t)=>{XS.init(e,t);let n=QS[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{XS.init(e,t);let n=QS[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:QS[typeof r.value]??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})}}),tC=X(`$ZodCheckMultipleOf`,(e,t)=>{XS.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`?t.value!==BigInt(0)&&n.value%t.value===BigInt(0):Ub(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})}}),nC=X(`$ZodCheckNumberFormat`,(e,t)=>{XS.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=ax[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=GS)}),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})}}),rC=X(`$ZodCheckMaxLength`,(e,t)=>{var n;XS.init(e,t),(n=e._zod.def).when??(n.when=ZS),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value,i=r.length;if((typeof r==`string`&&i>t.maximum?bx(r):i)<=t.maximum)return;let a=xx(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),iC=X(`$ZodCheckMinLength`,(e,t)=>{var n;XS.init(e,t),(n=e._zod.def).when??(n.when=ZS),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,i=r.length;if((typeof r==`string`&&i>=t.minimum&&i=t.minimum)return;let a=xx(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),aC=X(`$ZodCheckLengthEquals`,(e,t)=>{var n;XS.init(e,t),(n=e._zod.def).when??(n.when=ZS),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,a=typeof r==`string`&&i>=t.length&&i<=t.length*2?bx(r):i;if(a===t.length)return;let o=xx(r),s=a>t.length;n.issues.push({origin:o,...s?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),oC=X(`$ZodCheckStringFormat`,(e,t)=>{var n,r;XS.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=()=>{})}),sC=X(`$ZodCheckRegex`,(e,t)=>{oC.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})}}),cC=X(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=JS,oC.init(e,t)}),lC=X(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=YS,oC.init(e,t)}),uC=X(`$ZodCheckIncludes`,(e,t)=>{XS.init(e,t);let n=ex(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})}}),dC=X(`$ZodCheckStartsWith`,(e,t)=>{XS.init(e,t);let n=RegExp(`^${ex(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})}}),fC=X(`$ZodCheckEndsWith`,(e,t)=>{XS.init(e,t);let n=RegExp(`.*${ex(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})}}),pC=X(`$ZodCheckOverwrite`,(e,t)=>{XS.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),mC=class{constructor(e=[],t={}){this.content=[],this.indent=0,this.args=e,this.closed=t}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?.content??[``];return new e(...Object.keys(this.closed),`return function (${this.args.join(`, `)}) {\n${t.join(` -`)}\n};`)(...Object.values(this.closed))}},hC={major:4,minor:5,patch:4},gC=X(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=hC;let r=e._zod.def.checks,i=e._zod.traits.has(`$ZodCheck`)?[e,...r??[]]:r?.length?[...r]:[];for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(t,n,r)=>{if(t.memo)return t;let i=px(t),a;for(let o of n){if(o._zod.def.when){if(mx(t)||!o._zod.def.when(t))continue}else if(i)continue;let n=t.issues.length,s=o._zod.check(t);if(s instanceof Promise&&r?.async===!1)throw new Bx;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,t.issues.length!==n&&(_x(t.issues,n,e),i||=px(t,n))});else{if(t.issues.length===n)continue;_x(t.issues,n,e),i||=px(t,n)}}return a?a.then(()=>t):t},n=(n,r,a)=>{if(px(n))return n.aborted=!0,n;let o=t(r,i,a);if(o instanceof Promise){if(a.async===!1)throw new Bx;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(r,a)=>{if(a.skipChecks)return e._zod.parse(r,a);if(a.direction===`backward`){let t=e._zod.parse({value:r.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,r,a)):n(t,r,a)}let o=e._zod.parse(r,a);if(o instanceof Promise){if(a.async===!1)throw new Bx;return o.then(e=>t(e,i,a))}return t(o,i,a)}}},{get"~standard"(){return Ex(this,`~standard`,vC(this))},set"~standard"(e){Tx(this,`~standard`,e)}}),_C=e=>e.success?{value:e.data}:{issues:e.error?.issues};function vC(e){return{validate:t=>{try{return _C(oS(e,t))}catch{return cS(e,t).then(_C)}},vendor:`zod`,version:1}}var yC=X(`$ZodString`,(e,t)=>{gC.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??WS(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}}),bC=X(`$ZodStringFormat`,(e,t)=>{oC.init(e,t),yC.init(e,t)}),xC=X(`$ZodGUID`,(e,t)=>{t.pattern??=TS,bC.init(e,t)}),SC=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??=ES(e)}else t.pattern??=ES();bC.init(e,t)}),CC=X(`$ZodEmail`,(e,t)=>{t.pattern??=DS,bC.init(e,t)});function wC(e,t){if(!t.normalize&&t.protocol?.source===IS.source&&!/^https?:\/\//i.test(e))return 1;try{return new URL(e)}catch{return 2}}var TC=/[\t\n\r]/g;function EC(e){return e.replace(TC,``)}function DC(e,t){return t.lastIndex=0,t.test(e.hostname)}function OC(e,t){return t.lastIndex=0,t.test(e.protocol.endsWith(`:`)?e.protocol.slice(0,-1):e.protocol)}var kC=X(`$ZodURL`,(e,t)=>{bC.init(e,t),e._zod.check=n=>{try{let r=n.value.trim(),i=wC(r,t);if(i===1){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}if(i===2){n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort});return}t.hostname&&!DC(i,t.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&&!OC(i,t.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:EC(r);return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),AC=X(`$ZodEmoji`,(e,t)=>{t.pattern??=kS(),bC.init(e,t)}),jC=X(`$ZodNanoID`,(e,t)=>{if(t.length!==void 0&&(!Number.isInteger(t.length)||t.length<1))throw Error(`Invalid nanoid length: ${t.length}`);t.pattern??=t.length===void 0?SS:CS(t.length),bC.init(e,t)}),MC=X(`$ZodCUID`,(e,t)=>{t.pattern??=_S,bC.init(e,t)}),NC=X(`$ZodCUID2`,(e,t)=>{t.pattern??=vS,bC.init(e,t)}),PC=X(`$ZodULID`,(e,t)=>{t.pattern??=yS,bC.init(e,t)}),FC=X(`$ZodXID`,(e,t)=>{t.pattern??=bS,bC.init(e,t)}),IC=X(`$ZodKSUID`,(e,t)=>{t.pattern??=xS,bC.init(e,t)}),LC=X(`$ZodISODateTime`,(e,t)=>{t.pattern??=US(t),bC.init(e,t),(t.local||t.precision===-1)&&(e._zod.bag.laxFormat=!0,e._zod.onattach.push(e=>{e._zod.bag.laxFormat=!0}))}),RC=X(`$ZodISODate`,(e,t)=>{t.pattern??=BS,bC.init(e,t)}),zC=X(`$ZodISOTime`,(e,t)=>{t.pattern??=HS(t),bC.init(e,t)}),BC=X(`$ZodISODuration`,(e,t)=>{t.pattern??=wS,bC.init(e,t)}),VC=X(`$ZodIPv4`,(e,t)=>{t.pattern??=AS,bC.init(e,t),e._zod.bag.format=`ipv4`}),HC=/^[0-9a-fA-F:.]+$/;function UC(e){if(!HC.test(e))return!1;try{return new URL(`http://[${e}]`),!0}catch{return!1}}var WC=X(`$ZodIPv6`,(e,t)=>{t.pattern??=jS,bC.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{UC(n.value)||n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}),GC=X(`$ZodCIDRv4`,(e,t)=>{t.pattern??=MS,bC.init(e,t)});function KC(e){let t=e.split(`/`);if(t.length!==2)return!1;let[n,r]=t;if(!r)return!1;let i=Number(r);return`${i}`!==r||i<0||i>128?!1:UC(n)}var qC=X(`$ZodCIDRv6`,(e,t)=>{t.pattern??=NS,bC.init(e,t),e._zod.check=n=>{KC(n.value)||n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}});function JC(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var YC=X(`$ZodBase64`,(e,t)=>{t.pattern??=PS,bC.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{JC(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function XC(e){if(!FS.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return JC(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var ZC=X(`$ZodBase64URL`,(e,t)=>{t.pattern??=FS,bC.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{XC(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),QC=X(`$ZodE164`,(e,t)=>{t.pattern??=LS,bC.init(e,t)});function $C(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 ew=X(`$ZodJWT`,(e,t)=>{bC.init(e,t),e._zod.check=n=>{$C(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),tw=X(`$ZodNumber`,(e,t)=>{gC.init(e,t),e._zod.pattern=e._zod.bag.pattern??KS,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:String(i):void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),nw=X(`$ZodNumberFormat`,(e,t)=>{nC.init(e,t),tw.init(e,t)}),rw=X(`$ZodBoolean`,(e,t)=>{gC.init(e,t),e._zod.pattern=qS,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}}),iw=X(`$ZodUnknown`,(e,t)=>{gC.init(e,t),e._zod.parse=e=>e}),aw=X(`$ZodNever`,(e,t)=>{gC.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function ow(e,t,n){e.issues.length&&t.issues.push(...hx(n,e.issues)),t.value[n]=e.value}var sw=X(`$ZodArray`,(e,t)=>{gC.init(e,t);let n=Hx.memoizer;n?.attach(e),e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({expected:`array`,code:`invalid_type`,input:a,inst:e}),r;r.value=n?n.alloc(e,r,Array(a.length),i):Array(a.length);let o=[];for(let e=0;eow(t,r,e))):ow(s,r,e)}return o.length?Promise.all(o).then(()=>r):r}});function cw(e,t,n,r,i,a){let o=n in r,s=a===`optional`;if(!(!o&&s&&i===`optional`)){if(e.issues.length){if(i!==void 0&&s&&!o)return;t.issues.push(...hx(n,e.issues))}if(!o&&i===void 0){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}}var lw=[];function uw(e){let t=Object.keys(e.shape),n=Object.getOwnPropertySymbols(e.shape),r=n.length?n:lw,i=r.length?[...t,...r]:t;for(let t of i)if(!e.shape?.[t]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${String(t)}": expected a Zod schema`);let a=ix(e.shape);return{...e,allKeys:i,symbolKeys:r,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(a)}}function dw(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin,d=c.optout;for(let i in t){if(s.has(i))continue;if(i===`__proto__`){l===`never`&&o.push(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=>cw(e,n,i,t,u,d))):cw(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a,continue:!0}),e.length?Promise.all(e).then(()=>n):n}var fw=new WeakMap,pw=X(`$ZodObject`,(e,t)=>{if(gC.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;fw.set(t,e),Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),fw.set(t,n),n}})}let n=Bb(()=>uw(t));Mx(e,`propValues`,e=>{let t=e.def.shape,n={};for(let e in t){let r=t[e]._zod;if(r.values){Object.prototype.hasOwnProperty.call(n,e)||Wb(n,e,new Set);for(let t of r.values)n[e].add(t);r.optin!==void 0&&n[e].add(void 0)}}return n});let r=Yb,i=t.catchall,a,o=Hx.memoizer;o?.attach(e),e._zod.parse=(t,s)=>{a??=n.value;let c=t.value;if(!r(c))return t.issues.push({expected:`object`,code:`invalid_type`,input:c,inst:e}),t;t.value=o?o.alloc(e,t,{},s):{};let l=[],u=a.shape;for(let e of a.allKeys){if(e===`__proto__`)continue;let n=u[e],r=n._zod.optin,i=n._zod.optout,a=n._zod.run({value:c[e],issues:[]},s);a instanceof Promise?l.push(a.then(n=>cw(n,t,e,c,r,i))):cw(a,t,e,c,r,i)}return i?dw(l,c,t,s,n.value,e):l.length?Promise.all(l).then(()=>t):t}}),mw=X(`$ZodObjectJIT`,(e,t)=>{pw.init(e,t);let n=e._zod.parse,r=Bb(()=>uw(t)),i=Hx.memoizer,a=t=>{let n=r.value,a=n.symbolKeys,o=new mC([`payload`,`ctx`],{shape:t,inst:e,memo:i,syms:a}),s=e=>`shape[${e}]._zod.run({ value: input[${e}], issues: [] }, ctx)`,c=(e,t)=>` - for (let i = 0; i < ${e}.issues.length; i++) { - const iss = ${e}.issues[i]; - iss.path = iss.path ? [${t}, ...iss.path] : [${t}]; - payload.issues.push(iss); - }`;o.write(`const input = payload.value;`);let l=Object.create(null),u=0;for(let e of n.allKeys)l[e]=`key_${u++}`;o.write(i?`const newResult = memo.alloc(inst, payload, {}, ctx);`:`const newResult = {};`);for(let e of n.allKeys){if(e===`__proto__`)continue;let n=l[e],r=typeof e==`symbol`?`syms[${a.indexOf(e)}]`:Kb(e),i=`${r} in input`,u=t[e],d=u?._zod?.optin,f=d!==void 0,p=u?._zod?.optout===`optional`;if(o.write(`const ${n} = ${s(r)};`),f&&p){let e=d===`optional`?`${n}_present`:`${n}.value !== undefined || ${n}_present`;o.write(` - const ${n}_present = ${i}; - if (!${n}.issues.length || ${n}_present) { - if (${n}.issues.length) {${c(n,r)} +`,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 (${e}) { - newResult[${r}] = ${n}.value; + if (${n}.value === undefined) { + if (${o} in input) { + newResult[${o}] = undefined; } + } else { + newResult[${o}] = ${n}.value; } - `)}else f?o.write(` - if (${n}.issues.length) {${c(n,r)} + `):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 (${i}) { - newResult[${r}] = undefined; + if (${o} in input) { + newResult[${o}] = undefined; } } else { - newResult[${r}] = ${n}.value; + newResult[${o}] = ${n}.value; } - `):o.write(` - const ${n}_present = ${i}; - if (${n}.issues.length) {${c(n,r)} + `):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: [${r}] + path: [${o}] }); } if (${n}_present) { - newResult[${r}] = ${n}.value; + if (${n}.value === undefined) { + newResult[${o}] = undefined; + } else { + newResult[${o}] = ${n}.value; + } } - `)}return o.write(`payload.value = newResult;`),o.write(`return payload;`),o.compile()},o,s=Yb,c=!Hx.jitless,l=c&&Xb.value,u=t.catchall,d;e._zod.parse=(i,f)=>{d??=r.value;let p=i.value;return s(p)?c&&l&&f?.async===!1&&f.jitless!==!0?(o||=a(t.shape),i=o(i,f),u?dw([],p,i,f,d,e):i):n(i,f):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function hw(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=>!px(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=>vx(e,r,Ux())))}),t)}var gw=X(`$ZodUnion`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.options.some(e=>e._zod.optin===`defaulted`)?`defaulted`:e.def.options.some(e=>e._zod.optin!==void 0)?`optional`:void 0),Mx(e,`optout`,e=>e.def.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),Mx(e,`values`,e=>{if(e.def.options.every(e=>e._zod.values))return new Set(e.def.options.flatMap(e=>Array.from(e._zod.values)))}),Mx(e,`pattern`,e=>{if(e.def.options.every(e=>e._zod.pattern)){let t=e.def.options.map(e=>e._zod.pattern);return RegExp(`^(${t.map(e=>Hb(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=>hw(t,r,e,i)):hw(o,r,e,i)}}),_w=X(`$ZodIntersection`,(e,t)=>{gC.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])=>yw(e,t,n)):yw(e,i,a)}});function vw(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Zb(e)&&Zb(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};Object.prototype.hasOwnProperty.call(i,`__proto__`)&&delete i.__proto__;for(let n of r){if(n===`__proto__`)continue;let r=vw(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;r{let n;if(e.code===`unrecognized_keys`&&!e.path?.length)i??=e,n=e.keys;else if(e.code===`invalid_key`&&e.origin===`record`&&e.path?.length===1){let t=String(e.path[0]);a.has(t)||a.set(t,e),n=[t]}else return!1;for(let e of n)r.has(e)||r.set(e,{}),r.get(e)[t]=!0;return!0};for(let n of t.issues)o(n,`l`)||e.issues.push(n);for(let t of n.issues)o(t,`r`)||e.issues.push(t);let s=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(s.length){let t=i?s.filter(e=>i.keys.includes(e)):[];t.length&&e.issues.push({...i,keys:t});for(let n of s)!t.includes(n)&&a.has(n)&&e.issues.push(a.get(n))}let c=vw(t.value,n.value);if(!c.valid){if(px(e))return e;throw Error(`Unmergable intersection. Error path: ${JSON.stringify(c.mergeErrorPath)}`)}return e.value=c.data,e}var bw=X(`$ZodEnum`,(e,t)=>{gC.init(e,t);let n=Lb(t.entries),r=new Set(n);e._zod.values=r;let i=n.filter(e=>$b.has(typeof e));e._zod.pattern=RegExp(i.length?`^(${i.map(e=>ex(e.toString())).join(`|`)})$`:`^[^\\s\\S]$`),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}}),xw=X(`$ZodLiteral`,(e,t)=>{gC.init(e,t);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(t.values.length?`^(${t.values.map(e=>typeof e==`string`?ex(e):e?ex(e.toString()):String(e)).join(`|`)})$`:`^[^\\s\\S]$`),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}}),Sw=X(`$ZodTransform`,(e,t)=>{gC.init(e,t),e._zod.optin=`optional`,Hx.memoizer?.guard(e),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Vx(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));if(i instanceof Promise)throw new Bx;return n.value=i,n}});function Cw(e,t){return e.value=t.issues.length?void 0:t.value,e}var ww=X(`$ZodOptional`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),e._zod.optout=`optional`,Mx(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t,void 0]):void 0}),Mx(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Hb(t.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(e.value===void 0){if(t.innerType._zod.optin!==`defaulted`)return e;let r=t.innerType._zod.run({value:e.value,issues:[]},n);return r instanceof Promise?r.then(t=>Cw(e,t)):Cw(e,r)}return t.innerType._zod.run(e,n)}}),Tw=X(`$ZodExactOptional`,(e,t)=>{ww.init(e,t),Mx(e,`values`,e=>e.def.innerType._zod.values),Mx(e,`pattern`,e=>e.def.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Ew=X(`$ZodNullable`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.innerType._zod.optin),Mx(e,`optout`,e=>e.def.innerType._zod.optout),Mx(e,`pattern`,e=>{let t=e.def.innerType._zod.pattern;return t?RegExp(`^(${Hb(t.source)}|null)$`):void 0}),Mx(e,`values`,e=>e.def.innerType._zod.values?new Set([...e.def.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Dw=X(`$ZodDefault`,(e,t)=>{gC.init(e,t),e._zod.optin=`defaulted`,Mx(e,`values`,e=>e.def.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=>Ow(e,t)):Ow(r,t)}});function Ow(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var kw=X(`$ZodPrefault`,(e,t)=>{gC.init(e,t),e._zod.optin=`defaulted`,Mx(e,`values`,e=>e.def.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))}),Aw=X(`$ZodNonOptional`,(e,t)=>{gC.init(e,t),Mx(e,`values`,e=>{let t=e.def.innerType._zod.values;return t?new Set([...t].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=>jw(t,e)):jw(i,e)}});function jw(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}function Mw(e,t,n,r){return t.issues.length?(e.value=n.catchValue({...t,value:e.value,error:{issues:t.issues.map(e=>vx(e,r,Ux()))},input:e.value}),e):(e.value=t.value,t.memo&&(e.memo=!0),e)}var Nw=X(`$ZodCatch`,(e,t)=>{gC.init(e,t),Mx(e,`optin`,e=>e.def.innerType._zod.optin===`defaulted`?`defaulted`:`optional`),Mx(e,`optout`,e=>e.def.innerType._zod.optout),Mx(e,`values`,e=>e.def.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({value:e.value,issues:[]},n);return r instanceof Promise?r.then(r=>Mw(e,r,t,n)):Mw(e,r,t,n)}}),Pw=X(`$ZodPipe`,(e,t)=>{gC.init(e,t),Mx(e,`values`,e=>e.def.in._zod.values),Mx(e,`optin`,e=>e.def.in._zod.optin),Mx(e,`optout`,e=>e.def.out._zod.optout),Mx(e,`propValues`,e=>e.def.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=>Fw(e,t.in,n)):Fw(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Fw(e,t.out,n)):Fw(r,t.out,n)}});function Fw(e,t,n){return e.issues.some(e=>e.code!==`unrecognized_keys`)?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var Iw=X(`$ZodReadonly`,(e,t)=>{gC.init(e,t),Mx(e,`propValues`,e=>e.def.innerType._zod.propValues),Mx(e,`values`,e=>e.def.innerType._zod.values),Mx(e,`optin`,e=>e.def.innerType?._zod?.optin),Mx(e,`optout`,e=>e.def.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(Lw):Lw(r)}});function Lw(e){return e.memo||(e.value=Object.freeze(e.value)),e}var Rw=X(`$ZodCustom`,(e,t)=>{XS.init(e,t),gC.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=>zw(t,n,r,e));zw(i,n,r,e)}});function zw(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(Cx(e))}}var Bw=class extends Error{constructor(){super(`Cannot parse a reference cycle that closes through a transform`),this.name=`ZodCyclicError`}},Vw=`~memo`,Hw=[];function Uw(e){return e.map(e=>e.path?{...e,path:e.path.slice()}:{...e})}var Ww=new WeakMap;function Gw(e,t){let n=Ww.get(e);if(n!==void 0)return n;if(t.has(e))return!0;t.add(e);let r=!1,i=e=>{!r&&e?._zod&&Gw(e,t)&&(r=!0)},a=e._zod.def;switch(a.type){case`object`:for(let e of Reflect.ownKeys(a.shape))i(a.shape[e]);i(a.catchall);break;case`array`:i(a.element);break;case`tuple`:for(let e of a.items)i(e);i(a.rest);break;case`record`:case`map`:i(a.keyType),i(a.valueType);break;case`set`:i(a.valueType);break;case`union`:for(let e of a.options)i(e);break;case`intersection`:i(a.left),i(a.right);break;case`optional`:case`nullable`:case`default`:case`prefault`:case`catch`:case`readonly`:case`nonoptional`:case`promise`:case`success`:i(a.innerType);break;case`pipe`:i(a.in),i(a.out);break;case`function`:i(a.input),i(a.output);break;case`lazy`:i(e._zod.innerType);break;case`template_literal`:case`string`:case`number`:case`int`:case`boolean`:case`bigint`:case`symbol`:case`undefined`:case`null`:case`void`:case`never`:case`any`:case`unknown`:case`date`:case`nan`:case`enum`:case`literal`:case`file`:case`transform`:case`custom`:break;default:for(let e in a){let t=Object.getOwnPropertyDescriptor(a,e);if(!t||t.get)continue;let n=t.value;if(!(!n||typeof n!=`object`)){if(n._zod)i(n);else if(Array.isArray(n))for(let e of n)i(e)}}}return t.delete(e),Ww.set(e,r),r}function Kw(e,t){let n=e.buckets.get(t);return n||(n=new Map,e.buckets.set(t,n)),n}var qw,Jw=[],Yw={alloc(e,t,n){let r=qw;if(!r)return n;qw=void 0;let i={value:n,issues:null};return r.set(t.value,i),Jw.push(i),n},guard(e){var t;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,n=(e,n)=>{if(n.direction!==`backward`&&Zw(n,e.value))throw new Bw;return t(e,n)};e._zod.parse=n,e._zod.run===t&&(e._zod.run=n)})},attach(e){var t;let n,r,i;(t=e._zod).deferred??(t.deferred=[]),e._zod.deferred.push(()=>{let t=e._zod.parse,a=(o,s)=>{if(n===void 0&&(n=Gw(e,new Set),!n))return e._zod.parse=t,e._zod.run===a&&(e._zod.run=t),t(o,s);let c=o.value;if(typeof c!=`object`||!c)return t(o,s);let l=s[Vw];l||(l={buckets:new Map,backEdges:void 0},s[Vw]=l);let u;r===s?u=i:(u=Kw(l,e),r=s,i=u);let d=u.get(c);if(d)return o.value=d.value,d.issues?d.issues.length&&o.issues.push(...Uw(d.issues)):(o.memo=!0,l.backEdges??(l.backEdges=new Set),l.backEdges.add(d.value)),o;qw=u;let f=Jw.length,p=t(o,s);qw=void 0;let m=Jw.length>f?Jw.pop():void 0;return p instanceof Promise?p.then(e=>(m&&(m.issues=e.issues.length?Uw(e.issues):Hw),e)):(m&&(m.issues=p.issues.length?Uw(p.issues):Hw),p)};e._zod.parse=a,e._zod.run===t&&(e._zod.run=a)})}};function Xw(){return Yw}function Zw(e,t){let n=e[Vw]?.backEdges;return n!==void 0&&typeof t==`object`&&!!t&&n.has(t)}var Qw=()=>{let e={string:{unit:`characters`,verb:`to have`},file:{unit:`bytes`,verb:`to have`},array:{unit:`items`,verb:`to have`},set:{unit:`items`,verb:`to have`},map:{unit:`entries`,verb:`to have`}};function t(t){return e[t]??null}let n={regex:`input`,email:`email address`,url:`URL`,emoji:`emoji`,uuid:`UUID`,uuidv4:`UUIDv4`,uuidv6:`UUIDv6`,nanoid:`nanoid`,guid:`GUID`,cuid:`cuid`,cuid2:`cuid2`,ulid:`ULID`,xid:`XID`,ksuid:`KSUID`,datetime:`ISO datetime`,date:`ISO date`,time:`ISO time`,duration:`ISO duration`,ipv4:`IPv4 address`,ipv6:`IPv6 address`,mac:`MAC address`,cidrv4:`IPv4 range`,cidrv6:`IPv6 range`,base64:`base64-encoded string`,base64url:`base64url-encoded string`,json_string:`JSON string`,e164:`E.164 number`,credit_card:`credit card number`,jwt:`JWT`,template_literal:`input`},r={nan:`NaN`};function i(e,t){return e===`number`&&typeof t==`number`&&!Number.isFinite(t)?String(t):r[e]??e}return e=>{switch(e.code){case`invalid_type`:return`Invalid input: expected ${i(e.expected)}, received ${i(Sx(e.input),e.input)}`;case`invalid_value`:return e.values.length===1?`Invalid input: expected ${rx(e.values[0])}`:`Invalid option: expected one of ${Rb(e.values,`|`)}`;case`too_big`:{let n=e.exact?`exactly `:e.inclusive?`<=`:`<`,r=t(e.origin);return r?`Too big: expected ${e.origin??`value`} to have ${n}${e.maximum.toString()} ${r.unit??`elements`}`:`Too big: expected ${e.origin??`value`} to be ${n}${e.maximum.toString()}`}case`too_small`:{let n=e.exact?`exactly `:e.inclusive?`>=`:`>`,r=t(e.origin);return r?`Too small: expected ${e.origin} to have ${n}${e.minimum.toString()} ${r.unit}`:`Too small: expected ${e.origin} to be ${n}${e.minimum.toString()}`}case`invalid_format`:{let t=e;return t.format===`starts_with`?`Invalid string: must start with "${t.prefix}"`:t.format===`ends_with`?`Invalid string: must end with "${t.suffix}"`:t.format===`includes`?`Invalid string: must include "${t.includes}"`:t.format===`regex`?`Invalid string: must match pattern ${t.pattern}`:`Invalid ${n[t.format]??e.format}`}case`not_multiple_of`:return`Invalid number: must be a multiple of ${e.divisor}`;case`unrecognized_keys`:return`Unrecognized key${e.keys.length>1?`s`:``}: ${Rb(e.keys,`, `)}`;case`invalid_key`:return`Invalid key in ${e.origin}`;case`invalid_union`:return e.options&&Array.isArray(e.options)&&e.options.length>0?`Invalid discriminator value. Expected ${e.options.map(e=>`'${e}'`).join(` | `)}`:e.inclusive===!1?`Invalid input: more than one option matched`:`Invalid input`;case`invalid_element`:return`Invalid value in ${e.origin}`;default:return`Invalid input`}}};function $w(){return{localeError:Qw()}}var eT,tT=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 nT(){return new tT}(eT=globalThis).__zod_globalRegistry??(eT.__zod_globalRegistry=nT());var rT=globalThis.__zod_globalRegistry;function iT(e,t){return new e({type:`string`,...nx(t)})}function aT(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...nx(t)})}function oT(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...nx(t)})}function sT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...nx(t)})}function cT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...nx(t)})}function lT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...nx(t)})}function uT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...nx(t)})}function dT(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...nx(t)})}function fT(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...nx(t)})}function pT(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...nx(t)})}function mT(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...nx(t)})}function hT(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...nx(t)})}function gT(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...nx(t)})}function _T(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...nx(t)})}function vT(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...nx(t)})}function yT(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...nx(t)})}function bT(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...nx(t)})}function xT(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...nx(t)})}function ST(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...nx(t)})}function CT(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...nx(t)})}function wT(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...nx(t)})}function TT(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...nx(t)})}function ET(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...nx(t)})}function DT(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...nx(t)})}function OT(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...nx(t)})}function kT(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...nx(t)})}function AT(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...nx(t)})}function jT(e,t){return new e({type:`number`,coerce:!0,checks:[],...nx(t)})}function MT(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...nx(t)})}function NT(e,t){return new e({type:`boolean`,...nx(t)})}function PT(e){return new e({type:`unknown`})}function FT(e,t){return new e({type:`never`,...nx(t)})}function IT(e,t){return new $S({check:`less_than`,...nx(t),value:e,inclusive:!1})}function LT(e,t){return new $S({check:`less_than`,...nx(t),value:e,inclusive:!0})}function RT(e,t){return new eC({check:`greater_than`,...nx(t),value:e,inclusive:!1})}function zT(e,t){return new eC({check:`greater_than`,...nx(t),value:e,inclusive:!0})}function BT(e,t){return new tC({check:`multiple_of`,...nx(t),value:e})}function VT(e,t){return new rC({check:`max_length`,...nx(t),maximum:e})}function HT(e,t){return new iC({check:`min_length`,...nx(t),minimum:e})}function UT(e,t){return new aC({check:`length_equals`,...nx(t),length:e})}function WT(e,t){return new sC({check:`string_format`,format:`regex`,...nx(t),pattern:e})}function GT(e){return new cC({check:`string_format`,format:`lowercase`,...nx(e)})}function KT(e){return new lC({check:`string_format`,format:`uppercase`,...nx(e)})}function qT(e,t){return new uC({check:`string_format`,format:`includes`,...nx(t),includes:e})}function JT(e,t){return new dC({check:`string_format`,format:`starts_with`,...nx(t),prefix:e})}function YT(e,t){return new fC({check:`string_format`,format:`ends_with`,...nx(t),suffix:e})}function XT(e){return new pC({check:`overwrite`,tx:e})}function ZT(e){return XT(t=>t.normalize(e))}function QT(){return XT(e=>e.trim())}function $T(){return XT(e=>e.toLowerCase())}function eE(){return XT(e=>e.toUpperCase())}function tE(){return XT(e=>qb(e))}function nE(e,t,n){return new e({type:`array`,element:t,...nx(n)})}function rE(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...nx(n)})}function iE(e,t){let n=aE(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Cx(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,`input`in r||(r.input=t.value),r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Cx(r))}},e(t.value,t)),t);return n}function aE(e,t){let n=new XS({check:`custom`,...nx(t)});return n._zod.check=e,n}function oE(e,...t){for(let n of t)for(let t of Reflect.ownKeys(n))Object.prototype.propertyIsEnumerable.call(n,t)&&Wb(e,t,n[t]);return e}function sE(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??rT,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,sharedDefsExtractedFor:void 0,sharedEmitDoneFor:void 0,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,intersections:[],deferred:[],external:e?.external??void 0}}function cE(e,t,n,r,i){let a=typeof t.unrepresentable==`function`?t.unrepresentable({zodSchema:e,path:r.path,message:i}):t.unrepresentable;if(a===`any`)return!1;if(a===void 0||a===`throw`)throw Error(i);return Object.assign(n,a),!0}function lE(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),t.sharedDefsExtractedFor=void 0,t.sharedEmitDoneFor=void 0;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,lE(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&oE(o.schema,c),t.io===`input`&&yE(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 uE(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}function dE(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);if(e.external&&e.sharedDefsExtractedFor===e.external)return;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}/${uE(a)}`}}let i=`#/${r}/`;if(t[1]===n&&!t[1].schema.id)return{ref:`#`};let a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+uE(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(`/`)}/ + `)}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}}e.external&&(e.sharedDefsExtractedFor=e.external)}function fE(e){let t=e.anyOf;if(!Array.isArray(t)||t.length===0||e.type!==void 0)return;let n=[];for(let e of t){if(!e||typeof e!=`object`)return;fE(e);let t=Object.keys(e);if(t.length!==1||t[0]!==`type`)return;let r=e.type;for(let e of Array.isArray(r)?r:[r]){if(typeof e!=`string`)return;n.includes(e)||n.push(e)}}delete e.anyOf,e.type=n.length===1?n[0]:n}var pE=new Set([`type`,`properties`,`required`,`additionalProperties`]),mE=[`oneOf`,`anyOf`];function hE(e){let t=e.additionalProperties;return t===void 0||t===!1||typeof t!=`object`||!t?null:Object.keys(t).length?t:null}function gE(e){let t=[];for(let n of e){if(typeof n!=`object`||n.type!==`object`)return null;for(let e in n)if(!pE.has(e))return null;t.push(n)}let n={},r=new Set;for(let e of t){for(let r in e.properties){if(Object.prototype.hasOwnProperty.call(n,r))continue;let e=[];for(let n of t){let t=n.properties?.[r]??hE(n);t!=null&&(e.some(e=>JSON.stringify(e)===JSON.stringify(t))||e.push(t))}Wb(n,r,e.length===1?e[0]:gE(e)??{allOf:e})}for(let t of e.required??[])r.add(t)}let i={type:`object`,properties:n};if(r.size&&(i.required=[...r]),t.every(e=>e.additionalProperties===!1))i.additionalProperties=!1;else{let e=[];for(let n of t){let t=hE(n);t&&!e.some(e=>JSON.stringify(e)===JSON.stringify(t))&&e.push(t)}e.length===1?i.additionalProperties=e[0]:e.length>1&&(i.additionalProperties={allOf:e})}return i}function _E(e){let t=e.allOf;if(!Array.isArray(t)||t.length<2)return;for(let t of pE)if(t in e)return;let n=t.filter(e=>mE.some(t=>Array.isArray(e[t]))),r=null;if(!n.length)r=gE(t);else{let e=n[0],i=mE.find(t=>Array.isArray(e[t]));if(Object.keys(e).length!==1)return;let a=t.filter(t=>t!==e),o=e[i].map(e=>gE([...a,e]));if(o.some(e=>!e))return;r={[i]:o}}r&&(delete e.allOf,oE(e,r))}function vE(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)):oE(i,s),oE(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??[]})};if(!e.external||e.sharedEmitDoneFor!==e.external){for(let t of[...e.seen.entries()].reverse())r(t[0]);if(e.target!==`openapi-3.0`)for(let t of e.seen.entries())fE(t[1].def??t[1].schema);for(let t of e.deferred)t();if(e.intersections.length){let t=new Map;for(let n of e.seen.values())for(let e of[n.schema,n.def]){let n=e?.allOf;if(!Array.isArray(n))continue;let r=t.get(n);r?r.push(e):t.set(n,[e])}for(let n of e.intersections)for(let e of t.get(n)??[])_E(e)}}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)}oE(i,n.defId?n.schema: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??{};if(!e.external||e.sharedEmitDoneFor!==e.external)for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,Wb(o,e.defId,e.def))}e.external&&(e.sharedEmitDoneFor=e.external),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:xE(t,`input`,e.processors),output:xE(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function yE(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 yE(r.element,n);if(r.type===`set`)return yE(r.valueType,n);if(r.type===`lazy`)return yE(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`||r.type===`catch`)return yE(r.innerType,n);if(r.type===`intersection`)return yE(r.left,n)||yE(r.right,n);if(r.type===`record`||r.type===`map`)return yE(r.keyType,n)||yE(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:yE(r.in,n)||yE(r.out,n);if(r.type===`object`){for(let e in r.shape)if(yE(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(yE(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(yE(e,n))return!0;return!!(r.rest&&yE(r.rest,n))}return!1}var bE=(e,t={})=>n=>{let r=sE({...n,processors:t});return lE(e,r),dE(r,e),vE(r,e)},xE=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=sE({...i??{},target:a,io:t,processors:n});return lE(e,o),dE(o,e),vE(o,e)},SE={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},CE=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l,laxFormat:u}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=SE[s]??s,i.format===``&&delete i.format,(s===`time`||u)&&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}))])}},wE=(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`&&(Number.isFinite(c)&&c!==0?i.multipleOf=Math.abs(c):cE(e,t,i,r,`A multipleOf divisor of ${c} cannot be represented in JSON Schema`))},TE=(e,t,n,r)=>{n.type=`boolean`},EE=(e,t,n,r)=>{n.not={}},DE=(e,t,n,r)=>{let i=e._zod.def,a=Lb(i.entries);if(a.length===0){n.not={};return}a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},OE=(e,t,n,r)=>{let i=e._zod.def;if(i.values.length===0){n.not={};return}let a=[];for(let o of i.values)if(o===void 0){if(cE(e,t,n,r,"Literal `undefined` cannot be represented in JSON Schema"))return}else if(typeof o==`bigint`){if(cE(e,t,n,r,`BigInt literals cannot be represented in JSON Schema`))return;a.push(Number(o))}else a.push(o);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}},kE=(e,t,n,r)=>{cE(e,t,n,r,`Custom types cannot be represented in JSON Schema`)},AE=(e,t,n,r)=>{cE(e,t,n,r,`Transforms cannot be represented in JSON Schema`)},jE=(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=lE(a.element,t,{...r,path:[...r.path,`items`]})};function ME(e){let t=e._zod.def;return t.type===`pipe`&&t.in._zod.traits.has(`$ZodTransform`)?ME(t.out):t.type===`catch`?ME(t.innerType):e._zod.optin}var NE=(e,t,n,r)=>{let i=n,a=e._zod.def,o=a.shape;if(Object.getOwnPropertySymbols(o).length&&cE(e,t,i,r,`Symbol keys cannot be represented in JSON Schema`))return;i.type=`object`,i.properties={};for(let e in o)Wb(i.properties,e,lE(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];return t.io===`input`?ME(n)===void 0:n._zod.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=lE(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},PE=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>lE(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},FE=(e,t,n,r)=>{let i=e._zod.def,a=lE(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=lE(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1,c=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]];n.allOf=c,t.intersections.push(c)},IE=(e,t,n,r)=>{let i=e._zod.def,a=lE(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`}]},LE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},RE=Symbol();function zE(e,t,n,r,i){let a=!1,o=JSON.stringify(e,(e,t)=>typeof t==`bigint`?(a=!0,null):t);return a?(cE(t,n,r,i,`BigInt defaults cannot be represented in JSON Schema`),RE):JSON.parse(o)}var BE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o=zE(i.defaultValue,e,t,n,r);o!==RE&&(n.default=o)},VE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);if(a.ref=i.innerType,t.io!==`input`)return;let o=zE(i.defaultValue,e,t,n,r);o!==RE&&(n._prefault=o)},HE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{cE(e,t,n,r,`Dynamic catch values are not supported in JSON Schema`);return}n.default=o},UE=(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;lE(o,t,r);let s=t.seen.get(e);s.ref=o},WE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},GE=(e,t,n,r)=>{let i=e._zod.def;lE(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},KE=new WeakSet([Object.prototype,Error.prototype]);function qE(e,t,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!1,get(){let e=n(this);return Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0}),e},set(e){Object.defineProperty(this,t,{value:e,configurable:!0,writable:!0})}})}var JE=X(`ZodError`,(e,t)=>{Zx.init(e,t),e.name=`ZodError`;let n=Object.getPrototypeOf(e);KE.has(n)||(KE.add(n),qE(n,`format`,e=>t=>tS(e,t)),qE(n,`flatten`,e=>t=>eS(e,t)),qE(n,`addIssue`,e=>t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,zb,2)}),qE(n,`addIssues`,e=>t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,zb,2)}),Object.defineProperty(n,"isEmpty",{configurable:!0,enumerable:!1,get(){return this.issues.length===0}}))},void 0,{Parent:Error}),YE=rS(JE),XE=iS(JE),ZE=aS(JE),QE=sS(JE),$E=lS(JE),eD=uS(JE),tD=dS(JE),nD=fS(JE),rD=pS(JE),iD=mS(JE),aD=hS(JE),oD=gS(JE);function sD(){Hx.localeError||Ux($w())}function cD(){Hx.memoizer||Ux({memoizer:Xw()})}var lD=X(`ZodType`,(e,t)=>(sD(),gC.init(e,t),e.def=t,e.type=t.type,e),{check(...e){let t=this.def;return this.clone(Gb(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 tx(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(EO(e,t))},superRefine(e,t){return this.check(DO(e,t))},overwrite(e){return this.check(XT(e))},optional(){return cO(this)},exactOptional(){return uO(this)},nullable(){return fO(this)},nullish(){return cO(fO(this))},nonoptional(e){return vO(this,e)},array(){return JD(this)},or(e){return QD([this,e])},and(e){return eO(this,e)},transform(e){return SO(this,oO(e))},default(e){return mO(this,e)},prefault(e){return gO(this,e)},catch(e){return bO(this,e)},pipe(e){return SO(this,e)},readonly(){return wO(this)},describe(e){let t=this.clone();return rT.add(t,{description:e}),t},meta(...e){if(e.length===0)return rT.get(this);let t=this.clone();return rT.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e,...t){return t.length===0?e(this):e(this,...t)},get"~standard"(){return Ex(this,`~standard`,{...vC(this),jsonSchema:{input:xE(this,`input`),output:xE(this,`output`)}})},set"~standard"(e){Tx(this,`~standard`,e)},parse:function e(t,n){return YE(this,t,n,{callee:e})},parseAsync:async function e(t,n){return await XE(this,t,n,{callee:e})},safeParse(e,t){return ZE(this,e,t)},async safeParseAsync(e,t){return QE(this,e,t)},get spa(){return this?.safeParseAsync},set spa(e){Tx(this,`spa`,e)},encode:function e(t,n){return $E(this,t,n,{callee:e})},decode:function e(t,n){return eD(this,t,n,{callee:e})},encodeAsync:async function e(t,n){return await tD(this,t,n,{callee:e})},decodeAsync:async function e(t,n){return await nD(this,t,n,{callee:e})},safeEncode(e,t){return rD(this,e,t)},safeDecode(e,t){return iD(this,e,t)},async safeEncodeAsync(e,t){return aD(this,e,t)},async safeDecodeAsync(e,t){return oD(this,e,t)},toJSONSchema(e){return bE(this,{})(e)},get description(){return rT.get(this)?.description},get _def(){return this._zod.def}}),uD=X(`_ZodString`,(e,t)=>{yC.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>CE(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null},{regex(...e){return this.check(WT(...e))},includes(...e){return this.check(qT(...e))},startsWith(...e){return this.check(JT(...e))},endsWith(...e){return this.check(YT(...e))},min(...e){return this.check(HT(...e))},max(...e){return this.check(VT(...e))},length(...e){return this.check(UT(...e))},nonempty(...e){return this.check(HT(1,...e))},lowercase(e){return this.check(GT(e))},uppercase(e){return this.check(KT(e))},trim(){return this.check(QT())},normalize(...e){return this.check(ZT(...e))},toLowerCase(){return this.check($T())},toUpperCase(){return this.check(eE())},slugify(){return this.check(tE())}}),dD=X(`ZodString`,(e,t)=>{yC.init(e,t),uD.init(e,t)},{email(e){return this.check(aT(vD,e))},url(e){return this.check(dT(xD,e))},jwt(e){return this.check(ET(LD,e))},emoji(e){return this.check(fT(CD,e))},guid(e){return this.check(oT(yD,e))},uuid(e){return this.check(sT(bD,e))},uuidv4(e){return this.check(cT(bD,e))},uuidv6(e){return this.check(lT(bD,e))},uuidv7(e){return this.check(uT(bD,e))},nanoid(e){return this.check(pT(wD,e))},cuid(e){return this.check(mT(TD,e))},cuid2(e){return this.check(hT(ED,e))},ulid(e){return this.check(gT(DD,e))},base64(e){return this.check(CT(PD,e))},base64url(e){return this.check(wT(FD,e))},xid(e){return this.check(_T(OD,e))},ksuid(e){return this.check(vT(kD,e))},ipv4(e){return this.check(yT(AD,e))},ipv6(e){return this.check(bT(jD,e))},cidrv4(e){return this.check(xT(MD,e))},cidrv6(e){return this.check(ST(ND,e))},e164(e){return this.check(TT(ID,e))},datetime(e){return this.check(DT(mD,e))},date(e){return this.check(OT(hD,e))},time(e){return this.check(kT(gD,e))},duration(e){return this.check(AT(_D,e))}});function fD(e){return iT(dD,e)}var pD=X(`ZodStringFormat`,(e,t)=>{bC.init(e,t),uD.init(e,t)}),mD=X(`ZodISODateTime`,(e,t)=>{LC.init(e,t),pD.init(e,t)}),hD=X(`ZodISODate`,(e,t)=>{RC.init(e,t),pD.init(e,t)}),gD=X(`ZodISOTime`,(e,t)=>{zC.init(e,t),pD.init(e,t)}),_D=X(`ZodISODuration`,(e,t)=>{BC.init(e,t),pD.init(e,t)}),vD=X(`ZodEmail`,(e,t)=>{CC.init(e,t),pD.init(e,t)}),yD=X(`ZodGUID`,(e,t)=>{xC.init(e,t),pD.init(e,t)}),bD=X(`ZodUUID`,(e,t)=>{SC.init(e,t),pD.init(e,t)}),xD=X(`ZodURL`,(e,t)=>{kC.init(e,t),pD.init(e,t)});function SD(e){return dT(xD,e)}var CD=X(`ZodEmoji`,(e,t)=>{AC.init(e,t),pD.init(e,t)}),wD=X(`ZodNanoID`,(e,t)=>{jC.init(e,t),pD.init(e,t)}),TD=X(`ZodCUID`,(e,t)=>{MC.init(e,t),pD.init(e,t)}),ED=X(`ZodCUID2`,(e,t)=>{NC.init(e,t),pD.init(e,t)}),DD=X(`ZodULID`,(e,t)=>{PC.init(e,t),pD.init(e,t)}),OD=X(`ZodXID`,(e,t)=>{FC.init(e,t),pD.init(e,t)}),kD=X(`ZodKSUID`,(e,t)=>{IC.init(e,t),pD.init(e,t)}),AD=X(`ZodIPv4`,(e,t)=>{VC.init(e,t),pD.init(e,t)}),jD=X(`ZodIPv6`,(e,t)=>{WC.init(e,t),pD.init(e,t)}),MD=X(`ZodCIDRv4`,(e,t)=>{GC.init(e,t),pD.init(e,t)}),ND=X(`ZodCIDRv6`,(e,t)=>{qC.init(e,t),pD.init(e,t)}),PD=X(`ZodBase64`,(e,t)=>{YC.init(e,t),pD.init(e,t)}),FD=X(`ZodBase64URL`,(e,t)=>{ZC.init(e,t),pD.init(e,t)}),ID=X(`ZodE164`,(e,t)=>{QC.init(e,t),pD.init(e,t)}),LD=X(`ZodJWT`,(e,t)=>{ew.init(e,t),pD.init(e,t)}),RD=X(`ZodNumber`,(e,t)=>{tw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wE(e,t,n,r);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},{gt(e,t){return this.check(RT(e,t))},gte(e,t){return this.check(zT(e,t))},min(e,t){return this.check(zT(e,t))},lt(e,t){return this.check(IT(e,t))},lte(e,t){return this.check(LT(e,t))},max(e,t){return this.check(LT(e,t))},int(e){return this.check(BD(e))},safe(e){return this.check(BD(e))},positive(e){return this.check(RT(0,e))},nonnegative(e){return this.check(zT(0,e))},negative(e){return this.check(IT(0,e))},nonpositive(e){return this.check(LT(0,e))},multipleOf(e,t){return this.check(BT(e,t))},step(e,t){return this.check(BT(e,t))},finite(){return this}}),zD=X(`ZodNumberFormat`,(e,t)=>{nw.init(e,t),RD.init(e,t)});function BD(e){return MT(zD,e)}var VD=X(`ZodBoolean`,(e,t)=>{rw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>TE(e,t,n,r)});function HD(e){return NT(VD,e)}var UD=X(`ZodUnknown`,(e,t)=>{iw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function WD(){return PT(UD)}var GD=X(`ZodNever`,(e,t)=>{aw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>EE(e,t,n,r)});function KD(e){return FT(GD,e)}var qD=X(`ZodArray`,(e,t)=>{cD(),sw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jE(e,t,n,r),e.element=t.element},{min(e,t){return this.check(HT(e,t))},nonempty(e){return this.check(HT(1,e))},max(e,t){return this.check(VT(e,t))},length(e,t){return this.check(UT(e,t))},unwrap(){return this.element}});function JD(e,t){return nE(qD,e,t)}var YD=X(`ZodObject`,(e,t)=>{cD(),mw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>NE(e,t,n,r),Nx(e,`shape`,e=>e._zod.def.shape,!1)},{keyof(){return nO(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:WD()})},loose(){return this.clone({...this._zod.def,catchall:WD()})},strict(){return this.clone({...this._zod.def,catchall:KD()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return cx(this,e)},safeExtend(e){return lx(this,e)},merge(e){return ux(this,e)},pick(e){return ox(this,e)},omit(e){return sx(this,e)},partial(...e){return dx(sO,this,e[0])},exactPartial(...e){return dx(lO,this,e[0],`exactPartial`)},required(...e){return fx(_O,this,e[0])}});function XD(e,t){return new YD({type:`object`,shape:e??{},...nx(t)})}var ZD=X(`ZodUnion`,(e,t)=>{gw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>PE(e,t,n,r),e.options=t.options});function QD(e,t){return new ZD({type:`union`,options:e,...nx(t)})}var $D=X(`ZodIntersection`,(e,t)=>{_w.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>FE(e,t,n,r)});function eO(e,t){return new $D({type:`intersection`,left:e,right:t})}var tO=X(`ZodEnum`,(e,t)=>{bw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>DE(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 tO({...t,checks:[],...nx(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 tO({...t,checks:[],...nx(r),entries:i})}});function nO(e,t){return new tO({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...nx(t)})}var rO=X(`ZodLiteral`,(e,t)=>{xw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>OE(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 iO(e,t){return new rO({type:`literal`,values:Array.isArray(e)?e:[e],...nx(t)})}var aO=X(`ZodTransform`,(e,t)=>{cD(),Sw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>AE(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new Vx(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Cx(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,`input`in t||(t.input=n.value),t.inst??=e,n.issues.push(Cx(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function oO(e){return new aO({type:`transform`,transform:e})}var sO=X(`ZodOptional`,(e,t)=>{ww.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>GE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function cO(e){return new sO({type:`optional`,innerType:e})}var lO=X(`ZodExactOptional`,(e,t)=>{Tw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>GE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function uO(e){return new lO({type:`optional`,innerType:e})}var dO=X(`ZodNullable`,(e,t)=>{Ew.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>IE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function fO(e){return new dO({type:`nullable`,innerType:e})}var pO=X(`ZodDefault`,(e,t)=>{Dw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>BE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function mO(e,t){return new pO({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():Qb(t)}})}var hO=X(`ZodPrefault`,(e,t)=>{kw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>VE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function gO(e,t){return new hO({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():Qb(t)}})}var _O=X(`ZodNonOptional`,(e,t)=>{Aw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>LE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function vO(e,t){return new _O({type:`nonoptional`,innerType:e,...nx(t)})}var yO=X(`ZodCatch`,(e,t)=>{Nw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>HE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function bO(e,t){return new yO({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:Fx(t)})}var xO=X(`ZodPipe`,(e,t)=>{Pw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>UE(e,t,n,r),e.in=t.in,e.out=t.out});function SO(e,t){return new xO({type:`pipe`,in:e,out:t})}var CO=X(`ZodReadonly`,(e,t)=>{Iw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>WE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function wO(e){return new CO({type:`readonly`,innerType:e})}var TO=X(`ZodCustom`,(e,t)=>{Rw.init(e,t),lD.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kE(e,t,n,r)});function EO(e,t={}){return rE(TO,e,t)}function DO(e,t){return iE(e,t)}function OO(e){return jT(RD,e)}var kO=fD().trim().min(1,`请填写 Agent 名称`).max(128,`Agent 名称不能超过 128 个字符`),AO=fD().trim().min(3,`本地标识至少填写 3 个字符`).max(63,`本地标识不能超过 63 个字符`).regex(/^[a-z][a-z0-9-]*$/,`本地标识只能包含小写字母、数字和连字符`),jO=QD([iO(``),AO]),MO=nO([`codex`,`adk`,`langgraph`,`plugin`]),NO=nO([`codex`,`adk`,`langgraph`]),PO=fD().trim().min(4,`系统提示词至少填写 4 个字符`).max(32768,`系统提示词不能超过 32768 个字符`),FO=fD().trim().min(4,`Agent 目标与要求至少填写 4 个字符`).max(32768,`Agent 目标与要求不能超过 32768 个字符`),IO=fD().trim().max(1024,`描述不能超过 1024 个字符`).default(``),LO=XD({name:kO,slug:AO,runtimeType:MO,template:nO([`blank`,`research`]).default(`blank`),prompt:FO,description:IO,audience:fD().trim().max(256,`目标读者不能超过 256 个字符`).default(``),language:nO([`zh-CN`,`en-US`]).default(`zh-CN`),depth:nO([`focused`,`standard`,`deep`]).default(`deep`),format:nO([`report`,`brief`,`evidence-table`]).default(`report`),systemPrompt:fD().trim().min(4,`最终系统规则至少填写 4 个字符`).max(32768,`最终系统规则不能超过 32768 个字符`).default(``),taskPrompt:fD().max(32768,`任务契约不能超过 32768 个字符`).default(``),buildAfterCreate:HD().default(!0)}).superRefine((e,t)=>{e.template===`research`&&!e.audience&&t.addIssue({code:`custom`,path:[`audience`],message:`请填写目标读者`})}),RO=XD({name:kO,slug:AO,runtimeType:MO,prompt:PO,description:IO}),zO=XD({name:kO,slug:AO,runtimeType:NO,prompt:PO,description:IO.optional(),modelProfileId:fD().trim().min(3,`请选择用于构建的模型`).max(256).optional()}),BO=XD({name:kO,slug:jO.default(``)}),VO=XD({name:kO,slug:jO.default(``),path:fD().trim().min(1,`请选择项目目录`).max(4096,`项目路径不能超过 4096 个字符`)}),HO=/(?:secret|password|token|api[_-]?key)/i,UO=[`secret://`,`env://`,`credential://`,`vault://`];function WO(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 GO(r,`providerConfig`,[],i),r}function GO(e,t,n,r){if(Array.isArray(e)){e.forEach((e,i)=>GO(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((HO.test(e)||c)&&i!==null&&(typeof i!=`string`||!UO.some(e=>i.startsWith(e))))throw Error(`${a} 只能填写 Secret 引用,不能填写明文`);GO(i,a,o,r)})}function KO(e){let t=e.selectable?`已启用`:e.reason?.message||`不可用`;return`${e.pluginId}@${e.resolvedVersion} · ${t}`}var qO=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function JO(e){return e?.contract?.model||e?.name||``}function YO(e){return e===`adk`?`ADKRuntimeAdapter`:e===`langgraph`?`LangGraphRuntimeAdapter`:e===`plugin`?`External AgentProvider`:`CodexRuntimeAdapter`}function XO(e){return e===`codex`?{type:`codex`}:{type:e,projectPath:`.`,entryPoint:e===`adk`?`agent.py`:`graph.py`,agentVariable:e===`adk`?`root_agent`:`app`}}function ZO(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 QO(e,t){let n=new Map((e||[]).map(e=>[e.resourceId,e]));return t.map(e=>n.get(e)||{resourceId:e,enabled:!0})}function $O(e){return e.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)}async function ek(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(qO.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 tk({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=S_({resolver:M_(RO),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)(()=>ZO(Ye,b,`model`),[Ye,b]),et=(0,s.useMemo)(()=>ZO(Xe,S,`skill`),[Xe,S]),tt=(0,s.useMemo)(()=>ZO(Ze,w,`mcp`),[Ze,w]),nt=(0,s.useMemo)(()=>ZO(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:KO(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(` +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=>JO(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(JO).filter(Boolean),mt=ue?[` soul:`,` schemaVersion: agentkit.soul/v1`,` identity: |-`,...W.split(` -`).map(e=>` ${e}`),...$O(me).length?[` principles:`,...$O(me).map(e=>` - ${e}`)]:[],...$O(ge).length?[` boundaries:`,...$O(ge).map(e=>` - ${e}`)]:[],...ve.trim()?[` tone: |-`,...ve.split(` +`)),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}`),...$O(me).length?[` principles:`,...$O(me).map(e=>` - ${e}`)]:[],...$O(ge).length?[` boundaries:`,...$O(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: ${JO(ct)||ut}`,...pt.length>1?[`models:`,...pt.map(e=>` - ${e}`)]:[],...ht,`prompt: |-`,..._.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=WO(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}:{...XO(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:$O(me),boundaries:$O(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:QO(a.bindings?.skills,S),mcpServers:QO(a.bindings?.mcpServers,w),tools:QO(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(Ib(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 ek(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:YO(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)(gv,{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)(Ih,{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)(Ih,{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)(Ih,{id:`editDefaultModel`,ariaLabel:`默认模型`,value:v,placeholder:ut||`请先绑定模型`,disabled:!rt.length,options:rt.map(e=>({value:e.resourceId,label:e.displayName,description:JO(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)(Ob,{ariaLabel:`选择绑定模型`,items:$e,selectedIds:b,getId:e=>e.resourceId,getLabel:e=>e.displayName,getDescription:e=>`${JO(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)(Ob,{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)(Ob,{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)(Ob,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Ih,{id:`editContextOwnership`,ariaLabel:`上下文管理方式`,value:oe,options:lt,onValueChange:se})}),(0,G.jsx)(Y,{label:`上下文优化`,requirement:`optional`,htmlFor:`editContextEngineRollout`,hint:`仅观察只生成诊断证据;正式启用会执行预算、压缩和降载。`,children:(0,G.jsx)(Ih,{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)(Ab,{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 nk({title:e,subtitle:t,wide:n=!1,closeDisabled:r=!1,onClose:i,footer:a,children:o}){return(0,G.jsx)(Da,{open:!0,onOpenChange:e=>{e||i()},title:e,subtitle:t,wide:n,closeDisabled:r,footer:a,children:o})}function rk({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 ik(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var ak=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ok=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,sk={};function ck(e,t){return((t||sk).jsx?ok:ak).test(e)}var lk=/[ \t\n\f\r]/g;function uk(e){return typeof e==`object`?e.type===`text`&&dk(e.value):dk(e)}function dk(e){return e.replace(lk,``)===``}var fk=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};fk.prototype.normal={},fk.prototype.property={},fk.prototype.space=void 0;function pk(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new fk(n,r,t)}function mk(e){return e.toLowerCase()}var hk=class{constructor(e,t){this.attribute=t,this.property=e}};hk.prototype.attribute=``,hk.prototype.booleanish=!1,hk.prototype.boolean=!1,hk.prototype.commaOrSpaceSeparated=!1,hk.prototype.commaSeparated=!1,hk.prototype.defined=!1,hk.prototype.mustUseProperty=!1,hk.prototype.number=!1,hk.prototype.overloadedBoolean=!1,hk.prototype.property=``,hk.prototype.spaceSeparated=!1,hk.prototype.space=void 0;var gk=e({boolean:()=>vk,booleanish:()=>yk,commaOrSpaceSeparated:()=>Ck,commaSeparated:()=>Sk,number:()=>Z,overloadedBoolean:()=>bk,spaceSeparated:()=>xk}),_k=0,vk=wk(),yk=wk(),bk=wk(),Z=wk(),xk=wk(),Sk=wk(),Ck=wk();function wk(){return 2**++_k}var Tk=Object.keys(gk),Ek=class extends hk{constructor(e,t,n,r){let i=-1;if(super(e,t),Dk(this,`space`,r),typeof n==`number`)for(;++i4&&n.slice(0,4)===`data`&&Bk.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(zk,Uk);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!zk.test(e)){let n=e.replace(Rk,Hk);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=Ek}return new i(r,t)}function Hk(e){return`-`+e.toLowerCase()}function Uk(e){return e.charAt(1).toUpperCase()}var Wk=pk([kk,Mk,Pk,Fk,Ik],`html`),Gk=pk([kk,Nk,Pk,Fk,Ik],`svg`);function Kk(e){return e.join(` `).trim()}var qk=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})),Jk=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(qk());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}})),Yk=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))}})),Xk=n(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(Jk()),r=Yk();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})),Zk=$k(`end`),Qk=$k(`start`);function $k(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 eA(e){let t=Qk(e),n=Zk(e);if(t&&n)return{start:t,end:n}}function tA(e){return!e||typeof e!=`object`?``:`position`in e||`type`in e?rA(e.position):`start`in e||`end`in e?rA(e):`line`in e||`column`in e?nA(e):``}function nA(e){return iA(e&&e.line)+`:`+iA(e&&e.column)}function rA(e){return nA(e&&e.start)+`-`+nA(e&&e.end)}function iA(e){return e&&typeof e==`number`?e:1}var aA=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=tA(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}};aA.prototype.file=``,aA.prototype.name=``,aA.prototype.reason=``,aA.prototype.message=``,aA.prototype.stack=``,aA.prototype.column=void 0,aA.prototype.line=void 0,aA.prototype.ancestors=void 0,aA.prototype.cause=void 0,aA.prototype.fatal=void 0,aA.prototype.place=void 0,aA.prototype.ruleId=void 0,aA.prototype.source=void 0;var oA=t(Xk(),1),sA={}.hasOwnProperty,cA=new Map,lA=/[A-Z]/g,uA=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),dA=new Set([`td`,`th`]),fA=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function pA(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=wA(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=CA(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`?Gk:Wk,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=mA(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function mA(e,t,n){if(t.type===`element`)return hA(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return gA(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return vA(e,t,n);if(t.type===`mdxjsEsm`)return _A(e,t);if(t.type===`root`)return yA(e,t,n);if(t.type===`text`)return bA(e,t)}function hA(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=Gk,e.schema=i),e.ancestors.push(t);let a=AA(e,t.tagName,!1),o=TA(e,t),s=DA(e,t);return uA.has(t.tagName)&&(s=s.filter(function(e){return typeof e!=`string`||!uk(e)})),xA(e,o,a,t),SA(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function gA(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)}jA(e,t.position)}function _A(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);jA(e,t.position)}function vA(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=Gk,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:AA(e,t.name,!0),o=EA(e,t),s=DA(e,t);return xA(e,o,a,t),SA(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function yA(e,t,n){let r={};return SA(r,DA(e,t)),e.create(t,e.Fragment,r,n)}function bA(e,t){return t.value}function xA(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function SA(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function CA(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 wA(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Qk(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 TA(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&sA.call(t.properties,i)){let a=OA(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&dA.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 EA(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 jA(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 jA(e,t.position)}else a=r.value===null||r.value;n[i]=a}return n}function DA(e,t){let n=[],r=-1,i=e.passKeys?new Map:cA;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?(UA(e,e.length,0,t),e):t}var GA={}.hasOwnProperty;function KA(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 XA(e){return e.replace(/[\t\n\r ]+/g,` `).replace(/^ | $/g,``).toLowerCase().toUpperCase()}var ZA=lj(/[A-Za-z]/),QA=lj(/[\dA-Za-z]/),$A=lj(/[#-'*+\--9=?A-Z^-~]/);function ej(e){return e!==null&&(e<32||e===127)}var tj=lj(/\d/),nj=lj(/[\dA-Fa-f]/),rj=lj(/[!-/:-@[-`{-~]/);function ij(e){return e!==null&&e<-2}function aj(e){return e!==null&&(e<0||e===32)}function oj(e){return e===-2||e===-1||e===32}var sj=lj(/\p{P}|\p{S}/u),cj=lj(/\s/);function lj(e){return t;function t(t){return t!==null&&t>-1&&e.test(String.fromCharCode(t))}}function uj(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 dj(e,t,n,r){let i=r?r-1:1/0,a=0;return o;function o(r){return oj(r)?(e.enter(n),s(r)):t(r)}function s(r){return oj(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 _j(e,t,n){return dj(e,e.attempt(this.parser.constructs.document,t,n),`linePrefix`,this.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)}function vj(e){if(e===null||aj(e)||cj(e))return 1;if(sj(e))return 2}function yj(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};Cj(d,-c),Cj(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=WA(l,[[`enter`,e[r][1],t],[`exit`,e[r][1],t]])),l=WA(l,[[`enter`,i,t],[`enter`,o,t],[`exit`,o,t],[`enter`,a,t]]),l=WA(l,yj(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),l=WA(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=WA(l,[[`enter`,e[n][1],t],[`exit`,e[n][1],t]])):u=0,UA(e,r-1,n-r+3,l),n=r+l.length-u-2;break}}for(n=-1;++n0&&oj(t)?dj(e,v,`linePrefix`,a+1)(t):v(t)}function v(t){return t===null||ij(t)?e.check(Ij,h,b)(t):(e.enter(`codeFlowValue`),y(t))}function y(t){return t===null||ij(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`),oj(t)?dj(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`),oj(t)?dj(e,d,`whitespace`)(t):d(t)):n(t)}function d(r){return r===null||ij(r)?(e.exit(`codeFencedFence`),t(r)):n(r)}}}function zj(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 Bj={name:`codeIndented`,tokenize:Hj},Vj={partial:!0,tokenize:Uj};function Hj(e,t,n){let r=this;return i;function i(t){return e.enter(`codeIndented`),dj(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):ij(t)?e.attempt(Vj,o,c)(t):(e.enter(`codeFlowValue`),s(t))}function s(t){return t===null||ij(t)?(e.exit(`codeFlowValue`),o(t)):(e.consume(t),s)}function c(n){return e.exit(`codeIndented`),t(n)}}function Uj(e,t,n){let r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):ij(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),i):dj(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):ij(e)?i(e):n(e)}}var Wj={name:`codeText`,previous:Kj,resolve:Gj,tokenize:qj};function Gj(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&&Yj(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),Yj(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Yj(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 rM(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||ej(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||ij(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||aj(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):ij(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||ij(t)||s++>999?(e.exit(`chunkString`),u(t)):(e.consume(t),c||=!oj(t),t===92?f:d)}function f(t){return t===91||t===92||t===93?(e.consume(t),s++,d):d(t)}}function aM(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):ij(t)?(e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),dj(e,l,`linePrefix`)):(e.enter(`chunkString`,{contentType:`string`}),u(t))}function u(t){return t===o||t===null||ij(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 oM(e,t){let n;return r;function r(i){return ij(i)?(e.enter(`lineEnding`),e.consume(i),e.exit(`lineEnding`),n=!0,r):oj(i)?dj(e,r,n?`linePrefix`:`lineSuffix`)(i):t(i)}}var sM={name:`definition`,tokenize:lM},cM={partial:!0,tokenize:uM};function lM(e,t,n){let r=this,i;return a;function a(t){return e.enter(`definition`),o(t)}function o(t){return iM.call(r,e,s,n,`definitionLabel`,`definitionLabelMarker`,`definitionLabelString`)(t)}function s(t){return i=XA(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 aj(t)?oM(e,l)(t):l(t)}function l(t){return rM(e,u,n,`definitionDestination`,`definitionDestinationLiteral`,`definitionDestinationLiteralMarker`,`definitionDestinationRaw`,`definitionDestinationString`)(t)}function u(t){return e.attempt(cM,d,d)(t)}function d(t){return oj(t)?dj(e,f,`whitespace`)(t):f(t)}function f(a){return a===null||ij(a)?(e.exit(`definition`),r.parser.defined.push(i),t(a)):n(a)}}function uM(e,t,n){return r;function r(t){return aj(t)?oM(e,i)(t):n(t)}function i(t){return aM(e,a,n,`definitionTitle`,`definitionTitleMarker`,`definitionTitleString`)(t)}function a(t){return oj(t)?dj(e,o,`whitespace`)(t):o(t)}function o(e){return e===null||ij(e)?t(e):n(e)}}var dM={name:`hardBreakEscape`,tokenize:fM};function fM(e,t,n){return r;function r(t){return e.enter(`hardBreakEscape`),e.consume(t),i}function i(r){return ij(r)?(e.exit(`hardBreakEscape`),t(r)):n(r)}}var pM={name:`headingAtx`,resolve:mM,tokenize:hM};function mM(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`},UA(e,r,n-r+1,[[`enter`,i,t],[`enter`,a,t],[`exit`,a,t],[`exit`,i,t]])),e}function hM(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||aj(t)?(e.exit(`atxHeadingSequence`),s(t)):n(t)}function s(n){return n===35?(e.enter(`atxHeadingSequence`),c(n)):n===null||ij(n)?(e.exit(`atxHeading`),t(n)):oj(n)?dj(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||aj(t)?(e.exit(`atxHeadingText`),s(t)):(e.consume(t),l)}}var gM=`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(`.`),_M=[`pre`,`script`,`style`,`textarea`],vM={concrete:!0,name:`htmlFlow`,resolveTo:xM,tokenize:SM},yM={partial:!0,tokenize:wM},bM={partial:!0,tokenize:CM};function xM(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 SM(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):ZA(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):ZA(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 ZA(t)?(e.consume(t),o=String.fromCharCode(t),g):n(t)}function g(s){if(s===null||s===47||s===62||aj(s)){let c=s===47,l=o.toLowerCase();return!c&&!a&&_M.includes(l)?(i=1,r.interrupt?t(s):O(s)):gM.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||QA(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 oj(t)?(e.consume(t),v):E(t)}function y(t){return t===47?(e.consume(t),E):t===58||t===95||ZA(t)?(e.consume(t),b):oj(t)?(e.consume(t),y):E(t)}function b(t){return t===45||t===46||t===58||t===95||QA(t)?(e.consume(t),b):x(t)}function x(t){return t===61?(e.consume(t),S):oj(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):oj(t)?(e.consume(t),S):w(t)}function C(t){return t===c?(e.consume(t),c=null,T):t===null||ij(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||aj(t)?x(t):(e.consume(t),w)}function T(e){return e===47||e===62||oj(e)?y(e):n(e)}function E(t){return t===62?(e.consume(t),D):n(t)}function D(t){return t===null||ij(t)?O(t):oj(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):ij(t)&&(i===6||i===7)?(e.exit(`htmlFlowData`),e.check(yM,R,k)(t)):t===null||ij(t)?(e.exit(`htmlFlowData`),k(t)):(e.consume(t),O)}function k(t){return e.check(bM,A,R)(t)}function A(t){return e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),j}function j(t){return t===null||ij(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 _M.includes(n)?(e.consume(t),L):O(t)}return ZA(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||ij(t)?(e.exit(`htmlFlowData`),R(t)):(e.consume(t),L)}function R(n){return e.exit(`htmlFlow`),t(n)}}function CM(e,t,n){let r=this;return i;function i(t){return ij(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 wM(e,t,n){return r;function r(r){return e.enter(`lineEnding`),e.consume(r),e.exit(`lineEnding`),e.attempt(Ej,t,n)}}var TM={name:`htmlText`,tokenize:EM};function EM(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):ZA(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):ZA(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):ij(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):ij(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):ij(t)?(o=v,N(t)):(e.consume(t),v)}function y(t){return t===null?n(t):t===63?(e.consume(t),b):ij(t)?(o=y,N(t)):(e.consume(t),y)}function b(e){return e===62?M(e):y(e)}function x(t){return ZA(t)?(e.consume(t),S):n(t)}function S(t){return t===45||QA(t)?(e.consume(t),S):C(t)}function C(t){return ij(t)?(o=C,N(t)):oj(t)?(e.consume(t),C):M(t)}function w(t){return t===45||QA(t)?(e.consume(t),w):t===47||t===62||aj(t)?T(t):n(t)}function T(t){return t===47?(e.consume(t),M):t===58||t===95||ZA(t)?(e.consume(t),E):ij(t)?(o=T,N(t)):oj(t)?(e.consume(t),T):M(t)}function E(t){return t===45||t===46||t===58||t===95||QA(t)?(e.consume(t),E):D(t)}function D(t){return t===61?(e.consume(t),O):ij(t)?(o=D,N(t)):oj(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):ij(t)?(o=O,N(t)):oj(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):ij(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||aj(t)?T(t):(e.consume(t),A)}function j(e){return e===47||e===62||aj(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 oj(t)?dj(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 DM={name:`labelEnd`,resolveAll:jM,resolveTo:MM,tokenize:NM},OM={tokenize:PM},kM={tokenize:FM},AM={tokenize:IM};function jM(e){let t=-1,n=[];for(;++t=3&&(a===null||ij(a))?(e.exit(`thematicBreak`),t(a)):n(a)}function c(t){return t===i?(e.consume(t),r++,c):(e.exit(`thematicBreakSequence`),oj(t)?dj(e,s,`whitespace`)(t):s(t))}}var GM={continuation:{tokenize:YM},exit:ZM,name:`list`,tokenize:JM},KM={partial:!0,tokenize:QM},qM={partial:!0,tokenize:XM};function JM(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:tj(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(UM,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 tj(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(Ej,r.interrupt?n:u,e.attempt(KM,f,d))}function u(e){return r.containerState.initialBlankLine=!0,a++,f(e)}function d(t){return oj(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 YM(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(Ej,i,a);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,dj(e,t,`listItemIndent`,r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!oj(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(qM,t,o)(n))}function o(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,dj(e,e.attempt(GM,t,n),`linePrefix`,r.parser.constructs.disable.null.includes(`codeIndented`)?void 0:4)(i)}}function XM(e,t,n){let r=this;return dj(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 ZM(e){e.exit(this.containerState.type)}function QM(e,t,n){let r=this;return dj(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!oj(e)&&i&&i[1].type===`listItemPrefixWhitespace`?t(e):n(e)}}var $M={name:`setextUnderline`,resolveTo:eN,tokenize:tN};function eN(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 tN(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`),oj(t)?dj(e,c,`lineSuffix`)(t):c(t))}function c(r){return r===null||ij(r)?(e.exit(`setextHeadingLine`),t(r)):n(r)}}var nN={tokenize:rN};function rN(e){let t=this,n=e.attempt(Ej,r,e.attempt(this.parser.constructs.flowInitial,i,dj(e,e.attempt(this.parser.constructs.flow,i,e.attempt(Qj,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 iN={resolveAll:cN()},aN=sN(`string`),oN=sN(`text`);function sN(e){return{resolveAll:cN(e===`text`?lN: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(;++ivN,contentInitial:()=>fN,disable:()=>yN,document:()=>dN,flow:()=>mN,flowInitial:()=>pN,insideSpan:()=>_N,string:()=>hN,text:()=>gN}),dN={42:GM,43:GM,45:GM,48:GM,49:GM,50:GM,51:GM,52:GM,53:GM,54:GM,55:GM,56:GM,57:GM,62:Oj},fN={91:sM},pN={[-2]:Bj,[-1]:Bj,32:Bj},mN={35:pM,42:UM,45:[$M,UM],60:vM,61:$M,95:UM,96:Lj,126:Lj},hN={38:Pj,92:Mj},gN={[-5]:VM,[-4]:VM,[-3]:VM,33:LM,38:Pj,42:bj,60:[wj,TM],91:zM,92:[dM,Mj],93:DM,95:bj,96:Wj},_N={null:[bj,iN]},vN={null:[42,95]},yN={null:[]};function bN(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=WA(o,e),g(),o[o.length-1]===null?(w(t,0),l.events=yj(a,l.events,l),l.events):[]}function f(e,t){return SN(p(e),t)}function p(e){return xN(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 SN(e,t){let n=-1,r=[],i;for(;++n100){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]||IN).call(a,void 0,e[0])}for(r.position={start:NN(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:NN(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 VN(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function HN(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function UN(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=uj(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 WN(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 GN(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function KN(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 qN(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return KN(e,t);let i={src:uj(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 JN(e,t){let n={src:uj(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 YN(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 XN(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return KN(e,t);let i={href:uj(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 ZN(e,t){let n={href:uj(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 QN(e,t,n){let r=e.all(t),i=n?$N(n):eP(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]||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 tP(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=Qk(t.children[1]),o=Zk(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 oP(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(dP(t.slice(i),i>0,!1)),a.join(``)}function dP(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;t===cP||t===lP;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;t===cP||t===lP;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):``}function fP(e,t){let n={type:`text`,value:uP(String(t.value))};return e.patch(t,n),e.applyData(t,n)}function pP(e,t){let n={type:`element`,tagName:`hr`,properties:{},children:[]};return e.patch(t,n),e.applyData(t,n)}var mP={blockquote:RN,break:zN,code:BN,delete:VN,emphasis:HN,footnoteReference:UN,heading:WN,html:GN,imageReference:qN,image:JN,inlineCode:YN,linkReference:XN,link:ZN,listItem:QN,list:tP,paragraph:nP,root:rP,strong:iP,table:aP,tableCell:sP,tableRow:oP,text:fP,thematicBreak:pP,toml:hP,yaml:hP,definition:hP,footnoteDefinition:hP};function hP(){}var{defineProperty:gP}=Object,_P=typeof self==`object`?self:globalThis,vP=(e,t)=>{switch(e){case`Function`:case`SharedWorker`:case`Worker`:case`eval`:case`setInterval`:case`setTimeout`:throw TypeError(`unable to deserialize `+e)}return new _P[e](t)},yP=(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){let i=r(t),a=r(n);i===`__proto__`?gP(e,i,{value:a,configurable:!0,enumerable:!0,writable:!0}):e[i]=a}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 _P[e]==`function`?vP(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)}case`-0`:return-0}return n(vP(a,o),i)};return r},bP=e=>yP(new Map,e)(0),xP=``,{toString:SP}={},{keys:CP,is:wP}=Object,TP=e=>{let t=typeof e;if(t!==`object`||!e)return[0,t];let n=SP.call(e).slice(8,-1);switch(n){case`Array`:return[1,xP];case`Object`:return[2,xP];case`Date`:return[3,xP];case`RegExp`:return[4,xP];case`Map`:return[5,xP];case`Set`:return[6,xP];case`DataView`:return[1,n]}return n.includes(`Array`)?[1,n]:e instanceof Error?[7,e.name||`Error`]:[2,n]},EP=([e,t])=>e===0&&(t===`function`||t===`symbol`),DP=(e,t,n,r)=>{let i=(e,t)=>{let i=r.push(e)-1;return n.set(t,i),i},a=o=>{if(n.has(o))return n.get(o);let[s,c]=TP(o);switch(s){case 0:{let t=o;switch(c){case`bigint`:s=8,t=o.toString();break;case`number`:if(!o&&wP(o,-0))return r.push([`-0`])-1;break;case`function`:case`symbol`:if(e)throw TypeError(`unable to serialize `+c);t=null;break;case`undefined`:return i([-1],o)}return i([s,t],o)}case 1:{if(c){let e=o;return c===`DataView`?e=new Uint8Array(o.buffer):c===`ArrayBuffer`&&(e=new Uint8Array(o)),i([c,[...e]],o)}let e=[],t=i([s,e],o);for(let t of o)e.push(a(t));return t}case 2:{if(c)switch(c){case`BigInt`:return i([c,o.toString()],o);case`Boolean`:case`Number`:case`String`:return i([c,o.valueOf()],o)}if(t&&`toJSON`in o)return a(o.toJSON());let n=[],r=i([s,n],o);for(let t of CP(o))(e||!EP(TP(o[t])))&&n.push([a(t),a(o[t])]);return r}case 3:return i([s,isNaN(o.getTime())?xP:o.toISOString()],o);case 4:{let{source:e,flags:t}=o;return i([s,{source:e,flags:t}],o)}case 5:{let t=[],n=i([s,t],o);for(let[n,r]of o)(e||!(EP(TP(n))||EP(TP(r))))&&t.push([a(n),a(r)]);return n}case 6:{let t=[],n=i([s,t],o);for(let n of o)(e||!EP(TP(n)))&&t.push(a(n));return n}}let{message:l}=o;return i([s,{name:c,message:l}],o)};return a},OP=(e,{json:t,lossy:n}={})=>{let r=[];return DP(!(t||n),!!t,new Map,r)(e),r},kP=typeof structuredClone==`function`?(e,t)=>t&&(`json`in t||`lossy`in t)?bP(OP(e,t)):structuredClone(e):(e,t)=>bP(OP(e,t));function AP(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 jP(e,t){return`Back to reference `+(e+1)+(t>1?`-`+t:``)}function MP(e){let t=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,n=e.options.footnoteBackContent||AP,r=e.options.footnoteBackLabel||jP,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:{...kP(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 IM(e){let t=!1;if(e.type===`list`){t=e.spread||!1;let n=e.children,r=-1;for(;!t&&++r1}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 NP=(function(e){if(e==null)return RP;if(typeof e==`function`)return LP(e);if(typeof e==`object`)return Array.isArray(e)?PP(e):FP(e);if(typeof e==`string`)return IP(e);throw Error(`Expected function, string, or object as test`)});function PP(e){let t=[],n=-1;for(;++n`:``))+`)`})}return u;function u(){let l=VP,u,d,f;if((!t||a(e,i,c[c.length-1]||void 0))&&(l=UP(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=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 QP(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function $P(e,t){let n=qP(e,t),r=n.one(e,void 0),i=MP(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 eF(e,t){return e&&`run`in e?async function(n,r){let i=$P(n,{file:r,...t});await e.run(i,r)}:function(n,r){return $P(n,{file:r,...e||t})}}function tF(e){if(e)throw e}var nF=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 oF={basename:sF,dirname:cF,extname:lF,join:uF,sep:`/`};function sF(e,t){if(t!==void 0&&typeof t!=`string`)throw TypeError(`"ext" argument must be a string`);pF(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 cF(e){if(pF(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 lF(e){pF(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 uF(...e){let t=-1,n;for(;++t0&&e.codePointAt(e.length-1)===47&&(n+=`/`),t?`/`+n:n}function fF(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 pF(e){if(typeof e!=`string`)throw TypeError(`Path must be a string. Received `+JSON.stringify(e))}var mF={cwd:hF};function hF(){return`/`}function gF(e){return!!(typeof e==`object`&&e&&`href`in e&&e.href&&`protocol`in e&&e.protocol&&e.auth===void 0)}function _F(e){if(typeof e==`string`)e=new URL(e);else if(!gF(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 vF(e)}function vF(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];rF(o)&&rF(r)&&(r=(0,EF.default)(!0,o,r)),n[i]=[e,r,...a]}}}}().freeze();function kF(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `parser`")}function AF(e,t){if(typeof t!=`function`)throw TypeError("Cannot `"+e+"` without `compiler`")}function jF(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 MF(e){if(!rF(e)||typeof e.type!=`string`)throw TypeError("Expected node, got `"+e+"`")}function NF(e,t,n){if(!n)throw Error("`"+e+"` finished async. Use `"+t+"` instead")}function PF(e){return FF(e)?e:new bF(e)}function FF(e){return!!(e&&typeof e==`object`&&`message`in e&&`messages`in e)}function IF(e){return typeof e==`string`||LF(e)}function LF(e){return!!(e&&typeof e==`object`&&`byteLength`in e&&`byteOffset`in e)}var RF=[],zF={allowDangerousHtml:!0},BF=/^(https?|ircs?|mailto|xmpp)$/i,VF=[{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 HF(e){let t=UF(e),n=WF(e);return GF(t.runSync(t.parse(n),n),e)}function UF(e){let t=e.rehypePlugins||RF,n=e.remarkPlugins||RF,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...zF}:zF;return OF().use(LN).use(n).use(eF,r).use(t)}function WF(e){let t=e.children||``,n=new bF;return typeof t==`string`?n.value=t:``+t,n}function GF(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||KF;for(let e of VF)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return WP(e,l),pA(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 FA)if(Object.hasOwn(FA,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=FA[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 KF(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||BF.test(e.slice(0,t))?e:``}function qF(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 JF(e){if(typeof e!=`string`)throw TypeError(`Expected a string`);return e.replace(/[|\\{}()[\]^$+*?.]/g,`\\$&`).replace(/-/g,`\\x2d`)}function YF(e,t,n){let r=NP((n||{}).ignore||[]),i=XF(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=qF(e,`(`),a=qF(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 mI(e,t){let n=e.input.charCodeAt(e.index-1);return(e.index===0||cj(n)||sj(n))&&(!t||n!==47)}wI.peek=CI;function hI(){this.buffer()}function gI(e){this.enter({type:`footnoteReference`,identifier:``,label:``},e)}function _I(){this.buffer()}function vI(e){this.enter({type:`footnoteDefinition`,identifier:``,label:``,children:[]},e)}function yI(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=XA(this.sliceSerialize(e)).toLowerCase(),n.label=t}function bI(e){this.exit(e)}function xI(e){let t=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=XA(this.sliceSerialize(e)).toLowerCase(),n.label=t}function SI(e){this.exit(e)}function CI(){return`[`}function wI(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 TI(){return{enter:{gfmFootnoteCallString:hI,gfmFootnoteCall:gI,gfmFootnoteDefinitionLabelString:_I,gfmFootnoteDefinition:vI},exit:{gfmFootnoteCallString:yI,gfmFootnoteCall:bI,gfmFootnoteDefinitionLabelString:xI,gfmFootnoteDefinition:SI}}}function EI(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:n,footnoteReference:wI},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?OI:DI))),s(),o}}function DI(e,t,n){return t===0?e:OI(e,t,n)}function OI(e,t,n){return(n?``:` `)+e}var kI=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`];PI.peek=FI;function AI(){return{canContainEols:[`delete`],enter:{strikethrough:MI},exit:{strikethrough:NI}}}function jI(){return{unsafe:[{character:`~`,inConstruct:`phrasing`,notInConstruct:kI}],handlers:{delete:PI}}}function MI(e){this.enter({type:`delete`,children:[]},e)}function NI(e){this.exit(e)}function PI(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 FI(){return`~`}function II(e){return e.length}function LI(e,t){let n=t||{},r=(n.align||[]).concat(),i=n.stringLength||II,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()),VI);return i(),o}function VI(e,t,n){return`>`+(n?``:` `)+e}function HI(e,t){return UI(e,t.inConstruct,!0)&&!UI(e,t.notInConstruct,!1)}function UI(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 KI(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 qI(e){let t=e.options.fence||"`";if(t!=="`"&&t!==`~`)throw Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function JI(e,t,n,r){let i=qI(n),a=e.value||``,o=i==="`"?`GraveAccent`:`Tilde`;if(KI(e,n)){let e=n.enter(`codeIndented`),t=n.indentLines(a,YI);return e(),t}let s=n.createTracker(r),c=i.repeat(Math.max(GI(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 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 YI(e,t,n){return(n?``:` `)+e}function XI(e){let t=e.options.quote||`"`;if(t!==`"`&&t!==`'`)throw Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function ZI(e,t,n,r){let i=XI(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 QI(e){let t=e.options.emphasis||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function $I(e){return`&#x`+e.toString(16).toUpperCase()+`;`}function eL(e,t,n){let r=vj(e),i=vj(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}}tL.peek=nL;function tL(e,t,n,r){let i=QI(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=eL(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=$I(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=eL(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+$I(d));let p=o.move(i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function nL(e,t,n){return n.options.emphasis||`*`}function rL(e,t){let n=!1;return WP(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)&&LA(e)&&(t.options.setext||n))}function iL(e,t,n,r){let i=Math.max(Math.min(6,e.depth||1),1),a=n.createTracker(r);if(rL(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 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=$I(l.charCodeAt(0))+l.slice(1)),l=l?o+` `+l:o,n.options.closeAtx&&(l+=` `+o),c(),s(),l}aL.peek=oL;function aL(e){return e.value||``}function oL(){return`<`}sL.peek=cL;function sL(e,t,n,r){let i=XI(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 cL(){return`!`}lL.peek=uL;function lL(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 uL(){return`!`}dL.peek=fL;function dL(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))}mL.peek=hL;function mL(e,t,n,r){let i=XI(n),a=i===`"`?`Quote`:`Apostrophe`,o=n.createTracker(r),s,c;if(pL(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 hL(e,t,n){return pL(e,n)?`<`:`[`}gL.peek=_L;function gL(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 _L(){return`[`}function vL(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 yL(e){let t=vL(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 bL(e){let t=e.options.bulletOrdered||`.`;if(t!==`.`&&t!==`)`)throw Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function xL(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 SL(e,t,n,r){let i=n.enter(`list`),a=n.bulletCurrent,o=e.ordered?bL(n):vL(n),s=e.ordered?o===`.`?`)`:`.`:yL(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),xL(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 TL(e,t,n,r){let i=n.enter(`paragraph`),a=n.enter(`phrasing`),o=n.containerPhrasing(e,r);return a(),i(),o}var EL=NP([`break`,`delete`,`emphasis`,`footnote`,`footnoteReference`,`image`,`imageReference`,`inlineCode`,`inlineMath`,`link`,`linkReference`,`mdxJsxTextElement`,`mdxTextExpression`,`strong`,`text`,`textDirective`]);function DL(e,t,n,r){return(e.children.some(function(e){return EL(e)})?n.containerPhrasing:n.containerFlow).call(n,e,r)}function OL(e){let t=e.options.strong||`*`;if(t!==`*`&&t!==`_`)throw Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}kL.peek=AL;function kL(e,t,n,r){let i=OL(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=eL(r.before.charCodeAt(r.before.length-1),l,i);u.inside&&(c=$I(l)+c.slice(1));let d=c.charCodeAt(c.length-1),f=eL(r.after.charCodeAt(0),d,i);f.inside&&(c=c.slice(0,-1)+$I(d));let p=o.move(i+i);return a(),n.attentionEncodeSurroundingInfo={after:f.outside,before:u.outside},s+c+p}function AL(e,t,n){return n.options.strong||`*`}function jL(e,t,n,r){return n.safe(e.value,r)}function ML(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 NL(e,t,n){let r=(xL(n)+(n.options.ruleSpaces?` `:``)).repeat(ML(n));return n.options.ruleSpaces?r.slice(0,-1):r}var PL={blockquote:BI,break:WI,code:JI,definition:ZI,emphasis:tL,hardBreak:WI,heading:iL,html:aL,image:sL,imageReference:lL,inlineCode:dL,link:mL,linkReference:gL,list:SL,listItem:wL,paragraph:TL,root:DL,strong:kL,text:jL,thematicBreak:NL};function FL(){return{enter:{table:IL,tableData:BL,tableHeader:BL,tableRow:RL},exit:{codeText:VL,table:LL,tableData:zL,tableHeader:zL,tableRow:zL}}}function IL(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 LL(e){this.exit(e),this.data.inTable=void 0}function RL(e){this.enter({type:`tableRow`,children:[]},e)}function zL(e){this.exit(e)}function BL(e){this.enter({type:`tableCell`,children:[]},e)}function VL(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,HL));let n=this.stack[this.stack.length-1];n.type,n.value=t,this.exit(e)}function HL(e,t){return t===`|`?t:e}function UL(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=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 LI(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 xR={tokenize:kR,partial:!0};function SR(){return{document:{91:{name:`gfmFootnoteDefinition`,tokenize:ER,continuation:{tokenize:DR},exit:OR}},text:{91:{name:`gfmFootnoteCall`,tokenize:TR},93:{name:`gfmPotentialFootnoteCall`,add:`after`,tokenize:CR,resolveTo:wR}}}}function CR(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=XA(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 wR(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 TR(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||aj(s))return n(s);if(s===93){e.exit(`chunkString`);let a=e.exit(`gfmFootnoteCallString`);return i.includes(XA(r.sliceSerialize(a)))?(e.enter(`gfmFootnoteCallLabelMarker`),e.consume(s),e.exit(`gfmFootnoteCallLabelMarker`),e.exit(`gfmFootnoteCall`),t):n(s)}return aj(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 ER(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||aj(t))return n(t);if(t===93){e.exit(`chunkString`);let n=e.exit(`gfmFootnoteDefinitionLabelString`);return a=XA(r.sliceSerialize(n)),e.enter(`gfmFootnoteDefinitionLabelMarker`),e.consume(t),e.exit(`gfmFootnoteDefinitionLabelMarker`),e.exit(`gfmFootnoteDefinitionLabel`),f}return aj(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),dj(e,p,`gfmFootnoteDefinitionWhitespace`)):n(t)}function p(e){return t(e)}}function DR(e,t,n){return e.check(Ej,t,e.attempt(xR,t,n))}function OR(e){e.exit(`gfmFootnoteDefinition`)}function kR(e,t,n){let r=this;return dj(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 AR(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=vj(a);return l._open=!u||u===2&&!!s,l._close=!s||s===2&&!!u,n(a)}}}var jR=class{constructor(){this.map=[]}add(e,t,n){MR(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 MR(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):ij(t)?a>1?(a=0,r.interrupt=!0,e.exit(`tableRow`),e.enter(`lineEnding`),e.consume(t),e.exit(`lineEnding`),p):n(t):oj(t)?dj(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||aj(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,oj(t)?dj(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 oj(t)?dj(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||ij(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 oj(t)?dj(e,b,`whitespace`)(t):b(t)}function b(n){return n===124?m(n):n===null||ij(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||ij(n)?(e.exit(`tableRow`),t(n)):oj(n)?dj(e,C,`whitespace`)(n):(e.enter(`data`),w(n))}function w(t){return t===null||t===124||aj(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 IR(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 jR;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({},zR(t.events,i)),e.add(i,0,[[`exit`,a,t]]),a=void 0),a}function RR(e,t,n,r,i){let a=[],o=zR(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 zR(e,t){let n=e[t],r=n[0]===`enter`?`start`:`end`;return n[1][r]}var BR={name:`tasklistCheck`,tokenize:HR};function VR(){return{text:{91:BR}}}function HR(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 aj(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 ij(r)?t(r):oj(r)?e.check({tokenize:UR},t,n)(r):n(r)}}function UR(e,t,n){return dj(e,r,`whitespace`);function r(e){return e===null?n(e):t(e)}}function WR(e){return KA([oR(),SR(),AR(e),PR(),VR()])}var GR={};function KR(e){let t=this,n=e||GR,r=t.data(),i=r.micromarkExtensions||=[],a=r.fromMarkdownExtensions||=[],o=r.toMarkdownExtensions||=[];i.push(WR(n)),a.push(YL()),o.push(XL(n))}function qR(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 JR({content:e}){let{frontmatter:t,markdown:n}=qR(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)(Ab,{code:t,language:`yaml`,filename:`frontmatter.yaml`,showLineNumbers:!1,wrap:!0})]}),(0,G.jsx)(`article`,{className:`markdown-preview`,children:(0,G.jsx)(HF,{remarkPlugins:[KR],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)(Ab,{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 YR(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 XR(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function ZR(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 QR(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 $R({files:e,selected:t,onSelect:n}){let r=(0,s.useMemo)(()=>QR(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 ez({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 XR(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 XR(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)(nk,{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)(rk,{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)($R,{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,` · `,YR(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)(rk,{kind:`error`,title:`无法预览文件`,message:_}),!f&&!_&&c?.kind===`markdown`&&(0,G.jsx)(JR,{content:c.content||``}),!f&&!_&&[`script`,`text`].includes(c?.kind||``)&&(0,G.jsx)(Ab,{code:c?.content||``,language:ZR(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 tz=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`]]),nz=class extends Error{constructor(e){super(`DataTransferItem is not a file`),this.item=e,this.name=`UnexpectedObjectError`}};function rz(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`&&az(r,`path`,a),n!==void 0&&Object.defineProperty(r,"handle",{value:n,writable:!1,configurable:!1,enumerable:!0}),az(r,`relativePath`,a),r}function iz(e,t=tz){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 az(e,t,n){Object.defineProperty(e,t,{value:n,writable:!1,configurable:!1,enumerable:!0})}var oz=[`.DS_Store`,`Thumbs.db`];async function sz(e,{mimeTypes:t=tz}={}){return(await cz(e)).map(e=>e instanceof File?iz(e,t):e)}async function cz(e){return fz(e)&&lz(e.dataTransfer)?hz(e.dataTransfer,e.type):uz(e)?gz(e.clipboardData):dz(e)?pz(e):Array.isArray(e)&&e.every(e=>`getFile`in e&&typeof e.getFile==`function`)?mz(e):[]}function lz(e){return fz(e)}function uz(e){return fz(e)&&lz(e.clipboardData)}function dz(e){return fz(e)&&fz(e.target)}function fz(e){return typeof e==`object`&&!!e}function pz(e){return vz(e.target.files).map(e=>rz(e))}async function mz(e){return(await Promise.all(e.map(e=>e.getFile()))).map(e=>rz(e))}async function hz(e,t){let n=vz(e.items).filter(e=>e.kind===`file`);return t===`drop`?_z(bz(await Promise.all(n.map(yz)))):n}function gz(e){let t=vz(e.items).filter(e=>e.kind===`file`).map(e=>e.getAsFile()).filter(e=>e!==null);return _z((t.length>0?t:vz(e.files)).map(e=>rz(e)))}function _z(e){return e.filter(e=>oz.indexOf(e.name)===-1)}function vz(e){return e===null?[]:Array.from(e)}async function yz(e){if(typeof e.webkitGetAsEntry!=`function`)return xz(e);let t=e.webkitGetAsEntry();if(t?.isDirectory){let n=await Sz(e);return n?.kind===`directory`?Cz(n,`/${n.name}`):Tz(t)}return xz(e,t)}function bz(e){let t=[];for(let n of e)Array.isArray(n)?t.push(...bz(n)):t.push(n);return t}async function xz(e,t){let n=e.getAsFile(),r=await Sz(e);if(r!=null){let e=n??await r.getFile();return e.handle=r,rz(e)}if(!n)throw new nz(e);return rz(n,t?.fullPath??void 0)}async function Sz(e){if(globalThis.isSecureContext&&typeof e.getAsFileSystemHandle==`function`)return e.getAsFileSystemHandle()}async function Cz(e,t){let n=[];for await(let r of e.values()){let e=`${t}/${r.name}`;if(r.kind===`directory`)n.push(...await Cz(r,e));else{let t=await r.getFile();n.push(rz(t,e,r))}}return n}async function wz(e){return e.isDirectory?Tz(e):Ez(e)}function Tz(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(wz));r.push(e),i()}else try{e(await Promise.all(r))}catch(e){n(e)}},e=>{n(e)})}i()})}async function Ez(e){return new Promise((t,n)=>{e.file(n=>{t(rz(n,e.fullPath))},e=>{n(e)})})}function Dz(e,t){if(e&&t){let n=Array.isArray(t)?t:t.split(`,`);if(n.length===0)return!0;let r=e.name||``,i=(e.type||``).toLowerCase(),a=i.replace(/\/.*$/,``);return n.some(e=>{let t=e.trim().toLowerCase();return t.charAt(0)===`.`?r.toLowerCase().endsWith(t):t.endsWith(`/*`)?a===t.replace(/\/.*$/,``):i===t})}return!0}var Oz=typeof Dz==`function`?Dz:Dz.default,kz=`file-invalid-type`,Az=`file-too-large`,jz=`file-too-small`,Mz=`too-many-files`;function Nz(e=``){let t=e.split(`,`);return{code:kz,message:`File type must be ${t.length>1?`one of ${t.join(`, `)}`:t[0]}`}}var Pz=[`KB`,`MB`,`GB`,`TB`,`PB`];function Fz(e){if(e<1024)return`${e} ${e===1?`byte`:`bytes`}`;let t=e/1024,n=0;for(;t>=1024&&nn)return[!1,Iz(n)];if(e.sizen)return[!1,Iz(n)]}return[!0,null]}function Hz(e){return e!=null}function Uz(e){return e!=null&&typeof e.then==`function`}function Wz({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]=Bz(e,t),[o,s]=Vz(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(Rz,e)]})}),l.length>0?{verdict:`reject`,rejections:l}:{verdict:o?`unknown`:`accept`,rejections:l}}function Gz(e){return typeof e.isPropagationStopped==`function`?e.isPropagationStopped():e.cancelBubble!==void 0&&e.cancelBubble}function Kz(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??[],qz):!!e.target&&!!e.target.files}function qz(e){return typeof e==`object`&&!!e&&e.kind===`file`}function Jz(e){e.preventDefault()}function Yz(e){return e.indexOf(`MSIE`)!==-1||e.indexOf(`Trident/`)!==-1}function Xz(e){return e.indexOf(`Edge/`)!==-1}function Zz(e=window.navigator.userAgent){return Yz(e)||Xz(e)}function Qz(...e){return(t,...n)=>e.some(e=>(!Gz(t)&&e&&e(t,...n),Gz(t)))}function $z(){return`showOpenFilePicker`in window}function eB(e){return Array.isArray(e)?e:typeof e==`string`?[e]:[]}function tB(e){if(Hz(e))return Array.isArray(e)?e.filter(e=>Hz(e)&&Hz(e.accept)):[{accept:e}]}function nB(e){let t=[],n=Object.keys(e);for(let n of Object.values(e))for(let e of eB(n))t.includes(e)||t.push(e);return t.length>0?t.join(`, `):n.length>0?n.join(`, `):`Files`}function rB(e){let t=tB(e);if(!Hz(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 eB(r))e.includes(t)||e.push(t)}return n}function iB(e){let t=tB(e);if(!Hz(t))return;let n=t.map(e=>{let t=Object.entries(e.accept).filter(([e,t])=>{let n=!0;return lB(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`)||!eB(t).every(dB))&&(console.warn(`Skipped "${e}" because an invalid file extension was provided.`),n=!1),n}).reduce((e,[t,n])=>(e[t]=eB(n),e),{});return{description:Hz(e.description)&&e.description!==``?e.description:nB(t),accept:t}}).filter(e=>Object.keys(e.accept).length>0);return n.length>0?n:void 0}function aB(e,{omitWildcardMimeTypesWithExtensions:t=!1}={}){if(Hz(e))return Object.entries(e).reduce((e,[n,r])=>{let i=eB(r);return t&&uB(n)&&i.some(dB)?e.push(...i):e.push(n,...i),e},[]).filter(e=>lB(e)||dB(e)).join(`,`)}function oB(e){return e instanceof DOMException&&(e.name===`AbortError`||e.code===e.ABORT_ERR)}function sB(e){return e instanceof DOMException&&(e.name===`SecurityError`||e.code===e.SECURITY_ERR)}function cB(e){return e instanceof DOMException&&e.name===`NotAllowedError`}function lB(e){return e===`audio/*`||e===`video/*`||e===`image/*`||e===`text/*`||e===`application/*`||/\w+\/[-+.\w]+/g.test(e)}function uB(e){return e.endsWith(`/*`)}function dB(e){return/^.*\.[\w]+$/.test(e)}var fB=(0,s.forwardRef)(({children:e,...t},n)=>{let{open:r,...i}=mB(t);return(0,s.useImperativeHandle)(n,()=>({open:r}),[r]),(0,G.jsx)(G.Fragment,{children:e?.({...i,open:r})})});fB.displayName=`Dropzone`;var pB={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,isDragUnknown:!1,isDragGlobal:!1,isProcessing:!1,acceptedFiles:[],fileRejections:[],dragFileRejections:[]};function mB(e={}){let{accept:t,disabled:n=!1,getFilesFromEvent:r=sz,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)(()=>rB(t),[t]),k=(0,s.useMemo)(()=>aB(O),[O]),A=(0,s.useMemo)(()=>aB(O,{omitWildcardMimeTypesWithExtensions:!0}),[O]),j=(0,s.useMemo)(()=>iB(t),[t]),M=(0,s.useMemo)(()=>typeof g==`function`?g:gB,[g]),N=(0,s.useMemo)(()=>typeof h==`function`?h:gB,[h]),P=(0,s.useRef)(null),F=(0,s.useRef)(null),[I,L]=(0,s.useReducer)(hB,pB),{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&&_&&$z()),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`,Jz,!1),document.addEventListener(`drop`,ie,!1)),()=>{y&&(document.removeEventListener(`dragover`,Jz),document.removeEventListener(`drop`,ie))}),[P,y]),(0,s.useEffect)(()=>{let e=e=>{e.target&&(re.current=[...re.current,e.target]),Kz(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],Kz(e)&&Promise.resolve(r(e)).then(t=>{if(Gz(e)&&!C)return;let n=t.length>0?Wz({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=Kz(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:[]}),Kz(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(Rz,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]=Bz(e,A),[r,o]=Vz(e,a,i);return{file:e,accepted:t,acceptError:n,sizeMatch:r,sizeError:o,customErrors:E?E(e):null}});if(!l.some(({customErrors:e})=>Uz(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`}),Kz(e))){let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(Gz(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(!Kz(e))return;e.preventDefault(),e.persist?.(),be(e);let t=H();Promise.resolve(r(e)).then(n=>{if(!t.aborted){if(Gz(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),oB(e)?(N(e),L({type:`closeDialog`})):sB(e)||cB(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||(Zz()?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(Qz(r,fe)),onFocus:_e(Qz(i,pe)),onBlur:_e(Qz(a,me)),onClick:ge(Qz(o,he)),onDragEnter:ve(Qz(s,oe)),onDragOver:ve(Qz(c,se)),onDragLeave:ve(Qz(l,ce)),onDrop:ve(Qz(u,ue)),onPaste:ye(Qz(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(Qz(t,ue)),onClick:ge(Qz(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 hB(e,t){switch(t.type){case`focus`:return{...e,isFocused:!0};case`blur`:return{...e,isFocused:!1};case`openDialog`:return{...pB,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{...pB};default:return e}}function gB(){}function _B(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(+(e<10240))} KiB`:`${(e/1048576).toFixed(1)} MiB`}function vB(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 yB({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}=mB({accept:e,maxSize:t,multiple:!1,noClick:!!n,onDropAccepted:e=>{i(``),r(e[0]||null)},onDropRejected:e=>{r(null),i(vB(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:[_B(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 bB=`def query_order( +`))}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]: @@ -221,38 +235,38 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. if include_history: result["history"] = ["created", "paid"] return result -`;function xB(){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)(Ab,{code:bB,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 SB=fD().trim().min(1,`请填写显示名称`).max(128,`显示名称不能超过 128 个字符`),CB=fD().trim().min(2,`资源标识至少填写 2 个字符`).max(128,`资源标识不能超过 128 个字符`).regex(/^[a-z][a-z0-9._-]*$/,`资源标识只能包含小写字母、数字、点、下划线和连字符`),wB=fD().trim().min(1,`请填写 Python 标识`).max(128,`Python 标识不能超过 128 个字符`).regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`请输入有效的 Python 标识`),TB=fD().trim().url(`请输入有效的接口地址`).max(1024,`接口地址不能超过 1024 个字符`),EB=fD().trim().max(512,`凭证引用不能超过 512 个字符`).regex(/^env:\/\/[A-Za-z_][A-Za-z0-9_]*$/,`凭证引用需使用 env://环境变量名`),DB=fD().trim().max(4096,`描述不能超过 4096 个字符`).default(``),OB=XD({name:CB,displayName:SB,model:fD().trim().min(1,`请填写模型 ID`).max(256,`模型 ID 不能超过 256 个字符`),endpointUrl:TB,credentialRef:EB,description:DB.optional(),apiKey:fD().max(16384,`API Key 不能超过 16384 个字符`).default(``),temperature:OO().min(0,`temperature 需在 0-2 之间`).max(2,`temperature 需在 0-2 之间`).default(.2),maxTokens:OO().int(`max_tokens 需为 1-131072 的整数`).min(1,`max_tokens 需为 1-131072 的整数`).max(131072,`max_tokens 需为 1-131072 的整数`).default(2048),addressMode:nO([`endpoint`,`base`]).default(`endpoint`),wireApi:nO([``,`chat`,`responses`]).default(``)}),kB=XD({displayName:SB,name:CB,transport:nO([`stdio`,`sse`,`http`,`streamable-http`]),endpointUrl:fD().trim().max(1024,`Server URL 不能超过 1024 个字符`).default(``),command:fD().trim().max(4096,`Command 不能超过 4096 个字符`).default(``),args:fD().trim().max(8192,`Arguments 不能超过 8192 个字符`).default(``),apiKeyName:QD([iO(``),fD().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/,`环境变量名需为合法标识符`)]).default(``),apiKeyValue:fD().max(16384,`API Key 不能超过 16384 个字符`).default(``),description:DB}).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}SD().safeParse(e.endpointUrl).success||t.addIssue({code:`custom`,path:[`endpointUrl`],message:`请输入有效的 Server URL`})}),AB=XD({displayName:SB,name:wB,callableName:wB,description:fD().trim().max(1024,`描述不能超过 1024 个字符`).default(``),sourceMode:nO([`upload`,`workspace`]).default(`upload`),sourcePath:fD().trim().max(4096,`工作区路径不能超过 4096 个字符`).default(``)}).superRefine((e,t)=>{e.sourceMode===`workspace`&&!e.sourcePath&&t.addIssue({code:`custom`,path:[`sourcePath`],message:`请填写工作区 Python 文件`})}),jB=XD({value:fD().max(16384,`API Key 不能超过 16384 个字符`)}),MB=XD({sandbox:nO([`read-only`,`read_only`,`workspace-write`,`workspace-write-auto`,`full-access`]),buildAfterCreate:HD(),codexProxy:nO([`auto`,`forced`,`direct`]),cloudRegion:fD().trim().max(128,`Region 不能超过 128 个字符`).default(``),cloudBucket:fD().trim().max(128,`KS3 Bucket 不能超过 128 个字符`).default(``),cloudAccessKey:fD().trim().max(256,`Access Key 不能超过 256 个字符`).default(``),cloudSecretKey:fD().trim().max(256,`Secret Key 不能超过 256 个字符`).default(``),cloudAccountId:fD().trim().max(128,`Account ID 不能超过 128 个字符`).default(``)});function NB(e){return e.status===`ready`||e.status===`conflict`}function PB(e){return new Set(e.filter(NB).map(e=>e.candidateId))}async function FB({candidates:e,selectedIds:t,overwriteIds:n,commit:r,onResult:i}){let a=e.filter(e=>t.has(e.candidateId)&&NB(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 IB={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}},LB={provider:`模型服务`,builtin:`ksadk 内置`,local:`工作区自定义`,market:`市场`},RB=20;async function zB(e,t){let n=await e.text().catch(()=>``);try{return JSON.parse(n)?.error?.message||`${t}(${e.status})`}catch{return`${t}(${e.status})`}}function BB(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function VB(e){return e.replace(/^env:\/\//,``)}function HB(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 UB({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)(RB),[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 zB(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 zB(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 zB(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=IB[e],W=(0,s.useMemo)(()=>[{id:`name`,header:`名称`,minWidth:190,className:`resource-name-column`,headerClassName:`resource-name-column`,cell:e=>(0,G.jsx)(WB,{item:e})},{id:`source`,header:de.headings[0],minWidth:120,className:`resource-source-column`,headerClassName:`resource-source-column`,cell:e=>LB[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)(GB,{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)(KB,{item:e})},{id:`status`,header:`状态`,minWidth:92,className:`resource-status-column`,headerClassName:`resource-status-column`,cell:e=>(0,G.jsx)(qB,{item:e})},{id:`actions`,header:`操作`,minWidth:108,className:`actions-column resource-actions-column`,headerClassName:`actions-column resource-actions-column`,cell:e=>(0,G.jsx)(JB,{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)(xd,{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(IB).map(n=>(0,G.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e===n,onClick:()=>t(n),children:[IB[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)(Ih,{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)(Ih,{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)(Ih,{className:`compact-select`,ariaLabel:`资源排序`,value:p,options:[{value:`default`,label:`默认排序`},{value:`displayName:asc`,label:`名称升序`},{value:`displayName:desc`,label:`名称降序`}],onValueChange:m}),(0,G.jsx)(Ih,{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)(vm,{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)(YB,{model:A,onClose:()=>j(null),onChanged:oe}),M&&(0,G.jsx)(XB,{onClose:()=>N(!1),onAdded:()=>{N(!1),oe()}}),P&&(0,G.jsx)(ZB,{onClose:()=>F(!1),onConnected:()=>{F(!1),oe()}}),I&&(0,G.jsx)(QB,{item:I,onClose:()=>L(null)}),R&&(0,G.jsx)($B,{item:R,onClose:()=>z(null)}),B&&(0,G.jsx)(eV,{onClose:()=>V(!1),onCatalogChanged:oe}),H&&(0,G.jsx)(tV,{onClose:()=>ee(!1),onAdded:()=>{ee(!1),oe()}}),te&&(0,G.jsx)(Oa,{title:`确认删除资源「${te.displayName||te.name}」?`,description:`删除后已绑定该资源的 Agent 不会自动更新,需手动重新编辑。`,confirmText:`确认删除`,busy:U,onConfirm:le,onCancel:()=>ne(null)})]})}function WB({item:e}){let t=IB[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 GB({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 KB({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 qB({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 JB({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)(vd,{label:`${e.displayName} 的更多操作`,items:a})]})}function YB({model:e,onClose:t,onChanged:n}){let r=BB(e),i=VB(r),[a,o]=(0,s.useState)(null),c=S_({resolver:M_(jB),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 zB(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 zB(r,`凭证清除失败`));n?.(),J(`会话凭证已清除`,e.displayName),t()}catch(e){u({title:`凭证清除失败`,message:e.message})}f(``)}return(0,G.jsx)(Vg,{...c,children:(0,G.jsxs)(nk,{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)(rk,{kind:`error`,title:l.title,message:l.message})]})})}function XB({onClose:e,onAdded:t}){let n=S_({resolver:M_(OB),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 zB(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 zB(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(Ib(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)(nk,{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)(rk,{kind:`error`,title:`添加模型`,message:v})]})})}function ZB({onClose:e,onConnected:t}){let n=(0,s.useRef)(null),r=S_({resolver:M_(kB),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 zB(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(Ib(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 zB(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)(nk,{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)(Ih,{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)(rk,{kind:`error`,title:`连接失败`,message:a})]})})}function QB({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)(nk,{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 $B({item:e,onClose:t}){let[n,r]=(0,s.useState)(!1),i=e.contract||{},a=[[`Resource ID`,e.resourceId],[`来源`,LB[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)(nk,{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)(ez,{title:e.displayName||e.name,endpoint:`/api/v1/catalog/skills/${encodeURIComponent(e.resourceId)}/files`,onClose:()=>r(!1)})]})}function eV({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 zB(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=PB(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 FB({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 zB(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)(nk,{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,` / `,PB(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} 个文件 · ${HB(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)(rk,{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)(rk,{kind:`error`,title:`Skill 发现或导入失败`,message:v}),w&&(0,G.jsx)(Oa,{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)(ez,{title:E.displayName||E.name||`Skill`,endpoint:`/api/v1/catalog/skills/discoveries/${encodeURIComponent(i.inspectionToken)}/candidates/${encodeURIComponent(E.candidateId)}/files`,onClose:()=>D(null)})]})}function tV({onClose:e,onAdded:t}){let n=S_({resolver:M_(AB),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 zB(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(Ib(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)(nk,{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)(xB,{}),r===`upload`?(0,G.jsx)(Y,{label:`Python 文件`,requirement:`required`,hint:`拖放 .py 文件,或点击选择;检查只解析 AST,不会执行脚本。`,children:(0,G.jsxs)(`div`,{children:[(0,G.jsx)(yB,{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)(Ih,{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)(rk,{kind:`error`,title:`Tool 添加失败`,message:d})]})})}function nV(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 rV({value:e,onChange:t,error:n,generate:r=nV,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 iV={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 aV(e){return e&&iV[e]?.text||iV.resolving_model.text}function oV(e){return e&&iV[e]?.tip||iV.resolving_model.tip}function sV(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 cV({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=oV(e),o=t?sV(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:aV(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 lV={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`},uV=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 dV(e,t){return(0,s.useSyncExternalStore)(n=>e.subscribe(t,n),()=>e.getEntries(t),()=>e.getEntries(t))}function fV(e){return e==null}function pV(e,t,n){return Object.defineProperty(e,t,{writable:!0,value:n,enumerable:!1})}function mV(e,t){return arguments.length===1?t=>mV(e,t):e in globalThis&&t instanceof globalThis[e]||Object.prototype.toString.call(t).slice(8,-1)===e}function hV(e){return mV(`ArrayBuffer`,e)||mV(`SharedArrayBuffer`,e)}function gV(e){return hV(e)||ArrayBuffer.isView(e)}var _V;(function(e){e.is=hV,e.isSource=gV;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 yV(e){return vV(e,[45,95],45)}var bV=yV,xV;(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})(xV||={});var SV=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`)},CV=function*(){}.constructor,wV=async function*(){}.constructor;function TV(e){return!(!e.prototype||e instanceof CV||wV!==Function&&e instanceof wV)}function EV(e,t){if(e===Object.prototype)return t;let n=Object.create(EV(Object.getPrototypeOf(e),t));for(let t of Reflect.ownKeys(e))Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function DV(e){return e&&(typeof e==`object`||typeof e==`function`)}function OV(e,t){let n=e;for(;n;){let e=Reflect.getOwnPropertyDescriptor(n,t);if(e)return e;n=Object.getPrototypeOf(n)}}function kV(e,t){if(!DV(t))return t;if(Object.hasOwn(t,Q.shadow))return Object.getPrototypeOf(t);let n=t[Q.tracker];return n?PV(e,t,n):t}function AV(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 jV(e,t,n){return AV(e,Object.defineProperty(Object.create(null),t,{value:n,writable:!1}))}function MV(e,t,n,r){if(!n)return r;let i=Reflect.getOwnPropertyDescriptor(t,n)?.value;return i?jV(r,n,e.extend({[Q.shadow]:i})):r}function NV(e,t,n,r){return new Proxy(t,{apply:(t,i,a)=>(i===n&&(i=r),kV(e,Reflect.apply(t,i,a)))})}function PV(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}`,jV(e,Q.receiver,i));let a,o,s=OV(t,r);s&&`value`in s?o=s.value:(a=MV(e,t,n.property,i),o=Reflect.get(t,r,a));let c=o?.[Q.tracker];return c?PV(e,o,c):!n.noShadow&&typeof o==`function`?(a??=MV(e,t,n.property,i),NV(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,jV(e,Q.receiver,a));let o=MV(e,t,n.property,a);return Reflect.set(t,r,i,o)},apply:(e,t,n)=>FV(r,e,t,n)});return r}function FV(e,t,n,r){return t[Q.invoke]?t[Q.invoke].apply(e,r):Reflect.apply(t,n,r)}function IV(e,t,n){let r=function(...e){return FV(PV(r.ctx,r,n),r,this,e)};return pV(r,`name`,e),Object.setPrototypeOf(r,t)}function LV(e,t,n){let r=e.error.stack.split(` +`;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 RV(e,t=zV()){let n={offset:1,error:Error()};try{let r=e(n);return DV(r)&&`then`in r?r.then(void 0,e=>LV(n,e,t)):r}catch(e){LV(n,e,t)}}function zV(e=0){let t=Error();return()=>t.stack.split(` -`).slice(3+e)}function BV(e){return e!==null&&e!==!1&&e!==void 0}var VV=class{ctx;_hooks={};constructor(e){this.ctx=e,pV(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 SV)[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?.[uH.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(BV(n))return n}}bail(...e){for(let t of this.dispatch(`bail`,e)){let n=t(...e);if(BV(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}},HV={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)=>WV.color(t,WV.code(n.name,t.colors),e)};function UV(e){return e instanceof Error&&Array.isArray(e.errors)}var WV=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?KV:GV:[];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]??HV[i];return typeof a==`function`?a(n.shift(),e,t):r});let i=e.formatters?.o??HV.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(UV(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??=bV(n.name),new WV({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 JV(e){let t=e.stack.split(` +`),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 YV=[`prototype`,`then`];function XV(e){return typeof e==`symbol`||YV.includes(e)||parseInt(e).toString()===e||e.startsWith(`_`)}var ZV=class{ctx;static handler={get:(e,t,n)=>{if(XV(t))return Reflect.get(e,t,n);if(Reflect.has(e,t))return kV(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 kV(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?JV(e):e}},set:(e,t,n,r)=>{if(XV(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 JV(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?JV(e):e}},has:(e,t)=>XV(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,pV(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 kV(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(fV(r))return r;let a=t?AV(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?AV(n,a):a;return Reflect.set(a,e,t,o)}})},`ctx.mixin(${JSON.stringify(e)})`)}trace(e){return kV(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)})}},QV=Symbol.for(`ValidationError`),$V=class extends TypeError{name=`ValidationError`;constructor(e){super(`invalid config: +`),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($V.prototype,QV,{value:!0});function eH(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 $V(n.issues);return n.value}var tH=new WeakMap;function nH(e){let t=e();return tH.get(e)?.()??t}function rH(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 iH=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`}})(iH||={});var aH=`__INACTIVE__`,oH=class{parent;inject;runtime;uid;ctx;config;_config;state=0;dispose;store;inertia;_hooks=Object.create(null);_disposables=new SV;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[uH.intercept]=Object.create(e[uH.intercept]);for(let[e,n]of t)fV(n)||(this.ctx[uH.intercept][e]=n)}this._runner={epoch:aH,getOuterStack:i,execute:function(){if(TV(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,rH(this.context,this),this.ctx.registry.has(r.callback)&&(e(),r.fibers.length||this.ctx.registry.delete(r.callback)),this._setEpoch(aH),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 iH(`INACTIVE_EFFECT`)}_execute(e){let t=e.epoch;return RV(n=>{let r=t=>{if(typeof t==`function`)e.collect(t);else if(!fV(t))throw TypeError(`Invalid effect`)},i=e.execute.call(this);if(typeof i==`function`)return e.collect(i);if(!fV(i)){if(!DV(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 iH(`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(()=>nH(t));else{let n=nH(t);DV(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:zV()},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(DV(t)&&`then`in t){let e=Promise.resolve(t).finally(()=>{h(),m===e&&(m=void 0)});return m=e}return h(),t},y=pV(()=>s.epoch?(s.epoch=!1,v(()=>l?_(g()):c?_(c):a())):p?m:void 0,Q.effect,o);tH.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 DV(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===aH?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(kV(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=aH;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!==aH&&t===aH?(this.inertia=this._reload(),1):(this.inertia=this._unload(),5)))}_resolveConfig(e){return e=this.context.waterfall(this,`internal/config`,e,()=>e),this.runtime?eH(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=aH}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 RV(async t=>{await Promise.resolve(),t.error=Error(),await nH(e)},this._runner.getOuterStack)}catch(e){this.ctx.logger.error(e)}})),this.store=void 0,this._updateState(()=>{if(this._runner.epoch===aH)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(aH),this._refresh(),await this.await()}update(e,t=!1){if(this.assertActive(),this._config=e,this.state!==2){this._error=void 0,this._setEpoch(aH),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 sH(e){return e&&typeof e==`object`&&typeof e.apply==`function`}function cH(e,t){return function(n,r){if(r.kind===`class`)Object.hasOwn(n,`inject`)||(pV(n,`inject`,Object.create(Object.getPrototypeOf(n).inject??null)),pV(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?AV(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})(cH||={});var lH=class{ctx;_counter=0;_internal=new Map;constructor(e){this.ctx=e,pV(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(sH(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=zV()){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 SV,Config:e.Config},this._internal.set(r,i)}let a=new oH(this.ctx,t,cH.resolve(e.inject),i,n),o=Object.create(a);return o.then=(e,t)=>a.await().then(e,t),o}},uH=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,ZV.handler);return this.root=e,this.baseUrl=void 0,this.fiber=new oH(e,{},Object.create(null),null,()=>[]),this.reflect=new ZV(e),this.registry=new lH(e),this.events=new VV(e),this.logger=new qV(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(kV(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=IV(t,EV(Object.getPrototypeOf(this),Function.prototype),r)),n.ctx=e,n.name=t,pV(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]?IV(this.name,this,this[Q.tracker]):Object.create(this),Object.assign(n,t)}[Q.resolveConfig](e,t){let n=this.ctx[uH.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 dH=class{contributions=new uV;context=new uH;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()}},fH=new dH,pH=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}];function mH(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?[...pH]:[...pH,{value:`plugin`,label:r.size===1?`${n[0]?.displayName||t.find(e=>e.selectable)?.displayName||`DSH AgentProvider`} · Plugin`:`DSH AgentProvider · ${r.size} 个可用`}]}var hH=`agentkit.studio.agentDraft.v1`;function gH(e){return e?.requiredSecretRefs?.[0]||e?.contract?.credentialRef||e?.contract?.credential_ref||e?.contract?.requiredSecretRefs?.[0]||e?.contract?.required_secret_refs?.[0]||``}var _H={loose:{title:`宽松权限策略`,description:`本地 Tool 全部自动允许,外部操作仍需审批。`},strict:{title:`严格权限策略`,description:`只读 Tool 自动允许,外部或写入操作需要审批。`},custom:{title:`自定义权限策略`,description:`沿用每个 Tool Contract 中配置的审批策略。`}},vH=[{value:`codex`,label:`Codex · ManagedRuntime`},{value:`adk`,label:`Google ADK · Python source`},{value:`langgraph`,label:`LangGraph · Python graph`}],yH=[[`定义 Agent`,`模板与系统提示词`],[`绑定能力`,`Model · Tool · MCP · Skill`],[`Prompt 与策略`,`检查并调整`],[`检查并创建`,`构建与打开会话`]],bH=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]),xH=[`deepseek`,`glm`,`kimi`,`minimax`,`qwen`];function SH(e){let t=String(e.contract?.model||e.name||``).toLowerCase(),n=t.includes(`/`)?t.split(`/`,2)[1]:t,r=n.replaceAll(`.`,`-`),i=xH.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?xH.length:i,a,n]}function CH(e,t){let[n,r,i]=SH(e),[a,o,s]=SH(t);if(n!==a)return n-a;for(let e=0;enull);if(!t.ok)throw Error(n?.error?.message||`构建状态获取失败(${t.status})`);if(bH.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 OH({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=dV(fH.contributions,lV.agentProvider),[T,E]=(0,s.useState)(1),[D,O]=(0,s.useState)(1),k=S_({resolver:M_(LO),defaultValues:{name:`New Agent`,slug:nV(),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=S_({resolver:M_(zO),defaultValues:{name:``,slug:nV(),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=S_({resolver:M_(BO),defaultValues:{name:``,slug:nV()}}),[Ft,It]=(0,s.useState)(null),Lt=S_({resolver:M_(VO),defaultValues:{name:``,slug:nV(),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(gH).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(CH),[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:KO(e),disabled:!e.selectable})),[Jt]),Zt=(0,s.useMemo)(()=>mH(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=gH(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`${hH}: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(` +`))}};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{WO(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:WO(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(Ib(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 DH(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:nV(),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(TH(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=EH(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(Ib(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:nV()})}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(Ib(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:nV(),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(Ib(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=_H[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?[...yH.slice(0,3),[`检查并创建`,`校验声明与打开会话`]]:yH,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)(xd,{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)(Da,{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)(tk,{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:wH(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)(cV,{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:[vH.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)(Ih,{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)(Ih,{id:`conversationRuntime`,ariaLabel:`Runtime`,value:tn,options:vH,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)(Ob,{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)(Ob,{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)(Ob,{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)(Ob,{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)(rV,{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:vH.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)(yB,{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)(rV,{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)(Ab,{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)(rV,{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)(Ab,{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)(rV,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Ob,{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)(Ob,{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)(Ob,{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)(Ob,{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)(Ih,{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)(Ih,{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)(Ih,{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)(Da,{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)(YB,{model:Pe,onClose:()=>Fe(null),onChanged:Ut}),Ie&&(0,G.jsx)(ZB,{onClose:()=>Re(!1),onConnected:()=>{Re(!1),Ut()}})]})}function kH(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 AH(e){return e.displayName||e.command.payload.content?.slice(0,28)||e.taskId}function jH(e){return e.kind===`once`?`单次 · ${kH(e.at)}`:e.kind===`interval`?`每 ${e.everySeconds||60} 秒`:e.expression||`Cron`}function MH(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 NH(e){return{...MH(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 PH(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 FH(e){return e===`succeeded`?`成功`:e===`failed`?`失败`:e===`running`?`运行中`:e===`accepted`?`已接收`:e===`claimed`?`已认领`:e===`skipped`?`已跳过`:e===`cancelled`?`已取消`:e||`未知`}function IH(e){return e===`succeeded`?`ready`:e===`failed`||e===`cancelled`?`failed`:`pending`}function LH(e){return e.state===`claimed`||e.state===`accepted`||e.state===`running`}var RH={DISPATCH_FAILED:`提交失败`,PLUGIN_EXECUTION_FAILED:`插件执行失败`,RUNTIME_TIMEOUT:`执行超时`,misfire_skipped:`错过计划时间,已按策略跳过`,concurrency_forbid_active_occurrence:`已有执行未结束,本次已跳过`,runtime_completed:`运行时已确认完成`};function zH(e){return e?RH[e]||e:``}function BH(e){if(!e.errorCode)return`执行说明`;let t=zH(e.errorCode);return t===e.errorCode?t:`${t} · ${e.errorCode}`}function VH(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 HH({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=VH(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":IH(e.state),children:FH(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:kH(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:FH(e.state)}),(0,G.jsx)(`time`,{children:kH(e.at)}),(e.errorCode||e.detail)&&(0,G.jsx)(`small`,{children:zH(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:BH(e)}),(0,G.jsx)(`span`,{children:zH(e.detail)||`—`})]})]},e.occurrenceId)})}):(0,G.jsx)(`p`,{className:`automation-empty`,children:`还没有执行记录。`})}function UH({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)(()=>MH(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(MH(e))},[e,w]);let R=b.some(LH);(0,s.useEffect)(()=>{if(!v||!R)return;let e=window.setInterval(()=>{L(v,!1).then(e=>{e.some(LH)||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,AH(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:AH(e)}),(0,G.jsx)(`span`,{children:B.get(e.target.agentId||``)||e.target.agentId||`历史任务`})]})},{id:`trigger`,header:`触发规则`,minWidth:150,cell:e=>jH(e.schedule)},{id:`next`,header:`下次执行`,minWidth:120,cell:e=>kH(e.nextRunAt)},{id:`mode`,header:`会话`,minWidth:100,cell:e=>e.continuity===`continue_session`?`继续会话`:`新会话`},{id:`recent`,header:`最近终态`,minWidth:110,cell:e=>te.has(e.taskId)?FH(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(NH(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=PH(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(MH(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={...NH(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(PH(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)(xd,{children:(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>{T(``),C(MH(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:kH(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)(vm,{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=>`查看定时任务 ${AH(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(MH(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:AH(v)}),(0,G.jsxs)(`p`,{children:[`下次执行 `,kH(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:jH(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]?`${FH(b[0].state)} · ${kH(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)(HH,{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(MH(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)(HH,{items:ee,taskNames:V,agentNames:B})]}),A&&(0,G.jsx)(Oa,{title:`删除定时任务「${AH(A)}」?`,description:`任务定义将被删除;已写入的执行历史仍可用于审计。`,confirmText:`删除任务`,busy:!1,onConfirm:()=>void oe(),onCancel:()=>j(null)})]})}function WH(e,t){let n=new URLSearchParams({buildId:e});return t&&n.set(`agentId`,t),`#/deployments/new?${n.toString()}`}function GH(e){return`#/deployments/${encodeURIComponent(e)}`}function KH(e){if(window.location.hash===e){window.dispatchEvent(new HashChangeEvent(`hashchange`));return}window.location.hash=e}function qH(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function JH({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(` +`),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)(nk,{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)(Ab,{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 YH({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||qH(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&&KH(N?GH(N.id):WH(M.id,D.metadata.id))}return(0,G.jsxs)(`div`,{className:`page-container`,"data-layout":`document`,children:[(0,G.jsxs)(xd,{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)(vd,{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:qH(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)(UH,{currentAgentId:e,agents:[{metadata:{id:e,name:D.metadata.name}}],onSelectAgent:()=>{},scopedAgentId:e,embedded:!0,onTaskCountChanged:C}),p&&(0,G.jsx)(Oa,{title:`确认删除 Agent「${D.metadata.name}」?`,description:`Agent ID:${D.metadata.id}。删除后其配置与 Revision 将移除,此操作不可撤销。`,confirmText:`确认删除`,busy:v,onConfirm:E,onCancel:()=>m(!1)}),h&&(0,G.jsx)(JH,{detail:o,catalog:l,buildId:M?.id,onClose:()=>_(!1)})]})}var XH=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`]);function ZH(e){return e===`SUCCEEDED`?`ready`:[`FAILED`,`CANCELLED`,`TIMED_OUT`].includes(e)?`failed`:e===`IDLE`?`idle`:`pending`}function QH(e){return{IDLE:`尚未构建`,QUEUED:`排队中`,RUNNING:`构建中`,SUCCEEDED:`构建完成`,FAILED:`构建失败`,CANCELLED:`已取消`,TIMED_OUT:`已超时`}[e]||e}function $H(e,t=42){return e.length>t?`${e.slice(0,t)}…`:e}function eU(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 tU(e){let t=await g(`/api/v1${e}`);return t.ok?eU(await t.text()):[]}function nU({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:QH(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(` +`);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),KH(WH(x.id,e)))}async function k(){if(!y||p)return;let e=++_.current;m(!0),c(`QUEUED`),f(`提交中`),u(T?`提交 YAML 声明校验… +`))},[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 tU(`/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(` +`);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`),XH.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=ZH(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)(xd,{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:$H(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?`· ${$H(d,28)}`:``]}),(0,G.jsx)(`pre`,{ref:h,children:l})]})]})]})}var rU=new Set([`hermes`,`openclaw`]);function iU(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 aU(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(iU(e.capabilities))return{kind:`studio-session-events`,reason:`declared-session-event-chat-capability`};let t=String(e.runtimeType||e.framework||``).trim().toLowerCase();return rU.has(t)?{kind:`official-dashboard`,reason:`native-runtime-without-session-event-chat-capability`}:{kind:`studio-session-events`,reason:`studio-compatible-framework`}}var oU={READY:5,DEPLOYING:4,ADMITTING:3,FAILED:2,ROLLED_BACK:1};function sU(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=oU[r.status||``]||0,l=oU[i?.status||``]||0;(!i||o&&!s||o===s&&c>l)&&n.set(e,r)}return[...n.values()]}function cU(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=sU(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 lU=new Set([`SUCCEEDED`,`FAILED`,`CANCELLED`,`TIMED_OUT`,`INTERRUPTED`]),uU=`agentkit-studio:deployment-operation-attempts:v2`,dU=500,fU=new Set([403,404,410]),pU=new Map,mU={},hU=class extends Error{status;constructor(e,t){super(e),this.status=t,this.name=`OperationStatusError`}};function gU(){try{return typeof document>`u`?void 0:document.defaultView?.localStorage}catch{return}}function _U(e,t){return t?g(e,{signal:t}):g(e)}function vU(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 yU(e){try{let t=gU();if(!t)return{...mU[e]||{}};let n=JSON.parse(t.getItem(e)||`{}`);return n&&typeof n==`object`?n:{}}catch{return{...mU[e]||{}}}}function bU(e,t){mU={...mU,[e]:{...t}};try{gU()?.setItem(e,JSON.stringify(t))}catch{}}function xU(e){return`studio-${e}-${globalThis.crypto?.randomUUID?.()||`${Math.random().toString(36).slice(2)}-${Date.now().toString(36)}`}`}function SU(e,t,n){let r=yU(e),i=r[t];if(i?.idempotencyKey)return i;let a={actionKey:t,idempotencyKey:xU(n),operationId:``};return r[t]=a,bU(e,r),a}function CU(e,t,n){let r={...t,operationId:n},i=yU(e);return i[t.actionKey]=r,bU(e,i),r}function wU(e,t){let n=yU(e),r=n[t.actionKey];!r||r.idempotencyKey!==t.idempotencyKey||(delete n[t.actionKey],bU(e,n))}function TU(e){return e instanceof DOMException&&e.name===`AbortError`}function EU(e){if(e.aborted)throw new DOMException(`Operation aborted`,`AbortError`)}async function DU(e,t){EU(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 OU(e,t){let n=pU.get(e)||Promise.resolve(),r,i=new Promise(e=>{r=e}),a=n.then(()=>i);pU.set(e,a),await n;try{return await t()}finally{r(),pU.get(e)===a&&pU.delete(e)}}async function kU(e,t,n){EU(t);let r=navigator.locks;return r?r.request(e,{mode:`exclusive`,signal:t},async()=>n()):OU(e,async()=>(EU(t),n()))}async function AU(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`${uU}:${encodeURIComponent(r)}:${encodeURIComponent(i)}`}async function jU(e,t,n){for(;;){await DU(dU,n);let r=await g(`/api/v1/operations/${encodeURIComponent(e)}`,{signal:n});if(!r.ok)throw new hU(`${t}状态读取失败(${r.status})`,r.status);let i=await r.json();if(lU.has(i.status))return i}}async function MU(e,t,n,r,i,a){let o=`${e}:${t}`,s=await kU(o,i,async()=>{let o=SU(e,t,n);if(!o.operationId){let t=await a(o.idempotencyKey,i);if(!t.ok){t.status<500&&wU(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 wU(e,o),Error(`${r}提交结果缺少 operation_id`);o=CU(e,o,s)}return o}),c;try{c=await jU(s.operationId,r,i)}catch(t){throw t instanceof hU&&fU.has(t.status)&&await kU(o,i,async()=>{wU(e,s)}),t}return await kU(o,i,async()=>{wU(e,s)}),c}function NU(e){return[`READY`,`RUNNING`].includes(e)?`ready`:[`FAILED`,`ROLLED_BACK`,`ERROR`,`TERMINATED`].includes(e)?`failed`:[`ADMITTING`,`DEPLOYING`,`CREATING`,`UPDATING`].includes(e)?`pending`:`idle`}function PU(e){return{ADMITTING:`准入中`,DEPLOYING:`部署中`,READY:`已就绪`,FAILED:`部署失败`,ROLLED_BACK:`已回滚`,RUNNING:`运行中`,CREATING:`创建中`,UPDATING:`更新中`,ERROR:`异常`,TERMINATED:`已终止`}[e]||`状态未知`}function FU(e,t=28){return e.length>t?`${e.slice(0,t)}…`:e}function IU(){let e=window.location.hash.match(/^#\/deployments\/([^/?]+)(?:\?.*)?$/),t=e?decodeURIComponent(e[1]):``;return t===`new`?``:t}function LU(){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 RU(e){if(!e)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(`zh-CN`,{hour12:!1})}function zU({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)(()=>LU()),[k,j]=(0,s.useState)([]),[M,N]=(0,s.useState)(()=>LU()?.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([_U(`/api/v1/deployments`,e),_U(`/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(()=>_U(`/api/v1/cloud-agents/${encodeURIComponent(t)}`,e)).then(async e=>e.ok?await e.json():null).catch(e=>{if(TU(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=cU(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){!TU(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=LU();if(O(e),e){N(e.buildId),b(null);return}let t=IU();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=>NU(e.status)===`ready`).length,pending:r.filter(e=>NU(e.status)===`pending`).length,failed:r.filter(e=>NU(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`?vU(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=vU(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(aU(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 _U(`/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 _U(`/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 _U(`/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 _U(`/api/v1/cloud-agents/${encodeURIComponent(a.agentId)}`,n).catch(e=>{if(TU(e))throw e;return null});e?.ok&&(o=vU(a,await e.json()))}if(n?.aborted)return;i(t=>t.map(t=>t.id===e.id?o:t));let s=await _U(`/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 _U(`/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(TU(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 MU(await AU(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||`部署未完成`);EU(n.signal),await ne(n.signal),EU(n.signal);let i=String(r.resourceId||``).trim();KH(i?GH(i):`#/deployments`),J(`已提交云端部署`,`${e.agentName||e.agentId} · ${e.id}`)}catch(e){!TU(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 MU(await AU(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||`更新未完成`);EU(r.signal),b(null),await ne(r.signal),EU(r.signal),J(`已提交云端更新`,`Build ${t}`)}catch(e){!TU(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 MU(await AU(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||`回滚未完成`);EU(o.signal),h(!1),p(``),await ne(o.signal),await se(e,!1,o.signal),EU(o.signal),J(`已提交版本回滚`,`云端版本 ${n}`)}catch(e){!TU(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)(xd,{children:[(0,G.jsxs)(`button`,{className:`button secondary`,type:`button`,onClick:()=>KH(`#/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:FU(e.id,24)}),(0,G.jsx)(`time`,{className:`deployment-version-time`,dateTime:e.createdAt||void 0,children:RU(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=aU(y.deployment);return(0,G.jsxs)(`div`,{className:`delivery-page deployment-detail-page`,"data-layout":`document`,children:[(0,G.jsxs)(xd,{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`}),NU(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:PU(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:RU(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:RU(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)(Oa,{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)(xd,{children:[(0,G.jsxs)(`button`,{className:`button accent`,type:`button`,onClick:()=>KH(`#/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=aU(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:FU(e.agentId||e.id,24)})]})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-status-badge`,"data-state":NU(e.status),children:PU(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:FU(e.versionId||`—`,20)})}),(0,G.jsx)(`td`,{children:(0,G.jsx)(`span`,{className:`delivery-updated-at`,children:RU(e.updatedAt)})}),(0,G.jsxs)(`td`,{className:`delivery-row-actions`,children:[NU(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)(vd,{label:`${e.agentName||e.agentId||e.id} 的更多操作`,items:[{label:n?`正在刷新状态`:`刷新状态`,disabled:n,onSelect:()=>void re(e)},...NU(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:()=>KH(`#/deployments/new`),children:`部署 Agent`}),(0,G.jsx)(`button`,{className:`button secondary`,type:`button`,onClick:e,children:`创建 Agent`})]})]}),C&&(0,G.jsx)(Oa,{title:`删除云端 Agent?`,description:`将删除 ${C.agentId||C.id} 的云端实例和本地部署记录。此操作不会删除本地 Agent 与 Build。`,confirmText:`删除云端 Agent`,busy:T,onConfirm:()=>void W(),onCancel:()=>w(null)})]})}var BU=e=>typeof e==`boolean`||e instanceof Boolean,VU=e=>typeof e==`number`||e instanceof Number,HU=e=>typeof e==`bigint`||e instanceof BigInt,UU=e=>!!e&&e instanceof Date,WU=e=>typeof e==`string`||e instanceof String,GU=e=>Array.isArray(e),KU=e=>typeof e==`object`&&!!e,qU=e=>!!e&&e instanceof Object&&typeof e==`function`;function JU(e,t){return t===void 0&&(t=!1),!e||t?`"${e}"`:e}function YU(e,t,n){return n?JSON.stringify(e):t?`"${e}"`:e}function XU(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 ZU({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},JU(t,l.quotesForFieldNames),`:`):(0,s.createElement)(`span`,{className:l.label},JU(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)(tW,{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 ZU(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},JU(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 QU(e){let{field:t,value:n,style:r,lastElement:i,shouldExpandNode:a,clickToExpandNode:o,level:s,outerRef:c,beforeExpandChange:l}=e;return XU({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 $U(e){let{field:t,value:n,style:r,lastElement:i,level:a,shouldExpandNode:o,clickToExpandNode:s,outerRef:c,beforeExpandChange:l}=e;return XU({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 eW(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):WU(n)?(a=YU(n,!r.noQuotesForStringValues,r.stringifyStringValues),o=r.stringValue):BU(n)?(a=n?`true`:`false`,o=r.booleanValue):VU(n)?(a=n.toString(),o=r.numberValue):HU(n)?(a=`${n.toString()}n`,o=r.numberValue):a=UU(n)?n.toISOString():qU(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},JU(t,r.quotesForFieldNames),`:`),(0,s.createElement)(`span`,{className:o},a),!i&&(0,s.createElement)(`span`,{className:r.punctuation},`,`))}function tW(e){let t=e.value;return GU(t)?(0,s.createElement)($U,Object.assign({},e)):KU(t)&&!UU(t)&&!qU(t)?(0,s.createElement)(QU,Object.assign({},e)):(0,s.createElement)(eW,Object.assign({},e))}var nW={"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`},rW={container:nW[`container-light`],basicChildStyle:nW[`basic-element-style`],childFieldsContainer:nW[`child-fields-container`],label:nW[`label-light`],clickableLabel:nW[`clickable-label-light`],nullValue:nW[`value-null-light`],undefinedValue:nW[`value-undefined-light`],stringValue:nW[`value-string-light`],booleanValue:nW[`value-boolean-light`],numberValue:nW[`value-number-light`],otherValue:nW[`value-other-light`],punctuation:nW[`punctuation-light`],collapseIcon:nW[`collapse-icon-light`],expandIcon:nW[`expand-icon-light`],collapsedContent:nW[`collapsed-content-light`],noQuotesForStringValues:!1,quotesForFieldNames:!1,ariaLables:{collapseJson:`collapse JSON`,expandJson:`expand JSON`},stringifyStringValues:!1};nW[`container-dark`],nW[`basic-element-style`],nW[`child-fields-container`],nW[`label-dark`],nW[`clickable-label-dark`],nW[`value-null-dark`],nW[`value-undefined-dark`],nW[`value-string-dark`],nW[`value-boolean-dark`],nW[`value-number-dark`],nW[`value-other-dark`],nW[`punctuation-dark`],nW[`collapse-icon-dark`],nW[`expand-icon-dark`],nW[`collapsed-content-dark`];var iW=()=>!0,aW=e=>e<1,oW=e=>{let{data:t,style:n=rW,shouldExpandNode:r=iW,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&&KU(t)?Object.entries(t).map(e=>{let[t,o]=e;return(0,s.createElement)(tW,{key:t,field:t,value:o,style:{...rW,...n},lastElement:!0,level:1,shouldExpandNode:r,clickToExpandNode:i,beforeExpandChange:a,outerRef:l})}):(0,s.createElement)(tW,{value:t,style:{...rW,...n},lastElement:!0,level:0,shouldExpandNode:r,clickToExpandNode:i,outerRef:l,beforeExpandChange:a}))};function sW(e){return e===`failed`||e===`canceled`||e===`cancelled`||e===`interrupted`?3:e===`completed`?2:+(e===`running`)}function cW(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=sW(t.status)>=sW(e?.status||null)?t.status??e?.status??null:e?.status??null,d=!!(u&&sW(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 lW(e,t){let n=e.byRecordId.get(t.recordId);if(n===void 0){e.byRecordId.set(t.recordId,e.items.length),e.items.push(cW(void 0,t));return}e.items[n]=cW(e.items[n],t)}function uW(e){return{...e,items:[...e.items],bySeq:new Map(e.bySeq),byRecordId:new Map(e.byRecordId)}}function dW(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),lW(n,t),n.lastSeqId=t.seqId);return n}function fW(e,t,n=!0){if(e.bySeq.has(t.seqId))return e;let r=uW(e);if(r.bySeq.set(t.seqId,t),t.seqId<=r.lastSeqId)return r;if(!n)return lW(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;)lW(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 pW(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=dW([...r.values()],n);return i.followTail=e.followTail,i}function mW(e){return e===null||Number.isNaN(e)?`不可用`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(e<1e4?2:1)} s`}function hW(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 gW(e){return[vW(e),e.status||`未上报`,mW(e.durationMs)].join(` · `)}function _W(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:{}}function vW(e){let t=e.details.name??e.details.model;return typeof t==`string`&&t?t:e.summary}function yW(e,t){let n=_W(e.details.usage)[t];return typeof n==`number`?String(n):`-`}function bW(e){return{user:`User`,context:`Context`,assistant:`Assistant`,tool:`Tool`,approval:`Approval`,artifact:`Artifact`,system:`System`}[e]}function xW(e){return e.category===`user`||e.category===`context`?`input`:e.category===`assistant`?`model`:e.category===`tool`?`tools`:null}function SW(e,t){let n=new URLSearchParams({limit:`100`});return t&&n.set(`invocationId`,t),`/api/v1/sessions/${encodeURIComponent(e)}/events?${n}`}function CW({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:vW(e)}),(0,G.jsxs)(`span`,{children:[bW(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 wW({sessionId:e,invocationId:t,onSelectionChange:n}){let[r,i]=(0,s.useState)(()=>dW()),[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(dW()),h(null),g(SW(e,t)).then(async e=>{if(!e.ok)throw Error(`轨迹加载失败(${e.status})`);return e.json()}).then(a=>{if(n)return;let o=dW(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=>fW(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)=>fW(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=>pW(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(_W(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=>xW(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 · `,mW(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=>xW(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:vW(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":gW(t),onClick:()=>h(t.recordId),children:[(0,G.jsx)(`span`,{className:`trajectory-row-icon`,children:hW(t.category)}),(0,G.jsxs)(`span`,{className:`trajectory-row-copy`,children:[(0,G.jsx)(`strong`,{children:vW(t)}),(0,G.jsxs)(`small`,{children:[bW(t.category),` · `,t.status||`未上报`]})]}),C.hasUsage&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:yW(t,`input_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:yW(t,`output_tokens`)}),(0,G.jsx)(`span`,{className:`trajectory-row-metric`,children:yW(t,`reasoning_tokens`)})]}),(0,G.jsx)(`span`,{className:`trajectory-row-duration`,children:mW(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 TW(e,t=18){let n=String(e||``);return n.length>t?`${n.slice(0,t)}…`:n}function EW(e,t=`-`){return e==null||e===``?t:String(e)}function DW(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 OW(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 kW(e){return e==null?`未上报`:new Intl.NumberFormat(`zh-CN`).format(Number(e))}function AW(e){if(e==null||typeof e==`boolean`)return null;let t=Number(e);return Number.isFinite(t)&&t>=0?t:null}function jW(e){let t=AW(e.totalTokens);if(t!==null&&e.usageCompleteness?.totalTokens!==!1)return t;let n=AW(e.inputTokens),r=AW(e.outputTokens);return n!==null&&r!==null&&e.usageCompleteness?.inputTokens!==!1&&e.usageCompleteness?.outputTokens!==!1?n+r:null}function MW(e){return[e.inputTokens,e.outputTokens,e.totalTokens].some(e=>AW(e)!==null)}function NW(e){let t=jW(e);return t===null?MW(e)?`部分上报`:`未上报`:kW(t)}function PW(e){let t=AW(e.inputTokens),n=AW(e.outputTokens);return`${t===null?`—`:`${e.usageCompleteness?.inputTokens===!1?`≥`:``}${kW(t)}`} 输入 · ${n===null?`—`:`${e.usageCompleteness?.outputTokens===!1?`≥`:``}${kW(n)}`} 输出`}function FW(e){let t=jW(e);if(t!==null)return kW(t);if(AW(e.totalTokens)!==null)return`部分上报`;let n=AW(e.inputTokens),r=AW(e.outputTokens);return n!==null&&r!==null||n!==null&&e.usageCompleteness?.inputTokens===!1||r!==null&&e.usageCompleteness?.outputTokens===!1?`部分上报`:n===null?r===null?`未上报`:`${kW(r)} 输出`:`${kW(n)} 输入`}function IW(e){try{let t=Number(BigInt(String(e||`0`))/1000000n);return t?new Date(t).toISOString():`-`}catch{return`-`}}function LW(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 RW(e){try{return JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t,2)}catch{return String(e)}}function zW(e){return e==null?`-`:typeof e==`object`?RW(e):String(e)}var BW={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 节点`}},VW=[`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 HW(e){if(!e)return``;for(let t of VW){let n=e[t];if(typeof n==`string`&&n.trim())return n;if(typeof n==`number`||typeof n==`boolean`)return String(n)}return``}function UW(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=HW(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 WW(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 GW({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(),WW(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 KW({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)(GW,{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 qW({span:e}){let t=e.attributes||{},n=t[`agentkit.tool.input`],r=t[`agentkit.tool.output`],i=UW(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)(KW,{label:`工具输入`,text:zW(n),tone:`tool`}),r!=null&&r!==``&&(0,G.jsx)(KW,{label:`工具输出`,text:zW(r),tone:`tool`}),i.map((e,t)=>(0,G.jsx)(KW,{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 JW({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:zW(t)}),(0,G.jsx)(GW,{text:zW(t),className:`trace-kv-copy`})]},e))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`没有可展示的字段。`})})}var YW=[{id:`spans`,label:`Spans`},{id:`trajectory`,label:`轨迹`},{id:`attributes`,label:`Attributes`},{id:`events`,label:`Events`},{id:`resource`,label:`Resource`},{id:`raw`,label:`Raw OTLP`}],XW=50;function ZW({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(XW),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}`}),DW(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:TW(e.runId||e.traceId,32)})]})]})}},{id:`startedAt`,header:`开始时间`,minWidth:140,cell:e=>LW(e.startedAt)},{id:`duration`,header:`耗时`,width:110,cell:e=>OW(e.durationMs)},{id:`model`,header:`模型`,minWidth:140,cell:e=>e.model||`-`},{id:`tokens`,header:`Token`,width:110,cell:e=>FW(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 WW(`00-${_.traceId}-${_.rootSpanId}-01`),J(`traceparent 已复制`,TW(_.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 WW(JSON.stringify(e,null,2)),J(`Raw OTLP 已复制`,TW(_.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)(bd,{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)(xd,{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)(QW,{overview:m,range:f}),!_&&(0,G.jsxs)(`div`,{className:`trace-toolbar`,"aria-label":`Trace 筛选`,children:[(0,G.jsx)(Ih,{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)(Ih,{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:_?DW(_.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:_?OW(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:_?NW(ge):`未上报`}),(0,G.jsx)(`small`,{children:_&&MW(ge)?PW(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)(vm,{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:XW,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:TW(e.runId||e.traceId,22)})]})]}),(0,G.jsxs)(`span`,{className:`trace-run-meta`,children:[(0,G.jsx)(`span`,{className:`mono`,children:OW(e.durationMs)}),(0,G.jsx)(`span`,{className:`badge`,"data-state":e.status===`FAILED`?`failed`:e.status===`COMPLETED`?`ready`:`running`,title:e.status,children:DW(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,` · `,TW(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:OW(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?EW(W.name):`Span 详情`}),(0,G.jsx)(`span`,{children:W?`${EW(W.kind)} · ${DW(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:YW.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)(wW,{sessionId:_.sessionId,invocationId:_.runId||void 0,onSelectionChange:w}),(0,G.jsx)(`aside`,{className:`trajectory-selection`,"aria-label":`轨迹详情`,children:C?(0,G.jsx)(CW,{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)(qW,{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:DW(W.status)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`开始`}),(0,G.jsx)(`dd`,{children:IW(W.startTimeUnixNano)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`耗时`}),(0,G.jsx)(`dd`,{children:OW(W.durationMs)})]})]})]}),W&&x===`attributes`&&(0,G.jsx)(JW,{values:W.attributes||{}}),W&&x===`events`&&(0,G.jsx)(tG,{events:W.events||[]}),W&&x===`resource`&&(0,G.jsx)(JW,{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)(oW,{"aria-label":`Raw OTLP JSON`,data:T,style:BW,shouldExpandNode:M?iW:aW,clickToExpandNode:!0})}),x===`raw`&&!D&&!T&&(0,G.jsx)(`div`,{className:`trace-raw-loading`,children:`没有可显示的 OTLP JSON。`})]})]})]})]})]})]})}function QW({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?`—`:OW(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)($W,{icon:(0,G.jsx)(O,{size:15}),label:t===`7d`?`近 7 天运行`:`近 24 小时运行`,value:String(n)}),(0,G.jsx)($W,{icon:(0,G.jsx)(re,{size:15}),label:`成功率`,value:i,note:n?`${r} / ${n}`:void 0,tone:`success`}),(0,G.jsx)($W,{icon:(0,G.jsx)(ue,{size:15}),label:`平均耗时`,value:a,note:r?`${r} 个完成运行`:void 0}),(0,G.jsx)($W,{icon:(0,G.jsx)(pe,{size:15}),label:`Token`,value:n?o?kW(o):`未上报`:`—`,note:o?`${kW(s)} 输入 · ${kW(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)(eG,{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 $W({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 eG({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 tG({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+=HW(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)(KW,{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:IW(e.event.timeUnixNano)}),(0,G.jsx)(JW,{values:e.event.attributes||{}})]},t))}):(0,G.jsx)(`div`,{className:`trace-stage-empty compact`,children:(0,G.jsx)(`p`,{children:`该 Span 没有 Events。`})})}var nG=[{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 rG(e){return e===`ready`?`可用`:e===`missing-secret`?`缺少凭证`:e===`unhealthy`||e===`failed`?`异常`:e===`unresolved`?`未解析`:e||`未知`}function iG(e){return e.requiredSecretRefs?.[0]||e.contract?.credentialRef||``}function aG({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(iG).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[iG(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)(bd,{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:nG.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:rG(t)})]},e.resourceId)})})]},e.kind)})})]})]})]})}function oG(e){return typeof e==`object`&&!!e&&typeof e.apply==`function`}async function sG(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(!oG(i))throw Error(`DSH client bundle ${e.pluginId} did not export a Cordis plugin`);return i}var cG=new class{target;bundleLoader;activeDigest=``;activeRuntime=null;pending=Promise.resolve();constructor(e,t=sG){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 dH;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 uV),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}}(fH);function lG(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 uG=e=>[e.ecosystem,e.marketplaceName||`default`,e.pluginId,e.resolvedVersion||`host-managed`].join(`:`),dG=e=>e.ecosystem===`dsh`?`DeepSeek Harness 插件`:`Codex 官方插件`,fG={"@kingsoftcloud/ksadk-codex-provider":{title:`Codex AgentProvider`,publisher:`KsADK 官方`,kind:`Agent Provider`,summary:`让 Agent 使用 Codex App Server 的原生会话、工具与审批能力。`}};function pG(e){let t=fG[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 mG(e){let t=fG[e.pluginId];return t?t.publisher:e.pluginId.match(/^(@[^/]+)\//)?.[1]||e.marketplaceName||(e.ecosystem===`dsh`?`DeepSeek Harness`:`Codex Marketplace`)}function hG(e){let t=fG[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 gG(e){let t=fG[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 _G=[`常用`,`效率`,`创意`,`开发`,`更多`];function vG(e){let t=`${e.pluginId} ${pG(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 yG=(e,t)=>e?.error?.message||e?.detail||e?.message||t,bG={installed:`待启用`,enabled:`已启用`,ready:`就绪`,bound:`已绑定`,failed:`失败`};function xG({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}),` `,bG[e.state]]})}function SG({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 CG(){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(lG),u=[...(i.items||[]).map(lG),...l.filter(e=>e.installed)];t(u),r(l.filter(e=>!e.installed)),a({dsh:i.host,codex:s.host}),!o&&u[0]&&c(uG(u[0]))}catch(e){C(e?.message||`插件状态加载失败`)}finally{x(``)}},[o]);(0,s.useEffect)(()=>{w()},[]);let T=(0,s.useMemo)(()=>e.find(e=>uG(e)===o)||null,[e,o]),E=(0,s.useMemo)(()=>{let e=h.trim().toLowerCase(),t=n.filter(t=>!e||[pG(t),mG(t),hG(t),gG(t),t.pluginId].some(t=>t.toLowerCase().includes(e)));return _G.map(e=>({category:e,items:t.filter(t=>vG(t)===e)})).filter(e=>e.items.length>0)},[h,n]);async function D(){try{await cG.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=lG(t);c(uG(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:${uG(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(yG(n,`Codex 插件安装失败`));let r=lG(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(yG(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(yG(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)(xd,{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${uG(e)===o?` selected`:``}`,"aria-current":uG(e)===o?`true`:void 0,onClick:()=>c(uG(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:pG(e)}),(0,G.jsxs)(`small`,{children:[mG(e),` · `,hG(e)]}),(0,G.jsx)(`em`,{children:gG(e)})]}),(0,G.jsx)(xG,{item:e})]},uG(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:pG(T)}),(0,G.jsxs)(`p`,{children:[mG(T),` · `,hG(T)]})]}),(0,G.jsx)(xG,{item:T})]}),(0,G.jsx)(`p`,{className:`plugin-detail-summary`,children:gG(T)}),T.failed&&T.errorCode&&(0,G.jsx)(`p`,{className:`form-error`,role:`status`,children:T.errorCode}),(0,G.jsx)(SG,{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:dG(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:pG(e)}),(0,G.jsxs)(`small`,{children:[mG(e),` · `,hG(e)]}),(0,G.jsx)(`em`,{children:gG(e)})]}),(0,G.jsx)(`button`,{className:`button secondary small`,disabled:!p||!!b,onClick:()=>void k(e),children:b===`codex:${uG(e)}`?(0,G.jsx)(Ne,{className:`animate-spin`,size:15}):`安装`})]},uG(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 wG(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n{}};function EG(){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}})}DG.prototype=EG.prototype={constructor:DG,on:function(e,t){var n=this._,r=OG(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)),jG.hasOwnProperty(t)?{space:jG[t],local:e}:e}function NG(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 PG(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function FG(e){var t=MG(e);return(t.local?PG:NG)(t)}function IG(){}function LG(e){return e==null?IG:function(){return this.querySelector(e)}}function RG(e){typeof e!=`function`&&(e=LG(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 mK(e){e||=hK;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 gK(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function _K(){return Array.from(this)}function vK(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?AK:typeof t==`function`?MK:jK)(e,t,n??``)):PK(this.node(),e)}function PK(e,t){return e.style.getPropertyValue(t)||kK(e).getComputedStyle(e,null).getPropertyValue(t)}function FK(e){return function(){delete this[e]}}function IK(e,t){return function(){this[e]=t}}function LK(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function RK(e,t){return arguments.length>1?this.each((t==null?FK:typeof t==`function`?LK:IK)(e,t)):this.node()[e]}function zK(e){return e.trim().split(/^|\s+/)}function BK(e){return e.classList||new VK(e)}function VK(e){this._node=e,this._names=zK(e.getAttribute(`class`)||``)}VK.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 HK(e,t){for(var n=BK(e),r=-1,i=t.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function _q(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n()=>e;function zq(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}})}zq.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Bq(e){return!e.ctrlKey&&!e.button}function Vq(){return this.parentNode}function Hq(e,t){return t??{x:e.x,y:e.y}}function Uq(){return navigator.maxTouchPoints||`ontouchstart`in this}function Wq(){var e=Bq,t=Vq,n=Hq,r=Uq,i={},a=EG(`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`,_,Mq).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&&(kq(n.view).on(`mousemove.drag`,m,Nq).on(`mouseup.drag`,h,Nq),Iq(n.view),Pq(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(Fq(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){kq(e.view).on(`mousemove.drag mouseup.drag`,null),Lq(e.view,l),Fq(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?pJ(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?pJ(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=eJ.exec(e))?new gJ(t[1],t[2],t[3],1):(t=tJ.exec(e))?new gJ(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=nJ.exec(e))?pJ(t[1],t[2],t[3],t[4]):(t=rJ.exec(e))?pJ(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=iJ.exec(e))?CJ(t[1],t[2]/100,t[3]/100,1):(t=aJ.exec(e))?CJ(t[1],t[2]/100,t[3]/100,t[4]):oJ.hasOwnProperty(e)?fJ(oJ[e]):e===`transparent`?new gJ(NaN,NaN,NaN,0):null}function fJ(e){return new gJ(e>>16&255,e>>8&255,e&255,1)}function pJ(e,t,n,r){return r<=0&&(e=t=n=NaN),new gJ(e,t,n,r)}function mJ(e){return e instanceof qq||(e=dJ(e)),e?(e=e.rgb(),new gJ(e.r,e.g,e.b,e.opacity)):new gJ}function hJ(e,t,n,r){return arguments.length===1?mJ(e):new gJ(e,t,n,r??1)}function gJ(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Gq(gJ,hJ,Kq(qq,{brighter(e){return e=e==null?Yq:Yq**+e,new gJ(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Jq:Jq**+e,new gJ(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new gJ(xJ(this.r),xJ(this.g),xJ(this.b),bJ(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:_J,formatHex:_J,formatHex8:vJ,formatRgb:yJ,toString:yJ}));function _J(){return`#${SJ(this.r)}${SJ(this.g)}${SJ(this.b)}`}function vJ(){return`#${SJ(this.r)}${SJ(this.g)}${SJ(this.b)}${SJ((isNaN(this.opacity)?1:this.opacity)*255)}`}function yJ(){let e=bJ(this.opacity);return`${e===1?`rgb(`:`rgba(`}${xJ(this.r)}, ${xJ(this.g)}, ${xJ(this.b)}${e===1?`)`:`, ${e})`}`}function bJ(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function xJ(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function SJ(e){return e=xJ(e),(e<16?`0`:``)+e.toString(16)}function CJ(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new EJ(e,t,n,r)}function wJ(e){if(e instanceof EJ)return new EJ(e.h,e.s,e.l,e.opacity);if(e instanceof qq||(e=dJ(e)),!e)return new EJ;if(e instanceof EJ)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 EJ(o,s,c,e.opacity)}function TJ(e,t,n,r){return arguments.length===1?wJ(e):new EJ(e,t,n,r??1)}function EJ(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Gq(EJ,TJ,Kq(qq,{brighter(e){return e=e==null?Yq:Yq**+e,new EJ(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Jq:Jq**+e,new EJ(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 gJ(kJ(e>=240?e-240:e+120,i,r),kJ(e,i,r),kJ(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new EJ(DJ(this.h),OJ(this.s),OJ(this.l),bJ(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=bJ(this.opacity);return`${e===1?`hsl(`:`hsla(`}${DJ(this.h)}, ${OJ(this.s)*100}%, ${OJ(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function DJ(e){return e=(e||0)%360,e<0?e+360:e}function OJ(e){return Math.max(0,Math.min(1,e||0))}function kJ(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 AJ=e=>()=>e;function jJ(e,t){return function(n){return e+n*t}}function MJ(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function NJ(e){return(e=+e)==1?PJ:function(t,n){return n-t?MJ(t,n,e):AJ(isNaN(t)?n:t)}}function PJ(e,t){var n=t-e;return n?jJ(e,n):AJ(isNaN(e)?t:e)}var FJ=(function e(t){var n=NJ(t);function r(e,t){var r=n((e=hJ(e)).r,(t=hJ(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=PJ(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 IJ(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:BJ(r,i)})),n=UJ.lastIndex;return n180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:BJ(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:BJ(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:BJ(e,n)},{i:s-2,x:BJ(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;--cY}function wY(){hY=(mY=_Y.now())+gY,cY=lY=0;try{CY()}finally{cY=0,EY(),hY=0}}function TY(){var e=_Y.now(),t=e-mY;t>dY&&(gY-=t,mY=e)}function EY(){for(var e,t=fY,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:fY=n);pY=e,DY(r)}function DY(e){cY||(lY&&=clearTimeout(lY),e-hY>24?(e<1/0&&(lY=setTimeout(wY,e-_Y.now()-gY)),uY&&=clearInterval(uY)):(uY||=(mY=_Y.now(),setInterval(TY,dY)),cY=1,vY(wY)))}function OY(e,t,n){var r=new xY;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var kY=EG(`start`,`end`,`cancel`,`interrupt`),AY=[];function jY(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;FY(e,n,{name:t,index:r,group:i,on:kY,tween:AY,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function MY(e,t){var n=PY(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function NY(e,t){var n=PY(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function PY(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function FY(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=SY(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 OY(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 LY(e){return this.each(function(){IY(this,e)})}function RY(e,t){var n,r;return function(){var i=NY(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 mX(e,t,n){var r,i,a=pX(t)?MY:NY;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function hX(e,t){var n=this._id;return arguments.length<2?PY(this.node(),n).on.on(e):this.each(mX(n,e,t))}function gX(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function _X(){return this.on(`end.remove`,gX(this._id))}function vX(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=LG(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o()=>e;function JX(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 YX(e,t,n){this.k=e,this.x=t,this.y=n}YX.prototype={constructor:YX,scale:function(e){return e===1?this:new YX(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new YX(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 XX=new YX(1,0,0);ZX.prototype=YX.prototype;function ZX(e){for(;!e.__zoom;)if(!(e=e.parentNode))return XX;return e.__zoom}function QX(e){e.stopImmediatePropagation()}function $X(e){e.preventDefault(),e.stopImmediatePropagation()}function eZ(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function tZ(){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 nZ(){return this.__zoom||XX}function rZ(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function iZ(){return navigator.maxTouchPoints||`ontouchstart`in this}function aZ(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 oZ(){var e=eZ,t=tZ,n=aZ,r=rZ,i=iZ,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=sY,l=EG(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,nZ).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`,nZ),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(XX.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 YX(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 YX(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 YX(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=kq(this.that).datum();l.call(e,this.that,new JX(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=jq(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)],IY(this),s.start();$X(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=kq(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=jq(t,i),l=t.clientX,u=t.clientY;Iq(t.view),QX(t),a.mouse=[c,this.__zoom.invert(c)],IY(this),a.start();function d(e){if($X(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]=jq(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),Lq(e.view,a.moved),$X(e),a.event(e).end()}}function E(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=jq(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);$X(r),s>0?kq(this).transition().duration(s).call(x,d,c,r):kq(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(QX(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.`},cZ=[[-1/0,-1/0],[1/0,1/0]],lZ=[`Enter`,` `,`Escape`],uZ={"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`},dZ;(function(e){e.Strict=`strict`,e.Loose=`loose`})(dZ||={});var fZ;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(fZ||={});var pZ;(function(e){e.Partial=`partial`,e.Full=`full`})(pZ||={});var mZ={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},hZ;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(hZ||={});var gZ;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(gZ||={});var $;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})($||={});var _Z={[$.Left]:$.Right,[$.Right]:$.Left,[$.Top]:$.Bottom,[$.Bottom]:$.Top},vZ=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,yZ=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),bZ=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),xZ=(e,t=[0,0])=>{let{width:n,height:r}=tQ(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},SZ=(e,t={nodeOrigin:[0,0]})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};let n=!1,r=e.reduce((e,r)=>{let i=typeof r==`string`,a=!t.nodeLookup&&!i?r:void 0;return t.nodeLookup&&(a=i?t.nodeLookup.get(r):bZ(r)?r:t.nodeLookup.get(r.id)),a?(n=!0,FZ(e,zZ(a,t.nodeOrigin))):e},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return n?LZ(r):{x:0,y:0,width:0,height:0}},CZ=(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=FZ(n,zZ(e)),r=!0)}),r?LZ(n):{x:0,y:0,width:0,height:0}},wZ=(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=VZ(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},TZ=(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 EZ(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}=tQ(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 DZ({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=QZ(CZ(EZ(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 OZ({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`,sZ.error005());else{let{width:e,height:t}=tQ(s);e&&t&&(d=[[c,l],[c+e,l+t]])}}else s&&eQ(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=eQ(d)?jZ(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,sZ.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 kZ({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=TZ(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 AZ=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),jZ=(e={x:0,y:0},t,n)=>({x:AZ(e.x,t[0][0],t[1][0]-(n?.width??0)),y:AZ(e.y,t[0][1],t[1][1]-(n?.height??0))});function MZ(e,t,n){let{width:r,height:i}=tQ(n),{x:a,y:o}=n.internals.positionAbsolute;return jZ(e,[[a,o],[a+r,o+i]],t)}var NZ=(e,t,n)=>en?-AZ(Math.abs(e-n),1,t)/t:0,PZ=(e,t,n=15,r=40)=>[NZ(e.x,r,t.width-r)*n,NZ(e.y,r,t.height-r)*n],FZ=(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)}),IZ=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),LZ=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),RZ=(e,t=[0,0])=>{let{x:n,y:r}=bZ(e)?e.internals.positionAbsolute:xZ(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}},zZ=(e,t=[0,0])=>{let{x:n,y:r}=bZ(e)?e.internals.positionAbsolute:xZ(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)}},BZ=(e,t)=>LZ(FZ(IZ(e),IZ(t))),VZ=(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)},HZ=(e,t)=>VZ(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),UZ=e=>WZ(e.width)&&WZ(e.height)&&WZ(e.x)&&WZ(e.y),WZ=e=>!isNaN(e)&&isFinite(e),GZ=(e,t)=>(e,t)=>{},KZ=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),qZ=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?KZ(s,o):s},JZ=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function YZ(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 XZ(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=YZ(e,n),i=YZ(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=YZ(e.top??e.y??0,n),i=YZ(e.bottom??e.y??0,n),a=YZ(e.left??e.x??0,t),o=YZ(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 ZZ(e,t,n,r,i,a){let{x:o,y:s}=JZ(e,[t,n,r]),{x:c,y:l}=JZ({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 QZ=(e,t,n,r,i,a)=>{let o=XZ(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=AZ(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=ZZ(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}},$Z=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function eQ(e){return e!=null&&e!==`parent`}function tQ(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function nQ(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function rQ(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 iQ(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function aQ(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function oQ(e){return{...uZ,...e||{}}}function sQ(e){return e===null?null:e?`valid`:`invalid`}function cQ(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=mQ(e),s=qZ({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?KZ(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var lQ=e=>({width:e.offsetWidth,height:e.offsetHeight}),uQ=e=>e?.getRootNode?.()||window?.document,dQ=[`INPUT`,`SELECT`,`TEXTAREA`];function fQ(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?dQ.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var pQ=e=>`clientX`in e,mQ=(e,t)=>{let n=pQ(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)}},hQ=(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,...lQ(t)}})};function gQ({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 _Q(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function vQ({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case $.Left:return[t-_Q(t-r,a),n];case $.Right:return[t+_Q(r-t,a),n];case $.Top:return[t,n-_Q(n-i,a)];case $.Bottom:return[t,n+_Q(i-n,a)]}}function yQ({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top,curvature:o=.25}){let[s,c]=vQ({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=vQ({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=gQ({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 bQ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n0}var CQ=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,wQ=(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)),TQ=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,sZ.error006()),t;let r=n.getEdgeId||CQ,i;return i=vZ(e)?{...e}:{...e,id:r(e)},wQ(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function EQ({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=bQ({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var DQ={[$.Left]:{x:-1,y:0},[$.Right]:{x:1,y:0},[$.Top]:{x:0,y:-1},[$.Bottom]:{x:0,y:1}},OQ=({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 AQ({source:e,sourcePosition:t=$.Bottom,target:n,targetPosition:r=$.Top,center:i,offset:a,stepPosition:o}){let s=DQ[t],c=DQ[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=OQ({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]=bQ({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 jQ(e,t,n,r){let i=Math.min(kQ(e,t)/2,kQ(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 RQ(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function zQ(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=RQ(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 BQ=1e3,VQ=10,HQ={nodeOrigin:[0,0],nodeExtent:cZ,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},UQ={...HQ,checkEquality:!0};function WQ(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function GQ(e,t,n){let r=WQ(HQ,n);for(let n of e.values())if(n.parentId)XQ(n,e,t,r);else{let e=jZ(xZ(n,r.nodeOrigin),eQ(n.extent)?n.extent:r.nodeExtent,tQ(n));n.internals.positionAbsolute=e}}function KQ(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 qQ(e){return e===`manual`}function JQ(e,t,n,r={}){let i=WQ(UQ,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!qQ(i.zIndexMode)?BQ: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=jZ(xZ(u,i.nodeOrigin),eQ(u.extent)?u.extent:i.nodeExtent,tQ(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:KQ(u,e),z:ZQ(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&&XQ(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function YQ(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 XQ(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=WQ(HQ,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}YQ(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*VQ),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=QQ(e,u,o,s,a&&!qQ(c)?BQ: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 ZQ(e,t,n){let r=WZ(e.zIndex)?e.zIndex:0;return qQ(n)?r:r+(e.selected?t:0)}function QQ(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=tQ(e),l=xZ(e,n),u=eQ(e.extent)?jZ(l,e.extent,c):l,d=jZ({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=MZ(d,c,t));let f=ZQ(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function $Q(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=BZ(a.get(n.parentId)?.expandedRect??RZ(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=tQ(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=$Q(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function t$({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 n$(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 r$(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}`;n$(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),n$(`target`,s,c,e,i,o),t.set(r.id,r)}}function i$(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:i$(n,t):!1}function a$(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 o$(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!i$(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 s$({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 c$({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=KZ(a,t);return{x:o.x-a.x,y:o.y-a.y}}function l$({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=kq(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?IZ(CZ(s)):null,x=v&&l?c$({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)}:KZ(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}=OZ({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]=s$({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]=PZ(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=cQ(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=o$(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=s$({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=Wq().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=cQ(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=mQ(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=cQ(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=mQ(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=mQ(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]=s$({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||!a$(t,`.${g}`,v))&&(!_||a$(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function u$(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())HZ(i,RZ(e))>0&&r.push(e);return r}var d$=250;function f$(e,t,n,r){let i=[],a=1/0,o=u$(e,n,t+d$);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}=IQ(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 p$(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,...IQ(o,c,c.position,!0)}:c}function m$(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function h$(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var g$=()=>!0;function _$(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:_=g$,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=uQ(e.target),E=0,D,{x:O,y:k}=mQ(e),A=m$(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=p$(i,A,r,c,t);if(!N)return;let P=mQ(e,j),F=!1,I=null,L=!1,R=null;function z(){if(!u||!j)return;let[e,t]=PZ(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:IQ(V,B,$.Left,!0),fromHandle:B,fromPosition:B.position,fromNode:V,to:P,toHandle:null,toPosition:_Z[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}=mQ(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=mQ(e,j),D=f$(qZ(P,a,!1,[1,1]),n,c,B),F||=(z(),!0);let s=v$(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=h$(!!D,s.isValid);let u=c.get(i),f=u?IQ(u,B,$.Left,!0):H.from,p={...H,from:f,isValid:L,to:s.toHandle&&L?JZ({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:L&&s.toHandle?s.toHandle.position:_Z[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 v$(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=g$,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}=mQ(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=m$(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===dZ.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=p$(t,e,a,u,n,!0)}return _}var y$={onPointerDown:_$,isValid:v$};function b$({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=kq(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&&$Z()?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=oZ().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:jq}}var x$=e=>({x:e.x,y:e.y,zoom:e.k}),S$=({x:e,y:t,zoom:n})=>XX.translate(e,t).scale(n),C$=(e,t)=>e.target.closest(`.${t}`),w$=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),T$=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,E$=(e,t=0,n=T$,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},D$=e=>{let t=e.ctrlKey&&$Z()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function O$({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(C$(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=jq(u),t=d*2**D$(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===fZ.Vertical?0:u.deltaX*f,m=i===fZ.Horizontal?0:u.deltaY*f;!$Z()&&u.shiftKey&&i!==fZ.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=x$(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 k$({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=C$(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function A$({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=x$(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 j$({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&w$(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,x$(a.transform))}}function M$({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&w$(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=x$(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function N$({panActivationKeyPressed:e,zoomActivationKeyPressed:t,zoomOnScroll:n,zoomOnPinch:r,panOnDrag:i,panOnScroll:a,zoomOnDoubleClick:o,userSelectionActive:s,noWheelClassName:c,noPanClassName:l,lib:u,connectionInProgress:d}){return f=>{let p=t||n,m=r&&f.ctrlKey,h=f.type===`wheel`;if(f.button===1&&f.type===`mousedown`&&(C$(f,`${u}-flow__node`)||C$(f,`${u}-flow__edge`)||C$(f,`${u}-flow__selection`)||C$(f,`${u}-flow__nodesselection`)))return!0;if(!i&&!p&&!a&&!o&&!r||s||d&&!h||C$(f,c)&&h||C$(f,l)&&(!h||a&&h&&!t)||!r&&f.ctrlKey&&h)return!1;if(!r&&f.type===`touchstart`&&f.touches?.length>1)return f.preventDefault(),!1;if(!p&&!a&&!m&&h||!i&&(f.type===`mousedown`||f.type===`touchstart`)||Array.isArray(i)&&!i.includes(f.button)&&f.type===`mousedown`)return!1;let g=Array.isArray(i)&&i.includes(f.button)||!f.button||f.button<=1;return(!f.ctrlKey||h||e)&&g}}function P$({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=oZ().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=kq(e).call(f);y({x:i.x,y:i.y,zoom:AZ(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(D$);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?qJ:sY).transform(E$(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,panActivationKeyPressed:S=!1,zoomActivationKeyPressed:C,lib:w,onTransformChange:T,connectionInProgress:E,paneClickDistance:D,selectionOnDrag:O}){r&&!l.isZoomingOrPanning&&v();let k=i&&!C&&!r;f.clickDistance(O?1/0:!WZ(D)||D<0?0:D);let A=k?O$({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):k$({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,A,{passive:!1});let j=A$({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,j);let M=j$({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:T});f.on(`zoom`,M);let N=M$({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,N);let P=N$({panActivationKeyPressed:S,zoomActivationKeyPressed:C,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:w,connectionInProgress:E});f.filter(P),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=S$(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=S$(e);return await g(n,t),n}function x(e){if(p){let t=S$(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?ZX(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`?qJ:sY).scaleTo(E$(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?qJ:sY).scaleBy(E$(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=!WZ(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 F$;(function(e){e.Line=`line`,e.Handle=`handle`})(F$||={});function I$({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 L$(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 R$(e,t){return Math.max(0,t-e)}function z$(e,t){return Math.max(0,e-t)}function B$(e,t,n){return Math.max(0,t-e,e-n)}function V$(e,t){return e?!t:t}function H$(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=B$(E,h,g),j=B$(D,_,v);if(o){let e=0,t=0;c&&w<0?e=R$(y+w+O,o[0][0]):!c&&w>0&&(e=z$(y+E+O,o[1][0])),l&&T<0?t=R$(b+T+k,o[0][1]):!l&&T>0&&(t=z$(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=z$(y+w,s[0][0]):!c&&w<0&&(e=R$(y+E,s[1][0])),l&&T>0?t=z$(b+T,s[0][1]):!l&&T<0&&(t=R$(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=B$(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?z$(b+k+E/C,o[1][1])*C:R$(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?R$(b+E/C,s[1][1])*C:z$(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=B$(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?z$(y+D*C+O,o[1][0])/C:R$(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?R$(y+D*C,s[1][0])/C:z$(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=(V$(c,l)?-w:w)/C:w=(V$(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 U$={width:0,height:0,x:0,y:0},W$={...U$,pointerX:0,pointerY:0,aspectRatio:1};function G$(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 K$({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=kq(e),o={controlDirection:L$(`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={...U$},h={...W$};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:L$(e)};let g,_=null,v=[],y,b,x,S=!1,C=Wq().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}=cQ(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=eQ(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=G$(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=cQ(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}=H$(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 q$=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},J$=e=>e?q$(e):q$,{useDebugValue:Y$}=s.default,{useSyncExternalStoreWithSelector:X$}=Xd.default,Z$=e=>e;function Q$(e,t=Z$,n){let r=X$(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return Y$(r),r}var $$=(e,t)=>{let n=J$(e),r=(e,r=t)=>Q$(n,e,r);return Object.assign(r,n),r},e1=(e,t)=>e?$$(e,t):$$;function t1(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 n1=(0,s.createContext)(null),r1=n1.Provider,i1=sZ.error001(`react`);function a1(e,t){let n=(0,s.useContext)(n1);if(n===null)throw Error(i1);return Q$(n,e,t)}function o1(){let e=(0,s.useContext)(n1);if(e===null)throw Error(i1);return(0,s.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var s1={display:`none`},c1={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},l1=`react-flow__node-desc`,u1=`react-flow__edge-desc`,d1=`react-flow__aria-live`,f1=e=>e.ariaLiveMessage,p1=e=>e.ariaLabelConfig;function m1({rfId:e}){let t=a1(f1);return(0,G.jsx)(`div`,{id:`${d1}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:c1,children:t})}function h1({rfId:e,disableKeyboardA11y:t}){let n=a1(p1);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(`div`,{id:`${l1}-${e}`,style:s1,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,G.jsx)(`div`,{id:`${u1}-${e}`,style:s1,children:n[`edge.a11yDescription.default`]}),!t&&(0,G.jsx)(m1,{rfId:e})]})}var g1=(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:wG([`react-flow__panel`,n,...o]),style:r,ref:a,...i,children:t})});g1.displayName=`Panel`;var _1=`https://reactflow.dev?utm_source=attribution`;function v1({proOptions:e,position:t=`bottom-right`}){return(0,s.useEffect)(()=>{},[]),e?.hideAttribution?null:(0,G.jsx)(g1,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${_1}`,children:(0,G.jsx)(`a`,{href:_1,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var y1=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}},b1=e=>e.id;function x1(e,t){return t1(e.selectedNodes.map(b1),t.selectedNodes.map(b1))&&t1(e.selectedEdges.map(b1),t.selectedEdges.map(b1))}function S1({onSelectionChange:e}){let t=o1(),{selectedNodes:n,selectedEdges:r}=a1(y1,x1);return(0,s.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var C1=e=>!!e.onSelectionChangeHandlers;function w1({onSelectionChange:e}){let t=a1(C1);return e||t?(0,G.jsx)(S1,{onSelectionChange:e}):null}var T1=[0,0],E1={x:0,y:0,zoom:1},D1=[...`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`],O1=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}),k1={translateExtent:cZ,nodeOrigin:T1,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function A1(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:c,setDefaultNodesAndEdges:l}=a1(O1,t1),u=o1();(0,s.useEffect)(()=>(l(e.defaultNodes,e.defaultEdges),()=>{d.current=k1,c()}),[]);let d=(0,s.useRef)(k1);return(0,s.useEffect)(()=>{for(let s of D1){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:oQ(c)}):s===`fitView`?u.setState({fitViewQueued:c}):s===`fitViewOptions`?u.setState({fitViewOptions:c}):u.setState({[s]:c}))}d.current=e},D1.map(t=>e[t])),null}function j1(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function M1(e){let[t,n]=(0,s.useState)(e===`system`?null:e);return(0,s.useEffect)(()=>{if(e!==`system`){n(e);return}let t=j1(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?j1()?.matches?`dark`:`light`:t}var N1=typeof document<`u`?document:null;function P1(e=null,t={target:N1,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(/\+/g,` +`));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??N1,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)&&fQ(e))return!1;let n=I1(e.code,c);if(a.current.add(e[n]),F1(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=I1(e.code,c);F1(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 F1(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function I1(e,t){return t.includes(e)?`code`:`key`}var L1=()=>{let e=o1();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=QZ(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 qZ(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=JZ(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function R1(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)z1(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 z1(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 B1(e,t){return R1(e,t)}function V1(e,t){return R1(e,t)}function H1(e,t){return{id:e,type:`select`,selected:t}}function U1(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(H1(a.id,e)))}return r}function W1({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 G1(e){return{id:e.id,type:`remove`}}var K1=GZ(`React Flow`,`https://reactflow.dev/`);function q1(e,t,n={}){return TQ(e,t,{...n,onError:n.onError??K1})}var J1=e=>yZ(e),Y1=e=>vZ(e);function X1(e){return(0,s.forwardRef)(e)}var Z1=typeof window<`u`?s.useLayoutEffect:s.useEffect;function Q1(e){let[t,n]=(0,s.useState)(BigInt(0)),[r]=(0,s.useState)(()=>$1(()=>n(e=>e+BigInt(1))));return Z1(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function $1(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var e0=(0,s.createContext)(null);function t0({children:e}){let t=o1(),n=Q1((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=W1({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=Q1((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(W1({items:s,lookup:o}))},[])),i=(0,s.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,G.jsx)(e0.Provider,{value:i,children:e})}function n0(){let e=(0,s.useContext)(e0);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var r0=e=>!!e.panZoom;function i0(){let e=L1(),t=o1(),n=n0(),r=a1(r0),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=J1(e)?e:n.get(e.id),a=i.parentId?rQ(i.position,i.measured,i.parentId,n,r):i.position;return RZ({...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&&J1(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&&Y1(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 kZ({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(G1);o?.(f),c(e)}if(m){let e=d.map(G1);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=UZ(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=RZ(s?r:a),l=HZ(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=UZ(e)?e:a(e);if(!r)return!1;let i=HZ(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 SZ(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??aQ();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 a0=e=>e.selected,o0=typeof window<`u`?window:void 0;function s0({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=o1(),{deleteElements:r}=i0(),i=P1(e,{actInsideInputWithModifier:!1}),a=P1(t,{target:o0});(0,s.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(a0),edges:e.filter(a0)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,s.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function c0(e){let t=o1();(0,s.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=lQ(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,sZ.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 l0={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},u0=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function d0({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panActivationKeyPressed:i,panOnScrollSpeed:a=.5,panOnScrollMode:o=fZ.Free,zoomOnDoubleClick:c=!0,panOnDrag:l=!0,defaultViewport:u,translateExtent:d,minZoom:f,maxZoom:p,zoomActivationKeyCode:m,preventScrolling:h=!0,children:g,noWheelClassName:_,noPanClassName:v,onViewportChange:y,isControlledViewport:b,paneClickDistance:x,selectionOnDrag:S}){let C=o1(),w=(0,s.useRef)(null),{userSelectionActive:T,lib:E,connectionInProgress:D}=a1(u0,t1),O=P1(m),k=(0,s.useRef)();c0(w);let A=(0,s.useCallback)(e=>{y?.({x:e[0],y:e[1],zoom:e[2]}),b||C.setState({transform:e})},[y,b]);return(0,s.useEffect)(()=>{if(w.current){k.current=P$({domNode:w.current,minZoom:f,maxZoom:p,translateExtent:d,viewport:u,onDraggingChange:e=>C.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=C.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=C.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=C.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=k.current.getViewport();return C.setState({panZoom:k.current,transform:[e,t,n],domNode:w.current.closest(`.react-flow`)}),()=>{k.current?.destroy()}}},[]),(0,s.useEffect)(()=>{k.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panActivationKeyPressed:i,panOnScrollSpeed:a,panOnScrollMode:o,zoomOnDoubleClick:c,panOnDrag:l,zoomActivationKeyPressed:O,preventScrolling:h,noPanClassName:v,userSelectionActive:T,noWheelClassName:_,lib:E,onTransformChange:A,connectionInProgress:D,selectionOnDrag:S,paneClickDistance:x})},[e,t,n,r,i,a,o,c,l,O,h,v,T,_,E,A,D,S,x]),(0,G.jsx)(`div`,{className:`react-flow__renderer`,ref:w,style:l0,children:g})}var f0=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function p0(){let{userSelectionActive:e,userSelectionRect:t}=a1(f0,t1);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 m0=(e,t)=>n=>{n.target===t.current&&e?.(n)},h0=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function g0({isSelecting:e,selectionKeyPressed:t,selectionMode:n=pZ.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=o1(),{userSelectionActive:y,elementsSelectable:b,dragging:x,panBy:S,autoPanSpeed:C}=a1(h0,t1),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=>{if(n.pointerType===`touch`&&r!==!1&&!t)return;let{domNode:i,transform:a}=v.getState();if(E.current=i?.getBoundingClientRect(),!E.current)return;let s=n.target===T.current;if(!s&&n.target.closest(`.nokey`)||!e||!(o&&s||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),A.current=!1;let{x:c,y:l}=mQ(n.nativeEvent,E.current),u=qZ({x:c,y:l},a);v.setState({userSelectionRect:{width:0,height:0,startX:u.x,startY:u.y,x:c,y:l}}),s||(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}=JZ(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)}}iQ(h,D.current)||c(U1(a,D.current,!0)),iQ(g,O.current)||l(U1(o,O.current)),v.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!i||!E.current)return;let[e,t]=PZ(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}=mQ(e.nativeEvent,E.current);j.current={x:o,y:s};let l=JZ({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:wG([`react-flow__pane`,{draggable:te,dragging:x,selection:e}]),onClick:w?void 0:m0(N,T),onContextMenu:m0(P,T),onWheel:m0(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:l0,children:[g,(0,G.jsx)(p0,{})]})}function _0({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`,sZ.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function v0({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let c=o1(),[l,u]=(0,s.useState)(!1),d=(0,s.useRef)();return(0,s.useEffect)(()=>{if(!t)return d.current=l$({getStoreItems:()=>c.getState(),onNodeMouseDown:t=>{_0({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 y0=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function b0(){let e=o1();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=y0(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=KZ(t,i));let{position:a,positionAbsolute:s}=OZ({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 x0=(0,s.createContext)(null),S0=x0.Provider;x0.Consumer;var C0=()=>(0,s.useContext)(x0),w0=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),T0=(0,s.createContext)(null);function E0({children:e}){let t=a1(w0,t1);return(0,G.jsx)(T0.Provider,{value:t,children:e})}function D0(){let e=(0,s.useContext)(T0);if(!e)throw Error(`useHandleConfig must be used within a HandleConfigProvider`);return e}var O0={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},k0=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o;if(!s&&!i)return O0;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===dZ.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function A0({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=o1(),_=C0(),{connectOnClick:v,noPanClassName:y,rfId:b}=D0(),{connectingFrom:x,connectingTo:S,clickConnecting:C,isPossibleEndHandle:w,connectionInProcess:T,clickConnectionInProcess:E,valid:D}=a1(k0(_,m,e),t1);_||g.getState().onError?.(`010`,sZ.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(q1(i,e,{onError:n}))}n?.(i),s?.(i)},k=e=>{if(!_)return;let t=pQ(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();y$.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:wG([`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=uQ(t.target),h=n||c,{connection:v,isValid:y}=y$.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 j0=(0,s.memo)(X1(A0));function M0({data:e,isConnectable:t,sourcePosition:n=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[e?.label,(0,G.jsx)(j0,{type:`source`,position:n,isConnectable:t})]})}function N0({data:e,isConnectable:t,targetPosition:n=$.Top,sourcePosition:r=$.Bottom}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(j0,{type:`target`,position:n,isConnectable:t}),e?.label,(0,G.jsx)(j0,{type:`source`,position:r,isConnectable:t})]})}function P0(){return null}function F0({data:e,isConnectable:t,targetPosition:n=$.Top}){return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(j0,{type:`target`,position:n,isConnectable:t}),e?.label]})}var I0={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},L0={input:M0,default:N0,output:F0,group:P0};function R0(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 z0=e=>{let{width:t,height:n,x:r,y:i}=CZ(e.nodeLookup,{filter:e=>!!e.selected});return{width:WZ(t)?t:null,height:WZ(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 B0({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=o1(),{width:i,height:a,transformString:o,userSelectionActive:c}=a1(z0,t1),l=b0(),u=(0,s.useRef)(null);(0,s.useEffect)(()=>{n||u.current?.focus({preventScroll:!0})},[n]);let d=!c&&i!==null&&a!==null;if(v0({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:wG([`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(I0,e.key)&&(e.preventDefault(),l({direction:I0[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var V0=typeof window<`u`?window:void 0,H0=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function U0({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}=a1(H0,t1),z=P1(l,{target:V0}),B=P1(h,{target:V0}),V=B||w,H=B||b,ee=u&&V!==!0,te=z||R||ee;return s0({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,G.jsx)(d0,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:H,panActivationKeyPressed:B,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)(g0,{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)(B0,{onSelectionContextMenu:j,noPanClassName:N,disableKeyboardA11y:P})]})})}U0.displayName=`FlowRenderer`;var W0=(0,s.memo)(U0),G0=e=>t=>e?wZ(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 K0(e){return a1((0,s.useCallback)(G0(e),[e]),t1)}var q0=e=>e.updateNodeInternals;function J0(){let e=a1(q0),[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 Y0({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=o1(),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 X0({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}=a1(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},t1),S=y.type||`default`,C=g?.[S]||L0[S];C===void 0&&(v?.(`003`,sZ.error003(S)),S=`default`,C=g?.default||L0.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=o1(),k=nQ(y),A=Y0({node:y,nodeType:S,hasDimensions:k,resizeObserver:d}),j=v0({nodeRef:A,disabled:y.hidden||!w,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:T,nodeClickDistance:_}),M=b0();if(y.hidden)return null;let N=tQ(y),P=R0(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)&&_0({id:e,store:O,nodeRef:A}),t&&t(n,{...b.userNode})},H=t=>{if(!(fQ(t.nativeEvent)||m)){if(lZ.includes(t.key)&&T){let n=t.key===`Escape`;_0({id:e,store:O,unselect:n,nodeRef:A})}else if(w&&y.selected&&Object.prototype.hasOwnProperty.call(I0,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:I0[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&&(wZ(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:wG([`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:`${l1}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,G.jsx)(S0,{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 Z0=(0,s.memo)(X0),Q0=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function $0(e){let{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:i}=a1(Q0,t1),a=K0(e.onlyRenderVisibleElements),o=J0();return(0,G.jsx)(`div`,{className:`react-flow__nodes`,style:l0,children:a.map(a=>(0,G.jsx)(Z0,{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))})}$0.displayName=`NodeRenderer`;var e2=(0,s.memo)($0);function t2(e){return a1((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&&SQ({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),t1)}var n2=({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`})},r2=({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`})},i2={[gZ.Arrow]:n2,[gZ.ArrowClosed]:r2};function a2(e){let t=o1();return(0,s.useMemo)(()=>Object.prototype.hasOwnProperty.call(i2,e)?i2[e]:(t.getState().onError?.(`009`,sZ.error009(e)),null),[e])}var o2=({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=a2(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},s2=({defaultColor:e,rfId:t})=>{let n=a1(e=>e.edges),r=a1(e=>e.defaultEdgeOptions),i=(0,s.useMemo)(()=>zQ(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)(o2,{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};s2.displayName=`MarkerDefinitions`;var c2=(0,s.memo)(s2);function l2({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=wG([`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}l2.displayName=`EdgeText`;var u2=(0,s.memo)(l2);function d2({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:wG([`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&&WZ(t)&&WZ(n)?(0,G.jsx)(u2,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function f2({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===$.Left||e===$.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function p2({sourceX:e,sourceY:t,sourcePosition:n=$.Bottom,targetX:r,targetY:i,targetPosition:a=$.Top}){let[o,s]=f2({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=f2({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=gQ({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 m2(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]=p2({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s}),x=e.isInternal?void 0:t;return(0,G.jsx)(d2,{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 h2=m2({isInternal:!1}),g2=m2({isInternal:!0});h2.displayName=`SimpleBezierEdge`,g2.displayName=`SimpleBezierEdgeInternal`;function _2(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]=MQ({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)(d2,{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 v2=_2({isInternal:!1}),y2=_2({isInternal:!0});v2.displayName=`SmoothStepEdge`,y2.displayName=`SmoothStepEdgeInternal`;function b2(e){return(0,s.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,G.jsx)(v2,{...n,id:r,pathOptions:(0,s.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var x2=b2({isInternal:!1}),S2=b2({isInternal:!0});x2.displayName=`StepEdge`,S2.displayName=`StepEdgeInternal`;function C2(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]=EQ({sourceX:n,sourceY:r,targetX:i,targetY:a}),y=e.isInternal?void 0:t;return(0,G.jsx)(d2,{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 w2=C2({isInternal:!1}),T2=C2({isInternal:!0});w2.displayName=`StraightEdge`,T2.displayName=`StraightEdgeInternal`;function E2(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]=yQ({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature}),S=e.isInternal?void 0:t;return(0,G.jsx)(d2,{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 D2=E2({isInternal:!1}),O2=E2({isInternal:!0});D2.displayName=`BezierEdge`,O2.displayName=`BezierEdgeInternal`;var k2={default:O2,straight:T2,step:S2,smoothstep:y2,simplebezier:g2},A2={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},j2=(e,t,n)=>n===$.Left?e-t:n===$.Right?e+t:e,M2=(e,t,n)=>n===$.Top?e-t:n===$.Bottom?e+t:e,N2=`react-flow__edgeupdater`;function P2({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:wG([N2,`${N2}-${s}`]),cx:j2(t,r,e),cy:M2(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function F2({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=o1(),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`;y$.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)(P2,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,G.jsx)(P2,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function I2({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=a1(t=>t.edgeLookup.get(e)),x=a1(e=>e.defaultEdgeOptions);b=x?{...x,...b}:b;let S=b.type||`default`,C=g?.[S]||k2[S];C===void 0&&(v?.(`011`,sZ.error011(S)),S=`default`,C=g?.default||k2.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=o1(),{zIndex:N=b.zIndex,sourceX:P,sourceY:F,targetX:I,targetY:L,sourcePosition:R,targetPosition:z}=a1((0,s.useCallback)(t=>{let n=t.nodeLookup.get(b.source),r=t.nodeLookup.get(b.target);if(!n||!r)return A2;let i=PQ({id:e,sourceNode:n,targetNode:r,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:t.connectionMode,onError:v}),a=xQ({selected:b.selected,zIndex:b.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||A2,zIndex:a}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex,v]),t1),B=(0,s.useMemo)(()=>b.markerStart?`url('#${RQ(b.markerStart,h)}')`:void 0,[b.markerStart,h]),V=(0,s.useMemo)(()=>b.markerEnd?`url('#${RQ(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:wG([`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&&lZ.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?`${u1}-${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)(F2,{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 L2=(0,s.memo)(I2),R2=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function z2({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}=a1(R2,t1),b=t2(t);return(0,G.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,G.jsx)(c2,{defaultColor:e,rfId:n}),b.map(e=>(0,G.jsx)(L2,{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))]})}z2.displayName=`EdgeRenderer`;var B2=(0,s.memo)(z2),V2=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function H2({children:e}){let t=o1(),n=(0,s.useRef)(null),[r]=(0,s.useState)(()=>t.getState().transform);return Z1(()=>{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=V2(r)))};return r(),t.subscribe(r)},[t]),(0,G.jsx)(`div`,{ref:n,className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:V2(r)},children:e})}function U2(e){let t=i0(),n=(0,s.useRef)(!1);(0,s.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var W2=e=>e.panZoom?.syncViewport;function G2(e){let t=a1(W2),n=o1();return(0,s.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function K2(e){return e.connection.inProgress?{...e.connection,to:qZ(e.connection.to,e.transform)}:{...e.connection}}function q2(e){return e?t=>e(K2(t)):K2}function J2(e){return a1(q2(e),t1)}var Y2=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function X2({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=a1(Y2,t1);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:wG([`react-flow__connection`,sQ(s)]),children:(0,G.jsx)(Z2,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var Z2=({style:e,type:t=hZ.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}=J2();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:sQ(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 hZ.Bezier:[m]=yQ(h);break;case hZ.SimpleBezier:[m]=p2(h);break;case hZ.Step:[m]=MQ({...h,borderRadius:0});break;case hZ.SmoothStep:[m]=MQ(h);break;default:[m]=EQ(h)}return(0,G.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};Z2.displayName=`ConnectionLine`;var Q2={};function $2(e=Q2){(0,s.useRef)(e),o1(),(0,s.useEffect)(()=>{},[e])}function e4(){o1(),(0,s.useRef)(!1),(0,s.useEffect)(()=>{},[])}function t4({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 $2(e),$2(t),e4(),U2(n),G2(ve),(0,G.jsx)(W0,{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)(H2,{children:[(0,G.jsx)(B2,{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)(X2,{style:h,type:m,component:g,containerStyle:_}),(0,G.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,G.jsx)(e2,{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`})]})})}t4.displayName=`GraphView`;var n4=(0,s.memo)(t4),r4=GZ(`React Flow`,`https://reactflow.dev/`),i4=({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??cZ;r$(h,g,_);let{nodesInitialized:x}=JQ(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=QZ(CZ(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:cZ,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:dZ.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:{...mZ},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:r4,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:uZ,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},a4=({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})=>e1((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 DZ({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...i4({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,nodeExtent:i,elevateNodesOnSelect:a,fitViewQueued:o,zIndexMode:s,nodesSelectionActive:c}=m(),{nodesInitialized:l,hasSelectedNodes:u}=JQ(e,t,n,{nodeOrigin:r,nodeExtent:i,elevateNodesOnSelect:a,checkEquality:!0,zIndexMode:s}),d=c&&u;o&&l?(h(),p({nodes:e,nodesInitialized:l,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:d})):p({nodes:e,nodesInitialized:l,nodesSelectionActive:d})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();r$(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}=e$(e,n,r,i,a,o,l);d&&(GQ(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=IQ(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=$Q(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(B1(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(V1(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=>H1(e,!0)));return}i(U1(r,new Set([...e]),!0)),a(U1(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>H1(e,!0)));return}a(U1(n,new Set([...e]))),i(U1(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(H1(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(H1(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,H1(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,H1(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])&&(JQ(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 t$({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:{...mZ}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...i4()})}},Object.is);function o4({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)(()=>a4({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)(r1,{value:h,children:(0,G.jsx)(t0,{children:(0,G.jsx)(E0,{children:m})})})}function s4({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)(n1)?(0,G.jsx)(G.Fragment,{children:e}):(0,G.jsx)(o4,{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 c4={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function l4({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=hZ.Bezier,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:H,deleteKeyCode:ee=`Backspace`,selectionKeyCode:te=`Shift`,selectionOnDrag:ne=!1,selectionMode:U=pZ.Full,panActivationKeyCode:re=`Space`,multiSelectionKeyCode:ie=$Z()?`Meta`:`Control`,zoomActivationKeyCode:ae=$Z()?`Meta`:`Control`,snapToGrid:oe,snapGrid:se,onlyRenderVisibleElements:ce=!1,selectNodesOnDrag:le,nodesDraggable:ue,autoPanOnNodeFocus:de,nodesConnectable:W,nodesFocusable:fe,nodeOrigin:pe=T1,edgesFocusable:me,edgesReconnectable:he,elementsSelectable:ge=!0,defaultViewport:_e=E1,minZoom:ve=.5,maxZoom:ye=2,translateExtent:be=cZ,preventScrolling:xe=!0,nodeExtent:Se,defaultMarkerColor:Ce=`#b1b1b7`,zoomOnScroll:we=!0,zoomOnPinch:Te=!0,panOnScroll:Ee=!1,panOnScrollSpeed:De=.5,panOnScrollMode:Oe=fZ.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=M1(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,...c4},ref:kt,className:wG([`react-flow`,i,jt]),id:_t,role:`application`,children:(0,G.jsxs)(s4,{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)(A1,{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)(n4,{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)(w1,{onSelectionChange:A}),ze,(0,G.jsx)(v1,{proOptions:it,position:rt}),(0,G.jsx)(h1,{rfId:At,disableKeyboardA11y:ct})]})})}var u4=X1(l4);sZ.error014();function d4({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:wG([`react-flow__background-pattern`,n,r])})}function f4({radius:e,className:t}){return(0,G.jsx)(`circle`,{cx:e,cy:e,r:e,className:wG([`react-flow__background-pattern`,`dots`,t])})}var p4;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(p4||={});var m4={[p4.Dots]:1,[p4.Lines]:1,[p4.Cross]:6},h4=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function g4({id:e,variant:t=p4.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}=a1(h4,t1),h=r||m4[t],g=t===p4.Dots,_=t===p4.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]+S[0]/2,x[1]*p[2]+S[1]/2],w=`${m}${e||``}`;return(0,G.jsxs)(`svg`,{className:wG([`react-flow__background`,u]),style:{...l,...l0,"--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)(f4,{radius:b/2,className:d}):(0,G.jsx)(d4,{dimensions:S,lineWidth:i,variant:t,className:d})}),(0,G.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${w})`})]})}g4.displayName=`Background`,(0,s.memo)(g4);function _4(){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 v4(){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 y4(){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 b4(){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 x4(){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 S4({children:e,className:t,...n}){return(0,G.jsx)(`button`,{type:`button`,className:wG([`react-flow__controls-button`,t]),...n,children:e})}var C4=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function w4({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=o1(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=a1(C4,t1),{zoomIn:y,zoomOut:b,fitView:x}=i0();return(0,G.jsxs)(g1,{className:wG([`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)(S4,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,G.jsx)(_4,{})}),(0,G.jsx)(S4,{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)(v4,{})})]}),n&&(0,G.jsx)(S4,{className:`react-flow__controls-fitview`,onClick:()=>{x(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,G.jsx)(y4,{})}),r&&(0,G.jsx)(S4,{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)(x4,{}):(0,G.jsx)(b4,{})}),u]})}w4.displayName=`Controls`;var T4=(0,s.memo)(w4);function E4({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:wG([`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 D4=(0,s.memo)(E4),O4=e=>e.nodes.map(e=>e.id),k4=e=>e instanceof Function?e:()=>e;function A4({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=D4,onClick:o}){let s=a1(O4,t1),c=k4(t),l=k4(e),u=k4(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,G.jsx)(G.Fragment,{children:s.map(e=>(0,G.jsx)(M4,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function j4({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}=a1(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}=tQ(r);return{node:r,x:i,y:a,width:o,height:s}},t1);return!l||l.hidden||!nQ(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 M4=(0,s.memo)(j4),N4=(0,s.memo)(A4),P4=200,F4=150,I4=e=>!e.hidden,L4=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]},n=!1;for(let t of e.nodeLookup.values())if(!t.hidden){n=!0;break}return{viewBB:t,boundingRect:n?BZ(CZ(e.nodeLookup,{filter:I4}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},R4=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,z4=(e,t)=>R4(e.viewBB,t.viewBB)&&R4(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,B4=`react-flow__minimap-desc`;function V4({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=o1(),C=(0,s.useRef)(null),{boundingRect:w,panZoom:T,viewBB:E,rfId:D,translateExtent:O,flowWidth:k,flowHeight:A,ariaLabelConfig:j}=a1(L4,z4),M=e?.width??P4,N=e?.height??F4,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=`${B4}-${D}`,ne=(0,s.useRef)(0),U=(0,s.useRef)();ne.current=I,(0,s.useEffect)(()=>{let e=S.getState().panZoom;if(C.current&&e)return U.current=b$({domNode:C.current,panZoom:e,getTransform:()=>S.getState().transform,getViewScale:()=>ne.current}),()=>{U.current?.destroy()}},[T]),(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=(0,s.useCallback)((e,t)=>{let n=S.getState().nodeLookup.get(t).internals.userNode;h?.(e,n)},[h]),ae=h?ie:void 0,oe=v??j[`minimap.ariaLabel`];return(0,G.jsx)(g1,{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:wG([`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:[oe&&(0,G.jsx)(`title`,{id:te,children:oe}),(0,G.jsx)(N4,{onClick:ae,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${E.x},${E.y}h${E.width}v${E.height}h${-E.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}V4.displayName=`MiniMap`,(0,s.memo)(V4);var H4=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,U4={[F$.Line]:`right`,[F$.Handle]:`bottom-right`};function W4({nodeId:e,position:t,variant:n=F$.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=C0(),b=typeof e==`string`?e:y,x=o1(),S=(0,s.useRef)(null),C=n===F$.Handle,w=a1((0,s.useCallback)(H4(C&&m),[C,m]),t1),T=(0,s.useRef)(null),E=t??U4[n];(0,s.useEffect)(()=>{if(!(!S.current||!b))return T.current||=K$({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=$Q([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...rQ({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:wG([`react-flow__resize-control`,`nodrag`,...D,n,r]),ref:S,style:{...i,scale:w,...o&&{[C?`backgroundColor`:`borderColor`]:o}},children:a})}(0,s.memo)(W4);var G4=204,K4=96,q4=84,J4={input:Le,runtime:W,model:ge,capabilities:Ve,output:ie};function Y4(e,t=34){return e?e.length<=t?e:`${e.slice(0,t)}…`:`-`}function X4(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 Z4(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 Q4(e){return e===`COMPLETED`||e===`SUCCEEDED`?`成功`:e===`RUNNING`?`运行中`:e===`FAILED`?`失败`:e===`PAUSED`?`已暂停`:e||`未知`}function $4({data:e}){let t=J4[e.icon];return(0,G.jsxs)(`div`,{className:`pipeline-node-card`,title:e.fullTitle||e.title,children:[(0,G.jsx)(j0,{id:`top`,type:`target`,position:$.Top}),(0,G.jsx)(j0,{id:`top-out`,type:`source`,position:$.Top}),(0,G.jsx)(j0,{id:`right`,type:`source`,position:$.Right}),(0,G.jsx)(j0,{id:`right-in`,type:`target`,position:$.Right}),(0,G.jsx)(j0,{id:`bottom`,type:`source`,position:$.Bottom}),(0,G.jsx)(j0,{id:`bottom-in`,type:`target`,position:$.Bottom}),(0,G.jsx)(j0,{id:`left`,type:`target`,position:$.Left}),(0,G.jsx)(j0,{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 e3={pipeline:$4};function t3(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*G4+(r-1)*q4,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:G4,height:K4}})),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:gZ.ArrowClosed,width:14,height:14}}})}}function n3(){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 r3({steps:e}){let{containerRef:t,width:n}=n3(),[r,i]=(0,s.useState)(null),a=(0,s.useMemo)(()=>t3(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)(u4,{nodes:a.nodes,edges:a.edges,nodeTypes:e3,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)(T4,{showFitView:!1,position:`bottom-right`,children:(0,G.jsx)(S4,{"aria-label":`适应画布`,title:`适应画布`,onClick:()=>r?.fitView({padding:.16,duration:260}),children:(0,G.jsx)(Pe,{size:14})})})})})}function i3({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||X4(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:Y4(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)(xd,{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]?Q4(_[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)(r3,{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:Y4(e.input||`运行`)}),(0,G.jsxs)(`small`,{children:[Z4(e.startedAt),` · `,Q4(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 a3=new Set([`QUEUED`,`RUNNING`]);function o3(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 s3(e){return e==null?`-`:e<1e3?`${e} ms`:`${(e/1e3).toFixed(2)} s`}function c3(e){if(!e.completedAt)return a3.has(e.status)?`进行中`:`-`;let t=new Date(e.completedAt).getTime()-new Date(e.createdAt).getTime();return Number.isFinite(t)&&t>=0?s3(t):`-`}function l3(e){return e===`PASSED`||e===`SUCCEEDED`?`success`:a3.has(e)?`info`:e===`CANCELLED`||e===`INTERRUPTED`?`warning`:`danger`}function u3(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 d3(e,t){try{let n=await e.json();return n?.error?.message||n?.detail?.message||t}catch{return t}}var f3=[{id:`response_contract@v1`,label:`响应契约`},{id:`runtime_budget@v1`,label:`运行预算`},{id:`tool_trajectory@v1`,label:`工具轨迹`},{id:`reference_match@v1`,label:`参考答案匹配`}],p3=f3.slice(0,3).map(e=>e.id);function m3({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)(()=>[...p3]),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 d3(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=>a3.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 d3(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 d3(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 ${l3(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=>o3(e.createdAt)},{id:`duration`,header:`耗时`,width:100,cell:c3}],[]),ie=i.filter(e=>a3.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)(xd,{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)(vm,{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)(nk,{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)(Ih,{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)(Ih,{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)(Ih,{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:f3.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 h3(e){return typeof e==`string`?e:e==null?`-`:JSON.stringify(e,null,2)}function g3(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 _3({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 d3(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||!a3.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||!a3.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 d3(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&&a3.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 ${l3(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:c3(r)}),(0,G.jsx)(`small`,{children:o3(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:a3.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 ${l3(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=u3(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 ${l3(t)}`,children:t}),(0,G.jsx)(`small`,{children:s3(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||h3(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=g3(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:h3(e.value)}),(0,G.jsx)(`span`,{className:`status-badge ${l3(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:[s3(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 ${l3(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 v3=[{value:`system`,label:`跟随系统`,description:`随 macOS 或浏览器切换`,icon:ze},{value:`light`,label:`浅色`,description:`始终使用明亮界面`,icon:dt},{value:`dark`,label:`深色`,description:`始终使用暗色界面`,icon:Be}],y3=[{id:`general`,label:`通用`},{id:`credentials`,label:`模型与凭证`},{id:`cloud`,label:`云端连接`},{id:`runtime`,label:`运行与沙箱`},{id:`about`,label:`关于`}];function b3(e){return e===`workspace`||e===`session`?`工作区`:e===`environment`?`启动环境`:e===`missing`?`未配置`:e}function x3(e){let t=(e||`read-only`).replaceAll(`_`,`-`);return t===`workspace-write`||t===`workspace-write-auto`||t===`full-access`?t:`read-only`}function S3({themePreference:e,onThemePreferenceChange:t,initialSection:n=`general`,onClose:r}){let[i,a]=(0,s.useState)(null),o=S_({resolver:M_(MB),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:x3(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(Ib(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)(nk,{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:y3.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:v3.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)(Ih,{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?`已配置 · ${b3(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)(Ih,{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)(YB,{model:m,onClose:()=>h(null),onChanged:b})]})})}var C3=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}},w3=`conversation.ksadk.io/v1`,T3=/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/,E3=new Set([`native`,`translated`,`degraded`,`unavailable`]),D3=new Set([`user_message`,`assistant_text`,`reasoning`,`tool_call`,`approval`,`progress`,`plan`,`goal`,`artifact`,`a2ui`,`error`,`unknown`]),O3=new Set([`append`,`replace`,`completed`]),k3=new Set([`pending`,`streaming`,`completed`,`failed`]),A3=new Set([`public`,`internal`,`hidden`]),j3=new Set([`apiVersion`,`kind`,`inputId`,`sessionId`,`idempotencyKey`,`parts`,`modelRef`,`reasoning`,`extensions`]),M3=new Set([`kind`,`text`]),N3=new Set([`kind`,`attachmentRef`,`mediaType`,`name`]),P3=`ksadk.approval`,F3=`ksadk.collaboration`,I3=`ksadk.goal`;function L3(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function R3(e,t){return typeof e==`string`&&e.length>0&&e.length<=t}function z3(e,t,n=!1){return e==null||typeof e==`string`&&e.length<=t&&(n||e.length>0)}function B3(e,t){return Object.keys(e).every(e=>t.has(e))}function V3(e){let t=L3(e);return!t||typeof t.kind!=`string`?null:t.kind===`text`?!B3(t,M3)||!R3(t.text,131072)?null:{kind:`text`,text:t.text}:t.kind===`attachment`?!B3(t,N3)||!R3(t.attachmentRef,2048)||!R3(t.mediaType,256)||!z3(t.name,1024,!0)?null:{kind:`attachment`,attachmentRef:t.attachmentRef,mediaType:t.mediaType,...t.name===void 0?{}:{name:t.name}}:null}function H3(e){if(e===void 0)return{};let t=L3(e);if(!t||Object.keys(t).some(e=>!T3.test(e)||!e.includes(`.`)))return null;let n=t[P3],r=t[F3],i=t[I3];return n!==void 0&&![`ask`,`risk`,`full`].includes(String(n))||r!==void 0&&![`default`,`plan`].includes(String(r))||i!==void 0&&!R3(i,4096)?null:{...t}}function U3(e){let t=L3(e);if(!t||!B3(t,j3)||t.apiVersion!==w3||t.kind!==`ConversationInput`||!R3(t.inputId,256)||!R3(t.sessionId,256)||!R3(t.idempotencyKey,512)||!Array.isArray(t.parts)||t.parts.length===0||!z3(t.modelRef,256)||!z3(t.reasoning,64))return null;let n=t.parts.map(V3),r=H3(t.extensions);return n.some(e=>e===null)||r===null?null:{apiVersion:w3,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 W3(e){let t=U3({...e,apiVersion:e.apiVersion||w3,kind:e.kind||`ConversationInput`});if(!t)throw new C3(`conversation_contract_mismatch`,`Conversation input does not match conversation.ksadk.io/v1.`);return t}function G3(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===P3?t.push(`approval`):n===F3?e.extensions?.[n]===`plan`&&t.push(`plan`):n===I3?t.push(`goal`):t.push(n);return[...new Set(t)]}function K3(e,t){if(e.sessionId!==t.sessionId)throw new C3(`conversation_session_mismatch`,`Conversation input session does not match the active surface.`);for(let n of G3(t))if(!Z3(e,n))throw new C3(`conversation_input_unsupported`,`Conversation input is not declared by the active surface.`,{capability:n});return t}function q3(e){let t=L3(e);return!t||!R3(t.name,128)||!T3.test(t.name)||!E3.has(t.mode)||!z3(t.reason,512,!0)||(t.mode===`degraded`||t.mode===`unavailable`)&&!R3(t.reason,512)?null:{name:t.name,mode:t.mode,...t.reason===void 0?{}:{reason:t.reason}}}function J3(e){if(e===void 0)return[];if(!Array.isArray(e))return null;let t=e.map(q3);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 Y3(e){let t=L3(e);if(!t||t.apiVersion!==w3||t.kind!==`ConversationSurface`||!R3(t.surfaceId,256)||!R3(t.sessionId,256)||!R3(t.providerRef,256))return null;let n=J3(t.inputs),r=J3(t.outputs);return!n||!r?null:{apiVersion:w3,kind:`ConversationSurface`,surfaceId:t.surfaceId,sessionId:t.sessionId,providerRef:t.providerRef,inputs:n,outputs:r}}function X3(e){let t=L3(e);if(!t||t.apiVersion!==w3||t.kindVersion!==1||!R3(t.itemId,512)||!z3(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||!R3(t.sessionId,256)||!R3(t.runId,256)||!R3(t.kind,128)||!O3.has(t.operation)||!k3.has(t.lifecycle)||t.visibility!==void 0&&!A3.has(t.visibility)||!R3(t.payloadSchemaRef,256)||!z3(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?{}:L3(t.payload),a=t.nativeRef===void 0?{}:L3(t.nativeRef);if(!i||!a)return null;let o=String(t.kind||`unknown`),s=D3.has(o)?o:`unknown`;return{apiVersion:w3,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 Z3(e,...t){return e.inputs.some(e=>t.includes(e.name)&&(e.mode===`native`||e.mode===`translated`))}var Q3={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 $3(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function e6(e){let t=Q3[e.kind];return t===void 0||t===e.payloadSchemaRef}function t6(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 n6(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 r6(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:t6(e.payload.uri)}}function i6(e,t){let n=e.payload[t];return typeof n==`string`&&n?n:null}function a6(e){if(e.kind===`tool_call`){let t=i6(e,`callId`);if(t)return`tool:${t}`}if(e.kind===`approval`){let t=i6(e,`interactionId`);if(t)return`approval:${t}`}if(e.kind===`a2ui`){let t=i6(e,`surfaceId`);if(t)return`a2ui:${t}`}return`item:${e.itemId}`}function o6(e,t){let n=$3(e)&&!$3(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 s6(e){let t=[],n=new Map;for(let r of e){let e=a6(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:o6(a.item,r),sourceItemIds:[...new Set([...a.sourceItemIds,r.itemId])]}}return t}function c6(e,t={}){let n=e.items.filter(e=>e.visibility===`public`||t.includeInternal===!0&&e.visibility===`internal`),r=n.filter(e6),i=n.filter(e=>!e6(e)),a=new Set([`user_message`,`assistant_text`,`reasoning`]),o=r.filter(e=>a.has(e.kind)).map(n6),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`)&&$3(e));return{timeline:s6(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(r6),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 l6(){return{items:[],appliedSources:[]}}function u6(e){return e.lifecycle===`completed`||e.lifecycle===`failed`}function d6(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 f6(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&&u6(a)&&!u6(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:d6(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 p6=class{state=l6();apply(e){let t=f6(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]}}},m6=8;function h6(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function g6(e){if(e?.aborted)throw new C3(`conversation_aborted`,`Conversation request was aborted.`)}function _6(e,t){return t?.aborted===!0||e instanceof Error&&e.name===`AbortError`}function v6(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 C3(`conversation_contract_mismatch`,`Conversation base URL must be an HTTP(S) URL without embedded credentials.`,{cause:e})}}function y6(e){return Math.min(200*2**Math.max(0,e-1),2e3)}function b6(e){return new Promise(t=>{setTimeout(t,e)})}async function x6(e,t,n){if(g6(n),!n){await e(t);return}await new Promise((r,i)=>{let a=()=>i(new C3(`conversation_aborted`,`Conversation request was aborted.`));n.addEventListener(`abort`,a,{once:!0}),e(t).then(r,i).finally(()=>{n.removeEventListener(`abort`,a)})})}function S6(e,t,n){let r=e.snapshot();return{cursor:t,runId:n,state:r,presentation:c6(r)}}function C6(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 C3(`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 C3(`conversation_contract_mismatch`,`Conversation stream contains invalid JSON.`,{cause:e})}let o=h6(a);if(!o||o.conversationItem===void 0){n!==void 0&&(t.cursor=Math.max(t.cursor,n));return}if(n===void 0)throw new C3(`conversation_stream_error`,`Canonical conversation items require an SSE replay cursor.`);let s=X3(o.conversationItem);if(!s)throw new C3(`conversation_contract_mismatch`,`Conversation stream item does not match conversation.ksadk.io/v1.`);if(t.runId&&t.runId!==s.runId)throw new C3(`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?.(S6(t.reducer,t.cursor,t.runId))}async function w6(e,t){if(!e.body)throw new C3(`conversation_stream_error`,`Conversation response has no event stream body.`);let n=e.body.getReader(),r=new TextDecoder,i=``;try{for(;;){g6(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;C6(i.slice(0,e),t),i=i.slice(e+n),o=/\r?\n\r?\n/.exec(i)}}i+=r.decode(),i.trim()&&C6(i,t)}catch(e){throw e instanceof C3?e:(_6(e,t.options.signal)&&g6(t.options.signal),new C3(`conversation_stream_error`,`Conversation event stream was interrupted.`,{cause:e,runId:t.runId||void 0,cursor:t.cursor}))}finally{n.releaseLock()}}function T6(e){return e.state.items.some(e=>(e.kind===`progress`||e.kind===`error`)&&(e.lifecycle===`completed`||e.lifecycle===`failed`))}var E6=class{fetcher;baseUrl;maxReconnects;sleep;retryDelayMs;constructor(e={}){if(!Number.isInteger(e.maxReconnects??m6)||(e.maxReconnects??m6)<0||(e.maxReconnects??m6)>32)throw new C3(`conversation_contract_mismatch`,`Conversation reconnect limit must be an integer from 0 to 32.`);this.fetcher=e.fetch,this.baseUrl=v6(e.baseUrl||``),this.maxReconnects=e.maxReconnects??m6,this.sleep=e.sleep||b6,this.retryDelayMs=e.retryDelayMs||y6}fetch(){if(this.fetcher)return this.fetcher;if(typeof globalThis.fetch==`function`)return globalThis.fetch.bind(globalThis);throw new C3(`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`){g6(n);try{return await this.fetch()(e,t)}catch(e){throw e instanceof C3?e:(_6(e,n)&&g6(n),new C3(r,`Conversation network request failed.`,{cause:e}))}}assertOk(e){if(!e.ok)throw new C3(`conversation_http_error`,`Conversation endpoint returned HTTP ${e.status}.`,{status:e.status})}async getSurface(e,t,n={}){if(!e||!t)throw new C3(`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 C3(`conversation_contract_mismatch`,`Conversation surface response is not valid JSON.`,{cause:e})}let o=h6(a),s=Y3(o?.surface);if(!o||typeof o.buildId!=`string`||!o.buildId||!s)throw new C3(`conversation_contract_mismatch`,`Conversation surface response does not match conversation.ksadk.io/v1.`);return{buildId:o.buildId,surface:s}}async streamTurn(e){g6(e.signal),K3(e.bootstrap.surface,e.input);let t={cursor:0,runId:``,reducer:new p6,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 w6(r,t)}catch(e){if(!(e instanceof C3)||e.code!==`conversation_stream_error`||!t.runId)throw e}let i=S6(t.reducer,t.cursor,t.runId);if(T6(i))return i;if(!t.runId)throw new C3(`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 x6(this.sleep,this.retryDelayMs(n),e.signal),g6(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 w6(r,t)}catch(e){if(e instanceof C3&&e.code===`conversation_aborted`||e instanceof C3&&e.code===`conversation_contract_mismatch`||e instanceof C3&&e.code===`conversation_http_error`&&e.status!==void 0&&e.status<500)throw e;continue}if(i=S6(t.reducer,t.cursor,t.runId),T6(i))return i}throw new C3(`conversation_reconnect_exhausted`,`Conversation replay stopped after the configured reconnect limit.`,{runId:t.runId,cursor:t.cursor})}};function D6(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 O6(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 k6(e){return[...e].reverse().find(e=>e.usage?.reported===!0&&Number.isFinite(e.usage.inputTokens))?.usage?.inputTokens}var A6=new Set([`RUNNING`,`PAUSED`,`WAITING_INPUT`]);function j6(e){return[...e].filter(e=>A6.has(String(e.status||``))).sort((e,t)=>Date.parse(e.startedAt||`1970-01-01`)-Date.parse(t.startedAt||`1970-01-01`)).at(-1)}function M6(e,t){return t?e.filter(e=>e.id!==t):e}function N6(e){let t=e.completedAt||e.startedAt||``,n=Date.parse(t);return Number.isFinite(n)?n:0}function P6(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)=>N6(e)-N6(t)),r=n[0],i=n.at(-1),a=[...n].reverse().find(e=>A6.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 F6(e,t){return{localId:e,responseId:e,sessionId:t,runId:``,reasoning:``,output:``,status:`streaming`,error:``,activities:[],surfaces:[],conversationItems:l6(),timeline:[],artifacts:[],fallbacks:[],pendingApprovals:[],transport:`responses`}}function I6(e){return e&&typeof e==`object`?e:{}}function L6(e,t){if(typeof e.detail==`string`&&e.detail.trim())return e.detail;let n=I6(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 R6(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:Y6(e.payload),data:e.payload})),...n.approvalItems.map(e=>({id:`approval:${e.itemId}`,kind:`approval`,title:L6(e.payload,`等待批准`),status:e.lifecycle===`failed`?`failed`:e.lifecycle===`completed`?`completed`:`waiting`,detail:Y6(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:L6(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=W6(i,{type:`a2ui.surface.update`,runId:e.runId,operations:t})}for(let e of n.structuredInputItems){let t=String(e.payload.surfaceId||``);t&&(i=W6(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:I6(e.payload.inputSchema),revision:Number(e.payload.revision||0)}))}}return i}function z6(e,t){return R6(e,t.state,t.presentation)}function B6(e,t){let n=String(t.type||``),r=X3(t.conversationItem);if(r){let t=f6(e.conversationItems,r);return t===e.conversationItems?e:R6(e,t,c6(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=I6(t.error);return{...e,status:`failed`,error:String(n.message||t.message||`Agent 运行失败`)}}if(n===`response.created`||n===`response.in_progress`){let n=I6(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=X6(I6(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 W6(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:I6(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=I6(t.response),r=I6(n.metadata);return{...e,responseId:String(n.id||e.responseId),runId:String(r.runtime_run_id||r.runtimeRunId||e.runId),usage:I6(n.usage),status:`completed`}}if(n===`response.cancelled`||n===`response.canceled`)return{...e,status:`cancelled`};if(n===`response.failed`||n===`error`){let n=I6(t.response),r=I6(t.error||n.error);return{...e,status:`failed`,error:String(r.message||t.message||`Agent 运行失败`)}}return e}function V6(e){return{id:e,catalogId:``,components:{},roots:[],dataModel:{}}}function H6(e){let t=e.a2uiOperations??e.a2ui_operations??e.operations;return Array.isArray(t)?t.map(I6):[]}function U6(e,t){for(let n of t){let t=I6(n.createSurface);if(Object.keys(t).length){let n=String(t.surfaceId||t.surface_id||``);if(!n)continue;let r=e.get(n)||V6(n);e.set(n,{...r,catalogId:String(t.catalogId||t.catalog_id||r.catalogId)});continue}let r=I6(n.updateComponents);if(Object.keys(r).length){let t=String(r.surfaceId||r.surface_id||``);if(!t)continue;let n=e.get(t)||V6(t),i={...n.components},a=Array.isArray(r.components)?r.components.map(I6):[];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=I6(n.updateDataModel);if(Object.keys(i).length){let t=String(i.surfaceId||i.surface_id||``);if(!t)continue;let n=e.get(t)||V6(t),r=I6(i.value);e.set(t,{...n,dataModel:String(i.path||`/`)===`/`?r:{...n.dataModel,...r}});continue}let a=I6(n.deleteSurface);if(Object.keys(a).length){let t=String(a.surfaceId||a.surface_id||``);t&&e.delete(t)}}}function W6(e,t){let n=new Map(e.surfaces.map(e=>[e.id,{...e,components:{...e.components},dataModel:{...e.dataModel}}]));U6(n,H6(t));let r=String(t.type||``),i=String(t.surfaceId||t.surface_id||``);if(r===`a2ui.interaction`&&i){let e=n.get(i)||V6(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:I6(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 G6(e){let t=F6(`persisted`,`persisted`);for(let n of e)n.type.startsWith(`a2ui.`)&&(t=W6(t,{type:n.type,...n.data||{}}));return t.surfaces}function K6(e){let t=``,n=(e=!1)=>{t=t.replaceAll(`\r +`));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(` @@ -260,8 +274,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. `);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 q6(e,t){return String(e.callId||e.call_id||e.toolCallId||e.tool_call_id||t)}function J6(e,t){return String(e===`command`?t.command||t.name||`执行命令`:e===`tool`?t.name||t.tool||`调用工具`:t.kind||t.action||`等待批准`)}function Y6(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 X6(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=I6(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:Y6(e),data:e}}function Z6(e){return[String(e.runId||``),String(e.scopeId||``),String(e.itemId||``),String(e.partId||``)].join(`/`)}function Q6(e){let t=I6(e.data?.runtimeEvent),n=t.output_refs??t.outputRefs;return Array.isArray(n)?n.map(I6):[]}function $6(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}:${Z6(e)}`,u=n.get(l),d=I6(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=Q6(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=q6(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:J6(l,e),status:m,detail:Y6(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===J6(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(` +`);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 e8(e){let t=Number(e.totalTokens??e.total_tokens??0);return`${Number.isFinite(t)?t.toLocaleString(`en-US`):`0`} tokens`}function t8(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 n8(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=I6(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:t8(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}:${q6(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=Y6(e)||l?.detail||``,p=J6(s,e),m=J6(s,{});i(r,{id:r,kind:s,title:p===m&&l?.title?l.title:p,summary:t8(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:e8(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 r8(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 i8(e){return!Number.isFinite(e)||Number(e)<0?`未上报`:Number(e)<1e3?`${Math.round(Number(e))}ms`:`${(Number(e)/1e3).toFixed(2)}s`}function a8(e){return Number.isFinite(e)?Number(e).toLocaleString():`未上报`}function o8(e){return{platform_safety:`平台安全规则`,agent_identity:`角色定义`,agent_policy:`任务规则`,runtime_capabilities:`运行时能力说明`,resource_manifest:`工具与 Skill 说明`,request_instructions:`本次请求指令`}[e]||e}function s8(e){return{platform_safety:`平台策略`,agent_identity:`Agent Revision`,agent_policy:`Agent Revision`,runtime_capabilities:`Runtime Adapter`,resource_manifest:`构建资源清单`,request_instructions:`本次请求`}[e]||`Prompt Compiler`}function c8(e){return e.length>20?`${e.slice(0,17)}…`:e}function l8(e){return e===`RUNNING`||e===`CREATED`?`运行中`:e===`COMPLETED`?`已完成`:e===`CANCELLED`?`已取消`:e===`INTERRUPTED`?`已中断`:e===`TIMED_OUT`?`已超时`:`失败`}function u8(e){try{return BigInt(String(e.startTimeUnixNano||`0`))}catch{return 0n}}function d8(e){if(!e.length)return[];let t=[...e].sort((e,t)=>u8(e){let n=u8(t);return!e||nNumber(u8(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 f8(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 p8(e){let t=await g(`/api/v1/runs/${encodeURIComponent(e)}/events`);if(!t.ok)return[];let n=[],r=K6(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 m8({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([p8(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)(()=>n8(a),[a]),D=(0,s.useMemo)(()=>d8(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(o8),F=u?.tokensByKind?.recalled_memory,I=(0,s.useMemo)(()=>r8(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:l8(r.status)}),(0,G.jsx)(`span`,{title:r.id,children:c8(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:i8(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?a8(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?`${a8(r.usage?.inputTokens)} / ${a8(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:o8(e.id)}),(0,G.jsxs)(`small`,{children:[`来源:`,s8(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:i8(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:f8(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 h8=[{value:`ask`,label:`请求批准`,compactLabel:`请求批准`,description:`文件修改与外部写入会逐次请求确认`},{value:`risk`,label:`帮我批准`,compactLabel:`帮我批准`,description:`仅在检测到风险操作时请求确认`},{value:`full`,label:`完全访问权限`,compactLabel:`完全访问`,description:`不受限制地访问互联网和工作区文件`}];function g8(e){return e===`ask`||e===`risk`||e===`full`?e:`risk`}function _8(e){return`agentkit-studio:approval:${e}`}function v8(e){return h8.find(t=>t.value===e)||h8[1]}function y8(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 b8(e){return(Array.isArray(e.children)?e.children:typeof e.child==`string`?[e.child]:[]).filter(e=>typeof e==`string`)}function x8({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=y8(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=b8(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=y8(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)(Ih,{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 S8=[{id:`plan`,slash:`/plan`,label:`计划模式`,description:`下一轮只分析并形成可执行计划`},{id:`goal`,slash:`/goal`,label:`设定长期目标`,description:`启动可暂停、可持续的 Codex Goal`},{id:`default`,slash:`/default`,label:`默认模式`,description:`返回直接执行模式`}];function C8(e){if(!e.startsWith(`/`)||/\s/.test(e))return[];let t=e.toLocaleLowerCase();return S8.filter(e=>e.slash.startsWith(t))}function w8(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 T8(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 E8=new Set([`txt`,`md`,`json`,`yaml`,`yml`,`csv`,`ts`,`tsx`,`js`,`jsx`,`py`,`go`,`rs`,`java`,`sh`,`css`,`html`,`xml`,`toml`,`ini`,`log`]),D8=[`image/*`,`.txt`,`.md`,`.json`,`.yaml`,`.yml`,`.csv`,`.ts`,`.tsx`,`.js`,`.jsx`,`.py`,`.go`,`.rs`,`.java`,`.sh`,`.css`,`.html`,`.xml`,`.toml`,`.ini`,`.log`].join(`,`);function O8(e){return new TextEncoder().encode(JSON.stringify(T8(``,e))).byteLength}function k8(e){return e.split(`.`).at(-1)?.toLocaleLowerCase()||``}function A8(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 j8(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 M8(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 A8(e)};if(e.type.startsWith(`text/`)||E8.has(k8(e.name)))return{...t,kind:`text`,text:await j8(e)};throw Error(`暂不支持 ${e.name};请添加图片或 UTF-8 文本/代码文件`)}function N8(e){return e<1024?`${e} B`:`${Math.max(.1,e/1024).toFixed(1)} KiB`}function P8({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 F8({disabled:e,onTogglePlan:t,onStartGoal:n,onFiles:r,active:i=!0,allowAttachments:a=!0,allowPlan:o=!0,allowGoal:c=!0,attachmentAccept:l=D8,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)(ad,{open:f,onOpenChange:p,children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsxs)(cd,{className:`composer-action-menu`,side:`top`,align:`start`,sideOffset:10,collisionPadding:12,children:[a&&(0,G.jsxs)(G.Fragment,{children:[(0,G.jsx)(ld,{className:`composer-action-heading`,children:`添加到本轮`}),(0,G.jsxs)(ud,{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)(md,{className:`composer-action-separator`}),(o||c)&&(0,G.jsx)(ld,{className:`composer-action-heading`,children:`运行方式`}),o&&(0,G.jsxs)(ud,{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)(ud,{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 I8({input:e,activeIndex:t,onSelect:n,allowPlan:r=!0,allowGoal:i=!0}){let a=C8(e).filter(e=>(e.id!==`plan`||r)&&(e.id!==`goal`||i)&&(e.id!=="default"||r));return a.length?(0,G.jsx)(gb,{className:`composer-command-menu`,shouldFilter:!1,"aria-label":`斜杠命令`,children:(0,G.jsx)(gb.List,{children:a.map((e,r)=>(0,G.jsxs)(gb.Item,{value:e.id,"data-active":r===t?`true`:`false`,onSelect:()=>n(e.id),children:[(0,G.jsx)(P8,{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 L8=[{value:``,label:`自动`,description:`使用模型或 Agent 的默认推理强度`},{value:`low`,label:`低`,description:`优先缩短响应时间`},{value:`medium`,label:`中`,description:`平衡速度与推理深度`},{value:`high`,label:`高`,description:`优先更充分的推理`}];function R8({value:e,onChange:t,active:n}){let[r,i]=(0,s.useState)(!1);(0,s.useEffect)(()=>{n||i(!1)},[n]);let a=v8(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)(ad,{open:r,onOpenChange:i,children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsxs)(cd,{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)(dd,{value:e,onValueChange:e=>t(g8(e)),children:h8.map(e=>(0,G.jsxs)(fd,{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)(pd,{className:`chat-approval-indicator`,children:(0,G.jsx)(V,{size:16})})]},e.value))})]})})]})}function z8({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,_=L8.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)(ad,{open:d,onOpenChange:f,children:[(0,G.jsx)(od,{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)(sd,{children:(0,G.jsxs)(cd,{className:`chat-model-menu chat-model-reasoning-menu`,side:`top`,sideOffset:9,align:`end`,collisionPadding:12,children:[a&&(0,G.jsxs)(hd,{children:[(0,G.jsxs)(gd,{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)(sd,{children:(0,G.jsx)(_d,{className:`chat-model-menu chat-model-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(dd,{value:t,onValueChange:c,children:e.map(e=>(0,G.jsxs)(fd,{value:e.id,className:`chat-model-option`,children:[(0,G.jsx)(`span`,{children:e.label}),(0,G.jsx)(pd,{children:(0,G.jsx)(V,{size:15})})]},e.id))})})})]}),g&&(0,G.jsxs)(hd,{children:[(0,G.jsxs)(gd,{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)(sd,{children:(0,G.jsx)(_d,{className:`chat-model-menu chat-model-submenu chat-reasoning-submenu`,sideOffset:8,alignOffset:-6,collisionPadding:12,children:(0,G.jsx)(dd,{value:n,onValueChange:e=>l(e),children:L8.filter(e=>e.value===``||h.includes(e.value)).map(e=>(0,G.jsxs)(fd,{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)(pd,{children:(0,G.jsx)(V,{size:15})})]},e.value||`auto`))})})})]})]})})]})}function B8({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=C8(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)(I8,{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`?`文本`:`文件`,` · `,N8(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)(F8,{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)(R8,{value:o,onChange:x,active:r}),(0,G.jsx)(`span`,{className:`chat-composer-spacer`}),f,(0,G.jsx)(z8,{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 V8(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 H8(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 U8({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}),` `,H8(r),` · `,V8(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 W8(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 G8(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 K8(e){if(!(e instanceof C3))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 q8(e,...t){return e.status===`legacy`||e.status===`declared`&&Z3(e.surface,...t)}function J8(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function Y8({usedTokens:e,limitTokens:t,known:n,percent:r}){let i=(0,s.useId)(),a=O6({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 X8(e){return`${e}_${typeof crypto.randomUUID==`function`?crypto.randomUUID().replaceAll(`-`,``):`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`}`}function Z8(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 Q8(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 $8(e,t=34){let n=e.replace(/\s+/g,` `).trim();return n.length>t?`${n.slice(0,t)}…`:n}function e5(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 t5(e){let t=await e.clone().json().catch(()=>null);return t?.error?.message||t?.Message||t?.message||`请求失败(HTTP ${e.status})`}async function n5(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 t5(i));let a=await i.json();if(typeof a?.attachmentRef!=`string`||typeof a?.mediaType!=`string`||typeof a?.name!=`string`)throw Error(`附件上传响应无效`);return a}function r5({error:e,onConfigure:t,onOpenSettings:n,onRetry:r}){let i=G8(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:W8(e)})]})]})]})}function i5(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 a5(e){return e.kind===`command`?`命令`:e.kind===`approval`?`人工确认`:`工具`}function o5(e){let t=e.replace(/```[\s\S]*?```/g,` `).replace(/[`#>*_[\]()-]+/g,` `).replace(/\s+/g,` `).trim();return t?$8(t.split(/[。!?!?]+|\.(?=\s|$)/).map(e=>e.trim()).filter(Boolean).at(-1)||t,72):``}function s5({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=e5(r),o=n?i?`${i.status===`waiting`?`等待确认`:`正在处理`} · ${i.title}`:o5(e)?`正在思考 · ${o5(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)(c5,{activity:e},e.id))]})]})}function c5({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:i5(e.kind)}),(0,G.jsxs)(`span`,{className:`chat-activity-copy`,children:[(0,G.jsx)(`small`,{children:a5(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 l5({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)(m5,{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:Y6(n.payload),data:n.payload};return(0,G.jsx)(c5,{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 u5({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)(x8,{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 d5({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=K6(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)(u5,{surfaces:G6(r),onInteraction:(t,r,i,a)=>n(e,t,r,i,a)})}function f5({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 t5(t));let r=[],i=K6(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)(()=>$6(a),[a]),d=(0,s.useMemo)(()=>G6(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)(s5,{reasoning:u.reasoning,activities:u.activities,streaming:t===`RUNNING`,durationMs:n}),f.map(t=>(0,G.jsx)(x8,{surface:t,onSubmit:(t,n,r,a)=>i(e,t,n,r,a)},t.id)),r&&u.output&&(0,G.jsx)(m5,{children:u.output})]})}function p5({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 m5({children:e,streaming:t=!1}){return(0,G.jsx)(`div`,{className:`chat-markdown${t?` streaming`:``}`,children:(0,G.jsx)(HF,{remarkPlugins:[KR],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)(p5,{children:e})},children:e})})}function h5({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:Q8(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:Q8(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)(f5,{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)(r5,{error:c,onConfigure:i,onOpenSettings:a,onRetry:()=>o(e.input)}):c?(0,G.jsx)(m5,{children:c}):null]})]})]})}function g5({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)(l5,{items:t.timeline,streaming:t.status===`streaming`}):(0,G.jsx)(s5,{reasoning:t.reasoning,activities:t.activities,streaming:t.status===`streaming`}),t.surfaces.filter(e=>e.interaction?.status!==`pending`).map(e=>(0,G.jsx)(x8,{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)(m5,{streaming:t.status===`streaming`,children:t.output}):t.error?(0,G.jsx)(r5,{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 _5({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)(()=>X8(`ses_surface`),[e]),le=(0,s.useMemo)(()=>P6(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=j6(de),fe=F?.status||String(W?.status||``).toLowerCase(),pe=[`streaming`,`paused`,`waiting_input`].includes(fe)||!!W,me=M6(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=D6(Ce?.input_tokens??Ce?.inputTokens??k6(de),Se?.context_window_tokens??Se?.contextWindowTokens),Te=d.map(e=>({id:e.id,label:e.display_name||e.displayName||e.id,reasoningEfforts:J8(e)})),Ee=J8(Se).includes(E)?E:``,De=q8(A,`text`),Oe=q8(A,`attachment.image`,`attachments`),ke=q8(A,`attachment.file`,`attachments`),Ae=Oe||ke,je=q8(A,`plan`),Me=q8(A,`goal`),Pe=q8(A,`approval`,`approval.mode`),Ie=q8(A,`model.select`),Le=q8(A,`reasoning.effort`),Re=A.status===`loading`,ze=Oe&&ke?D8:Oe?`image/*`:D8.split(`,`).filter(e=>e!==`image/*`).join(`,`);(0,s.useEffect)(()=>{E&&!J8(Se).includes(E)&&D(``)},[E,Se]),(0,s.useEffect)(()=>{let t=new AbortController,n=!1,r=h||ce;return j({status:`loading`}),new E6({fetch:g}).getSurface(e,r,{signal:t.signal}).then(({buildId:e,surface:t})=>{if(t.sessionId!==r)throw new C3(`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 C3&&e.code===`conversation_aborted`)){if(e instanceof C3&&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 t5(t));let n=(await t.json()).items||[],r=P6(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 t5(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(g8(localStorage.getItem(_8(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 M8(e))}catch(e){J(`无法添加附件`,e instanceof Error?e.message:String(e),`error`)}if(!i.length)return;let a=[...O,...i];if(O8(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=w8(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:X8(`ses`)),d=X8(`resp`),f=S,m=new AbortController;ae.current=m;let v={...F6(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=B6(v,e),I(v)};if(A.status===`declared`){let e=await Promise.all(y.map(e=>n5(e,m.signal))),t=W3({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 E6({fetch:g}).streamTurn({bootstrap:{buildId:A.buildId,surface:A.surface},input:t,signal:m.signal,onUpdate:e=>{v=z6(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:T8(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 t5(n));let r=new TextDecoder,i=K6(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=K8(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(_8(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 t5(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 t5(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 t5(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 t5(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 t5(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} · ${Z8(e.updatedAt)}`,children:[(0,G.jsx)(`strong`,{children:$8(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":`删除会话:${$8(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)(h5,{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)(g5,{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)(u5,{surfaces:F.surfaces,approvals:F.pendingApprovals,onInteraction:(e,t,n,r)=>rt(F.runId,e,t,n,r)}):xe.map(e=>(0,G.jsx)(d5,{runId:e.id,status:e.status,onInteraction:rt},e.id)),pe&&ge&&(0,G.jsx)(U8,{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)(B8,{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)(Y8,{...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)(Oa,{title:`删除这个会话?`,description:`相关 Run 与 Trace 会从当前本地工作区移除。`,confirmText:`删除会话`,busy:ee,onConfirm:it,onCancel:()=>H(``)})]})}function v5(e){YF(e,[/\r?\n|\r/g,y5])}function y5(){return{type:`break`}}function b5(){return function(e){v5(e)}}function x5(e){let t=e?.capabilities?.reasoning_efforts;return Array.isArray(t)?t.filter(e=>e===`low`||e===`medium`||e===`high`):[]}function S5(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 S5(t.text??t.content??t.value??``)}return``}).filter(Boolean).join(` -`);if(e&&typeof e==`object`){let t=e;return S5(t.text??t.content??t.value??``)}return``}function C5(e){return typeof e==`string`||typeof e==`number`?String(e):``}function w5(...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=w5(e.message,e.detail,e.reason,e.error,e.text);if(n)return n}return``}function T5(e){return e&&typeof e==`object`?e:{}}function E5(e){if(!e||typeof e!=`object`)return null;let t=e,n=Object.keys(T5(t.payload)).length?T5(t.payload):t,r=T5(n.content),i=[r.runtime_event,r.runtimeEvent,n.runtime_event,n.runtimeEvent,t.runtime_event,t.runtimeEvent].map(T5).find(e=>Object.keys(e).length>0)||{},a=Object.keys(i).length?i:n,o=C5(t.event_type??t.eventType??n.event_type??n.eventType).toLowerCase();return{event:a,eventType:C5(a.event_type??a.eventType??a.type).toLowerCase()||o,runId:C5(a.run_id??a.runId??n.run_id??n.runId??t.run_id??t.runId),invocationId:C5(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 D5(e){return e.reduce((e,t)=>{let n=E5(t);return Math.max(e,n?.seq||0)},0)}function O5(e){let t=T5(e);return(Array.isArray(t.parts)?t.parts.map(T5):[])[0]||t}function k5(e){if(typeof e==`string`)return e;if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function A5(e){let t=T5(e),n=T5(t.payload),r=T5(n.content),i=E5(e)?.event||{},a=[t.conversationItem,n.conversationItem,r.conversationItem,i.conversationItem];for(let e of a){let t=X3(e);if(t)return t}return null}function j5(e){let t=A5(e);if(!t||t.visibility!==`public`||t.kind===`unknown`||t.kind===`progress`)return null;let n=S5(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=S5(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||k5(t.payload),status:r,operation:t.operation===`append`?`append`:`replace`}}function M5(e){let t=j5(e);if(t)return t;let n=E5(e);if(!n)return null;let r=n.event;if([`message.delta`,`response.output_text.delta`,`output_text.delta`].includes(n.eventType)){let e=T5(r.content),t=T5(r.update),i=S5(t.delta??t.text??r.delta??e.delta??r.text);if(!i)return null;let a=C5(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||C5(r.op).toLowerCase()===`replace`?`replace`:`append`}}if(![`item.started`,`item.updated`,`item.completed`,`item.failed`].includes(n.eventType))return null;let i=C5(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=T5(o),c=O5(o),l=S5(c.text??c.delta??c.content??s.parts??r.text),u=S5(c.name??r.name??r.tool_name??r.title)||(a===`reasoning`?`思考过程`:a===`approval`?`等待确认`:a===`tool`?`工具调用`:`回复`),d=l||k5(c.result??c.output??c.arguments??c.error??``),f=C5(r.item_id??r.itemId??c.call_id??c.callId)||`${a}:${u}`;return{id:[n.invocationId||n.runId,C5(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:C5(r.op).toLowerCase()===`append`?`append`:`replace`}}function N5(e){let t=M5(e);if(t)return[t];let n=E5(e);if(!n)return[];let r=n.event,i=n.eventType,a=C5(r.id??r.response_id??r.responseId)||n.invocationId||n.runId||`direct`,o=[],s=Array.isArray(r.choices)?r.choices.map(T5):[];if(s.forEach((e,t)=>{let n=T5(e.delta),r=S5(n.reasoning_content??n.reasoning??n.thinking);r&&o.push({id:`${a}//reasoning:${C5(e.index)||t}`,kind:`reasoning`,title:`思考过程`,text:r,detail:r,status:`running`,operation:`append`});let i=S5(n.content);i&&o.push({id:`${a}//message:${C5(e.index)||t}`,kind:`message`,title:`回复`,text:i,detail:i,status:`running`,operation:`append`}),(Array.isArray(n.tool_calls)?n.tool_calls.map(T5):[]).forEach((n,r)=>{let i=T5(n.function),s=S5(i.name??n.name)||`工具调用`,c=S5(i.arguments??n.arguments);o.push({id:`${a}//tool:${C5(e.index)||t}:${C5(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=S5(r.delta??r.text??T5(r.part).text);e&&o.push({id:`${a}//reasoning:${C5(r.item_id??r.itemId)||`summary`}`,kind:`reasoning`,title:`思考过程`,text:e,detail:e,status:`running`,operation:r.replace===!0||C5(r.op).toLowerCase()===`replace`?`replace`:`append`})}if([`response.output_item.added`,`response.output_item.done`].includes(i)){let e=T5(r.item),t=C5(e.type).toLowerCase();[`mcp_approval_request`,`approval_request`].includes(t)&&o.push({id:`${a}//approval:${C5(e.id??e.approval_request_id??e.call_id)||`request`}`,kind:`approval`,title:S5(e.title??e.name??e.server_label)||`等待确认`,text:``,detail:S5(e.message)||k5(e.arguments??e.request??``),status:`waiting`,operation:`replace`}),[`function_call`,`tool_call`,`computer_call`,`mcp_call`].includes(t)&&o.push({id:`${a}//tool:${C5(e.id??e.call_id??r.output_index)||`output`}`,kind:`tool`,title:S5(e.name)||`工具调用`,text:``,detail:S5(e.arguments??e.output)||k5(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=S5(r.delta);o.push({id:`${a}//tool:${C5(r.item_id??r.itemId??r.call_id)||`output`}`,kind:`tool`,title:S5(r.name)||`工具调用`,text:``,detail:e,status:`running`,operation:`append`})}return i===`response.approval_request`&&o.push({id:`${a}//approval:${C5(r.interaction_id??r.approval_request_id??r.item_id)||`request`}`,kind:`approval`,title:S5(r.title??r.message??T5(r.request).title)||`等待确认`,text:``,detail:S5(r.message)||k5(r.request??``),status:`waiting`,operation:`replace`}),o}function P5(e){let t=E5(e);if(!t)return``;let n=C5(t.event.event_id??t.event.eventId);return n?`${t.runId||t.invocationId}/${n}`:``}function F5(e){let t=E5(e);if(!t)return null;let n=t.event,r=t.eventType;if(C5(n.object).toLowerCase()===`response`){let e=C5(n.status).toLowerCase();if(e===`completed`)return{status:`completed`,error:``};if([`failed`,`cancelled`,`canceled`,`incomplete`].includes(e))return{status:`failed`,error:w5(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:w5(n.error,n.response,n.message,n.detail)||`云端流式响应失败`}:null}function I5(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 L5(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:S5(t.title??t.summary??t.first_prompt??``)||`新会话`,updatedAt:C5(t.updated_at??t.updatedAt??t.created_at),state:C5(t.active_run_status??t.state),error:w5(t.active_run_error,t.activeRunError,t.last_error,t.lastError,t.error)}:null}function R5(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 z5(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:S5(t.content),timestamp:String(t.timestamp??``)}}function B5(e){let t=new Map;for(let n of e){let e=E5(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:S5(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 V5(e,t,n,r){if(!t&&!n&&r<=0)return null;for(let i of e){let e=E5(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=w5(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||w5(t.error,t.message,t.reason)}}}return null}async function H5(e,t,n){if(!e.ok)throw Error(await U5(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 U5(e){try{let t=await e.json();return String(t?.error?.message||t?.message||t?.detail||`请求失败 (${e.status})`)}catch{return`请求失败 (${e.status})`}}async function W5(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 G5({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 K5({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 U5(t));let n=await t.json(),r=(n.sessions||n.items||[]).map(L5).filter(e=>!!e);o(r);let i=r.find(e=>e.id===ae.current);i&&R5(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 U5(t));let n=((await t.json()).messages||[]).map(z5).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 U5(t));let n=await t.json(),r=Array.isArray(n.events)?n.events:[];de.current.set(e,Math.max(de.current.get(e)||0,D5(r)));let i=V5(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(B5(a)),!me.current){let e=r.reduce((e,t)=>{let n=M5(t);return n&&n.kind!==`message`?I5(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 U5(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(g8(localStorage.getItem(_8(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=x5(xe).includes(k)?k:``;(0,s.useEffect)(()=>{k&&!x5(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 U5(e));let t=await e.json(),n=L5(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=w8(_);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 W5(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=>I5(t,e));return}p(t=>I5(t,e))};g(`${ge}/sessions/${encodeURIComponent(r)}/events/stream?afterSeqId=${ue.current}`,{headers:{Accept:`text/event-stream`},signal:a.signal}).then(e=>H5(e,e=>{let t=E5(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(B5(pe.current));let a=M5(e);if(a&&a.kind!==`message`){let t=P5(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||o(a,`session`)}let s=V5([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 H5(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(B5(pe.current));let t=P5(e),n=!!(t&&he.current.has(t));t&&he.current.add(t),n||N5(e).forEach(e=>o(e,`direct`));let r=F5(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 U5(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 U5(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=R5(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||R5(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)(HF,{remarkPlugins:[KR,b5],children:e.content||`…`})})]},e.id)),(0,G.jsx)(G5,{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)(HF,{remarkPlugins:[KR,b5],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)(B8,{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:x5(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(_8(t),e)},onModelChange:w,onReasoningEffortChange:A,onCommandSelect:De,onCommandIndexChange:M,onSend:()=>{Te()}}),(0,G.jsx)(`p`,{className:`chat-composer-disclaimer`,children:`AI 生成内容可能不准确,请核对关键结论与工具操作。`})]})]})]})}function q5(e){return e<=1023?`compact`:e<=1439?`laptop`:e<=1919?`desktop`:`wide`}function J5(){let[e,t]=(0,s.useState)(()=>q5(window.innerWidth));return(0,s.useEffect)(()=>{let e=()=>t(q5(window.innerWidth));return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}var Y5=`agentkit-studio-theme`,X5=`(prefers-color-scheme: dark)`;function Z5(e){return e===`light`||e===`dark`||e===`system`?e:`light`}function Q5(e,t){return e===`system`?t?`dark`:`light`:e}function $5(){try{return Z5(window.localStorage.getItem(Y5))}catch{return`light`}}function e7(){return typeof window<`u`&&window.matchMedia(`(prefers-color-scheme: dark)`).matches}function t7(e){let t=document.documentElement;t.classList.toggle(`dark`,e===`dark`),t.dataset.theme=e,t.style.colorScheme=e}function n7(){let e=$5();return t7(Q5(e,e7())),e}function r7(){let[e,t]=(0,s.useState)($5),[n,r]=(0,s.useState)(e7),i=Q5(e,n);return(0,s.useEffect)(()=>{let e=window.matchMedia(X5),t=()=>r(e.matches);return t(),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]),(0,s.useLayoutEffect)(()=>{t7(i)},[i]),{preference:e,resolvedTheme:i,setPreference:(0,s.useCallback)(e=>{t(e);try{window.localStorage.setItem(Y5,e)}catch{}},[])}}var i7=`agentkit.studio.rail-expanded`,a7=[{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 o7(){try{let e=window.localStorage.getItem(i7);return e===null?null:e===`true`}catch{return null}}function s7(e){try{window.localStorage.setItem(i7,String(e))}catch{}}function c7(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 l7({label:e,children:t}){return(0,G.jsxs)($v,{children:[(0,G.jsx)(ey,{asChild:!0,children:t}),(0,G.jsx)(ty,{children:(0,G.jsxs)(ny,{className:`studio-tooltip`,side:`right`,sideOffset:8,children:[e,(0,G.jsx)(ry,{className:`studio-tooltip-arrow`})]})})]})}function u7({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)(Qv,{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)(l7,{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:[a7.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=c7(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)(l7,{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)(l7,{label:t.label,children:i},t.id)})]})]}),(0,G.jsxs)(`div`,{className:`sidebar-footer`,children:[(0,G.jsx)(l7,{label:`本地用户`,children:(0,G.jsx)(`span`,{className:`user-avatar`,"aria-label":`本地用户`,children:`A`})}),(0,G.jsx)(l7,{label:`设置`,children:(0,G.jsx)(`button`,{className:`icon-button tertiary`,type:`button`,"aria-label":`设置`,onClick:u,children:(0,G.jsx)(it,{size:16})})})]})]})})}function d7({currentAgentId:e,registry:t=fH.contributions,route:n}){let r=t.getEntries(lV.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 f7={agents:`Agent`,create:`创建 Agent`,"agent-detail":`Agent 配置`,conversations:`会话`,resources:`工程资源`,builds:`构建`,deployments:`部署`,observability:`可观测`,evaluations:`评测`,"runtime-resources":`运行资源`,plugins:`已安装插件`,automations:`自动化`,orchestration:`任务编排`,extension:`插件`},p7=Object.keys(f7),m7=[`model`,`tool`,`mcp`,`skill`],h7=new Set([`conversations`,`builds`,`observability`,`automations`,`orchestration`]),g7=`agentkit-studio:chat-target:v1`;function _7(){try{return b7(window.localStorage.getItem(g7)||``)}catch{return{kind:``,id:``}}}function v7(e){try{window.localStorage.setItem(g7,e)}catch{}}function y7(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`:p7.includes(a)?a:`agents`;return{view:s,resourceKind:s===`resources`&&m7.includes(t[1])?t[1]:`model`,editingAgentId:n,detailAgentId:r,evaluationRunId:i,extensionPath:o}}function b7(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 x7(e,t,n){return e===`extension`&&!n.some(e=>e.path===t)}function S7(){let e=J5(),t=r7(),n=y7(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=_7();return e.kind===`cloud`?e.id:``}),[te,ne]=(0,s.useState)(!1),[U,re]=(0,s.useState)(0),[ie,ae]=(0,s.useState)(o7),oe=dV(fH.contributions,lV.sidebarNavigation),se=dV(fH.contributions,lV.route);(0,s.useEffect)(()=>{cG.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=y7(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=cU(i,[...c.values()]);z(l),ee(e=>l.some(t=>t.id===e&&aU(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=>aU(e).kind===`studio-session-events`),_e=ge.find(e=>e.id===H),ve=r===`conversations`&&!!_e;(0,s.useEffect)(()=>{r!==`conversations`||!m||!B||(_e?v7(`cloud:${_e.id}`):fe&&v7(`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}=b7(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){aU(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`:f7[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),s7(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)(()=>{x7(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)(u7,{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)(Ih,{className:`header-agent-selector conversation-target-selector`,ariaLabel:`切换会话目标`,value:be,placeholder:`选择会话目标`,options:ye,onValueChange:xe}):h7.has(r)&&(0,G.jsx)(Ih,{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)(K5,{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)(_5,{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)(m8,{agentId:_,onClose:()=>ne(!1),onOpenTrace:()=>ce(`observability`)})]}),(0,G.jsxs)(`div`,{style:{display:r===`conversations`?`none`:void 0},children:[r===`agents`&&(0,G.jsx)(Rh,{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)(OH,{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)(YH,{agentId:x,onBack:()=>ce(`agents`),onChat:Se,onBuild:()=>ce(`builds`),onEdit:Ee,onChanged:de}),r===`resources`&&(0,G.jsx)(UB,{kind:u,onKindChange:De,refreshTick:U}),r===`builds`&&(0,G.jsx)(nU,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`deployments`&&(0,G.jsx)(zU,{onCreate:Te,onOpenChat:Ce,onSelectBuild:()=>ce(`builds`)}),r===`observability`&&(0,G.jsx)(ZW,{refreshTick:U}),r===`evaluations`&&!a&&(0,G.jsx)(m3,{refreshTick:U,onOpenRun:le}),r===`evaluations`&&a&&(0,G.jsx)(_3,{runId:a,onBack:ue}),r===`runtime-resources`&&(0,G.jsx)(aG,{refreshTick:U,onOpenResources:De}),r===`plugins`&&(0,G.jsx)(CG,{}),r===`automations`&&(0,G.jsx)(UH,{currentAgentId:_,agents:f,onSelectAgent:v,scopedAgentId:y}),r===`orchestration`&&(0,G.jsx)(i3,{currentAgentId:_,agents:f,onSelectAgent:v,onCreate:Te}),r===`extension`&&Re&&(0,G.jsx)(d7,{currentAgentId:_,route:Re})]})]})]}),j&&(0,G.jsx)(S3,{themePreference:t.preference,onThemePreferenceChange:t.setPreference,initialSection:P,onClose:()=>M(!1)}),(0,G.jsx)(L_,{})]})]})}async function C7(){n7();try{await _()}catch{}(0,c.createRoot)(document.getElementById(`root`)).render((0,G.jsx)(s.StrictMode,{children:(0,G.jsx)(S7,{})}))}C7(); \ No newline at end of file +`)}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/react-vendor-D0Ec-185.js b/ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js similarity index 94% rename from ksadk/studio/static/assets/react-vendor-D0Ec-185.js rename to ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js index 7a4c0881..d17f60dd 100644 --- a/ksadk/studio/static/assets/react-vendor-D0Ec-185.js +++ b/ksadk/studio/static/assets/react-vendor-BNmTiJ-I.js @@ -1,4 +1,4 @@ -import{t as e}from"./rolldown-runtime-hePW80VL.js";var t=e((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 ie(e,t){return re(e.type,t,e.props)}function C(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function se(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function ce(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 le(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,le(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+se(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),le(o,r,i,``,function(e){return e})):o!=null&&(C(o)&&(o=ie(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{n.exports=t()})),r=e((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,C());else{var t=n(l);t!==null&&se(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&&se(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?C():ee=!1}}}var C;if(typeof y==`function`)C=function(){y(ie)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=ie,C=function(){oe.postMessage(null)}}else C=function(){_(ie,0)};function se(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,se(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,C()))),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}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(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=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1me||(e.current=pe[me],pe[me]=null,me--)}function D(e,t){me++,pe[me]=e.current,e.current=t}var ge=he(null),_e=he(null),ve=he(null),ye=he(null);function be(e,t){switch(D(ve,t),D(_e,e),D(ge,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}E(ge),D(ge,e)}function xe(){E(ge),E(_e),E(ve)}function Se(e){e.memoizedState!==null&&D(ye,e);var t=ge.current,n=Hd(t,e.type);t!==n&&(D(_e,e),D(ge,n))}function Ce(e){_e.current===e&&(E(ge),E(_e)),ye.current===e&&(E(ye),Qf._currentValue=fe)}var we,Te;function Ee(e){if(we===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);we=t&&t[1]||``,Te=-1{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 ie(e,t){return re(e.type,t,e.props)}function C(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ae(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var oe=/\/+/g;function se(e,t){return typeof e==`object`&&e&&e.key!=null?ae(``+e.key):t.toString(36)}function ce(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 le(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,le(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+se(e,0):a,ee(o)?(i=``,c!=null&&(i=c.replace(oe,`$&/`)+`/`),le(o,r,i,``,function(e){return e})):o!=null&&(C(o)&&(o=ie(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(oe,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(ee(e))for(var u=0;u{n.exports=t()})),r=e((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,C());else{var t=n(l);t!==null&&se(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&&se(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}}}finally{i?C():ee=!1}}}var C;if(typeof y==`function`)C=function(){y(ie)};else if(typeof MessageChannel<`u`){var ae=new MessageChannel,oe=ae.port2;ae.port1.onmessage=ie,C=function(){oe.postMessage(null)}}else C=function(){_(ie,0)};function se(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,se(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,ee||(ee=!0,C()))),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}}}})),i=e(((e,t)=>{t.exports=r()})),a=e((e=>{var t=n();function r(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=a()})),s=e((e=>{var t=i(),r=n(),a=o();function s(e){var t=`https://react.dev/errors/`+e;if(1me||(e.current=pe[me],pe[me]=null,me--)}function D(e,t){me++,pe[me]=e.current,e.current=t}var ge=he(null),_e=he(null),ve=he(null),ye=he(null);function be(e,t){switch(D(ve,t),D(_e,e),D(ge,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}E(ge),D(ge,e)}function xe(){E(ge),E(_e),E(ve)}function Se(e){e.memoizedState!==null&&D(ye,e);var t=ge.current,n=Hd(t,e.type);t!==n&&(D(_e,e),D(ge,n))}function Ce(e){_e.current===e&&(E(ge),E(_e)),ye.current===e&&(E(ye),Qf._currentValue=fe)}var we,Te;function Ee(e){if(we===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);we=t&&t[1]||``,Te=-1)`:-1 AgentKit Studio - + - + diff --git a/tests/packaging/test_phase2_release_preflight.py b/tests/packaging/test_phase2_release_preflight.py index 7745942a..d331ee2e 100644 --- a/tests/packaging/test_phase2_release_preflight.py +++ b/tests/packaging/test_phase2_release_preflight.py @@ -17,6 +17,7 @@ CREDENTIAL_FREE_NATIVE_TESTS, MANAGED_DSH_TOOLCHAIN_TESTS, PHASE2_E2E_STATUS_KEYS, + ROOT, Phase2PreflightError, build_phase2_evidence_report, phase2_contract_digest, @@ -277,7 +278,9 @@ def test_artifact_gate_rejects_mismatched_wheel_and_sdist_provenance( def test_generated_static_payload_is_not_tracked() -> None: - validate_generated_static_tracking_policy(public_export=False) + 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: diff --git a/tests/studio/e2e/studio_browser_smoke.py b/tests/studio/e2e/studio_browser_smoke.py index 96676010..926ce4de 100644 --- a/tests/studio/e2e/studio_browser_smoke.py +++ b/tests/studio/e2e/studio_browser_smoke.py @@ -92,7 +92,6 @@ def _assert_core_navigation(page: Page) -> None: expect( page.get_by_role("banner", name="当前页面").get_by_text(label, exact=True) ).to_be_visible() - page.wait_for_load_state("networkidle") def main() -> None: @@ -121,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_responsive_smoke.py b/tests/studio/e2e/studio_responsive_smoke.py index 9be8ab8a..75c3da98 100644 --- a/tests/studio/e2e/studio_responsive_smoke.py +++ b/tests/studio/e2e/studio_responsive_smoke.py @@ -343,8 +343,8 @@ def main() -> None: workspace, codex_runtime_inspector=lambda _runtime: ( "0.8.2", - "0.144.4", - "codex-cli 0.144.4", + "0.147.0", + "codex-cli 0.147.0", ), ) with ( @@ -691,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()