openportal 0.1.29 → 0.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +124 -62
- package/package.json +5 -5
- package/web/nitro.json +3 -3
- package/web/public/assets/_app-Bx3mWCTp.js +1 -0
- package/web/public/assets/_app-DgHMSgay.js +41 -0
- package/web/public/assets/_id-C9ATpjbp.js +37 -0
- package/web/public/assets/about-BxxiVFq8.js +1 -0
- package/web/public/assets/angular-html-tYBVGGly.js +1 -0
- package/web/public/assets/angular-ts-Bt2cFJZh.js +1 -0
- package/web/public/assets/{apl-DB8yy-Bd.js → apl-D7UjtY_t.js} +1 -1
- package/web/public/assets/{astro-4VtdQ-aO.js → astro-Bn0abwOQ.js} +1 -1
- package/web/public/assets/{blade-CedhYCgA.js → blade-CihxQpr_.js} +1 -1
- package/web/public/assets/breadcrumb-context-B3YglwWs.js +1 -0
- package/web/public/assets/{bsl-BQ-5RGbs.js → bsl-BKETj7-F.js} +1 -1
- package/web/public/assets/button-BwXxlJmo.js +7 -0
- package/web/public/assets/c-B0n6eOZ6.js +1 -0
- package/web/public/assets/{cairo-RAtbTRH-.js → cairo-Bm1QXIgL.js} +1 -1
- package/web/public/assets/{cobol-BW4nVR_8.js → cobol-fzIUfU2w.js} +1 -1
- package/web/public/assets/{coffee-CxscSGMn.js → coffee-dgVnJ94q.js} +1 -1
- package/web/public/assets/cpp-DlBarvJx.js +1 -0
- package/web/public/assets/{crystal-p1F2qTK3.js → crystal-DPdyMMKb.js} +1 -1
- package/web/public/assets/css-Ctd6TcjM.js +1 -0
- package/web/public/assets/diff-BIfGXO1H.js +227 -0
- package/web/public/assets/{edge-nNdVK-5H.js → edge-DvOMU0HI.js} +1 -1
- package/web/public/assets/{elixir-BWAg5rOr.js → elixir-iK-aYBAj.js} +1 -1
- package/web/public/assets/{elm-Fmq6niEZ.js → elm-C5hsl51h.js} +1 -1
- package/web/public/assets/{erb-Cj-oBkqz.js → erb-CI326ZCF.js} +1 -1
- package/web/public/assets/{erlang-Dlo360hX.js → erlang-Lh_bsUxs.js} +1 -1
- package/web/public/assets/field-CNYjTNih.js +1 -0
- package/web/public/assets/{fortran-fixed-form-BNWSYlx7.js → fortran-fixed-form-By4uV00l.js} +1 -1
- package/web/public/assets/{fsharp-BvlCOZl9.js → fsharp-C-Qeuhxq.js} +1 -1
- package/web/public/assets/{gdresource-D_lHHmUz.js → gdresource-DPsh07f8.js} +1 -1
- package/web/public/assets/{git-commit-Bzl1bEH3.js → git-commit-BNVf7D3_.js} +1 -1
- package/web/public/assets/{git-rebase-CfPSMPpK.js → git-rebase-BIZfUgsJ.js} +1 -1
- package/web/public/assets/{glimmer-js-C8F_h5kh.js → glimmer-js-CcSxB70m.js} +1 -1
- package/web/public/assets/{glimmer-ts-BVvqGv4s.js → glimmer-ts-lBmudEJy.js} +1 -1
- package/web/public/assets/glsl-vJqP49sD.js +1 -0
- package/web/public/assets/graphql-CXLKnjj9.js +1 -0
- package/web/public/assets/{hack-BGs3bAjg.js → hack-BbuBzOS8.js} +1 -1
- package/web/public/assets/haml-EDAfFCO2.js +1 -0
- package/web/public/assets/{handlebars-Di4bVtub.js → handlebars-Ciwrn25b.js} +1 -1
- package/web/public/assets/html-DUYkrbwC.js +1 -0
- package/web/public/assets/html-derivative-NBKo_PD-.js +1 -0
- package/web/public/assets/{http-VI9HDs0H.js → http-Dag2VdjG.js} +1 -1
- package/web/public/assets/{hurl-Biy0pToc.js → hurl-CSTE4pPR.js} +1 -1
- package/web/public/assets/{hxml-LeIITq3U.js → hxml-DlOl0PEf.js} +1 -1
- package/web/public/assets/index-BNen-9-N.css +2 -0
- package/web/public/assets/index-CXZ33Z-X.js +10 -0
- package/web/public/assets/instances-B2NvyI6f.js +1 -0
- package/web/public/assets/java-D0oQWejR.js +1 -0
- package/web/public/assets/javascript-CxVj7Jc3.js +1 -0
- package/web/public/assets/{jinja-ChSNS6Tw.js → jinja-BsyWcE95.js} +1 -1
- package/web/public/assets/{jison-DgzqD4_V.js → jison-_rx2Ho-A.js} +1 -1
- package/web/public/assets/json-EtpIiJca.js +1 -0
- package/web/public/assets/jsx-DK_2aoiX.js +1 -0
- package/web/public/assets/jsx-runtime-BE_tW6Ee.js +1 -0
- package/web/public/assets/{julia-BoDGmjvF.js → julia-CCJJT-JW.js} +1 -1
- package/web/public/assets/{latex-ATBiwIsF.js → latex-Co-P5NWx.js} +1 -1
- package/web/public/assets/lib-Dc1_wrAX.js +1 -0
- package/web/public/assets/link-DOqotFDp.js +1 -0
- package/web/public/assets/{liquid-ZOI8eZQ-.js → liquid-BYtAj9cp.js} +1 -1
- package/web/public/assets/lua-Cj1ZB8IY.js +1 -0
- package/web/public/assets/lucide-BTUlgFgW.js +1 -0
- package/web/public/assets/{marko-DKJu0e8n.js → marko-D4sshstR.js} +1 -1
- package/web/public/assets/{mdc-CVf5s5cG.js → mdc-DMiSn-di.js} +1 -1
- package/web/public/assets/{nginx-ts6STlG_.js → nginx-D-dqvf7r.js} +1 -1
- package/web/public/assets/{nim-CQJu0uif.js → nim-Cyko-abd.js} +1 -1
- package/web/public/assets/parsePatchFiles-BuO13j3v.js +4 -0
- package/web/public/assets/{perl-VAbochW_.js → perl-DaTblz0l.js} +1 -1
- package/web/public/assets/{php-YioiNFhr.js → php-BPoBt8_6.js} +1 -1
- package/web/public/assets/pierre-dark-Gtc9M_gS.js +1 -0
- package/web/public/assets/pierre-light-EDxMHmhf.js +1 -0
- package/web/public/assets/popover-CRR_NOES.js +5 -0
- package/web/public/assets/{pug-B-40Haq6.js → pug-C-YQyY8x.js} +1 -1
- package/web/public/assets/{qml-kOoNwPEG.js → qml-D8Rfk3Lb.js} +1 -1
- package/web/public/assets/r-4yEvCsNo.js +1 -0
- package/web/public/assets/{razor-OH0A0iCi.js → razor-ouagoKWa.js} +1 -1
- package/web/public/assets/regexp-Cq-Qrxd6.js +1 -0
- package/web/public/assets/{rst-D2m0MWQG.js → rst-PkFRPdn9.js} +1 -1
- package/web/public/assets/{ruby-Cd39ka5u.js → ruby-B_aIajfM.js} +1 -1
- package/web/public/assets/{sas-BHFIMNhs.js → sas-DW15znt6.js} +1 -1
- package/web/public/assets/scss-CieAHW_V.js +1 -0
- package/web/public/assets/select-CvO3JtqA.js +1 -0
- package/web/public/assets/settings-B0-RWpao.js +1 -0
- package/web/public/assets/{shaderlab-BmcIVS6O.js → shaderlab-Cg-cNaa-.js} +1 -1
- package/web/public/assets/shellscript-DrB_N96g.js +1 -0
- package/web/public/assets/{shellsession-BJ4t2Sdy.js → shellsession--I7Uz6My.js} +1 -1
- package/web/public/assets/{soy-Bkj3NqFU.js → soy-ziRqYDcy.js} +1 -1
- package/web/public/assets/{sparql-DxWpmA6s.js → sparql-CRKvL8Qo.js} +1 -1
- package/web/public/assets/sql-CFWVA4QB.js +1 -0
- package/web/public/assets/{stata-BuG51IuX.js → stata-C-5qfhys.js} +1 -1
- package/web/public/assets/{svelte-rvdUCFAj.js → svelte-B6BW65xu.js} +1 -1
- package/web/public/assets/{templ-DVzhxzQC.js → templ-PEIZqAK1.js} +1 -1
- package/web/public/assets/{tex-BW37SRRB.js → tex-D2mC87Vl.js} +1 -1
- package/web/public/assets/{ts-tags-q0oyNnV3.js → ts-tags-RFn1CcJv.js} +1 -1
- package/web/public/assets/tsx-OY4UwPsG.js +1 -0
- package/web/public/assets/{twig--kFkuY0Y.js → twig-BVylsIfB.js} +1 -1
- package/web/public/assets/typescript-DwMe_b5N.js +1 -0
- package/web/public/assets/use-media-query-DJ49EUkO.js +1 -0
- package/web/public/assets/use-session-messages--pfdFXZh.js +4 -0
- package/web/public/assets/useMatch-CKjponJB.js +1 -0
- package/web/public/assets/useNavigate-CHiJUiGj.js +1 -0
- package/web/public/assets/{vue-html-BMtZ_0Xw.js → vue-html-DDGKH-ua.js} +1 -1
- package/web/public/assets/{vue-DPxVclZQ.js → vue-s3Ia2KDE.js} +1 -1
- package/web/public/assets/{vue-vine-aF57X0uv.js → vue-vine-YrT0fNHh.js} +1 -1
- package/web/public/assets/xml-Cs6nNM2A.js +1 -0
- package/web/public/assets/{xsl-CQtLMMI3.js → xsl-7GSlcAnI.js} +1 -1
- package/web/public/assets/yaml-pCWCy5TU.js +1 -0
- package/web/public/logo.svg +61 -132
- package/web/server/_chunks/renderer-template.mjs +6 -2
- package/web/server/_libs/@grpc/grpc-js+[...].mjs +23961 -0
- package/web/server/_libs/balena__dockerignore.mjs +203 -0
- package/web/server/_libs/bl+[...].mjs +2416 -0
- package/web/server/_libs/chownr.mjs +108 -0
- package/web/server/_libs/debug+[...].mjs +813 -0
- package/web/server/_libs/docker-modem+split-ca.mjs +548 -0
- package/web/server/_libs/dockerode+[...].mjs +5258 -0
- package/web/server/_libs/grpc__proto-loader.mjs +291 -0
- package/web/server/_libs/h3+rou3+srvx.mjs +861 -0
- package/web/server/_libs/hookable.mjs +41 -0
- package/web/server/_libs/opencode-ai__sdk.mjs +4536 -0
- package/web/server/_libs/ufo.mjs +64 -0
- package/web/server/_libs/unctx.mjs +82 -0
- package/web/server/_libs/zod.mjs +3988 -0
- package/web/server/_routes/api/hello.mjs +3 -1
- package/web/server/_routes/api/instances.mjs +227 -9
- package/web/server/_routes/api/lib/docker.mjs +7 -27272
- package/web/server/_routes/api/lib/opencode_client.mjs +14 -4502
- package/web/server/_routes/api/lib/validation.mjs +5 -3613
- package/web/server/_routes/api/opencode/[port]/agents.mjs +3 -1
- package/web/server/_routes/api/opencode/[port]/config.mjs +3 -1
- package/web/server/_routes/api/opencode/[port]/events.mjs +46 -0
- package/web/server/_routes/api/opencode/[port]/files/search.mjs +4 -2
- package/web/server/_routes/api/opencode/[port]/git/diff.mjs +3 -1
- package/web/server/_routes/api/opencode/[port]/health.mjs +3 -1
- package/web/server/_routes/api/opencode/[port]/permission/[requestId]/reply.mjs +7 -4
- package/web/server/_routes/api/opencode/[port]/permissions.mjs +5 -3
- package/web/server/_routes/api/opencode/[port]/project/current.mjs +3 -1
- package/web/server/_routes/api/opencode/[port]/providers.mjs +3 -1
- package/web/server/_routes/api/opencode/[port]/question/[requestId]/reject.mjs +5 -3
- package/web/server/_routes/api/opencode/[port]/question/[requestId]/reply.mjs +8 -5
- package/web/server/_routes/api/opencode/[port]/questions.mjs +5 -3
- package/web/server/_routes/api/opencode/[port]/session/[id]/abort.mjs +4 -2
- package/web/server/_routes/api/opencode/[port]/session/[id]/messages.mjs +4 -2
- package/web/server/_routes/api/opencode/[port]/session/[id]/prompt.mjs +43 -19
- package/web/server/_routes/api/opencode/[port]/session/[id].mjs +4 -2
- package/web/server/_routes/api/opencode/[port]/session/[id]2.mjs +4 -2
- package/web/server/_routes/api/opencode/[port]/session/create.mjs +7 -4
- package/web/server/_routes/api/opencode/[port]/session/status.mjs +9 -0
- package/web/server/_routes/api/opencode/[port]/sessions.mjs +3 -1
- package/web/server/_routes/api/system/hostname.mjs +3 -1
- package/web/server/_runtime.mjs +37 -0
- package/web/server/index.mjs +1373 -2335
- package/web/server/node_modules/nan/.github/workflows/ci.yml +52 -0
- package/web/server/node_modules/nan/.pre-commit-config.yaml +8 -0
- package/web/server/node_modules/nan/CHANGELOG.md +587 -0
- package/web/server/node_modules/nan/CMakeLists.txt +138 -0
- package/web/server/node_modules/nan/LICENSE.md +9 -0
- package/web/server/node_modules/nan/README.md +456 -0
- package/web/server/node_modules/nan/doc/asyncworker.md +146 -0
- package/web/server/node_modules/nan/doc/buffers.md +54 -0
- package/web/server/node_modules/nan/doc/callback.md +76 -0
- package/web/server/node_modules/nan/doc/converters.md +41 -0
- package/web/server/node_modules/nan/doc/errors.md +226 -0
- package/web/server/node_modules/nan/doc/json.md +62 -0
- package/web/server/node_modules/nan/doc/maybe_types.md +583 -0
- package/web/server/node_modules/nan/doc/methods.md +672 -0
- package/web/server/node_modules/nan/doc/new.md +147 -0
- package/web/server/node_modules/nan/doc/node_misc.md +123 -0
- package/web/server/node_modules/nan/doc/object_wrappers.md +263 -0
- package/web/server/node_modules/nan/doc/persistent.md +296 -0
- package/web/server/node_modules/nan/doc/scopes.md +73 -0
- package/web/server/node_modules/nan/doc/script.md +58 -0
- package/web/server/node_modules/nan/doc/string_bytes.md +81 -0
- package/web/server/node_modules/nan/doc/v8_internals.md +199 -0
- package/web/server/node_modules/nan/doc/v8_misc.md +85 -0
- package/web/server/node_modules/nan/include_dirs.js +1 -0
- package/web/server/node_modules/nan/nan.h +3096 -0
- package/web/server/node_modules/nan/nan_callbacks.h +141 -0
- package/web/server/node_modules/nan/nan_callbacks_12_inl.h +690 -0
- package/web/server/node_modules/nan/nan_callbacks_pre_12_inl.h +524 -0
- package/web/server/node_modules/nan/nan_converters.h +72 -0
- package/web/server/node_modules/nan/nan_converters_43_inl.h +68 -0
- package/web/server/node_modules/nan/nan_converters_pre_43_inl.h +42 -0
- package/web/server/node_modules/nan/nan_define_own_property_helper.h +29 -0
- package/web/server/node_modules/nan/nan_implementation_12_inl.h +430 -0
- package/web/server/node_modules/nan/nan_implementation_pre_12_inl.h +263 -0
- package/web/server/node_modules/nan/nan_json.h +166 -0
- package/web/server/node_modules/nan/nan_maybe_43_inl.h +360 -0
- package/web/server/node_modules/nan/nan_maybe_pre_43_inl.h +268 -0
- package/web/server/node_modules/nan/nan_new.h +340 -0
- package/web/server/node_modules/nan/nan_object_wrap.h +156 -0
- package/web/server/node_modules/nan/nan_persistent_12_inl.h +132 -0
- package/web/server/node_modules/nan/nan_persistent_pre_12_inl.h +242 -0
- package/web/server/node_modules/nan/nan_private.h +73 -0
- package/web/server/node_modules/nan/nan_scriptorigin.h +97 -0
- package/web/server/node_modules/nan/nan_string_bytes.h +305 -0
- package/web/server/node_modules/nan/nan_typedarray_contents.h +96 -0
- package/web/server/node_modules/nan/nan_weak.h +437 -0
- package/web/server/node_modules/nan/package.json +38 -0
- package/web/server/node_modules/nan/tools/1to2.js +412 -0
- package/web/server/node_modules/nan/tools/README.md +14 -0
- package/web/server/node_modules/nan/tools/package.json +19 -0
- package/web/server/package.json +1 -0
- package/web/public/assets/_app-BEL0gz-N.js +0 -41
- package/web/public/assets/_app-CmDxm0Zr.js +0 -1
- package/web/public/assets/_id-C8AciYN9.js +0 -37
- package/web/public/assets/about-D-PdZbTw.js +0 -1
- package/web/public/assets/angular-html-B7AzbcLu.js +0 -1
- package/web/public/assets/angular-html-CWHM6XK4.js +0 -1
- package/web/public/assets/angular-ts-jRfZdOvj.js +0 -1
- package/web/public/assets/breadcrumb-context-Wlm7BrbW.js +0 -1
- package/web/public/assets/c-BYyBRgEf.js +0 -1
- package/web/public/assets/c-rDRZoEwT.js +0 -1
- package/web/public/assets/cpp-BKPlHVN1.js +0 -1
- package/web/public/assets/cpp-DNNfSORd.js +0 -1
- package/web/public/assets/css-C_016fQU.js +0 -1
- package/web/public/assets/css-D3AwVSc2.js +0 -1
- package/web/public/assets/diff-CAnlbzCH.js +0 -1261
- package/web/public/assets/field-hZGL83Ev.js +0 -1
- package/web/public/assets/glsl-CCt8Xq74.js +0 -1
- package/web/public/assets/glsl-mjl6J7xQ.js +0 -1
- package/web/public/assets/graphql-D1AnvbII.js +0 -1
- package/web/public/assets/graphql-DcY1hApn.js +0 -1
- package/web/public/assets/haml-B_PDjSS6.js +0 -1
- package/web/public/assets/haml-phUSYqbS.js +0 -1
- package/web/public/assets/html-DELXQlGO.js +0 -1
- package/web/public/assets/html-DiubA6TF.js +0 -1
- package/web/public/assets/html-derivative-BT-nCKmo.js +0 -1
- package/web/public/assets/html-derivative-Dh3FrOEV.js +0 -1
- package/web/public/assets/index-D3N_OGS8.css +0 -2
- package/web/public/assets/index-DrFs4I00.js +0 -20
- package/web/public/assets/input-DWwu3cnC.js +0 -1
- package/web/public/assets/instances-94vIQXTw.js +0 -1
- package/web/public/assets/java-BF4HWAb8.js +0 -1
- package/web/public/assets/java-C8Q66F3q.js +0 -1
- package/web/public/assets/javascript-0KITOXoO.js +0 -1
- package/web/public/assets/javascript-QwaHzY8K.js +0 -1
- package/web/public/assets/json-DtIt9qZE.js +0 -1
- package/web/public/assets/json-Jxsv7nl6.js +0 -1
- package/web/public/assets/jsx-0dhG_2WJ.js +0 -1
- package/web/public/assets/jsx-CN3KuEC1.js +0 -1
- package/web/public/assets/lib-DkKaG94g.js +0 -1
- package/web/public/assets/link-gBEsqV0O.js +0 -1
- package/web/public/assets/lua-CaSSwCd3.js +0 -1
- package/web/public/assets/lua-DLhBNWry.js +0 -1
- package/web/public/assets/model-store-Dw91ixmj.js +0 -1
- package/web/public/assets/parsePatchFiles-B433dV5r.js +0 -2
- package/web/public/assets/pierre-dark-Dkue_Ycs.js +0 -1
- package/web/public/assets/pierre-light-BSpDZVY4.js +0 -1
- package/web/public/assets/r-BjiStVkJ.js +0 -1
- package/web/public/assets/r-rdDIhDK8.js +0 -1
- package/web/public/assets/regexp-BbCrcKjn.js +0 -1
- package/web/public/assets/regexp-Y5ti0BKu.js +0 -1
- package/web/public/assets/scss-DrMMzxFY.js +0 -1
- package/web/public/assets/scss-a6SFBKT5.js +0 -1
- package/web/public/assets/settings-UhcSwwjW.js +0 -1
- package/web/public/assets/shellscript-DzFbcKnv.js +0 -1
- package/web/public/assets/shellscript-yo20ha4w.js +0 -1
- package/web/public/assets/sql-BwmtsbRY.js +0 -1
- package/web/public/assets/sql-Cigyp1SO.js +0 -1
- package/web/public/assets/tsx-CUSFgtHy.js +0 -1
- package/web/public/assets/tsx-DgIHkbwf.js +0 -1
- package/web/public/assets/typescript-15oSVc7C.js +0 -1
- package/web/public/assets/typescript-aRFFLtTZ.js +0 -1
- package/web/public/assets/use-media-query-CJjsu5lx.js +0 -1
- package/web/public/assets/useHasTabbableChild-CitbNyt-.js +0 -1
- package/web/public/assets/xml-BwthnBQz.js +0 -1
- package/web/public/assets/xml-miX9dRbM.js +0 -1
- package/web/public/assets/yaml-DkAPUzRH.js +0 -1
- package/web/public/assets/yaml-s6kFNfpY.js +0 -1
- /package/web/public/assets/{abap-D-EGwWJY.js → abap-cWYhO34H.js} +0 -0
- /package/web/public/assets/{actionscript-3-BgEzobaq.js → actionscript-3-oRNhS_cT.js} +0 -0
- /package/web/public/assets/{ada-CK_QIbnr.js → ada-C0C0SoYB.js} +0 -0
- /package/web/public/assets/{andromeeda-7Uyrbc3l.js → andromeeda-DijoPaKL.js} +0 -0
- /package/web/public/assets/{apache-Dh3lWCDO.js → apache-DBwBm4bB.js} +0 -0
- /package/web/public/assets/{apex-Diyrmqfh.js → apex-CXRs1L9t.js} +0 -0
- /package/web/public/assets/{applescript-CGbSGD4R.js → applescript-hQs8VNpS.js} +0 -0
- /package/web/public/assets/{ara-BKT6no2T.js → ara-BOadBOZg.js} +0 -0
- /package/web/public/assets/{asciidoc-BmRKQHbQ.js → asciidoc-B8GRwlcK.js} +0 -0
- /package/web/public/assets/{asm-Cqt8SHGO.js → asm-C2vUqzqz.js} +0 -0
- /package/web/public/assets/{aurora-x-CK7ktht2.js → aurora-x-D8CoY9RX.js} +0 -0
- /package/web/public/assets/{awk-B3FFpX_J.js → awk-D4e-eeZT.js} +0 -0
- /package/web/public/assets/{ayu-dark-xJfjuCq8.js → ayu-dark-BJ1wuoej.js} +0 -0
- /package/web/public/assets/{ballerina-DACRT-sT.js → ballerina-BzvFqbha.js} +0 -0
- /package/web/public/assets/{bat-DU4--CMj.js → bat-CFyw2ERn.js} +0 -0
- /package/web/public/assets/{beancount-DvXvE1x-.js → beancount-a6Gsu5WX.js} +0 -0
- /package/web/public/assets/{berry-DCFF4Zj1.js → berry-C2jyz4Ah.js} +0 -0
- /package/web/public/assets/{bibtex-42-C5dln.js → bibtex-Dyet-B83.js} +0 -0
- /package/web/public/assets/{bicep-Dqm4PFuz.js → bicep-CghvUIvy.js} +0 -0
- /package/web/public/assets/{cadence-C7hktLdb.js → cadence-CONiM5ZJ.js} +0 -0
- /package/web/public/assets/{catppuccin-frappe-BFZAZJr3.js → catppuccin-frappe-BSTaQ0EA.js} +0 -0
- /package/web/public/assets/{catppuccin-latte-2OpvPHma.js → catppuccin-latte-CJvpSF0g.js} +0 -0
- /package/web/public/assets/{catppuccin-macchiato-DOwBDSZG.js → catppuccin-macchiato-5S4j0Hfd.js} +0 -0
- /package/web/public/assets/{catppuccin-mocha-CPO4jaGM.js → catppuccin-mocha-CqCcNZ-i.js} +0 -0
- /package/web/public/assets/{clarity-Rka6Ibys.js → clarity-8uYwFS0g.js} +0 -0
- /package/web/public/assets/{clojure-CEvM-ay9.js → clojure-B91hPl1J.js} +0 -0
- /package/web/public/assets/{cmake-C-HulLqg.js → cmake-CLvI-L08.js} +0 -0
- /package/web/public/assets/{codeowners-Bqxy-1en.js → codeowners-CQ0GhFko.js} +0 -0
- /package/web/public/assets/{codeql-aVPOmvJw.js → codeql-DfO2RO4c.js} +0 -0
- /package/web/public/assets/{common-lisp-CoH5Bypy.js → common-lisp-Dxsy__BF.js} +0 -0
- /package/web/public/assets/{coq-DHxvo73o.js → coq-BEB_SJbO.js} +0 -0
- /package/web/public/assets/{csharp-D1r0FgxE.js → csharp-Db9xj6ZZ.js} +0 -0
- /package/web/public/assets/{csv-C7wYOwss.js → csv-CjsQX1YE.js} +0 -0
- /package/web/public/assets/{cue-DVrj2AhX.js → cue-Brer6idk.js} +0 -0
- /package/web/public/assets/{cypher-CzVprHrl.js → cypher-t9UY6Shl.js} +0 -0
- /package/web/public/assets/{d-x3a3_Xaw.js → d-CUrh2xWw.js} +0 -0
- /package/web/public/assets/{dark-plus-C0kLyDb3.js → dark-plus-BipXJdiu.js} +0 -0
- /package/web/public/assets/{dart-DpnlYij3.js → dart-CGSq4we3.js} +0 -0
- /package/web/public/assets/{dax-Syv_hoiD.js → dax-d2Al1_rU.js} +0 -0
- /package/web/public/assets/{desktop-D-wRHhtZ.js → desktop-CWvOdYyW.js} +0 -0
- /package/web/public/assets/{diff-DK3WLOEN.js → diff-Dv7n7lNd.js} +0 -0
- /package/web/public/assets/{docker-BD8m_NS-.js → docker-CtUqO3OU.js} +0 -0
- /package/web/public/assets/{dotenv-CEeS2qc8.js → dotenv-2LOM2hac.js} +0 -0
- /package/web/public/assets/{dracula-BbbBTYdV.js → dracula-rRmBdd8R.js} +0 -0
- /package/web/public/assets/{dracula-soft-DEnCbN_E.js → dracula-soft-CHy0pPYg.js} +0 -0
- /package/web/public/assets/{dream-maker-G83xWHtA.js → dream-maker-SPySPaGW.js} +0 -0
- /package/web/public/assets/{emacs-lisp-BMx_yBNe.js → emacs-lisp-CXsFziPU.js} +0 -0
- /package/web/public/assets/{everforest-dark-BIGnUa1K.js → everforest-dark-CykMLuzs.js} +0 -0
- /package/web/public/assets/{everforest-light-DPDFUUUm.js → everforest-light-CpVrrr0x.js} +0 -0
- /package/web/public/assets/{fennel-D7bUTXOY.js → fennel-BabMDVkY.js} +0 -0
- /package/web/public/assets/{fish-DACMRGFm.js → fish-xyAFhjKI.js} +0 -0
- /package/web/public/assets/{fluent-DoOY2028.js → fluent-54nGyXmc.js} +0 -0
- /package/web/public/assets/{fortran-free-form-BMVGiZsS.js → fortran-free-form-AY5m6gNy.js} +0 -0
- /package/web/public/assets/{gdscript-qeX4viki.js → gdscript-iJ71dLLS.js} +0 -0
- /package/web/public/assets/{gdshader-D4QG_LtG.js → gdshader-COD-4C51.js} +0 -0
- /package/web/public/assets/{genie-BZz7sgTg.js → genie-D2zj675s.js} +0 -0
- /package/web/public/assets/{gherkin-2F0Hux6H.js → gherkin-C-x-qfU_.js} +0 -0
- /package/web/public/assets/{github-dark-Ca_Q9Ef-.js → github-dark-DskMQXcy.js} +0 -0
- /package/web/public/assets/{github-dark-default-B1hvTzqD.js → github-dark-default-CKKGJpm5.js} +0 -0
- /package/web/public/assets/{github-dark-dimmed-Czc28Paq.js → github-dark-dimmed-ywk1Z1Hc.js} +0 -0
- /package/web/public/assets/{github-dark-high-contrast-ClAFj_yD.js → github-dark-high-contrast-DXBnpOEd.js} +0 -0
- /package/web/public/assets/{github-light-DXMgzlkd.js → github-light-CKm9zhSR.js} +0 -0
- /package/web/public/assets/{github-light-default-C0heX20M.js → github-light-default-A5tU6qEQ.js} +0 -0
- /package/web/public/assets/{github-light-high-contrast-Bdso7WSe.js → github-light-high-contrast-DgXlJLHk.js} +0 -0
- /package/web/public/assets/{gleam-CKujK_9r.js → gleam-yEn05q-o.js} +0 -0
- /package/web/public/assets/{gnuplot-BnBldI7s.js → gnuplot-C40vWoS_.js} +0 -0
- /package/web/public/assets/{go-D6V3e4Pz.js → go-DccdSYyo.js} +0 -0
- /package/web/public/assets/{groovy-IfwXezsJ.js → groovy-42TXi0JD.js} +0 -0
- /package/web/public/assets/{gruvbox-dark-hard-CyHULVus.js → gruvbox-dark-hard-BlUzB-ID.js} +0 -0
- /package/web/public/assets/{gruvbox-dark-medium-qJ9c8ND8.js → gruvbox-dark-medium-yOGwRy_J.js} +0 -0
- /package/web/public/assets/{gruvbox-dark-soft-C3qjYIJM.js → gruvbox-dark-soft-Df4UJJBE.js} +0 -0
- /package/web/public/assets/{gruvbox-light-hard-DkgPegzV.js → gruvbox-light-hard-D3rD9jDI.js} +0 -0
- /package/web/public/assets/{gruvbox-light-medium-B_nBvpHM.js → gruvbox-light-medium-Dlem6WY4.js} +0 -0
- /package/web/public/assets/{gruvbox-light-soft-DPS00qzJ.js → gruvbox-light-soft-BKHDJWWt.js} +0 -0
- /package/web/public/assets/{haskell-D_Wr4SP2.js → haskell-C5VEzHiR.js} +0 -0
- /package/web/public/assets/{haxe-ChYRFbqx.js → haxe-DxCG7g2C.js} +0 -0
- /package/web/public/assets/{hcl-Cp5RP0NG.js → hcl-B-KEcm-b.js} +0 -0
- /package/web/public/assets/{hjson-C4qJjjHJ.js → hjson-KcqWy6wG.js} +0 -0
- /package/web/public/assets/{hlsl-D179HP7y.js → hlsl-CU9ay1Rj.js} +0 -0
- /package/web/public/assets/{houston-CGv9NbgY.js → houston-CH1dbl71.js} +0 -0
- /package/web/public/assets/{hy-BtEqxKCs.js → hy-9kqolRdI.js} +0 -0
- /package/web/public/assets/{imba-CRJbREiM.js → imba-AWBATAYY.js} +0 -0
- /package/web/public/assets/{ini-DSBqdtZl.js → ini-P5JLg6LV.js} +0 -0
- /package/web/public/assets/{json5-DMIvwtR8.js → json5-Cj9weIvR.js} +0 -0
- /package/web/public/assets/{jsonc-BdlCXPtc.js → jsonc-CwVZHrLL.js} +0 -0
- /package/web/public/assets/{jsonl-BpVOCxVu.js → jsonl-CfYcxfNz.js} +0 -0
- /package/web/public/assets/{jsonnet-D3jmEwtD.js → jsonnet-B351KcBZ.js} +0 -0
- /package/web/public/assets/{jssm-D7adz0Zk.js → jssm-CVNVxyp8.js} +0 -0
- /package/web/public/assets/{kanagawa-dragon-C8xtaWaa.js → kanagawa-dragon-BjHcqwla.js} +0 -0
- /package/web/public/assets/{kanagawa-lotus-Dkvwz-sh.js → kanagawa-lotus-BtMeuNWW.js} +0 -0
- /package/web/public/assets/{kanagawa-wave-CVz5XkfW.js → kanagawa-wave-BCUyH5oD.js} +0 -0
- /package/web/public/assets/{kdl-B0l_UDtx.js → kdl-BwK60g80.js} +0 -0
- /package/web/public/assets/{kotlin-D4Z4sobD.js → kotlin-Dbd9Vi-v.js} +0 -0
- /package/web/public/assets/{kusto-DBK7U6YD.js → kusto-ex953Wvs.js} +0 -0
- /package/web/public/assets/{laserwave-DEPeWYLv.js → laserwave-DDLF2HLL.js} +0 -0
- /package/web/public/assets/{lean-BrTxhtiv.js → lean-Dy5OcUX-.js} +0 -0
- /package/web/public/assets/{less-duanLLE_.js → less-D4uen21c.js} +0 -0
- /package/web/public/assets/{light-plus-BMUJ881T.js → light-plus-S9OiFplU.js} +0 -0
- /package/web/public/assets/{llvm-DFpB8htZ.js → llvm-BA_FKqoX.js} +0 -0
- /package/web/public/assets/{log-DUaYj482.js → log-BGUxlsk3.js} +0 -0
- /package/web/public/assets/{logo-U-be5s9s.js → logo-wVUhvQ1b.js} +0 -0
- /package/web/public/assets/{luau-ENKSAnK9.js → luau-IVIxedd2.js} +0 -0
- /package/web/public/assets/{make-DjZta7xH.js → make-BmPf6m0P.js} +0 -0
- /package/web/public/assets/{markdown-DuOOcY8R.js → markdown-eTx7AQ7x.js} +0 -0
- /package/web/public/assets/{material-theme-XDSyYav6.js → material-theme-C2qrTJh3.js} +0 -0
- /package/web/public/assets/{material-theme-darker-DhqKKVGd.js → material-theme-darker-yeSCVODt.js} +0 -0
- /package/web/public/assets/{material-theme-lighter-vYkeG0w7.js → material-theme-lighter-BNPkZFoP.js} +0 -0
- /package/web/public/assets/{material-theme-ocean-Cw5ndLhJ.js → material-theme-ocean-ChKI1Aff.js} +0 -0
- /package/web/public/assets/{material-theme-palenight--eyVzvO9.js → material-theme-palenight-B7vumNwu.js} +0 -0
- /package/web/public/assets/{matlab-BoQcPd8Y.js → matlab-BOj_BDQv.js} +0 -0
- /package/web/public/assets/{mdx-B3HnIKti.js → mdx-Cm6cDkDI.js} +0 -0
- /package/web/public/assets/{mermaid-CjOIJZ_2.js → mermaid-DqM5g0pq.js} +0 -0
- /package/web/public/assets/{min-dark-BcaiaifK.js → min-dark-CJhlVEH7.js} +0 -0
- /package/web/public/assets/{min-light-CV0Zl-N6.js → min-light--7-PEYLd.js} +0 -0
- /package/web/public/assets/{mipsasm-D4P2J3AH.js → mipsasm-DYpHF-GA.js} +0 -0
- /package/web/public/assets/{mojo-DdFmV95X.js → mojo-COfWc10j.js} +0 -0
- /package/web/public/assets/{monokai-CdNjJcyb.js → monokai-CbE9SdIz.js} +0 -0
- /package/web/public/assets/{move-BbTBpY6E.js → move-CVSiumye.js} +0 -0
- /package/web/public/assets/{narrat-D90YM_aP.js → narrat-NioX5-_j.js} +0 -0
- /package/web/public/assets/{nextflow-CjzhFVAq.js → nextflow-QC1Jp_kA.js} +0 -0
- /package/web/public/assets/{night-owl-Br_mJtsB.js → night-owl-C6yVJF2Q.js} +0 -0
- /package/web/public/assets/{nix-CJ7FQB3j.js → nix-DOTTFI08.js} +0 -0
- /package/web/public/assets/{nord-CzGMyUS4.js → nord-D3OhLmlk.js} +0 -0
- /package/web/public/assets/{nushell-CGk3MG_2.js → nushell-Bm-Eoj_U.js} +0 -0
- /package/web/public/assets/{objective-c-brSW1tDJ.js → objective-c-BOMijZ4c.js} +0 -0
- /package/web/public/assets/{objective-cpp-Bi4qA4YK.js → objective-cpp-CbvrehWN.js} +0 -0
- /package/web/public/assets/{ocaml-CK8oFJnL.js → ocaml-ik-NqCFm.js} +0 -0
- /package/web/public/assets/{one-dark-pro-uX4CVnLO.js → one-dark-pro-BQwYNK-V.js} +0 -0
- /package/web/public/assets/{one-light-BLm888ve.js → one-light-Bp-joYds.js} +0 -0
- /package/web/public/assets/{openscad-Bc9f44ux.js → openscad-DbmtYX8R.js} +0 -0
- /package/web/public/assets/{pascal-DSCI7D66.js → pascal-BPYu8HR0.js} +0 -0
- /package/web/public/assets/{pkl-DUO2X8D0.js → pkl-qxepEfsD.js} +0 -0
- /package/web/public/assets/{plastic-BH7hI5Jl.js → plastic-xlIdlTab.js} +0 -0
- /package/web/public/assets/{plsql-C_HlhCbf.js → plsql-B78xoJMt.js} +0 -0
- /package/web/public/assets/{po-ZbEDR6yR.js → po-CoMDg-5x.js} +0 -0
- /package/web/public/assets/{poimandres-BNZEf_z5.js → poimandres-D86B5bTz.js} +0 -0
- /package/web/public/assets/{polar-H99ZI9gT.js → polar-BRmDPSGP.js} +0 -0
- /package/web/public/assets/{postcss-D9V1cTEE.js → postcss-BHCm7Qae.js} +0 -0
- /package/web/public/assets/{powerquery-C21Kh7oG.js → powerquery-Dm5a9IoW.js} +0 -0
- /package/web/public/assets/{powershell-C7SVh4_l.js → powershell-BjmzcPTN.js} +0 -0
- /package/web/public/assets/{prisma-t7qarfT3.js → prisma-Bd0_snUb.js} +0 -0
- /package/web/public/assets/{prolog-ezNDDDSD.js → prolog-UaJ8cqTq.js} +0 -0
- /package/web/public/assets/{proto-Loi3x7gt.js → proto-BemTv6Bq.js} +0 -0
- /package/web/public/assets/{puppet-ICbQHavt.js → puppet-DF4VqKgy.js} +0 -0
- /package/web/public/assets/{purescript-5K0_DFG7.js → purescript-BJT-wLCH.js} +0 -0
- /package/web/public/assets/{python-5Ey56Pua.js → python-B3yVAntA.js} +0 -0
- /package/web/public/assets/{qmldir-DFDAfCFp.js → qmldir-DtWLyrB6.js} +0 -0
- /package/web/public/assets/{qss-CFcBGfuz.js → qss-DsrpEJaX.js} +0 -0
- /package/web/public/assets/{racket-BUwKPmlz.js → racket-XY2Y45wx.js} +0 -0
- /package/web/public/assets/{raku-dc8o5u1F.js → raku-D3iN2fBx.js} +0 -0
- /package/web/public/assets/{red-BxvfZNpB.js → red-I5fLwuNS.js} +0 -0
- /package/web/public/assets/{reg-C4HODx1j.js → reg-CSHQTRsk.js} +0 -0
- /package/web/public/assets/{rel-BGn9N5c7.js → rel-D65xriOC.js} +0 -0
- /package/web/public/assets/{riscv-CZ95sp2F.js → riscv-C1otibmh.js} +0 -0
- /package/web/public/assets/{rose-pine-TrkZn1sZ.js → rose-pine-Crsr1Wh6.js} +0 -0
- /package/web/public/assets/{rose-pine-dawn-DIS6YmyK.js → rose-pine-dawn-BseHwNCh.js} +0 -0
- /package/web/public/assets/{rose-pine-moon-D66xAo56.js → rose-pine-moon-CTJjJU-f.js} +0 -0
- /package/web/public/assets/{rosmsg-3tIdVMbs.js → rosmsg-BV7oEC-E.js} +0 -0
- /package/web/public/assets/{rust-D4fV7JlL.js → rust-Ca_38JKc.js} +0 -0
- /package/web/public/assets/{sass-Bp0UJY9L.js → sass-3Jwb14GH.js} +0 -0
- /package/web/public/assets/{scala-Csvg1HO_.js → scala-CWwtO5O_.js} +0 -0
- /package/web/public/assets/{scheme-C_BP1Igg.js → scheme-lOuCDGJc.js} +0 -0
- /package/web/public/assets/{sdbl-C6SSRmZg.js → sdbl-DmWX-P82.js} +0 -0
- /package/web/public/assets/{slack-dark-D8xiiB5S.js → slack-dark-BayPwCVM.js} +0 -0
- /package/web/public/assets/{slack-ochin-ZhRUeH14.js → slack-ochin-BHVQSD4w.js} +0 -0
- /package/web/public/assets/{smalltalk-BV1BGSHN.js → smalltalk-CffKAivC.js} +0 -0
- /package/web/public/assets/{snazzy-light-Cr_XMyAN.js → snazzy-light-BW8nJzRx.js} +0 -0
- /package/web/public/assets/{solarized-dark-Cn9jek_l.js → solarized-dark-3dkbIcKM.js} +0 -0
- /package/web/public/assets/{solarized-light-DsiZEVCv.js → solarized-light-D_iKV2-Z.js} +0 -0
- /package/web/public/assets/{solidity-Benh37UM.js → solidity-q6T1qSBn.js} +0 -0
- /package/web/public/assets/{splunk-CaLVgio7.js → splunk-CnHG51Wl.js} +0 -0
- /package/web/public/assets/{ssh-config-B-O8GtxC.js → ssh-config-tpfZ5PR3.js} +0 -0
- /package/web/public/assets/{stylus-Ym_SHhEQ.js → stylus-C6-cY1Et.js} +0 -0
- /package/web/public/assets/{swift-VXxF3sbs.js → swift-DwtgONLE.js} +0 -0
- /package/web/public/assets/{synthwave-84-w6Szqqjc.js → synthwave-84-B-ytnfkh.js} +0 -0
- /package/web/public/assets/{system-verilog-BGjucJg8.js → system-verilog-C-3uC-Vc.js} +0 -0
- /package/web/public/assets/{systemd-izjjzSiM.js → systemd-C5TwcQRY.js} +0 -0
- /package/web/public/assets/{talonscript-CvTvX6MJ.js → talonscript-dvJcRKQN.js} +0 -0
- /package/web/public/assets/{tasl-B4UTsqP6.js → tasl-D2BFZx-U.js} +0 -0
- /package/web/public/assets/{tcl-DL-TVAfE.js → tcl-aSJhsMVX.js} +0 -0
- /package/web/public/assets/{terraform-BXdxo_8l.js → terraform-D_tAWup-.js} +0 -0
- /package/web/public/assets/{tokyo-night-DIRnpZ_L.js → tokyo-night-CDKf-sdq.js} +0 -0
- /package/web/public/assets/{toml-D7Gs36bm.js → toml-CRhT2y7i.js} +0 -0
- /package/web/public/assets/{tsv-DG6pavxb.js → tsv-DStxpcCr.js} +0 -0
- /package/web/public/assets/{turtle-DGLd8P-0.js → turtle-BSEJiBFZ.js} +0 -0
- /package/web/public/assets/{typespec-CDyTGGvc.js → typespec-CyCcmlcK.js} +0 -0
- /package/web/public/assets/{typst-DEENuDxs.js → typst-CLmYclOg.js} +0 -0
- /package/web/public/assets/{v-CwAlU6ix.js → v-Bhb8K_N8.js} +0 -0
- /package/web/public/assets/{vala-Dea7VvuX.js → vala-B-FTNUML.js} +0 -0
- /package/web/public/assets/{vb-DDs8SBzi.js → vb-3ZoibnYf.js} +0 -0
- /package/web/public/assets/{verilog-C5jTwd1F.js → verilog-CWwkQYXJ.js} +0 -0
- /package/web/public/assets/{vesper-BSHPbApa.js → vesper-Dnn_ZQ4I.js} +0 -0
- /package/web/public/assets/{vhdl-9KzRn3Yr.js → vhdl-B2LcSxiS.js} +0 -0
- /package/web/public/assets/{viml-BWWUx-U5.js → viml-DOrLkmuY.js} +0 -0
- /package/web/public/assets/{vitesse-black-UFUHYZOi.js → vitesse-black-CaGwBPUU.js} +0 -0
- /package/web/public/assets/{vitesse-dark-_tYBvODb.js → vitesse-dark-PIVIzvpJ.js} +0 -0
- /package/web/public/assets/{vitesse-light-CRsR_EUr.js → vitesse-light-MdjLbxun.js} +0 -0
- /package/web/public/assets/{vyper-CHnSipMd.js → vyper-BYZ02-QF.js} +0 -0
- /package/web/public/assets/{wasm-DH36lyNj.js → wasm-BqG9CUph.js} +0 -0
- /package/web/public/assets/{wasm-BkG5Qr1Q.js → wasm-Cv4XAECo.js} +0 -0
- /package/web/public/assets/{wenyan-CpA4iUgB.js → wenyan-qkaNnHss.js} +0 -0
- /package/web/public/assets/{wgsl-tgmVqEpe.js → wgsl-sv8-wynF.js} +0 -0
- /package/web/public/assets/{wikitext-BSHwRUpE.js → wikitext-Cu72Vn0T.js} +0 -0
- /package/web/public/assets/{wit-C4w9cEVY.js → wit-n-57eWWN.js} +0 -0
- /package/web/public/assets/{wolfram-D7mQULT_.js → wolfram-HLKUTjDF.js} +0 -0
- /package/web/public/assets/{zenscript-mED8Cq2o.js → zenscript-CeFKqaq9.js} +0 -0
- /package/web/public/assets/{zig-DgZKy4dX.js → zig-DGyC_AQX.js} +0 -0
package/dist/index.js
CHANGED
|
@@ -2,7 +2,15 @@
|
|
|
2
2
|
// @bun
|
|
3
3
|
|
|
4
4
|
// src/index.ts
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
closeSync,
|
|
7
|
+
existsSync,
|
|
8
|
+
openSync,
|
|
9
|
+
readFileSync,
|
|
10
|
+
unlinkSync,
|
|
11
|
+
writeFileSync,
|
|
12
|
+
writeSync
|
|
13
|
+
} from "fs";
|
|
6
14
|
|
|
7
15
|
// ../../node_modules/.bun/get-port-please@3.2.0/node_modules/get-port-please/dist/index.mjs
|
|
8
16
|
import { createServer, Server } from "net";
|
|
@@ -263,6 +271,7 @@ import { fileURLToPath } from "url";
|
|
|
263
271
|
var __filename2 = fileURLToPath(import.meta.url);
|
|
264
272
|
var __dirname2 = dirname(__filename2);
|
|
265
273
|
var CONFIG_PATH = join(homedir(), ".portal.json");
|
|
274
|
+
var CONFIG_LOCK_PATH = `${CONFIG_PATH}.lock`;
|
|
266
275
|
var DEFAULT_HOSTNAME = "0.0.0.0";
|
|
267
276
|
var DEFAULT_PORT = 3000;
|
|
268
277
|
var DEFAULT_OPENCODE_PORT = 4000;
|
|
@@ -286,6 +295,59 @@ function readConfig() {
|
|
|
286
295
|
function writeConfig(config) {
|
|
287
296
|
writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
|
|
288
297
|
}
|
|
298
|
+
function acquireConfigLock(timeoutMs = 30000) {
|
|
299
|
+
const start = Date.now();
|
|
300
|
+
let backoff = 50;
|
|
301
|
+
while (true) {
|
|
302
|
+
try {
|
|
303
|
+
const fd = openSync(CONFIG_LOCK_PATH, "wx");
|
|
304
|
+
writeSync(fd, String(process.pid));
|
|
305
|
+
closeSync(fd);
|
|
306
|
+
return () => {
|
|
307
|
+
try {
|
|
308
|
+
unlinkSync(CONFIG_LOCK_PATH);
|
|
309
|
+
} catch {}
|
|
310
|
+
};
|
|
311
|
+
} catch (err) {
|
|
312
|
+
if (err.code !== "EEXIST")
|
|
313
|
+
throw err;
|
|
314
|
+
if (tryStealStaleLock())
|
|
315
|
+
continue;
|
|
316
|
+
if (Date.now() - start > timeoutMs) {
|
|
317
|
+
throw new Error(`Could not acquire ${CONFIG_LOCK_PATH} within ${timeoutMs}ms.`);
|
|
318
|
+
}
|
|
319
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, backoff);
|
|
320
|
+
backoff = Math.min(backoff * 2, 250);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
function tryStealStaleLock() {
|
|
325
|
+
let holderPid;
|
|
326
|
+
try {
|
|
327
|
+
holderPid = parseInt(readFileSync(CONFIG_LOCK_PATH, "utf-8"), 10);
|
|
328
|
+
} catch {
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
if (!Number.isFinite(holderPid) || holderPid <= 0)
|
|
332
|
+
return false;
|
|
333
|
+
if (isProcessRunning(holderPid))
|
|
334
|
+
return false;
|
|
335
|
+
try {
|
|
336
|
+
unlinkSync(CONFIG_LOCK_PATH);
|
|
337
|
+
} catch {}
|
|
338
|
+
return true;
|
|
339
|
+
}
|
|
340
|
+
function mutateConfig(mutator) {
|
|
341
|
+
const release = acquireConfigLock();
|
|
342
|
+
try {
|
|
343
|
+
const config = readConfig();
|
|
344
|
+
const result = mutator(config);
|
|
345
|
+
writeConfig(config);
|
|
346
|
+
return result;
|
|
347
|
+
} finally {
|
|
348
|
+
release();
|
|
349
|
+
}
|
|
350
|
+
}
|
|
289
351
|
function generateId() {
|
|
290
352
|
return Math.random().toString(36).substring(2, 10);
|
|
291
353
|
}
|
|
@@ -403,24 +465,18 @@ async function cmdDefault(options) {
|
|
|
403
465
|
const name = options.name || directory.split("/").pop() || "opencode";
|
|
404
466
|
const port = options.port || options.p ? parseInt(options.port || options.p, 10) : await getPort({ host: hostname, port: DEFAULT_PORT });
|
|
405
467
|
const opencodePort = options["opencode-port"] ? parseInt(options["opencode-port"], 10) : await getPort({ host: hostname, port: DEFAULT_OPENCODE_PORT });
|
|
406
|
-
const
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
console.log(`
|
|
414
|
-
console.log(` Web UI Port: ${existing.port ?? "N/A"}`);
|
|
415
|
-
console.log(` OpenCode Port: ${existing.opencodePort}`);
|
|
416
|
-
if (existing.port) {
|
|
417
|
-
console.log(`
|
|
468
|
+
const existing = readConfig().instances.find((i) => i.directory === directory);
|
|
469
|
+
if (existing && isInstanceRunning(existing)) {
|
|
470
|
+
console.log(`OpenPortal is already running for this directory.`);
|
|
471
|
+
console.log(` Name: ${existing.name}`);
|
|
472
|
+
console.log(` Web UI Port: ${existing.port ?? "N/A"}`);
|
|
473
|
+
console.log(` OpenCode Port: ${existing.opencodePort}`);
|
|
474
|
+
if (existing.port) {
|
|
475
|
+
console.log(`
|
|
418
476
|
\uD83D\uDCF1 Access OpenPortal at http://${hostname === "0.0.0.0" ? "localhost" : hostname}:${existing.port}`);
|
|
419
|
-
}
|
|
420
|
-
console.log(`\uD83D\uDD27 OpenCode API at http://${hostname === "0.0.0.0" ? "localhost" : hostname}:${existing.opencodePort}`);
|
|
421
|
-
return;
|
|
422
477
|
}
|
|
423
|
-
|
|
478
|
+
console.log(`\uD83D\uDD27 OpenCode API at http://${hostname === "0.0.0.0" ? "localhost" : hostname}:${existing.opencodePort}`);
|
|
479
|
+
return;
|
|
424
480
|
}
|
|
425
481
|
if (!existsSync(WEB_SERVER_PATH)) {
|
|
426
482
|
console.error(`\u274C Web server not found at ${WEB_SERVER_PATH}`);
|
|
@@ -447,8 +503,10 @@ async function cmdDefault(options) {
|
|
|
447
503
|
webPid,
|
|
448
504
|
startedAt: new Date().toISOString()
|
|
449
505
|
};
|
|
450
|
-
config
|
|
451
|
-
|
|
506
|
+
mutateConfig((config) => {
|
|
507
|
+
config.instances = config.instances.filter((i) => i.directory !== directory);
|
|
508
|
+
config.instances.push(instance);
|
|
509
|
+
});
|
|
452
510
|
const displayHost = hostname === "0.0.0.0" ? "localhost" : hostname;
|
|
453
511
|
console.log(`
|
|
454
512
|
\u2705 OpenPortal started!`);
|
|
@@ -470,19 +528,13 @@ async function cmdRun(options) {
|
|
|
470
528
|
const directory = resolve(options.directory || options.d || process.cwd());
|
|
471
529
|
const name = options.name || directory.split("/").pop() || "opencode";
|
|
472
530
|
const opencodePort = options["opencode-port"] ? parseInt(options["opencode-port"], 10) : await getPort({ host: hostname, port: DEFAULT_OPENCODE_PORT });
|
|
473
|
-
const
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
console.log(` Name: ${existing.name}`);
|
|
481
|
-
console.log(` OpenCode Port: ${existing.opencodePort}`);
|
|
482
|
-
console.log(`\uD83D\uDD27 OpenCode API at http://${hostname === "0.0.0.0" ? "localhost" : hostname}:${existing.opencodePort}`);
|
|
483
|
-
return;
|
|
484
|
-
}
|
|
485
|
-
config.instances.splice(existingIndex, 1);
|
|
531
|
+
const existing = readConfig().instances.find((i) => i.directory === directory);
|
|
532
|
+
if (existing && isInstanceRunning(existing)) {
|
|
533
|
+
console.log(`OpenCode is already running for this directory.`);
|
|
534
|
+
console.log(` Name: ${existing.name}`);
|
|
535
|
+
console.log(` OpenCode Port: ${existing.opencodePort}`);
|
|
536
|
+
console.log(`\uD83D\uDD27 OpenCode API at http://${hostname === "0.0.0.0" ? "localhost" : hostname}:${existing.opencodePort}`);
|
|
537
|
+
return;
|
|
486
538
|
}
|
|
487
539
|
console.log(`Starting OpenCode server...`);
|
|
488
540
|
console.log(` Name: ${name}`);
|
|
@@ -502,8 +554,10 @@ async function cmdRun(options) {
|
|
|
502
554
|
webPid: null,
|
|
503
555
|
startedAt: new Date().toISOString()
|
|
504
556
|
};
|
|
505
|
-
config
|
|
506
|
-
|
|
557
|
+
mutateConfig((config) => {
|
|
558
|
+
config.instances = config.instances.filter((i) => i.directory !== directory);
|
|
559
|
+
config.instances.push(instance);
|
|
560
|
+
});
|
|
507
561
|
const displayHost = hostname === "0.0.0.0" ? "localhost" : hostname;
|
|
508
562
|
console.log(`
|
|
509
563
|
\u2705 OpenCode server started!`);
|
|
@@ -518,33 +572,36 @@ async function cmdRun(options) {
|
|
|
518
572
|
}
|
|
519
573
|
}
|
|
520
574
|
async function cmdStop(options) {
|
|
521
|
-
const config = readConfig();
|
|
522
575
|
const directory = options.directory || options.d ? resolve(options.directory || options.d) : process.cwd();
|
|
523
|
-
const
|
|
524
|
-
|
|
576
|
+
const removed = mutateConfig((config) => {
|
|
577
|
+
const instance = options.name ? config.instances.find((i) => i.name === options.name) : config.instances.find((i) => i.directory === directory);
|
|
578
|
+
if (!instance)
|
|
579
|
+
return null;
|
|
580
|
+
config.instances = config.instances.filter((i) => i.id !== instance.id);
|
|
581
|
+
return instance;
|
|
582
|
+
});
|
|
583
|
+
if (!removed) {
|
|
525
584
|
console.error("No instance found.");
|
|
526
585
|
process.exit(1);
|
|
527
586
|
}
|
|
528
|
-
if (
|
|
587
|
+
if (removed.opencodePid !== null) {
|
|
529
588
|
try {
|
|
530
|
-
process.kill(
|
|
531
|
-
console.log(`Stopped OpenCode (PID: ${
|
|
589
|
+
process.kill(removed.opencodePid, "SIGTERM");
|
|
590
|
+
console.log(`Stopped OpenCode (PID: ${removed.opencodePid})`);
|
|
532
591
|
} catch {
|
|
533
592
|
console.log("OpenCode was already stopped.");
|
|
534
593
|
}
|
|
535
594
|
}
|
|
536
|
-
if (
|
|
595
|
+
if (removed.webPid !== null) {
|
|
537
596
|
try {
|
|
538
|
-
process.kill(
|
|
539
|
-
console.log(`Stopped Web UI (PID: ${
|
|
597
|
+
process.kill(removed.webPid, "SIGTERM");
|
|
598
|
+
console.log(`Stopped Web UI (PID: ${removed.webPid})`);
|
|
540
599
|
} catch {
|
|
541
600
|
console.log("Web UI was already stopped.");
|
|
542
601
|
}
|
|
543
602
|
}
|
|
544
|
-
config.instances = config.instances.filter((i) => i.id !== instance.id);
|
|
545
|
-
writeConfig(config);
|
|
546
603
|
console.log(`
|
|
547
|
-
Stopped: ${
|
|
604
|
+
Stopped: ${removed.name}`);
|
|
548
605
|
}
|
|
549
606
|
async function cmdList() {
|
|
550
607
|
const config = readConfig();
|
|
@@ -557,7 +614,7 @@ OpenPortal Instances:
|
|
|
557
614
|
`);
|
|
558
615
|
console.log("ID\t\tNAME\t\t\tPORT\tOPENCODE\tSTATUS\t\tDIRECTORY");
|
|
559
616
|
console.log("-".repeat(110));
|
|
560
|
-
const
|
|
617
|
+
const liveIds = new Set;
|
|
561
618
|
for (const instance of config.instances) {
|
|
562
619
|
const opencodeRunning = isProcessRunning(instance.opencodePid);
|
|
563
620
|
const webRunning = isProcessRunning(instance.webPid);
|
|
@@ -569,31 +626,36 @@ OpenPortal Instances:
|
|
|
569
626
|
else if (webRunning)
|
|
570
627
|
status = "web only";
|
|
571
628
|
if (opencodeRunning || webRunning) {
|
|
572
|
-
|
|
629
|
+
liveIds.add(instance.id);
|
|
573
630
|
}
|
|
574
631
|
const portDisplay = instance.port ?? "-";
|
|
575
632
|
console.log(`${instance.id} ${instance.name.padEnd(16)} ${String(portDisplay).padEnd(4)} ${instance.opencodePort} ${status.padEnd(12)} ${instance.directory}`);
|
|
576
633
|
}
|
|
577
|
-
if (
|
|
578
|
-
|
|
579
|
-
|
|
634
|
+
if (liveIds.size !== config.instances.length) {
|
|
635
|
+
mutateConfig((latest) => {
|
|
636
|
+
latest.instances = latest.instances.filter((i) => liveIds.has(i.id) || isInstanceRunning(i));
|
|
637
|
+
});
|
|
580
638
|
}
|
|
581
639
|
}
|
|
582
640
|
async function cmdClean() {
|
|
583
|
-
const
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
const
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
641
|
+
const result = mutateConfig((config) => {
|
|
642
|
+
const valid = [];
|
|
643
|
+
const removed = [];
|
|
644
|
+
for (const instance of config.instances) {
|
|
645
|
+
if (isInstanceRunning(instance)) {
|
|
646
|
+
valid.push(instance);
|
|
647
|
+
} else {
|
|
648
|
+
removed.push(instance.name);
|
|
649
|
+
}
|
|
591
650
|
}
|
|
651
|
+
config.instances = valid;
|
|
652
|
+
return { valid, removed };
|
|
653
|
+
});
|
|
654
|
+
for (const name of result.removed) {
|
|
655
|
+
console.log(`Removed stale entry: ${name}`);
|
|
592
656
|
}
|
|
593
|
-
config.instances = validInstances;
|
|
594
|
-
writeConfig(config);
|
|
595
657
|
console.log(`
|
|
596
|
-
Config cleaned. ${
|
|
658
|
+
Config cleaned. ${result.valid.length} active instance(s).`);
|
|
597
659
|
}
|
|
598
660
|
async function main() {
|
|
599
661
|
const { args, flags } = parseArgs();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openportal",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.31",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"get-port-please": "^3.2.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@types/bun": "^1.3.
|
|
28
|
-
"typescript": "^
|
|
27
|
+
"@types/bun": "^1.3.13",
|
|
28
|
+
"typescript": "^6.0.3"
|
|
29
29
|
},
|
|
30
|
-
"
|
|
31
|
-
"bun": ">=1.3.
|
|
30
|
+
"engines": {
|
|
31
|
+
"bun": ">=1.3.13"
|
|
32
32
|
}
|
|
33
33
|
}
|
package/web/nitro.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"date": "2026-
|
|
2
|
+
"date": "2026-05-09T06:36:01.974Z",
|
|
3
3
|
"preset": "bun",
|
|
4
4
|
"framework": {
|
|
5
5
|
"name": "nitro",
|
|
6
|
-
"version": "3.0.
|
|
6
|
+
"version": "3.0.260429-beta"
|
|
7
7
|
},
|
|
8
8
|
"versions": {
|
|
9
|
-
"nitro": "3.0.
|
|
9
|
+
"nitro": "3.0.260429-beta"
|
|
10
10
|
},
|
|
11
11
|
"serverEntry": "server/index.mjs",
|
|
12
12
|
"publicDir": "public",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e,t}from"./jsx-runtime-BE_tW6Ee.js";import{W as n,f as r,x as i,z as a}from"./lucide-BTUlgFgW.js";import{t as o}from"./button-BwXxlJmo.js";import{n as s}from"./useNavigate-CHiJUiGj.js";import{d as c}from"./popover-CRR_NOES.js";import{t as l}from"./link-DOqotFDp.js";import{C as u,_ as d,a as f,b as p,i as m,p as h,v as g}from"./index-CXZ33Z-X.js";import{t as _}from"./use-media-query-DJ49EUkO.js";import{n as v}from"./breadcrumb-context-B3YglwWs.js";var y=e(n(),1),b=t();function x(e,t=40){if(e.length<=t)return e;let n=Math.floor((t-3)/2);return`${e.slice(0,n)}...${e.slice(-n)}`}function S(){let e=s(),[t,n]=(0,y.useState)(!1),{isMobile:v}=_(),{data:S,error:C,isLoading:w,mutate:T}=h(),E=m(),D=f(),O=S??[],k=(0,y.useCallback)(async()=>{if(!t){n(!0);try{let t=await E();await T(),e({to:`/session/$id`,params:{id:t.id}})}catch(e){console.error(`Failed to create session:`,e)}finally{n(!1)}}},[t,E,T,e]);async function A(e){try{await D(e),await T()}catch(e){console.error(`Failed to delete session:`,e)}}return(0,y.useEffect)(()=>{function e(e){e.key===`Enter`&&e.shiftKey&&!t&&(e.preventDefault(),k())}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[t,k]),v?(0,b.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,b.jsx)(`div`,{className:`flex flex-col items-center pt-8 pb-6`,children:(0,b.jsxs)(`div`,{className:`flex items-center gap-x-2 mb-2`,children:[(0,b.jsx)(`img`,{src:`/logo.svg`,alt:`OpenCode Portal`,className:`size-8`}),(0,b.jsxs)(`h2`,{className:`text-2xl font-medium text-fg`,children:[`OpenCode `,(0,b.jsx)(`span`,{className:`text-muted-fg`,children:`Portal`})]})]})}),(0,b.jsx)(`div`,{className:`px-4 pb-4`,children:(0,b.jsxs)(o,{intent:`outline`,onPress:k,isDisabled:t,className:`w-full`,children:[(0,b.jsx)(i,{className:`shrink-0`}),t?`Creating...`:`New Session`]})}),(0,b.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-4`,children:[(0,b.jsx)(`h3`,{className:`text-sm font-medium text-muted-fg mb-2`,children:`Sessions`}),w&&(0,b.jsx)(`p`,{className:`text-sm text-muted-fg py-2`,children:`Loading sessions...`}),C&&(0,b.jsxs)(`p`,{className:`text-sm text-danger py-2`,children:[`Error: `,C.message]}),!w&&!C&&O.length===0&&(0,b.jsx)(`p`,{className:`text-sm text-muted-fg py-2`,children:`No sessions found`}),!w&&!C&&O.length>0&&(0,b.jsx)(`ul`,{className:`space-y-1`,children:O.map(e=>(0,b.jsxs)(`li`,{className:`group flex items-center justify-between rounded-lg hover:bg-secondary/50 transition-colors`,children:[(0,b.jsx)(l,{href:`/session/${e.id}`,className:`flex-1 py-2 px-3 text-sm truncate`,children:x(e.title||`Session ${e.id.slice(0,8)}`)}),(0,b.jsxs)(d,{children:[(0,b.jsx)(u,{className:`p-2 opacity-0 group-hover:opacity-100 focus:opacity-100 transition-opacity`,children:(0,b.jsx)(r,{className:`size-4`})}),(0,b.jsx)(g,{popover:{offset:0,placement:`bottom end`},children:(0,b.jsxs)(p,{intent:`danger`,onAction:()=>A(e.id),children:[(0,b.jsx)(a,{}),`Delete Session`]})})]})]},e.id))})]})]}):(0,b.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,b.jsxs)(`div`,{className:`text-center max-w-md`,children:[(0,b.jsxs)(`div`,{className:`flex items-center justify-center gap-x-2 mb-4`,children:[(0,b.jsx)(`img`,{src:`/logo.svg`,alt:`OpenCode Portal`,className:`size-10`}),(0,b.jsx)(`h2`,{className:`text-2xl font-medium text-fg`,children:`OpenCode Portal`})]}),(0,b.jsx)(`p`,{className:`text-muted-fg mb-6`,children:`Select an existing session from the left panel or create a new one to get started`}),(0,b.jsxs)(`div`,{className:`text-sm text-muted-fg`,children:[`Press`,` `,(0,b.jsx)(c,{className:`inline-flex px-1.5 py-0.5 rounded bg-secondary text-secondary-fg text-xs font-mono`,children:`Shift + Enter`}),` `,`to start a new session`]})]})})}function C(){let{setPageTitle:e}=v();return(0,y.useEffect)(()=>(e(null),()=>e(null)),[e]),(0,b.jsx)(S,{})}export{C as component};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import{i as e,t}from"./jsx-runtime-BE_tW6Ee.js";import{L as n,M as r,N as i,P as a,W as o,b as s,c,f as l,g as u,i as d,l as f,p,r as m,s as h,t as g,v as _,z as v}from"./lucide-BTUlgFgW.js";import{H as y,M as b,N as ee,Q as x,a as S,at as C,b as w,c as T,ct as te,dt as E,et as D,f as ne,ft as re,ht as O,i as k,lt as A,n as j,o as ie,ot as M,pt as ae,q as N,r as P,rt as oe,s as F,st as I,t as L,tt as se,vt as R,xt as ce}from"./button-BwXxlJmo.js";import{n as z,t as B}from"./useNavigate-CHiJUiGj.js";import{t as le}from"./useMatch-CKjponJB.js";import{$ as V,A as H,B as ue,F as de,G as fe,I as pe,J as me,L as he,P as ge,R as _e,S as ve,V as ye,W as be,Y as xe,_t as Se,a as Ce,ct as we,ht as Te,i as Ee,it as De,j as Oe,lt as ke,mt as Ae,n as je,nt as Me,o as Ne,p as Pe,pt as Fe,r as Ie,rt as Le,st as Re,t as ze,ut as Be,v as Ve,y as He}from"./popover-CRR_NOES.js";import{n as Ue,t as We}from"./link-DOqotFDp.js";import{d as Ge,l as Ke,n as qe,r as Je,s as Ye,u as Xe}from"./use-session-messages--pfdFXZh.js";import{A as Ze,B as Qe,C as $e,D as et,H as tt,I as nt,M as rt,N as it,O as at,P as ot,R as st,S as ct,T as U,V as lt,_ as ut,a as dt,b as W,c as ft,g as G,i as pt,j as mt,k as ht,m as gt,o as _t,p as vt,s as yt,v as bt,x as xt,y as St,z as Ct}from"./index-CXZ33Z-X.js";import{t as wt}from"./parsePatchFiles-BuO13j3v.js";import{t as Tt}from"./field-CNYjTNih.js";import{t as Et}from"./use-media-query-DJ49EUkO.js";import{n as Dt,t as Ot}from"./breadcrumb-context-B3YglwWs.js";var kt={};kt={breadcrumbs:`عناصر الواجهة`};var At={};At={breadcrumbs:`Трохи хляб`};var jt={};jt={breadcrumbs:`Popis cesty`};var Mt={};Mt={breadcrumbs:`Brødkrummer`};var Nt={};Nt={breadcrumbs:`Breadcrumbs`};var Pt={};Pt={breadcrumbs:`Πλοηγήσεις breadcrumb`};var Ft={};Ft={breadcrumbs:`Breadcrumbs`};var It={};It={breadcrumbs:`Migas de pan`};var Lt={};Lt={breadcrumbs:`Lingiread`};var Rt={};Rt={breadcrumbs:`Navigointilinkit`};var zt={};zt={breadcrumbs:`Chemin de navigation`};var Bt={};Bt={breadcrumbs:`שבילי ניווט`};var Vt={};Vt={breadcrumbs:`Navigacijski putovi`};var Ht={};Ht={breadcrumbs:`Morzsamenü`};var Ut={};Ut={breadcrumbs:`Breadcrumb`};var Wt={};Wt={breadcrumbs:`パンくずリスト`};var Gt={};Gt={breadcrumbs:`탐색 표시`};var Kt={};Kt={breadcrumbs:`Naršymo kelias`};var qt={};qt={breadcrumbs:`Atpakaļceļi`};var Jt={};Jt={breadcrumbs:`Navigasjonsstier`};var Yt={};Yt={breadcrumbs:`Broodkruimels`};var Xt={};Xt={breadcrumbs:`Struktura nawigacyjna`};var Zt={};Zt={breadcrumbs:`Caminho detalhado`};var Qt={};Qt={breadcrumbs:`Categorias`};var $t={};$t={breadcrumbs:`Miez de pâine`};var en={};en={breadcrumbs:`Навигация`};var tn={};tn={breadcrumbs:`Navigačné prvky Breadcrumbs`};var nn={};nn={breadcrumbs:`Drobtine`};var rn={};rn={breadcrumbs:`Putanje navigacije`};var an={};an={breadcrumbs:`Sökvägar`};var on={};on={breadcrumbs:`İçerik haritaları`};var sn={};sn={breadcrumbs:`Навігаційна стежка`};var cn={};cn={breadcrumbs:`导航栏`};var ln={};ln={breadcrumbs:`導覽列`};var un={};un={"ar-AE":kt,"bg-BG":At,"cs-CZ":jt,"da-DK":Mt,"de-DE":Nt,"el-GR":Pt,"en-US":Ft,"es-ES":It,"et-EE":Lt,"fi-FI":Rt,"fr-FR":zt,"he-IL":Bt,"hr-HR":Vt,"hu-HU":Ht,"it-IT":Ut,"ja-JP":Wt,"ko-KR":Gt,"lt-LT":Kt,"lv-LV":qt,"nb-NO":Jt,"nl-NL":Yt,"pl-PL":Xt,"pt-BR":Zt,"pt-PT":Qt,"ro-RO":$t,"ru-RU":en,"sk-SK":tn,"sl-SI":nn,"sr-SP":rn,"sv-SE":an,"tr-TR":on,"uk-UA":sn,"zh-CN":cn,"zh-TW":ln};function dn(e){return e&&e.__esModule?e.default:e}function fn(e){let{"aria-label":t,...n}=e,r=Ae(dn(un),`@react-aria/breadcrumbs`);return{navProps:{...w(n,{labelable:!0}),"aria-label":t||r.format(`breadcrumbs`)}}}var K=e(o(),1),pn=(0,K.createContext)(null),mn=(0,K.forwardRef)(function(e,t){[e,t]=M(e,t,pn);let{CollectionRoot:n}=(0,K.useContext)(De),{navProps:r}=fn(e),i=w(e,{global:!0,labelable:!0});return K.createElement(we,{content:K.createElement(ke,e)},a=>K.createElement(E.ol,{render:e.render,ref:t,...O(i,r),slot:e.slot||void 0,style:e.style,className:e.className??`react-aria-Breadcrumbs`},K.createElement(pn.Provider,{value:e},K.createElement(n,{collection:a}))))}),hn=Re(class extends Be{static{this.type=`item`}},function(e,t,n){let r=n.nextKey==null,{isDisabled:i,onAction:a}=ae(pn),o={"aria-current":r?`page`:null,isDisabled:i||r,onPress:()=>a?.(n.key)},s=I({...n.props,children:n.rendered,values:{isDisabled:i||r,isCurrent:r},defaultClassName:`react-aria-Breadcrumb`}),c=w(e,{global:!0,labelable:!0});return delete c.id,K.createElement(E.li,{...c,...s,ref:t,"data-disabled":i||r||void 0,"data-current":r||void 0},K.createElement(Ue.Provider,{value:o},s.children))});function gn(e,t){let n=(0,K.useRef)(!0),r=(0,K.useRef)(null),i=ee(e);(0,K.useEffect)(()=>(n.current=!0,()=>{n.current=!1}),[]),(0,K.useEffect)(()=>{let e=r.current;n.current?n.current=!1:(!e||t.some((t,n)=>!Object.is(t,e[n])))&&i(),r.current=t},t)}var _n={};_n={buttonLabel:`عرض المقترحات`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{62E}\u{64A}\u{627}\u{631}`,other:()=>`${t.number(e.optionCount)} \u{62E}\u{64A}\u{627}\u{631}\u{627}\u{62A}`})} \u{645}\u{62A}\u{627}\u{62D}\u{629}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{627}\u{644}\u{645}\u{62C}\u{645}\u{648}\u{639}\u{629} \u{627}\u{644}\u{645}\u{62F}\u{62E}\u{644}\u{629} ${e.groupTitle}, \u{645}\u{639} ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{62E}\u{64A}\u{627}\u{631}`,other:()=>`${t.number(e.groupCount)} \u{62E}\u{64A}\u{627}\u{631}\u{627}\u{62A}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, محدد`,other:``},e.isSelected)}`,listboxLabel:`مقترحات`,selectedAnnouncement:e=>`${e.optionText}\u{60C} \u{645}\u{62D}\u{62F}\u{62F}`};var vn={};vn={buttonLabel:`Покажи предложения`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{43E}\u{43F}\u{446}\u{438}\u{44F}`,other:()=>`${t.number(e.optionCount)} \u{43E}\u{43F}\u{446}\u{438}\u{438}`})} \u{43D}\u{430} \u{440}\u{430}\u{437}\u{43F}\u{43E}\u{43B}\u{43E}\u{436}\u{435}\u{43D}\u{438}\u{435}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{412}\u{44A}\u{432}\u{435}\u{434}\u{435}\u{43D}\u{430} \u{433}\u{440}\u{443}\u{43F}\u{430} ${e.groupTitle}, \u{441} ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{43E}\u{43F}\u{446}\u{438}\u{44F}`,other:()=>`${t.number(e.groupCount)} \u{43E}\u{43F}\u{446}\u{438}\u{438}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, избрани`,other:``},e.isSelected)}`,listboxLabel:`Предложения`,selectedAnnouncement:e=>`${e.optionText}, \u{438}\u{437}\u{431}\u{440}\u{430}\u{43D}\u{438}`};var yn={};yn={buttonLabel:`Zobrazit doporučení`,countAnnouncement:(e,t)=>`K dispozici ${t.plural(e.optionCount,{one:()=>`je ${t.number(e.optionCount)} mo\u{17E}nost`,other:()=>`jsou/je ${t.number(e.optionCount)} mo\u{17E}nosti/-\xed`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Zadan\xe1 skupina \u{201E}${e.groupTitle}\u{201C} ${t.plural(e.groupCount,{one:()=>`s ${t.number(e.groupCount)} mo\u{17E}nost\xed`,other:()=>`se ${t.number(e.groupCount)} mo\u{17E}nostmi`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:` (vybráno)`,other:``},e.isSelected)}`,listboxLabel:`Návrhy`,selectedAnnouncement:e=>`${e.optionText}, vybr\xe1no`};var bn={};bn={buttonLabel:`Vis forslag`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} mulighed tilg\xe6ngelig`,other:()=>`${t.number(e.optionCount)} muligheder tilg\xe6ngelige`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Angivet gruppe ${e.groupTitle}, med ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} mulighed`,other:()=>`${t.number(e.groupCount)} muligheder`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, valgt`,other:``},e.isSelected)}`,listboxLabel:`Forslag`,selectedAnnouncement:e=>`${e.optionText}, valgt`};var xn={};xn={buttonLabel:`Empfehlungen anzeigen`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} Option`,other:()=>`${t.number(e.optionCount)} Optionen`})} verf\xfcgbar.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Eingetretene Gruppe ${e.groupTitle}, mit ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} Option`,other:()=>`${t.number(e.groupCount)} Optionen`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, ausgewählt`,other:``},e.isSelected)}`,listboxLabel:`Empfehlungen`,selectedAnnouncement:e=>`${e.optionText}, ausgew\xe4hlt`};var Sn={};Sn={buttonLabel:`Προβολή προτάσεων`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{3B5}\u{3C0}\u{3B9}\u{3BB}\u{3BF}\u{3B3}\u{3AE}`,other:()=>`${t.number(e.optionCount)} \u{3B5}\u{3C0}\u{3B9}\u{3BB}\u{3BF}\u{3B3}\u{3AD}\u{3C2} `})} \u{3B4}\u{3B9}\u{3B1}\u{3B8}\u{3AD}\u{3C3}\u{3B9}\u{3BC}\u{3B5}\u{3C2}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{395}\u{3B9}\u{3C3}\u{3B1}\u{3B3}\u{3BC}\u{3AD}\u{3BD}\u{3B7} \u{3BF}\u{3BC}\u{3AC}\u{3B4}\u{3B1} ${e.groupTitle}, \u{3BC}\u{3B5} ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{3B5}\u{3C0}\u{3B9}\u{3BB}\u{3BF}\u{3B3}\u{3AE}`,other:()=>`${t.number(e.groupCount)} \u{3B5}\u{3C0}\u{3B9}\u{3BB}\u{3BF}\u{3B3}\u{3AD}\u{3C2}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, επιλεγμένο`,other:``},e.isSelected)}`,listboxLabel:`Προτάσεις`,selectedAnnouncement:e=>`${e.optionText}, \u{3B5}\u{3C0}\u{3B9}\u{3BB}\u{3AD}\u{3C7}\u{3B8}\u{3B7}\u{3BA}\u{3B5}`};var Cn={};Cn={focusAnnouncement:(e,t)=>`${t.select({true:()=>`Entered group ${e.groupTitle}, with ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} option`,other:()=>`${t.number(e.groupCount)} options`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, selected`,other:``},e.isSelected)}`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} option`,other:()=>`${t.number(e.optionCount)} options`})} available.`,selectedAnnouncement:e=>`${e.optionText}, selected`,buttonLabel:`Show suggestions`,listboxLabel:`Suggestions`};var wn={};wn={buttonLabel:`Mostrar sugerencias`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} opci\xf3n`,other:()=>`${t.number(e.optionCount)} opciones`})} disponible(s).`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Se ha unido al grupo ${e.groupTitle}, con ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} opci\xf3n`,other:()=>`${t.number(e.groupCount)} opciones`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, seleccionado`,other:``},e.isSelected)}`,listboxLabel:`Sugerencias`,selectedAnnouncement:e=>`${e.optionText}, seleccionado`};var Tn={};Tn={buttonLabel:`Kuva soovitused`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} valik`,other:()=>`${t.number(e.optionCount)} valikud`})} saadaval.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Sisestatud r\xfchm ${e.groupTitle}, valikuga ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} valik`,other:()=>`${t.number(e.groupCount)} valikud`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, valitud`,other:``},e.isSelected)}`,listboxLabel:`Soovitused`,selectedAnnouncement:e=>`${e.optionText}, valitud`};var En={};En={buttonLabel:`Näytä ehdotukset`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} vaihtoehto`,other:()=>`${t.number(e.optionCount)} vaihtoehdot`})} saatavilla.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Mentiin ryhm\xe4\xe4n ${e.groupTitle}, ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} vaihtoehdon`,other:()=>`${t.number(e.groupCount)} vaihtoehdon`})} kanssa.`,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, valittu`,other:``},e.isSelected)}`,listboxLabel:`Ehdotukset`,selectedAnnouncement:e=>`${e.optionText}, valittu`};var Dn={};Dn={buttonLabel:`Afficher les suggestions`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} option`,other:()=>`${t.number(e.optionCount)} options`})} disponible(s).`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Groupe ${e.groupTitle} rejoint, avec ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} option`,other:()=>`${t.number(e.groupCount)} options`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, sélectionné(s)`,other:``},e.isSelected)}`,listboxLabel:`Suggestions`,selectedAnnouncement:e=>`${e.optionText}, s\xe9lectionn\xe9`};var On={};On={buttonLabel:`הצג הצעות`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`\u{5D0}\u{5E4}\u{5E9}\u{5E8}\u{5D5}\u{5EA} ${t.number(e.optionCount)}`,other:()=>`${t.number(e.optionCount)} \u{5D0}\u{5E4}\u{5E9}\u{5E8}\u{5D5}\u{5D9}\u{5D5}\u{5EA}`})} \u{5D1}\u{5DE}\u{5E6}\u{5D1} \u{5D6}\u{5DE}\u{5D9}\u{5DF}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{5E0}\u{5DB}\u{5E0}\u{5E1} \u{5DC}\u{5E7}\u{5D1}\u{5D5}\u{5E6}\u{5D4} ${e.groupTitle}, \u{5E2}\u{5DD} ${t.plural(e.groupCount,{one:()=>`\u{5D0}\u{5E4}\u{5E9}\u{5E8}\u{5D5}\u{5EA} ${t.number(e.groupCount)}`,other:()=>`${t.number(e.groupCount)} \u{5D0}\u{5E4}\u{5E9}\u{5E8}\u{5D5}\u{5D9}\u{5D5}\u{5EA}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, נבחר`,other:``},e.isSelected)}`,listboxLabel:`הצעות`,selectedAnnouncement:e=>`${e.optionText}, \u{5E0}\u{5D1}\u{5D7}\u{5E8}`};var kn={};kn={buttonLabel:`Prikaži prijedloge`,countAnnouncement:(e,t)=>`Dostupno jo\u{161}: ${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} opcija`,other:()=>`${t.number(e.optionCount)} opcije/a`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Unesena skupina ${e.groupTitle}, s ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} opcijom`,other:()=>`${t.number(e.groupCount)} opcije/a`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, odabranih`,other:``},e.isSelected)}`,listboxLabel:`Prijedlozi`,selectedAnnouncement:e=>`${e.optionText}, odabrano`};var An={};An={buttonLabel:`Javaslatok megjelenítése`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} lehet\u{151}s\xe9g`,other:()=>`${t.number(e.optionCount)} lehet\u{151}s\xe9g`})} \xe1ll rendelkez\xe9sre.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Bel\xe9pett a(z) ${e.groupTitle} csoportba, amely ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} lehet\u{151}s\xe9get`,other:()=>`${t.number(e.groupCount)} lehet\u{151}s\xe9get`})} tartalmaz. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, kijelölve`,other:``},e.isSelected)}`,listboxLabel:`Javaslatok`,selectedAnnouncement:e=>`${e.optionText}, kijel\xf6lve`};var jn={};jn={buttonLabel:`Mostra suggerimenti`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} opzione disponibile`,other:()=>`${t.number(e.optionCount)} opzioni disponibili`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Ingresso nel gruppo ${e.groupTitle}, con ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} opzione`,other:()=>`${t.number(e.groupCount)} opzioni`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, selezionato`,other:``},e.isSelected)}`,listboxLabel:`Suggerimenti`,selectedAnnouncement:e=>`${e.optionText}, selezionato`};var Mn={};Mn={buttonLabel:`候補を表示`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{500B}\u{306E}\u{30AA}\u{30D7}\u{30B7}\u{30E7}\u{30F3}`,other:()=>`${t.number(e.optionCount)} \u{500B}\u{306E}\u{30AA}\u{30D7}\u{30B7}\u{30E7}\u{30F3}`})}\u{3092}\u{5229}\u{7528}\u{3067}\u{304D}\u{307E}\u{3059}\u{3002}`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{5165}\u{529B}\u{3055}\u{308C}\u{305F}\u{30B0}\u{30EB}\u{30FC}\u{30D7} ${e.groupTitle}\u{3001}${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{500B}\u{306E}\u{30AA}\u{30D7}\u{30B7}\u{30E7}\u{30F3}`,other:()=>`${t.number(e.groupCount)} \u{500B}\u{306E}\u{30AA}\u{30D7}\u{30B7}\u{30E7}\u{30F3}`})}\u{3092}\u{542B}\u{3080}\u{3002}`,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`、選択済み`,other:``},e.isSelected)}`,listboxLabel:`候補`,selectedAnnouncement:e=>`${e.optionText}\u{3001}\u{9078}\u{629E}\u{6E08}\u{307F}`};var Nn={};Nn={buttonLabel:`제안 사항 표시`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)}\u{AC1C} \u{C635}\u{C158}`,other:()=>`${t.number(e.optionCount)}\u{AC1C} \u{C635}\u{C158}`})}\u{C744} \u{C0AC}\u{C6A9}\u{D560} \u{C218} \u{C788}\u{C2B5}\u{B2C8}\u{B2E4}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{C785}\u{B825}\u{D55C} \u{ADF8}\u{B8F9} ${e.groupTitle}, ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)}\u{AC1C} \u{C635}\u{C158}`,other:()=>`${t.number(e.groupCount)}\u{AC1C} \u{C635}\u{C158}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, 선택됨`,other:``},e.isSelected)}`,listboxLabel:`제안`,selectedAnnouncement:e=>`${e.optionText}, \u{C120}\u{D0DD}\u{B428}`};var Pn={};Pn={buttonLabel:`Rodyti pasiūlymus`,countAnnouncement:(e,t)=>`Yra ${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} parinktis`,other:()=>`${t.number(e.optionCount)} parinktys (-i\u{173})`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{12E}vesta grup\u{117} ${e.groupTitle}, su ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} parinktimi`,other:()=>`${t.number(e.groupCount)} parinktimis (-i\u{173})`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, pasirinkta`,other:``},e.isSelected)}`,listboxLabel:`Pasiūlymai`,selectedAnnouncement:e=>`${e.optionText}, pasirinkta`};var Fn={};Fn={buttonLabel:`Rādīt ieteikumus`,countAnnouncement:(e,t)=>`Pieejamo opciju skaits: ${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} opcija`,other:()=>`${t.number(e.optionCount)} opcijas`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Ievad\u{12B}ta grupa ${e.groupTitle}, ar ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} opciju`,other:()=>`${t.number(e.groupCount)} opcij\u{101}m`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, atlasīta`,other:``},e.isSelected)}`,listboxLabel:`Ieteikumi`,selectedAnnouncement:e=>`${e.optionText}, atlas\u{12B}ta`};var In={};In={buttonLabel:`Vis forslag`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} alternativ`,other:()=>`${t.number(e.optionCount)} alternativer`})} finnes.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Angitt gruppe ${e.groupTitle}, med ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} alternativ`,other:()=>`${t.number(e.groupCount)} alternativer`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, valgt`,other:``},e.isSelected)}`,listboxLabel:`Forslag`,selectedAnnouncement:e=>`${e.optionText}, valgt`};var Ln={};Ln={buttonLabel:`Suggesties weergeven`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} optie`,other:()=>`${t.number(e.optionCount)} opties`})} beschikbaar.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Groep ${e.groupTitle} ingevoerd met ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} optie`,other:()=>`${t.number(e.groupCount)} opties`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, geselecteerd`,other:``},e.isSelected)}`,listboxLabel:`Suggesties`,selectedAnnouncement:e=>`${e.optionText}, geselecteerd`};var Rn={};Rn={buttonLabel:`Wyświetlaj sugestie`,countAnnouncement:(e,t)=>`dost\u{119}pna/dost\u{119}pne(-nych) ${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} opcja`,other:()=>`${t.number(e.optionCount)} opcje(-i)`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Do\u{142}\u{105}czono do grupy ${e.groupTitle}, z ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} opcj\u{105}`,other:()=>`${t.number(e.groupCount)} opcjami`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, wybrano`,other:``},e.isSelected)}`,listboxLabel:`Sugestie`,selectedAnnouncement:e=>`${e.optionText}, wybrano`};var zn={};zn={buttonLabel:`Mostrar sugestões`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} op\xe7\xe3o`,other:()=>`${t.number(e.optionCount)} op\xe7\xf5es`})} dispon\xedvel.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Grupo inserido ${e.groupTitle}, com ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} op\xe7\xe3o`,other:()=>`${t.number(e.groupCount)} op\xe7\xf5es`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, selecionado`,other:``},e.isSelected)}`,listboxLabel:`Sugestões`,selectedAnnouncement:e=>`${e.optionText}, selecionado`};var Bn={};Bn={buttonLabel:`Apresentar sugestões`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} op\xe7\xe3o`,other:()=>`${t.number(e.optionCount)} op\xe7\xf5es`})} dispon\xedvel.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Grupo introduzido ${e.groupTitle}, com ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} op\xe7\xe3o`,other:()=>`${t.number(e.groupCount)} op\xe7\xf5es`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, selecionado`,other:``},e.isSelected)}`,listboxLabel:`Sugestões`,selectedAnnouncement:e=>`${e.optionText}, selecionado`};var Vn={};Vn={buttonLabel:`Afișare sugestii`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} op\u{21B}iune`,other:()=>`${t.number(e.optionCount)} op\u{21B}iuni`})} disponibile.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Grup ${e.groupTitle} introdus, cu ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} op\u{21B}iune`,other:()=>`${t.number(e.groupCount)} op\u{21B}iuni`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, selectat`,other:``},e.isSelected)}`,listboxLabel:`Sugestii`,selectedAnnouncement:e=>`${e.optionText}, selectat`};var Hn={};Hn={buttonLabel:`Показать предложения`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}`,other:()=>`${t.number(e.optionCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}\u{43E}\u{432}`})} \u{434}\u{43E}\u{441}\u{442}\u{443}\u{43F}\u{43D}\u{43E}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{412}\u{432}\u{435}\u{434}\u{435}\u{43D}\u{43D}\u{430}\u{44F} \u{433}\u{440}\u{443}\u{43F}\u{43F}\u{430} ${e.groupTitle}, \u{441} ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}\u{43E}\u{43C}`,other:()=>`${t.number(e.groupCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}\u{430}\u{43C}\u{438}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, выбранными`,other:``},e.isSelected)}`,listboxLabel:`Предложения`,selectedAnnouncement:e=>`${e.optionText}, \u{432}\u{44B}\u{431}\u{440}\u{430}\u{43D}\u{43E}`};var Un={};Un={buttonLabel:`Zobraziť návrhy`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} mo\u{17E}nos\u{165}`,other:()=>`${t.number(e.optionCount)} mo\u{17E}nosti/-\xed`})} k dispoz\xedcii.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Zadan\xe1 skupina ${e.groupTitle}, s ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} mo\u{17E}nos\u{165}ou`,other:()=>`${t.number(e.groupCount)} mo\u{17E}nos\u{165}ami`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, vybraté`,other:``},e.isSelected)}`,listboxLabel:`Návrhy`,selectedAnnouncement:e=>`${e.optionText}, vybrat\xe9`};var Wn={};Wn={buttonLabel:`Prikaži predloge`,countAnnouncement:(e,t)=>`Na voljo je ${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} opcija`,other:()=>`${t.number(e.optionCount)} opcije`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Vnesena skupina ${e.groupTitle}, z ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} opcija`,other:()=>`${t.number(e.groupCount)} opcije`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, izbrano`,other:``},e.isSelected)}`,listboxLabel:`Predlogi`,selectedAnnouncement:e=>`${e.optionText}, izbrano`};var Gn={};Gn={buttonLabel:`Prikaži predloge`,countAnnouncement:(e,t)=>`Dostupno jo\u{161}: ${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} opcija`,other:()=>`${t.number(e.optionCount)} opcije/a`})}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Unesena grupa ${e.groupTitle}, s ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} opcijom`,other:()=>`${t.number(e.groupCount)} optione/a`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, izabranih`,other:``},e.isSelected)}`,listboxLabel:`Predlozi`,selectedAnnouncement:e=>`${e.optionText}, izabrano`};var Kn={};Kn={buttonLabel:`Visa förslag`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} alternativ`,other:()=>`${t.number(e.optionCount)} alternativ`})} tillg\xe4ngliga.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Ingick i gruppen ${e.groupTitle} med ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} alternativ`,other:()=>`${t.number(e.groupCount)} alternativ`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, valda`,other:``},e.isSelected)}`,listboxLabel:`Förslag`,selectedAnnouncement:e=>`${e.optionText}, valda`};var qn={};qn={buttonLabel:`Önerileri göster`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} se\xe7enek`,other:()=>`${t.number(e.optionCount)} se\xe7enekler`})} kullan\u{131}labilir.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`Girilen grup ${e.groupTitle}, ile ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} se\xe7enek`,other:()=>`${t.number(e.groupCount)} se\xe7enekler`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, seçildi`,other:``},e.isSelected)}`,listboxLabel:`Öneriler`,selectedAnnouncement:e=>`${e.optionText}, se\xe7ildi`};var Jn={};Jn={buttonLabel:`Показати пропозиції`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}`,other:()=>`${t.number(e.optionCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}\u{438}(-\u{456}\u{432})`})} \u{434}\u{43E}\u{441}\u{442}\u{443}\u{43F}\u{43D}\u{43E}.`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{412}\u{432}\u{435}\u{434}\u{435}\u{43D}\u{430} \u{433}\u{440}\u{443}\u{43F}\u{430} ${e.groupTitle}, \u{437} ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}`,other:()=>`${t.number(e.groupCount)} \u{43F}\u{430}\u{440}\u{430}\u{43C}\u{435}\u{442}\u{440}\u{438}(-\u{456}\u{432})`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, вибрано`,other:``},e.isSelected)}`,listboxLabel:`Пропозиції`,selectedAnnouncement:e=>`${e.optionText}, \u{432}\u{438}\u{431}\u{440}\u{430}\u{43D}\u{43E}`};var Yn={};Yn={buttonLabel:`显示建议`,countAnnouncement:(e,t)=>`\u{6709} ${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{4E2A}\u{9009}\u{9879}`,other:()=>`${t.number(e.optionCount)} \u{4E2A}\u{9009}\u{9879}`})}\u{53EF}\u{7528}\u{3002}`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{8FDB}\u{5165}\u{4E86} ${e.groupTitle} \u{7EC4}\u{FF0C}\u{5176}\u{4E2D}\u{6709} ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{4E2A}\u{9009}\u{9879}`,other:()=>`${t.number(e.groupCount)} \u{4E2A}\u{9009}\u{9879}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, 已选择`,other:``},e.isSelected)}`,listboxLabel:`建议`,selectedAnnouncement:e=>`${e.optionText}, \u{5DF2}\u{9009}\u{62E9}`};var Xn={};Xn={buttonLabel:`顯示建議`,countAnnouncement:(e,t)=>`${t.plural(e.optionCount,{one:()=>`${t.number(e.optionCount)} \u{9078}\u{9805}`,other:()=>`${t.number(e.optionCount)} \u{9078}\u{9805}`})} \u{53EF}\u{7528}\u{3002}`,focusAnnouncement:(e,t)=>`${t.select({true:()=>`\u{8F38}\u{5165}\u{7684}\u{7FA4}\u{7D44} ${e.groupTitle}, \u{6709} ${t.plural(e.groupCount,{one:()=>`${t.number(e.groupCount)} \u{9078}\u{9805}`,other:()=>`${t.number(e.groupCount)} \u{9078}\u{9805}`})}. `,other:``},e.isGroupChange)}${e.optionText}${t.select({true:`, 已選取`,other:``},e.isSelected)}`,listboxLabel:`建議`,selectedAnnouncement:e=>`${e.optionText}, \u{5DF2}\u{9078}\u{53D6}`};var Zn={};Zn={"ar-AE":_n,"bg-BG":vn,"cs-CZ":yn,"da-DK":bn,"de-DE":xn,"el-GR":Sn,"en-US":Cn,"es-ES":wn,"et-EE":Tn,"fi-FI":En,"fr-FR":Dn,"he-IL":On,"hr-HR":kn,"hu-HU":An,"it-IT":jn,"ja-JP":Mn,"ko-KR":Nn,"lt-LT":Pn,"lv-LV":Fn,"nb-NO":In,"nl-NL":Ln,"pl-PL":Rn,"pt-BR":zn,"pt-PT":Bn,"ro-RO":Vn,"ru-RU":Hn,"sk-SK":Un,"sl-SI":Wn,"sr-SP":Gn,"sv-SE":Kn,"tr-TR":qn,"uk-UA":Jn,"zh-CN":Yn,"zh-TW":Xn};function Qn(e){return e&&e.__esModule?e.default:e}function $n(e,t){let{buttonRef:n,popoverRef:r,inputRef:i,listBoxRef:a,keyboardDelegate:o,layoutDelegate:s,shouldFocusWrap:c,isReadOnly:l,isDisabled:u}=e,d=(0,K.useRef)(null);n??=d;let f=Ae(Qn(Zn),`@react-aria/combobox`),{menuTriggerProps:p,menuProps:m}=Ve({type:`listbox`,isDisabled:u||l},t,n);me.set(t,{id:m.id});let{collection:h}=t,{disabledKeys:g}=t.selectionManager,_=(0,K.useMemo)(()=>o||new be({collection:h,disabledKeys:g,ref:a,layoutDelegate:s}),[o,s,h,g,a]),{collectionProps:v}=fe({selectionManager:t.selectionManager,keyboardDelegate:_,disallowTypeAhead:!0,disallowEmptySelection:!0,shouldFocusWrap:c,ref:i,isVirtualized:!0}),ee=y(),S=n=>{if(!n.nativeEvent.isComposing)switch(n.key){case`Enter`:case`Tab`:if(t.isOpen&&n.key===`Enter`&&n.preventDefault(),t.isOpen&&a.current&&t.selectionManager.focusedKey!=null){let e=t.collection.getItem(t.selectionManager.focusedKey);if(e?.props.href){let r=a.current.querySelector(`[data-key="${CSS.escape(t.selectionManager.focusedKey.toString())}"]`);n.key===`Enter`&&r instanceof HTMLAnchorElement&&ee.open(r,n,e.props.href,e.props.routerOptions),t.close();break}else if(e?.props.onAction){e.props.onAction(),t.close();break}}(n.key===`Enter`||t.isOpen)&&t.commit();break;case`Escape`:(!t.selectionManager.isEmpty||t.inputValue===``||e.allowsCustomValue)&&n.continuePropagation(),t.revert();break;case`ArrowDown`:t.open(`first`,`manual`);break;case`ArrowUp`:t.open(`last`,`manual`);break;case`ArrowLeft`:case`ArrowRight`:t.selectionManager.setFocusedKey(null);break}},C=i=>{let a=n?.current&&n.current===i.relatedTarget,o=x(r.current,i.relatedTarget);a||o||(e.onBlur&&e.onBlur(i),t.setFocused(!1))},w=n=>{t.isFocused||(e.onFocus&&e.onFocus(n),t.setFocused(!0))},te=er([t.selectionManager.selectedKeys,t.selectionManager.selectionMode]),{isInvalid:E,validationErrors:ne,validationDetails:re}=t.displayValidation,{labelProps:k,inputProps:A,descriptionProps:j,errorMessageProps:ie}=Ze({...e,isRequired:e.selectionMode===`multiple`?e.isRequired&&t.selectionManager.isEmpty:e.isRequired,onChange:t.setInputValue,onKeyDown:l?e.onKeyDown:ce(t.isOpen&&v.onKeyDown,S,e.onKeyDown),onBlur:C,value:t.inputValue,defaultValue:t.defaultInputValue,onFocus:w,autoComplete:`off`,validate:void 0,[Ct]:t,"aria-describedby":[te,e[`aria-describedby`]].filter(Boolean).join(` `)||void 0},i);nt(i,t.defaultValue,t.setValue);let M=e=>{e.pointerType===`touch`&&(i.current?.focus(),t.toggle(null,`manual`))},ae=e=>{e.pointerType!==`touch`&&(i.current?.focus(),t.toggle(e.pointerType===`keyboard`||e.pointerType===`virtual`?`first`:null,`manual`))},P=b({id:p.id,"aria-label":f.format(`buttonLabel`),"aria-labelledby":e[`aria-labelledby`]||k.id}),F=b({id:m.id,"aria-label":f.format(`listboxLabel`),"aria-labelledby":e[`aria-labelledby`]||k.id}),I=(0,K.useRef)(0),L=e=>{if(u||l)return;if(e.timeStamp-I.current<500){e.preventDefault(),i.current?.focus();return}let n=se(e).getBoundingClientRect(),r=e.changedTouches[0],a=Math.ceil(n.left+.5*n.width),o=Math.ceil(n.top+.5*n.height);r.clientX===a&&r.clientY===o&&(e.preventDefault(),i.current?.focus(),t.toggle(null,`manual`),I.current=e.timeStamp)},R=t.selectionManager.focusedKey!=null&&t.isOpen?t.collection.getItem(t.selectionManager.focusedKey):void 0,z=R?.parentKey??null,B=t.selectionManager.focusedKey??null,le=(0,K.useRef)(z),V=(0,K.useRef)(B);(0,K.useEffect)(()=>{if(N()&&R!=null&&B!=null&&B!==V.current){let e=t.selectionManager.isSelected(B),n=z==null?null:t.collection.getItem(z),r=n?.[`aria-label`]||(typeof n?.rendered==`string`?n.rendered:``)||``;T(f.format(`focusAnnouncement`,{isGroupChange:(n&&z!==le.current)??!1,groupTitle:r,groupCount:n?[...ye(n,t.collection)].length:0,optionText:R[`aria-label`]||R.textValue||``,isSelected:e}))}le.current=z,V.current=B});let H=ue(t.collection),de=(0,K.useRef)(H),pe=(0,K.useRef)(t.isOpen);(0,K.useEffect)(()=>{let e=t.isOpen!==pe.current&&(t.selectionManager.focusedKey==null||N());t.isOpen&&(e||H!==de.current)&&T(f.format(`countAnnouncement`,{optionCount:H})),de.current=H,pe.current=t.isOpen});let he=(0,K.useRef)(t.selectedKey);return(0,K.useEffect)(()=>{if(N()&&t.isFocused&&t.selectedItem&&t.selectedKey!==he.current){let e=t.selectedItem[`aria-label`]||t.selectedItem.textValue||``;T(f.format(`selectedAnnouncement`,{optionText:e}))}he.current=t.selectedKey}),(0,K.useEffect)(()=>{if(t.isOpen)return Oe([i.current,r.current].filter(e=>e!=null))},[t.isOpen,i,r]),gn(()=>{!R&&i.current&&D(oe(i.current))===i.current&&Se(i.current,null)},[R]),Te(a,`react-aria-item-action`,t.isOpen?()=>{t.close()}:void 0),{labelProps:k,buttonProps:{...p,...P,excludeFromTabOrder:!0,preventFocusOnPress:!0,onPress:M,onPressStart:ae,isDisabled:u||l},inputProps:O(A,{role:`combobox`,"aria-expanded":p[`aria-expanded`],"aria-controls":t.isOpen?m.id:void 0,"aria-autocomplete":`list`,"aria-activedescendant":R?xe(t,R.key):void 0,onTouchEnd:L,autoCorrect:`off`,spellCheck:`false`}),listBoxProps:O(m,F,{autoFocus:t.focusStrategy||!0,shouldUseVirtualFocus:!0,shouldSelectOnPressUp:!0,shouldFocusOnHover:!0,linkBehavior:`selection`,UNSTABLE_itemBehavior:`action`}),valueProps:{id:te},descriptionProps:j,errorMessageProps:ie,isInvalid:E,validationErrors:ne,validationDetails:re}}function er(e=[]){let t=R(),[n,r]=(0,K.useState)(!0),[i,a]=(0,K.useState)(e);return i.some((t,n)=>!Object.is(t,e[n]))&&(r(!0),a(e)),(0,K.useEffect)(()=>{n&&!document.getElementById(t)&&r(!1)},[t,n,i]),n?t:void 0}var tr=[];function nr(e){let{defaultFilter:t,menuTrigger:n=`input`,allowsEmptyCollection:r=!1,allowsCustomValue:i,shouldCloseOnBlur:a=!0,selectionMode:o=`single`}=e,[s,c]=(0,K.useState)(!1),[l,u]=(0,K.useState)(!1),[d,f]=(0,K.useState)(null),p=(0,K.useMemo)(()=>e.defaultValue===void 0?o===`single`?e.defaultSelectedKey??null:[]:e.defaultValue,[e.defaultValue,e.defaultSelectedKey,o]),m=(0,K.useMemo)(()=>e.value===void 0?o===`single`?e.selectedKey:void 0:e.value,[e.value,e.selectedKey,o]),[h,g]=Fe(m,p,e.onChange),_=o===`single`&&Array.isArray(h)?h[0]:h,v=t=>{if(o===`single`){let n=Array.isArray(t)?t[0]??null:t;g(n),n!==_&&e.onSelectionChange?.(n)}else{let e=[];Array.isArray(t)?e=t:t!=null&&(e=[t]),g(e)}},{collection:y,selectionManager:b,disabledKeys:ee}=he({...e,items:e.items??e.defaultItems,selectionMode:o,disallowEmptySelection:o===`single`,allowDuplicateSelectionEvents:!0,selectedKeys:(0,K.useMemo)(()=>or(_),[_]),onSelectionChange:t=>{if(t!==`all`)if(o===`single`){let n=t.values().next().value??null;n===_?(e.onSelectionChange?.(n),F(),N()):v(n)}else v([...t])}}),x=o===`single`?b.firstSelectedKey:null,S=(0,K.useMemo)(()=>[...b.selectedKeys].map(e=>y.getItem(e)).filter(e=>e!=null),[b.selectedKeys,y]),[C,w]=Fe(e.inputValue,ar(e.defaultInputValue,x,y)||``,e.onInputChange),[T]=(0,K.useState)(_),[te]=(0,K.useState)(C),E=y,D=(0,K.useMemo)(()=>e.items!=null||!t?y:rr(y,C,t),[y,C,t,e.items]),[ne,re]=(0,K.useState)(D),O=(0,K.useRef)(`focus`),k=t=>{e.onOpenChange&&e.onOpenChange(t,t?O.current:void 0),b.setFocused(t),t||b.setFocusedKey(null)},A=ve({...e,onOpenChange:k,isOpen:void 0,defaultOpen:void 0}),j=(t=null,i)=>{let a=i===`manual`||i===`focus`&&n===`focus`;(r||D.size>0||a&&E.size>0||e.items)&&(a&&!A.isOpen&&e.items===void 0&&c(!0),O.current=i,f(t),A.open())},ie=(t=null,i)=>{let a=i===`manual`||i===`focus`&&n===`focus`;!(r||D.size>0||a&&E.size>0||e.items)&&!A.isOpen||(a&&!A.isOpen&&e.items===void 0&&c(!0),A.isOpen||(O.current=i),ae(t))},M=(0,K.useCallback)(()=>{re(s?E:D)},[s,E,D]),ae=(0,K.useCallback)((e=null)=>{A.isOpen&&M(),f(e),A.toggle()},[A,M]),N=(0,K.useCallback)(()=>{A.isOpen&&(M(),A.close())},[A,M]),[P,oe]=(0,K.useState)(C),F=()=>{let e=x==null?``:y.getItem(x)?.textValue??``;oe(e),w(e)},I=(0,K.useRef)(_),L=(0,K.useRef)(x==null?``:y.getItem(x)?.textValue??``);(0,K.useEffect)(()=>{l&&(D.size>0||r)&&!A.isOpen&&C!==P&&n!==`manual`&&j(null,`input`),!s&&!r&&A.isOpen&&D.size===0&&N(),_!=null&&_!==I.current&&o===`single`&&N(),C!==P&&(b.setFocusedKey(null),c(!1),o===`single`&&C===``&&(e.inputValue===void 0||m===void 0)&&v(null)),_!==I.current&&(e.inputValue===void 0||m===void 0)?F():P!==C&&oe(C);let t=x==null?``:y.getItem(x)?.textValue??``;!l&&x!=null&&e.inputValue===void 0&&x===I.current&&L.current!==t&&(oe(t),w(t)),I.current=_,L.current=t});let se=Qe({...e,value:(0,K.useMemo)(()=>Array.isArray(_)&&_.length===0?null:{inputValue:C,value:_,selectedKey:x},[C,x,_])}),R=()=>{i&&x==null?ce():z()},ce=()=>{let e=o===`multiple`?tr:null;I.current=e,v(e),N()},z=(t=!1)=>{if(m!==void 0&&e.inputValue!==void 0){let n=x==null?``:y.getItem(x)?.textValue??``;(t||o===`multiple`||C!==n)&&(e.onSelectionChange?.(x),e.onChange?.(_)),oe(n),N()}else F(),N()},B=()=>{i?C===(x==null?``:y.getItem(x)?.textValue??``)?z():ce():z()},le=()=>{A.isOpen&&b.focusedKey!=null?b.isSelected(b.focusedKey)&&o===`single`?z(!0):b.select(b.focusedKey):B()},V=(0,K.useRef)([C,_]),H=t=>{t?(V.current=[C,_],n===`focus`&&!e.isReadOnly&&j(null,`focus`)):(a&&B(),(C!==V.current[0]||_!==V.current[1])&&se.commitValidation()),u(t)},ue=(0,K.useMemo)(()=>A.isOpen?s?E:D:ne,[A.isOpen,E,D,s,ne]),de=e.defaultSelectedKey??(o===`single`?T:null);return{...se,...A,focusStrategy:d,toggle:ie,open:j,close:B,selectionManager:b,value:_,defaultValue:p??T,setValue:v,selectedKey:x,selectedItems:S,defaultSelectedKey:de,setSelectedKey:v,disabledKeys:ee,isFocused:l,setFocused:H,selectedItem:S[0]??null,collection:ue,inputValue:C,defaultInputValue:ar(e.defaultInputValue,de,y)??te,setInputValue:w,commit:le,revert:R}}function rr(e,t,n){return new _e(ir(e,e,t,n))}function ir(e,t,n,r){let i=[];for(let a of t)if(a.type===`section`&&a.hasChildNodes){let t=ir(e,ye(a,e),n,r);[...t].some(e=>e.type===`item`)&&i.push({...a,childNodes:t})}else (a.type===`item`&&r(a.textValue,n)||a.type!==`item`)&&i.push({...a});return i}function ar(e,t,n){return e==null&&t!=null?n.getItem(t)?.textValue??``:e}function or(e){if(e!==void 0)return e===null?[]:Array.isArray(e)?e:[e]}var sr=(0,K.createContext)(null),cr=(0,K.createContext)(null),lr=(0,K.forwardRef)(function(e,t){[e,t]=M(e,t,sr);let{children:n,isDisabled:r=!1,isInvalid:i=!1,isRequired:a=!1,isReadOnly:o=!1}=e,s=(0,K.useMemo)(()=>K.createElement(pe.Provider,{value:{items:e.items??e.defaultItems}},typeof n==`function`?n({isOpen:!1,isDisabled:r,isInvalid:i,isRequired:a,defaultChildren:null,isReadOnly:o}):n),[n,r,i,a,o,e.items,e.defaultItems]);return K.createElement(we,{content:s},n=>K.createElement(dr,{props:e,collection:n,comboBoxRef:t}))}),ur=[ne,ie,mt,ot,Le];function dr({props:e,collection:t,comboBoxRef:n}){let{name:r,formValue:i=`key`,allowsCustomValue:a}=e;a&&(i=`text`);let{validationBehavior:o}=ae(st)||{},s=e.validationBehavior??o??`native`,{contains:c}=ht({sensitivity:`base`}),l=nr({...e,defaultFilter:e.defaultFilter||c,items:e.items,children:void 0,collection:t,validationBehavior:s}),u=(0,K.useRef)(null),d=(0,K.useRef)(null),f=(0,K.useRef)(null),p=(0,K.useRef)(null),[m,h]=te(!e[`aria-label`]&&!e[`aria-labelledby`]),{buttonProps:g,inputProps:_,listBoxProps:v,labelProps:y,descriptionProps:b,errorMessageProps:ee,valueProps:x,...S}=$n({...re(e),label:h,inputRef:d,buttonRef:u,listBoxRef:f,popoverRef:p,name:i===`text`?r:void 0,validationBehavior:s},l),[T,D]=(0,K.useState)(null);H({ref:d,onResize:(0,K.useCallback)(()=>{if(d.current){let e=u.current?.getBoundingClientRect(),t=d.current.getBoundingClientRect(),n=e?Math.min(e.left,t.left):t.left;D((e?Math.max(e.right,t.right):t.right)-n+`px`)}},[u,d,D])});let O=(0,K.useMemo)(()=>({isOpen:l.isOpen,isDisabled:e.isDisabled||!1,isInvalid:S.isInvalid||!1,isRequired:e.isRequired||!1,isReadOnly:e.isReadOnly||!1}),[l.isOpen,e.isDisabled,S.isInvalid,e.isRequired,e.isReadOnly]),k=I({...e,values:O,defaultClassName:`react-aria-ComboBox`}),A=w(e,{global:!0});delete A.id;let j=[];if(r&&i===`key`){let t=Array.isArray(l.value)?l.value:[l.value];t.length===0&&(t=[null]),j=t.map((t,n)=>K.createElement(`input`,{key:n,type:`hidden`,name:r,form:e.form,value:t??``}))}return K.createElement(C,{values:[[cr,l],[ne,{...y,ref:m}],[ie,{...g,ref:u,isPressed:l.isOpen}],[mt,{..._,ref:d}],[Pe,l],[He,{ref:p,triggerRef:d,scrollRef:f,placement:`bottom start`,isNonModal:!0,trigger:`ComboBox`,style:{"--trigger-width":T},clearContexts:ur}],[pe,{...v,ref:f}],[de,l],[Le,{slots:{description:b,errorMessage:ee}}],[ot,{isInvalid:S.isInvalid,isDisabled:e.isDisabled||!1}],[lt,S],[fr,x]]},K.createElement(E.div,{...A,...k,ref:n,slot:e.slot||void 0,"data-focused":l.isFocused||void 0,"data-open":l.isOpen||void 0,"data-disabled":e.isDisabled||void 0,"data-readonly":e.isReadOnly||void 0,"data-invalid":S.isInvalid||void 0,"data-required":e.isRequired||void 0},k.children,j))}var fr=(0,K.createContext)(null),q=t(),pr=({src:e=null,isSquare:t=!1,size:n=`md`,initials:r,alt:i=``,className:a,...o})=>(0,q.jsxs)(`span`,{"data-slot":`avatar`,...o,className:S(`inline-grid size-(--avatar-size) shrink-0 align-middle outline-1 outline-fg/(--ring-opacity) -outline-offset-1 [--avatar-radius:20%] [--ring-opacity:20%] *:col-start-1 *:row-start-1 *:size-(--avatar-size)`,n===`xs`&&`[--avatar-size:--spacing(5)]`,n===`sm`&&`[--avatar-size:--spacing(6)]`,n===`md`&&`[--avatar-size:--spacing(8)]`,n===`lg`&&`[--avatar-size:--spacing(10)]`,n===`xl`&&`[--avatar-size:--spacing(12)]`,n===`2xl`&&`[--avatar-size:--spacing(14)]`,n===`3xl`&&`[--avatar-size:--spacing(16)]`,n===`4xl`&&`[--avatar-size:--spacing(20)]`,n===`5xl`&&`[--avatar-size:--spacing(24)]`,n===`6xl`&&`[--avatar-size:--spacing(28)]`,n===`7xl`&&`[--avatar-size:--spacing(32)]`,n===`8xl`&&`[--avatar-size:--spacing(36)]`,n===`9xl`&&`[--avatar-size:--spacing(32)]`,t?`rounded-(--avatar-radius) *:rounded-(--avatar-radius)`:`rounded-full *:rounded-full`,a),children:[r&&(0,q.jsxs)(`svg`,{className:`size-full select-none fill-current p-[5%] font-md text-[48px] uppercase`,viewBox:`0 0 100 100`,"aria-hidden":i?void 0:`true`,children:[i&&(0,q.jsx)(`title`,{children:i}),(0,q.jsx)(`text`,{x:`50%`,y:`50%`,alignmentBaseline:`middle`,dominantBaseline:`middle`,textAnchor:`middle`,dy:`.125em`,children:r})]}),e&&(0,q.jsx)(`img`,{className:`size-full object-cover object-center`,src:e,alt:i})]}),mr=({className:e,...t})=>{let{contains:n}=ht({sensitivity:`base`});return(0,q.jsx)(lr,{"data-slot":`control`,defaultFilter:n,className:P(Tt({className:`group/combo-box min-w-0`}),e),...t})},hr=({className:e,prefix:t,...n})=>(0,q.jsxs)(it,{"data-slot":`control`,className:P(`flex w-full min-w-0 items-center gap-x-2 rounded-lg border border-input px-[calc(--spacing(3.5)-1px)] py-[calc(--spacing(2.5)-1px)] text-fg outline-hidden transition duration-200 enabled:hover:border-muted-fg/30`,`focus-within:border-ring/70 focus-within:ring-3 focus-within:ring-ring/20`,`invalid:border-danger-subtle-fg/70 invalid:enabled:hover:border-danger-subtle-fg/80 focus-within:invalid:border-danger-subtle-fg/70 focus-within:invalid:ring-danger-subtle-fg/20`,`disabled:bg-muted in-disabled:bg-muted forced-colors:in-disabled:text-[GrayText]`,`sm:px-[calc(--spacing(3)-1px)] sm:py-[calc(--spacing(1.5)-1px)] dark:scheme-dark`,`*:data-[slot=icon]:size-5 *:data-[slot=icon]:shrink-0 *:data-[slot=icon]:self-center *:data-[slot=icon]:text-muted-fg sm:*:data-[slot=icon]:size-4`,e),children:[t,(0,q.jsx)(rt,{className:`min-w-0 flex-1 appearance-none truncate bg-transparent text-base/6 text-fg outline-hidden placeholder:text-muted-fg sm:text-sm/6 [&::-ms-reveal]:hidden [&::-webkit-search-cancel-button]:hidden`,...n}),(0,q.jsx)(F,{"aria-label":`Show options`,className:k(`-mr-1 grid shrink-0 place-content-center self-center text-muted-fg outline-hidden hover:text-fg pressed:text-fg`,`size-6 sm:size-5`),children:(0,q.jsx)(c,{className:`size-4`,"aria-hidden":`true`})})]}),gr=({items:e,className:t,popover:n,...r})=>(0,q.jsx)(ze,{placement:n?.placement??`bottom`,className:P(`scroll-py-1 overflow-y-auto overscroll-contain`,n?.className),...n,children:(0,q.jsx)(ge,{layout:`stack`,orientation:`vertical`,className:P(`grid max-h-72 w-full grid-cols-[auto_1fr] flex-col gap-y-1 overflow-y-auto p-1 outline-hidden *:[[role='group']+[role=group]]:mt-4 *:[[role='group']+[role=separator]]:mt-1`,t),items:e,...r})}),_r=Ce,vr=Ne,yr=Ee,br=j({base:[`fixed z-50 grid gap-4 border-muted-fg/20 bg-overlay text-overlay-fg shadow-lg dark:border-border`,`transform-gpu transition ease-in-out will-change-transform`],variants:{isEntering:{true:`fade-in animate-in duration-500`},isExiting:{true:`fade-in animate-out duration-300`},side:{top:`entering:slide-in-from-top exiting:slide-out-to-top inset-x-0 top-0 rounded-b-2xl border-b`,bottom:`entering:slide-in-from-bottom exiting:slide-out-to-bottom inset-x-0 bottom-0 rounded-t-2xl border-t`,left:`entering:slide-in-from-left exiting:slide-out-to-left-80 inset-y-0 left-0 h-auto w-3/4 overflow-y-auto border-r sm:max-w-80`,right:`entering:slide-in-from-right exiting:slide-out-to-right-80 inset-y-0 right-0 h-auto w-3/4 overflow-y-auto border-l sm:max-w-80`},isFloat:{false:`border-fg/20 dark:border-border`,true:`ring-fg/5 dark:ring-border`}},compoundVariants:(e=>e.map(e=>({side:e,isFloat:!0,className:e===`top`?`top-2 inset-x-2 rounded-lg ring-1 border-b-0`:e===`bottom`?`bottom-2 inset-x-2 rounded-lg ring-1 border-t-0`:e===`left`?`left-2 inset-y-2 rounded-lg ring-1 border-r-0`:`right-2 inset-y-2 rounded-lg ring-1 border-l-0`})))([`top`,`bottom`,`left`,`right`])}),xr=({className:e,isBlurred:t=!1,isDismissable:n,side:r=`right`,role:i=`dialog`,closeButton:a=!0,isFloat:o=!0,overlay:s,children:c,...l})=>{let u=n??i!==`alertdialog`;return(0,q.jsx)(at,{isDismissable:u,className:({isExiting:e,isEntering:n})=>k(`fixed inset-0 z-50 h-(--page-height) w-screen overflow-hidden bg-black/15`,n&&`fade-in animate-in duration-500`,e&&`fade-out animate-out duration-300`,t&&`backdrop-blur-sm backdrop-filter`),...l,children:(0,q.jsx)(et,{className:A(e,(e,t)=>br({...t,side:r,isFloat:o,className:e})),children:(0,q.jsx)(je,{"aria-label":l[`aria-label`],role:i,children:e=>(0,q.jsxs)(q.Fragment,{children:[typeof c==`function`?c(e):c,a&&(0,q.jsx)(Ie,{className:`top-2.5 right-2.5`,isDismissable:u})]})})})})},Sr=`22rem`,Cr=`3.25rem`,wr=`sidebar_state`,Tr=3600*24*7,Er=(0,K.createContext)(null),J=()=>{let e=(0,K.use)(Er);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e},Dr=({defaultOpen:e=!0,isOpen:t,onOpenChange:n,className:r,style:i,children:a,shortcut:o=`b`,ref:s,...c})=>{let[l,u]=(0,K.useState)(!1),[d,f]=(0,K.useState)(e),p=t??d,m=(0,K.useCallback)(e=>{let t=typeof e==`function`?e(p):e;n?n(t):f(t),document.cookie=`${wr}=${t}; path=/; max-age=${Tr}`},[n,p]),{isMobile:h,device:g}=Et(),_=(0,K.useCallback)(()=>h?u(e=>!e):m(e=>!e),[h,m]);(0,K.useEffect)(()=>{let e=e=>{e.key===o&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),_())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[_,o]);let v=p?`expanded`:`collapsed`,y=(0,K.useMemo)(()=>({state:v,open:p,setOpen:m,isMobile:h??!1,isOpenOnMobile:l,setIsOpenOnMobile:u,toggleSidebar:_}),[v,p,m,h,l,_]);return g===null?null:(0,q.jsx)(Er,{value:y,children:(0,q.jsx)(`div`,{style:{"--sidebar-width":Sr,"--sidebar-width-dock":Cr,...i},className:S(`@container **:data-[slot=icon]:shrink-0`,`flex w-full text-sidebar-fg`,`group/sidebar-root peer/sidebar-root has-data-[intent=inset]:bg-sidebar dark:has-data-[intent=inset]:bg-bg`,r),ref:s,...c,children:a})})},Or=({children:e,closeButton:t=!0,collapsible:n=`hidden`,side:r=`left`,intent:i=`default`,className:a,...o})=>{let{isMobile:s,state:c,isOpenOnMobile:l,setIsOpenOnMobile:u}=J();return n===`none`?(0,q.jsx)(`div`,{"data-intent":i,"data-collapsible":`none`,"data-slot":`sidebar`,className:S(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-fg`,a),...o,children:e}):s?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`sr-only`,"aria-hidden":!0,"data-intent":i}),(0,q.jsx)(xr,{isOpen:l,onOpenChange:u,closeButton:t,"aria-label":`Sidebar`,"data-slot":`sidebar`,"data-intent":`default`,className:`w-(--sidebar-width) entering:blur-in exiting:blur-out [--sidebar-width:18rem] has-data-[slot=calendar]:[--sidebar-width:23rem]`,side:r,children:e})]}):(0,q.jsxs)(`div`,{"data-state":c,"data-collapsible":c===`collapsed`?n:``,"data-intent":i,"data-side":r,"data-slot":`sidebar`,className:`group peer hidden text-sidebar-fg md:block`,...o,children:[(0,q.jsx)(`div`,{"data-slot":`sidebar-gap`,"aria-hidden":`true`,className:S([`w-(--sidebar-width) group-data-[collapsible=hidden]:w-0`,`group-data-[side=right]:rotate-180`,`relative h-svh bg-transparent transition-[width] duration-200 ease-linear`,i===`default`&&`group-data-[collapsible=dock]:w-(--sidebar-width-dock)`,i===`float`&&`group-data-[collapsible=dock]:w-[calc(var(--sidebar-width-dock)+--spacing(4))]`,i===`inset`&&`group-data-[collapsible=dock]:w-[calc(var(--sidebar-width-dock)+--spacing(2))]`])}),(0,q.jsx)(`div`,{"data-slot":`sidebar-container`,className:S(`fixed inset-y-0 z-10 hidden w-(--sidebar-width) bg-sidebar`,`not-has-data-[slot=sidebar-footer]:pb-2`,`transition-[left,right,width] duration-200 ease-linear`,`md:flex`,r===`left`&&`left-0 group-data-[collapsible=hidden]:left-[calc(var(--sidebar-width)*-1)]`,r===`right`&&`right-0 group-data-[collapsible=hidden]:right-[calc(var(--sidebar-width)*-1)]`,i===`float`&&`bg-bg p-2 group-data-[collapsible=dock]:w-[calc(--spacing(4)+2px)]`,i===`inset`&&`bg-sidebar group-data-[collapsible=dock]:w-[calc(var(--sidebar-width-dock)+--spacing(2)+2px)] dark:bg-bg`,i===`default`&&[`group-data-[collapsible=dock]:w-(--sidebar-width-dock)`,`border-sidebar-border group-data-[side=left]:border-r group-data-[side=right]:border-l`],a),...o,children:(0,q.jsx)(`div`,{"data-sidebar":`default`,"data-slot":`sidebar-inner`,className:k(`flex h-full w-full flex-col text-sidebar-fg`,`group-data-[intent=inset]:bg-sidebar dark:group-data-[intent=inset]:bg-bg`,`group-data-[intent=float]:rounded-lg group-data-[intent=float]:border group-data-[intent=float]:border-sidebar-border group-data-[intent=float]:bg-sidebar group-data-[intent=float]:shadow-xs`),children:e})})]})},kr=({className:e,ref:t,...n})=>{let{state:r}=J();return(0,q.jsx)(`div`,{ref:t,"data-slot":`sidebar-header`,className:S(`flex flex-col gap-2 p-2.5 [.border-b]:border-sidebar-border`,`in-data-[intent=inset]:p-4`,r===`collapsed`?`items-center p-2.5`:`p-4`,e),...n})},Ar=({className:e,...t})=>(0,q.jsx)(`div`,{"data-slot":`sidebar-footer`,className:S([`mt-auto flex shrink-0 items-center justify-center p-4 **:data-[slot=chevron]:text-muted-fg`,`in-data-[intent=inset]:px-6 in-data-[intent=inset]:py-4`,e]),...t}),jr=({className:e,...t})=>{let{state:n}=J();return(0,q.jsx)(`div`,{"data-slot":`sidebar-content`,className:S(`flex min-h-0 flex-1 scroll-mb-96 flex-col overflow-auto *:data-[slot=sidebar-section]:border-l-0`,n===`collapsed`?`items-center`:`mask-b-from-95%`,e),...t,children:t.children})},Mr=({className:e,...t})=>{let{state:n,isMobile:r}=J();return(0,q.jsx)(`section`,{"data-slot":`sidebar-section-group`,className:S(`flex w-full min-w-0 flex-col gap-y-0.5`,n===`collapsed`&&!r&&`items-center justify-center`,e),...t})},Nr=({className:e,...t})=>{let{state:n}=J();return(0,q.jsxs)(`div`,{"data-slot":`sidebar-section`,className:S(`col-span-full flex min-w-0 flex-col gap-y-0.5 **:data-[slot=sidebar-section]:**:gap-y-0`,`in-data-[state=collapsed]:p-2 p-4`,e),...t,children:[n!==`collapsed`&&`label`in t&&(0,q.jsx)(V,{className:`group-data-[collapsible=dock]:-mt-8 mb-1 flex shrink-0 items-center rounded-md px-2 font-medium text-sidebar-fg/70 text-xs/6 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear *:data-[slot=icon]:size-4 *:data-[slot=icon]:shrink-0 group-data-[collapsible=dock]:opacity-0`,children:t.label}),(0,q.jsx)(`div`,{"data-slot":`sidebar-section-inner`,className:`grid grid-cols-[auto_1fr] gap-y-0.5 in-data-[state=collapsed]:gap-y-1.5`,children:t.children})]})},Pr=({isCurrent:e,tooltip:t,children:n,badge:r,className:i,ref:a,...o})=>{let{state:s,isMobile:c}=J(),l=s===`collapsed`&&!c,u=(0,q.jsx)(We,{ref:a,"data-slot":`sidebar-item`,"aria-current":e?`page`:void 0,className:A(i,(t,{isPressed:n,isFocusVisible:r,isHovered:i,isDisabled:a})=>S([`href`in o?`cursor-pointer`:`cursor-default`,`w-full min-w-0 items-center rounded-lg text-left font-medium text-base/6 text-sidebar-fg`,`group/sidebar-item relative col-span-full overflow-hidden focus-visible:outline-hidden`,`**:data-[slot=icon]:shrink-0 [&_[data-slot='icon']:not([class*='size-'])]:size-5 sm:[&_[data-slot='icon']:not([class*='size-'])]:size-4 [&_[data-slot='icon']:not([class*='text-'])]:text-muted-fg`,`**:last:data-[slot=icon]:size-5 sm:**:last:data-[slot=icon]:size-4`,`[&_[data-slot='icon']:not([class*='size-'])]:size-4 [&_[data-slot='icon']:not([class*='size-'])]:*:size-5`,`*:data-[slot=avatar]:*:size-5 *:data-[slot=avatar]:size-5`,`has-[[data-slot=avatar]]:has-[[data-slot=sidebar-label]]:gap-x-2 has-[[data-slot=icon]]:has-[[data-slot=sidebar-label]]:gap-x-2`,`grid grid-cols-[auto_1fr_1.5rem_0.5rem_auto] **:last:data-[slot=icon]:ml-auto supports-[grid-template-columns:subgrid]:grid-cols-subgrid sm:text-sm/5`,`p-2 has-[a]:p-0`,`[--sidebar-current-bg:var(--color-sidebar-primary)] [--sidebar-current-fg:var(--color-sidebar-primary-fg)]`,e&&`font-medium text-(--sidebar-current-fg) hover:bg-(--sidebar-current-bg) hover:text-(--sidebar-current-fg) [&_.text-muted-fg]:text-fg/80 [&_[data-slot='icon']:not([class*='text-'])]:text-(--sidebar-current-fg) hover:[&_[data-slot='icon']:not([class*='text-'])]:text-(--sidebar-current-fg)`,r&&`inset-ring inset-ring-sidebar-ring outline-hidden`,(n||i)&&`bg-sidebar-accent text-sidebar-accent-fg [&_[data-slot='icon']:not([class*='text-'])]:text-sidebar-accent-fg`,a&&`opacity-50`,t])),...o,children:e=>(0,q.jsxs)(q.Fragment,{children:[typeof n==`function`?n({...e,isCollapsed:l}):n,r&&(s===`collapsed`?(0,q.jsx)(`div`,{"aria-hidden":!0,className:`absolute top-1 right-1 size-1.5 rounded-full bg-primary`}):(0,q.jsx)(`span`,{"data-slot":`sidebar-badge`,className:`-translate-y-1/2 absolute inset-ring-1 inset-ring-sidebar-border inset-y-1/2 right-1.5 h-5.5 w-auto rounded-full bg-fg/5 px-2 text-[10px]/5.5 group-hover/sidebar-item:inset-ring-muted-fg/30 group-data-current:inset-ring-transparent`,children:r}))]})});return typeof t==`string`&&(t={children:t}),(0,q.jsxs)(Xe,{delay:0,children:[u,(0,q.jsx)(Ge,{className:`**:data-[slot=icon]:hidden **:data-[slot=sidebar-label-mask]:hidden`,inverse:!0,placement:`right`,arrow:!0,hidden:!l||c||!t,...t})]})},Fr=({className:e,ref:t,...n})=>(0,q.jsx)(We,{ref:t,className:P(`col-span-full min-w-0 shrink-0 items-center p-2 focus:outline-hidden`,`grid grid-cols-[auto_1fr_1.5rem_0.5rem_auto] supports-[grid-template-columns:subgrid]:grid-cols-subgrid`,e),...n}),Ir=({className:e,ref:t,...n})=>(0,q.jsx)(`main`,{"data-slot":`sidebar-inset`,ref:t,className:S(`relative flex w-full flex-1 flex-col bg-bg lg:min-w-0`,`group-has-data-[intent=inset]/sidebar-root:border group-has-data-[intent=inset]/sidebar-root:border-sidebar-border group-has-data-[intent=inset]/sidebar-root:bg-overlay`,`md:group-has-data-[intent=inset]/sidebar-root:m-2`,`md:group-has-data-[side=left]:group-has-data-[intent=inset]/sidebar-root:ml-0`,`md:group-has-data-[side=right]:group-has-data-[intent=inset]/sidebar-root:mr-0`,`md:group-has-data-[intent=inset]/sidebar-root:rounded-2xl`,`md:group-has-data-[intent=inset]/sidebar-root:peer-data-[state=collapsed]:ml-2`,e),...n}),Lr=({onPress:e,className:t,children:n,...r})=>{let{toggleSidebar:a}=J();return(0,q.jsx)(L,{"aria-label":r[`aria-label`]||`Toggle Sidebar`,"data-slot":`sidebar-trigger`,intent:r.intent||`plain`,size:r.size||`sq-sm`,className:P(`shrink-0`,t),onPress:t=>{e?.(t),a()},...r,children:n||(0,q.jsx)(i,{"data-slot":`icon`})})},Rr=({className:e,ref:t,...n})=>{let{toggleSidebar:r}=J();return n.children?n.children:(0,q.jsx)(`button`,{ref:t,"data-slot":`sidebar-rail`,"aria-label":`Toggle Sidebar`,title:`Toggle Sidebar`,tabIndex:-1,onClick:r,className:S(`-translate-x-1/2 group-data-[side=left]:-right-4 absolute inset-y-0 z-20 hidden w-4 outline-hidden transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-transparent group-data-[side=right]:left-0 sm:flex`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`group-data-[collapsible=hidden]:translate-x-0 group-data-[collapsible=hidden]:hover:bg-sidebar-accent group-data-[collapsible=hidden]:after:left-full`,`[[data-side=left][data-collapsible=hidden]_&]:-right-2 [[data-side=right][data-collapsible=hidden]_&]:-left-2`,e),...n})},zr=({className:e,ref:t,...n})=>{let{state:r,isMobile:i}=J();return r===`collapsed`&&!i?null:(0,q.jsx)(Me,{"data-slot":`sidebar-label`,tabIndex:-1,ref:t,slot:`label`,className:S(`col-start-2 overflow-hidden outline-hidden`,e),...n,children:n.children})},Br=({isSticky:e=!1,className:t,...n})=>(0,q.jsx)(`nav`,{"data-slot":`sidebar-nav`,className:S(`isolate flex items-center justify-between gap-x-2 px-(--container-padding,--spacing(4)) py-2.5 text-navbar-fg sm:justify-start sm:px-(--gutter,--spacing(4)) md:w-full`,e&&`static top-0 z-40 group-has-data-[intent=default]/sidebar-root:sticky`,t),...n}),Vr=({alwaysVisible:e=!1,className:t,...n})=>(0,q.jsx)(F,{className:P(!e&&`opacity-0 pressed:opacity-100 group-hover/sidebar-item:opacity-100 group-focus-visible/sidebar-item:opacity-100 group/sidebar-item:pressed:opacity-100`,`absolute right-0 flex h-full w-[calc(var(--sidebar-width)-90%)] items-center justify-end pr-2.5 outline-hidden`,`**:data-[slot=icon]:shrink-0 [&_[data-slot='icon']:not([class*='size-'])]:size-5 sm:[&_[data-slot='icon']:not([class*='size-'])]:size-4`,`pressed:text-fg text-muted-fg hover:text-fg`,t),...n});function Hr(e){let t=e.replace(/\\+/g,`/`).replace(/\/+$/g,``),n=t.match(/^\/Users\/[^/]+\/(.+)$/)??t.match(/^\/home\/[^/]+\/(.+)$/)??t.match(/^[A-Za-z]:\/Users\/[^/]+\/(.+)$/);return n?.[1]?n[1]:t.startsWith(`~/`)?t.slice(2):t.startsWith(`/`)?t.slice(1)||`/`:t||e}function Ur(){let e=z(),t=gt(e=>e.instance),n=gt(e=>e.setInstance),{data:r}=ft(),i=r?.instances??[],[a,o]=(0,K.useState)(t?.name??``);(0,K.useEffect)(()=>{o(t?.name??``)},[t?.id,t?.name]);let s=(0,K.useMemo)(()=>{let e=a.trim().toLowerCase();return!e||e===t?.name.toLowerCase()?i:i.filter(t=>`${t.name} ${t.directory} ${t.port}`.toLowerCase().includes(e))},[a,t?.name,i]);return(0,q.jsx)(`div`,{className:`col-span-full min-w-0 py-1 in-data-[state=collapsed]:hidden`,children:(0,q.jsxs)(mr,{"aria-label":`Switch instance`,selectedKey:t?.id??null,inputValue:a,onInputChange:o,onSelectionChange:t=>{if(t==null)return;let r=i.find(e=>e.id===String(t));r&&(n({id:r.id,name:r.name,port:r.port}),o(r.name),e({to:`/`}))},isDisabled:!r||i.length===0,children:[(0,q.jsx)(hr,{prefix:(0,q.jsx)(_,{"data-slot":`icon`,className:`size-4 text-muted-fg`,"aria-hidden":`true`}),placeholder:r?`Select instance`:`Loading instances...`,className:`h-8 rounded-md px-2.5 py-0`}),(0,q.jsx)(gr,{items:s,popover:{placement:`bottom start`,className:`w-(--trigger-width)`},children:e=>(0,q.jsxs)(_r,{id:e.id,textValue:e.name,children:[(0,q.jsx)(_,{"data-slot":`icon`,className:`size-4`}),(0,q.jsx)(vr,{className:`min-w-0 truncate`,children:e.name}),(0,q.jsxs)(yr,{className:`flex min-w-0 items-center gap-2 text-xs`,children:[(0,q.jsx)(`span`,{className:`truncate`,children:Hr(e.directory)}),(0,q.jsxs)(`span`,{className:`shrink-0 tabular-nums`,children:[`:`,e.port]})]})]})})]})})}function Wr(e,t=40){if(e.length<=t)return e;let n=Math.floor((t-3)/2);return`${e.slice(0,n)}...${e.slice(-n)}`}function Gr(e){let[t,i]=(0,K.useState)(!1),o=z(),s=gt(e=>e.instance),{data:d}=yt(),h=d?.hostname??`Loading...`,{data:g,mutate:_}=vt(),y=pt(),b=dt(),ee=g??[],{data:x}=_t(),S=(0,K.useMemo)(()=>{if(!x?.diff)return 0;try{return wt(x.diff).reduce((e,t)=>e+t.files.length,0)}catch{return 0}},[x?.diff]);async function C(){if(!t){i(!0);try{let e=await y();await _(),U.success(`Session created`),o({to:`/session/$id`,params:{id:e.id}})}catch(e){console.error(`Failed to create session:`,e),U.error(`Failed to create session`)}finally{i(!1)}}}let w=le({from:`/_app/session/$id`,shouldThrow:!1})?.params?.id;async function T(e){try{await b(e),await _(),U.success(`Session deleted`),w===e&&o({to:`/`})}catch(e){console.error(`Failed to delete session:`,e),U.error(`Failed to delete session`)}}return(0,q.jsxs)(Or,{...e,children:[(0,q.jsx)(kr,{children:(0,q.jsxs)(We,{href:`/`,className:`flex items-center gap-x-2`,children:[(0,q.jsx)(`img`,{src:`/logo.svg`,alt:`OpenCode Portal`,className:`size-6`}),(0,q.jsxs)(zr,{className:`font-medium`,children:[`OpenCode `,(0,q.jsx)(`span`,{className:`text-muted-fg`,children:`Portal`})]})]})}),(0,q.jsx)(jr,{children:(0,q.jsxs)(Mr,{children:[(0,q.jsx)(Nr,{children:(0,q.jsx)(Ur,{})}),(0,q.jsxs)(Nr,{children:[(0,q.jsxs)(Pr,{tooltip:`New Session`,onPress:C,className:`cursor-pointer gap-x-2`,children:[(0,q.jsx)(a,{className:`size-4 shrink-0`,"data-slot":`icon`}),(0,q.jsx)(zr,{children:t?`Creating...`:`New Session`})]}),(0,q.jsxs)(Pr,{tooltip:`View Git Diff`,href:`/diff`,className:`cursor-pointer gap-x-2`,badge:S>0?S:void 0,children:[(0,q.jsx)(p,{className:`size-4 shrink-0`,"data-slot":`icon`}),(0,q.jsx)(zr,{children:`Diff`})]})]}),(0,q.jsx)(Nr,{label:`Sessions`,children:ee.map(e=>(0,q.jsx)(Pr,{tooltip:e.title,children:({isCollapsed:t,isFocused:n})=>(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Fr,{href:`/session/${e.id}`,children:(0,q.jsx)(zr,{children:Wr(e.title)})}),(!t||n)&&(0,q.jsxs)(ut,{children:[(0,q.jsx)(Vr,{"aria-label":`Session options`,children:(0,q.jsx)(l,{})}),(0,q.jsx)(bt,{popover:{offset:0,placement:`right top`},children:(0,q.jsxs)(W,{intent:`danger`,onAction:()=>T(e.id),children:[(0,q.jsx)(v,{}),`Delete Session`]})})]})]})},e.id))})]})}),(0,q.jsx)(Ar,{className:`flex flex-row justify-between gap-4 group-data-[state=collapsed]:flex-col`,children:(0,q.jsxs)(ut,{children:[(0,q.jsxs)($e,{className:`flex w-full items-center justify-between`,"aria-label":`Profile`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-x-2`,children:[(0,q.jsx)(pr,{className:`size-8 *:size-8 group-data-[state=collapsed]:size-6 group-data-[state=collapsed]:*:size-6`,isSquare:!0,initials:h.slice(0,2).toUpperCase()}),(0,q.jsx)(`div`,{className:`in-data-[collapsible=dock]:hidden text-sm`,children:(0,q.jsx)(zr,{children:h})})]}),(0,q.jsx)(c,{"data-slot":`chevron`})]}),(0,q.jsxs)(bt,{className:`in-data-[sidebar-collapsible=collapsed]:min-w-56 min-w-(--trigger-width)`,placement:`bottom right`,children:[(0,q.jsx)(xt,{children:(0,q.jsxs)(St,{separator:!0,children:[(0,q.jsx)(`span`,{className:`block`,children:h}),s&&(0,q.jsx)(`span`,{className:`block text-muted-fg text-xs`,children:s.name})]})}),(0,q.jsxs)(W,{href:`#dashboard`,children:[(0,q.jsx)(u,{}),`Dashboard`]}),(0,q.jsxs)(W,{href:`/settings`,children:[(0,q.jsx)(f,{}),`Settings`]}),(0,q.jsxs)(W,{href:`#security`,children:[(0,q.jsx)(n,{}),`Security`]}),(0,q.jsx)(ct,{}),(0,q.jsxs)(W,{href:`https://openportal.space/contact`,children:[(0,q.jsx)(r,{}),`Customer Support`]}),(0,q.jsx)(ct,{}),(0,q.jsxs)(W,{href:`#logout`,children:[(0,q.jsx)(m,{}),`Log out`]})]})]})}),(0,q.jsx)(Rr,{})]})}var Kr=(0,K.createContext)({separator:`chevron`}),qr=({className:e,...t})=>(0,q.jsx)(Kr,{value:{separator:t.separator},children:(0,q.jsx)(mn,{...t,className:S(`flex items-center gap-2`,e)})}),Jr=({href:e,separator:t=!0,className:n,...r})=>{let{separator:i}=(0,K.use)(Kr);t=i??t;let a=t===!0?`chevron`:t;return(0,q.jsx)(hn,{className:P(`flex items-center gap-2 text-sm`,n),"data-slot":`breadcrumb-item`,...r,children:({isCurrent:n})=>(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(We,{href:e,...r}),!n&&t!==!1&&(0,q.jsx)(Yr,{separator:a})]})})},Yr=({separator:e=`chevron`})=>(0,q.jsxs)(`span`,{className:`*:shrink-0 *:text-muted-fg *:data-[slot=icon]:size-3.5`,children:[e===`chevron`&&(0,q.jsx)(h,{}),e===`slash`&&(0,q.jsx)(`span`,{className:`text-muted-fg`,children:`/`})]}),Xr=`Use gh CLI to create a pull request. Follow these steps:
|
|
2
|
+
|
|
3
|
+
1. First, check git status to see all changes
|
|
4
|
+
2. Stage all relevant changes with git add
|
|
5
|
+
3. Get the diff of staged changes
|
|
6
|
+
4. Generate a clear, descriptive commit message based on the changes
|
|
7
|
+
5. Commit the changes
|
|
8
|
+
6. Push to the remote branch (create branch if needed)
|
|
9
|
+
7. Create a PR using gh pr create with a descriptive title and body
|
|
10
|
+
8. After the PR is created, checkout to main branch
|
|
11
|
+
|
|
12
|
+
Make sure to:
|
|
13
|
+
- Write a meaningful commit message that explains WHY, not just WHAT
|
|
14
|
+
- The PR title should be concise but descriptive
|
|
15
|
+
- The PR body should summarize the changes and their purpose
|
|
16
|
+
- Always checkout to main after successfully creating the PR`,Zr=`Pull the latest changes from the remote repository. Follow these steps:
|
|
17
|
+
|
|
18
|
+
1. First, check git status to see if there are any uncommitted changes
|
|
19
|
+
2. If there are uncommitted changes, stash them with a descriptive message
|
|
20
|
+
3. Run git pull to fetch and merge the latest changes from the remote
|
|
21
|
+
4. If there were stashed changes, pop the stash and resolve any conflicts if needed
|
|
22
|
+
5. Show a summary of what was pulled (new commits, files changed)
|
|
23
|
+
|
|
24
|
+
Make sure to:
|
|
25
|
+
- Handle any merge conflicts gracefully
|
|
26
|
+
- Report what changes were pulled
|
|
27
|
+
- Restore any stashed changes after pulling`,Qr=`Push the current changes to the remote repository. Follow these steps:
|
|
28
|
+
|
|
29
|
+
1. First, check git status to see all uncommitted changes
|
|
30
|
+
2. If there are uncommitted changes:
|
|
31
|
+
- Stage all relevant changes with git add
|
|
32
|
+
- Generate a clear, descriptive commit message based on the changes
|
|
33
|
+
- Commit the changes
|
|
34
|
+
3. Check if the current branch has an upstream branch set
|
|
35
|
+
4. Push to the remote (set upstream if needed)
|
|
36
|
+
5. Show a summary of what was pushed
|
|
37
|
+
|
|
38
|
+
Make sure to:
|
|
39
|
+
- Write a meaningful commit message that explains WHY, not just WHAT
|
|
40
|
+
- Handle any push rejections (e.g., if remote has new commits, pull first)
|
|
41
|
+
- Report the result of the push operation`;function $r(){let e=gt(e=>e.instance),t=e?.port??0,{pageTitle:n}=Dt(),r=Ke(e=>e.selectedModel),{mutate:i}=vt(),[a,o]=(0,K.useState)(!1),[c,l]=(0,K.useState)(!1),[u,f]=(0,K.useState)(!1),p=le({from:`/_app/session/$id`,shouldThrow:!1})?.params?.id,m=async e=>{if(!p||!t){U.error(`Please open a session first`);return}if(!(await fetch(`/api/opencode/${t}/session/${p}/prompt`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({text:e,model:r.providerID&&r.modelID?r:void 0})})).ok)throw Error(`Failed to send request`);Je(t,p),i()},h=async()=>{o(!0);try{await m(Xr),U.success(`PR creation request sent`)}catch(e){console.error(`Failed to create PR:`,e),U.error(`Failed to send PR creation request`)}finally{o(!1)}},_=async()=>{l(!0);try{await m(Zr),U.success(`Pull request sent`)}catch(e){console.error(`Failed to pull:`,e),U.error(`Failed to send pull request`)}finally{l(!1)}},v=async()=>{f(!0);try{await m(Qr),U.success(`Push request sent`)}catch(e){console.error(`Failed to push:`,e),U.error(`Failed to send push request`)}finally{f(!1)}},y=a||c||u;return(0,q.jsxs)(Br,{isSticky:!0,children:[(0,q.jsxs)(`span`,{className:`flex items-center gap-x-4`,children:[(0,q.jsx)(Lr,{className:`-ml-2`}),(0,q.jsxs)(qr,{className:`hidden md:flex`,children:[(0,q.jsx)(Jr,{href:`/`,children:e?.name??`Instance`}),n&&(0,q.jsx)(Jr,{children:n})]})]}),(0,q.jsxs)(`span`,{className:`flex items-center gap-x-2 ml-auto`,children:[(0,q.jsxs)(L,{size:`xs`,intent:`outline`,className:`uppercase font-mono`,onPress:_,isDisabled:y||!p,children:[(0,q.jsx)(g,{size:`14px`}),c?`Pulling...`:`Pull`]}),(0,q.jsxs)(L,{size:`xs`,intent:`outline`,className:`uppercase font-mono`,onPress:v,isDisabled:y||!p,children:[(0,q.jsx)(d,{size:`14px`}),u?`Pushing...`:`Push`]}),(0,q.jsxs)(L,{size:`xs`,intent:`outline`,className:`uppercase font-mono`,onPress:h,isDisabled:y||!p,children:[(0,q.jsx)(s,{size:`14px`}),a?`Creating...`:`Create PR`]})]})]})}function ei(e){return`/api/opencode/${e}/sessions`}function ti(e){return`/api/opencode/${e}/permissions`}function ni(e){return`/api/opencode/${e}/questions`}function ri(e){return`/api/opencode/${e}/git/diff`}function ii(e){return`/api/opencode/${e}/project/current`}function ai(e){return`/api/opencode/${e}/session/status`}function oi(e,t){let n=[...e??[]],r=n.findIndex(e=>e.id===t.id);return r>=0?n[r]=t:n.push(t),n}function si(e,t){return(e??[]).filter(e=>e.id!==t)}function ci(e){return[...e].sort((e,t)=>(t.time.updated??t.time.created)-(e.time.updated??e.time.created))}function li(e,t){G(ei(e),e=>t(e??[]),{revalidate:!1})}function ui(e,t){G(ti(e),e=>t(e??[]),{revalidate:!1})}function di(e,t){G(ni(e),e=>t(e??[]),{revalidate:!1})}function fi(e,t){G(ai(e),e=>t(e??{}),{revalidate:!1})}function Y(e,t,n){G(qe(e,t),e=>n(e??[]),{revalidate:!1})}function pi(e,t){G(qe(e,t))}var mi=new Map;function hi(e,t){return`${e}:${t}`}function gi(e,t){let n=hi(e,t);if(mi.has(n))return;let r=setTimeout(()=>{mi.delete(n),pi(e,t)},300);mi.set(n,r)}function _i(e,t){let n=hi(e,t),r=mi.get(n);r&&(clearTimeout(r),mi.delete(n)),pi(e,t)}function X(e,t){let n=[...e],r=n.findIndex(e=>e.id===t.id);return r>=0?n[r]=t:n.push(t),Ye(n)}function vi(e,t,n){let r=[...e];return r[t]=n,r}function Z(e,t){for(let n=e.length-1;n>=0;--n)if(t(e[n]))return n;return-1}function yi(e){return Z(e,e=>e.type===`assistant`&&!e.time.completed)}function bi(e,t){return Z(e.content,e=>e.type===`tool`&&(t===void 0||e.id===t))}function xi(e){return Z(e.content,e=>e.type===`text`)}function Si(e,t){return Z(e.content,e=>e.type===`reasoning`&&e.id===t)}function Q(e,t){let n=yi(e);if(n<0)return e;let r=e[n];return r.type===`assistant`?vi(e,n,t(r)):e}function $(e,t,n){let r=bi(e,t);if(r<0)return e;let i=e.content[r];if(i.type!==`tool`)return e;let a=[...e.content];return a[r]=n(i),{...e,content:a}}function Ci(e,t){return Q(e,e=>({...e,time:{...e.time,completed:t}}))}function wi(e,t){return Q(e,e=>({...e,content:[...e.content,t]}))}function Ti(e,t){return e.filter(e=>!(e.type===`user`&&e.text===t&&e.metadata?.portalOptimistic===!0))}function Ei(e){G(ei(e)),G(ai(e)),G(ti(e)),G(ni(e)),G(t=>typeof t==`string`&&t.startsWith(`/api/opencode/${e}/session/`)&&t.endsWith(`/messages`))}function Di(e,t){switch(t.type){case`server.connected`:Ei(e);break;case`server.heartbeat`:case`portal.event.error`:break;case`session.created`:case`session.updated`:li(e,e=>ci(oi(e,t.properties.info)));break;case`session.deleted`:li(e,e=>si(e,t.properties.sessionID)),fi(e,e=>{let n={...e};return delete n[t.properties.sessionID],n});break;case`session.status`:fi(e,e=>({...e,[t.properties.sessionID]:t.properties.status}));break;case`session.idle`:fi(e,e=>({...e,[t.properties.sessionID]:{type:`idle`}})),_i(e,t.properties.sessionID);break;case`session.next.agent.switched`:Y(e,t.properties.sessionID,e=>X(e,{id:t.id,type:`agent-switched`,agent:t.properties.agent,time:{created:t.properties.timestamp}}));break;case`session.next.model.switched`:Y(e,t.properties.sessionID,e=>X(e,{id:t.id,type:`model-switched`,model:t.properties.model,time:{created:t.properties.timestamp}}));break;case`session.next.prompted`:Y(e,t.properties.sessionID,e=>X(Ti(e,t.properties.prompt.text),{id:t.id,type:`user`,text:t.properties.prompt.text,files:t.properties.prompt.files,agents:t.properties.prompt.agents,time:{created:t.properties.timestamp}}));break;case`session.next.synthetic`:Y(e,t.properties.sessionID,e=>X(e,{id:t.id,type:`synthetic`,sessionID:t.properties.sessionID,text:t.properties.text,time:{created:t.properties.timestamp}}));break;case`session.next.shell.started`:Y(e,t.properties.sessionID,e=>X(e,{id:t.id,type:`shell`,callID:t.properties.callID,command:t.properties.command,output:``,time:{created:t.properties.timestamp}}));break;case`session.next.shell.ended`:Y(e,t.properties.sessionID,e=>{let n=Z(e,e=>e.type===`shell`&&e.callID===t.properties.callID);if(n<0)return e;let r=e[n];return r.type===`shell`?vi(e,n,{...r,output:t.properties.output,time:{...r.time,completed:t.properties.timestamp}}):e});break;case`session.next.step.started`:Y(e,t.properties.sessionID,e=>X(Ci(e,t.properties.timestamp),{id:t.id,type:`assistant`,agent:t.properties.agent,model:t.properties.model,content:[],time:{created:t.properties.timestamp},...t.properties.snapshot?{snapshot:{start:t.properties.snapshot}}:{}}));break;case`session.next.step.ended`:Y(e,t.properties.sessionID,e=>Q(e,e=>({...e,finish:t.properties.finish,cost:t.properties.cost,tokens:t.properties.tokens,time:{...e.time,completed:t.properties.timestamp},...t.properties.snapshot?{snapshot:{...e.snapshot??{},end:t.properties.snapshot}}:{}})));break;case`session.next.step.failed`:Y(e,t.properties.sessionID,e=>Q(e,e=>({...e,finish:`error`,error:t.properties.error,time:{...e.time,completed:t.properties.timestamp}})));break;case`session.next.text.started`:Y(e,t.properties.sessionID,e=>wi(e,{type:`text`,text:``}));break;case`session.next.text.delta`:Y(e,t.properties.sessionID,e=>Q(e,e=>{let n=xi(e);if(n<0)return e;let r=e.content[n];if(r.type!==`text`)return e;let i=[...e.content];return i[n]={...r,text:`${r.text}${t.properties.delta}`},{...e,content:i}}));break;case`session.next.text.ended`:Y(e,t.properties.sessionID,e=>Q(e,e=>{let n=xi(e);if(n<0)return e;let r=e.content[n];if(r.type!==`text`)return e;let i=[...e.content];return i[n]={...r,text:t.properties.text},{...e,content:i}}));break;case`session.next.reasoning.started`:Y(e,t.properties.sessionID,e=>wi(e,{type:`reasoning`,id:t.properties.reasoningID,text:``}));break;case`session.next.reasoning.delta`:Y(e,t.properties.sessionID,e=>Q(e,e=>{let n=Si(e,t.properties.reasoningID);if(n<0)return e;let r=e.content[n];if(r.type!==`reasoning`)return e;let i=[...e.content];return i[n]={...r,text:`${r.text}${t.properties.delta}`},{...e,content:i}}));break;case`session.next.reasoning.ended`:Y(e,t.properties.sessionID,e=>Q(e,e=>{let n=Si(e,t.properties.reasoningID);if(n<0)return e;let r=e.content[n];if(r.type!==`reasoning`)return e;let i=[...e.content];return i[n]={...r,text:t.properties.text},{...e,content:i}}));break;case`session.next.tool.input.started`:Y(e,t.properties.sessionID,e=>wi(e,{type:`tool`,id:t.properties.callID,name:t.properties.name,time:{created:t.properties.timestamp},state:{status:`pending`,input:``}}));break;case`session.next.tool.input.delta`:Y(e,t.properties.sessionID,e=>Q(e,e=>$(e,t.properties.callID,e=>e.state.status===`pending`?{...e,state:{...e.state,input:`${e.state.input}${t.properties.delta}`}}:e)));break;case`session.next.tool.input.ended`:Y(e,t.properties.sessionID,e=>Q(e,e=>$(e,t.properties.callID,e=>e.state.status===`pending`?{...e,state:{...e.state,input:t.properties.text}}:e)));break;case`session.next.tool.called`:Y(e,t.properties.sessionID,e=>Q(e,e=>$(e,t.properties.callID,e=>({...e,name:t.properties.tool,provider:t.properties.provider,time:{...e.time,ran:t.properties.timestamp},state:{status:`running`,input:t.properties.input,structured:{},content:[]}}))));break;case`session.next.tool.progress`:Y(e,t.properties.sessionID,e=>Q(e,e=>$(e,t.properties.callID,e=>e.state.status===`running`?{...e,state:{...e.state,structured:t.properties.structured,content:[...t.properties.content]}}:e)));break;case`session.next.tool.success`:Y(e,t.properties.sessionID,e=>Q(e,e=>$(e,t.properties.callID,e=>{let n=e.state.status===`running`||e.state.status===`completed`?e.state.input:{};return{...e,provider:t.properties.provider,time:{...e.time,completed:t.properties.timestamp},state:{status:`completed`,input:n,structured:t.properties.structured,content:[...t.properties.content]}}})));break;case`session.next.tool.failed`:Y(e,t.properties.sessionID,e=>Q(e,e=>$(e,t.properties.callID,e=>{let n=e.state.status===`running`||e.state.status===`completed`?e.state.input:{},r=e.state.status===`running`||e.state.status===`completed`||e.state.status===`error`?e.state.structured:{},i=e.state.status===`running`||e.state.status===`completed`||e.state.status===`error`?e.state.content:[];return{...e,provider:t.properties.provider,time:{...e.time,completed:t.properties.timestamp},state:{status:`error`,input:n,structured:r,content:i,error:t.properties.error}}})));break;case`session.next.retried`:pi(e,t.properties.sessionID);break;case`session.next.compaction.started`:Y(e,t.properties.sessionID,e=>X(e,{id:t.id,type:`compaction`,reason:t.properties.reason,summary:``,time:{created:t.properties.timestamp}}));break;case`session.next.compaction.delta`:Y(e,t.properties.sessionID,e=>{let n=Z(e,e=>e.type===`compaction`);if(n<0)return e;let r=e[n];return r.type===`compaction`?vi(e,n,{...r,summary:`${r.summary}${t.properties.text}`}):e});break;case`session.next.compaction.ended`:Y(e,t.properties.sessionID,e=>{let n=Z(e,e=>e.type===`compaction`);if(n<0)return e;let r=e[n];return r.type===`compaction`?vi(e,n,{...r,summary:t.properties.text,...t.properties.include?{include:t.properties.include}:{}}):e});break;case`message.updated`:case`message.part.updated`:_i(e,t.properties.sessionID);break;case`message.part.delta`:gi(e,t.properties.sessionID);break;case`message.removed`:case`message.part.removed`:_i(e,t.properties.sessionID);break;case`session.compacted`:pi(e,t.properties.sessionID);break;case`session.error`:t.properties.sessionID&&(_i(e,t.properties.sessionID),G(ai(e)));break;case`permission.asked`:ui(e,e=>oi(e,t.properties));break;case`permission.replied`:ui(e,e=>si(e,t.properties.requestID));break;case`question.asked`:di(e,e=>oi(e,t.properties));break;case`question.replied`:case`question.rejected`:di(e,e=>si(e,t.properties.requestID));break;case`session.diff`:case`vcs.branch.updated`:G(ri(e));break;case`project.updated`:G(ii(e));break}}function Oi(e){try{return JSON.parse(e)}catch{return null}}function ki(e){let t=(0,K.useRef)([]),n=(0,K.useRef)(null);(0,K.useEffect)(()=>{if(!e)return;let r=()=>{n.current=null;let r=t.current;t.current=[];for(let t of r)Di(e,t)},i=e=>{t.current.push(e),n.current===null&&(n.current=window.setTimeout(r,16))},a=new EventSource(`/api/opencode/${e}/events`);return a.onmessage=e=>{let t=Oi(e.data);t&&i(t)},()=>{a.close(),n.current!==null&&(window.clearTimeout(n.current),n.current=null),t.current=[]}},[e])}function Ai(){let e=gt(e=>e.instance);return ki(e?.port),e?(0,q.jsx)(Ot,{children:(0,q.jsxs)(Dr,{className:`h-dvh overflow-hidden`,children:[(0,q.jsx)(Gr,{intent:`inset`,collapsible:`dock`}),(0,q.jsxs)(Ir,{className:`overflow-hidden`,children:[(0,q.jsx)($r,{}),(0,q.jsx)(`div`,{className:`flex-1 overflow-auto p-4`,children:(0,q.jsx)(tt,{})})]})]})}):(0,q.jsx)(B,{to:`/instances`})}export{Ai as component};
|