cli-jaw 2.17.17 → 2.17.18
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/bin/commands/skill.js +10 -11
- package/dist/bin/commands/skill.js.map +1 -1
- package/dist/bin/commands/status.js +40 -6
- package/dist/bin/commands/status.js.map +1 -1
- package/dist/lib/mcp/skills-reset.js +8 -7
- package/dist/lib/mcp/skills-reset.js.map +1 -1
- package/dist/lib/mcp/skills-utils.js +44 -0
- package/dist/lib/mcp/skills-utils.js.map +1 -1
- package/dist/scripts/check-deps-audit.js +89 -0
- package/dist/scripts/check-deps-audit.js.map +1 -0
- package/dist/src/discord/send-only-client.js +2 -1
- package/dist/src/discord/send-only-client.js.map +1 -1
- package/dist/src/manager/memory/federation.js +5 -0
- package/dist/src/manager/memory/federation.js.map +1 -1
- package/dist/src/manager/memory/instance-discovery.js +27 -4
- package/dist/src/manager/memory/instance-discovery.js.map +1 -1
- package/dist/src/manager/server.js +1 -0
- package/dist/src/manager/server.js.map +1 -1
- package/dist/src/prompt/builder.js +8 -7
- package/dist/src/prompt/builder.js.map +1 -1
- package/dist/src/prompt/templates/a1-system.md +5 -1
- package/dist/src/prompt/templates/skills.md +6 -0
- package/dist/src/slack/api.js +7 -0
- package/dist/src/slack/api.js.map +1 -1
- package/dist/src/slack/slack-file.js +8 -0
- package/dist/src/slack/slack-file.js.map +1 -1
- package/dist/src/telegram/bot.js +32 -3
- package/dist/src/telegram/bot.js.map +1 -1
- package/dist/src/telegram/rich-message.js +40 -12
- package/dist/src/telegram/rich-message.js.map +1 -1
- package/package.json +4 -3
- package/public/dist/assets/{AdvancedExport-IOkupLFE.js → AdvancedExport-tXydxVAh.js} +1 -1
- package/public/dist/assets/{Agent-CVt8RCVj.js → Agent-BjxJRsKG.js} +1 -1
- package/public/dist/assets/{Browser-J4TPo4bX.js → Browser-Dm5J1gXP.js} +1 -1
- package/public/dist/assets/{ChannelEnablementControl-Da_t_jq6.js → ChannelEnablementControl-B9KiYDZZ.js} +1 -1
- package/public/dist/assets/{ChannelsDiscord-kNjCCJcA.js → ChannelsDiscord-D6jmfyHe.js} +1 -1
- package/public/dist/assets/{ChannelsSlack-U0_Sfkz0.js → ChannelsSlack-BcykASIN.js} +1 -1
- package/public/dist/assets/{ChannelsTelegram-DBIFDz4R.js → ChannelsTelegram-XkNtVi8o.js} +1 -1
- package/public/dist/assets/{CodeCanvas-CaeLVtZi.js → CodeCanvas-D-JH2Ikl.js} +2 -2
- package/public/dist/assets/{DashboardMeta-Dsj8kEuW.js → DashboardMeta-D6nJsY8n.js} +1 -1
- package/public/dist/assets/{Display-nkXitDjD.js → Display-B25HqCMH.js} +1 -1
- package/public/dist/assets/{DocPanel-ogNttSee.js → DocPanel-qiqo6365.js} +1 -1
- package/public/dist/assets/{Employees-CU_1YnrA.js → Employees-CR41RcWo.js} +1 -1
- package/public/dist/assets/{Heartbeat-BeGhWW4a.js → Heartbeat-B8c_YvS7.js} +1 -1
- package/public/dist/assets/{MarkdownRenderer-Cd3kkg_s.js → MarkdownRenderer-DZ-hWmCB.js} +3 -3
- package/public/dist/assets/MarkdownRenderer-uwE0Wam5.js +1 -0
- package/public/dist/assets/{Mcp-2HD1qR7F.js → Mcp-DSIEQZfH.js} +1 -1
- package/public/dist/assets/{Memory-I30i-svi.js → Memory-BY88ur_h.js} +1 -1
- package/public/dist/assets/{MilkdownWysiwygEditor-BkEzO5cz.js → MilkdownWysiwygEditor-DanGAZL5.js} +1 -1
- package/public/dist/assets/{ModelProvider-B96RCkFb.js → ModelProvider-mtAtYLmW.js} +1 -1
- package/public/dist/assets/{Network-DfzqHi9q.js → Network-ByNu-VCZ.js} +1 -1
- package/public/dist/assets/{NotesGraphWorkspace-BRIiraP9.js → NotesGraphWorkspace-Be6ctzYE.js} +1 -1
- package/public/dist/assets/Permissions-B-74b-nO.js +1 -0
- package/public/dist/assets/{Permissions-RgyF1O6q.js → Permissions-x_6_kLC1.js} +1 -1
- package/public/dist/assets/{Profile-DXKtAzfg.js → Profile-Bf9-QN2Y.js} +1 -1
- package/public/dist/assets/{Prompts-C7njPWCu.js → Prompts-DGDw56NQ.js} +1 -1
- package/public/dist/assets/{SpeechKeys-B7SDWzo9.js → SpeechKeys-CIq4c1iz.js} +1 -1
- package/public/dist/assets/{TelegramHub-C61X3f-H.js → TelegramHub-BrCeAZEf.js} +1 -1
- package/public/dist/assets/abnfDiagram-VCTEODGH-DOF68zXc.js +1 -0
- package/public/dist/assets/{app-wKiMVlyi.js → app-DhDdCs_s.js} +5 -5
- package/public/dist/assets/architecture-7GRP2DOG-DxLizWvy.js +1 -0
- package/public/dist/assets/architectureDiagram-5GKGNRK7-BpxFEoT5.js +36 -0
- package/public/dist/assets/{bgtask-badge-BM93vlbj.js → bgtask-badge-CT6s6rND.js} +1 -1
- package/public/dist/assets/bgtask-badge-CidVvjWb.js +1 -0
- package/public/dist/assets/blockDiagram-OSKFZWR5-CRNzDJwU.js +129 -0
- package/public/dist/assets/c4Diagram-7LVT6UL2-Bg0DdRYW.js +38 -0
- package/public/dist/assets/channel-BjgXjYj8.js +1 -0
- package/public/dist/assets/chunk-2Q5K7J3B-BClkI2P5.js +1 -0
- package/public/dist/assets/chunk-2ZTRR5NV-DF9qGbFc.js +2 -0
- package/public/dist/assets/chunk-3NF5O7KM-DXOprKA_.js +168 -0
- package/public/dist/assets/chunk-3Z5EZCMW-D-umBnbE.js +1 -0
- package/public/dist/assets/chunk-4HAMMTFA-BzeIXjef.js +62 -0
- package/public/dist/assets/chunk-5V3GS4D5-DB7RMaO_.js +1 -0
- package/public/dist/assets/{chunk-FMBD7UC4-BEz4FhFn.js → chunk-5VM5RSS4-CEUkek2W.js} +1 -1
- package/public/dist/assets/chunk-6AZGARVD-qPN7cVYY.js +1 -0
- package/public/dist/assets/{chunk-N66VUXT2-DJVNyglo.js → chunk-6EIED4P4-Bt6lS0r9.js} +1 -1
- package/public/dist/assets/chunk-6K3QC6MW-BC_6hNGf.js +1 -0
- package/public/dist/assets/chunk-6TQVIW2G-NQr1OdRE.js +1 -0
- package/public/dist/assets/chunk-747NJXEK-CukETSeX.js +2 -0
- package/public/dist/assets/chunk-75Z2AOVW-BLiFJXcr.js +2 -0
- package/public/dist/assets/chunk-CLGD4ZFX-B5zkZ8n6.js +1 -0
- package/public/dist/assets/chunk-DU6HZSFF-CqT8wcBs.js +126 -0
- package/public/dist/assets/{chunk-ND2GUHAM-1k8TCCsJ.js → chunk-F27PBJKO-Ccrogyxp.js} +1 -1
- package/public/dist/assets/chunk-FOHPRMQF--f9XSh-3.js +161 -0
- package/public/dist/assets/chunk-GMAD6QVW-BJLz4nC-.js +13 -0
- package/public/dist/assets/chunk-GVQU2GXP-BlVn1fMW.js +1 -0
- package/public/dist/assets/chunk-H2I77ZZE-BXf4_vA2.js +1 -0
- package/public/dist/assets/{chunk-727SXJPM-CUOujQg0.js → chunk-HLEWEB6X-BKWwzzZJ.js} +2 -2
- package/public/dist/assets/chunk-I5DQTOEV-B46sdKHC.js +1 -0
- package/public/dist/assets/chunk-ICYGCRZG-CSu4gXtC.js +1 -0
- package/public/dist/assets/chunk-IH6LHLGP-B2m3mWfU.js +1 -0
- package/public/dist/assets/{chunk-4BX2VUAB-DU36Vmpr.js → chunk-JWPE2WC7-D-FE5omP.js} +1 -1
- package/public/dist/assets/chunk-KI3K4JFJ-Bfn6wbch.js +1 -0
- package/public/dist/assets/chunk-L3NEJ4N5-FGXu31jw.js +1 -0
- package/public/dist/assets/chunk-LNGE3PJU-Dyjtq0ks.js +34 -0
- package/public/dist/assets/chunk-LQGUR6SS-qUTD5FMI.js +2 -0
- package/public/dist/assets/chunk-OSK3NFVY-CrXjNywV.js +10 -0
- package/public/dist/assets/chunk-OUJLGHUK-DkWSHliq.js +2 -0
- package/public/dist/assets/chunk-P2QGCYS3-B-9ymCdr.js +1 -0
- package/public/dist/assets/chunk-POPQ4Y6H-Df0_Odad.js +1 -0
- package/public/dist/assets/chunk-PWAF6VOD-B1cuaLs-.js +1 -0
- package/public/dist/assets/chunk-SVP7TREG-DCh4QTp-.js +88 -0
- package/public/dist/assets/chunk-UY3FDG6J--uyeDRt4.js +1 -0
- package/public/dist/assets/chunk-X3CZISLH-C1s9nTVF.js +1 -0
- package/public/dist/assets/chunk-XHIXRSVI-CQtpMKYq.js +1 -0
- package/public/dist/assets/chunk-XXDRQBXY-DEwmqeYc.js +1 -0
- package/public/dist/assets/chunk-Y2CYZVJY-DlLjK0OJ.js +1 -0
- package/public/dist/assets/chunk-ZLD2IHE6-DOKyEMMC.js +231 -0
- package/public/dist/assets/classDiagram-CYGNFDIV-hbaxbeYd.js +1 -0
- package/public/dist/assets/classDiagram-v2-TLXNO2FR-_OfX3b6Y.js +1 -0
- package/public/dist/assets/cose-bilkent-JH36ORCC-HnUYAhwC.js +1 -0
- package/public/dist/assets/cynefin-OW5HDTMX-VXYSLvft.js +1 -0
- package/public/dist/assets/cynefinDiagram-5FMLGOSQ-D0dmg5fA.js +62 -0
- package/public/dist/assets/cytoscape.esm-CS3SmpXd.js +321 -0
- package/public/dist/assets/dagre-DDTOgfwg.js +1 -0
- package/public/dist/assets/dagre-OS7QT2EB-c-JkA4ju.js +4 -0
- package/public/dist/assets/diagram-S7CK7UJ4-CgObZnGW.js +30 -0
- package/public/dist/assets/diagram-UQ7AKVKN-DTiko3yH.js +41 -0
- package/public/dist/assets/{diagram-KO2AKTUF-uRuKS97A.js → diagram-VSXAHHWV-BtwoQsOH.js} +2 -2
- package/public/dist/assets/diagram-VX7I27RA-BvFpphqo.js +24 -0
- package/public/dist/assets/diagram-Z3DM3KII-Zq8iJClC.js +24 -0
- package/public/dist/assets/ebnfDiagram-PWID7BFC-_fcO3z5G.js +1 -0
- package/public/dist/assets/{employees-C0CQgpI9.js → employees-DCju7V1x.js} +1 -1
- package/public/dist/assets/erDiagram-2YWLMYGG-YIq0Go-p.js +99 -0
- package/public/dist/assets/eventmodeling-NTZA5JFV-Csqcv5T_.js +1 -0
- package/public/dist/assets/flowDiagram-T62WH6J4-Del9dfOW.js +1 -0
- package/public/dist/assets/ganttDiagram-EL5Y4UJY-CezfIvti.js +292 -0
- package/public/dist/assets/gitGraph-4MIJSDKK-D_1mlgPm.js +1 -0
- package/public/dist/assets/gitGraphDiagram-WWUBYQGX-Bg3OM_0S.js +106 -0
- package/public/dist/assets/{graphlib-B06FTUqA.js → graphlib-Cjg_soTo.js} +1 -1
- package/public/dist/assets/{iframe-renderer-CgCPbWs-.js → iframe-renderer-LZp7Nqm1.js} +3 -3
- package/public/dist/assets/iframe-renderer-aFXUtTXX.js +1 -0
- package/public/dist/assets/info-A6RAGUB7-ce7F80NR.js +1 -0
- package/public/dist/assets/infoDiagram-FKFFQAWI-Dbi9pIPw.js +2 -0
- package/public/dist/assets/{ishikawaDiagram-YF4QCWOH-fyJrRZTW.js → ishikawaDiagram-5VMMS53U-C1FUP-sO.js} +1 -1
- package/public/dist/assets/{journeyDiagram-JHISSGLW-Dd6CvR-c.js → journeyDiagram-EYS64GPL-CaEEa3uT.js} +1 -1
- package/public/dist/assets/{kanban-definition-UN3LZRKU-C2ZH4LXA.js → kanban-definition-UXKFOSKX-DQjqFxtj.js} +2 -2
- package/public/dist/assets/katex-BoGadFcG.js +1 -0
- package/public/dist/assets/{manager-C_EnQ0Fc.js → manager-BEvw_3H1.js} +5 -5
- package/public/dist/assets/memory-BcZdf_oz.js +1 -0
- package/public/dist/assets/{memory-8-eJn9cp.js → memory-V5caYbpS.js} +1 -1
- package/public/dist/assets/mermaid-loader-BcReSszT.js +1 -0
- package/public/dist/assets/mermaid-parser.core-CBiGpWk6.js +3 -0
- package/public/dist/assets/{mermaid-preprocess-0hqEN7sn.js → mermaid-preprocess-4oGDpf1X.js} +1 -1
- package/public/dist/assets/mermaid.core-BJIXJ0Ir.js +11 -0
- package/public/dist/assets/mermaid.core-J6tiqiVK.js +1 -0
- package/public/dist/assets/{message-history-BEy8JQHJ.js → message-history-Bp_sUDSx.js} +1 -1
- package/public/dist/assets/message-history-DrEPUdTy.js +1 -0
- package/public/dist/assets/{mindmap-definition-RKZ34NQL-DUQBUbUA.js → mindmap-definition-THT77NOG-CXOyjall.js} +1 -1
- package/public/dist/assets/packet-AYTQ26CC-86oNpyWh.js +1 -0
- package/public/dist/assets/pegDiagram-XKGWAZYB-DVD3P7WU.js +1 -0
- package/public/dist/assets/pie-WAS4IAKB-CMzmzfvT.js +1 -0
- package/public/dist/assets/pieDiagram-E7YTZNPT-DEH6UJP4.js +39 -0
- package/public/dist/assets/{quadrantDiagram-W4KKPZXB-lbpz07e4.js → quadrantDiagram-AXDQQJYC-CAbCNOON.js} +3 -3
- package/public/dist/assets/radar-RG4KPBEZ-CsDBxCx4.js +1 -0
- package/public/dist/assets/railroad-74A4TZTK-B6s85Oul.js +1 -0
- package/public/dist/assets/railroad-abnf-HS5TGJTU-jnABoAnr.js +1 -0
- package/public/dist/assets/railroad-ebnf-LZEXJU2U-C_VWXbk9.js +1 -0
- package/public/dist/assets/railroad-peg-WCYAUIDC-y3jeoP_s.js +1 -0
- package/public/dist/assets/railroadDiagram-O6MQD6OU-CEs81LrU.js +1 -0
- package/public/dist/assets/{render-B-8i-Rxq.js → render-Cd4frZ2U.js} +3 -3
- package/public/dist/assets/{requirementDiagram-4Y6WPE33-CrApoE_l.js → requirementDiagram-IS5BZ75X-DsPApdKv.js} +3 -3
- package/public/dist/assets/{sankeyDiagram-5OEKKPKP-Df1lU-mT.js → sankeyDiagram-P5KCCOFB-Im52Eou9.js} +3 -3
- package/public/dist/assets/{sequenceDiagram-3UESZ5HK-CelQN5jY.js → sequenceDiagram-WJ2MYXX4-BChOR6yh.js} +3 -3
- package/public/dist/assets/{settings-dDNt6x3f.js → settings-a0blK1fr.js} +1 -1
- package/public/dist/assets/{settings-core-DQCWldQD.js → settings-core-C5qo8giT.js} +1 -1
- package/public/dist/assets/settings-core-Cm-CmVLA.js +1 -0
- package/public/dist/assets/settings-mbGEtP5B.js +1 -0
- package/public/dist/assets/{sidebar-BDAnwLnk.js → sidebar-FbI4udzs.js} +4 -4
- package/public/dist/assets/sizeCapture-INFHLROL-D9Rpk-aA.js +1 -0
- package/public/dist/assets/{skills-BNbUv5Ty.js → skills-DeG9lWF2.js} +1 -1
- package/public/dist/assets/skills-G8KUeHBV.js +1 -0
- package/public/dist/assets/slash-commands-BYv3yboz.js +1 -0
- package/public/dist/assets/{slash-commands-BP2nZDmp.js → slash-commands-FoQuZXga.js} +1 -1
- package/public/dist/assets/stateDiagram-XQSTLZYL-B5CxGVqv.js +1 -0
- package/public/dist/assets/stateDiagram-v2-IH3M54BS-BmdRqxzy.js +1 -0
- package/public/dist/assets/swimlanes-V6O3JKXN-Ckem4dQh.js +1 -0
- package/public/dist/assets/swimlanesDiagram-JKAHXJPX-DW_0PiOk.js +8 -0
- package/public/dist/assets/{timeline-definition-PNZ67QCA-DP0lPzQ_.js → timeline-definition-24CTP7MA-CJRsjFnd.js} +2 -2
- package/public/dist/assets/{trace-drawer-CT83NUo4.js → trace-drawer-CWs8ydMO.js} +1 -1
- package/public/dist/assets/treeView-Q6P3EWNA-ChnMvz2a.js +1 -0
- package/public/dist/assets/treemap-WGGIJYW6-DZJ4jE42.js +1 -0
- package/public/dist/assets/{ui-NdMDA7kW.js → ui-Cd8etFwN.js} +2 -2
- package/public/dist/assets/ui-yrn3s72A.js +1 -0
- package/public/dist/assets/vendor-render-BpGO1zp3.js +383 -0
- package/public/dist/assets/vendor-render-kIxHrxDV.css +1 -0
- package/public/dist/assets/{vendor-utils-BK07iQND.js → vendor-utils-BUFU5ypz.js} +1 -1
- package/public/dist/assets/vennDiagram-4TSXK5OY-fVndHq7T.js +34 -0
- package/public/dist/assets/wardley-WFR3VGLG-CGM_JiX0.js +1 -0
- package/public/dist/assets/{wardleyDiagram-YWT4CUSO-CapVnCz5.js → wardleyDiagram-VM6X3IG4-CXIfS7ZF.js} +2 -2
- package/public/dist/assets/{wiki-link-resolver-N9fDy5zP.js → wiki-link-resolver-BGpGBLMp.js} +1 -1
- package/public/dist/assets/xychartDiagram-S5SC5T6Z-CqC-Uvuc.js +7 -0
- package/public/dist/index.html +2 -2
- package/public/dist/manager/index.html +2 -2
- package/scripts/audit-allowlist.json +81 -0
- package/scripts/check-deps-audit.ts +97 -0
- package/public/dist/assets/MarkdownRenderer-B6HbiZ6i.js +0 -1
- package/public/dist/assets/Permissions-ByUy_5DT.js +0 -1
- package/public/dist/assets/architecture-7EHR7CIX-Byg-B8Sh.js +0 -1
- package/public/dist/assets/architectureDiagram-3BPJPVTR-DA7niVYs.js +0 -36
- package/public/dist/assets/bgtask-badge-BjVnOXkr.js +0 -1
- package/public/dist/assets/blockDiagram-GPEHLZMM-czRsW1WP.js +0 -132
- package/public/dist/assets/c4Diagram-AAUBKEIU-zoRyRo1y.js +0 -10
- package/public/dist/assets/channel-Cr7Dmg2t.js +0 -1
- package/public/dist/assets/chunk-2J33WTMH-DMaZjiDe.js +0 -1
- package/public/dist/assets/chunk-3OPIFGDE-fm0Uteda.js +0 -62
- package/public/dist/assets/chunk-4EGX6M5U-CYPeQu4F.js +0 -1
- package/public/dist/assets/chunk-55IACEB6-Dkm6BnqN.js +0 -1
- package/public/dist/assets/chunk-5DO6E6H7-CIcLA1n6.js +0 -1
- package/public/dist/assets/chunk-5ZQYHXKU-NjOvV6Nd.js +0 -2
- package/public/dist/assets/chunk-AGHRB4JF-Cdp9MZGh.js +0 -1
- package/public/dist/assets/chunk-AQP2D5EJ-2nFXTQ0W.js +0 -231
- package/public/dist/assets/chunk-BR22UD5L-BoyFFQuR.js +0 -1
- package/public/dist/assets/chunk-BSJP7CBP-B1MMwNrU.js +0 -1
- package/public/dist/assets/chunk-CSCIHK7Q-C0MOgWVt.js +0 -123
- package/public/dist/assets/chunk-FHYWG6QK-CmUWtJPn.js +0 -1
- package/public/dist/assets/chunk-KSCS5N6A-B2XGqWQY.js +0 -10
- package/public/dist/assets/chunk-L5ZTLDWV-CfZ2hrJ2.js +0 -1
- package/public/dist/assets/chunk-LZXEDZCA-BXuFCBsZ.js +0 -2
- package/public/dist/assets/chunk-MPE355IW-BdSiU-oV.js +0 -1
- package/public/dist/assets/chunk-MZUSXYTE-VYfI8Uwx.js +0 -1
- package/public/dist/assets/chunk-NNHCCRGN-ChI2WAS0.js +0 -159
- package/public/dist/assets/chunk-NZK2D7GU-CkYWftT8.js +0 -1
- package/public/dist/assets/chunk-O5CBEL6O-B5g0NbhD.js +0 -11
- package/public/dist/assets/chunk-PUPMXCY4-DJKmByz8.js +0 -1
- package/public/dist/assets/chunk-QZHKN3VN-C6ktI6EQ.js +0 -1
- package/public/dist/assets/chunk-UIBZB4QT-DgLbPJ3_.js +0 -1
- package/public/dist/assets/chunk-WCWK7LTN-DWxi0w0a.js +0 -1
- package/public/dist/assets/chunk-WU5MYG2G-Cwe6QZ3_.js +0 -1
- package/public/dist/assets/chunk-XPW4576I-CaTDAC52.js +0 -32
- package/public/dist/assets/classDiagram-4FO5ZUOK-BzLBk9sv.js +0 -1
- package/public/dist/assets/classDiagram-v2-Q7XG4LA2-9K8wUz3g.js +0 -1
- package/public/dist/assets/cose-bilkent-S5V4N54A-B9Tcz6qW.js +0 -1
- package/public/dist/assets/cytoscape.esm-PBXWcYR1.js +0 -321
- package/public/dist/assets/dagre-BM42HDAG-OH37BMnf.js +0 -4
- package/public/dist/assets/dagre-BsKKQnyU.js +0 -1
- package/public/dist/assets/diagram-2AECGRRQ-B1t73Wn1.js +0 -43
- package/public/dist/assets/diagram-5GNKFQAL-DBGIcSxH.js +0 -10
- package/public/dist/assets/diagram-LMA3HP47-XMEHnr3B.js +0 -24
- package/public/dist/assets/diagram-OG6HWLK6-B_vRUJSJ.js +0 -24
- package/public/dist/assets/erDiagram-TEJ5UH35-CTHxg4ER.js +0 -85
- package/public/dist/assets/eventmodeling-FCH6USID-LckY84Wp.js +0 -1
- package/public/dist/assets/flowDiagram-I6XJVG4X-DgCs6PPU.js +0 -162
- package/public/dist/assets/ganttDiagram-6RSMTGT7-DGjdFJRc.js +0 -292
- package/public/dist/assets/gitGraph-WXDBUCRP-DXhEIZXY.js +0 -1
- package/public/dist/assets/gitGraphDiagram-PVQCEYII-DvCWiClL.js +0 -106
- package/public/dist/assets/iframe-renderer-CRPZFtWm.js +0 -1
- package/public/dist/assets/info-J43DQDTF-iXM3vzuR.js +0 -1
- package/public/dist/assets/infoDiagram-5YYISTIA-DxkbyTf_.js +0 -2
- package/public/dist/assets/katex-BT6jmGul.js +0 -1
- package/public/dist/assets/memory-h1JXRpv9.js +0 -1
- package/public/dist/assets/mermaid-loader-CylkLQP5.js +0 -1
- package/public/dist/assets/mermaid-parser.core-C-9KB617.js +0 -3
- package/public/dist/assets/mermaid.core-8XY13b72.js +0 -9
- package/public/dist/assets/mermaid.core-BEuf6y5_.js +0 -1
- package/public/dist/assets/message-history-BWh1dvBM.js +0 -1
- package/public/dist/assets/packet-YPE3B663-SclsNpNx.js +0 -1
- package/public/dist/assets/pie-LRSECV5Y-CF43gDO6.js +0 -1
- package/public/dist/assets/pieDiagram-4H26LBE5-ChOXpmZ5.js +0 -30
- package/public/dist/assets/radar-GUYGQ44K-BsylzLX_.js +0 -1
- package/public/dist/assets/settings-C2zm9EZp.js +0 -1
- package/public/dist/assets/settings-core-D72OTH7d.js +0 -1
- package/public/dist/assets/skills-DmzEkIbU.js +0 -1
- package/public/dist/assets/slash-commands-XwCb5ACm.js +0 -1
- package/public/dist/assets/stateDiagram-AJRCARHV-CeyXWXrg.js +0 -1
- package/public/dist/assets/stateDiagram-v2-BHNVJYJU-Bhb8zTjh.js +0 -1
- package/public/dist/assets/treeView-BLDUP644-DHq0vQpf.js +0 -1
- package/public/dist/assets/treemap-LRROVOQU-vKngXIla.js +0 -1
- package/public/dist/assets/ui-BVvHzdHI.js +0 -1
- package/public/dist/assets/vendor-render-Bjnw0wQ6.css +0 -1
- package/public/dist/assets/vendor-render-DCb9B75Q.js +0 -383
- package/public/dist/assets/vennDiagram-CIIHVFJN-WB9mzv1f.js +0 -34
- package/public/dist/assets/wardley-L42UT6IY-B1jQOSA5.js +0 -1
- package/public/dist/assets/xychartDiagram-2RQKCTM6-DduDB3Cd.js +0 -7
- /package/public/dist/assets/{BrowserPanel-C0aa2gja.js → BrowserPanel-CsYKexNf.js} +0 -0
- /package/public/dist/assets/{DashboardEmbeddingSection-DiqlLiLj.js → DashboardEmbeddingSection-CIOwsVB5.js} +0 -0
- /package/public/dist/assets/{DesignPanel-B8CAf6sH.js → DesignPanel-SuUOoyQN.js} +0 -0
- /package/public/dist/assets/{DiffPanel-BTZRq6eG.js → DiffPanel-ZaDoV7qS.js} +0 -0
- /package/public/dist/assets/{FolderPanel-D0w_zD66.js → FolderPanel-BkggPdTP.js} +0 -0
- /package/public/dist/assets/{HealthBadge-CiNMS-1k.js → HealthBadge-D7BQ-LHD.js} +0 -0
- /package/public/dist/assets/{InlineWarn-D-fmcQXD.js → InlineWarn-B3bJfG-Z.js} +0 -0
- /package/public/dist/assets/{TerminalPanel-DlUFPyzc.js → TerminalPanel-gXH7bTXQ.js} +0 -0
- /package/public/dist/assets/{agent-meta-DrYdO9lB.js → agent-meta-_Idad3qq.js} +0 -0
- /package/public/dist/assets/{dist-CuL30i1H.js → dist-CX7KjpF3.js} +0 -0
- /package/public/dist/assets/{dist-BbhtVnRz.js → dist-uSfGXqs6.js} +0 -0
- /package/public/dist/assets/{fields-BwOMlwS0.js → fields-E1L8aEhU.js} +0 -0
- /package/public/dist/assets/{page-shell-GpE8A-FA.js → page-shell-DZ1lls_P.js} +0 -0
- /package/public/dist/assets/{path-utils-CHwADH-r.js → path-utils-QbjARuCC.js} +0 -0
- /package/public/dist/assets/{rough.esm-DeGVhNS9.js → rough.esm-DQG0wzX4.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{i as r}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{i as r}from"./page-shell-DZ1lls_P.js";var i=e(t(),1),a=n(),o=[`employees`],s=[`ai-e`,`claude`,`claude-e`,`codex`,`codex-app`,`copilot`,`cursor`,`kiro-code`,`gemini`,`grok`,`opencode`],c=0;function l(){return c+=1,`emp_${Date.now().toString(36)}_${c}`}function u(){let e=globalThis.crypto;if(e&&typeof e.randomUUID==`function`)try{return e.randomUUID()}catch{}return l()}function d(e=u()){return{id:e,name:``,cli:`claude`,role:``,prompt:``,active:!0}}function f(e){if(!Array.isArray(e))return[];let t=[],n=0;for(let r of e){if(typeof r==`string`){n+=1,t.push({...d(`emp_legacy_${n}`),name:r});continue}if(!r||typeof r!=`object`)continue;let e=r,i=typeof e.name==`string`?e.name:``;if(!i&&!e.id)continue;n+=1;let a=typeof e.id==`string`&&e.id.trim()?e.id.trim():`emp_unknown_${n}`,o=typeof e.cli==`string`&&e.cli.trim()?e.cli.trim():`claude`,s=typeof e.role==`string`?e.role:``,c=typeof e.prompt==`string`?e.prompt:``,l=e.active!==!1;t.push({id:a,name:i,cli:o,role:s,prompt:c,active:l})}return t}function p(e){return e.name.trim()?e.cli.trim()?null:`CLI is required`:`Name is required`}function m(e){return e.some(e=>p(e)!==null)}function h(e){let t=new Map;for(let n of e){let e=n.name.trim().toLowerCase();e&&t.set(e,(t.get(e)??0)+1)}let n=new Set;for(let[e,r]of t)r>1&&n.add(e);return n}function g(e){return e.map(e=>{let t={id:e.id,name:e.name.trim(),cli:e.cli.trim()||`claude`,role:e.role.trim(),active:e.active};return e.prompt.trim()&&(t.prompt=e.prompt),t})}function _({registerSave:e}){return(0,i.useEffect)(()=>{if(e)return e(null),()=>e(null)},[e]),(0,a.jsx)(`form`,{className:`settings-page-form`,onSubmit:e=>e.preventDefault(),children:(0,a.jsx)(r,{title:`Employees`,hint:`Runtime employees are now managed from the Agent page.`,children:(0,a.jsx)(`p`,{className:`settings-section-hint`,children:`Open Runtime / Agent to edit dispatchable employees, static employee model overrides, and database-backed employees in one place.`})})})}export{s as DEFAULT_CLI_OPTIONS,o as EMPLOYEE_KEYS,_ as default,h as duplicateNameSet,p as employeeRowError,m as employeesHaveErrors,d as makeDefaultEmployee,u as newEmployeeId,f as normalizeEmployees,g as toPersistShape};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-GpE8A-FA.js";import{a as c,i as l,s as u}from"./fields-BwOMlwS0.js";import{i as d}from"./agent-meta-DrYdO9lB.js";import{t as f}from"./path-utils-CHwADH-r.js";var p=e(t(),1),m=n(),h=[{value:`every`,label:`every (interval)`},{value:`cron`,label:`cron expression`}];function g({job:e,index:t,bodyError:n,timeZoneError:r,onChange:i,onRemove:a}){let o=(0,p.useId)(),s=e.schedule.kind,d=e.schedule.timeZone??``;return(0,m.jsxs)(`fieldset`,{className:`settings-heartbeat-job`,"aria-label":`Heartbeat job ${t+1}${e.name?` (${e.name})`:``}`,children:[(0,m.jsx)(`legend`,{className:`settings-heartbeat-job-legend`,children:e.name||`Job ${t+1}`}),(0,m.jsx)(c,{id:`${o}-enabled`,label:`Enabled`,value:e.enabled,onChange:e=>i({enabled:e})}),(0,m.jsx)(u,{id:`${o}-name`,label:`Name`,value:e.name,placeholder:`Morning summary`,onChange:e=>i({name:e})}),(0,m.jsx)(l,{id:`${o}-kind`,label:`Schedule kind`,value:s,options:h,onChange:e=>{e===`every`&&s!==`every`?i({schedule:{kind:`every`,minutes:30,...d?{timeZone:d}:{}}}):e===`cron`&&s!==`cron`&&i({schedule:{kind:`cron`,cron:`0 9 * * *`,...d?{timeZone:d}:{}}})}}),s===`every`?(0,m.jsx)(u,{id:`${o}-minutes`,label:`Every (minutes)`,value:String(e.schedule.minutes??``),placeholder:`30`,error:n??null,onChange:e=>{let t=e.trim(),n=Number(t);i({schedule:{kind:`every`,minutes:Number.isFinite(n)?n:NaN,...d?{timeZone:d}:{}}})}}):(0,m.jsx)(u,{id:`${o}-cron`,label:`Cron expression`,value:e.schedule.cron??``,placeholder:`0 9 * * *`,error:n??null,onChange:e=>i({schedule:{kind:`cron`,cron:e,...d?{timeZone:d}:{}}})}),(0,m.jsx)(u,{id:`${o}-tz`,label:`Time zone (optional)`,value:d,placeholder:`Asia/Seoul`,error:r??null,onChange:t=>{let n=t.trim();i(s===`every`?{schedule:{kind:`every`,minutes:e.schedule.minutes,...n?{timeZone:n}:{}}}:{schedule:{kind:`cron`,cron:e.schedule.cron,...n?{timeZone:n}:{}}})}}),(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`${o}-prompt`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Prompt`}),(0,m.jsx)(`textarea`,{id:`${o}-prompt`,rows:3,value:e.prompt,placeholder:`What should this heartbeat do?`,onChange:e=>i({prompt:e.target.value})})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-job-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:a,children:`Remove job`})})]})}var _=/^\d+[smh]$/,v=/^([01]\d|2[0-3]):[0-5]\d$/,y=[`ai-e`,`claude`,`claude-e`,`codex`,`codex-app`,`copilot`,`cursor`,`kiro-code`,`gemini`,`grok`,`opencode`],b=[`heartbeat.enabled`,`heartbeat.every`,`heartbeat.activeHours.start`,`heartbeat.activeHours.end`,`heartbeat.target`],x=[`heartbeat.jobs`,`heartbeat.md`];function S(e){return _.test(e.trim())}function C(e){return v.test(e.trim())}function w(e=Date.now()){return{id:`hb_${e}`,name:``,enabled:!0,schedule:{kind:`every`,minutes:30},prompt:``}}function T(e){return e.startsWith(`heartbeat.`)&&e!==`heartbeat.jobs`&&e!==`heartbeat.md`}function E(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.id==`string`&&n.id.trim()?n.id.trim():`hb_unknown_${t}`,i=typeof n.name==`string`?n.name:``,a=n.enabled!==!1,o=typeof n.prompt==`string`?n.prompt:``,s=n.schedule,c;if(s&&typeof s==`object`){let e=s;c=e.kind===`cron`&&typeof e.cron==`string`?{kind:`cron`,cron:e.cron,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}:{kind:`every`,minutes:typeof e.minutes==`number`?e.minutes:30,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}}else c={kind:`every`,minutes:30};return{id:r,name:i,enabled:a,schedule:c,prompt:o}}function D(e){if(!e||typeof e!=`object`)return[];let t=e.jobs;return Array.isArray(t)?t.map((e,t)=>E(e,t)).filter(e=>e!==null):[]}function O(e){if(e.kind===`every`){let t=e.minutes;return!Number.isFinite(t)||t<=0||!Number.isInteger(t)?`Minutes must be a positive integer`:null}let t=e.cron?.trim()??``;return t?t.split(/\s+/).length<5?`Cron must have at least 5 fields`:null:`Cron expression required`}function k(e){return e.some(e=>O(e.schedule)!==null)}function A({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)([]),[c,l]=(0,p.useState)([]),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=D(r.data);a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.jobs`,{value:i,original:c,valid:!k(i)})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.jobs`)},[n]);let _=(0,p.useCallback)(async()=>{if(k(i)){h(`Fix invalid schedules before saving.`);return}d(!0),h(null);try{let e=D(await t.put(`/api/heartbeat`,{jobs:i}));a(e),l(e),n.remove(`heartbeat.jobs`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading jobs…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let v=n.pending.has(`heartbeat.jobs`),y=k(i);function b(e,t){a(n=>n.map((n,r)=>r===e?{...n,...t}:n))}function x(){a(e=>[...e,w()])}function S(e){a(t=>t.filter((t,n)=>n!==e))}return(0,m.jsxs)(m.Fragment,{children:[i.length===0?(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`No jobs configured. Add one below.`}):(0,m.jsx)(`div`,{className:`settings-heartbeat-jobs-list`,children:i.map((e,t)=>(0,m.jsx)(g,{job:e,index:t,bodyError:O(e.schedule),onChange:e=>b(t,e),onRemove:()=>S(t)},e.id))}),(0,m.jsxs)(`div`,{className:`settings-heartbeat-jobs-footer`,children:[(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:x,children:`+ Add job`}),(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void _(),disabled:u||!v||y,children:u?`Saving…`:`Apply jobs`})]}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function j({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)(``),[c,l]=(0,p.useState)(``),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=r.data.content??``;a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.md`,{value:i,original:c,valid:!0})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.md`)},[n]);let g=(0,p.useCallback)(async()=>{d(!0),h(null);try{await t.put(`/api/heartbeat-md`,{content:i}),l(i),n.remove(`heartbeat.md`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading template…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let _=n.pending.has(`heartbeat.md`);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`hb-md`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Template`}),(0,m.jsx)(`textarea`,{id:`hb-md`,rows:10,spellCheck:!1,value:i,onChange:e=>a(e.target.value),style:{fontFamily:`ui-monospace, monospace`}})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-md-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void g(),disabled:u||!_,children:u?`Saving…`:`Save template`})}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function M({port:e,client:t,dirty:n,registerSave:h}){let g=r(t,`/api/settings`),_=r(t,`/api/heartbeat`),v=r(t,`/api/heartbeat-md`),[x,w]=(0,p.useState)(!1),[E,D]=(0,p.useState)(`30m`),[O,k]=(0,p.useState)(`08:00`),[M,N]=(0,p.useState)(`22:00`),[P,F]=(0,p.useState)(`all`);(0,p.useEffect)(()=>{if(g.state.kind!==`ready`)return;let e=g.state.data.heartbeat||{};w(!!e.enabled),D(typeof e.every==`string`?e.every:`30m`),k(e.activeHours?.start??`08:00`),N(e.activeHours?.end??`22:00`),F(typeof e.target==`string`?e.target:`all`)},[g.state]),(0,p.useEffect)(()=>()=>{for(let e of b)n.remove(e)},[n]);let I=(0,p.useMemo)(()=>g.state.kind===`ready`&&g.state.data.heartbeat||{},[g.state]),L=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),R=(0,p.useRef)(0),z=(0,p.useCallback)(async()=>{let e=n.saveBundle(),r={};for(let[t,n]of Object.entries(e))T(t)&&(r[t]=n);if(Object.keys(r).length===0)return;let i=++R.current,a=f(r),o=await t.put(`/api/settings`,a);if(i!==R.current)return;let s=o&&typeof o==`object`&&`data`in o?o.data:o;for(let e of b)n.remove(e);g.setData(s);let c=s.heartbeat||{};w(!!c.enabled),D(typeof c.every==`string`?c.every:`30m`),k(c.activeHours?.start??`08:00`),N(c.activeHours?.end??`22:00`),F(typeof c.target==`string`?c.target:`all`),await g.refresh()},[t,n,g]);if((0,p.useEffect)(()=>{if(h)return h(z),()=>h(null)},[h,z]),g.state.kind===`loading`)return(0,m.jsx)(a,{});if(g.state.kind===`offline`)return(0,m.jsx)(o,{port:e});if(g.state.kind===`error`)return(0,m.jsx)(s,{message:g.state.message});let B=S(E)?null:"Use the form `<n>s|m|h`, e.g. `30m`",V=C(O)?null:`Use HH:MM (24h)`,H=C(M)?null:`Use HH:MM (24h)`,U=g.state.data.perCli||{},W=Object.keys(U),G=[{value:`all`,label:`all (broadcast)`},...(W.length>0?W:[...y]).map(e=>({value:e,label:d(e).label||e}))];return G.some(e=>e.value===P)||G.push({value:P,label:`${d(P).label||P} (legacy)`}),(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),z()},children:[(0,m.jsxs)(i,{title:`Heartbeat`,hint:`Background prompts the agent runs on a schedule.`,children:[(0,m.jsx)(c,{id:`hb-enabled`,label:`Heartbeat enabled`,value:x,onChange:e=>{w(e),L(`heartbeat.enabled`,{value:e,original:!!I.enabled,valid:!0})}}),(0,m.jsx)(u,{id:`hb-every`,label:`Default interval`,value:E,placeholder:`30m`,error:B,onChange:e=>{D(e),L(`heartbeat.every`,{value:e,original:I.every??`30m`,valid:S(e)})}}),(0,m.jsx)(u,{id:`hb-start`,label:`Active hours start`,value:O,placeholder:`08:00`,error:V,onChange:e=>{k(e),L(`heartbeat.activeHours.start`,{value:e,original:I.activeHours?.start??`08:00`,valid:C(e)})}}),(0,m.jsx)(u,{id:`hb-end`,label:`Active hours end`,value:M,placeholder:`22:00`,error:H,onChange:e=>{N(e),L(`heartbeat.activeHours.end`,{value:e,original:I.activeHours?.end??`22:00`,valid:C(e)})}}),(0,m.jsx)(l,{id:`hb-target`,label:`Target`,value:P,options:G,onChange:e=>{F(e),L(`heartbeat.target`,{value:e,original:I.target??`all`,valid:!0})}})]}),(0,m.jsx)(i,{title:`Jobs`,hint:`Each job replaces the entire heartbeat.json on save. Concurrent edits from multiple browsers will overwrite — last write wins.`,children:(0,m.jsx)(A,{port:e,client:t,dirty:n,snapshot:_.state})}),(0,m.jsx)(i,{title:`Default heartbeat prompt template`,hint:`Markdown shown to the agent when a heartbeat fires without a job-specific prompt.`,children:(0,m.jsx)(j,{port:e,client:t,dirty:n,snapshot:v.state})})]})}export{x as PAGE_LOCAL_KEYS,b as SECTION_A_KEYS,y as TARGET_FALLBACK,M as default,T as isHeartbeatSettingsKey,O as jobScheduleBodyError,k as jobsHaveErrors,w as makeDefaultJob,D as normalizeJobsResponse,C as validateHHMM,S as validateInterval};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-DZ1lls_P.js";import{a as c,i as l,s as u}from"./fields-E1L8aEhU.js";import{i as d}from"./agent-meta-_Idad3qq.js";import{t as f}from"./path-utils-QbjARuCC.js";var p=e(t(),1),m=n(),h=[{value:`every`,label:`every (interval)`},{value:`cron`,label:`cron expression`}];function g({job:e,index:t,bodyError:n,timeZoneError:r,onChange:i,onRemove:a}){let o=(0,p.useId)(),s=e.schedule.kind,d=e.schedule.timeZone??``;return(0,m.jsxs)(`fieldset`,{className:`settings-heartbeat-job`,"aria-label":`Heartbeat job ${t+1}${e.name?` (${e.name})`:``}`,children:[(0,m.jsx)(`legend`,{className:`settings-heartbeat-job-legend`,children:e.name||`Job ${t+1}`}),(0,m.jsx)(c,{id:`${o}-enabled`,label:`Enabled`,value:e.enabled,onChange:e=>i({enabled:e})}),(0,m.jsx)(u,{id:`${o}-name`,label:`Name`,value:e.name,placeholder:`Morning summary`,onChange:e=>i({name:e})}),(0,m.jsx)(l,{id:`${o}-kind`,label:`Schedule kind`,value:s,options:h,onChange:e=>{e===`every`&&s!==`every`?i({schedule:{kind:`every`,minutes:30,...d?{timeZone:d}:{}}}):e===`cron`&&s!==`cron`&&i({schedule:{kind:`cron`,cron:`0 9 * * *`,...d?{timeZone:d}:{}}})}}),s===`every`?(0,m.jsx)(u,{id:`${o}-minutes`,label:`Every (minutes)`,value:String(e.schedule.minutes??``),placeholder:`30`,error:n??null,onChange:e=>{let t=e.trim(),n=Number(t);i({schedule:{kind:`every`,minutes:Number.isFinite(n)?n:NaN,...d?{timeZone:d}:{}}})}}):(0,m.jsx)(u,{id:`${o}-cron`,label:`Cron expression`,value:e.schedule.cron??``,placeholder:`0 9 * * *`,error:n??null,onChange:e=>i({schedule:{kind:`cron`,cron:e,...d?{timeZone:d}:{}}})}),(0,m.jsx)(u,{id:`${o}-tz`,label:`Time zone (optional)`,value:d,placeholder:`Asia/Seoul`,error:r??null,onChange:t=>{let n=t.trim();i(s===`every`?{schedule:{kind:`every`,minutes:e.schedule.minutes,...n?{timeZone:n}:{}}}:{schedule:{kind:`cron`,cron:e.schedule.cron,...n?{timeZone:n}:{}}})}}),(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`${o}-prompt`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Prompt`}),(0,m.jsx)(`textarea`,{id:`${o}-prompt`,rows:3,value:e.prompt,placeholder:`What should this heartbeat do?`,onChange:e=>i({prompt:e.target.value})})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-job-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:a,children:`Remove job`})})]})}var _=/^\d+[smh]$/,v=/^([01]\d|2[0-3]):[0-5]\d$/,y=[`ai-e`,`claude`,`claude-e`,`codex`,`codex-app`,`copilot`,`cursor`,`kiro-code`,`gemini`,`grok`,`opencode`],b=[`heartbeat.enabled`,`heartbeat.every`,`heartbeat.activeHours.start`,`heartbeat.activeHours.end`,`heartbeat.target`],x=[`heartbeat.jobs`,`heartbeat.md`];function S(e){return _.test(e.trim())}function C(e){return v.test(e.trim())}function w(e=Date.now()){return{id:`hb_${e}`,name:``,enabled:!0,schedule:{kind:`every`,minutes:30},prompt:``}}function T(e){return e.startsWith(`heartbeat.`)&&e!==`heartbeat.jobs`&&e!==`heartbeat.md`}function E(e,t){if(!e||typeof e!=`object`)return null;let n=e,r=typeof n.id==`string`&&n.id.trim()?n.id.trim():`hb_unknown_${t}`,i=typeof n.name==`string`?n.name:``,a=n.enabled!==!1,o=typeof n.prompt==`string`?n.prompt:``,s=n.schedule,c;if(s&&typeof s==`object`){let e=s;c=e.kind===`cron`&&typeof e.cron==`string`?{kind:`cron`,cron:e.cron,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}:{kind:`every`,minutes:typeof e.minutes==`number`?e.minutes:30,...typeof e.timeZone==`string`&&e.timeZone?{timeZone:e.timeZone}:{}}}else c={kind:`every`,minutes:30};return{id:r,name:i,enabled:a,schedule:c,prompt:o}}function D(e){if(!e||typeof e!=`object`)return[];let t=e.jobs;return Array.isArray(t)?t.map((e,t)=>E(e,t)).filter(e=>e!==null):[]}function O(e){if(e.kind===`every`){let t=e.minutes;return!Number.isFinite(t)||t<=0||!Number.isInteger(t)?`Minutes must be a positive integer`:null}let t=e.cron?.trim()??``;return t?t.split(/\s+/).length<5?`Cron must have at least 5 fields`:null:`Cron expression required`}function k(e){return e.some(e=>O(e.schedule)!==null)}function A({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)([]),[c,l]=(0,p.useState)([]),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=D(r.data);a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.jobs`,{value:i,original:c,valid:!k(i)})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.jobs`)},[n]);let _=(0,p.useCallback)(async()=>{if(k(i)){h(`Fix invalid schedules before saving.`);return}d(!0),h(null);try{let e=D(await t.put(`/api/heartbeat`,{jobs:i}));a(e),l(e),n.remove(`heartbeat.jobs`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading jobs…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let v=n.pending.has(`heartbeat.jobs`),y=k(i);function b(e,t){a(n=>n.map((n,r)=>r===e?{...n,...t}:n))}function x(){a(e=>[...e,w()])}function S(e){a(t=>t.filter((t,n)=>n!==e))}return(0,m.jsxs)(m.Fragment,{children:[i.length===0?(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`No jobs configured. Add one below.`}):(0,m.jsx)(`div`,{className:`settings-heartbeat-jobs-list`,children:i.map((e,t)=>(0,m.jsx)(g,{job:e,index:t,bodyError:O(e.schedule),onChange:e=>b(t,e),onRemove:()=>S(t)},e.id))}),(0,m.jsxs)(`div`,{className:`settings-heartbeat-jobs-footer`,children:[(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:x,children:`+ Add job`}),(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void _(),disabled:u||!v||y,children:u?`Saving…`:`Apply jobs`})]}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function j({port:e,client:t,dirty:n,snapshot:r}){let[i,a]=(0,p.useState)(``),[c,l]=(0,p.useState)(``),[u,d]=(0,p.useState)(!1),[f,h]=(0,p.useState)(null);(0,p.useEffect)(()=>{if(r.kind!==`ready`)return;let e=r.data.content??``;a(e),l(e)},[r]),(0,p.useEffect)(()=>{n.set(`heartbeat.md`,{value:i,original:c,valid:!0})},[i,c,n]),(0,p.useEffect)(()=>()=>{n.remove(`heartbeat.md`)},[n]);let g=(0,p.useCallback)(async()=>{d(!0),h(null);try{await t.put(`/api/heartbeat-md`,{content:i}),l(i),n.remove(`heartbeat.md`)}catch(e){h(e instanceof Error?e.message:String(e))}finally{d(!1)}},[t,n,i]);if(r.kind===`loading`)return(0,m.jsx)(`p`,{className:`settings-section-hint`,children:`Loading template…`});if(r.kind===`offline`)return(0,m.jsx)(o,{port:e});if(r.kind===`error`)return(0,m.jsx)(s,{message:r.message});let _=n.pending.has(`heartbeat.md`);return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)(`label`,{className:`settings-field settings-field-textarea`,htmlFor:`hb-md`,children:[(0,m.jsx)(`span`,{className:`settings-field-label`,children:`Template`}),(0,m.jsx)(`textarea`,{id:`hb-md`,rows:10,spellCheck:!1,value:i,onChange:e=>a(e.target.value),style:{fontFamily:`ui-monospace, monospace`}})]}),(0,m.jsx)(`div`,{className:`settings-heartbeat-md-footer`,children:(0,m.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,onClick:()=>void g(),disabled:u||!_,children:u?`Saving…`:`Save template`})}),f?(0,m.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:f}):null]})}function M({port:e,client:t,dirty:n,registerSave:h}){let g=r(t,`/api/settings`),_=r(t,`/api/heartbeat`),v=r(t,`/api/heartbeat-md`),[x,w]=(0,p.useState)(!1),[E,D]=(0,p.useState)(`30m`),[O,k]=(0,p.useState)(`08:00`),[M,N]=(0,p.useState)(`22:00`),[P,F]=(0,p.useState)(`all`);(0,p.useEffect)(()=>{if(g.state.kind!==`ready`)return;let e=g.state.data.heartbeat||{};w(!!e.enabled),D(typeof e.every==`string`?e.every:`30m`),k(e.activeHours?.start??`08:00`),N(e.activeHours?.end??`22:00`),F(typeof e.target==`string`?e.target:`all`)},[g.state]),(0,p.useEffect)(()=>()=>{for(let e of b)n.remove(e)},[n]);let I=(0,p.useMemo)(()=>g.state.kind===`ready`&&g.state.data.heartbeat||{},[g.state]),L=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),R=(0,p.useRef)(0),z=(0,p.useCallback)(async()=>{let e=n.saveBundle(),r={};for(let[t,n]of Object.entries(e))T(t)&&(r[t]=n);if(Object.keys(r).length===0)return;let i=++R.current,a=f(r),o=await t.put(`/api/settings`,a);if(i!==R.current)return;let s=o&&typeof o==`object`&&`data`in o?o.data:o;for(let e of b)n.remove(e);g.setData(s);let c=s.heartbeat||{};w(!!c.enabled),D(typeof c.every==`string`?c.every:`30m`),k(c.activeHours?.start??`08:00`),N(c.activeHours?.end??`22:00`),F(typeof c.target==`string`?c.target:`all`),await g.refresh()},[t,n,g]);if((0,p.useEffect)(()=>{if(h)return h(z),()=>h(null)},[h,z]),g.state.kind===`loading`)return(0,m.jsx)(a,{});if(g.state.kind===`offline`)return(0,m.jsx)(o,{port:e});if(g.state.kind===`error`)return(0,m.jsx)(s,{message:g.state.message});let B=S(E)?null:"Use the form `<n>s|m|h`, e.g. `30m`",V=C(O)?null:`Use HH:MM (24h)`,H=C(M)?null:`Use HH:MM (24h)`,U=g.state.data.perCli||{},W=Object.keys(U),G=[{value:`all`,label:`all (broadcast)`},...(W.length>0?W:[...y]).map(e=>({value:e,label:d(e).label||e}))];return G.some(e=>e.value===P)||G.push({value:P,label:`${d(P).label||P} (legacy)`}),(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),z()},children:[(0,m.jsxs)(i,{title:`Heartbeat`,hint:`Background prompts the agent runs on a schedule.`,children:[(0,m.jsx)(c,{id:`hb-enabled`,label:`Heartbeat enabled`,value:x,onChange:e=>{w(e),L(`heartbeat.enabled`,{value:e,original:!!I.enabled,valid:!0})}}),(0,m.jsx)(u,{id:`hb-every`,label:`Default interval`,value:E,placeholder:`30m`,error:B,onChange:e=>{D(e),L(`heartbeat.every`,{value:e,original:I.every??`30m`,valid:S(e)})}}),(0,m.jsx)(u,{id:`hb-start`,label:`Active hours start`,value:O,placeholder:`08:00`,error:V,onChange:e=>{k(e),L(`heartbeat.activeHours.start`,{value:e,original:I.activeHours?.start??`08:00`,valid:C(e)})}}),(0,m.jsx)(u,{id:`hb-end`,label:`Active hours end`,value:M,placeholder:`22:00`,error:H,onChange:e=>{N(e),L(`heartbeat.activeHours.end`,{value:e,original:I.activeHours?.end??`22:00`,valid:C(e)})}}),(0,m.jsx)(l,{id:`hb-target`,label:`Target`,value:P,options:G,onChange:e=>{F(e),L(`heartbeat.target`,{value:e,original:I.target??`all`,valid:!0})}})]}),(0,m.jsx)(i,{title:`Jobs`,hint:`Each job replaces the entire heartbeat.json on save. Concurrent edits from multiple browsers will overwrite — last write wins.`,children:(0,m.jsx)(A,{port:e,client:t,dirty:n,snapshot:_.state})}),(0,m.jsx)(i,{title:`Default heartbeat prompt template`,hint:`Markdown shown to the agent when a heartbeat fires without a job-specific prompt.`,children:(0,m.jsx)(j,{port:e,client:t,dirty:n,snapshot:v.state})})]})}export{x as PAGE_LOCAL_KEYS,b as SECTION_A_KEYS,y as TARGET_FALLBACK,M as default,T as isHeartbeatSettingsKey,O as jobScheduleBodyError,k as jobsHaveErrors,w as makeDefaultJob,D as normalizeJobsResponse,C as validateHHMM,S as validateInterval};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-
|
|
2
|
-
import{n as e,r as t,t as n}from"./rolldown-runtime-XQCOJYun.js";import{A as r}from"./vendor-render-DCb9B75Q.js";import{t as i}from"./preload-helper-DFYRRz9w.js";import{i as a,n as o,o as s,r as c,t as l}from"./mermaid-preprocess-0hqEN7sn.js";import{n as u,t as d}from"./jsx-runtime-CYoNlHAD.js";import{t as f}from"./copy-text-Dy0kfmb9.js";import{A as p,C as m,D as ee,E as h,O as g,S as te,T as _,a as v,b as y,c as b,d as x,f as ne,i as re,j as ie,l as ae,m as oe,n as se,o as ce,p as le,r as ue,s as de,t as fe,u as pe,w as me,x as he}from"./wiki-link-resolver-N9fDy5zP.js";function ge(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function _e(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var ve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ye=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,be={};function xe(e,t){return((t||be).jsx?ye:ve).test(e)}var Se=/[ \t\n\f\r]/g;function Ce(e){return typeof e==`object`?e.type===`text`?we(e.value):!1:we(e)}function we(e){return e.replace(Se,``)===``}var S=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};S.prototype.normal={},S.prototype.property={},S.prototype.space=void 0;function Te(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new S(n,r,t)}function C(e){return e.toLowerCase()}var w=class{constructor(e,t){this.attribute=t,this.property=e}};w.prototype.attribute=``,w.prototype.booleanish=!1,w.prototype.boolean=!1,w.prototype.commaOrSpaceSeparated=!1,w.prototype.commaSeparated=!1,w.prototype.defined=!1,w.prototype.mustUseProperty=!1,w.prototype.number=!1,w.prototype.overloadedBoolean=!1,w.prototype.property=``,w.prototype.spaceSeparated=!1,w.prototype.space=void 0;var T=e({boolean:()=>E,booleanish:()=>D,commaOrSpaceSeparated:()=>j,commaSeparated:()=>A,number:()=>O,overloadedBoolean:()=>De,spaceSeparated:()=>k}),Ee=0,E=M(),D=M(),De=M(),O=M(),k=M(),A=M(),j=M();function M(){return 2**++Ee}var N=Object.keys(T),P=class extends w{constructor(e,t,n,r){let i=-1;if(super(e,t),Oe(this,`space`,r),typeof n==`number`)for(;++i<N.length;){let e=N[i];Oe(this,N[i],(n&T[e])===T[e])}}};P.prototype.defined=!0;function Oe(e,t,n){n&&(e[t]=n)}function F(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new P(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[C(r)]=r,n[C(a.attribute)]=r}return new S(t,n,e.space)}var ke=F({properties:{ariaActiveDescendant:null,ariaAtomic:D,ariaAutoComplete:null,ariaBusy:D,ariaChecked:D,ariaColCount:O,ariaColIndex:O,ariaColSpan:O,ariaControls:k,ariaCurrent:null,ariaDescribedBy:k,ariaDetails:null,ariaDisabled:D,ariaDropEffect:k,ariaErrorMessage:null,ariaExpanded:D,ariaFlowTo:k,ariaGrabbed:D,ariaHasPopup:null,ariaHidden:D,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:k,ariaLevel:O,ariaLive:null,ariaModal:D,ariaMultiLine:D,ariaMultiSelectable:D,ariaOrientation:null,ariaOwns:k,ariaPlaceholder:null,ariaPosInSet:O,ariaPressed:D,ariaReadOnly:D,ariaRelevant:null,ariaRequired:D,ariaRoleDescription:k,ariaRowCount:O,ariaRowIndex:O,ariaRowSpan:O,ariaSelected:D,ariaSetSize:O,ariaSort:null,ariaValueMax:O,ariaValueMin:O,ariaValueNow:O,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function Ae(e,t){return t in e?e[t]:t}function je(e,t){return Ae(e,t.toLowerCase())}var Me=F({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:A,acceptCharset:k,accessKey:k,action:null,allow:null,allowFullScreen:E,allowPaymentRequest:E,allowUserMedia:E,alt:null,as:null,async:E,autoCapitalize:null,autoComplete:k,autoFocus:E,autoPlay:E,blocking:k,capture:null,charSet:null,checked:E,cite:null,className:k,cols:O,colSpan:null,content:null,contentEditable:D,controls:E,controlsList:k,coords:O|A,crossOrigin:null,data:null,dateTime:null,decoding:null,default:E,defer:E,dir:null,dirName:null,disabled:E,download:De,draggable:D,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:E,formTarget:null,headers:k,height:O,hidden:De,high:O,href:null,hrefLang:null,htmlFor:k,httpEquiv:k,id:null,imageSizes:null,imageSrcSet:null,inert:E,inputMode:null,integrity:null,is:null,isMap:E,itemId:null,itemProp:k,itemRef:k,itemScope:E,itemType:k,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:E,low:O,manifest:null,max:null,maxLength:O,media:null,method:null,min:null,minLength:O,multiple:E,muted:E,name:null,nonce:null,noModule:E,noValidate:E,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:E,optimum:O,pattern:null,ping:k,placeholder:null,playsInline:E,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:E,referrerPolicy:null,rel:k,required:E,reversed:E,rows:O,rowSpan:O,sandbox:k,scope:null,scoped:E,seamless:E,selected:E,shadowRootClonable:E,shadowRootDelegatesFocus:E,shadowRootMode:null,shape:null,size:O,sizes:null,slot:null,span:O,spellCheck:D,src:null,srcDoc:null,srcLang:null,srcSet:null,start:O,step:null,style:null,tabIndex:O,target:null,title:null,translate:null,type:null,typeMustMatch:E,useMap:null,value:D,width:O,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:k,axis:null,background:null,bgColor:null,border:O,borderColor:null,bottomMargin:O,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:E,declare:E,event:null,face:null,frame:null,frameBorder:null,hSpace:O,leftMargin:O,link:null,longDesc:null,lowSrc:null,marginHeight:O,marginWidth:O,noResize:E,noHref:E,noShade:E,noWrap:E,object:null,profile:null,prompt:null,rev:null,rightMargin:O,rules:null,scheme:null,scrolling:D,standby:null,summary:null,text:null,topMargin:O,valueType:null,version:null,vAlign:null,vLink:null,vSpace:O,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:E,disableRemotePlayback:E,prefix:null,property:null,results:O,security:null,unselectable:null},space:`html`,transform:je}),Ne=F({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:j,accentHeight:O,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:O,amplitude:O,arabicForm:null,ascent:O,attributeName:null,attributeType:null,azimuth:O,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:O,by:null,calcMode:null,capHeight:O,className:k,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:O,diffuseConstant:O,direction:null,display:null,dur:null,divisor:O,dominantBaseline:null,download:E,dx:null,dy:null,edgeMode:null,editable:null,elevation:O,enableBackground:null,end:null,event:null,exponent:O,externalResourcesRequired:null,fill:null,fillOpacity:O,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:A,g2:A,glyphName:A,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:O,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:O,horizOriginX:O,horizOriginY:O,id:null,ideographic:O,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:O,k:O,k1:O,k2:O,k3:O,k4:O,kernelMatrix:j,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:O,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:O,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:O,overlineThickness:O,paintOrder:null,panose1:null,path:null,pathLength:O,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:k,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:O,pointsAtY:O,pointsAtZ:O,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:j,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:j,rev:j,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:j,requiredFeatures:j,requiredFonts:j,requiredFormats:j,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:O,specularExponent:O,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:O,strikethroughThickness:O,string:null,stroke:null,strokeDashArray:j,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:O,strokeOpacity:O,strokeWidth:null,style:null,surfaceScale:O,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:j,tabIndex:O,tableValues:null,target:null,targetX:O,targetY:O,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:j,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:O,underlineThickness:O,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:O,values:null,vAlphabetic:O,vMathematical:O,vectorEffect:null,vHanging:O,vIdeographic:O,version:null,vertAdvY:O,vertOriginX:O,vertOriginY:O,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:O,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:Ae}),Pe=F({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),Fe=F({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:je}),Ie=F({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),Le={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},Re=/[A-Z]/g,ze=/-[a-z]/g,Be=/^data[-\w.:]+$/i;function Ve(e,t){let n=C(t),r=t,i=w;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&Be.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(ze,Ue);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!ze.test(e)){let n=e.replace(Re,He);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=P}return new i(r,t)}function He(e){return`-`+e.toLowerCase()}function Ue(e){return e.charAt(1).toUpperCase()}var We=Te([ke,Me,Pe,Fe,Ie],`html`),I=Te([ke,Ne,Pe,Fe,Ie],`svg`);function Ge(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Ke(e){return e.join(` `).trim()}var qe=n(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=`
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/vendor-render-kIxHrxDV.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,r as t,t as n}from"./rolldown-runtime-XQCOJYun.js";import{A as r}from"./vendor-render-BpGO1zp3.js";import{t as i}from"./preload-helper-DFYRRz9w.js";import{i as a,n as o,o as s,r as c,t as l}from"./mermaid-preprocess-4oGDpf1X.js";import{n as u,t as d}from"./jsx-runtime-CYoNlHAD.js";import{t as f}from"./copy-text-Dy0kfmb9.js";import{A as p,C as m,D as ee,E as h,O as g,S as te,T as _,a as v,b as y,c as b,d as x,f as ne,i as re,j as ie,l as ae,m as oe,n as se,o as ce,p as le,r as ue,s as de,t as fe,u as pe,w as me,x as he}from"./wiki-link-resolver-BGpGBLMp.js";function ge(e){let t=[],n=String(e||``),r=n.indexOf(`,`),i=0,a=!1;for(;!a;){r===-1&&(r=n.length,a=!0);let e=n.slice(i,r).trim();(e||!a)&&t.push(e),i=r+1,r=n.indexOf(`,`,i)}return t}function _e(e,t){let n=t||{};return(e[e.length-1]===``?[...e,``]:e).join((n.padRight?` `:``)+`,`+(n.padLeft===!1?``:` `)).trim()}var ve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ye=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,be={};function xe(e,t){return((t||be).jsx?ye:ve).test(e)}var Se=/[ \t\n\f\r]/g;function Ce(e){return typeof e==`object`?e.type===`text`?we(e.value):!1:we(e)}function we(e){return e.replace(Se,``)===``}var S=class{constructor(e,t,n){this.normal=t,this.property=e,n&&(this.space=n)}};S.prototype.normal={},S.prototype.property={},S.prototype.space=void 0;function Te(e,t){let n={},r={};for(let t of e)Object.assign(n,t.property),Object.assign(r,t.normal);return new S(n,r,t)}function C(e){return e.toLowerCase()}var w=class{constructor(e,t){this.attribute=t,this.property=e}};w.prototype.attribute=``,w.prototype.booleanish=!1,w.prototype.boolean=!1,w.prototype.commaOrSpaceSeparated=!1,w.prototype.commaSeparated=!1,w.prototype.defined=!1,w.prototype.mustUseProperty=!1,w.prototype.number=!1,w.prototype.overloadedBoolean=!1,w.prototype.property=``,w.prototype.spaceSeparated=!1,w.prototype.space=void 0;var T=e({boolean:()=>E,booleanish:()=>D,commaOrSpaceSeparated:()=>j,commaSeparated:()=>A,number:()=>O,overloadedBoolean:()=>De,spaceSeparated:()=>k}),Ee=0,E=M(),D=M(),De=M(),O=M(),k=M(),A=M(),j=M();function M(){return 2**++Ee}var N=Object.keys(T),P=class extends w{constructor(e,t,n,r){let i=-1;if(super(e,t),Oe(this,`space`,r),typeof n==`number`)for(;++i<N.length;){let e=N[i];Oe(this,N[i],(n&T[e])===T[e])}}};P.prototype.defined=!0;function Oe(e,t,n){n&&(e[t]=n)}function F(e){let t={},n={};for(let[r,i]of Object.entries(e.properties)){let a=new P(r,e.transform(e.attributes||{},r),i,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(a.mustUseProperty=!0),t[r]=a,n[C(r)]=r,n[C(a.attribute)]=r}return new S(t,n,e.space)}var ke=F({properties:{ariaActiveDescendant:null,ariaAtomic:D,ariaAutoComplete:null,ariaBusy:D,ariaChecked:D,ariaColCount:O,ariaColIndex:O,ariaColSpan:O,ariaControls:k,ariaCurrent:null,ariaDescribedBy:k,ariaDetails:null,ariaDisabled:D,ariaDropEffect:k,ariaErrorMessage:null,ariaExpanded:D,ariaFlowTo:k,ariaGrabbed:D,ariaHasPopup:null,ariaHidden:D,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:k,ariaLevel:O,ariaLive:null,ariaModal:D,ariaMultiLine:D,ariaMultiSelectable:D,ariaOrientation:null,ariaOwns:k,ariaPlaceholder:null,ariaPosInSet:O,ariaPressed:D,ariaReadOnly:D,ariaRelevant:null,ariaRequired:D,ariaRoleDescription:k,ariaRowCount:O,ariaRowIndex:O,ariaRowSpan:O,ariaSelected:D,ariaSetSize:O,ariaSort:null,ariaValueMax:O,ariaValueMin:O,ariaValueNow:O,ariaValueText:null,role:null},transform(e,t){return t===`role`?t:`aria-`+t.slice(4).toLowerCase()}});function Ae(e,t){return t in e?e[t]:t}function je(e,t){return Ae(e,t.toLowerCase())}var Me=F({attributes:{acceptcharset:`accept-charset`,classname:`class`,htmlfor:`for`,httpequiv:`http-equiv`},mustUseProperty:[`checked`,`multiple`,`muted`,`selected`],properties:{abbr:null,accept:A,acceptCharset:k,accessKey:k,action:null,allow:null,allowFullScreen:E,allowPaymentRequest:E,allowUserMedia:E,alt:null,as:null,async:E,autoCapitalize:null,autoComplete:k,autoFocus:E,autoPlay:E,blocking:k,capture:null,charSet:null,checked:E,cite:null,className:k,cols:O,colSpan:null,content:null,contentEditable:D,controls:E,controlsList:k,coords:O|A,crossOrigin:null,data:null,dateTime:null,decoding:null,default:E,defer:E,dir:null,dirName:null,disabled:E,download:De,draggable:D,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:E,formTarget:null,headers:k,height:O,hidden:De,high:O,href:null,hrefLang:null,htmlFor:k,httpEquiv:k,id:null,imageSizes:null,imageSrcSet:null,inert:E,inputMode:null,integrity:null,is:null,isMap:E,itemId:null,itemProp:k,itemRef:k,itemScope:E,itemType:k,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:E,low:O,manifest:null,max:null,maxLength:O,media:null,method:null,min:null,minLength:O,multiple:E,muted:E,name:null,nonce:null,noModule:E,noValidate:E,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:E,optimum:O,pattern:null,ping:k,placeholder:null,playsInline:E,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:E,referrerPolicy:null,rel:k,required:E,reversed:E,rows:O,rowSpan:O,sandbox:k,scope:null,scoped:E,seamless:E,selected:E,shadowRootClonable:E,shadowRootDelegatesFocus:E,shadowRootMode:null,shape:null,size:O,sizes:null,slot:null,span:O,spellCheck:D,src:null,srcDoc:null,srcLang:null,srcSet:null,start:O,step:null,style:null,tabIndex:O,target:null,title:null,translate:null,type:null,typeMustMatch:E,useMap:null,value:D,width:O,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:k,axis:null,background:null,bgColor:null,border:O,borderColor:null,bottomMargin:O,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:E,declare:E,event:null,face:null,frame:null,frameBorder:null,hSpace:O,leftMargin:O,link:null,longDesc:null,lowSrc:null,marginHeight:O,marginWidth:O,noResize:E,noHref:E,noShade:E,noWrap:E,object:null,profile:null,prompt:null,rev:null,rightMargin:O,rules:null,scheme:null,scrolling:D,standby:null,summary:null,text:null,topMargin:O,valueType:null,version:null,vAlign:null,vLink:null,vSpace:O,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:E,disableRemotePlayback:E,prefix:null,property:null,results:O,security:null,unselectable:null},space:`html`,transform:je}),Ne=F({attributes:{accentHeight:`accent-height`,alignmentBaseline:`alignment-baseline`,arabicForm:`arabic-form`,baselineShift:`baseline-shift`,capHeight:`cap-height`,className:`class`,clipPath:`clip-path`,clipRule:`clip-rule`,colorInterpolation:`color-interpolation`,colorInterpolationFilters:`color-interpolation-filters`,colorProfile:`color-profile`,colorRendering:`color-rendering`,crossOrigin:`crossorigin`,dataType:`datatype`,dominantBaseline:`dominant-baseline`,enableBackground:`enable-background`,fillOpacity:`fill-opacity`,fillRule:`fill-rule`,floodColor:`flood-color`,floodOpacity:`flood-opacity`,fontFamily:`font-family`,fontSize:`font-size`,fontSizeAdjust:`font-size-adjust`,fontStretch:`font-stretch`,fontStyle:`font-style`,fontVariant:`font-variant`,fontWeight:`font-weight`,glyphName:`glyph-name`,glyphOrientationHorizontal:`glyph-orientation-horizontal`,glyphOrientationVertical:`glyph-orientation-vertical`,hrefLang:`hreflang`,horizAdvX:`horiz-adv-x`,horizOriginX:`horiz-origin-x`,horizOriginY:`horiz-origin-y`,imageRendering:`image-rendering`,letterSpacing:`letter-spacing`,lightingColor:`lighting-color`,markerEnd:`marker-end`,markerMid:`marker-mid`,markerStart:`marker-start`,navDown:`nav-down`,navDownLeft:`nav-down-left`,navDownRight:`nav-down-right`,navLeft:`nav-left`,navNext:`nav-next`,navPrev:`nav-prev`,navRight:`nav-right`,navUp:`nav-up`,navUpLeft:`nav-up-left`,navUpRight:`nav-up-right`,onAbort:`onabort`,onActivate:`onactivate`,onAfterPrint:`onafterprint`,onBeforePrint:`onbeforeprint`,onBegin:`onbegin`,onCancel:`oncancel`,onCanPlay:`oncanplay`,onCanPlayThrough:`oncanplaythrough`,onChange:`onchange`,onClick:`onclick`,onClose:`onclose`,onCopy:`oncopy`,onCueChange:`oncuechange`,onCut:`oncut`,onDblClick:`ondblclick`,onDrag:`ondrag`,onDragEnd:`ondragend`,onDragEnter:`ondragenter`,onDragExit:`ondragexit`,onDragLeave:`ondragleave`,onDragOver:`ondragover`,onDragStart:`ondragstart`,onDrop:`ondrop`,onDurationChange:`ondurationchange`,onEmptied:`onemptied`,onEnd:`onend`,onEnded:`onended`,onError:`onerror`,onFocus:`onfocus`,onFocusIn:`onfocusin`,onFocusOut:`onfocusout`,onHashChange:`onhashchange`,onInput:`oninput`,onInvalid:`oninvalid`,onKeyDown:`onkeydown`,onKeyPress:`onkeypress`,onKeyUp:`onkeyup`,onLoad:`onload`,onLoadedData:`onloadeddata`,onLoadedMetadata:`onloadedmetadata`,onLoadStart:`onloadstart`,onMessage:`onmessage`,onMouseDown:`onmousedown`,onMouseEnter:`onmouseenter`,onMouseLeave:`onmouseleave`,onMouseMove:`onmousemove`,onMouseOut:`onmouseout`,onMouseOver:`onmouseover`,onMouseUp:`onmouseup`,onMouseWheel:`onmousewheel`,onOffline:`onoffline`,onOnline:`ononline`,onPageHide:`onpagehide`,onPageShow:`onpageshow`,onPaste:`onpaste`,onPause:`onpause`,onPlay:`onplay`,onPlaying:`onplaying`,onPopState:`onpopstate`,onProgress:`onprogress`,onRateChange:`onratechange`,onRepeat:`onrepeat`,onReset:`onreset`,onResize:`onresize`,onScroll:`onscroll`,onSeeked:`onseeked`,onSeeking:`onseeking`,onSelect:`onselect`,onShow:`onshow`,onStalled:`onstalled`,onStorage:`onstorage`,onSubmit:`onsubmit`,onSuspend:`onsuspend`,onTimeUpdate:`ontimeupdate`,onToggle:`ontoggle`,onUnload:`onunload`,onVolumeChange:`onvolumechange`,onWaiting:`onwaiting`,onZoom:`onzoom`,overlinePosition:`overline-position`,overlineThickness:`overline-thickness`,paintOrder:`paint-order`,panose1:`panose-1`,pointerEvents:`pointer-events`,referrerPolicy:`referrerpolicy`,renderingIntent:`rendering-intent`,shapeRendering:`shape-rendering`,stopColor:`stop-color`,stopOpacity:`stop-opacity`,strikethroughPosition:`strikethrough-position`,strikethroughThickness:`strikethrough-thickness`,strokeDashArray:`stroke-dasharray`,strokeDashOffset:`stroke-dashoffset`,strokeLineCap:`stroke-linecap`,strokeLineJoin:`stroke-linejoin`,strokeMiterLimit:`stroke-miterlimit`,strokeOpacity:`stroke-opacity`,strokeWidth:`stroke-width`,tabIndex:`tabindex`,textAnchor:`text-anchor`,textDecoration:`text-decoration`,textRendering:`text-rendering`,transformOrigin:`transform-origin`,typeOf:`typeof`,underlinePosition:`underline-position`,underlineThickness:`underline-thickness`,unicodeBidi:`unicode-bidi`,unicodeRange:`unicode-range`,unitsPerEm:`units-per-em`,vAlphabetic:`v-alphabetic`,vHanging:`v-hanging`,vIdeographic:`v-ideographic`,vMathematical:`v-mathematical`,vectorEffect:`vector-effect`,vertAdvY:`vert-adv-y`,vertOriginX:`vert-origin-x`,vertOriginY:`vert-origin-y`,wordSpacing:`word-spacing`,writingMode:`writing-mode`,xHeight:`x-height`,playbackOrder:`playbackorder`,timelineBegin:`timelinebegin`},properties:{about:j,accentHeight:O,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:O,amplitude:O,arabicForm:null,ascent:O,attributeName:null,attributeType:null,azimuth:O,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:O,by:null,calcMode:null,capHeight:O,className:k,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:O,diffuseConstant:O,direction:null,display:null,dur:null,divisor:O,dominantBaseline:null,download:E,dx:null,dy:null,edgeMode:null,editable:null,elevation:O,enableBackground:null,end:null,event:null,exponent:O,externalResourcesRequired:null,fill:null,fillOpacity:O,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:A,g2:A,glyphName:A,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:O,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:O,horizOriginX:O,horizOriginY:O,id:null,ideographic:O,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:O,k:O,k1:O,k2:O,k3:O,k4:O,kernelMatrix:j,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:O,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:O,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:O,overlineThickness:O,paintOrder:null,panose1:null,path:null,pathLength:O,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:k,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:O,pointsAtY:O,pointsAtZ:O,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:j,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:j,rev:j,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:j,requiredFeatures:j,requiredFonts:j,requiredFormats:j,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:O,specularExponent:O,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:O,strikethroughThickness:O,string:null,stroke:null,strokeDashArray:j,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:O,strokeOpacity:O,strokeWidth:null,style:null,surfaceScale:O,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:j,tabIndex:O,tableValues:null,target:null,targetX:O,targetY:O,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:j,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:O,underlineThickness:O,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:O,values:null,vAlphabetic:O,vMathematical:O,vectorEffect:null,vHanging:O,vIdeographic:O,version:null,vertAdvY:O,vertOriginX:O,vertOriginY:O,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:O,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:`svg`,transform:Ae}),Pe=F({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:`xlink`,transform(e,t){return`xlink:`+t.slice(5).toLowerCase()}}),Fe=F({attributes:{xmlnsxlink:`xmlns:xlink`},properties:{xmlnsXLink:null,xmlns:null},space:`xmlns`,transform:je}),Ie=F({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:`xml`,transform(e,t){return`xml:`+t.slice(3).toLowerCase()}}),Le={classId:`classID`,dataType:`datatype`,itemId:`itemID`,strokeDashArray:`strokeDasharray`,strokeDashOffset:`strokeDashoffset`,strokeLineCap:`strokeLinecap`,strokeLineJoin:`strokeLinejoin`,strokeMiterLimit:`strokeMiterlimit`,typeOf:`typeof`,xLinkActuate:`xlinkActuate`,xLinkArcRole:`xlinkArcrole`,xLinkHref:`xlinkHref`,xLinkRole:`xlinkRole`,xLinkShow:`xlinkShow`,xLinkTitle:`xlinkTitle`,xLinkType:`xlinkType`,xmlnsXLink:`xmlnsXlink`},Re=/[A-Z]/g,ze=/-[a-z]/g,Be=/^data[-\w.:]+$/i;function Ve(e,t){let n=C(t),r=t,i=w;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)===`data`&&Be.test(t)){if(t.charAt(4)===`-`){let e=t.slice(5).replace(ze,Ue);r=`data`+e.charAt(0).toUpperCase()+e.slice(1)}else{let e=t.slice(4);if(!ze.test(e)){let n=e.replace(Re,He);n.charAt(0)!==`-`&&(n=`-`+n),t=`data`+n}}i=P}return new i(r,t)}function He(e){return`-`+e.toLowerCase()}function Ue(e){return e.charAt(1).toUpperCase()}var We=Te([ke,Me,Pe,Fe,Ie],`html`),I=Te([ke,Ne,Pe,Fe,Ie],`svg`);function Ge(e){let t=String(e||``).trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function Ke(e){return e.join(` `).trim()}var qe=n(((e,t)=>{var n=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,r=/\n/g,i=/^\s*/,a=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,o=/^:\s*/,s=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,c=/^[;\s]*/,l=/^\s+|\s+$/g,u=`
|
|
3
3
|
`,d=`/`,f=`*`,p=``,m=`comment`,ee=`declaration`;function h(e,t){if(typeof e!=`string`)throw TypeError(`First argument must be a string`);if(!e)return[];t||={};var l=1,h=1;function te(e){var t=e.match(r);t&&(l+=t.length);var n=e.lastIndexOf(u);h=~n?e.length-n:h+e.length}function _(){var e={line:l,column:h};return function(t){return t.position=new v(e),x(),t}}function v(e){this.start=e,this.end={line:l,column:h},this.source=t.source}v.prototype.content=e;function y(n){var r=Error(t.source+`:`+l+`:`+h+`: `+n);if(r.reason=n,r.filename=t.source,r.line=l,r.column=h,r.source=e,!t.silent)throw r}function b(t){var n=t.exec(e);if(n){var r=n[0];return te(r),e=e.slice(r.length),n}}function x(){b(i)}function ne(e){var t;for(e||=[];t=re();)t!==!1&&e.push(t);return e}function re(){var t=_();if(!(d!=e.charAt(0)||f!=e.charAt(1))){for(var n=2;p!=e.charAt(n)&&(f!=e.charAt(n)||d!=e.charAt(n+1));)++n;if(n+=2,p===e.charAt(n-1))return y(`End of comment missing`);var r=e.slice(2,n-2);return h+=2,te(r),e=e.slice(n),h+=2,t({type:m,comment:r})}}function ie(){var e=_(),t=b(a);if(t){if(re(),!b(o))return y(`property missing ':'`);var r=b(s),i=e({type:ee,property:g(t[0].replace(n,p)),value:r?g(r[0].replace(n,p)):p});return b(c),i}}function ae(){var e=[];ne(e);for(var t;t=ie();)t!==!1&&(e.push(t),ne(e));return e}return x(),ae()}function g(e){return e?e.replace(l,p):p}t.exports=h})),Je=n((e=>{var t=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,`__esModule`,{value:!0}),e.default=r;var n=t(qe());function r(e,t){let r=null;if(!e||typeof e!=`string`)return r;let i=(0,n.default)(e),a=typeof t==`function`;return i.forEach(e=>{if(e.type!==`declaration`)return;let{property:n,value:i}=e;a?t(n,i,e):i&&(r||={},r[n]=i)}),r}})),Ye=n((e=>{Object.defineProperty(e,`__esModule`,{value:!0}),e.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,n=/-([a-z])/g,r=/^[^-]+$/,i=/^-(webkit|moz|ms|o|khtml)-/,a=/^-(ms)-/,o=function(e){return!e||r.test(e)||t.test(e)},s=function(e,t){return t.toUpperCase()},c=function(e,t){return`${t}-`};e.camelCase=function(e,t){return t===void 0&&(t={}),o(e)?e:(e=e.toLowerCase(),e=t.reactCompat?e.replace(a,c):e.replace(i,c),e.replace(n,s))}})),Xe=n(((e,t)=>{var n=(e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}})(Je()),r=Ye();function i(e,t){var i={};return!e||typeof e!=`string`||(0,n.default)(e,function(e,n){e&&n&&(i[(0,r.camelCase)(e,t)]=n)}),i}i.default=i,t.exports=i})),Ze=$e(`end`),Qe=$e(`start`);function $e(e){return t;function t(t){let n=t&&t.position&&t.position[e]||{};if(typeof n.line==`number`&&n.line>0&&typeof n.column==`number`&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset==`number`&&n.offset>-1?n.offset:void 0}}}function et(e){let t=Qe(e),n=Ze(e);if(t&&n)return{start:t,end:n}}var tt=t(Xe(),1),nt={}.hasOwnProperty,rt=new Map,it=/[A-Z]/g,at=new Set([`table`,`tbody`,`thead`,`tfoot`,`tr`]),ot=new Set([`td`,`th`]),st=`https://github.com/syntax-tree/hast-util-to-jsx-runtime`;function ct(e,t){if(!t||t.Fragment===void 0)throw TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!=`function`)throw TypeError("Expected `jsxDEV` in options when `development: true`");r=yt(n,t.jsxDEV)}else{if(typeof t.jsx!=`function`)throw TypeError("Expected `jsx` in production options");if(typeof t.jsxs!=`function`)throw TypeError("Expected `jsxs` in production options");r=vt(n,t.jsx,t.jsxs)}let i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||`react`,evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space===`svg`?I:We,stylePropertyNameCase:t.stylePropertyNameCase||`dom`,tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=lt(i,e,void 0);return a&&typeof a!=`string`?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function lt(e,t,n){if(t.type===`element`)return ut(e,t,n);if(t.type===`mdxFlowExpression`||t.type===`mdxTextExpression`)return dt(e,t);if(t.type===`mdxJsxFlowElement`||t.type===`mdxJsxTextElement`)return pt(e,t,n);if(t.type===`mdxjsEsm`)return ft(e,t);if(t.type===`root`)return mt(e,t,n);if(t.type===`text`)return ht(e,t)}function ut(e,t,n){let r=e.schema,i=r;t.tagName.toLowerCase()===`svg`&&r.space===`html`&&(i=I,e.schema=i),e.ancestors.push(t);let a=Tt(e,t.tagName,!1),o=bt(e,t),s=St(e,t);return at.has(t.tagName)&&(s=s.filter(function(e){return typeof e==`string`?!Ce(e):!0})),gt(e,o,a,t),_t(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function dt(e,t){if(t.data&&t.data.estree&&e.evaluater){let n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}L(e,t.position)}function ft(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);L(e,t.position)}function pt(e,t,n){let r=e.schema,i=r;t.name===`svg`&&r.space===`html`&&(i=I,e.schema=i),e.ancestors.push(t);let a=t.name===null?e.Fragment:Tt(e,t.name,!0),o=xt(e,t),s=St(e,t);return gt(e,o,a,t),_t(o,s),e.ancestors.pop(),e.schema=r,e.create(t,a,o,n)}function mt(e,t,n){let r={};return _t(r,St(e,t)),e.create(t,e.Fragment,r,n)}function ht(e,t){return t.value}function gt(e,t,n,r){typeof n!=`string`&&n!==e.Fragment&&e.passNode&&(t.node=r)}function _t(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function vt(e,t,n){return r;function r(e,r,i,a){let o=Array.isArray(i.children)?n:t;return a?o(r,i,a):o(r,i)}}function yt(e,t){return n;function n(n,r,i,a){let o=Array.isArray(i.children),s=Qe(n);return t(r,i,a,o,{columnNumber:s?s.column-1:void 0,fileName:e,lineNumber:s?s.line:void 0},void 0)}}function bt(e,t){let n={},r,i;for(i in t.properties)if(i!==`children`&&nt.call(t.properties,i)){let a=Ct(e,i,t.properties[i]);if(a){let[i,o]=a;e.tableCellAlignToStyle&&i===`align`&&typeof o==`string`&&ot.has(t.tagName)?r=o:n[i]=o}}if(r){let t=n.style||={};t[e.stylePropertyNameCase===`css`?`text-align`:`textAlign`]=r}return n}function xt(e,t){let n={};for(let r of t.attributes)if(r.type===`mdxJsxExpressionAttribute`)if(r.data&&r.data.estree&&e.evaluater){let t=r.data.estree.body[0];t.type;let i=t.expression;i.type;let a=i.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else L(e,t.position);else{let i=r.name,a;if(r.value&&typeof r.value==`object`)if(r.value.data&&r.value.data.estree&&e.evaluater){let t=r.value.data.estree.body[0];t.type,a=e.evaluater.evaluateExpression(t.expression)}else L(e,t.position);else a=r.value===null?!0:r.value;n[i]=a}return n}function St(e,t){let n=[],r=-1,i=e.passKeys?new Map:rt;for(;++r<t.children.length;){let a=t.children[r],o;if(e.passKeys){let e=a.type===`element`?a.tagName:a.type===`mdxJsxFlowElement`||a.type===`mdxJsxTextElement`?a.name:void 0;if(e){let t=i.get(e)||0;o=e+`-`+t,i.set(e,t+1)}}let s=lt(e,a,o);s!==void 0&&n.push(s)}return n}function Ct(e,t,n){let r=Ve(e.schema,t);if(!(n==null||typeof n==`number`&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?_e(n):Ke(n)),r.property===`style`){let t=typeof n==`object`?n:wt(e,String(n));return e.stylePropertyNameCase===`css`&&(t=Et(t)),[`style`,t]}return[e.elementAttributeNameCase===`react`&&r.space?Le[r.property]||r.property:r.attribute,n]}}function wt(e,t){try{return(0,tt.default)(t,{reactCompat:!0})}catch(t){if(e.ignoreInvalidStyle)return{};let n=t,r=new ie("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:n,ruleId:`style`,source:`hast-util-to-jsx-runtime`});throw r.file=e.filePath||void 0,r.url=st+`#cannot-parse-style-attribute`,r}}function Tt(e,t,n){let r;if(!n)r={type:`Literal`,value:t};else if(t.includes(`.`)){let e=t.split(`.`),n=-1,i;for(;++n<e.length;){let t=xe(e[n])?{type:`Identifier`,name:e[n]}:{type:`Literal`,value:e[n]};i=i?{type:`MemberExpression`,object:i,property:t,computed:!!(n&&t.type===`Literal`),optional:!1}:t}r=i}else r=xe(t)&&!/^[a-z]/.test(t)?{type:`Identifier`,name:t}:{type:`Literal`,value:t};if(r.type===`Literal`){let t=r.value;return nt.call(e.components,t)?e.components[t]:t}if(e.evaluater)return e.evaluater.evaluateExpression(r);L(e)}function L(e,t){let n=new ie("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:`mdx-estree`,source:`hast-util-to-jsx-runtime`});throw n.file=e.filePath||void 0,n.url=st+`#cannot-handle-mdx-estrees-without-createevaluater`,n}function Et(e){let t={},n;for(n in e)nt.call(e,n)&&(t[Dt(n)]=e[n]);return t}function Dt(e){let t=e.replace(it,Ot);return t.slice(0,3)===`ms-`&&(t=`-`+t),t}function Ot(e){return`-`+e.toLowerCase()}var R={action:[`form`],cite:[`blockquote`,`del`,`ins`,`q`],data:[`object`],formAction:[`button`,`input`],href:[`a`,`area`,`base`,`link`],icon:[`menuitem`],itemId:null,manifest:[`html`],ping:[`a`,`area`],poster:[`video`],src:[`audio`,`embed`,`iframe`,`img`,`input`,`script`,`source`,`track`,`video`]};function z(e){let t=[],n=-1,r=0,i=0;for(;++n<e.length;){let a=e.charCodeAt(n),o=``;if(a===37&&p(e.charCodeAt(n+1))&&p(e.charCodeAt(n+2)))i=2;else if(a<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(a))||(o=String.fromCharCode(a));else if(a>55295&&a<57344){let t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(o=String.fromCharCode(a,t),i=1):o=`�`}else o=String.fromCharCode(a);o&&=(t.push(e.slice(r,n),encodeURIComponent(o)),r=n+i+1,``),i&&=(n+=i,0)}return t.join(``)+e.slice(r)}function kt(e,t){let n={type:`element`,tagName:`blockquote`,properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function At(e,t){let n={type:`element`,tagName:`br`,properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:`text`,value:`
|
|
4
4
|
`}]}function jt(e,t){let n=t.value?t.value+`
|
|
5
5
|
`:``,r={},i=t.lang?t.lang.split(/\s+/):[];i.length>0&&(r.className=[`language-`+i[0]]);let a={type:`element`,tagName:`code`,properties:r,children:[{type:`text`,value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:`element`,tagName:`pre`,properties:{},children:[a]},e.patch(t,a),a}function Mt(e,t){let n={type:`element`,tagName:`del`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Nt(e,t){let n={type:`element`,tagName:`em`,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function Pt(e,t){let n=typeof e.options.clobberPrefix==`string`?e.options.clobberPrefix:`user-content-`,r=String(t.identifier).toUpperCase(),i=z(r.toLowerCase()),a=e.footnoteOrder.indexOf(r),o,s=e.footnoteCounts.get(r);s===void 0?(s=0,e.footnoteOrder.push(r),o=e.footnoteOrder.length):o=a+1,s+=1,e.footnoteCounts.set(r,s);let c={type:`element`,tagName:`a`,properties:{href:`#`+n+`fn-`+i,id:n+`fnref-`+i+(s>1?`-`+s:``),dataFootnoteRef:!0,ariaDescribedBy:[`footnote-label`]},children:[{type:`text`,value:String(o)}]};e.patch(t,c);let l={type:`element`,tagName:`sup`,properties:{},children:[c]};return e.patch(t,l),e.applyData(t,l)}function Ft(e,t){let n={type:`element`,tagName:`h`+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function It(e,t){if(e.options.allowDangerousHtml){let n={type:`raw`,value:t.value};return e.patch(t,n),e.applyData(t,n)}}function Lt(e,t){let n=t.referenceType,r=`]`;if(n===`collapsed`?r+=`[]`:n===`full`&&(r+=`[`+(t.label||t.identifier)+`]`),t.type===`imageReference`)return[{type:`text`,value:`![`+t.alt+r}];let i=e.all(t),a=i[0];a&&a.type===`text`?a.value=`[`+a.value:i.unshift({type:`text`,value:`[`});let o=i[i.length-1];return o&&o.type===`text`?o.value+=r:i.push({type:`text`,value:r}),i}function Rt(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Lt(e,t);let i={src:z(r.url||``),alt:t.alt};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`img`,properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function zt(e,t){let n={src:z(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`img`,properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function Bt(e,t){let n={type:`text`,value:t.value.replace(/\r?\n|\r/g,` `)};e.patch(t,n);let r={type:`element`,tagName:`code`,properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function Vt(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return Lt(e,t);let i={href:z(r.url||``)};r.title!==null&&r.title!==void 0&&(i.title=r.title);let a={type:`element`,tagName:`a`,properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function Ht(e,t){let n={href:z(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:`element`,tagName:`a`,properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Ut(e,t,n){let r=e.all(t),i=n?Wt(n):Gt(t),a={},o=[];if(typeof t.checked==`boolean`){let e=r[0],n;e&&e.type===`element`&&e.tagName===`p`?n=e:(n={type:`element`,tagName:`p`,properties:{},children:[]},r.unshift(n)),n.children.length>0&&n.children.unshift({type:`text`,value:` `}),n.children.unshift({type:`element`,tagName:`input`,properties:{type:`checkbox`,checked:t.checked,disabled:!0},children:[]}),a.className=[`task-list-item`]}let s=-1;for(;++s<r.length;){let e=r[s];(i||s!==0||e.type!==`element`||e.tagName!==`p`)&&o.push({type:`text`,value:`
|
|
@@ -12,4 +12,4 @@ import{n as e,r as t,t as n}from"./rolldown-runtime-XQCOJYun.js";import{A as r}f
|
|
|
12
12
|
`}),n}function wn(e){let t=0,n=e.charCodeAt(t);for(;n===9||n===32;)t++,n=e.charCodeAt(t);return e.slice(t)}function Tn(e,t){let n=yn(e,t),r=n.one(e,void 0),i=gn(n),a=Array.isArray(r)?{type:`root`,children:r}:r||{type:`root`,children:[]};return i&&(`children`in a,a.children.push({type:`text`,value:`
|
|
13
13
|
`},i)),a}function En(e,t){return e&&`run`in e?async function(n,r){let i=Tn(n,{file:r,...t});await e.run(i,r)}:function(n,r){return Tn(n,{file:r,...e||t})}}var G=d(),K=t(u(),1),Dn=[],On={allowDangerousHtml:!0},kn=/^(https?|ircs?|mailto|xmpp)$/i,An=[{from:`astPlugins`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowDangerousHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`allowNode`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowElement`},{from:`allowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`allowedElements`},{from:`className`,id:`remove-classname`},{from:`disallowedTypes`,id:`replace-allownode-allowedtypes-and-disallowedtypes`,to:`disallowedElements`},{from:`escapeHtml`,id:`remove-buggy-html-in-markdown-parser`},{from:`includeElementIndex`,id:`#remove-includeelementindex`},{from:`includeNodeIndex`,id:`change-includenodeindex-to-includeelementindex`},{from:`linkTarget`,id:`remove-linktarget`},{from:`plugins`,id:`change-plugins-to-remarkplugins`,to:`remarkPlugins`},{from:`rawSourcePos`,id:`#remove-rawsourcepos`},{from:`renderers`,id:`change-renderers-to-components`,to:`components`},{from:`source`,id:`change-source-to-children`,to:`children`},{from:`sourcePos`,id:`#remove-sourcepos`},{from:`transformImageUri`,id:`#add-urltransform`,to:`urlTransform`},{from:`transformLinkUri`,id:`#add-urltransform`,to:`urlTransform`}];function jn(e){let t=Mn(e),n=Nn(e);return Pn(t.runSync(t.parse(n),n),e)}function Mn(e){let t=e.rehypePlugins||Dn,n=e.remarkPlugins||Dn,r=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...On}:On;return te().use(g).use(n).use(En,r).use(t)}function Nn(e){let t=e.children||``,n=new m;return typeof t==`string`?n.value=t:``+t,n}function Pn(e,t){let n=t.allowedElements,r=t.allowElement,i=t.components,a=t.disallowedElements,o=t.skipHtml,s=t.unwrapDisallowed,c=t.urlTransform||Fn;for(let e of An)Object.hasOwn(t,e.from)&&``+e.from+(e.to?"use `"+e.to+"` instead":`remove it`)+e.id;return me(e,l),ct(e,{Fragment:G.Fragment,components:i,ignoreInvalidStyle:!0,jsx:G.jsx,jsxs:G.jsxs,passKeys:!0,passNode:!0});function l(e,t,i){if(e.type===`raw`&&i&&typeof t==`number`)return o?i.children.splice(t,1):i.children[t]={type:`text`,value:e.value},t;if(e.type===`element`){let t;for(t in R)if(Object.hasOwn(R,t)&&Object.hasOwn(e.properties,t)){let n=e.properties[t],r=R[t];(r===null||r.includes(e.tagName))&&(e.properties[t]=c(String(n||``),t,e))}}if(e.type===`element`){let o=n?!n.includes(e.tagName):a?a.includes(e.tagName):!1;if(!o&&r&&typeof t==`number`&&(o=!r(e,t,i)),o&&i&&typeof t==`number`)return s&&e.children?i.children.splice(t,1,...e.children):i.children.splice(t,1),t}}}function Fn(e){let t=e.indexOf(`:`),n=e.indexOf(`?`),r=e.indexOf(`#`),i=e.indexOf(`/`);return t===-1||i!==-1&&t>i||n!==-1&&t>n||r!==-1&&t>r||kn.test(e.slice(0,t))?e:``}var In=/[#.]/g;function Ln(e,t){let n=e||``,r={},i=0,a,o;for(;i<n.length;){In.lastIndex=i;let e=In.exec(n),t=n.slice(i,e?e.index:n.length);t&&(a?a===`#`?r.id=t:Array.isArray(r.className)?r.className.push(t):r.className=[t]:o=t,i+=t.length),e&&(a=e[0],i++)}return{type:`element`,tagName:o||t||`div`,properties:r,children:[]}}function Rn(e,t,n){let r=n?Wn(n):void 0;function i(n,i,...a){let o;if(n==null){o={type:`root`,children:[]};let e=i;a.unshift(e)}else{o=Ln(n,t);let s=o.tagName.toLowerCase(),c=r?r.get(s):void 0;if(o.tagName=c||s,zn(i))a.unshift(i);else for(let[t,n]of Object.entries(i))Bn(e,o.properties,t,n)}for(let e of a)Vn(o.children,e);return o.type===`element`&&o.tagName===`template`&&(o.content={type:`root`,children:o.children},o.children=[]),o}return i}function zn(e){if(typeof e!=`object`||!e||Array.isArray(e))return!0;if(typeof e.type!=`string`)return!1;let t=e,n=Object.keys(e);for(let e of n){let n=t[e];if(n&&typeof n==`object`){if(!Array.isArray(n))return!0;let e=n;for(let t of e)if(typeof t!=`number`&&typeof t!=`string`)return!0}}return!!(`children`in e&&Array.isArray(e.children))}function Bn(e,t,n,r){let i=Ve(e,n),a;if(r!=null){if(typeof r==`number`){if(Number.isNaN(r))return;a=r}else a=typeof r==`boolean`?r:typeof r==`string`?i.spaceSeparated?Ge(r):i.commaSeparated?ge(r):i.commaOrSpaceSeparated?Ge(ge(r).join(` `)):Hn(i,i.property,r):Array.isArray(r)?[...r]:i.property===`style`?Un(r):String(r);if(Array.isArray(a)){let e=[];for(let t of a)e.push(Hn(i,i.property,t));a=e}i.property===`className`&&Array.isArray(t.className)&&(a=t.className.concat(a)),t[i.property]=a}}function Vn(e,t){if(t!=null)if(typeof t==`number`||typeof t==`string`)e.push({type:`text`,value:String(t)});else if(Array.isArray(t))for(let n of t)Vn(e,n);else if(typeof t==`object`&&`type`in t)t.type===`root`?Vn(e,t.children):e.push(t);else throw Error("Expected node, nodes, or string, got `"+t+"`")}function Hn(e,t,n){if(typeof n==`string`){if(e.number&&n&&!Number.isNaN(Number(n)))return Number(n);if((e.boolean||e.overloadedBoolean)&&(n===``||C(n)===C(t)))return!0}return n}function Un(e){let t=[];for(let[n,r]of Object.entries(e))t.push([n,r].join(`: `));return t.join(`; `)}function Wn(e){let t=new Map;for(let n of e)t.set(n.toLowerCase(),n);return t}var Gn=`altGlyph.altGlyphDef.altGlyphItem.animateColor.animateMotion.animateTransform.clipPath.feBlend.feColorMatrix.feComponentTransfer.feComposite.feConvolveMatrix.feDiffuseLighting.feDisplacementMap.feDistantLight.feDropShadow.feFlood.feFuncA.feFuncB.feFuncG.feFuncR.feGaussianBlur.feImage.feMerge.feMergeNode.feMorphology.feOffset.fePointLight.feSpecularLighting.feSpotLight.feTile.feTurbulence.foreignObject.glyphRef.linearGradient.radialGradient.solidColor.textArea.textPath`.split(`.`),Kn=Rn(We,`div`),qn=Rn(I,`g`,Gn),Jn={html:`http://www.w3.org/1999/xhtml`,mathml:`http://www.w3.org/1998/Math/MathML`,svg:`http://www.w3.org/2000/svg`,xlink:`http://www.w3.org/1999/xlink`,xml:`http://www.w3.org/XML/1998/namespace`,xmlns:`http://www.w3.org/2000/xmlns/`};function Yn(e,t){return Xn(e,t||{})||{type:`root`,children:[]}}function Xn(e,t){let n=Zn(e,t);return n&&t.afterTransform&&t.afterTransform(e,n),n}function Zn(e,t){switch(e.nodeType){case 1:return nr(e,t);case 3:return er(e);case 8:return tr(e);case 9:return Qn(e,t);case 10:return $n();case 11:return Qn(e,t);default:return}}function Qn(e,t){return{type:`root`,children:rr(e,t)}}function $n(){return{type:`doctype`}}function er(e){return{type:`text`,value:e.nodeValue||``}}function tr(e){return{type:`comment`,value:e.nodeValue||``}}function nr(e,t){let n=e.namespaceURI,r=n===Jn.svg?qn:Kn,i=n===Jn.html?e.tagName.toLowerCase():e.tagName,a=n===Jn.html&&i===`template`?e.content:e,o=e.getAttributeNames(),s={},c=-1;for(;++c<o.length;)s[o[c]]=e.getAttribute(o[c])||``;return r(i,s,rr(a,t))}function rr(e,t){let n=e.childNodes,r=[],i=-1;for(;++i<n.length;){let e=Xn(n[i],t);e!==void 0&&r.push(e)}return r}var ir=new DOMParser;function ar(e,t){return Yn(t?.fragment?or(e):ir.parseFromString(e,`text/html`))}function or(e){let t=document.createElement(`template`);return t.innerHTML=e,t.content}var sr=(function(e,t,n){let r=ee(n);if(!e||!e.type||!e.children)throw Error(`Expected parent node`);if(typeof t==`number`){if(t<0||t===1/0)throw Error(`Expected positive finite number as index`)}else if(t=e.children.indexOf(t),t<0)throw Error(`Expected child node or index`);for(;++t<e.children.length;)if(r(e.children[t],t,e))return e.children[t]}),q=(function(e){if(e==null)return dr;if(typeof e==`string`)return lr(e);if(typeof e==`object`)return cr(e);if(typeof e==`function`)return ur(e);throw Error("Expected function, string, or array as `test`")});function cr(e){let t=[],n=-1;for(;++n<e.length;)t[n]=q(e[n]);return ur(r);function r(...e){let n=-1;for(;++n<t.length;)if(t[n].apply(this,e))return!0;return!1}}function lr(e){return ur(t);function t(t){return t.tagName===e}}function ur(e){return t;function t(t,n,r){return!!(fr(t)&&e.call(this,t,typeof n==`number`?n:void 0,r||void 0))}}function dr(e){return!!(e&&typeof e==`object`&&`type`in e&&e.type===`element`&&`tagName`in e&&typeof e.tagName==`string`)}function fr(e){return typeof e==`object`&&!!e&&`type`in e&&`tagName`in e}var pr=/\n/g,mr=/[\t ]+/g,J=q(`br`),hr=q(Or),gr=q(`p`),_r=q(`tr`),vr=q([`datalist`,`head`,`noembed`,`noframes`,`noscript`,`rp`,`script`,`style`,`template`,`title`,Dr,kr]),yr=q(`address.article.aside.blockquote.body.caption.center.dd.dialog.dir.dl.dt.div.figure.figcaption.footer.form,.h1.h2.h3.h4.h5.h6.header.hgroup.hr.html.legend.li.listing.main.menu.nav.ol.p.plaintext.pre.section.ul.xmp`.split(`.`));function br(e,t){let n=t||{},r=`children`in e?e.children:[],i=yr(e),a=Er(e,{whitespace:n.whitespace||`normal`,breakBefore:!1,breakAfter:!1}),o=[];(e.type===`text`||e.type===`comment`)&&o.push(...Cr(e,{whitespace:a,breakBefore:!0,breakAfter:!0}));let s=-1;for(;++s<r.length;)o.push(...xr(r[s],e,{whitespace:a,breakBefore:s?void 0:i,breakAfter:s<r.length-1?J(r[s+1]):i}));let c=[],l;for(s=-1;++s<o.length;){let e=o[s];typeof e==`number`?l!==void 0&&e>l&&(l=e):e&&(l!==void 0&&l>-1&&c.push(`
|
|
14
14
|
`.repeat(l)||` `),l=-1,c.push(e))}return c.join(``)}function xr(e,t,n){return e.type===`element`?Sr(e,t,n):e.type===`text`?n.whitespace===`normal`?Cr(e,n):wr(e):[]}function Sr(e,t,n){let r=Er(e,n),i=e.children||[],a=-1,o=[];if(vr(e))return o;let s,c;for(J(e)||_r(e)&&sr(t,e,_r)?c=`
|
|
15
|
-
`:gr(e)?(s=2,c=2):yr(e)&&(s=1,c=1);++a<i.length;)o=o.concat(xr(i[a],e,{whitespace:r,breakBefore:a?void 0:s,breakAfter:a<i.length-1?J(i[a+1]):c}));return hr(e)&&sr(t,e,hr)&&o.push(` `),s&&o.unshift(s),c&&o.push(c),o}function Cr(e,t){let n=String(e.value),r=[],i=[],a=0;for(;a<=n.length;){pr.lastIndex=a;let e=pr.exec(n),i=e&&`index`in e?e.index:n.length;r.push(Tr(n.slice(a,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,``),a===0?t.breakBefore:!0,i===n.length?t.breakAfter:!0)),a=i+1}let o=-1,s;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(i.push(r[o]),s=void 0):r[o]?(typeof s==`number`&&i.push(s),i.push(r[o]),s=0):(o===0||o===r.length-1)&&i.push(0);return i}function wr(e){return[String(e.value)]}function Tr(e,t,n){let r=[],i=0,a;for(;i<e.length;){mr.lastIndex=i;let n=mr.exec(e);a=n?n.index:e.length,!i&&!a&&n&&!t&&r.push(``),i!==a&&r.push(e.slice(i,a)),i=n?a+n[0].length:a}return i!==a&&!n&&r.push(``),r.join(` `)}function Er(e,t){if(e.type===`element`){let n=e.properties||{};switch(e.tagName){case`listing`:case`plaintext`:case`xmp`:return`pre`;case`nobr`:return`nowrap`;case`pre`:return n.wrap?`pre-wrap`:`pre`;case`td`:case`th`:return n.noWrap?`nowrap`:t.whitespace;case`textarea`:return`pre-wrap`;default:}}return t.whitespace}function Dr(e){return!!(e.properties||{}).hidden}function Or(e){return e.tagName===`td`||e.tagName===`th`}function kr(e){return e.tagName===`dialog`&&!(e.properties||{}).open}var Ar={},jr=[];function Mr(e){let t=e||Ar;return function(e,n){h(e,`element`,function(e,i){let a=Array.isArray(e.properties.className)?e.properties.className:jr,o=a.includes(`language-math`),s=a.includes(`math-display`),c=a.includes(`math-inline`),l=s;if(!o&&!s&&!c)return;let u=i[i.length-1],d=e;if(e.tagName===`code`&&o&&u&&u.type===`element`&&u.tagName===`pre`&&(d=u,u=i[i.length-2],l=!0),!u)return;let f=br(d,{whitespace:`pre`}),p;try{p=r.renderToString(f,{...t,displayMode:l,throwOnError:!0})}catch(a){let o=a,s=o.name.toLowerCase();n.message(`Could not render math with KaTeX`,{ancestors:[...i,e],cause:o,place:e.position,ruleId:s,source:`rehype-katex`});try{p=r.renderToString(f,{...t,displayMode:l,strict:`ignore`,throwOnError:!1})}catch{p=[{type:`element`,tagName:`span`,properties:{className:[`katex-error`],style:`color:`+(t.errorColor||`#cc0000`),title:String(a)},children:[{type:`text`,value:f}]}]}}typeof p==`string`&&(p=ar(p,{fragment:!0}).children);let m=u.children.indexOf(d);return u.children.splice(m,1,...p),_})}}var Y={}.hasOwnProperty;function Nr(e,t){let n={type:`root`,children:[]},r=Pr({schema:t?{...he,...t}:he,stack:[]},e);return r&&(Array.isArray(r)?r.length===1?n=r[0]:n.children=r:n=r),n}function Pr(e,t){if(t&&typeof t==`object`){let n=t;switch(typeof n.type==`string`?n.type:``){case`comment`:return Fr(e,n);case`doctype`:return Ir(e,n);case`element`:return Lr(e,n);case`root`:return Rr(e,n);case`text`:return zr(e,n);default:}}}function Fr(e,t){if(e.schema.allowComments){let e=typeof t.value==`string`?t.value:``,n=e.indexOf(`-->`),r={type:`comment`,value:n<0?e:e.slice(0,n)};return X(r,t),r}}function Ir(e,t){if(e.schema.allowDoctypes){let e={type:`doctype`};return X(e,t),e}}function Lr(e,t){let n=typeof t.tagName==`string`?t.tagName:``;e.stack.push(n);let r=Br(e,t.children),i=Vr(e,t.properties);e.stack.pop();let a=!1;if(n&&n!==`*`&&(!e.schema.tagNames||e.schema.tagNames.includes(n))&&(a=!0,e.schema.ancestors&&Y.call(e.schema.ancestors,n))){let t=e.schema.ancestors[n],r=-1;for(a=!1;++r<t.length;)e.stack.includes(t[r])&&(a=!0)}if(!a)return e.schema.strip&&!e.schema.strip.includes(n)?r:void 0;let o={type:`element`,tagName:n,properties:i,children:r};return X(o,t),o}function Rr(e,t){let n={type:`root`,children:Br(e,t.children)};return X(n,t),n}function zr(e,t){let n={type:`text`,value:typeof t.value==`string`?t.value:``};return X(n,t),n}function Br(e,t){let n=[];if(Array.isArray(t)){let r=t,i=-1;for(;++i<r.length;){let t=Pr(e,r[i]);t&&(Array.isArray(t)?n.push(...t):n.push(t))}}return n}function Vr(e,t){let n=e.stack[e.stack.length-1],r=e.schema.attributes,i=e.schema.required,a=r&&Y.call(r,n)?r[n]:void 0,o=r&&Y.call(r,`*`)?r[`*`]:void 0,s=t&&typeof t==`object`?t:{},c={},l;for(l in s)if(Y.call(s,l)){let t=s[l],n=Hr(e,Kr(a,l),l,t);n??=Hr(e,Kr(o,l),l,t),n!=null&&(c[l]=n)}if(i&&Y.call(i,n)){let e=i[n];for(l in e)Y.call(e,l)&&!Y.call(c,l)&&(c[l]=e[l])}return c}function Hr(e,t,n,r){return t?Array.isArray(r)?Ur(e,t,n,r):Wr(e,t,n,r):void 0}function Ur(e,t,n,r){let i=-1,a=[];for(;++i<r.length;){let o=Wr(e,t,n,r[i]);(typeof o==`number`||typeof o==`string`)&&a.push(o)}return a}function Wr(e,t,n,r){if(!(typeof r!=`boolean`&&typeof r!=`number`&&typeof r!=`string`)&&Gr(e,n,r)){if(typeof t==`object`&&t.length>1){let e=!1,n=0;for(;++n<t.length;){let i=t[n];if(i&&typeof i==`object`&&`flags`in i){if(i.test(String(r))){e=!0;break}}else if(i===r){e=!0;break}}if(!e)return}return e.schema.clobber&&e.schema.clobberPrefix&&e.schema.clobber.includes(n)?e.schema.clobberPrefix+r:r}}function Gr(e,t,n){let r=e.schema.protocols&&Y.call(e.schema.protocols,t)?e.schema.protocols[t]:void 0;if(!r||r.length===0)return!0;let i=String(n),a=i.indexOf(`:`),o=i.indexOf(`?`),s=i.indexOf(`#`),c=i.indexOf(`/`);if(a<0||c>-1&&a>c||o>-1&&a>o||s>-1&&a>s)return!0;let l=-1;for(;++l<r.length;){let e=r[l];if(a===e.length&&i.slice(0,e.length)===e)return!0}return!1}function X(e,t){let n=et(t);t.data&&(e.data=W(t.data)),n&&(e.position=n)}function Kr(e,t){let n,r=-1;if(e)for(;++r<e.length;){let i=e[r],a=typeof i==`string`?i:i[0];if(a===t)return i;a===`data*`&&(n=i)}if(t.length>4&&t.slice(0,4).toLowerCase()===`data`)return n}function qr(e){return function(t){return Nr(t,e)}}function Jr(e){y(e,[/\r?\n|\r/g,Yr])}function Yr(){return{type:`break`}}function Xr(){return function(e){Jr(e)}}var Zr=200,Qr=8*1024*1024,$r=1e5,ei=1e3,Z=new Map,ti=0;function ni(e,t){return(e.length+t.html.length)*2}function ri(){for(;(Z.size>Zr||ti>Qr)&&Z.size>0;){let e=Z.keys().next();if(e.done)break;let t=Z.get(e.value);Z.delete(e.value),t&&(ti-=t.bytes)}}function ii(e){return e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e]??e)}function ai(e){let t=0;for(let n=0;n<e.length;n+=1)if(e.charCodeAt(n)===10){if(n-t>ei)return!0;t=n+1}return e.length-t>ei}function oi(e,t){let n=ne(t);if(e.length>$r||ai(e))return{html:ii(e),language:n,highlighted:!1};let r=`${n}\u0000${e}`,i=Z.get(r);if(i)return Z.delete(r),Z.set(r,i),i.result;let a=x(e,t),o=ni(r,a);return o<=Qr&&(Z.set(r,{result:a,bytes:o}),ti+=o,ri()),a}function si(e){let[t,n]=(0,K.useState)(!1),r=(0,K.useMemo)(()=>oi(e.code,e.language),[e.code,e.language]),i=r.language||`text`;async function a(){let t=await f(e.code);if(t.ok){n(!0),window.setTimeout(()=>n(!1),1200);return}console.error(`[notes:code-copy]`,t.error)}return(0,G.jsxs)(`div`,{className:`notes-code-block`,children:[(0,G.jsx)(`div`,{className:`notes-code-header`,children:(0,G.jsx)(`button`,{type:`button`,onClick:()=>void a(),children:t?`Copied`:i})}),(0,G.jsx)(`pre`,{children:(0,G.jsx)(`code`,{className:`hljs language-${i}`,"data-highlighted":r.highlighted?`yes`:`no`,dangerouslySetInnerHTML:{__html:r.html}})})]})}var ci=(0,K.memo)(si),li=100,ui=null,Q=new Map;async function di(){return ui||=(await i(()=>import(`./mermaid.core-BEuf6y5_.js`),__vite__mapDeps([0]))).default,ui.initialize(c()),ui}function fi(){return document.documentElement.getAttribute(`data-theme`)??`default`}function pi(e,t){if(Q.set(e,t),Q.size<=li)return;let n=Q.keys().next().value;n&&Q.delete(n)}function mi(e){let t=(0,K.useId)().replace(/[^a-zA-Z0-9_-]/g,``),n=(0,K.useMemo)(()=>l(e.code),[e.code]),r=fi(),i=(0,K.useMemo)(()=>`${r}\n${n}`,[n,r]),[c,u]=(0,K.useState)(()=>Q.get(i)??{status:`loading`,sourceKey:i});return(0,K.useEffect)(()=>{let e=!1,r=Q.get(i);if(r)return u(r),()=>{e=!0};async function c(){u(e=>e.status===`ready`&&e.sourceKey===i?e:{status:`loading`,sourceKey:i});try{let r=await di(),c=`notes-mermaid-${t}`,l;try{({svg:l}=await r.render(c,n))}catch(e){let t=o(n);if(!t)throw e;({svg:l}=await r.render(`${c}-retry`,t))}if(!e){let e={status:`ready`,sourceKey:i,svg:s(l),wide:a(n)};pi(i,e),u(e)}}catch(t){e||u({status:`error`,sourceKey:i,message:t instanceof Error?t.message:`Mermaid render failed`})}}return c(),()=>{e=!0}},[n,t,i]),c.status===`ready`?(0,G.jsx)(`div`,{className:`notes-mermaid-block is-ready${c.wide?` mermaid-type-wide`:``}`,dangerouslySetInnerHTML:{__html:c.svg}}):c.status===`error`?(0,G.jsxs)(`div`,{className:`notes-mermaid-block is-error`,children:[(0,G.jsx)(`strong`,{children:`Mermaid render failed`}),(0,G.jsx)(`span`,{children:c.message}),(0,G.jsx)(`pre`,{children:(0,G.jsx)(`code`,{children:e.code})})]}):(0,G.jsx)(`div`,{className:`notes-mermaid-block is-loading`,role:`status`,"aria-label":`Diagram loading`,children:`Rendering diagram...`})}function hi(e){return se(e)}function gi(e,t,n){if(!e)return[e];let r=!!t.notes?.length;if(t.lookup.size===0&&!r)return[e];fe.lastIndex=0;let i=[],a=0,o=0,s;for(;(s=fe.exec(e))!==null;){let r=s.index,c=r+s[0].length;if(ue(e,r))continue;let l=t.lookup.get(s[0])??re(s[0],t.outgoing,t.notes,r);if(!l)continue;r>a&&i.push(e.slice(a,r));let u=v(l,s[0]),d=`${n}-wl-${o++}`;if(l.status===`resolved`&&l.resolvedPath){let e=l.resolvedPath;i.push((0,K.createElement)(`a`,{key:d,className:`notes-wikilink`,href:`#${encodeURIComponent(e)}`,title:e,"data-notes-wiki-status":l.status,onClick:n=>{n.preventDefault(),t.onNavigate(e)}},u))}else{let e=ce(l);i.push((0,K.createElement)(`span`,{key:d,className:`notes-wikilink is-broken`,title:e,"data-notes-wiki-status":l.status,"aria-label":`Broken wikilink: ${s[1]}`},u))}a=c}return a===0?[e]:(a<e.length&&i.push(e.slice(a)),i)}function _i(e,t,n){if(t.lookup.size===0&&!t.notes?.length)return e;let r=[],i=0;return K.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=gi(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}if(typeof e==`number`||typeof e==`boolean`||e==null){r.push(e);return}if((0,K.isValidElement)(e)){r.push(e);return}r.push(e)}),r}var vi=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/;function yi(e){let t=vi.exec(e);if(!t)return{frontmatterRaw:null,body:e};let n=t[0];return{frontmatterRaw:n,body:e.slice(n.length)}}function $(e,t){return t?`${e} ${t}`:e}function bi(e){let t=0,n=e=>{if(Array.isArray(e)){e.forEach(n);return}(0,K.isValidElement)(e)&&(e.props.node?.tagName===`tr`&&(t=Math.max(t,K.Children.count(e.props.children))),K.Children.forEach(e.props.children,n))};return K.Children.forEach(e,n),Math.max(1,t)}function xi(e){return e<=1?`minmax(0, 1fr)`:e===2?`max-content minmax(16rem, 1fr)`:e===3?`max-content minmax(12rem, .45fr) minmax(18rem, 1fr)`:`max-content repeat(${e-1}, minmax(12rem, 1fr))`}function Si(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(Si).join(``):(0,K.isValidElement)(e)?Si(e.props.children):``}function Ci(e){return(0,K.isValidElement)(e)?(e.props.className??``).match(/language-([^\s]+)/)?.[1]??`text`:`text`}var wi=e=>{},Ti=/(?:~\/[^\s)`\]"'<>]+|\/(?:Users|home|tmp|var|opt|private)\/[^\s)`\]"'<>]+)/g,Ei=/[.,!?:;]+$/;function Di(e){return e.startsWith(`~/`)||/^\/(?:Users|home|tmp|var|opt|private)\//.test(e)}function Oi(e){let t=e.split(`/`).pop()||e;return/\.\w{1,10}$/.test(t)?t:e}function ki(e,t,n){if(!e||!t)return[e];Ti.lastIndex=0;let r=[],i=0,a=0,o;for(;(o=Ti.exec(e))!==null;){let s=o[0],c=s.replace(Ei,``);if(!Di(c))continue;o.index>i&&r.push(e.slice(i,o.index));let l=s.slice(c.length);r.push((0,K.createElement)(`button`,{key:`${n}-lf-${a++}`,type:`button`,className:`markdown-local-file-link`,title:c,onClick:e=>{e.preventDefault(),t(c)}},Oi(c))),l&&r.push(l),i=o.index+s.length}return i===0?[e]:(i<e.length&&r.push(e.slice(i)),r)}function Ai(e,t,n){if(!t)return e;let r=[],i=0;return K.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=ki(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}r.push(e)}),r}function ji(e){let t=(0,K.useMemo)(()=>yi(e.markdown).body,[e.markdown]),n=(0,K.useMemo)(()=>({lookup:hi(e.outgoing),outgoing:e.outgoing,notes:e.notes,onNavigate:e.onWikiLinkNavigate??wi}),[e.outgoing,e.notes,e.onWikiLinkNavigate]),r=(0,K.useMemo)(()=>{let t=(t,r)=>Ai(_i(t,n,r),e.onLocalFileOpen,r),r=e=>n=>{let{children:r,node:i,className:a,id:o,style:s}=n,c=t(r,e);return(0,K.createElement)(e,{className:a,id:o,style:s},c)},i=e=>n=>{let{children:r,node:i,className:a,style:o,align:s}=n,c=t(r,e);return(0,G.jsx)(`span`,{className:$(`markdown-linear-table-cell markdown-linear-table-${e}`,a),style:o,"data-align":s||void 0,children:c})},a={a:({href:e,children:t,node:n,...r})=>{let i=typeof e==`string`&&de(e)?e:void 0,a=!!(i&&/^https?:\/\//i.test(i));return(0,G.jsx)(`a`,{...r,href:i,target:a?`_blank`:void 0,rel:a?`noreferrer noopener`:void 0,children:t})},code:({className:e,children:t})=>(0,G.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>{let t=Ci(e),n=Si(e).replace(/\n$/,``);return t===`mermaid`?(0,G.jsx)(mi,{code:n}):(0,G.jsx)(ci,{code:n,language:t})},img:({src:e,alt:t,...n})=>{let r=typeof e==`string`?ae(e):``;return r?r.endsWith(`.pdf`)?(0,G.jsx)(`iframe`,{src:r,title:t??`PDF embed`,className:`notes-pdf-embed`}):(0,G.jsx)(`img`,{...n,src:r,alt:t??``,loading:`lazy`}):null},p:r(`p`),li:r(`li`),h1:r(`h1`),h2:r(`h2`),h3:r(`h3`),h4:r(`h4`),h5:r(`h5`),h6:r(`h6`),blockquote:r(`blockquote`),td:r(`td`),th:r(`th`),em:r(`em`),strong:r(`strong`),del:r(`del`)};return e.tableMode===`linear`&&(a.table=({children:e,node:t,className:n,style:r})=>{let i={...r,"--markdown-linear-table-grid":xi(bi(e))};return(0,G.jsx)(`div`,{className:$(`markdown-linear-table`,n),style:i,role:`list`,children:e})},a.thead=({children:e,node:t,className:n,style:r})=>(0,G.jsx)(`div`,{className:$(`markdown-linear-table-head`,n),style:r,children:e}),a.tbody=({children:e,node:t,className:n,style:r})=>(0,G.jsx)(`div`,{className:$(`markdown-linear-table-body`,n),style:r,children:e}),a.tr=({children:e,node:t,className:n,style:r})=>(0,G.jsx)(`div`,{className:$(`markdown-linear-table-row`,n),style:r,role:`listitem`,children:e}),a.th=i(`th`),a.td=i(`td`)),a},[n,e.onLocalFileOpen,e.tableMode]);return(0,G.jsx)(jn,{skipHtml:!0,urlTransform:pe,remarkPlugins:[oe,Xr,le],rehypePlugins:[[qr,b],Mr],components:r,children:t})}var Mi=(0,K.memo)(ji);export{ci as n,Mi as t};
|
|
15
|
+
`:gr(e)?(s=2,c=2):yr(e)&&(s=1,c=1);++a<i.length;)o=o.concat(xr(i[a],e,{whitespace:r,breakBefore:a?void 0:s,breakAfter:a<i.length-1?J(i[a+1]):c}));return hr(e)&&sr(t,e,hr)&&o.push(` `),s&&o.unshift(s),c&&o.push(c),o}function Cr(e,t){let n=String(e.value),r=[],i=[],a=0;for(;a<=n.length;){pr.lastIndex=a;let e=pr.exec(n),i=e&&`index`in e?e.index:n.length;r.push(Tr(n.slice(a,i).replace(/[\u061C\u200E\u200F\u202A-\u202E\u2066-\u2069]/g,``),a===0?t.breakBefore:!0,i===n.length?t.breakAfter:!0)),a=i+1}let o=-1,s;for(;++o<r.length;)r[o].charCodeAt(r[o].length-1)===8203||o<r.length-1&&r[o+1].charCodeAt(0)===8203?(i.push(r[o]),s=void 0):r[o]?(typeof s==`number`&&i.push(s),i.push(r[o]),s=0):(o===0||o===r.length-1)&&i.push(0);return i}function wr(e){return[String(e.value)]}function Tr(e,t,n){let r=[],i=0,a;for(;i<e.length;){mr.lastIndex=i;let n=mr.exec(e);a=n?n.index:e.length,!i&&!a&&n&&!t&&r.push(``),i!==a&&r.push(e.slice(i,a)),i=n?a+n[0].length:a}return i!==a&&!n&&r.push(``),r.join(` `)}function Er(e,t){if(e.type===`element`){let n=e.properties||{};switch(e.tagName){case`listing`:case`plaintext`:case`xmp`:return`pre`;case`nobr`:return`nowrap`;case`pre`:return n.wrap?`pre-wrap`:`pre`;case`td`:case`th`:return n.noWrap?`nowrap`:t.whitespace;case`textarea`:return`pre-wrap`;default:}}return t.whitespace}function Dr(e){return!!(e.properties||{}).hidden}function Or(e){return e.tagName===`td`||e.tagName===`th`}function kr(e){return e.tagName===`dialog`&&!(e.properties||{}).open}var Ar={},jr=[];function Mr(e){let t=e||Ar;return function(e,n){h(e,`element`,function(e,i){let a=Array.isArray(e.properties.className)?e.properties.className:jr,o=a.includes(`language-math`),s=a.includes(`math-display`),c=a.includes(`math-inline`),l=s;if(!o&&!s&&!c)return;let u=i[i.length-1],d=e;if(e.tagName===`code`&&o&&u&&u.type===`element`&&u.tagName===`pre`&&(d=u,u=i[i.length-2],l=!0),!u)return;let f=br(d,{whitespace:`pre`}),p;try{p=r.renderToString(f,{...t,displayMode:l,throwOnError:!0})}catch(a){let o=a,s=o.name.toLowerCase();n.message(`Could not render math with KaTeX`,{ancestors:[...i,e],cause:o,place:e.position,ruleId:s,source:`rehype-katex`});try{p=r.renderToString(f,{...t,displayMode:l,strict:`ignore`,throwOnError:!1})}catch{p=[{type:`element`,tagName:`span`,properties:{className:[`katex-error`],style:`color:`+(t.errorColor||`#cc0000`),title:String(a)},children:[{type:`text`,value:f}]}]}}typeof p==`string`&&(p=ar(p,{fragment:!0}).children);let m=u.children.indexOf(d);return u.children.splice(m,1,...p),_})}}var Y={}.hasOwnProperty;function Nr(e,t){let n={type:`root`,children:[]},r=Pr({schema:t?{...he,...t}:he,stack:[]},e);return r&&(Array.isArray(r)?r.length===1?n=r[0]:n.children=r:n=r),n}function Pr(e,t){if(t&&typeof t==`object`){let n=t;switch(typeof n.type==`string`?n.type:``){case`comment`:return Fr(e,n);case`doctype`:return Ir(e,n);case`element`:return Lr(e,n);case`root`:return Rr(e,n);case`text`:return zr(e,n);default:}}}function Fr(e,t){if(e.schema.allowComments){let e=typeof t.value==`string`?t.value:``,n=e.indexOf(`-->`),r={type:`comment`,value:n<0?e:e.slice(0,n)};return X(r,t),r}}function Ir(e,t){if(e.schema.allowDoctypes){let e={type:`doctype`};return X(e,t),e}}function Lr(e,t){let n=typeof t.tagName==`string`?t.tagName:``;e.stack.push(n);let r=Br(e,t.children),i=Vr(e,t.properties);e.stack.pop();let a=!1;if(n&&n!==`*`&&(!e.schema.tagNames||e.schema.tagNames.includes(n))&&(a=!0,e.schema.ancestors&&Y.call(e.schema.ancestors,n))){let t=e.schema.ancestors[n],r=-1;for(a=!1;++r<t.length;)e.stack.includes(t[r])&&(a=!0)}if(!a)return e.schema.strip&&!e.schema.strip.includes(n)?r:void 0;let o={type:`element`,tagName:n,properties:i,children:r};return X(o,t),o}function Rr(e,t){let n={type:`root`,children:Br(e,t.children)};return X(n,t),n}function zr(e,t){let n={type:`text`,value:typeof t.value==`string`?t.value:``};return X(n,t),n}function Br(e,t){let n=[];if(Array.isArray(t)){let r=t,i=-1;for(;++i<r.length;){let t=Pr(e,r[i]);t&&(Array.isArray(t)?n.push(...t):n.push(t))}}return n}function Vr(e,t){let n=e.stack[e.stack.length-1],r=e.schema.attributes,i=e.schema.required,a=r&&Y.call(r,n)?r[n]:void 0,o=r&&Y.call(r,`*`)?r[`*`]:void 0,s=t&&typeof t==`object`?t:{},c={},l;for(l in s)if(Y.call(s,l)){let t=s[l],n=Hr(e,Kr(a,l),l,t);n??=Hr(e,Kr(o,l),l,t),n!=null&&(c[l]=n)}if(i&&Y.call(i,n)){let e=i[n];for(l in e)Y.call(e,l)&&!Y.call(c,l)&&(c[l]=e[l])}return c}function Hr(e,t,n,r){return t?Array.isArray(r)?Ur(e,t,n,r):Wr(e,t,n,r):void 0}function Ur(e,t,n,r){let i=-1,a=[];for(;++i<r.length;){let o=Wr(e,t,n,r[i]);(typeof o==`number`||typeof o==`string`)&&a.push(o)}return a}function Wr(e,t,n,r){if(!(typeof r!=`boolean`&&typeof r!=`number`&&typeof r!=`string`)&&Gr(e,n,r)){if(typeof t==`object`&&t.length>1){let e=!1,n=0;for(;++n<t.length;){let i=t[n];if(i&&typeof i==`object`&&`flags`in i){if(i.test(String(r))){e=!0;break}}else if(i===r){e=!0;break}}if(!e)return}return e.schema.clobber&&e.schema.clobberPrefix&&e.schema.clobber.includes(n)?e.schema.clobberPrefix+r:r}}function Gr(e,t,n){let r=e.schema.protocols&&Y.call(e.schema.protocols,t)?e.schema.protocols[t]:void 0;if(!r||r.length===0)return!0;let i=String(n),a=i.indexOf(`:`),o=i.indexOf(`?`),s=i.indexOf(`#`),c=i.indexOf(`/`);if(a<0||c>-1&&a>c||o>-1&&a>o||s>-1&&a>s)return!0;let l=-1;for(;++l<r.length;){let e=r[l];if(a===e.length&&i.slice(0,e.length)===e)return!0}return!1}function X(e,t){let n=et(t);t.data&&(e.data=W(t.data)),n&&(e.position=n)}function Kr(e,t){let n,r=-1;if(e)for(;++r<e.length;){let i=e[r],a=typeof i==`string`?i:i[0];if(a===t)return i;a===`data*`&&(n=i)}if(t.length>4&&t.slice(0,4).toLowerCase()===`data`)return n}function qr(e){return function(t){return Nr(t,e)}}function Jr(e){y(e,[/\r?\n|\r/g,Yr])}function Yr(){return{type:`break`}}function Xr(){return function(e){Jr(e)}}var Zr=200,Qr=8*1024*1024,$r=1e5,ei=1e3,Z=new Map,ti=0;function ni(e,t){return(e.length+t.html.length)*2}function ri(){for(;(Z.size>Zr||ti>Qr)&&Z.size>0;){let e=Z.keys().next();if(e.done)break;let t=Z.get(e.value);Z.delete(e.value),t&&(ti-=t.bytes)}}function ii(e){return e.replace(/[&<>"']/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`})[e]??e)}function ai(e){let t=0;for(let n=0;n<e.length;n+=1)if(e.charCodeAt(n)===10){if(n-t>ei)return!0;t=n+1}return e.length-t>ei}function oi(e,t){let n=ne(t);if(e.length>$r||ai(e))return{html:ii(e),language:n,highlighted:!1};let r=`${n}\u0000${e}`,i=Z.get(r);if(i)return Z.delete(r),Z.set(r,i),i.result;let a=x(e,t),o=ni(r,a);return o<=Qr&&(Z.set(r,{result:a,bytes:o}),ti+=o,ri()),a}function si(e){let[t,n]=(0,K.useState)(!1),r=(0,K.useMemo)(()=>oi(e.code,e.language),[e.code,e.language]),i=r.language||`text`;async function a(){let t=await f(e.code);if(t.ok){n(!0),window.setTimeout(()=>n(!1),1200);return}console.error(`[notes:code-copy]`,t.error)}return(0,G.jsxs)(`div`,{className:`notes-code-block`,children:[(0,G.jsx)(`div`,{className:`notes-code-header`,children:(0,G.jsx)(`button`,{type:`button`,onClick:()=>void a(),children:t?`Copied`:i})}),(0,G.jsx)(`pre`,{children:(0,G.jsx)(`code`,{className:`hljs language-${i}`,"data-highlighted":r.highlighted?`yes`:`no`,dangerouslySetInnerHTML:{__html:r.html}})})]})}var ci=(0,K.memo)(si),li=100,ui=null,Q=new Map;async function di(){return ui||=(await i(()=>import(`./mermaid.core-J6tiqiVK.js`),__vite__mapDeps([0]))).default,ui.initialize(c()),ui}function fi(){return document.documentElement.getAttribute(`data-theme`)??`default`}function pi(e,t){if(Q.set(e,t),Q.size<=li)return;let n=Q.keys().next().value;n&&Q.delete(n)}function mi(e){let t=(0,K.useId)().replace(/[^a-zA-Z0-9_-]/g,``),n=(0,K.useMemo)(()=>l(e.code),[e.code]),r=fi(),i=(0,K.useMemo)(()=>`${r}\n${n}`,[n,r]),[c,u]=(0,K.useState)(()=>Q.get(i)??{status:`loading`,sourceKey:i});return(0,K.useEffect)(()=>{let e=!1,r=Q.get(i);if(r)return u(r),()=>{e=!0};async function c(){u(e=>e.status===`ready`&&e.sourceKey===i?e:{status:`loading`,sourceKey:i});try{let r=await di(),c=`notes-mermaid-${t}`,l;try{({svg:l}=await r.render(c,n))}catch(e){let t=o(n);if(!t)throw e;({svg:l}=await r.render(`${c}-retry`,t))}if(!e){let e={status:`ready`,sourceKey:i,svg:s(l),wide:a(n)};pi(i,e),u(e)}}catch(t){e||u({status:`error`,sourceKey:i,message:t instanceof Error?t.message:`Mermaid render failed`})}}return c(),()=>{e=!0}},[n,t,i]),c.status===`ready`?(0,G.jsx)(`div`,{className:`notes-mermaid-block is-ready${c.wide?` mermaid-type-wide`:``}`,dangerouslySetInnerHTML:{__html:c.svg}}):c.status===`error`?(0,G.jsxs)(`div`,{className:`notes-mermaid-block is-error`,children:[(0,G.jsx)(`strong`,{children:`Mermaid render failed`}),(0,G.jsx)(`span`,{children:c.message}),(0,G.jsx)(`pre`,{children:(0,G.jsx)(`code`,{children:e.code})})]}):(0,G.jsx)(`div`,{className:`notes-mermaid-block is-loading`,role:`status`,"aria-label":`Diagram loading`,children:`Rendering diagram...`})}function hi(e){return se(e)}function gi(e,t,n){if(!e)return[e];let r=!!t.notes?.length;if(t.lookup.size===0&&!r)return[e];fe.lastIndex=0;let i=[],a=0,o=0,s;for(;(s=fe.exec(e))!==null;){let r=s.index,c=r+s[0].length;if(ue(e,r))continue;let l=t.lookup.get(s[0])??re(s[0],t.outgoing,t.notes,r);if(!l)continue;r>a&&i.push(e.slice(a,r));let u=v(l,s[0]),d=`${n}-wl-${o++}`;if(l.status===`resolved`&&l.resolvedPath){let e=l.resolvedPath;i.push((0,K.createElement)(`a`,{key:d,className:`notes-wikilink`,href:`#${encodeURIComponent(e)}`,title:e,"data-notes-wiki-status":l.status,onClick:n=>{n.preventDefault(),t.onNavigate(e)}},u))}else{let e=ce(l);i.push((0,K.createElement)(`span`,{key:d,className:`notes-wikilink is-broken`,title:e,"data-notes-wiki-status":l.status,"aria-label":`Broken wikilink: ${s[1]}`},u))}a=c}return a===0?[e]:(a<e.length&&i.push(e.slice(a)),i)}function _i(e,t,n){if(t.lookup.size===0&&!t.notes?.length)return e;let r=[],i=0;return K.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=gi(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}if(typeof e==`number`||typeof e==`boolean`||e==null){r.push(e);return}if((0,K.isValidElement)(e)){r.push(e);return}r.push(e)}),r}var vi=/^---[ \t]*\r?\n[\s\S]*?\r?\n---[ \t]*(?:\r?\n|$)/;function yi(e){let t=vi.exec(e);if(!t)return{frontmatterRaw:null,body:e};let n=t[0];return{frontmatterRaw:n,body:e.slice(n.length)}}function $(e,t){return t?`${e} ${t}`:e}function bi(e){let t=0,n=e=>{if(Array.isArray(e)){e.forEach(n);return}(0,K.isValidElement)(e)&&(e.props.node?.tagName===`tr`&&(t=Math.max(t,K.Children.count(e.props.children))),K.Children.forEach(e.props.children,n))};return K.Children.forEach(e,n),Math.max(1,t)}function xi(e){return e<=1?`minmax(0, 1fr)`:e===2?`max-content minmax(16rem, 1fr)`:e===3?`max-content minmax(12rem, .45fr) minmax(18rem, 1fr)`:`max-content repeat(${e-1}, minmax(12rem, 1fr))`}function Si(e){return typeof e==`string`||typeof e==`number`?String(e):Array.isArray(e)?e.map(Si).join(``):(0,K.isValidElement)(e)?Si(e.props.children):``}function Ci(e){return(0,K.isValidElement)(e)?(e.props.className??``).match(/language-([^\s]+)/)?.[1]??`text`:`text`}var wi=e=>{},Ti=/(?:~\/[^\s)`\]"'<>]+|\/(?:Users|home|tmp|var|opt|private)\/[^\s)`\]"'<>]+)/g,Ei=/[.,!?:;]+$/;function Di(e){return e.startsWith(`~/`)||/^\/(?:Users|home|tmp|var|opt|private)\//.test(e)}function Oi(e){let t=e.split(`/`).pop()||e;return/\.\w{1,10}$/.test(t)?t:e}function ki(e,t,n){if(!e||!t)return[e];Ti.lastIndex=0;let r=[],i=0,a=0,o;for(;(o=Ti.exec(e))!==null;){let s=o[0],c=s.replace(Ei,``);if(!Di(c))continue;o.index>i&&r.push(e.slice(i,o.index));let l=s.slice(c.length);r.push((0,K.createElement)(`button`,{key:`${n}-lf-${a++}`,type:`button`,className:`markdown-local-file-link`,title:c,onClick:e=>{e.preventDefault(),t(c)}},Oi(c))),l&&r.push(l),i=o.index+s.length}return i===0?[e]:(i<e.length&&r.push(e.slice(i)),r)}function Ai(e,t,n){if(!t)return e;let r=[],i=0;return K.Children.forEach(e,(e,a)=>{if(typeof e==`string`){let o=ki(e,t,`${n}-${i++}-${a}`);for(let e of o)r.push(e);return}r.push(e)}),r}function ji(e){let t=(0,K.useMemo)(()=>yi(e.markdown).body,[e.markdown]),n=(0,K.useMemo)(()=>({lookup:hi(e.outgoing),outgoing:e.outgoing,notes:e.notes,onNavigate:e.onWikiLinkNavigate??wi}),[e.outgoing,e.notes,e.onWikiLinkNavigate]),r=(0,K.useMemo)(()=>{let t=(t,r)=>Ai(_i(t,n,r),e.onLocalFileOpen,r),r=e=>n=>{let{children:r,node:i,className:a,id:o,style:s}=n,c=t(r,e);return(0,K.createElement)(e,{className:a,id:o,style:s},c)},i=e=>n=>{let{children:r,node:i,className:a,style:o,align:s}=n,c=t(r,e);return(0,G.jsx)(`span`,{className:$(`markdown-linear-table-cell markdown-linear-table-${e}`,a),style:o,"data-align":s||void 0,children:c})},a={a:({href:e,children:t,node:n,...r})=>{let i=typeof e==`string`&&de(e)?e:void 0,a=!!(i&&/^https?:\/\//i.test(i));return(0,G.jsx)(`a`,{...r,href:i,target:a?`_blank`:void 0,rel:a?`noreferrer noopener`:void 0,children:t})},code:({className:e,children:t})=>(0,G.jsx)(`code`,{className:e,children:t}),pre:({children:e})=>{let t=Ci(e),n=Si(e).replace(/\n$/,``);return t===`mermaid`?(0,G.jsx)(mi,{code:n}):(0,G.jsx)(ci,{code:n,language:t})},img:({src:e,alt:t,...n})=>{let r=typeof e==`string`?ae(e):``;return r?r.endsWith(`.pdf`)?(0,G.jsx)(`iframe`,{src:r,title:t??`PDF embed`,className:`notes-pdf-embed`}):(0,G.jsx)(`img`,{...n,src:r,alt:t??``,loading:`lazy`}):null},p:r(`p`),li:r(`li`),h1:r(`h1`),h2:r(`h2`),h3:r(`h3`),h4:r(`h4`),h5:r(`h5`),h6:r(`h6`),blockquote:r(`blockquote`),td:r(`td`),th:r(`th`),em:r(`em`),strong:r(`strong`),del:r(`del`)};return e.tableMode===`linear`&&(a.table=({children:e,node:t,className:n,style:r})=>{let i={...r,"--markdown-linear-table-grid":xi(bi(e))};return(0,G.jsx)(`div`,{className:$(`markdown-linear-table`,n),style:i,role:`list`,children:e})},a.thead=({children:e,node:t,className:n,style:r})=>(0,G.jsx)(`div`,{className:$(`markdown-linear-table-head`,n),style:r,children:e}),a.tbody=({children:e,node:t,className:n,style:r})=>(0,G.jsx)(`div`,{className:$(`markdown-linear-table-body`,n),style:r,children:e}),a.tr=({children:e,node:t,className:n,style:r})=>(0,G.jsx)(`div`,{className:$(`markdown-linear-table-row`,n),style:r,role:`listitem`,children:e}),a.th=i(`th`),a.td=i(`td`)),a},[n,e.onLocalFileOpen,e.tableMode]);return(0,G.jsx)(jn,{skipHtml:!0,urlTransform:pe,remarkPlugins:[oe,Xr,le],rehypePlugins:[[qr,b],Mr],components:r,children:t})}var Mi=(0,K.memo)(ji);export{ci as n,Mi as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./MarkdownRenderer-DZ-hWmCB.js";export{e as MarkdownRenderer};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-DZ1lls_P.js";import{t as c}from"./fields-E1L8aEhU.js";import{t as l}from"./InlineWarn-B3bJfG-Z.js";var u=e(t(),1),d=/^[a-zA-Z0-9._-]+$/;function f(e){return typeof e!=`string`||e.length===0||e.length>64?!1:d.test(e)}function p(e){if(!e||typeof e!=`object`)return{servers:{}};let t=e,n=t.servers,r={};if(n&&typeof n==`object`&&!Array.isArray(n))for(let[e,t]of Object.entries(n))r[e]=m(t);return{...t,servers:r}}function m(e){if(!e||typeof e!=`object`)return{};let t=e,n=typeof t.command==`string`&&t.command?t.command:void 0,r=typeof t.url==`string`&&t.url?t.url:void 0,i=Array.isArray(t.args)?t.args.filter(e=>typeof e==`string`):void 0,a=t.env&&typeof t.env==`object`&&!Array.isArray(t.env)?Object.fromEntries(Object.entries(t.env).filter(e=>typeof e[1]==`string`)):void 0,o=t.headers&&typeof t.headers==`object`&&!Array.isArray(t.headers)?Object.fromEntries(Object.entries(t.headers).filter(e=>typeof e[1]==`string`)):void 0,s=typeof t.autostart==`boolean`?t.autostart:void 0,c={};n&&(c.command=n),r&&(c.url=r),i&&i.length>0&&(c.args=i),a&&Object.keys(a).length>0&&(c.env=a),o&&Object.keys(o).length>0&&(c.headers=o),s!==void 0&&(c.autostart=s);for(let[e,n]of Object.entries(t))[`command`,`url`,`args`,`env`,`headers`,`autostart`].includes(e)||(c[e]=n);return c}function h(e=`local`){return e===`remote`?{url:``}:{command:``}}function g(e){return!e||e.length===0?``:e.join(`
|
|
2
2
|
`)}function _(e){if(!e)return[];let t=e.split(/\r?\n|,/),n=[];for(let e of t){let t=e.trim();t.length>0&&n.push(t)}return n}var v=/^[A-Za-z_][A-Za-z0-9_]*$/;function y(e){let t={};if(!e)return t;for(let n of e.split(/\r?\n/)){let e=n.trim();if(e===``||e.startsWith(`#`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(0,r).trim(),a=e.slice(r+1);v.test(i)&&(t[i]=a)}return t}function b(e){return e?Object.entries(e).map(([e,t])=>`${e}=${t}`).join(`
|
|
3
3
|
`):``}function x(e,t){if(!f(e))return{kind:`invalid`,reason:`Server name must match [a-zA-Z0-9._-] (1–64 chars).`};let n=t.command&&t.command.trim()!==``,r=t.url&&String(t.url).trim()!==``;return!n&&!r?{kind:`invalid`,reason:`Command or URL is required.`}:{kind:`ok`}}function S(e){if(e.url)return`remote`;if(!e.command)return null;let t=e.command;return t===`npx`||t.endsWith(`/npx`)?`npx`:t===`uvx`||t===`uv`||t.endsWith(`/uvx`)?`uvx`:t===`docker`||t.endsWith(`/docker`)?`docker`:null}function ee(e){return Object.values(e).filter(e=>e.command?e.command===`npx`||e.command===`uv`||e.command===`uvx`:!1).length}function C(e){let t=new Set,n=new Set;for(let r of e){let e=r.toLowerCase();t.has(e)?n.add(e):t.add(e)}return n}function w(e){let t={};for(let[n,r]of Object.entries(e.servers)){let e={};r.command&&(e.command=r.command),r.url&&(e.url=r.url),r.args&&r.args.length>0&&(e.args=[...r.args]),r.env&&Object.keys(r.env).length>0&&(e.env={...r.env}),r.headers&&Object.keys(r.headers).length>0&&(e.headers={...r.headers}),r.autostart!==void 0&&(e.autostart=r.autostart);for(let[t,n]of Object.entries(r))[`command`,`url`,`args`,`env`,`headers`,`autostart`].includes(t)||(e[t]=n);t[n]=e}return{...e,servers:t}}function te(e){let t=1;for(;e.includes(`server-${t}`);)t+=1;return`server-${t}`}var T=n();function ne({name:e,server:t,onRename:n,onChange:r,onRemove:i,nameError:a}){let o=`mcp-${e||`unnamed`}`,s=g(t.args),c=b(t.env),l=b(t.headers),u=S(t),d=u===`remote`;return(0,T.jsxs)(`article`,{className:`mcp-server-card`,"aria-label":`MCP server ${e||`(unnamed)`}`,children:[(0,T.jsxs)(`header`,{className:`mcp-server-card-header`,children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-name`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Server name`}),(0,T.jsx)(`input`,{id:`${o}-name`,type:`text`,value:e,spellCheck:!1,placeholder:`my-server`,"aria-invalid":!!a,onChange:e=>n(e.target.value)}),a?(0,T.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:a}):null]}),(0,T.jsxs)(`div`,{className:`mcp-server-card-actions`,children:[u?(0,T.jsxs)(`span`,{className:`mcp-server-tag`,"data-tag":u,children:[`[`,u,`]`]}):null,(0,T.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:i,"aria-label":`Remove ${e||`server`}`,children:`Remove`})]})]}),d?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-url`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`URL`}),(0,T.jsx)(`input`,{id:`${o}-url`,type:`text`,value:t.url||``,placeholder:`https://mcp.example.com/sse`,spellCheck:!1,onChange:e=>r({...t,url:e.target.value})})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-headers`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Headers (KEY=value per line)`}),(0,T.jsx)(`textarea`,{id:`${o}-headers`,value:l,rows:3,spellCheck:!1,onChange:e=>r({...t,headers:y(e.target.value)})})]})]}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-command`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Command`}),(0,T.jsx)(`input`,{id:`${o}-command`,type:`text`,value:t.command||``,placeholder:`npx`,spellCheck:!1,onChange:e=>r({...t,command:e.target.value})})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-args`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Args (one per line, or comma-separated)`}),(0,T.jsx)(`textarea`,{id:`${o}-args`,value:s,rows:3,spellCheck:!1,onChange:e=>r({...t,args:_(e.target.value)})})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,htmlFor:`${o}-env`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Env (KEY=value per line)`}),(0,T.jsx)(`textarea`,{id:`${o}-env`,value:c,rows:3,spellCheck:!1,onChange:e=>r({...t,env:y(e.target.value)})})]})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-toggle`,htmlFor:`${o}-autostart`,children:[(0,T.jsx)(`input`,{id:`${o}-autostart`,type:`checkbox`,checked:!!t.autostart,onChange:e=>r({...t,autostart:e.target.checked})}),(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Autostart`})]})]})}var E=`mcp.config`;function D({port:e,client:t,dirty:n,registerSave:d}){let{state:f,refresh:m,setData:g}=r(t,`/api/mcp`),[_,v]=(0,u.useState)({servers:{}}),[y,b]=(0,u.useState)([]),[D,ie]=(0,u.useState)(!1),[O,ae]=(0,u.useState)(!0),[k,A]=(0,u.useState)({kind:`idle`}),j=(0,u.useRef)(0),[oe,se]=(0,u.useState)(!1),[M,N]=(0,u.useState)(`active`),[P,F]=(0,u.useState)(`local`),[I,ce]=(0,u.useState)(``),[L,le]=(0,u.useState)(``),[R,ue]=(0,u.useState)(``),[z,de]=(0,u.useState)(``),[B,V]=(0,u.useState)(``),[H,fe]=(0,u.useState)(``),[pe,U]=(0,u.useState)(null),[me,W]=(0,u.useState)(!1),G=(0,u.useMemo)(()=>f.kind===`ready`?p(f.data):{servers:{}},[f]);(0,u.useEffect)(()=>{if(f.kind===`ready`){let e=p(f.data);v(e),b(Object.keys(e.servers))}},[f]),(0,u.useEffect)(()=>()=>{n.remove(E)},[n]);let K=(0,u.useMemo)(()=>Object.keys(_.servers),[_]),q=(0,u.useMemo)(()=>C(K),[K]),he=(0,u.useMemo)(()=>K.map(e=>({name:e,result:x(e,_.servers[e]??h())})),[_,K]).some(e=>e.result.kind===`invalid`),J=q.size>0,ge=!he&&!J&&O,_e=(0,u.useMemo)(()=>ee(_.servers),[_]),Y=(0,u.useCallback)((e,t)=>{n.set(E,{value:w(e),original:w(G),valid:t})},[n,G]),X=(0,u.useCallback)((e,t)=>{v(e),t&&b(t);let n=t??Object.keys(e.servers),r=C(n);Y(e,n.every(t=>x(t,e.servers[t]??h()).kind===`ok`)&&r.size===0&&O)},[O,Y]),ve=(0,u.useCallback)((e,t)=>{if(e===t)return;let n=y.map(n=>n===e?t:n),r={};for(let i of n)i===t?r[i]=_.servers[e]??h():r[i]=_.servers[i]??h();X({..._,servers:r},n)},[_,y,X]),ye=(0,u.useCallback)((e,t)=>{X({..._,servers:{..._.servers,[e]:t}},y)},[_,y,X]),be=(0,u.useCallback)(e=>{let t={..._.servers};delete t[e];let n=y.filter(t=>t!==e);X({..._,servers:t},n)},[_,y,X]);(0,u.useCallback)(()=>{let e=te(y);X({..._,servers:{..._.servers,[e]:h()}},[...y,e])},[_,y,X]);let xe=(0,u.useCallback)((e,t)=>{if(ae(t),!t){Y(_,!1);return}if(e&&typeof e==`object`&&!Array.isArray(e)){let t=p(e);v(t),b(Object.keys(t.servers));let n=C(Object.keys(t.servers));Y(t,Object.entries(t.servers).every(([e,t])=>x(e,t).kind===`ok`)&&n.size===0)}},[_,Y]),Se=(0,u.useCallback)(async()=>{let e=n.saveBundle();if(!(E in e))return;let r=e[E],i=await t.put(`/api/mcp`,r);n.clear();let a=await t.get(`/api/mcp`).catch(()=>i),o=p(a);v(o),b(Object.keys(o.servers)),g(a),await m()},[t,n,m,g]);(0,u.useEffect)(()=>{if(d)return d(Se),()=>d(null)},[d,Se]);let Z=(0,u.useCallback)(async(e,r)=>{if(n.isDirty()&&typeof window<`u`&&!window.confirm(`You have unsaved MCP edits. ${e} will use the on-disk config, not your unsaved changes. Continue?`))return;let i=j.current+1;j.current=i,A({kind:`pending`,label:e});try{let n=await t.post(r,{});if(j.current!==i)return;A({kind:`success`,message:`${e} succeeded${n?.servers?`: ${JSON.stringify(n.servers)}`:``}`})}catch(e){if(j.current!==i)return;A({kind:`error`,message:e instanceof Error?e.message:String(e)})}},[t,n]),Q=(0,u.useCallback)(()=>{ce(``),le(``),ue(``),de(``),V(``),fe(``),U(null),W(!1)},[]),Ce=(0,u.useCallback)(()=>{N(`active`),Q(),se(!0)},[Q]),$=(0,u.useCallback)(()=>{se(!1),Q()},[Q]),we=(0,u.useCallback)(async()=>{let e=I.trim()||te(Object.keys(G.servers)),r=P===`remote`?{url:B.trim(),...H.trim()?{headers:re(H)}:{}}:{command:L.trim(),...R.trim()?{args:R.split(/\r?\n|,/).map(e=>e.trim()).filter(Boolean)}:{},...z.trim()?{env:re(z)}:{}},i=x(e,r);if(i.kind===`invalid`){U(i.reason);return}if(G.servers[e]){U(`Server "${e}" already exists.`);return}W(!0),U(null);try{let i={...G,servers:{...G.servers,[e]:r}};await t.put(`/api/mcp`,w(i)),await t.post(`/api/mcp/sync`,{}),n.clear();let a=await t.get(`/api/mcp`).catch(()=>i),o=p(a);v(o),b(Object.keys(o.servers)),g(a),await m(),$()}catch(e){U(e instanceof Error?e.message:String(e)),W(!1)}},[I,P,B,H,L,R,z,G,t,n,m,g,$]),Te=(0,u.useCallback)(async e=>{let r={...G.servers};delete r[e];let i={...G,servers:r};try{await t.put(`/api/mcp`,w(i)),await t.post(`/api/mcp/sync`,{}),n.clear();let e=await t.get(`/api/mcp`).catch(()=>i),r=p(e);v(r),b(Object.keys(r.servers)),g(e),await m()}catch(e){A({kind:`error`,message:e instanceof Error?e.message:String(e)})}},[G,t,n,m,g]);if(f.kind===`loading`)return(0,T.jsx)(a,{});if(f.kind===`offline`)return(0,T.jsx)(o,{port:e});if(f.kind===`error`)return(0,T.jsx)(s,{message:f.message});let Ee=Array.from(q).sort();return(0,T.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>e.preventDefault(),children:[(0,T.jsxs)(i,{title:`MCP servers`,hint:`Edit each server's command/args/env. Save writes back to mcp.json; Sync pushes the saved config to all CLIs.`,children:[(0,T.jsxs)(`div`,{className:`mcp-servers-list`,children:[y.length===0&&(0,T.jsxs)(`p`,{className:`settings-section-hint`,children:[`No servers configured. Add one or run `,(0,T.jsx)(`code`,{children:`Reset to defaults`}),`.`]}),y.map(e=>{let t=_.servers[e]??h(),n=e.toLowerCase(),r=q.has(n),i=x(e,t);return(0,T.jsx)(ne,{name:e,server:t,onRename:t=>ve(e,t),onChange:t=>ye(e,t),onRemove:()=>be(e),nameError:r?`Duplicate server name (case-insensitive).`:i.kind===`invalid`?i.reason:null},e)})]}),J&&(0,T.jsxs)(l,{role:`alert`,children:[`Duplicate server name`,Ee.length===1?``:`s`,`: `,Ee.join(`, `),`. Saving is blocked until names are unique.`]}),he&&!J&&(0,T.jsx)(l,{role:`alert`,children:`Some servers have errors (missing command/URL or invalid name). Saving is blocked until they are fixed.`})]}),(0,T.jsxs)(i,{title:`Actions`,hint:`These act on the saved config. Save edits first if you want them included.`,children:[(0,T.jsxs)(`div`,{className:`mcp-action-buttons`,children:[(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:Ce,children:`+ Add, Set MCP`}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,disabled:k.kind===`pending`,onClick:()=>void Z(`Sync to all CLIs`,`/api/mcp/sync`),children:`Sync to all CLIs`}),(0,T.jsxs)(`button`,{type:`button`,className:`settings-action`,disabled:k.kind===`pending`||_e===0,onClick:()=>void Z(`Install bundle`,`/api/mcp/install`),children:[`Install bundle (`,_e,`)`]}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,disabled:k.kind===`pending`,onClick:()=>{typeof window<`u`&&!window.confirm(`Reset MCP config to defaults? Your custom servers will be removed.`)||Z(`Reset to defaults`,`/api/mcp/reset`)},children:`Reset to defaults`})]}),k.kind===`pending`&&(0,T.jsxs)(`p`,{className:`settings-section-hint`,role:`status`,children:[k.label,`…`]}),k.kind===`success`&&(0,T.jsx)(`p`,{className:`settings-section-hint`,role:`status`,children:k.message}),k.kind===`error`&&(0,T.jsx)(l,{role:`alert`,children:k.message})]}),(0,T.jsxs)(i,{title:`Advanced (raw JSON)`,hint:`Edit the entire config object. Useful for fields not surfaced in the structured editor.`,children:[(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:()=>ie(e=>!e),"aria-expanded":D,children:D?`Hide raw JSON`:`Show raw JSON`}),D&&(0,T.jsx)(c,{id:`mcp-raw`,label:`mcp.json`,value:w(_),rows:16,onChange:xe}),!ge&&(0,T.jsx)(`p`,{className:`settings-section-hint`,children:`Save is disabled while validation errors are present.`})]}),oe&&(0,T.jsx)(`div`,{className:`mcp-modal-backdrop`,onClick:$,children:(0,T.jsxs)(`div`,{className:`mcp-modal`,role:`dialog`,"aria-modal":`true`,"aria-label":`MCP Server Management`,onClick:e=>e.stopPropagation(),children:[(0,T.jsxs)(`div`,{className:`mcp-modal-tabs`,children:[(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${M===`active`?` is-active`:``}`,onClick:()=>N(`active`),children:`Active Servers`}),(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${M===`add`?` is-active`:``}`,onClick:()=>{N(`add`),Q()},children:`Add New`})]}),(0,T.jsxs)(`div`,{className:`mcp-modal-body`,children:[M===`active`&&(0,T.jsxs)(`div`,{className:`mcp-active-list`,children:[Object.keys(G.servers).length===0&&(0,T.jsx)(`p`,{className:`settings-section-hint`,children:`No active MCP servers.`}),Object.entries(G.servers).map(([e,t])=>{let n=S(t);return(0,T.jsxs)(`div`,{className:`mcp-active-row`,children:[(0,T.jsx)(`span`,{className:`mcp-active-name`,children:e}),(0,T.jsx)(`span`,{className:`mcp-active-detail`,children:t.url||[t.command,...t.args||[]].filter(Boolean).join(` `)}),n&&(0,T.jsxs)(`span`,{className:`mcp-server-tag`,"data-tag":n,children:[`[`,n,`]`]}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard mcp-active-remove`,onClick:()=>void Te(e),children:`Remove`})]},e)})]}),M===`add`&&(0,T.jsxs)(`div`,{className:`mcp-add-form`,children:[(0,T.jsxs)(`div`,{className:`mcp-add-subtabs`,children:[(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${P===`local`?` is-active`:``}`,onClick:()=>F(`local`),children:`Local`}),(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-tab${P===`remote`?` is-active`:``}`,onClick:()=>F(`remote`),children:`Remote`})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Name`}),(0,T.jsx)(`input`,{type:`text`,value:I,placeholder:`my-server`,spellCheck:!1,onChange:e=>ce(e.target.value)})]}),P===`local`?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Command`}),(0,T.jsx)(`input`,{type:`text`,value:L,placeholder:`npx`,spellCheck:!1,onChange:e=>le(e.target.value)})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Args (one per line)`}),(0,T.jsx)(`textarea`,{value:R,rows:3,spellCheck:!1,placeholder:`-y
|
|
4
4
|
@upstash/context7-mcp`,onChange:e=>ue(e.target.value)})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Env (KEY=value per line)`}),(0,T.jsx)(`textarea`,{value:z,rows:2,spellCheck:!1,onChange:e=>de(e.target.value)})]})]}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`URL`}),(0,T.jsx)(`input`,{type:`text`,value:B,placeholder:`https://mcp.example.com/sse`,spellCheck:!1,onChange:e=>V(e.target.value)})]}),(0,T.jsxs)(`label`,{className:`settings-field settings-field-text`,children:[(0,T.jsx)(`span`,{className:`settings-field-label`,children:`Headers (KEY=value per line)`}),(0,T.jsx)(`textarea`,{value:H,rows:2,spellCheck:!1,onChange:e=>fe(e.target.value)})]})]}),pe&&(0,T.jsx)(l,{role:`alert`,children:pe}),(0,T.jsxs)(`div`,{className:`mcp-add-actions`,children:[(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:$,children:`Cancel`}),(0,T.jsx)(`button`,{type:`button`,className:`settings-action`,disabled:me,onClick:()=>void we(),children:me?`Adding…`:`Add & Sync`})]})]})]}),(0,T.jsx)(`button`,{type:`button`,className:`mcp-modal-close`,"aria-label":`Close`,onClick:$,children:`×`})]})})]})}function re(e){let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`))continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r).trim()]=e.slice(r+1))}return t}export{D as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-DZ1lls_P.js";import{a as c,i as l,r as u}from"./fields-E1L8aEhU.js";import{i as d}from"./agent-meta-_Idad3qq.js";import{t as f}from"./path-utils-QbjARuCC.js";var p=e(t(),1),m=[`memory.enabled`,`memory.flushEvery`,`memory.cli`,`memory.retentionDays`,`memory.autoReflectAfterFlush`,`memory.flushLanguage`],h=[{value:`en`,label:`English (en)`},{value:`ko`,label:`한국어 (ko)`},{value:`ja`,label:`日本語 (ja)`},{value:`zh`,label:`中文 (zh)`}],g=50;function _(e){return m.includes(e)}function v(e){let t=y(e);if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=b(e);t&&n.push(t)}return n}function y(e){if(!e||typeof e!=`object`)return e;let t=e;return Array.isArray(t)?t:`data`in t?t.data:e}function b(e){if(!e||typeof e!=`object`)return null;let t=e,n=typeof t.key==`string`?t.key:null;return n?{key:n,value:typeof t.value==`string`?t.value:``,source:typeof t.source==`string`?t.source:`manual`}:null}function x(e,t){return!Number.isFinite(e)||!Number.isInteger(e)||e<=0?`${t} must be a positive integer`:null}function S(e,t,n=50){let r=Math.max(0,Math.floor(t))*n,i=e.slice(r,r+n),a=Math.max(1,Math.ceil(e.length/n));return{slice:i,hasMore:r+n<e.length,pageCount:a}}function C(e,t=80){return e.length<=t?e:`${e.slice(0,t)}…`}var w=n();function T({row:e,onOpen:t}){return(0,w.jsxs)(`tr`,{className:`settings-memory-row`,children:[(0,w.jsx)(`td`,{className:`settings-memory-key`,children:(0,w.jsx)(`button`,{type:`button`,className:`settings-memory-link`,onClick:()=>t(e),"aria-label":`Open memory entry ${e.key}`,children:e.key})}),(0,w.jsx)(`td`,{className:`settings-memory-source`,children:e.source}),(0,w.jsx)(`td`,{className:`settings-memory-length`,children:e.value.length}),(0,w.jsx)(`td`,{className:`settings-memory-preview`,title:e.value,children:C(e.value)})]})}var E={busy:null,notice:null,error:null};function D({port:e,client:t,dirty:n,registerSave:g}){let y=r(t,`/api/settings`),b=r(t,`/api/memory`),[C,D]=(0,p.useState)(!0),[O,k]=(0,p.useState)(10),[A,j]=(0,p.useState)(``),[M,N]=(0,p.useState)(30),[ee,P]=(0,p.useState)(!1),[F,I]=(0,p.useState)(`en`),[L,R]=(0,p.useState)(0),[z,B]=(0,p.useState)(null),[V,H]=(0,p.useState)(E);(0,p.useEffect)(()=>{if(y.state.kind!==`ready`)return;let e=y.state.data.memory||{};D(e.enabled!==!1),k(typeof e.flushEvery==`number`?e.flushEvery:10),j(typeof e.cli==`string`?e.cli:``),N(typeof e.retentionDays==`number`?e.retentionDays:30),P(!!e.autoReflectAfterFlush),I(typeof e.flushLanguage==`string`&&e.flushLanguage?e.flushLanguage:`en`)},[y.state]),(0,p.useEffect)(()=>()=>{for(let e of m)n.remove(e)},[n]),(0,p.useEffect)(()=>{if(!z)return;let e=e=>{e.key===`Escape`&&B(null)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[z]);let U=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),W=(0,p.useMemo)(()=>y.state.kind===`ready`&&y.state.data.memory||{},[y.state]),G=(0,p.useCallback)(async()=>{let e=n.saveBundle(),r={};for(let[t,n]of Object.entries(e))_(t)&&(r[t]=n);if(Object.keys(r).length===0)return;let i=f(r),a=await t.put(`/api/settings`,i),o=a&&typeof a==`object`&&`data`in a?a.data:a;for(let e of m)n.remove(e);y.setData(o);let s=o.memory||{};D(s.enabled!==!1),k(typeof s.flushEvery==`number`?s.flushEvery:10),j(typeof s.cli==`string`?s.cli:``),N(typeof s.retentionDays==`number`?s.retentionDays:30),P(!!s.autoReflectAfterFlush),I(typeof s.flushLanguage==`string`&&s.flushLanguage?s.flushLanguage:`en`),await y.refresh()},[t,n,y]);(0,p.useEffect)(()=>{if(g)return g(G),()=>g(null)},[g,G]);let K=(0,p.useCallback)(async()=>{H({busy:`flush`,notice:null,error:null});try{await t.post(`/api/jaw-memory/flush`,{}),H({busy:null,notice:`Memory flush queued. Browse refreshes when it completes.`,error:null}),await b.refresh()}catch(e){H({busy:null,notice:null,error:e instanceof Error?e.message:String(e)})}},[t,b]),q=(0,p.useCallback)(async()=>{H({busy:`reflect`,notice:null,error:null});try{await t.post(`/api/jaw-memory/reflect`,{}),H({busy:null,notice:`Reflect complete.`,error:null}),await b.refresh()}catch(e){H({busy:null,notice:null,error:e instanceof Error?e.message:String(e)})}},[t,b]),J=(0,p.useCallback)(()=>{if(b.state.kind!==`ready`)return;let t=v(b.state.data),n=new Blob([JSON.stringify(t,null,2)],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`jaw-memory-${e}-${Date.now()}.json`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r)},[b.state,e]);if(y.state.kind===`loading`)return(0,w.jsx)(a,{});if(y.state.kind===`offline`)return(0,w.jsx)(o,{port:e});if(y.state.kind===`error`)return(0,w.jsx)(s,{message:y.state.message});let Y=x(O,`Flush every`),X=x(M,`Retention days`),Z=y.state.data.perCli||{},Q=[{value:``,label:`(profile default)`},...Object.keys(Z).map(e=>({value:e,label:d(e).label||e}))];A&&!Q.some(e=>e.value===A)&&Q.push({value:A,label:`${d(A).label||A} (legacy)`});let $=b.state.kind===`ready`?v(b.state.data):[],{slice:te,hasMore:ne,pageCount:re}=S($,Math.min(L,Math.max(0,Math.ceil($.length/50)-1)));return(0,w.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),G()},children:[(0,w.jsxs)(i,{title:`Memory engine`,hint:`Background memory flush and reflection cadence.`,children:[(0,w.jsx)(c,{id:`memory-enabled`,label:`Memory enabled`,value:C,onChange:e=>{D(e),U(`memory.enabled`,{value:e,original:W.enabled!==!1,valid:!0})}}),(0,w.jsx)(u,{id:`memory-flush-every`,label:`Flush every (sessions)`,value:O,min:1,error:Y,onChange:e=>{k(e),U(`memory.flushEvery`,{value:e,original:typeof W.flushEvery==`number`?W.flushEvery:10,valid:x(e,`Flush every`)===null})}}),(0,w.jsx)(l,{id:`memory-cli`,label:`Flush CLI`,value:A,options:Q,onChange:e=>{j(e),U(`memory.cli`,{value:e,original:W.cli??``,valid:!0})}}),(0,w.jsx)(u,{id:`memory-retention`,label:`Retention days`,value:M,min:1,error:X,onChange:e=>{N(e),U(`memory.retentionDays`,{value:e,original:typeof W.retentionDays==`number`?W.retentionDays:30,valid:x(e,`Retention days`)===null})}}),(0,w.jsx)(c,{id:`memory-auto-reflect`,label:`Auto-reflect after flush`,value:ee,onChange:e=>{P(e),U(`memory.autoReflectAfterFlush`,{value:e,original:!!W.autoReflectAfterFlush,valid:!0})}}),(0,w.jsx)(l,{id:`memory-flush-language`,label:`Flush language`,value:F,options:[...h],onChange:e=>{I(e),U(`memory.flushLanguage`,{value:e,original:W.flushLanguage??`en`,valid:!0})}})]}),(0,w.jsx)(i,{title:`Stored entries`,hint:`Read-only browse of the key/value memory table (50/page).`,children:b.state.kind===`loading`?(0,w.jsx)(`p`,{className:`settings-section-hint`,children:`Loading entries…`}):b.state.kind===`offline`?(0,w.jsx)(o,{port:e}):b.state.kind===`error`?(0,w.jsx)(s,{message:b.state.message}):$.length===0?(0,w.jsx)(`p`,{className:`settings-section-hint`,children:`No memory entries yet.`}):(0,w.jsxs)(w.Fragment,{children:[(0,w.jsxs)(`table`,{className:`settings-memory-table`,children:[(0,w.jsx)(`thead`,{children:(0,w.jsxs)(`tr`,{children:[(0,w.jsx)(`th`,{scope:`col`,children:`Key`}),(0,w.jsx)(`th`,{scope:`col`,children:`Source`}),(0,w.jsx)(`th`,{scope:`col`,children:`Length`}),(0,w.jsx)(`th`,{scope:`col`,children:`Preview`})]})}),(0,w.jsx)(`tbody`,{children:te.map(e=>(0,w.jsx)(T,{row:e,onOpen:B},e.key))})]}),(0,w.jsxs)(`div`,{className:`settings-memory-pagination`,children:[(0,w.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,disabled:L===0,onClick:()=>R(e=>Math.max(0,e-1)),children:`Prev`}),(0,w.jsxs)(`span`,{className:`settings-memory-pageinfo`,children:[`Page `,L+1,` / `,re]}),(0,w.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,disabled:!ne,onClick:()=>R(e=>e+1),children:`Next`})]})]})}),(0,w.jsxs)(i,{title:`Actions`,hint:`Flush runs async — the browse list refreshes when it finishes.`,children:[(0,w.jsxs)(`div`,{className:`settings-memory-actions`,children:[(0,w.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,disabled:V.busy!==null,onClick:()=>void K(),children:V.busy===`flush`?`Queuing…`:`Flush now`}),(0,w.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,disabled:V.busy!==null,onClick:()=>void q(),children:V.busy===`reflect`?`Reflecting…`:`Reflect soul`}),(0,w.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,disabled:b.state.kind!==`ready`,onClick:J,children:`Export memory`})]}),V.notice?(0,w.jsx)(`p`,{className:`settings-section-hint`,role:`status`,children:V.notice}):null,V.error?(0,w.jsx)(`p`,{className:`settings-field-error`,role:`alert`,children:V.error}):null]}),z?(0,w.jsx)(`div`,{className:`settings-memory-modal`,role:`dialog`,"aria-modal":`true`,"aria-label":`Memory entry ${z.key}`,onClick:e=>{e.target===e.currentTarget&&B(null)},children:(0,w.jsxs)(`div`,{className:`settings-memory-modal-card`,children:[(0,w.jsxs)(`header`,{className:`settings-memory-modal-header`,children:[(0,w.jsx)(`h3`,{children:z.key}),(0,w.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>B(null),"aria-label":`Close memory entry`,children:`Close`})]}),(0,w.jsx)(`pre`,{className:`settings-memory-modal-body`,children:z.value})]})}):null]})}export{h as FLUSH_LANGUAGE_OPTIONS,g as MEMORY_PAGE_SIZE,m as MEMORY_SECTION_A_KEYS,D as default,_ as isMemorySettingsKey,v as normalizeMemoryRows,S as paginate,C as previewValue,x as validatePositiveInt};
|
package/public/dist/assets/{MilkdownWysiwygEditor-BkEzO5cz.js → MilkdownWysiwygEditor-DanGAZL5.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{A as t}from"./vendor-render-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{A as t}from"./vendor-render-BpGO1zp3.js";import{n,t as r}from"./jsx-runtime-CYoNlHAD.js";import{t as i}from"./copy-text-Dy0kfmb9.js";import{n as a,t as o}from"./w3c-keyname-hgmz1BF7.js";import{E as s,O as c,S as l,T as u,_ as d,a as f,d as p,g as m,h,i as g,k as _,l as v,m as y,o as b,p as x,t as S,u as ee,v as te,w as ne,y as re}from"./wiki-link-resolver-BGpGBLMp.js";import{n as C,o as ie,r as ae,s as oe,t as se}from"./wiki-link-suggestions-cvpqJp6c.js";import{M as ce}from"./vendor-utils-BUFU5ypz.js";var le={}.hasOwnProperty;function ue(e,t){let n=t||{};function r(t,...n){let i=r.invalid,a=r.handlers;if(t&&le.call(t,e)){let n=String(t[e]);i=le.call(a,n)?a[n]:r.unknown}if(i)return i.call(this,t,...n)}return r.handlers=n.handlers||{},r.invalid=n.invalid,r.unknown=n.unknown,r}var de={}.hasOwnProperty;function fe(e,t){let n=-1,r;if(t.extensions)for(;++n<t.extensions.length;)fe(e,t.extensions[n]);for(r in t)if(de.call(t,r))switch(r){case`extensions`:break;case`unsafe`:pe(e[r],t[r]);break;case`join`:pe(e[r],t[r]);break;case`handlers`:me(e[r],t[r]);break;default:e.options[r]=t[r]}return e}function pe(e,t){t&&e.push(...t)}function me(e,t){t&&Object.assign(e,t)}var he=[ge];function ge(e,t,n,r){if(t.type===`code`&&te(t,r)&&(e.type===`list`||e.type===t.type&&te(e,r)))return!1;if(`spread`in n&&typeof n.spread==`boolean`)return e.type===`paragraph`&&(e.type===t.type||t.type===`definition`||t.type===`heading`&&m(t,r))?void 0:+!!n.spread}var _e=[`autolink`,`destinationLiteral`,`destinationRaw`,`reference`,`titleQuote`,`titleApostrophe`],ve=[{character:` `,after:`[\\r\\n]`,inConstruct:`phrasing`},{character:` `,before:`[\\r\\n]`,inConstruct:`phrasing`},{character:` `,inConstruct:[`codeFencedLangGraveAccent`,`codeFencedLangTilde`]},{character:`\r`,inConstruct:[`codeFencedLangGraveAccent`,`codeFencedLangTilde`,`codeFencedMetaGraveAccent`,`codeFencedMetaTilde`,`destinationLiteral`,`headingAtx`]},{character:`
|
|
2
2
|
`,inConstruct:[`codeFencedLangGraveAccent`,`codeFencedLangTilde`,`codeFencedMetaGraveAccent`,`codeFencedMetaTilde`,`destinationLiteral`,`headingAtx`]},{character:` `,after:`[\\r\\n]`,inConstruct:`phrasing`},{character:` `,before:`[\\r\\n]`,inConstruct:`phrasing`},{character:` `,inConstruct:[`codeFencedLangGraveAccent`,`codeFencedLangTilde`]},{character:`!`,after:`\\[`,inConstruct:`phrasing`,notInConstruct:_e},{character:`"`,inConstruct:`titleQuote`},{atBreak:!0,character:`#`},{character:`#`,inConstruct:`headingAtx`,after:`(?:[\r
|
|
3
3
|
]|$)`},{character:`&`,after:`[#A-Za-z]`,inConstruct:`phrasing`},{character:`'`,inConstruct:`titleApostrophe`},{character:`(`,inConstruct:`destinationRaw`},{before:`\\]`,character:`(`,inConstruct:`phrasing`,notInConstruct:_e},{atBreak:!0,before:`\\d+`,character:`)`},{character:`)`,inConstruct:`destinationRaw`},{atBreak:!0,character:`*`,after:`(?:[ \r
|
|
4
4
|
*])`},{character:`*`,inConstruct:`phrasing`,notInConstruct:_e},{atBreak:!0,character:`+`,after:`(?:[ \r
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-GpE8A-FA.js";import{a as c,i as l,n as u,r as d,s as f}from"./fields-BwOMlwS0.js";import{a as p,i as m,n as h,r as g}from"./agent-meta-DrYdO9lB.js";import{t as _}from"./path-utils-CHwADH-r.js";var v=e(t(),1),y=n(),b=[`basic`,`openai`,`anthropic`,`vertex`];function x(e){return e===`anthropic`?`https://api.anthropic.com/v1/messages`:e===`vertex`?`https://LOCATION-aiplatform.googleapis.com/v1`:`http://127.0.0.1:18645/v1`}function S({client:e,pi:t,provider:n,model:r,onClose:i,onRegistered:a}){let o=(0,v.useMemo)(()=>t?.profiles?.find(e=>e.id===n)||t?.profiles?.[0],[t,n]),[s,c]=(0,v.useState)(o?.mode||`basic`),[u,d]=(0,v.useState)(o?.id||n||`progrok`),[p,m]=(0,v.useState)(o?.endpoint||x(s)),[h,g]=(0,v.useState)(r||o?.model||`grok-composer-2.5-fast`),[_,S]=(0,v.useState)(``),[C,w]=(0,v.useState)(!1),[T,E]=(0,v.useState)(null);(0,v.useEffect)(()=>{m(e=>e||x(s))},[s]);let D=async()=>{w(!0),E(null);try{let t=await e.post(`/api/pi/profiles/register`,{id:u,label:u,mode:s,endpoint:p,model:h,apiKey:_});a({provider:u,model:h,models:t.models||[],pi:t.settings?.pi}),i()}catch(e){E(e instanceof Error?e.message:String(e))}finally{w(!1)}};return(0,y.jsx)(`div`,{className:`settings-memory-modal`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`pi-profile-title`,children:(0,y.jsxs)(`div`,{className:`settings-memory-modal-card`,children:[(0,y.jsxs)(`header`,{className:`settings-memory-modal-header`,children:[(0,y.jsx)(`h3`,{id:`pi-profile-title`,children:`Pi Settings`}),(0,y.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:i,children:`Close`})]}),(0,y.jsxs)(`div`,{className:`settings-page-form`,children:[(0,y.jsx)(l,{id:`pi-profile-mode`,label:`Mode`,value:s,options:b.map(e=>({value:e,label:e})),onChange:e=>c(e)}),(0,y.jsx)(f,{id:`pi-profile-id`,label:`Provider`,value:u,onChange:d,placeholder:`progrok`}),(0,y.jsx)(f,{id:`pi-profile-endpoint`,label:`Endpoint`,value:p,onChange:m,placeholder:x(s)}),(0,y.jsx)(f,{id:`pi-profile-model`,label:`Model`,value:h,onChange:g,placeholder:`grok-composer-2.5-fast`}),(0,y.jsx)(f,{id:`pi-profile-key`,label:`API Key`,value:_,onChange:S,placeholder:o?.apiKeySet?`set (${o.apiKeyLast4||`****`})`:`empty for local proxy`}),(0,y.jsx)(`p`,{className:`settings-empty`,children:`Default: grok-composer-2.5-fast. Bare grok-composer-2.5 currently has no verified team access.`}),T?(0,y.jsx)(`p`,{className:`settings-field-error`,children:T}):null,(0,y.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,disabled:C,onClick:()=>void D(),children:C?`Registering...`:`Register`})]})]})})}function C(e,t,n=``){let r=new Set;n&&r.add(n);for(let n of e?.discoveredModels?.[t]||[])r.add(n);let i=e?.profiles?.find(e=>e.id===t);return i?.model&&r.add(i.model),[...r]}function w(e,t=``){let n=new Set;t&&n.add(t);for(let t of e?.profiles||[])n.add(t.id);return[...n]}function T(e,t,n=!0){return{value:e,original:t,valid:n}}function E({cli:e,meta:t,original:n,value:r,setValue:i,setEntry:a,client:o,pi:s,setPi:u}){let d=`percli-${e}-models`,p=e===`pi`,[m,_]=(0,v.useState)(!1),b=r.provider||t.defaultProvider||t.providers?.[0]||`claude`,x=p?C(s,b,r.model||``):[],E=!p&&(t.providers?.length??0)>0,D=p?x:E?t.modelsByProvider?.[b]??t.models:t.models,O=E?t.effortsByProvider?.[b]??t.efforts:void 0,k=g(t,r.model||``,O,E?b:void 0);return(0,y.jsxs)(`div`,{className:`settings-percli-row`,"data-cli":e,children:[(0,y.jsx)(`h3`,{className:`settings-percli-title`,children:t.label}),(0,y.jsxs)(`div`,{className:`settings-percli-grid`,children:[p&&w(s,b).length?(0,y.jsx)(l,{id:`percli-${e}-provider`,label:`Provider`,value:b,options:w(s,b).map(e=>({value:e,label:e})),onChange:t=>{let o=C(s,t),c=o.includes(r.model||``)?r.model||``:o[0]||``;i({...r,provider:t,model:c}),a(`perCli.${e}.provider`,T(t,n.provider??`progrok`)),a(`perCli.${e}.model`,T(c,n.model??``))}}):E?(0,y.jsx)(l,{id:`percli-${e}-provider`,label:`Provider`,value:b,options:(t.providers??[]).map(e=>({value:e,label:e})),onChange:o=>{let s=t.modelsByProvider?.[o]??[],c=t.effortsByProvider?.[o]??[],l=s.includes(r.model||``)?r.model||``:s[0]||``,u=h(t,l,r.effort??``,c,o);i({...r,provider:o,model:l,effort:u}),a(`perCli.${e}.provider`,T(o,n.provider??t.defaultProvider??`claude`)),a(`perCli.${e}.model`,T(l,n.model??``)),a(`perCli.${e}.effort`,T(u,n.effort??``))}}):null,(0,y.jsxs)(`div`,{className:`settings-percli-model`,children:[p&&D.length>0?(0,y.jsx)(l,{id:`percli-${e}-model`,label:`Model`,value:r.model??D[0]??``,options:D.map(e=>({value:e,label:e})),onChange:o=>{let s=h(t,o,r.effort??``,O,E?b:void 0);i({...r,model:o,effort:s}),a(`perCli.${e}.model`,T(o,n.model??``)),s!==(r.effort??``)&&a(`perCli.${e}.effort`,T(s,n.effort??``))}}):(0,y.jsx)(f,{id:`percli-${e}-model`,label:`Model`,value:r.model??``,onChange:t=>{i({...r,model:t}),a(`perCli.${e}.model`,T(t,n.model??``))},placeholder:D[0]??`model id`}),t.modelNote?(0,y.jsx)(`p`,{className:`settings-percli-note`,children:t.modelNote}):null,D.length>0?(0,y.jsx)(`datalist`,{id:d,children:D.map(e=>(0,y.jsx)(`option`,{value:e},e))}):null]}),k.length>0?(0,y.jsxs)(`div`,{className:`settings-percli-effort`,children:[(0,y.jsx)(l,{id:`percli-${e}-effort`,label:`Effort`,value:r.effort??``,options:[{value:``,label:`(default)`},...k.map(e=>({value:e,label:e}))],onChange:t=>{i({...r,effort:t}),a(`perCli.${e}.effort`,T(t,n.effort??``))}}),t.effortNote?(0,y.jsx)(`p`,{className:`settings-percli-note`,children:t.effortNote}):null]}):t.effortNote?(0,y.jsx)(`p`,{className:`settings-percli-note settings-percli-note--effort`,children:t.effortNote}):null,(0,y.jsx)(c,{id:`percli-${e}-fastmode`,label:`Fast mode`,value:!!r.fastMode,onChange:t=>{i({...r,fastMode:t}),a(`perCli.${e}.fastMode`,T(t,!!n.fastMode))}}),p&&o?(0,y.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:()=>_(!0),children:`Settings`}):null]}),p&&o&&m?(0,y.jsx)(S,{client:o,pi:s,provider:b,model:r.model||`grok-composer-2.5-fast`,onClose:()=>_(!1),onRegistered:({provider:t,model:o,pi:s})=>{s&&u&&u(s),i({...r,provider:t,model:o}),a(`perCli.${e}.provider`,T(t,n.provider??`progrok`)),a(`perCli.${e}.model`,T(o,n.model??``))}}):null]})}function D(e){return[...e].sort((e,t)=>e===`pi`?-1:t===`pi`?1:e===`ai-e`?t===`pi`?1:-1:t===`ai-e`?e===`pi`?-1:1:0)}function O(e){let t=new Set;for(let n of Object.keys(e.activeOverrides||{}))t.add(n);for(let n of Object.keys(e.perCli||{}))t.add(n);let n={};for(let e of t)n[e]={model:``,effort:``};return{activeOverrides:n}}function k({port:e,client:t,dirty:n,registerSave:c}){let{state:l,refresh:f,setData:h}=r(t,`/api/settings`),[g,b]=(0,v.useState)({}),[x,S]=(0,v.useState)(void 0),[C,w]=(0,v.useState)([]),[T,k]=(0,v.useState)({}),[A,j]=(0,v.useState)(!1),[M,N]=(0,v.useState)(null),[P,F]=(0,v.useState)(null),I=(0,v.useCallback)(async()=>{try{let e=await t.get(`/api/cli-registry`);F(p(e&&typeof e==`object`&&`data`in e?e.data:e))}catch{F(null)}},[t]);(0,v.useEffect)(()=>{I()},[I]),(0,v.useEffect)(()=>{if(l.kind!==`ready`)return;b({...l.data.perCli||{}}),S(l.data.pi),w([...l.data.fallbackOrder||[]]);let e=l.data.perCli?.codex||{},t={};typeof e.contextWindowSize==`number`&&(t.contextWindowSize=e.contextWindowSize),typeof e.contextWindowCompactLimit==`number`&&(t.contextWindowCompactLimit=e.contextWindowCompactLimit),k(t)},[l]),(0,v.useEffect)(()=>()=>{for(let e of Array.from(n.pending.keys()))(e===`fallbackOrder`||e.startsWith(`perCli.`))&&n.remove(e)},[n]);let L=(0,v.useCallback)((e,t)=>n.set(e,t),[n]),R=(0,v.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0)return;let r=_(e),i=await t.put(`/api/settings`,r),a=i&&typeof i==`object`&&`data`in i?i.data:i;n.clear(),h(a),b({...a.perCli||{}}),w([...a.fallbackOrder||[]]),await f(),await I()},[t,n,I,f,h]);(0,v.useEffect)(()=>{if(c)return c(R),()=>c(null)},[c,R]);let z=(0,v.useCallback)(async()=>{if(l.kind===`ready`&&window.confirm(`Reset all active overrides?`)){j(!0),N(null);try{let e=O(l.data),n=await t.put(`/api/settings`,e);h(n&&typeof n==`object`&&`data`in n?n.data:n),await f()}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(!1)}}},[t,f,h,l]);if(l.kind===`loading`)return(0,y.jsx)(a,{});if(l.kind===`offline`)return(0,y.jsx)(o,{port:e});if(l.kind===`error`)return(0,y.jsx)(s,{message:l.message});let B=l.data,V=B.perCli||{},H=D(Object.keys(V)),U=V.codex||{},W=B.activeOverrides||{},G=Object.entries(W);return(0,y.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),R()},children:[(0,y.jsx)(i,{title:`Model defaults`,hint:`Per-CLI defaults applied when no active override is set on the Agent page.`,children:H.length===0?(0,y.jsx)(`p`,{className:`settings-empty`,children:`No CLIs registered for this instance.`}):H.map(e=>(0,y.jsx)(E,{cli:e,meta:m(e,P),original:V[e]||{},value:g[e]||V[e]||{},setValue:t=>b({...g,[e]:t}),setEntry:L,client:t,pi:x,setPi:S},e))}),V.codex?(0,y.jsxs)(i,{title:`Codex context window`,hint:`Codex-only sliders. Other CLIs ignore these values.`,children:[(0,y.jsx)(d,{id:`model-codex-ctx`,label:`Context window size`,value:T.contextWindowSize??(typeof U.contextWindowSize==`number`?U.contextWindowSize:1e6),min:0,step:1e4,onChange:e=>{k({...T,contextWindowSize:e}),L(`perCli.codex.contextWindowSize`,{value:e,original:U.contextWindowSize??1e6,valid:Number.isFinite(e)&&e>=0})}}),(0,y.jsx)(d,{id:`model-codex-compact`,label:`Compact limit`,value:T.contextWindowCompactLimit??(typeof U.contextWindowCompactLimit==`number`?U.contextWindowCompactLimit:9e5),min:0,step:1e4,onChange:e=>{k({...T,contextWindowCompactLimit:e}),L(`perCli.codex.contextWindowCompactLimit`,{value:e,original:U.contextWindowCompactLimit??9e5,valid:Number.isFinite(e)&&e>=0})}})]}):null,(0,y.jsx)(i,{title:`Fallback order`,hint:`Order of CLIs used when the active CLI fails. Press Enter to add a chip; Backspace to remove the last.`,children:(0,y.jsx)(u,{id:`model-fallbackOrder`,label:`Fallback order`,value:C,onChange:e=>{w(e),L(`fallbackOrder`,{value:e,original:B.fallbackOrder||[],valid:!0})},placeholder:`cli name`})}),(0,y.jsxs)(i,{title:`Active overrides`,hint:`Per-session overrides applied on top of per-CLI defaults.`,children:[G.length===0?(0,y.jsx)(`p`,{className:`settings-empty`,children:`No active overrides.`}):(0,y.jsxs)(`table`,{className:`settings-overrides-table`,children:[(0,y.jsx)(`thead`,{children:(0,y.jsxs)(`tr`,{children:[(0,y.jsx)(`th`,{scope:`col`,children:`CLI`}),(0,y.jsx)(`th`,{scope:`col`,children:`Model`}),(0,y.jsx)(`th`,{scope:`col`,children:`Effort`})]})}),(0,y.jsx)(`tbody`,{children:G.map(([e,t])=>(0,y.jsxs)(`tr`,{children:[(0,y.jsx)(`td`,{children:e}),(0,y.jsx)(`td`,{children:(0,y.jsx)(`code`,{children:t?.model||`—`})}),(0,y.jsx)(`td`,{children:(0,y.jsx)(`code`,{children:t?.effort||`—`})})]},e))})]}),(0,y.jsxs)(`div`,{className:`settings-overrides-actions`,children:[(0,y.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>void z(),disabled:A||G.length===0,children:A?`Resetting…`:`Reset overrides`}),M?(0,y.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:M}):null]})]})]})}export{O as buildResetOverridesPatch,k as default,D as orderModelCliKeys};
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-DZ1lls_P.js";import{a as c,i as l,n as u,r as d,s as f}from"./fields-E1L8aEhU.js";import{a as p,i as m,n as h,r as g}from"./agent-meta-_Idad3qq.js";import{t as _}from"./path-utils-QbjARuCC.js";var v=e(t(),1),y=n(),b=[`basic`,`openai`,`anthropic`,`vertex`];function x(e){return e===`anthropic`?`https://api.anthropic.com/v1/messages`:e===`vertex`?`https://LOCATION-aiplatform.googleapis.com/v1`:`http://127.0.0.1:18645/v1`}function S({client:e,pi:t,provider:n,model:r,onClose:i,onRegistered:a}){let o=(0,v.useMemo)(()=>t?.profiles?.find(e=>e.id===n)||t?.profiles?.[0],[t,n]),[s,c]=(0,v.useState)(o?.mode||`basic`),[u,d]=(0,v.useState)(o?.id||n||`progrok`),[p,m]=(0,v.useState)(o?.endpoint||x(s)),[h,g]=(0,v.useState)(r||o?.model||`grok-composer-2.5-fast`),[_,S]=(0,v.useState)(``),[C,w]=(0,v.useState)(!1),[T,E]=(0,v.useState)(null);(0,v.useEffect)(()=>{m(e=>e||x(s))},[s]);let D=async()=>{w(!0),E(null);try{let t=await e.post(`/api/pi/profiles/register`,{id:u,label:u,mode:s,endpoint:p,model:h,apiKey:_});a({provider:u,model:h,models:t.models||[],pi:t.settings?.pi}),i()}catch(e){E(e instanceof Error?e.message:String(e))}finally{w(!1)}};return(0,y.jsx)(`div`,{className:`settings-memory-modal`,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`pi-profile-title`,children:(0,y.jsxs)(`div`,{className:`settings-memory-modal-card`,children:[(0,y.jsxs)(`header`,{className:`settings-memory-modal-header`,children:[(0,y.jsx)(`h3`,{id:`pi-profile-title`,children:`Pi Settings`}),(0,y.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:i,children:`Close`})]}),(0,y.jsxs)(`div`,{className:`settings-page-form`,children:[(0,y.jsx)(l,{id:`pi-profile-mode`,label:`Mode`,value:s,options:b.map(e=>({value:e,label:e})),onChange:e=>c(e)}),(0,y.jsx)(f,{id:`pi-profile-id`,label:`Provider`,value:u,onChange:d,placeholder:`progrok`}),(0,y.jsx)(f,{id:`pi-profile-endpoint`,label:`Endpoint`,value:p,onChange:m,placeholder:x(s)}),(0,y.jsx)(f,{id:`pi-profile-model`,label:`Model`,value:h,onChange:g,placeholder:`grok-composer-2.5-fast`}),(0,y.jsx)(f,{id:`pi-profile-key`,label:`API Key`,value:_,onChange:S,placeholder:o?.apiKeySet?`set (${o.apiKeyLast4||`****`})`:`empty for local proxy`}),(0,y.jsx)(`p`,{className:`settings-empty`,children:`Default: grok-composer-2.5-fast. Bare grok-composer-2.5 currently has no verified team access.`}),T?(0,y.jsx)(`p`,{className:`settings-field-error`,children:T}):null,(0,y.jsx)(`button`,{type:`button`,className:`settings-action settings-action-save`,disabled:C,onClick:()=>void D(),children:C?`Registering...`:`Register`})]})]})})}function C(e,t,n=``){let r=new Set;n&&r.add(n);for(let n of e?.discoveredModels?.[t]||[])r.add(n);let i=e?.profiles?.find(e=>e.id===t);return i?.model&&r.add(i.model),[...r]}function w(e,t=``){let n=new Set;t&&n.add(t);for(let t of e?.profiles||[])n.add(t.id);return[...n]}function T(e,t,n=!0){return{value:e,original:t,valid:n}}function E({cli:e,meta:t,original:n,value:r,setValue:i,setEntry:a,client:o,pi:s,setPi:u}){let d=`percli-${e}-models`,p=e===`pi`,[m,_]=(0,v.useState)(!1),b=r.provider||t.defaultProvider||t.providers?.[0]||`claude`,x=p?C(s,b,r.model||``):[],E=!p&&(t.providers?.length??0)>0,D=p?x:E?t.modelsByProvider?.[b]??t.models:t.models,O=E?t.effortsByProvider?.[b]??t.efforts:void 0,k=g(t,r.model||``,O,E?b:void 0);return(0,y.jsxs)(`div`,{className:`settings-percli-row`,"data-cli":e,children:[(0,y.jsx)(`h3`,{className:`settings-percli-title`,children:t.label}),(0,y.jsxs)(`div`,{className:`settings-percli-grid`,children:[p&&w(s,b).length?(0,y.jsx)(l,{id:`percli-${e}-provider`,label:`Provider`,value:b,options:w(s,b).map(e=>({value:e,label:e})),onChange:t=>{let o=C(s,t),c=o.includes(r.model||``)?r.model||``:o[0]||``;i({...r,provider:t,model:c}),a(`perCli.${e}.provider`,T(t,n.provider??`progrok`)),a(`perCli.${e}.model`,T(c,n.model??``))}}):E?(0,y.jsx)(l,{id:`percli-${e}-provider`,label:`Provider`,value:b,options:(t.providers??[]).map(e=>({value:e,label:e})),onChange:o=>{let s=t.modelsByProvider?.[o]??[],c=t.effortsByProvider?.[o]??[],l=s.includes(r.model||``)?r.model||``:s[0]||``,u=h(t,l,r.effort??``,c,o);i({...r,provider:o,model:l,effort:u}),a(`perCli.${e}.provider`,T(o,n.provider??t.defaultProvider??`claude`)),a(`perCli.${e}.model`,T(l,n.model??``)),a(`perCli.${e}.effort`,T(u,n.effort??``))}}):null,(0,y.jsxs)(`div`,{className:`settings-percli-model`,children:[p&&D.length>0?(0,y.jsx)(l,{id:`percli-${e}-model`,label:`Model`,value:r.model??D[0]??``,options:D.map(e=>({value:e,label:e})),onChange:o=>{let s=h(t,o,r.effort??``,O,E?b:void 0);i({...r,model:o,effort:s}),a(`perCli.${e}.model`,T(o,n.model??``)),s!==(r.effort??``)&&a(`perCli.${e}.effort`,T(s,n.effort??``))}}):(0,y.jsx)(f,{id:`percli-${e}-model`,label:`Model`,value:r.model??``,onChange:t=>{i({...r,model:t}),a(`perCli.${e}.model`,T(t,n.model??``))},placeholder:D[0]??`model id`}),t.modelNote?(0,y.jsx)(`p`,{className:`settings-percli-note`,children:t.modelNote}):null,D.length>0?(0,y.jsx)(`datalist`,{id:d,children:D.map(e=>(0,y.jsx)(`option`,{value:e},e))}):null]}),k.length>0?(0,y.jsxs)(`div`,{className:`settings-percli-effort`,children:[(0,y.jsx)(l,{id:`percli-${e}-effort`,label:`Effort`,value:r.effort??``,options:[{value:``,label:`(default)`},...k.map(e=>({value:e,label:e}))],onChange:t=>{i({...r,effort:t}),a(`perCli.${e}.effort`,T(t,n.effort??``))}}),t.effortNote?(0,y.jsx)(`p`,{className:`settings-percli-note`,children:t.effortNote}):null]}):t.effortNote?(0,y.jsx)(`p`,{className:`settings-percli-note settings-percli-note--effort`,children:t.effortNote}):null,(0,y.jsx)(c,{id:`percli-${e}-fastmode`,label:`Fast mode`,value:!!r.fastMode,onChange:t=>{i({...r,fastMode:t}),a(`perCli.${e}.fastMode`,T(t,!!n.fastMode))}}),p&&o?(0,y.jsx)(`button`,{type:`button`,className:`settings-action`,onClick:()=>_(!0),children:`Settings`}):null]}),p&&o&&m?(0,y.jsx)(S,{client:o,pi:s,provider:b,model:r.model||`grok-composer-2.5-fast`,onClose:()=>_(!1),onRegistered:({provider:t,model:o,pi:s})=>{s&&u&&u(s),i({...r,provider:t,model:o}),a(`perCli.${e}.provider`,T(t,n.provider??`progrok`)),a(`perCli.${e}.model`,T(o,n.model??``))}}):null]})}function D(e){return[...e].sort((e,t)=>e===`pi`?-1:t===`pi`?1:e===`ai-e`?t===`pi`?1:-1:t===`ai-e`?e===`pi`?-1:1:0)}function O(e){let t=new Set;for(let n of Object.keys(e.activeOverrides||{}))t.add(n);for(let n of Object.keys(e.perCli||{}))t.add(n);let n={};for(let e of t)n[e]={model:``,effort:``};return{activeOverrides:n}}function k({port:e,client:t,dirty:n,registerSave:c}){let{state:l,refresh:f,setData:h}=r(t,`/api/settings`),[g,b]=(0,v.useState)({}),[x,S]=(0,v.useState)(void 0),[C,w]=(0,v.useState)([]),[T,k]=(0,v.useState)({}),[A,j]=(0,v.useState)(!1),[M,N]=(0,v.useState)(null),[P,F]=(0,v.useState)(null),I=(0,v.useCallback)(async()=>{try{let e=await t.get(`/api/cli-registry`);F(p(e&&typeof e==`object`&&`data`in e?e.data:e))}catch{F(null)}},[t]);(0,v.useEffect)(()=>{I()},[I]),(0,v.useEffect)(()=>{if(l.kind!==`ready`)return;b({...l.data.perCli||{}}),S(l.data.pi),w([...l.data.fallbackOrder||[]]);let e=l.data.perCli?.codex||{},t={};typeof e.contextWindowSize==`number`&&(t.contextWindowSize=e.contextWindowSize),typeof e.contextWindowCompactLimit==`number`&&(t.contextWindowCompactLimit=e.contextWindowCompactLimit),k(t)},[l]),(0,v.useEffect)(()=>()=>{for(let e of Array.from(n.pending.keys()))(e===`fallbackOrder`||e.startsWith(`perCli.`))&&n.remove(e)},[n]);let L=(0,v.useCallback)((e,t)=>n.set(e,t),[n]),R=(0,v.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0)return;let r=_(e),i=await t.put(`/api/settings`,r),a=i&&typeof i==`object`&&`data`in i?i.data:i;n.clear(),h(a),b({...a.perCli||{}}),w([...a.fallbackOrder||[]]),await f(),await I()},[t,n,I,f,h]);(0,v.useEffect)(()=>{if(c)return c(R),()=>c(null)},[c,R]);let z=(0,v.useCallback)(async()=>{if(l.kind===`ready`&&window.confirm(`Reset all active overrides?`)){j(!0),N(null);try{let e=O(l.data),n=await t.put(`/api/settings`,e);h(n&&typeof n==`object`&&`data`in n?n.data:n),await f()}catch(e){N(e instanceof Error?e.message:String(e))}finally{j(!1)}}},[t,f,h,l]);if(l.kind===`loading`)return(0,y.jsx)(a,{});if(l.kind===`offline`)return(0,y.jsx)(o,{port:e});if(l.kind===`error`)return(0,y.jsx)(s,{message:l.message});let B=l.data,V=B.perCli||{},H=D(Object.keys(V)),U=V.codex||{},W=B.activeOverrides||{},G=Object.entries(W);return(0,y.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),R()},children:[(0,y.jsx)(i,{title:`Model defaults`,hint:`Per-CLI defaults applied when no active override is set on the Agent page.`,children:H.length===0?(0,y.jsx)(`p`,{className:`settings-empty`,children:`No CLIs registered for this instance.`}):H.map(e=>(0,y.jsx)(E,{cli:e,meta:m(e,P),original:V[e]||{},value:g[e]||V[e]||{},setValue:t=>b({...g,[e]:t}),setEntry:L,client:t,pi:x,setPi:S},e))}),V.codex?(0,y.jsxs)(i,{title:`Codex context window`,hint:`Codex-only sliders. Other CLIs ignore these values.`,children:[(0,y.jsx)(d,{id:`model-codex-ctx`,label:`Context window size`,value:T.contextWindowSize??(typeof U.contextWindowSize==`number`?U.contextWindowSize:1e6),min:0,step:1e4,onChange:e=>{k({...T,contextWindowSize:e}),L(`perCli.codex.contextWindowSize`,{value:e,original:U.contextWindowSize??1e6,valid:Number.isFinite(e)&&e>=0})}}),(0,y.jsx)(d,{id:`model-codex-compact`,label:`Compact limit`,value:T.contextWindowCompactLimit??(typeof U.contextWindowCompactLimit==`number`?U.contextWindowCompactLimit:9e5),min:0,step:1e4,onChange:e=>{k({...T,contextWindowCompactLimit:e}),L(`perCli.codex.contextWindowCompactLimit`,{value:e,original:U.contextWindowCompactLimit??9e5,valid:Number.isFinite(e)&&e>=0})}})]}):null,(0,y.jsx)(i,{title:`Fallback order`,hint:`Order of CLIs used when the active CLI fails. Press Enter to add a chip; Backspace to remove the last.`,children:(0,y.jsx)(u,{id:`model-fallbackOrder`,label:`Fallback order`,value:C,onChange:e=>{w(e),L(`fallbackOrder`,{value:e,original:B.fallbackOrder||[],valid:!0})},placeholder:`cli name`})}),(0,y.jsxs)(i,{title:`Active overrides`,hint:`Per-session overrides applied on top of per-CLI defaults.`,children:[G.length===0?(0,y.jsx)(`p`,{className:`settings-empty`,children:`No active overrides.`}):(0,y.jsxs)(`table`,{className:`settings-overrides-table`,children:[(0,y.jsx)(`thead`,{children:(0,y.jsxs)(`tr`,{children:[(0,y.jsx)(`th`,{scope:`col`,children:`CLI`}),(0,y.jsx)(`th`,{scope:`col`,children:`Model`}),(0,y.jsx)(`th`,{scope:`col`,children:`Effort`})]})}),(0,y.jsx)(`tbody`,{children:G.map(([e,t])=>(0,y.jsxs)(`tr`,{children:[(0,y.jsx)(`td`,{children:e}),(0,y.jsx)(`td`,{children:(0,y.jsx)(`code`,{children:t?.model||`—`})}),(0,y.jsx)(`td`,{children:(0,y.jsx)(`code`,{children:t?.effort||`—`})})]},e))})]}),(0,y.jsxs)(`div`,{className:`settings-overrides-actions`,children:[(0,y.jsx)(`button`,{type:`button`,className:`settings-action settings-action-discard`,onClick:()=>void z(),disabled:A||G.length===0,children:A?`Resetting…`:`Reset overrides`}),M?(0,y.jsx)(`span`,{className:`settings-field-error`,role:`alert`,children:M}):null]})]})]})}export{O as buildResetOverridesPatch,k as default,D as orderModelCliKeys};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-
|
|
1
|
+
import{r as e}from"./rolldown-runtime-XQCOJYun.js";import{n as t,t as n}from"./jsx-runtime-CYoNlHAD.js";import{a as r,i,n as a,r as o,t as s}from"./page-shell-DZ1lls_P.js";import{a as c,i as l,s as u}from"./fields-E1L8aEhU.js";import{t as d}from"./InlineWarn-B3bJfG-Z.js";import{t as f}from"./path-utils-QbjARuCC.js";var p=e(t(),1),m=n(),h=[`off`,`http-only`,`full`];function g(e){return e===`off`||e===`http-only`||e===`full`}var _=[`network.bindHost`,`network.lanBypass`,`network.remoteAccess.mode`,`network.remoteAccess.trustProxies`,`network.remoteAccess.trustForwardedFor`,`network.remoteAccess.publicOriginHint`],v=[{value:`127.0.0.1`,label:`127.0.0.1 — loopback only (recommended)`},{value:`0.0.0.0`,label:`0.0.0.0 — all interfaces (LAN exposed)`}],y=[{value:`off`,label:`off — block remote requests`},{value:`http-only`,label:`http-only — read-only HTTP from remote`},{value:`full`,label:`full — HTTP + WebSocket from remote`}];function b(e){let t={};return e.bindHost!==void 0&&(t.bindHost=e.bindHost),e.lanBypass!==void 0&&(t.lanBypass=e.lanBypass),t.remoteAccess={...e.remoteAccess??{}},t}function x(e){let t=(e||``).trim();if(t===``)return{kind:`empty`};let n;try{n=new URL(t)}catch{return{kind:`invalid`,reason:`Must be an absolute URL (https://… or http://…).`}}return n.protocol!==`http:`&&n.protocol!==`https:`?{kind:`invalid`,reason:`Only http:// or https:// origins are accepted.`}:n.hostname?n.pathname&&n.pathname!==`/`?{kind:`invalid`,reason:`Origin must not include a path.`}:n.search||n.hash?{kind:`invalid`,reason:`Origin must not include query or hash.`}:{kind:`valid`,origin:n.origin}:{kind:`invalid`,reason:`Origin must include a host.`}}function S(e){let t=(e.locationHost||``).toLowerCase().split(`:`)[0]||``;return t===``||t===`localhost`||t===`127.0.0.1`||t===`::1`||e.currentMode===e.nextMode?!1:e.nextMode===`off`}function C({port:e,client:t,dirty:n,registerSave:h}){let{state:C,refresh:w,setData:T}=r(t,`/api/settings`),[E,D]=(0,p.useState)({});(0,p.useEffect)(()=>{C.kind===`ready`&&D(b(C.data.network??{}))},[C]),(0,p.useEffect)(()=>()=>{for(let e of _)n.remove(e)},[n]);let O=(0,p.useCallback)((e,t)=>n.set(e,t),[n]),k=(0,p.useMemo)(()=>C.kind===`ready`?C.data.network??{}:{},[C]),A=k.remoteAccess??{},j=E.remoteAccess??{},M=E.bindHost??k.bindHost??`127.0.0.1`,N=!!(E.lanBypass??k.lanBypass),P=g(j.mode)?j.mode:g(A.mode)?A.mode:`off`,F=P!==`off`,I=!!(j.trustProxies??A.trustProxies),L=!!(j.trustForwardedFor??A.trustForwardedFor),R=j.publicOriginHint??A.publicOriginHint??``,z=x(R),B=S({currentMode:g(A.mode)?A.mode:`off`,nextMode:P,locationHost:typeof window<`u`?window.location.host:``}),V=(0,p.useCallback)(async()=>{let e=n.saveBundle();if(Object.keys(e).length===0||B&&typeof window<`u`&&!window.confirm(`You are accessing this dashboard over a remote origin. Saving with remote access "off" will lock you out. Continue?`))return;let r=f(e),i=await t.put(`/api/settings`,r),a=i&&typeof i==`object`&&`data`in i?i.data:i;n.clear(),D(b(a.network??{})),T(a),await w()},[t,n,B,w,T]);if((0,p.useEffect)(()=>{if(h)return h(V),()=>h(null)},[h,V]),C.kind===`loading`)return(0,m.jsx)(a,{});if(C.kind===`offline`)return(0,m.jsx)(o,{port:e});if(C.kind===`error`)return(0,m.jsx)(s,{message:C.message});let H=(E.bindHost??k.bindHost)!==(k.bindHost??`127.0.0.1`);return(0,m.jsxs)(`form`,{className:`settings-page-form`,onSubmit:e=>{e.preventDefault(),V()},children:[(0,m.jsxs)(i,{title:`Bind`,hint:`Listening interface for /i/${e}. Changes require an instance restart.`,children:[(0,m.jsx)(l,{id:`network-bindHost`,label:`Bind host`,value:M,options:v,onChange:e=>{D({...E,bindHost:e}),O(`network.bindHost`,{value:e,original:k.bindHost??`127.0.0.1`,valid:!0})}}),M===`0.0.0.0`&&(0,m.jsxs)(d,{children:[`Listening on `,(0,m.jsx)(`code`,{children:`0.0.0.0`}),` exposes this instance's API to anyone on your LAN. Pair with auth + firewall rules.`]}),H&&(0,m.jsx)(d,{tone:`info`,children:`Restart the instance for the new bind host to take effect.`}),(0,m.jsx)(c,{id:`network-lanBypass`,label:`LAN bypass`,description:`Skip auth checks for clients on the same LAN.`,value:N,onChange:e=>{D({...E,lanBypass:e}),O(`network.lanBypass`,{value:e,original:!!k.lanBypass,valid:!0})}}),N&&(0,m.jsx)(d,{children:`LAN bypass disables auth for any client on the same network. Only enable on a trusted network.`})]}),(0,m.jsxs)(i,{title:`Remote access`,hint:`Mode controls what reaches the API from outside the loopback interface.`,children:[(0,m.jsx)(l,{id:`network-remoteAccess-mode`,label:`Remote access mode`,value:P,options:y,onChange:e=>{g(e)&&(D({...E,remoteAccess:{...j,mode:e}}),O(`network.remoteAccess.mode`,{value:e,original:g(A.mode)?A.mode:`off`,valid:!0}))}}),(0,m.jsxs)(`p`,{className:`settings-section-hint`,children:[(0,m.jsx)(`strong`,{children:`off`}),` — only loopback can talk to the API.`,` `,(0,m.jsx)(`strong`,{children:`http-only`}),` — remote can issue HTTP requests but no WebSocket upgrades. `,(0,m.jsx)(`strong`,{children:`full`}),` — HTTP + WebSocket open to remote (use with auth).`]}),B&&(0,m.jsxs)(d,{role:`alert`,children:[`Saving will close remote access while you're connected from`,(0,m.jsxs)(`code`,{children:[` `,typeof window<`u`?window.location.host:``,` `]}),`— you will be locked out. Reach the dashboard over loopback first.`]}),F&&(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(c,{id:`network-remoteAccess-trustProxies`,label:`Trust proxies`,description:`Honor proxy headers when computing the client origin.`,value:I,onChange:e=>{D({...E,remoteAccess:{...j,trustProxies:e}}),O(`network.remoteAccess.trustProxies`,{value:e,original:!!A.trustProxies,valid:!0})}}),(0,m.jsx)(c,{id:`network-remoteAccess-trustForwardedFor`,label:`Trust X-Forwarded-For`,description:`Use X-Forwarded-For for the client IP. Only enable behind a known proxy.`,value:L,onChange:e=>{D({...E,remoteAccess:{...j,trustForwardedFor:e}}),O(`network.remoteAccess.trustForwardedFor`,{value:e,original:!!A.trustForwardedFor,valid:!0})}}),L&&!I&&(0,m.jsx)(d,{children:`Trusting X-Forwarded-For without trusting the proxy chain lets any client spoof its IP. Enable "Trust proxies" too.`}),(0,m.jsx)(u,{id:`network-remoteAccess-publicOriginHint`,label:`Public origin hint`,value:R,placeholder:`https://your-tunnel-url`,error:z.kind===`invalid`?z.reason:null,onChange:e=>{D({...E,remoteAccess:{...j,publicOriginHint:e}});let t=x(e);O(`network.remoteAccess.publicOriginHint`,{value:t.kind===`valid`?t.origin:e,original:A.publicOriginHint??``,valid:t.kind!==`invalid`})}})]})]})]})}export{h as REMOTE_ACCESS_MODES,C as default,S as detectSelfLockoutRisk,g as isRemoteAccessMode,x as parsePublicOriginHint};
|