@tequila99/githuman 0.4.2 → 0.6.0
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/README.md +18 -2
- package/dist/cli/index.js +27 -2
- package/dist/cli/server-runtime.js +1 -0
- package/dist/server/app.js +22 -1
- package/dist/server/errors/git.js +2 -0
- package/dist/server/errors/terminal.js +4 -0
- package/dist/server/hooks/terminal/local-origin.js +25 -0
- package/dist/server/routes/agent.js +8 -2
- package/dist/server/routes/app-info.js +5 -2
- package/dist/server/routes/git.js +5 -2
- package/dist/server/routes/terminal.js +63 -0
- package/dist/server/services/agent/agent-session.js +2 -1
- package/dist/server/services/agent/context-builder.js +49 -2
- package/dist/server/services/agent/file-index.js +7 -4
- package/dist/server/services/git.service.js +44 -4
- package/dist/server/services/terminal/backend.js +216 -0
- package/dist/server/services/terminal/channel.js +200 -0
- package/dist/server/services/terminal/escape-tail.js +93 -0
- package/dist/server/services/terminal/processes.js +115 -0
- package/dist/server/services/terminal/prompt-tracker.js +15 -0
- package/dist/server/services/terminal/registry.js +167 -0
- package/dist/server/services/terminal/session.js +238 -0
- package/dist/server/services/terminal/socket.js +74 -0
- package/dist/server/services/terminal/tokens.js +32 -0
- package/dist/server/utils/sse.js +76 -5
- package/dist/shared/agents/file-search.js +19 -7
- package/dist/shared/agents/mention-paths.js +40 -0
- package/dist/shared/agents/schemas.js +13 -4
- package/dist/shared/app/schemas.js +5 -1
- package/dist/shared/git/schemas.js +4 -1
- package/dist/shared/terminal/constants.js +27 -0
- package/dist/shared/terminal/schemas.js +114 -0
- package/dist/shared/terminal/types.js +1 -0
- package/dist/shared/utils/guards.js +3 -0
- package/dist/web/assets/{AppPage-BYrCfRnC.js → AppPage-CiRB13sb.js} +2 -2
- package/dist/web/assets/CreateReviewFabButton-DTvX9Psc.js +1 -0
- package/dist/web/assets/ErrorNotFound-CYOZg8yN.js +1 -0
- package/dist/web/assets/IndexPage-CYFIGWy9.css +1 -0
- package/dist/web/assets/IndexPage-hI7bcJ6L.js +1 -0
- package/dist/web/assets/MainLayout-DCexR9_Y.css +1 -0
- package/dist/web/assets/MainLayout-baVxjyeL.js +11 -0
- package/dist/web/assets/PdfPreview-Cb0xawi0.css +1 -0
- package/dist/web/assets/PdfPreview-D3HwZ7pH.js +54 -0
- package/dist/web/assets/QBtn-CzrOO1zA.js +1 -0
- package/dist/web/assets/QScrollArea-Cu8zdp0y.js +1 -0
- package/dist/web/assets/QSelect-DQ_RRYIL.js +1 -0
- package/dist/web/assets/QSpace-CEuZSBS2.js +13 -0
- package/dist/web/assets/ReviewDetailPage-CayB2dtb.js +1 -0
- package/dist/web/assets/ReviewDetailPage-CkCilMNW.css +1 -0
- package/dist/web/assets/ReviewsPage-DWfEVjWO.js +1 -0
- package/dist/web/assets/StatusSwitcher--zNcE2-Y.js +1 -0
- package/dist/web/assets/StatusSwitcher-DTD5inU1.css +1 -0
- package/dist/web/assets/TerminalView-B11UHZv3.css +1 -0
- package/dist/web/assets/TerminalView-DvVbWk3f.js +19 -0
- package/dist/web/assets/_plugin-vue_export-helper-BDNMzG2s.js +1 -0
- package/dist/web/assets/{abnfDiagram-O67JEVCF-dyvffE6R.js → abnfDiagram-O67JEVCF-C5SYdl8k.js} +1 -1
- package/dist/web/assets/agent-store-DX4gIEHa.js +1 -0
- package/dist/web/assets/app-info-store-Vy_Pq2yR.js +1 -0
- package/dist/web/assets/architecture-7GRP2DOG-Dpxe25D8.js +1 -0
- package/dist/web/assets/{architectureDiagram-NJMV4G6O-Dk-QthCI.js → architectureDiagram-NJMV4G6O-Bx8KGjS_.js} +1 -1
- package/dist/web/assets/{blockDiagram-BEXU5L5S-sF48dzNS.js → blockDiagram-BEXU5L5S-B4ybhPir.js} +1 -1
- package/dist/web/assets/{c4Diagram-YGBWAQC7-BWrux-0F.js → c4Diagram-YGBWAQC7-D2Fzm9Zx.js} +1 -1
- package/dist/web/assets/channel--0tdF_Sb.js +1 -0
- package/dist/web/assets/chunk-3FUC2YCW-DLRX-HPs.js +2 -0
- package/dist/web/assets/{chunk-5DYCD2WN-CpgXf7LJ.js → chunk-5DYCD2WN-6HcgVbfR.js} +1 -1
- package/dist/web/assets/{chunk-742MDFTN-BGzG-dZE.js → chunk-742MDFTN-CfTGkhlJ.js} +1 -1
- package/dist/web/assets/{chunk-7INBJB4K-DJGc-gqS.js → chunk-7INBJB4K-COfv2qWf.js} +1 -1
- package/dist/web/assets/{chunk-7M6MHVWA-CYIOaZel.js → chunk-7M6MHVWA-D0FxecF4.js} +5 -5
- package/dist/web/assets/{chunk-7PRAP22T-CJZNYL51.js → chunk-7PRAP22T-DFjSoEy0.js} +1 -1
- package/dist/web/assets/{chunk-GTNCS2PH-DOYGHmMk.js → chunk-GTNCS2PH-CGWGXDNO.js} +1 -1
- package/dist/web/assets/{chunk-GWA4HPMP-RIikrSw1.js → chunk-GWA4HPMP-J0EaOPjD.js} +1 -1
- package/dist/web/assets/{chunk-MBY4JIJT-ZSssyEJi.js → chunk-MBY4JIJT-PzEUkWiy.js} +1 -1
- package/dist/web/assets/{chunk-NETBCI7D-3tnHEq90.js → chunk-NETBCI7D-DHHOcLF0.js} +1 -1
- package/dist/web/assets/{chunk-O7XYJQB3-CDFTy-aQ.js → chunk-O7XYJQB3-BHUId2wW.js} +1 -1
- package/dist/web/assets/{chunk-UA2S7LBM-B8rY8Yj-.js → chunk-UA2S7LBM-DXQ1DAj6.js} +1 -1
- package/dist/web/assets/{chunk-WEXAMYUT-BdPY0e7q.js → chunk-WEXAMYUT-BMiibMha.js} +1 -1
- package/dist/web/assets/{chunk-Z7XXMR3K-Br_E149D.js → chunk-Z7XXMR3K-BcgKYeJS.js} +1 -1
- package/dist/web/assets/{chunk-ZIGJFQKS-DDjPFexL.js → chunk-ZIGJFQKS-D6psU74o.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-NBCMYWYE-D9kneDxy.js → classDiagram-v2-NBCMYWYE-6IwOSgSE.js} +4 -4
- package/dist/web/assets/create-BSmXD9Zr.js +1 -0
- package/dist/web/assets/{cynefin-OW5HDTMX-Dot1PBqs.js → cynefin-OW5HDTMX-C77WtKve.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-VND7K2PF-6uYi0u-j.js → cynefinDiagram-VND7K2PF-BvIp3Y9w.js} +1 -1
- package/dist/web/assets/{dagre-6A5THRUB-BDM5YkfJ.js → dagre-6A5THRUB-DN7jrLfY.js} +1 -1
- package/dist/web/assets/debounce-rZaFFwsz.js +1 -0
- package/dist/web/assets/{diagram-22UHCM2B-DxE0D8WB.js → diagram-22UHCM2B-DQUkKx9q.js} +8 -8
- package/dist/web/assets/{diagram-3UASUU5V-CuD1fcFQ.js → diagram-3UASUU5V-CTzVKsCf.js} +1 -1
- package/dist/web/assets/{diagram-ATOU4E4O-DX6enGgq.js → diagram-ATOU4E4O--Z3AVUjn.js} +1 -1
- package/dist/web/assets/{diagram-CDSNMT55-eLqOiVoC.js → diagram-CDSNMT55-BA-cRZ39.js} +1 -1
- package/dist/web/assets/{diagram-MLGK6HIB-DtIMj5y1.js → diagram-MLGK6HIB-Bx_zLrYg.js} +1 -1
- package/dist/web/assets/{diagram-MPIPVDR6-lYcwsjHR.js → diagram-MPIPVDR6-CWKuh-e-.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-ZINNZB2B-CGmBWaKx.js → ebnfDiagram-ZINNZB2B-MyQLfQVI.js} +1 -1
- package/dist/web/assets/{elk-276RUBZZ-B1ntUD9z.js → elk-276RUBZZ-DBbqEAnd.js} +1 -1
- package/dist/web/assets/{erDiagram-OPXOYQCR-Dqzoldin.js → erDiagram-OPXOYQCR-CbRo_Rnk.js} +1 -1
- package/dist/web/assets/eventmodeling-NTZA5JFV-DMla2cPF.js +1 -0
- package/dist/web/assets/flowDiagram-KWPJA3E3-Bas61_mX.js +1 -0
- package/dist/web/assets/{ganttDiagram-FUAMR5RP-CF6kJAoY.js → ganttDiagram-FUAMR5RP-D1gJBc1W.js} +1 -1
- package/dist/web/assets/{gitGraph-4MIJSDKK-CUzcGxMa.js → gitGraph-4MIJSDKK-CIzz8UCs.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-X574FWY7-D-XNa6f2.js → gitGraphDiagram-X574FWY7-B5-RB5JZ.js} +1 -1
- package/dist/web/assets/i18n-B1_G449i.js +1 -0
- package/dist/web/assets/index-DEwYKvIG.js +2 -0
- package/dist/web/assets/index-Dma-RXBR.css +1 -0
- package/dist/web/assets/{info-A6RAGUB7-CH4SNmU8.js → info-A6RAGUB7-DF-JCGlS.js} +1 -1
- package/dist/web/assets/{infoDiagram-VRGFBTTK-35AKnD7M.js → infoDiagram-VRGFBTTK-z0Xepdo0.js} +1 -1
- package/dist/web/assets/init-app-DAsY3Joz.js +1 -0
- package/dist/web/assets/{is-BB7rJzdU.js → is-DssfAlMe.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-OU5B5YK6-D41YBWSb.js → ishikawaDiagram-OU5B5YK6-UqXiqAoe.js} +1 -1
- package/dist/web/assets/{journeyDiagram-ZHPQQLJL-CZF6Wwk8.js → journeyDiagram-ZHPQQLJL-CPGeWRg-.js} +1 -1
- package/dist/web/assets/{kanban-definition-PNTS6WVX-CVGaUle0.js → kanban-definition-PNTS6WVX-CMq9WuD5.js} +1 -1
- package/dist/web/assets/{line-CeH4KBRO.js → line-cZB9xcQk.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-YrU9LTTJ.js → mermaid-parser.core-D8h1T47v.js} +3 -3
- package/dist/web/assets/{mermaid.core-BkLEn5Vh.js → mermaid.core-CdpJws-B.js} +7 -7
- package/dist/web/assets/{mindmap-definition-NLK3R4M7-D22lxuXn.js → mindmap-definition-NLK3R4M7-B01KHb5Z.js} +1 -1
- package/dist/web/assets/{packet-AYTQ26CC-DMK0BdeB.js → packet-AYTQ26CC-CagxQ791.js} +1 -1
- package/dist/web/assets/pdf.worker-C2cQdohj.js +48 -0
- package/dist/web/assets/{pegDiagram-GJSIUBJH-B-e5e5cW.js → pegDiagram-GJSIUBJH-amhZRgGf.js} +1 -1
- package/dist/web/assets/{pie-WAS4IAKB-BYP5ND4b.js → pie-WAS4IAKB-zv3udP2i.js} +1 -1
- package/dist/web/assets/{pieDiagram-5QR66LMP-DrEY0oA_.js → pieDiagram-5QR66LMP-CjPzT-fa.js} +1 -1
- package/dist/web/assets/pinia-DCsnCHsH.js +1 -0
- package/dist/web/assets/pinia-DWj71cM9.js +1 -0
- package/dist/web/assets/{quadrantDiagram-O4NWA36T-D12UM_7Y.js → quadrantDiagram-O4NWA36T-7YpPBn0t.js} +1 -1
- package/dist/web/assets/{radar-RG4KPBEZ-50JpTuMu.js → radar-RG4KPBEZ-DZ-nSYpA.js} +1 -1
- package/dist/web/assets/{railroad-74A4TZTK-C-7jDcYE.js → railroad-74A4TZTK-CoylUO-u.js} +1 -1
- package/dist/web/assets/railroad-abnf-HS5TGJTU-C20Z1OCq.js +1 -0
- package/dist/web/assets/railroad-ebnf-LZEXJU2U-BltGHYDI.js +1 -0
- package/dist/web/assets/railroad-peg-WCYAUIDC-BT3QI-zw.js +1 -0
- package/dist/web/assets/{railroadDiagram-XR7U4H2S-q0-o99ts.js → railroadDiagram-XR7U4H2S-DlHZky0v.js} +1 -1
- package/dist/web/assets/{requirementDiagram-PLB6GJNP-DsO-Ejin.js → requirementDiagram-PLB6GJNP-Dn9whLhB.js} +1 -1
- package/dist/web/assets/runtime-core.esm-bundler-BKFI1w28.js +1 -0
- package/dist/web/assets/{safe-storage-DRouskD4.js → safe-storage-B3bJArYP.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-IPEJSGJF-Ct9goD-6.js → sankeyDiagram-IPEJSGJF-jIf4UAnN.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-PO4LG4MO-BMO_A2FU.js → sequenceDiagram-PO4LG4MO-CJahxeyg.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-GCMORJYK-BSzg0zQp.js → stateDiagram-v2-GCMORJYK-DArbI5q3.js} +2 -2
- package/dist/web/assets/{swimlanes-2SLR337P-CcmfFMci.js → swimlanes-2SLR337P-wyJPqm8c.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-TC7HE7FX-DgRybibH.js +8 -0
- package/dist/web/assets/theme-CFC7Mb_O.js +1 -0
- package/dist/web/assets/{timeline-definition-EJHVYXUP-0dcHdY2G.js → timeline-definition-EJHVYXUP-Bdh9ma4o.js} +1 -1
- package/dist/web/assets/{treeView-Q6P3EWNA-KynQIJ_Z.js → treeView-Q6P3EWNA-CEiXTwqS.js} +1 -1
- package/dist/web/assets/{treemap-WGGIJYW6-DPpYRzcH.js → treemap-WGGIJYW6-am0aIfU-.js} +1 -1
- package/dist/web/assets/use-app-theme-FYzHIigd.js +1 -0
- package/dist/web/assets/use-panel-width-e-yXva8i.js +1 -0
- package/dist/web/assets/use-server-events-znzHKZZx.js +1 -0
- package/dist/web/assets/use-virtual-scroll-CIwaJCUj.js +1 -0
- package/dist/web/assets/{usecaseDiagram-POWQR4AR-DJBtB_eN.js → usecaseDiagram-POWQR4AR-r3Qf5Bj-.js} +1 -1
- package/dist/web/assets/{vennDiagram-UO4OBE2U-BgllcrO_.js → vennDiagram-UO4OBE2U-eOWNPvLI.js} +1 -1
- package/dist/web/assets/{vue-i18n.runtime-D0pkhc7g.js → vue-i18n.runtime-BpRrzZrT.js} +2 -2
- package/dist/web/assets/{wardley-WFR3VGLG-D2Je-cZt.js → wardley-WFR3VGLG-BdipY77V.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-VNRHLVJA-B7ktegci.js → wardleyDiagram-VNRHLVJA-sFpl0u9C.js} +1 -1
- package/dist/web/assets/{xychartDiagram-PMCCYNJV-DL7WkDZI.js → xychartDiagram-PMCCYNJV-CtLqW--F.js} +1 -1
- package/dist/web/index.html +7 -7
- package/dist/web/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/78-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/78-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Add-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Add-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/B5pc-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/B5pc-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/CNS1-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/CNS1-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/CNS2-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/CNS2-V.bcmap +3 -0
- package/dist/web/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
- package/dist/web/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Ext-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Ext-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GB-H.bcmap +4 -0
- package/dist/web/pdfjs/cmaps/GB-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBT-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBT-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Hankaku.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Hiragana.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Katakana.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/LICENSE +36 -0
- package/dist/web/pdfjs/cmaps/NWP-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/NWP-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/Roman.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/V.bcmap +0 -0
- package/dist/web/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
- package/dist/web/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
- package/dist/web/pdfjs/standard_fonts/LICENSE_LIBERATION +363 -0
- package/dist/web/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/dist/web/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/dist/web/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/dist/web/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/dist/web/pdfjs/wasm/LICENSE_JBIG2 +196 -0
- package/dist/web/pdfjs/wasm/LICENSE_OPENJPEG +39 -0
- package/dist/web/pdfjs/wasm/LICENSE_PDFJS_JBIG2 +13 -0
- package/dist/web/pdfjs/wasm/LICENSE_PDFJS_OPENJPEG +22 -0
- package/dist/web/pdfjs/wasm/LICENSE_PDFJS_QCMS +19 -0
- package/dist/web/pdfjs/wasm/LICENSE_QCMS +21 -0
- package/dist/web/pdfjs/wasm/jbig2.wasm +0 -0
- package/dist/web/pdfjs/wasm/jbig2_nowasm_fallback.js +15 -0
- package/dist/web/pdfjs/wasm/openjpeg.wasm +0 -0
- package/dist/web/pdfjs/wasm/openjpeg_nowasm_fallback.js +17 -0
- package/dist/web/pdfjs/wasm/qcms_bg.wasm +0 -0
- package/dist/web/pdfjs/wasm/quickjs-eval.js +16 -0
- package/dist/web/pdfjs/wasm/quickjs-eval.wasm +0 -0
- package/package.json +13 -3
- package/dist/web/assets/CreateReviewFabButton-UdzUa_ra.js +0 -1
- package/dist/web/assets/ErrorNotFound-BAP3n0aC.js +0 -1
- package/dist/web/assets/IndexPage-BtoeYBg2.js +0 -1
- package/dist/web/assets/IndexPage-D894ONbY.css +0 -1
- package/dist/web/assets/MainLayout-ChxXEt_Q.css +0 -1
- package/dist/web/assets/MainLayout-DjoItVv0.js +0 -7
- package/dist/web/assets/QBtn-BDbJU6_B.js +0 -1
- package/dist/web/assets/QMenu-Bh-SjGqz.js +0 -1
- package/dist/web/assets/QSelect-CZqAOLiG.js +0 -1
- package/dist/web/assets/ReviewDetailPage-CP6YqXPT.css +0 -1
- package/dist/web/assets/ReviewDetailPage-DvDoJ37c.js +0 -1
- package/dist/web/assets/ReviewsPage-CHUXLKKw.js +0 -1
- package/dist/web/assets/StatusSwitcher-Br_8-_CT.js +0 -2
- package/dist/web/assets/StatusSwitcher-DLU1h0rK.css +0 -1
- package/dist/web/assets/agent-icon-BUd-vCRS.css +0 -1
- package/dist/web/assets/agent-icon-Bc3evt8o.js +0 -17
- package/dist/web/assets/agent-store-FOng_RxK.js +0 -1
- package/dist/web/assets/app-info-store-xZiQfdgO.js +0 -1
- package/dist/web/assets/architecture-7GRP2DOG-JRGyT2Fi.js +0 -1
- package/dist/web/assets/channel-C9BIu6HY.js +0 -1
- package/dist/web/assets/chunk-3FUC2YCW-DM9oDQ0E.js +0 -2
- package/dist/web/assets/create-BkZH2Q0U.js +0 -1
- package/dist/web/assets/debounce-CDIE7CV6.js +0 -1
- package/dist/web/assets/eventmodeling-NTZA5JFV-DblBuyVi.js +0 -1
- package/dist/web/assets/export-file-Di_2jvjP.js +0 -1
- package/dist/web/assets/flowDiagram-KWPJA3E3-D5iLm5ip.js +0 -1
- package/dist/web/assets/i18n-DvBemXXT.js +0 -1
- package/dist/web/assets/index-Bn7ByP7x.js +0 -2
- package/dist/web/assets/index-CgeU6Wuu.css +0 -1
- package/dist/web/assets/init-app-C4PeiqQX.js +0 -1
- package/dist/web/assets/pinia-DB8WAJFa.js +0 -1
- package/dist/web/assets/pinia-DmTi2T44.js +0 -1
- package/dist/web/assets/railroad-abnf-HS5TGJTU-Bf3pkLrz.js +0 -1
- package/dist/web/assets/railroad-ebnf-LZEXJU2U-f10AkgiO.js +0 -1
- package/dist/web/assets/railroad-peg-WCYAUIDC-C4FjCCVf.js +0 -1
- package/dist/web/assets/runtime-core.esm-bundler-CUpq88z7.js +0 -1
- package/dist/web/assets/single-flight-r8B7stt1.js +0 -1
- package/dist/web/assets/swimlanesDiagram-TC7HE7FX-DLq4WqTk.js +0 -8
- package/dist/web/assets/theme-DQpF6lSZ.js +0 -1
- package/dist/web/assets/use-app-theme-B1Vh5WKT.js +0 -1
- package/dist/web/assets/use-panel-width-Cs_K2M_v.js +0 -1
- package/dist/web/assets/use-virtual-scroll-BVHTKnoC.js +0 -1
|
@@ -28,7 +28,7 @@ export const AutoApproveBody = Type.Object({
|
|
|
28
28
|
export const FileSearchQuery = Type.Object({
|
|
29
29
|
q: Type.Optional(Type.String({
|
|
30
30
|
maxLength: 200,
|
|
31
|
-
description: 'Fuzzy text to find in paths. Empty lists files.'
|
|
31
|
+
description: 'Fuzzy text to find in paths. Empty lists files first.'
|
|
32
32
|
})),
|
|
33
33
|
limit: Type.Optional(Type.Integer({
|
|
34
34
|
minimum: 1,
|
|
@@ -52,6 +52,15 @@ export const ContextItem = Type.Union([
|
|
|
52
52
|
description: 'Repository-relative path. The agent reads the file.'
|
|
53
53
|
})
|
|
54
54
|
}, { description: 'A link to a repository file.' }),
|
|
55
|
+
Type.Object({
|
|
56
|
+
kind: Type.Literal('directory', {
|
|
57
|
+
description: 'A repository directory.'
|
|
58
|
+
}),
|
|
59
|
+
path: Type.String({
|
|
60
|
+
minLength: 1,
|
|
61
|
+
description: 'Repository-relative path without a trailing slash. The agent reads the directory.'
|
|
62
|
+
})
|
|
63
|
+
}, { description: 'A link to a repository directory.' }),
|
|
55
64
|
Type.Object({
|
|
56
65
|
kind: Type.Literal('review', { description: 'A review.' }),
|
|
57
66
|
reviewId: Type.String({ description: 'Review id.' })
|
|
@@ -126,10 +135,10 @@ export const AgentSessionInfoSchema = Type.Object({
|
|
|
126
135
|
}))
|
|
127
136
|
}, { description: 'A chat session.' });
|
|
128
137
|
export const AgentFileSearchResponseSchema = Type.Object({
|
|
129
|
-
|
|
130
|
-
description: 'Repository-relative paths, best match first.'
|
|
138
|
+
paths: Type.Array(Type.String(), {
|
|
139
|
+
description: 'Repository-relative paths, best match first. A directory path ends with a slash.'
|
|
131
140
|
})
|
|
132
|
-
}, { description: 'Files for the context picker.' });
|
|
141
|
+
}, { description: 'Files and directories for the context picker.' });
|
|
133
142
|
export const AgentEventsHeaders = Type.Object({
|
|
134
143
|
'last-event-id': Type.Optional(Type.String({
|
|
135
144
|
description: 'Last event id that the client got. Events after it come again.'
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { TerminalCapabilitySchema } from "../terminal/schemas.js";
|
|
1
2
|
import { Type } from '@sinclair/typebox';
|
|
2
3
|
export const AppInfoSchema = Type.Object({
|
|
3
|
-
version: Type.String({
|
|
4
|
+
version: Type.String({
|
|
5
|
+
description: 'githuman version from package.json.'
|
|
6
|
+
}),
|
|
7
|
+
terminal: TerminalCapabilitySchema
|
|
4
8
|
}, { description: 'Facts about the running server.' });
|
|
5
9
|
export const HealthSchema = Type.Object({
|
|
6
10
|
status: Type.Literal('ok', { description: 'Always "ok".' })
|
|
@@ -44,7 +44,10 @@ export const FileContentQuery = Type.Object({
|
|
|
44
44
|
ref: Type.String({
|
|
45
45
|
minLength: 1,
|
|
46
46
|
description: 'Commit, branch or tag. INDEX reads the index, WORKTREE the file on disk.'
|
|
47
|
-
})
|
|
47
|
+
}),
|
|
48
|
+
strict: Type.Optional(Type.Boolean({
|
|
49
|
+
description: 'Report a missing file as 404 instead of empty content.'
|
|
50
|
+
}))
|
|
48
51
|
});
|
|
49
52
|
export const OptionalPathsBody = Type.Object({
|
|
50
53
|
paths: Type.Optional(Type.Array(Type.String(), {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Bound process and emulator memory for one repository.
|
|
2
|
+
export const MAX_TERMINAL_SESSIONS = 8;
|
|
3
|
+
// Keep useful history without retaining unlimited command output.
|
|
4
|
+
export const TERMINAL_SCROLLBACK = 5000;
|
|
5
|
+
// Confirmed idle sessions need less orphan time than running jobs.
|
|
6
|
+
export const TERMINAL_IDLE_MS = 15 * 60 * 1000;
|
|
7
|
+
// Output must not extend the lifetime of an orphaned command.
|
|
8
|
+
export const TERMINAL_ORPHAN_MS = 60 * 60 * 1000;
|
|
9
|
+
// Tokens are used only for an immediate connection attempt.
|
|
10
|
+
export const TERMINAL_TOKEN_MS = 30_000;
|
|
11
|
+
// Bound the shell title that the server stores and publishes.
|
|
12
|
+
export const TERMINAL_TITLE_LENGTH = 256;
|
|
13
|
+
// A smaller screen cannot show a shell prompt.
|
|
14
|
+
export const TERMINAL_MIN_COLS = 2;
|
|
15
|
+
export const TERMINAL_MIN_ROWS = 2;
|
|
16
|
+
// Small screens and bounded snapshots need bounded cell dimensions.
|
|
17
|
+
export const TERMINAL_MAX_COLS = 300;
|
|
18
|
+
// Bound the visible buffer as well as scrollback.
|
|
19
|
+
export const TERMINAL_MAX_ROWS = 100;
|
|
20
|
+
// Keep individual input frames and output batches small.
|
|
21
|
+
export const TERMINAL_FRAME_BYTES = 64 * 1024;
|
|
22
|
+
// Pause the backend before parser queues grow without limit.
|
|
23
|
+
export const TERMINAL_QUEUE_BYTES = 1024 * 1024;
|
|
24
|
+
// Credit bounds each client's unacknowledged output.
|
|
25
|
+
export const TERMINAL_CLIENT_BYTES = 4 * 1024 * 1024;
|
|
26
|
+
// Snapshot frames may contain a bounded screen and history.
|
|
27
|
+
export const TERMINAL_SNAPSHOT_BYTES = 16 * 1024 * 1024;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Type } from '@sinclair/typebox';
|
|
2
|
+
import { Nullable } from "../utils/schemas.js";
|
|
3
|
+
import { TERMINAL_MAX_COLS, TERMINAL_MIN_COLS, TERMINAL_MIN_ROWS, TERMINAL_MAX_ROWS, TERMINAL_FRAME_BYTES, TERMINAL_TITLE_LENGTH, MAX_TERMINAL_SESSIONS } from "./constants.js";
|
|
4
|
+
// Every command is validated before it reaches a shell.
|
|
5
|
+
const id = Type.String({
|
|
6
|
+
minLength: 1,
|
|
7
|
+
maxLength: 64,
|
|
8
|
+
description: 'Terminal session identifier.'
|
|
9
|
+
});
|
|
10
|
+
const requestId = Type.String({
|
|
11
|
+
minLength: 1,
|
|
12
|
+
maxLength: 64,
|
|
13
|
+
description: 'Client operation identifier.'
|
|
14
|
+
});
|
|
15
|
+
const cols = Type.Integer({
|
|
16
|
+
minimum: TERMINAL_MIN_COLS,
|
|
17
|
+
maximum: TERMINAL_MAX_COLS,
|
|
18
|
+
description: 'Screen columns.'
|
|
19
|
+
});
|
|
20
|
+
const rows = Type.Integer({
|
|
21
|
+
minimum: TERMINAL_MIN_ROWS,
|
|
22
|
+
maximum: TERMINAL_MAX_ROWS,
|
|
23
|
+
description: 'Screen rows.'
|
|
24
|
+
});
|
|
25
|
+
const data = Type.String({
|
|
26
|
+
maxLength: TERMINAL_FRAME_BYTES,
|
|
27
|
+
description: 'Terminal data.'
|
|
28
|
+
});
|
|
29
|
+
function message(type, fields) {
|
|
30
|
+
return Type.Object({
|
|
31
|
+
type: Type.Literal(type, { description: 'Message discriminator.' }),
|
|
32
|
+
...fields
|
|
33
|
+
}, { additionalProperties: false, description: `${type} terminal message.` });
|
|
34
|
+
}
|
|
35
|
+
export const TerminalModeSchema = Type.Union([Type.Literal('pty'), Type.Literal('pipe')], { description: 'Backend mode.' });
|
|
36
|
+
export const TerminalRunningSchema = Type.Union([Type.Literal('idle'), Type.Literal('running'), Type.Literal('unknown')], { description: 'Confirmed process activity or unknown.' });
|
|
37
|
+
export const TerminalInfoSchema = Type.Object({
|
|
38
|
+
id,
|
|
39
|
+
title: Type.String({
|
|
40
|
+
maxLength: TERMINAL_TITLE_LENGTH,
|
|
41
|
+
description: 'Shell title or fallback label.'
|
|
42
|
+
}),
|
|
43
|
+
cols,
|
|
44
|
+
rows,
|
|
45
|
+
mode: TerminalModeSchema,
|
|
46
|
+
running: TerminalRunningSchema
|
|
47
|
+
}, { description: 'Live terminal session.' });
|
|
48
|
+
export const TerminalCapabilitySchema = Type.Object({
|
|
49
|
+
available: Type.Boolean({
|
|
50
|
+
description: 'Terminal access is enabled on this bind.'
|
|
51
|
+
}),
|
|
52
|
+
mode: Nullable(TerminalModeSchema)
|
|
53
|
+
}, { description: 'Server terminal capability.' });
|
|
54
|
+
export const TerminalTokenSchema = Type.Object({ token: Type.String({ description: 'One-use connection token.' }) }, { description: 'WebSocket connection credential.' });
|
|
55
|
+
export const TerminalClientMessageSchema = Type.Union([
|
|
56
|
+
message('create', { requestId, cols, rows }),
|
|
57
|
+
message('subscribe', { terminalId: id }),
|
|
58
|
+
message('snapshot', { terminalId: id }),
|
|
59
|
+
message('input', { terminalId: id, data }),
|
|
60
|
+
message('line', { terminalId: id, data }),
|
|
61
|
+
message('signal', {
|
|
62
|
+
terminalId: id,
|
|
63
|
+
signal: Type.Union([Type.Literal('interrupt'), Type.Literal('eof')], {
|
|
64
|
+
description: 'Limited-mode control action.'
|
|
65
|
+
})
|
|
66
|
+
}),
|
|
67
|
+
message('resize', { terminalId: id, cols, rows }),
|
|
68
|
+
message('close', { terminalId: id, requestId }),
|
|
69
|
+
message('ack', {
|
|
70
|
+
terminalId: id,
|
|
71
|
+
sequence: Type.Integer({
|
|
72
|
+
minimum: 0,
|
|
73
|
+
description: 'Last processed output sequence.'
|
|
74
|
+
})
|
|
75
|
+
}),
|
|
76
|
+
message('ping', {})
|
|
77
|
+
], { description: 'Validated client terminal protocol.' });
|
|
78
|
+
export const TerminalServerMessageSchema = Type.Union([
|
|
79
|
+
message('list', {
|
|
80
|
+
sessions: Type.Array(TerminalInfoSchema, {
|
|
81
|
+
maxItems: MAX_TERMINAL_SESSIONS,
|
|
82
|
+
description: 'Current server sessions.'
|
|
83
|
+
})
|
|
84
|
+
}),
|
|
85
|
+
message('created', { requestId, terminalId: id }),
|
|
86
|
+
message('snapshot', {
|
|
87
|
+
terminalId: id,
|
|
88
|
+
data: Type.String({ description: 'Serialized screen and parser tail.' }),
|
|
89
|
+
cols,
|
|
90
|
+
rows,
|
|
91
|
+
sequence: Type.Integer({
|
|
92
|
+
minimum: 0,
|
|
93
|
+
description: 'Snapshot output boundary.'
|
|
94
|
+
})
|
|
95
|
+
}),
|
|
96
|
+
message('output', {
|
|
97
|
+
terminalId: id,
|
|
98
|
+
data,
|
|
99
|
+
cols,
|
|
100
|
+
rows,
|
|
101
|
+
sequence: Type.Integer({ minimum: 1, description: 'Output sequence.' })
|
|
102
|
+
}),
|
|
103
|
+
message('title', {
|
|
104
|
+
terminalId: id,
|
|
105
|
+
title: Type.String({ description: 'Updated shell title.' })
|
|
106
|
+
}),
|
|
107
|
+
message('exit', { terminalId: id }),
|
|
108
|
+
message('error', {
|
|
109
|
+
requestId: Type.Optional(requestId),
|
|
110
|
+
code: Type.String({ description: 'Domain error code.' }),
|
|
111
|
+
message: Type.String({ description: 'Operation failure.' })
|
|
112
|
+
}),
|
|
113
|
+
message('pong', {})
|
|
114
|
+
], { description: 'Server terminal protocol.' });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/typescript-Utq2Cl8c.js","assets/typescript-j_1H8WHN.js","assets/javascript-Yelw-5ZN.js","assets/javascript-BzbQS41l.js","assets/vue-CSBlZ1UP.js","assets/css-LbU1hoFO.js","assets/html-BcACZWSP.js","assets/json-B88Oqtu5.js","assets/json-CaljABEy.js","assets/css-CdtkT07m.js","assets/scss-DHtrkMkT.js","assets/html-DDNsd9lV.js","assets/core-C37KF-j0.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/engine-oniguruma-B4iNeJbd.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{
|
|
2
|
+
import{J as e,L as t,P as n,S as r,_ as i,b as a,ct as o,l as s,ot as c,pt as l,s as u,w as d}from"./runtime-core.esm-bundler-BKFI1w28.js";import{D as f,O as p,_ as m,j as h,t as g}from"./QBtn-CzrOO1zA.js";import{t as _}from"./create-BSmXD9Zr.js";import{F as v}from"./index-DEwYKvIG.js";import{n as y}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as b}from"./pinia-DCsnCHsH.js";import{d as x,f as S,l as C,o as ee,s as w,u as T}from"./use-server-events-znzHKZZx.js";function E(e){if(e.length<2||e[0]!==`"`||e[e.length-1]!==`"`)return e;let t=e.slice(1,-1),n=[];for(let e=0;e<t.length;e++){let r=t[e];r===`\\`&&/^[0-7]{3}$/.test(t.slice(e+1,e+4))?(n.push(parseInt(t.slice(e+1,e+4),8)),e+=3):r===`\\`&&t[e+1]===`"`?(n.push(34),e+=1):r===`\\`&&t[e+1]===`\\`?(n.push(92),e+=1):n.push((r??``).charCodeAt(0))}return new TextDecoder(`utf-8`).decode(new Uint8Array(n))}function D(e){return e.newPath||e.oldPath}function O(e,t){return`${e}:${t}`}function k(e,t){let n=new Map,r=0;function i(e){let t=n.get(e);if(t)return n.delete(e),n.set(e,t),t.value}function a(i,a){o(i);let s=t(a);n.set(i,{value:a,weight:s}),r+=s;for(let[t,i]of n){if(r<=e||n.size<=1)break;n.delete(t),r-=i.weight}}function o(e){let t=n.get(e);t&&(n.delete(e),r-=t.weight)}return{get:i,set:a,remove:o,size:()=>n.size}}var A={typescript:()=>v(()=>import(`./typescript-Utq2Cl8c.js`),__vite__mapDeps([0,1])),tsx:()=>v(()=>import(`./tsx-udAQXfEw.js`),[]),javascript:()=>v(()=>import(`./javascript-Yelw-5ZN.js`),__vite__mapDeps([2,3])),jsx:()=>v(()=>import(`./jsx-Bz0zcwM4.js`),[]),vue:()=>v(()=>import(`./vue-CSBlZ1UP.js`),__vite__mapDeps([4,5,3,6,7,1])),json:()=>v(()=>import(`./json-CaljABEy.js`),__vite__mapDeps([8,7])),markdown:()=>v(()=>import(`./markdown-BYOwaDjH.js`),[]),css:()=>v(()=>import(`./css-CdtkT07m.js`),__vite__mapDeps([9,5])),scss:()=>v(()=>import(`./scss-DHtrkMkT.js`),__vite__mapDeps([10,5])),html:()=>v(()=>import(`./html-DDNsd9lV.js`),__vite__mapDeps([11,6,5,3])),yaml:()=>v(()=>import(`./yaml-rwi0_p6S.js`),[]),bash:()=>v(()=>import(`./bash-CLZ0U2zV.js`),[]),python:()=>v(()=>import(`./python-gzcpVVnB.js`),[]),go:()=>v(()=>import(`./go-rLFTqkRN.js`),[]),rust:()=>v(()=>import(`./rust-Cfkwpbl8.js`),[]),java:()=>v(()=>import(`./java-BXcb2rRD.js`),[]),kotlin:()=>v(()=>import(`./kotlin-DhhofPvG.js`),[])},j={light:()=>v(()=>import(`./github-light-EUqPIrTm.js`),[]),dark:()=>v(()=>import(`./github-dark-C-LZuMrd.js`),[])},te={light:`github-light`,dark:`github-dark`},M=null,N=new Set,P=new Map;function F(e){return A[e]!==void 0}async function ne(e,t){try{await e.loadLanguage(A[t]()),N.add(t)}finally{P.delete(t)}}async function re(e){M||=(async()=>{let[{createHighlighterCore:e},{createOnigurumaEngine:t}]=await Promise.all([v(()=>import(`./core-C37KF-j0.js`),__vite__mapDeps([12,13])),v(()=>import(`./engine-oniguruma-B4iNeJbd.js`),__vite__mapDeps([14,13]))]);return e({themes:[j.light(),j.dark()],langs:[],engine:t(()=>v(()=>import(`./wasm-BnjxR4X6.js`),[]))})})();let t=await M;if(!N.has(e)){let n=P.get(e);n||(n=ne(t,e),P.set(e,n)),await n}return t}async function ie(e,t,n={}){if(!F(e)||t.length===0)return`failed`;let r=n.documents??[{length:t.length,skip:0}];if(r.reduce((e,t)=>e+t.length,0)!==t.length)return`failed`;let{signal:i}=n;try{let a=await re(e),o=0,s=0,c=!0;for(let l of r){let r,u=Math.max(1,n.sliceSize??l.length);for(let d=0;d<l.length;d+=u){if(c||await n.yieldBetween?.(),c=!1,i?.aborted)return`aborted`;let f=Math.min(d+u,l.length),p=a.codeToTokensWithThemes(t.slice(o+d,o+f).join(`
|
|
3
3
|
`),{lang:e,themes:te,...r?{grammarState:r}:{}});r=a.getLastGrammarState(p);let m=Math.max(d,l.skip);f<=m||(n.onSlice?.(p.slice(m-d).map(e=>e.map(e=>({content:e.content,colorLight:e.variants.light?.color,colorDark:e.variants.dark?.color}))),s),s+=f-m)}o+=l.length}return`done`}catch{return`failed`}}var I=null,L=!1,ae=1,R=new Map;function z(){return typeof Worker<`u`&&!L}function oe(){let e=new Worker(new URL(`/assets/highlight.worker-BHCdEX06.js`,``+import.meta.url),{type:`module`});return e.addEventListener(`message`,e=>{let t=e.data,n=R.get(t.id);n&&(t.type===`slice`?n.onSlice(t.tokens,t.start):(R.delete(t.id),n.finish(t.ok?`done`:`failed`)))}),e.addEventListener(`error`,t=>{console.error(`The highlight worker failed, the main thread does the work now`,t),L=!0;for(let e of R.values())e.finish(`failed`);R.clear(),e.terminate(),I=null}),e}function B(e,t){e.postMessage(t)}function se(e,t,n){let{signal:r}=n;if(r?.aborted)return Promise.resolve(`aborted`);if(!I)try{I=oe()}catch(e){return console.error(`The highlight worker did not start`,e),L=!0,Promise.resolve(`unsent`)}let i=I;return new Promise(a=>{let o=ae++,s=()=>{R.delete(o)&&(I&&B(I,{type:`cancel`,id:o}),a(`aborted`))};R.set(o,{onSlice:(e,t)=>n.onSlice?.(e,t),finish:e=>{r?.removeEventListener(`abort`,s),a(e)}});try{B(i,{type:`tokenize`,id:o,lang:e,lines:Array.from(t),...n.documents?{documents:n.documents.map(e=>({...e}))}:{},sliceSize:n.sliceSize})}catch(e){console.error(`The highlight worker did not get the request`,e),R.delete(o),a(`unsent`);return}r?.addEventListener(`abort`,s,{once:!0})})}function ce(){return typeof MessageChannel>`u`?new Promise(e=>setTimeout(e,0)):new Promise(e=>{let{port1:t,port2:n}=new MessageChannel;t.addEventListener(`message`,()=>{t.close(),e()},{once:!0}),t.start(),n.postMessage(null)})}var V=`import { ref, type Ref } from 'vue'
|
|
4
4
|
import * as path from 'node:path'
|
|
5
5
|
// A comment with a TODO and a URL: https://example.com
|
|
@@ -90,4 +90,4 @@ Some *emphasis*, **strong** text, \`inline code\` and a [link](https://example.c
|
|
|
90
90
|
const answer: number = 42
|
|
91
91
|
\`\`\`
|
|
92
92
|
`,typescript:V,javascript:V,tsx:V,jsx:V};function ue(e){return(le[e]??`x`).split(`
|
|
93
|
-
`)}var de=2e4,U=100,fe={ts:`typescript`,tsx:`tsx`,js:`javascript`,jsx:`jsx`,mjs:`javascript`,cjs:`javascript`,vue:`vue`,json:`json`,md:`markdown`,css:`css`,scss:`scss`,html:`html`,yml:`yaml`,yaml:`yaml`,sh:`bash`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,kts:`kotlin`};function W(e){let t=e.split(`.`);return t.length<2?`text`:fe[t.pop().toLowerCase()]??`text`}function pe(e){return F(W(e))}function G(e,t,n,r,i){return ie(e,t,{documents:n,sliceSize:U,yieldBetween:ce,signal:r,onSlice:i})}async function K(e,t,n,r,i){let a=[],o=(e,t)=>{a.splice(t,e.length,...e),r?.(a.slice())};if(!z())return q(await G(e,t,i,n,o),a);let s=await se(e,t,{sliceSize:U,documents:i,signal:n,onSlice:o});return(s===`unsent`||s===`failed`&&!z())&&(s=await G(e,t,i,n,o)),q(s,a)}function q(e,t){return e===`done`?t:e===`aborted`?void 0:null}var J=new Set;async function me(e){await K(e,ue(e)).catch(()=>null)===null&&J.delete(e)}function he(e){if(!z())return;let t=new Set(e.map(W).filter(F));for(let e of t)J.has(e)||(J.add(e),me(e))}var Y=k(de,e=>e?.length??1),X=Promise.resolve();function ge(e){let t=X.then(()=>new Promise(e=>setTimeout(e,0))).then(e);return X=t.catch(()=>void 0),t}function _e(e,t,n,r,i,a){return ge(async()=>{let o=Y.get(e);if(o!==void 0)return o;if(r?.aborted)return;let s=n(),c=await K(W(t),s,r,i,a?.());if(c!==void 0)return Y.set(e,c),c})}function ve(e){return Y.get(e)}function Z(e){return{...e,oldPath:E(e.oldPath),newPath:E(e.newPath)}}function ye(e){let{signature:t,...n}=e;return{...n,hunks:[]}}function Q(e,t,n){let r=new Map(e.map(e=>[D(e),e])),i=new Map;return{files:n.map(e=>{let n=D(e);i.set(n,e.signature);let a=r.get(n);return a&&t.get(n)===e.signature?a:ye(e)}),signatures:i}}var be=b(`diff`,()=>{let e=
|
|
93
|
+
`)}var de=2e4,U=100,fe={ts:`typescript`,tsx:`tsx`,js:`javascript`,jsx:`jsx`,mjs:`javascript`,cjs:`javascript`,vue:`vue`,json:`json`,md:`markdown`,css:`css`,scss:`scss`,html:`html`,yml:`yaml`,yaml:`yaml`,sh:`bash`,py:`python`,go:`go`,rs:`rust`,java:`java`,kt:`kotlin`,kts:`kotlin`};function W(e){let t=e.split(`.`);return t.length<2?`text`:fe[t.pop().toLowerCase()]??`text`}function pe(e){return F(W(e))}function G(e,t,n,r,i){return ie(e,t,{documents:n,sliceSize:U,yieldBetween:ce,signal:r,onSlice:i})}async function K(e,t,n,r,i){let a=[],o=(e,t)=>{a.splice(t,e.length,...e),r?.(a.slice())};if(!z())return q(await G(e,t,i,n,o),a);let s=await se(e,t,{sliceSize:U,documents:i,signal:n,onSlice:o});return(s===`unsent`||s===`failed`&&!z())&&(s=await G(e,t,i,n,o)),q(s,a)}function q(e,t){return e===`done`?t:e===`aborted`?void 0:null}var J=new Set;async function me(e){await K(e,ue(e)).catch(()=>null)===null&&J.delete(e)}function he(e){if(!z())return;let t=new Set(e.map(W).filter(F));for(let e of t)J.has(e)||(J.add(e),me(e))}var Y=k(de,e=>e?.length??1),X=Promise.resolve();function ge(e){let t=X.then(()=>new Promise(e=>setTimeout(e,0))).then(e);return X=t.catch(()=>void 0),t}function _e(e,t,n,r,i,a){return ge(async()=>{let o=Y.get(e);if(o!==void 0)return o;if(r?.aborted)return;let s=n(),c=await K(W(t),s,r,i,a?.());if(c!==void 0)return Y.set(e,c),c})}function ve(e){return Y.get(e)}function Z(e){return{...e,oldPath:E(e.oldPath),newPath:E(e.newPath)}}function ye(e){let{signature:t,...n}=e;return{...n,hunks:[]}}function Q(e,t,n){let r=new Map(e.map(e=>[D(e),e])),i=new Map;return{files:n.map(e=>{let n=D(e);i.set(n,e.signature);let a=r.get(n);return a&&t.get(n)===e.signature?a:ye(e)}),signatures:i}}var be=b(`diff`,()=>{let e=c([]),t=c([]),n=new Map,r=new Map,i=c(!1),a=c(!1),s=c(null),l=u(()=>i.value&&!a.value),d=u(()=>[...e.value,...t.value].map(e=>e.newPath||e.oldPath)),f=o(new Map),p=o(new Map),m=new Map;function h(n){return n===`staged`?e.value:t.value}function g(e,t){return f.value.get(O(e,D(t)))?.file}function _(e,t){return f.value.get(O(e,D(t)))?.for===t}function v(e,t){let n=p.value.get(O(e,D(t)));return n?.for===t?n.message:void 0}function y(e,t){let n=O(e,D(t));if(!p.value.has(n))return;let r=new Map(p.value);r.delete(n),p.value=r}function b(e,t){return y(e,t),x(e,t)}async function x(e,t){let n=O(e,D(t));if(_(e,t)||m.get(n)===t)return;m.set(n,t);let r=new URLSearchParams({path:t.newPath,oldPath:t.oldPath,status:t.status});try{let i=Z(await T(`/api/diff/${e}/file?${r}`));if(!h(e).includes(t))return;f.value=new Map(f.value).set(n,{file:i,for:t}),y(e,t)}catch(r){if(!h(e).includes(t))return;p.value=new Map(p.value).set(n,{message:w(r),for:t})}finally{m.get(n)===t&&m.delete(n)}}function S(){let n=new Set([...e.value.map(e=>O(`staged`,D(e))),...t.value.map(e=>O(`unstaged`,D(e)))]),r=new Map([...f.value].filter(([e])=>n.has(e)));r.size!==f.value.size&&(f.value=r);let i=new Map([...p.value].filter(([e])=>n.has(e)));i.size!==p.value.size&&(p.value=i)}let C=ee(E);async function E(){i.value=!0;try{let[i,a]=await Promise.all([T(`/api/diff/staged/files`),T(`/api/diff/unstaged/files`)]),o=Q(e.value,n,i.map(Z)),c=Q(t.value,r,a.map(Z));e.value=o.files,n=o.signatures,t.value=c.files,r=c.signatures,S(),he([...o.files,...c.files].map(D)),s.value=null}catch(i){a.value||(e.value=[],t.value=[],n=new Map,r=new Map),s.value=w(i)}finally{i.value=!1,a.value=!0}}return{stagedFiles:e,unstagedFiles:t,loading:i,loaded:a,initialLoading:l,error:s,changedPaths:d,hunksOf:g,hunksFresh:_,hunksError:v,clearHunksError:y,ensureHunks:x,retryHunks:b,fetchDiff:C}});function $(e){let{snapshotData:t,...n}=e;return n}var xe=b(`active-review`,()=>{let e=c(null),t=c([]),n=c(!1),r=u(()=>{let e=new Map;for(let n of t.value){let t=e.get(n.filePath);t?t.push(n):e.set(n.filePath,[n])}return e});async function i(){n.value=!0;try{let n=(await T(`/api/reviews`)).filter(e=>e.status===`in_progress`).sort((e,t)=>t.createdAt.localeCompare(e.createdAt));e.value=n[0]??null,t.value=e.value?await T(`/api/reviews/${e.value.id}/comments`):[]}finally{n.value=!1}}function a(n){e.value=$(n),t.value=[]}async function o(t){e.value&&(await x(`/api/reviews/${e.value.id}`,{status:t}),await i())}async function s(n){if(!e.value)throw Error(`No active review`);let r=await S(`/api/reviews/${e.value.id}/comments`,n);return t.value=[...t.value,r],r}async function l(e,n){let r=await x(`/api/comments/${e}`,{content:n});t.value=t.value.map(t=>t.id===e?r:t)}async function d(e){await C(`/api/comments/${e}`),t.value=t.value.filter(t=>t.id!==e)}async function f(e){let n=await x(`/api/comments/${e}/resolve`);t.value=t.value.map(t=>t.id===e?n:t)}async function p(e){let n=await x(`/api/comments/${e}/unresolve`);t.value=t.value.map(t=>t.id===e?n:t)}return{activeReview:e,comments:t,loading:n,commentsByFile:r,refresh:i,setActiveReview:a,setStatus:o,createComment:s,editComment:l,deleteComment:d,resolveComment:f,unresolveComment:p}}),Se=i({__name:`CancelButton`,setup(e){let{t}=y();return(e,r)=>(n(),s(g,d({padding:`2px 8px`},e.$attrs,{dense:``,flat:``,color:`warning`,label:l(t)(`reviews.comments.cancel`)}),null,16,[`label`]))}}),Ce=i({__name:`CreateButton`,setup(e){let{t}=y();return(e,r)=>(n(),s(g,d({padding:`2px 8px`,label:l(t)(`reviews.create.submit`)},e.$attrs,{unelevated:``,dense:``,color:`accent`}),null,16,[`label`]))}}),we=_({name:`QPage`,props:{padding:Boolean,styleFn:Function},setup(e,{slots:t}){let n=f(),i=r(h,p);if(i===p)return console.error(`QPage needs to be a deep child of QLayout`),p;if(r(`_q_pc_`,p)===p)return console.error(`QPage needs to be child of QPageContainer`),p;let o=u(()=>{let t=(i.header.space?i.header.size:0)+(i.footer.space?i.footer.size:0);if(typeof e.styleFn==`function`){let r=i.isContainer.value?i.containerHeight.value:n.screen.height;return e.styleFn(t,r)}return{minHeight:i.isContainer.value?i.containerHeight.value-t+`px`:n.screen.height===0?t===0?`100vh`:`calc(100vh - ${t}px)`:n.screen.height-t+`px`}}),s=u(()=>`q-page${e.padding?` q-layout-padding`:``}`);return()=>a(`main`,{class:s.value,style:o.value},m(t.default))}}),Te=i({__name:`AppPage`,setup(r){function i(e,t){return{height:`${t-e}px`}}return(r,a)=>(n(),s(we,{"style-fn":i},{default:e(()=>[t(r.$slots,`default`)]),_:3}))}});export{$ as a,pe as c,k as d,O as f,xe as i,_e as l,E as m,Ce as n,be as o,D as p,Se as r,ve as s,Te as t,W as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,F as t,J as n,K as r,P as i,S as a,U as o,Y as s,_ as c,b as l,c as u,ct as d,d as f,h as p,kt as m,l as h,ot as g,pt as _,r as v,s as y,v as b,w as x}from"./runtime-core.esm-bundler-BKFI1w28.js";import{D as S,H as C,O as w,_ as T,d as E,h as D,j as O,k,t as A}from"./QBtn-CzrOO1zA.js";import{t as j}from"./create-BSmXD9Zr.js";import{_ as M,ct as N,f as P,m as F,n as I,ot as L,p as R,q as ee,st as te}from"./index-DEwYKvIG.js";import{n as ne}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as z,r as B}from"./pinia-DCsnCHsH.js";import{f as V,s as H,u as U}from"./use-server-events-znzHKZZx.js";import{t as W}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as G,o as K,r as q,u as J}from"./QScrollArea-Cu8zdp0y.js";import{a as Y,i as X,n as Z,o as re,r as ie}from"./AppPage-CiRB13sb.js";var ae=c({__name:`SearchInput`,props:{modelValue:{},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=o(e,`modelValue`);return(e,r)=>(i(),h(I,x({modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e},e.$attrs,{dense:``,outlined:``,clearable:``}),{prepend:n(()=>[p(E,{name:`search`,size:`xs`})]),_:1},16,[`modelValue`]))}}),oe=[`top`,`right`,`bottom`,`left`],Q={type:{type:String,default:`a`},outline:Boolean,push:Boolean,flat:Boolean,unelevated:Boolean,color:String,textColor:String,glossy:Boolean,square:Boolean,padding:String,label:{type:[String,Number],default:``},labelPosition:{type:String,default:`right`,validator:e=>oe.includes(e)},externalLabel:Boolean,hideLabel:{type:Boolean},labelClass:[Array,String,Object],labelStyle:[Array,String,Object],disable:Boolean,tabindex:[Number,String]},se=[`label`],ce=Object.keys(Q).filter(e=>!se.includes(e)&&A.props[e]!==void 0);function le(e){let t={};for(let n of ce)t[n]=e[n];return t}function ue(e,t){return{formClass:y(()=>`q-fab--form-${e.square?`square`:`rounded`}`),stacked:y(()=>!e.externalLabel&&[`top`,`bottom`].includes(e.labelPosition)),labelProps:y(()=>{if(e.externalLabel){let n=e.hideLabel===null?!t.value:e.hideLabel;return{action:`push`,data:{class:[e.labelClass,`q-fab__label q-tooltip--style q-fab__label--external q-fab__label--external-${e.labelPosition}`+(n?` q-fab__label--external-hidden`:``)],style:e.labelStyle}}}return{action:[`left`,`top`].includes(e.labelPosition)?`unshift`:`push`,data:{class:[e.labelClass,`q-fab__label q-fab__label--internal q-fab__label--internal-${e.labelPosition}`+(e.hideLabel?` q-fab__label--internal-hidden`:``)],style:e.labelStyle}}})}}var de=[`up`,`right`,`down`,`left`],fe=[`left`,`center`,`right`],pe=180,me=j({name:`QFab`,props:{...Q,...N,icon:String,activeIcon:String,hideIcon:Boolean,hideLabel:{...Q.hideLabel,default:null},direction:{type:String,default:`right`,validator:e=>de.includes(e)},...K,persistent:Boolean,stagger:{type:Number,default:40},verticalActionsAlign:{type:String,default:`center`,validator:e=>fe.includes(e)}},emits:te,setup(e,{slots:n}){let i=d(null),a=g(e.modelValue===!0),o=ee(),s=S(),{formClass:c,stacked:u,labelProps:f}=ue(e,a),p=y(()=>!e.persistent),{show:m,hide:h,toggle:_}=L({showing:a,hideOnRouteChange:p}),v=0,{clearHoverTimer:b,hoverShow:x,hoverHide:C}=G({props:e,canShow:()=>!a.value,show:e=>{v=Date.now(),m(e)},canHide:()=>a.value,hide:h});r(a,b);function w(e){a.value&&Date.now()-v<pe||_(e)}let O=y(()=>({opened:a.value})),j=y(()=>`q-fab z-fab row inline justify-center q-fab--align-${e.verticalActionsAlign} ${c.value}`+(a.value?` q-fab--opened`:` q-fab--closed`)),M=y(()=>`q-fab__actions flex no-wrap inline q-fab__actions--${e.direction} q-fab__actions--${a.value?`opened`:`closed`}`),N=y(()=>e.hover?{onPointerenter:x,onPointerleave:C}:{}),P=y(()=>{let t={id:o.value,style:`--q-fab-stagger: ${e.stagger}ms`};return a.value||(t[`aria-hidden`]=`true`),t}),F=y(()=>`q-fab__icon-holder q-fab__icon-holder--${a.value?`opened`:`closed`}`);function I(t,r){let i=n[t],a=`q-fab__${t} absolute-full`;return i===void 0?l(E,{class:a,name:e[r]||s.iconSet.fab[r]}):l(`div`,{class:a},i(O.value))}function R(){let t=[];return e.hideIcon||t.push(l(`div`,{class:F.value},[I(`icon`,`icon`),I(`active-icon`,`activeIcon`)])),(e.label!==``||n.label!==void 0)&&t[f.value.action](l(`div`,f.value.data,n.label===void 0?[e.label]:n.label(O.value))),D(n.tooltip,t)}return t(k,{showing:a,onChildClick(e){h(e),e?.qAvoidFocus!==!0&&i.value?.$el.focus()}}),()=>l(`div`,{class:j.value,...N.value},[l(A,{ref:i,class:c.value,...le(e),noWrap:!0,stack:u.value,noCaps:!0,fab:!0,"aria-expanded":a.value?`true`:`false`,"aria-controls":o.value,onClick:w},R),l(`div`,{class:M.value,...P.value},T(n.default))])}}),he={position:{type:String,default:`bottom-right`,validator:e=>[`top-right`,`top-left`,`bottom-right`,`bottom-left`,`top`,`right`,`bottom`,`left`].includes(e)},offset:{type:Array,validator:e=>e.length===2},expand:Boolean};function ge(){let{props:e}=b(),t=S(),n=a(O,w);if(n===w)return console.error(`QPageSticky needs to be child of QLayout`),w;let r=y(()=>{let t=e.position;return{top:t.includes(`top`),right:t.includes(`right`),bottom:t.includes(`bottom`),left:t.includes(`left`),vertical:t===`top`||t===`bottom`,horizontal:t===`left`||t===`right`}}),i=y(()=>n.header.offset),o=y(()=>n.right.offset),s=y(()=>n.footer.offset),c=y(()=>n.left.offset),u=y(()=>{let n=0,a=0,l=r.value,u=t.lang.rtl?-1:1;l.top&&i.value!==0?a=`${i.value}px`:l.bottom&&s.value!==0&&(a=`${-s.value}px`),l.left&&c.value!==0?n=`${u*c.value}px`:l.right&&o.value!==0&&(n=`${-u*o.value}px`);let d={transform:`translate(${n}, ${a})`};return e.offset&&(d.margin=`${e.offset[1]}px ${e.offset[0]}px`),l.vertical?(c.value!==0&&(d[t.lang.rtl?`right`:`left`]=`${c.value}px`),o.value!==0&&(d[t.lang.rtl?`left`:`right`]=`${o.value}px`)):l.horizontal&&(i.value!==0&&(d.top=`${i.value}px`),s.value!==0&&(d.bottom=`${s.value}px`)),d}),d=y(()=>`q-page-sticky row flex-center fixed-${e.position} q-page-sticky--${e.expand?`expand`:`shrink`}`);function f(t){let n=T(t.default);return l(`div`,{class:d.value,style:u.value},e.expand?n:[l(`div`,n)])}return{$layout:n,getStickyContent:f}}var _e=j({name:`QPageSticky`,props:he,setup(e,{slots:t}){let{getStickyContent:n}=ge();return()=>n(t)}});function ve(e){let t=new URLSearchParams;e.search&&t.set(`search`,e.search),e.createdFrom&&t.set(`createdFrom`,e.createdFrom),e.createdTo&&t.set(`createdTo`,e.createdTo),e.files&&e.files.length>0&&t.set(`files`,e.files.join(`,`));let n=t.toString();return n?`?${n}`:``}var $=z(`reviews`,()=>{let e=g([]),t=g(!1),n=g(null);async function r(r={}){t.value=!0,n.value=null;try{e.value=await U(`/api/reviews${ve(r)}`)}catch(t){e.value=[],n.value=H(t)}finally{t.value=!1}}async function i(t){let n=await V(`/api/reviews`,t);return e.value=[Y(n),...e.value],n}return{reviews:e,loading:t,error:n,fetchReviews:r,createReview:i}}),ye={class:`text-h6`},be=W(c({__name:`ReviewCreateDialog`,props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:e([`created`,`hide`],[`update:modelValue`]),setup(e,{emit:t}){let r=o(e,`modelValue`),a=t,{t:c}=ne(),l=$(),d=g(``),f=g(!1),v=g(null);function y(){d.value=``,f.value=!1,v.value=null}async function b(){f.value=!0,v.value=null;try{let e=d.value.trim(),t=await l.createReview(e?{name:e}:{});r.value=!1,y(),a(`created`,t)}catch(e){v.value=H(e)}finally{f.value=!1}}function x(){y(),a(`hide`)}return(e,t)=>(i(),h(M,{modelValue:r.value,"onUpdate:modelValue":t[1]||=e=>r.value=e,onHide:x},{default:n(()=>[p(F,{class:`review-create-dialog`},{default:n(()=>[p(R,null,{default:n(()=>[u(`div`,ye,m(_(c)(`reviews.create.title`)),1)]),_:1}),p(R,{class:`q-gutter-y-md`},{default:n(()=>[p(I,{modelValue:d.value,"onUpdate:modelValue":t[0]||=e=>d.value=e,dense:``,outlined:``,label:_(c)(`reviews.create.nameLabel`),hint:_(c)(`reviews.create.nameHint`),error:!!v.value,"error-message":v.value??void 0,onKeyup:C(b,[`enter`])},null,8,[`modelValue`,`label`,`hint`,`error`,`error-message`])]),_:1}),p(P,{align:`right`},{default:n(()=>[s(p(ie,null,null,512),[[q]]),p(Z,{loading:f.value,onClick:b},null,8,[`loading`])]),_:1})]),_:1})]),_:1},8,[`modelValue`]))}}),[[`__scopeId`,`data-v-095646d6`]]),xe=c({__name:`CreateReviewFabButton`,emits:[`created`],setup(e,{emit:t}){let r=t,a=X(),o=re(),{activeReview:c}=B(a),{changedPaths:l}=B(o),u=g(!1),d=g(!1),m=g([18,18]),h=g(!1),_=y(()=>l.value.length===0||c.value!==null);function b(e){h.value=e.isFirst!==!0&&e.isFinal!==!0,m.value=[m.value[0]-(e.delta?.x??0),m.value[1]-(e.delta?.y??0)]}function x(e){a.setActiveReview(e),r(`created`,e)}return(e,t)=>(i(),f(v,null,[p(_e,{position:`bottom-right`,offset:m.value},{default:n(()=>[s(p(me,{modelValue:d.value,"onUpdate:modelValue":t[0]||=e=>d.value=e,icon:`add`,color:`accent`,disable:_.value||h.value,onClick:t[1]||=e=>u.value=!0},null,8,[`modelValue`,`disable`]),[[J,b,void 0,{prevent:!0,mouse:!0}]])]),_:1},8,[`offset`]),p(be,{modelValue:u.value,"onUpdate:modelValue":t[2]||=e=>u.value=e,onCreated:x,onHide:t[3]||=e=>d.value=!1},null,8,[`modelValue`])],64))}});export{$ as n,ae as r,xe as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{P as e,c as t,d as n,h as r}from"./runtime-core.esm-bundler-BKFI1w28.js";import{t as i}from"./QBtn-CzrOO1zA.js";import{t as a}from"./_plugin-vue_export-helper-BDNMzG2s.js";var o={},s={class:`fullscreen bg-blue text-white text-center q-pa-md flex flex-center`};function c(a,o){return e(),n(`div`,s,[t(`div`,null,[o[0]||=t(`div`,{style:{"font-size":`30vh`}},`404`,-1),o[1]||=t(`div`,{class:`text-h2`,style:{opacity:`0.4`}},`Oops. Nothing here...`,-1),r(i,{class:`q-mt-xl`,color:`white`,"text-color":`blue`,unelevated:``,to:`/`,label:`Go Home`,"no-caps":``})])])}var l=a(o,[[`render`,c]]);export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.file-explorer[data-v-d0bbc6dd]{height:100%}[data-v-d0bbc6dd] .file-explorer__panel{flex-direction:column;flex-shrink:0;min-width:0;height:100%;display:flex}[data-v-d0bbc6dd] .file-explorer__content{flex-direction:column;flex-wrap:no-wrap;display:flex}.file-tree-node__icon-section[data-v-ef4a1d44]{min-width:0!important;padding-right:6px!important}.file-tree-node__label[data-v-ef4a1d44]{width:100%;min-width:0}.file-tree-node__chevron[data-v-ef4a1d44]{transition:transform .15s}.file-tree-node__chevron--expanded[data-v-ef4a1d44]{transform:rotate(90deg)}.file-tree-node--selected[data-v-ef4a1d44]{font-weight:500}.file-list-item__icon-section[data-v-a94df6a5]{min-width:0!important;padding-right:6px!important}.file-list-item__path-row[data-v-a94df6a5]{width:100%;min-width:0}.file-list-item__path-label[data-v-a94df6a5]{flex:0 auto;min-width:0}.file-list-item__badge[data-v-a94df6a5]{flex:none}.file-list-item--selected[data-v-a94df6a5],[data-v-a94df6a5] .file-list-item--selected{font-weight:500}.file-list-item__actions[data-v-a94df6a5]{gap:2px;flex-direction:row!important;padding:0 0 0 6px!important}.file-list-item__stats[data-v-a94df6a5]{padding-right:0!important}.diff-tree-folder-row__icons[data-v-e82c6cd4]{min-width:0!important;padding-right:6px!important}.diff-tree-folder-row__chevron[data-v-e82c6cd4]{transition:transform .15s}.diff-tree-folder-row__chevron--expanded[data-v-e82c6cd4]{transform:rotate(90deg)}.file-list-panel__scroll[data-v-bdc095b7] .q-scrollarea__content{width:100%}.card-shell-placeholder[data-v-c1bd4d06]{border:1px solid #80808033;border-radius:4px}.card-shell-placeholder__title[data-v-c1bd4d06]{background:var(--diff-header-bg);text-overflow:ellipsis;white-space:nowrap;height:44px;padding:6px 12px;overflow:hidden}.active-review-bar[data-v-2b6e4bdd]{min-height:36px}.diff-virtual-slot[data-v-44aabadb]{padding-bottom:8px}.diff-virtual-slot[data-v-44aabadb] .diff-file-card{margin-bottom:0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,Dt as t,F as n,I as r,J as i,K as a,L as o,M as s,O as c,Ot as l,P as u,R as d,T as f,U as p,W as m,Y as h,_ as g,b as _,c as v,ct as y,d as b,ft as x,h as S,j as C,kt as w,l as T,m as E,ot as D,pt as O,r as k,rt as A,s as j,tt as M,u as N}from"./runtime-core.esm-bundler-BKFI1w28.js";import{D as P,U as F,_ as I,d as L,h as ee,o as R,s as z,t as B}from"./QBtn-CzrOO1zA.js";import{u as te}from"./event-rR76ioXz.js";import{t as ne}from"./create-BSmXD9Zr.js";import{R as V,d as H,g as re,h as ie,q as ae,t as oe}from"./index-DEwYKvIG.js";import{n as U}from"./vue-i18n.runtime-BpRrzZrT.js";import{n as se,r as W}from"./pinia-DCsnCHsH.js";import{f as ce,n as le,o as ue,p as de,s as fe,u as pe}from"./use-server-events-znzHKZZx.js";import{t as me}from"./agent-store-DX4gIEHa.js";import{t as he}from"./safe-storage-B3bJArYP.js";import{t as G}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{c as K,l as q,n as ge,t as _e,u as ve}from"./QScrollArea-Cu8zdp0y.js";import{i as ye,n as be,t as xe}from"./QSpace-CEuZSBS2.js";import{a as Se,i as J,n as Ce,o as we,t as Te}from"./use-panel-width-e-yXva8i.js";import{r as Ee}from"./use-virtual-scroll-CIwaJCUj.js";import{f as De,i as Y,m as Oe,o as X,p as Z,t as ke}from"./AppPage-CiRB13sb.js";import{C as Ae,S as je,_ as Me,a as Ne,b as Pe,c as Fe,d as Ie,f as Le,g as Re,h as ze,i as Be,l as Ve,m as He,n as Ue,o as We,p as Ge,r as Ke,s as qe,t as Je,u as Ye,v as Xe,x as Ze,y as Qe}from"./StatusSwitcher--zNcE2-Y.js";import{r as $e,t as et}from"./CreateReviewFabButton-DTvX9Psc.js";var tt=8,nt=12,rt=20;function Q(e,t){return tt+e*nt+(t?rt:0)}function it(e){return e.toSorted((e,t)=>e.type===t.type?e.name.localeCompare(t.name):e.type===`directory`?-1:1).map(e=>({...e,children:e.children?it(e.children):void 0}))}function at(e,t){let n=[],r=new Map,i=e=>{let t=r.get(e);return t||(t=new Map,r.set(e,t)),t};for(let r of e){let e=r.split(`/`),a=n,o=``;for(let n=0;n<e.length;n++){let s=e[n];if(!s)continue;let c=n===e.length-1;o=o===``?s:`${o}/${s}`;let l=`${c?`f`:`d`}:${s}`,u=i(a),d=u.get(l);d||(d={name:s,path:c?r:o,type:c?`file`:`directory`,isChanged:c?t.has(r):!1,children:c?void 0:[]},a.push(d),u.set(l,d)),!c&&d.children&&(a=d.children)}}return it(n)}function ot(e,t){if(!t.trim())return e;let n=t.toLowerCase(),r=e=>{if(e.type===`file`)return e.path.toLowerCase().includes(n)?e:null;let t=e.children?.map(r).filter(e=>e!==null);return t&&t.length>0?{...e,children:t}:e.name.toLowerCase().includes(n)?e:null};return e.map(r).filter(e=>e!==null)}function st(e,t,n){let r=[],i=(e,a)=>{for(let o of e){if(o.type===`file`){r.push({kind:`file`,path:o.path,name:o.name,depth:a});continue}let e=o,s=[e.path],c=[e.name];for(;e.children?.length===1&&e.children[0]?.type===`directory`;)e=e.children[0],s.push(e.path),c.push(e.name);let l=n||!s.some(e=>t.has(e));r.push({kind:`folder`,path:e.path,paths:s,name:c.join(`/`),depth:a,expanded:l}),l&&i(e.children??[],a+1)}};return i(e,0),r}function ct(){let e=D([]),t=D(!1),n=D(!1),r=D(null),i=j(()=>!n.value),a=0;async function o(i,o=[]){let s=++a;t.value=!0;try{let t=await pe(`/api/git/tree/${encodeURIComponent(i)}`);if(s!==a)return;e.value=at(t.files.map(Oe),new Set(o)),r.value=null}catch(e){if(s!==a)return;r.value=fe(e)}finally{s===a&&(t.value=!1,n.value=!0)}}function s(){++a,e.value=[],t.value=!1,n.value=!1,r.value=null}return{tree:e,loading:t,initialLoading:i,error:r,fetchTree:o,reset:s}}var lt=`githuman.diffListMode`;function ut(){return he.get(lt)===`tree`?`tree`:`list`}function dt(e,t=new Set){for(let n of e)n.type===`directory`&&(t.add(n.path),dt(n.children??[],t));return t}function ft(e){return e.type===`file`?e.isChanged:e.children?.some(ft)??!1}var $=se(`file-explorer`,()=>{let e=X(),{tree:t,initialLoading:n,error:r,fetchTree:i,reset:o}=ct(),{lines:s,isBinary:c,loading:l,error:u,fetchContent:d,reset:f}=je(),p=D(`unstaged`),m=D(!1),h=D(``),g=D(null),_=D(new Set),v=D(new Set),y=D(ut()),b=D(new Set),x=D(null),S=D(0),C=j(()=>p.value===`staged`?e.stagedFiles:e.unstagedFiles),w=j(()=>new Map(C.value.map(e=>[Z(e),e]))),T=j(()=>y.value===`tree`?at(C.value.map(Z),new Set):[]),E=j(()=>{let e=C.value;if(y.value===`list`)return e;let t=w.value,n=st(T.value,new Set,!0).flatMap(e=>e.kind===`file`?t.get(e.path)??[]:[]),r=new Set(n);return[...n,...e.filter(e=>!r.has(e))]}),O=j(()=>(h.value??``).trim()!==``),k=j(()=>{let e=(h.value??``).trim().toLowerCase();return e?E.value.filter(t=>Z(t).toLowerCase().includes(e)):E.value}),A=j(()=>{let e=w.value;return st(ot(T.value,(h.value??``).trim()),b.value,O.value).flatMap(t=>{if(t.kind===`folder`)return[t];let n=e.get(t.path);return n?[{...t,file:n}]:[]})}),M=j(()=>ot(t.value,h.value??``)),N=j(()=>{let e=0,n=t=>{for(let r of t)r.type===`file`?e++:r.children&&n(r.children)};return n(t.value),e});a(t,e=>{let t=new Set,n=e=>{for(let r of e)r.type===`directory`&&r.children&&(ft(r)&&t.add(r.path),n(r.children))};n(e),_.value=t},{immediate:!0}),a(p,()=>{g.value=null,v.value=new Set,b.value=new Set,x.value=null,S.value++}),a(T,e=>{if(y.value!==`tree`||b.value.size===0)return;let t=dt(e),n=[...b.value].filter(e=>t.has(e));n.length<b.value.size&&(b.value=new Set(n))}),a(g,e=>{if(m.value){if(!e){f();return}d(e,`WORKTREE`)}}),a(y,e=>{he.set(lt,e),g.value&&!m.value&&te(g.value)});function P(e){let t=new Set(b.value),n=e.some(e=>t.has(e));for(let r of e)n?t.delete(r):t.add(r);b.value=t}function F(e){let t=new Set(_.value);t.has(e)?t.delete(e):t.add(e),_.value=t}function I(e){let t=new Set(v.value);t.has(e)?t.delete(e):t.add(e),v.value=t}function L(e){g.value=e,I(e)}function ee(e){g.value=e,v.value.has(e)||(v.value=new Set(v.value).add(e))}function R(){v.value=new Set(E.value.map(Z)),S.value++}function z(){v.value=new Set,S.value++}function B(e){g.value=e,!m.value&&(v.value.has(e)||(v.value=new Set(v.value).add(e)),te(e))}function te(e){let t=E.value.findIndex(t=>Z(t)===e);t<0||(x.value={path:e,index:t,seq:(x.value?.seq??0)+1})}let ne=0,V=D(!1),H=ue(async()=>{V.value=!0;try{await e.fetchDiff(),m.value&&(await i(`WORKTREE`,e.changedPaths),g.value&&await d(g.value,`WORKTREE`))}finally{V.value=!1}});a(m,e=>{h.value=``,g.value=null,e?H():(o(),f())});async function re(){ne=Date.now(),await H()}async function ie(){Date.now()-ne<400||await H()}return{source:p,browseMode:m,filter:h,selectedPath:g,expandedFolders:_,expandedFiles:v,diffListMode:y,collapsedDiffFolders:b,scrollRequest:x,layoutVersion:S,tree:t,treeInitialLoading:n,treeError:r,refreshing:V,browseFileLines:s,browseFileIsBinary:c,browseFileLoading:l,browseFileError:u,diffFiles:E,filtering:O,filteredDiffFiles:k,diffTreeRows:A,filteredTree:M,totalTreeFiles:N,toggleFolder:F,toggleDiffFolder:P,toggleFileCard:I,handleCardToggle:L,expandFile:ee,expandAllFiles:R,collapseAllFiles:z,selectFile:B,refresh:re,refreshFromServerEvent:ie}}),pt=ne({name:`QSplitter`,props:{...re,modelValue:{type:Number,required:!0},reverse:Boolean,unit:{type:String,default:`%`,validator:e=>[`%`,`px`].includes(e)},limits:{type:Array,validator:e=>e.length!==2||typeof e[0]!=`number`||typeof e[1]!=`number`?!1:e[0]>=0&&e[0]<=e[1]},emitImmediately:Boolean,horizontal:Boolean,disable:Boolean,beforeClass:[Array,String,Object],afterClass:[Array,String,Object],separatorClass:[Array,String,Object],separatorStyle:[Array,String,Object],separatorAriaLabel:String},emits:[`update:modelValue`],setup(e,{slots:t,emit:n}){let r=P(),i=ie(e,r),o=y(null),s={before:y(null),after:y(null)},c=ae(),l=j(()=>`q-splitter no-wrap ${e.horizontal?`q-splitter--horizontal column`:`q-splitter--vertical row`} q-splitter--${e.disable?`disabled`:`workable`}`+(i()?` q-splitter--dark`:``)),u=j(()=>e.horizontal?`height`:`width`),d=j(()=>e.reverse?`after`:`before`),p=j(()=>e.limits===void 0?e.unit===`%`?[10,90]:[50,1/0]:e.limits);function m(t){return(e.unit===`%`?t:Math.round(t))+e.unit}let g=j(()=>({[d.value]:{[u.value]:m(e.modelValue)}})),v,b,x,S,C;function w(t){if(t.isFirst){let t=o.value.getBoundingClientRect()[u.value];v=e.horizontal?`up`:`left`,b=e.unit===`%`?100:t,x=Math.min(b,p.value[1],Math.max(p.value[0],e.modelValue)),S=(e.reverse?-1:1)*(e.horizontal?1:r.lang.rtl?-1:1)*(e.unit===`%`?t===0?0:100/t:1),o.value.classList.add(`q-splitter--active`);return}if(t.isFinal){C!==e.modelValue&&n(`update:modelValue`,C),o.value.classList.remove(`q-splitter--active`);return}let i=x+S*(t.direction===v?-1:1)*t.distance[e.horizontal?`y`:`x`];C=Math.min(b,p.value[1],Math.max(p.value[0],i)),s[d.value].value.style[u.value]=m(C),e.emitImmediately&&e.modelValue!==C&&n(`update:modelValue`,C)}let T=j(()=>[[ve,e.disable?void 0:w,void 0,{[e.horizontal?`vertical`:`horizontal`]:!0,prevent:!0,stop:!0,mouse:!0,mouseAllDir:!0}]]),E=j(()=>{let t={role:`separator`,"aria-orientation":e.horizontal?`horizontal`:`vertical`,"aria-label":e.separatorAriaLabel||r.lang.label.resize};if(e.disable)t[`aria-disabled`]=`true`;else{let n=p.value;t.tabindex=0,t[`aria-controls`]=c.value,t[`aria-valuemin`]=n[0],n[1]!==1/0&&(t[`aria-valuemax`]=n[1]),t[`aria-valuenow`]=Math.round(e.modelValue*100)/100}return t}),D=null;function O(t){let{keyCode:i}=t,a=e.horizontal?[38,40]:[37,39];if(i!==13&&i!==36&&i!==35&&!a.includes(i))return;te(t);let s=p.value,c=e.unit===`%`?100:o.value.getBoundingClientRect()[u.value],l;if(i===13)e.modelValue===s[0]?l=D===null?e.modelValue:D:(D=e.modelValue,l=s[0]);else if(i===36)l=s[0];else if(i===35)l=s[1];else{let t=(i===a[0]?-1:1)*(e.reverse?-1:1)*(e.horizontal?1:r.lang.rtl?-1:1);l=e.modelValue+t*(e.unit===`%`?1:10)}let d=Math.min(c,s[1],Math.max(s[0],l));d!==e.modelValue&&n(`update:modelValue`,d)}function k(e,t){e<t[0]?n(`update:modelValue`,t[0]):e>t[1]&&n(`update:modelValue`,t[1])}return a(()=>e.modelValue,e=>{k(e,p.value)}),a(()=>e.limits,()=>{f(()=>{k(e.modelValue,p.value)})}),()=>{let n=[_(`div`,{ref:s.before,id:d.value===`before`?c.value:void 0,class:[`q-splitter__panel q-splitter__before`+(e.reverse?` col`:``),e.beforeClass],style:g.value.before},I(t.before)),_(`div`,{class:[`q-splitter__separator`,e.separatorClass],style:e.separatorStyle,...E.value,onKeydown:e.disable?void 0:O},[h(_(`div`,{class:`q-splitter__separator-area absolute-full`},I(t.separator)),T.value)]),_(`div`,{ref:s.after,id:d.value===`after`?c.value:void 0,class:[`q-splitter__panel q-splitter__after`+(e.reverse?``:` col`),e.afterClass],style:g.value.after},I(t.after))];return _(`div`,{class:l.value,ref:o},ee(t.default,n))}}}),mt=`githuman.fileListWidth`,ht=260,gt=220,_t=600,vt=G(g({__name:`PanelResize`,setup(e){let t=D(Ce(mt,gt,_t)??ht),n=j(()=>[gt,_t]);function r(e){de(e)&&(t.value=Te(e,gt,_t),he.set(mt,String(t.value)))}return(e,a)=>(u(),T(pt,{"model-value":t.value,limits:n.value,unit:`px`,class:`file-explorer`,"before-class":`file-explorer__panel`,"after-class":`file-explorer__content`,"onUpdate:modelValue":r},{before:i(()=>[o(e.$slots,`panel`,{},void 0,!0)]),after:i(()=>[o(e.$slots,`content`,{},void 0,!0)]),_:3},8,[`model-value`,`limits`]))}}),[[`__scopeId`,`data-v-d0bbc6dd`]]),yt={class:`row items-center no-wrap q-gutter-x-xs`},bt={class:`row items-center no-wrap q-gutter-x-xs`},xt=g({__name:`FileExplorerTabs`,props:e({stagedFilesLength:{},unstagedFilesLength:{}},{modelValue:{default:`unstaged`},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=p(e,`modelValue`),{t:n}=U();return(r,a)=>(u(),T(Se,{modelValue:t.value,"onUpdate:modelValue":a[0]||=e=>t.value=e,dense:``,"no-caps":``,align:`left`,"narrow-indicator":``,class:`text-primary q-mb-sm`},{default:i(()=>[S(we,{name:`unstaged`},{default:i(()=>[v(`div`,yt,[v(`span`,null,w(O(n)(`changes.unstaged`)),1),S(ge,{color:`warning`,rounded:``},{default:i(()=>[E(w(e.unstagedFilesLength),1)]),_:1})])]),_:1}),S(we,{name:`staged`},{default:i(()=>[v(`div`,bt,[v(`span`,null,w(O(n)(`changes.staged`)),1),S(ge,{color:`positive`,rounded:``},{default:i(()=>[E(w(e.stagedFilesLength),1)]),_:1})])]),_:1})]),_:1},8,[`modelValue`]))}}),St={class:`file-tree-node`},Ct={class:`row items-center no-wrap q-gutter-x-xs`},wt=[`data-tooltip`],Tt=[`data-tooltip`],Et={key:2},Dt=G(g({__name:`FileTreeNode`,props:{node:{},selectedPath:{},expandedFolders:{},level:{}},emits:[`toggle-folder`,`file-select`],setup(e,{emit:n}){let a=n;return(n,o)=>{let s=d(`FileTreeNode`,!0);return u(),b(`div`,St,[e.node.type===`directory`?h((u(),T(K,{key:0,clickable:``,dense:``,style:l({paddingLeft:`${O(Q)(e.level,!1)}px`}),onClick:o[0]||=t=>a(`toggle-folder`,e.node.path)},{default:i(()=>[S(q,{avatar:``,class:`file-tree-node__icon-section`},{default:i(()=>[v(`div`,Ct,[S(L,{name:`chevron_right`,size:`xs`,class:t([`file-tree-node__chevron`,{"file-tree-node__chevron--expanded":e.expandedFolders.has(e.node.path)}])},null,8,[`class`]),S(L,{name:e.expandedFolders.has(e.node.path)?`folder_open`:`folder`,size:`xs`,color:`warning`},null,8,[`name`])])]),_:1}),S(q,{class:`text-mono`},{default:i(()=>[v(`div`,{class:`ellipsis file-tree-node__label`,"data-tooltip":e.node.path},w(e.node.name),9,wt)]),_:1}),e.node.children?(u(),T(q,{key:0,side:``,class:`text-caption text-grey-6`},{default:i(()=>[E(w(e.node.children.length),1)]),_:1})):N(``,!0)]),_:1},8,[`style`])),[[R]]):h((u(),T(K,{key:1,clickable:``,dense:``,active:e.node.path===e.selectedPath,"active-class":`file-tree-node--selected`,style:l({paddingLeft:`${O(Q)(e.level,!0)}px`}),onClick:o[1]||=t=>a(`file-select`,e.node.path)},{default:i(()=>[S(q,{avatar:``,class:`file-tree-node__icon-section`},{default:i(()=>[S(L,{name:`insert_drive_file`,size:`xs`,color:`grey-6`})]),_:1}),S(q,{class:`text-mono`},{default:i(()=>[v(`div`,{class:`ellipsis file-tree-node__label`,"data-tooltip":e.node.path},w(e.node.name),9,Tt)]),_:1}),e.node.isChanged?(u(),T(q,{key:0,side:``},{default:i(()=>[S(L,{name:`fiber_manual_record`,size:`8px`,color:`warning`})]),_:1})):N(``,!0)]),_:1},8,[`active`,`style`])),[[R]]),e.node.type===`directory`&&e.expandedFolders.has(e.node.path)&&e.node.children?(u(),b(`div`,Et,[(u(!0),b(k,null,r(e.node.children,t=>(u(),T(s,{key:t.path,node:t,"selected-path":e.selectedPath,"expanded-folders":e.expandedFolders,level:e.level+1,onToggleFolder:o[2]||=e=>a(`toggle-folder`,e),onFileSelect:o[3]||=e=>a(`file-select`,e)},null,8,[`node`,`selected-path`,`expanded-folders`,`level`]))),128))])):N(``,!0)])}}}),[[`__scopeId`,`data-v-ef4a1d44`]]);function Ot(){let e=P(),{t}=U(),n=ye(),r=$(),i=Y();async function a(e,i,a){try{await ce(i,{paths:[e]}),await r.refresh()}catch(e){n(t(a),e)}}function o(n){let r=(i.commentsByFile.get(n)??[]).filter(e=>!e.resolved).length;if(r===0)return a(n,`/api/git/stage`,`changes.actions.stageError`);e.dialog({title:t(`changes.actions.stageUnresolvedTitle`),message:t(`changes.actions.stageUnresolvedMessage`,{path:n,count:r}),persistent:!0,ok:{label:t(`changes.actions.stageUnresolvedOk`),flat:!0},cancel:{label:t(`changes.actions.discardConfirmCancel`),flat:!0}}).onOk(()=>{a(n,`/api/git/stage`,`changes.actions.stageError`)})}function s(e){return a(e,`/api/git/unstage`,`changes.actions.unstageError`)}function c(n){e.dialog({title:t(`changes.actions.discardConfirmTitle`),message:t(`changes.actions.discardConfirmMessage`,{path:n}),persistent:!0,ok:{label:t(`changes.actions.discardConfirmOk`),color:`negative`,flat:!0},cancel:{label:t(`changes.actions.discardConfirmCancel`),flat:!0}}).onOk(()=>{a(n,`/api/git/discard`,`changes.actions.discardError`)})}return{stage:o,unstage:s,discard:c}}var kt={class:`file-list-item__path-row row no-wrap items-center`},At=[`data-tooltip`],jt={class:`text-caption`},Mt={class:`text-positive`},Nt={class:`text-negative q-ml-xs`},Pt=G(g({__name:`FileListItem`,props:{file:{},selected:{type:Boolean},source:{},label:{},depth:{}},emits:[`click`],setup(e){let n={added:`A`,modified:`M`,deleted:`D`,renamed:`R`},r={added:`positive`,modified:`warning`,deleted:`negative`,renamed:`purple`},a=e,{t:o}=U(),{stage:s,unstage:c,discard:d}=Ot(),f=Y(),p=j(()=>Z(a.file)),m=j(()=>f.commentsByFile.get(p.value)?.length??0);return(a,f)=>h((u(),T(K,{clickable:``,dense:``,class:`file-list-item`,active:e.selected,"active-class":`file-list-item--selected`,"aria-label":e.label===void 0?void 0:p.value,style:l(e.depth===void 0?void 0:{paddingLeft:`${O(Q)(e.depth,!0)}px`}),onClick:f[3]||=e=>a.$emit(`click`)},{default:i(()=>[S(q,{avatar:``,class:`file-list-item__icon-section`},{default:i(()=>[v(`span`,{class:t([`text-caption text-weight-bold text-mono`,`text-${r[e.file.status]}`])},w(n[e.file.status]),3)]),_:1}),S(q,{class:`text-mono`},{default:i(()=>[v(`div`,kt,[v(`span`,{class:`ellipsis file-list-item__path-label`,"data-tooltip":p.value},w(e.label??p.value),9,At),m.value>0?(u(),T(Ze,{key:0,compact:``,class:`file-list-item__badge`,count:m.value},null,8,[`count`])):N(``,!0)])]),_:1}),S(q,{side:``,class:`file-list-item__stats`},{default:i(()=>[v(`span`,jt,[v(`span`,Mt,`+`+w(e.file.additions),1),v(`span`,Nt,`-`+w(e.file.deletions),1)])]),_:1}),S(q,{side:``,class:`file-list-item__actions`},{default:i(()=>[e.source===`unstaged`?(u(),b(k,{key:0},[h(S(B,{flat:``,dense:``,round:``,size:`sm`,icon:`undo`,"aria-label":O(o)(`changes.actions.discard`),"data-tooltip":O(o)(`changes.actions.discard`),onClick:f[0]||=F(e=>O(d)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`]),[[R]]),h(S(B,{flat:``,dense:``,round:``,size:`sm`,icon:`add`,"aria-label":O(o)(`changes.actions.stage`),"data-tooltip":O(o)(`changes.actions.stage`),onClick:f[1]||=F(e=>O(s)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`]),[[R]])],64)):h((u(),T(B,{key:1,flat:``,dense:``,round:``,size:`sm`,icon:`remove`,"aria-label":O(o)(`changes.actions.unstage`),"data-tooltip":O(o)(`changes.actions.unstage`),onClick:f[2]||=F(e=>O(c)(p.value),[`stop`])},null,8,[`aria-label`,`data-tooltip`])),[[R]])]),_:1})]),_:1},8,[`active`,`aria-label`,`style`])),[[R]])}}),[[`__scopeId`,`data-v-a94df6a5`]]),Ft=g({__name:`BrowseModeToggle`,props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:[`update:modelValue`],setup(e){let t=p(e,`modelValue`),{t:n}=U();return(e,r)=>(u(),T(K,null,{default:i(()=>[S(q,null,{default:i(()=>[S(Ee,null,{default:i(()=>[E(w(O(n)(`browse.toggle`)),1)]),_:1})]),_:1}),S(q,{side:``},{default:i(()=>[S(oe,{modelValue:t.value,"onUpdate:modelValue":r[0]||=e=>t.value=e,dense:``,size:`xs`},null,8,[`modelValue`])]),_:1})]),_:1}))}}),It={class:`row items-center no-wrap q-gutter-x-xs`},Lt=[`data-tooltip`],Rt=G(g({__name:`DiffTreeFolderRow`,props:{name:{},path:{},depth:{},expanded:{type:Boolean},locked:{type:Boolean}},emits:[`toggle`],setup(e){let{t:n}=U();return(r,a)=>h((u(),T(K,{clickable:!e.locked,dense:``,class:`file-list-item diff-tree-folder-row`,style:l({paddingLeft:`${O(Q)(e.depth,!1)}px`}),"aria-expanded":e.locked?void 0:e.expanded,"aria-label":e.locked?void 0:O(n)(`changes.listMode.folder`,{path:e.path}),onClick:a[0]||=e=>r.$emit(`toggle`)},{default:i(()=>[S(q,{avatar:``,class:`diff-tree-folder-row__icons`},{default:i(()=>[v(`div`,It,[S(L,{name:`chevron_right`,size:`xs`,class:t([`diff-tree-folder-row__chevron`,{"diff-tree-folder-row__chevron--expanded":e.expanded,invisible:e.locked}])},null,8,[`class`]),S(L,{name:e.expanded?`folder_open`:`folder`,size:`xs`,color:`warning`},null,8,[`name`])])]),_:1}),S(q,{class:`text-mono`},{default:i(()=>[v(`span`,{class:`ellipsis`,"data-tooltip":e.path},w(e.name),9,Lt)]),_:1})]),_:1},8,[`clickable`,`style`,`aria-expanded`,`aria-label`])),[[R,!e.locked]])}}),[[`__scopeId`,`data-v-e82c6cd4`]]),zt={class:`file-list-panel__header q-pa-sm`},Bt={key:1,class:`text-subtitle2 q-mb-sm`},Vt={key:0,class:`text-primary`},Ht={class:`row no-wrap items-center q-gutter-x-xs`},Ut={key:0,class:`row justify-center q-pa-lg`},Wt={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},Gt={key:0,class:`text-caption text-grey-6 q-px-md q-py-sm`},Kt=32,qt=G(g({__name:`FileListPanel`,setup(e){let{t}=U(),{stagedFiles:n,unstagedFiles:a,initialLoading:o,error:s}=W(X()),c=$(),{source:l,browseMode:d,filter:f,selectedPath:p,expandedFolders:m,treeInitialLoading:h,treeError:g,filteredDiffFiles:_,diffTreeRows:y,diffListMode:x,filtering:C,filteredTree:A,totalTreeFiles:P}=W(c),F=D(null),I=j(()=>F.value?.getScrollTarget()??null);return(e,D)=>(u(),b(k,null,[v(`div`,zt,[O(d)?(u(),b(`div`,Bt,[E(w(O(t)(`browse.allFiles`))+` `,1),O(P)>0||!O(g)?(u(),b(`span`,Vt,`(`+w(O(P))+`)`,1)):N(``,!0)])):(u(),T(xt,{key:0,modelValue:O(l),"onUpdate:modelValue":D[0]||=e=>M(l)?l.value=e:null,"staged-files-length":O(n).length,"unstaged-files-length":O(a).length},null,8,[`modelValue`,`staged-files-length`,`unstaged-files-length`])),v(`div`,Ht,[S($e,{modelValue:O(f),"onUpdate:modelValue":D[1]||=e=>M(f)?f.value=e:null,class:`col`,placeholder:O(d)?O(t)(`browse.searchPlaceholder`):O(t)(`changes.filterPlaceholder`)},null,8,[`modelValue`,`placeholder`]),O(d)?N(``,!0):(u(),T(B,{key:0,flat:``,dense:``,round:``,size:`sm`,icon:`account_tree`,color:O(x)===`tree`?`primary`:void 0,"aria-label":O(t)(`changes.listMode.tree`),"aria-pressed":O(x)===`tree`,onClick:D[2]||=e=>x.value=O(x)===`tree`?`list`:`tree`},{default:i(()=>[S(V,{delay:O(500)},{default:i(()=>[E(w(O(t)(`changes.listMode.tree`)),1)]),_:1},8,[`delay`])]),_:1},8,[`color`,`aria-label`,`aria-pressed`]))])]),S(H),S(_e,{ref_key:`scrollArea`,ref:F,class:`col file-list-panel__scroll`,"content-style":`padding: 4px 0`,"content-active-style":`padding: 4px 0`},{default:i(()=>[(O(d)?O(h):O(o))?(u(),b(`div`,Ut,[S(z,{color:`primary`,size:`2em`})])):O(d)?(u(),b(k,{key:1},[O(A).length===0&&(!O(g)||O(f)&&O(P)>0)?(u(),b(`p`,Wt,w(O(f)?O(t)(`browse.noMatchingFiles`):O(t)(`browse.noFiles`)),1)):N(``,!0),(u(!0),b(k,null,r(O(A),e=>(u(),T(Dt,{key:e.path,node:e,"selected-path":O(p),"expanded-folders":O(m),level:0,onToggleFolder:O(c).toggleFolder,onFileSelect:O(c).selectFile},null,8,[`node`,`selected-path`,`expanded-folders`,`onToggleFolder`,`onFileSelect`]))),128))],64)):(u(),b(k,{key:2},[O(_).length===0&&(O(f)||!O(s))?(u(),b(`p`,Gt,w(O(f)?O(t)(`browse.noMatchingFiles`):O(t)(`changes.emptyFileList`)),1)):N(``,!0),I.value&&O(x)===`tree`?(u(),T(J,{key:`${O(l)}:tree`,"scroll-target":I.value,items:O(y),"virtual-scroll-item-size":Kt},{default:i(({item:e})=>[e.kind===`folder`?(u(),T(Rt,{key:`d:${e.path}`,name:e.name,path:e.path,depth:e.depth,expanded:e.expanded,locked:O(C),onToggle:t=>O(c).toggleDiffFolder(e.paths)},null,8,[`name`,`path`,`depth`,`expanded`,`locked`,`onToggle`])):(u(),T(Pt,{key:`f:${e.path}`,file:e.file,label:e.name,depth:e.depth,selected:O(p)===e.path,source:O(l),onClick:t=>O(c).selectFile(e.path)},null,8,[`file`,`label`,`depth`,`selected`,`source`,`onClick`]))]),_:1},8,[`scroll-target`,`items`])):I.value?(u(),T(J,{key:`${O(l)}:list`,"scroll-target":I.value,items:O(_),"virtual-scroll-item-size":Kt},{default:i(({item:e})=>[(u(),T(Pt,{key:O(Z)(e),file:e,selected:O(p)===O(Z)(e),source:O(l),onClick:t=>O(c).selectFile(O(Z)(e))},null,8,[`file`,`selected`,`source`,`onClick`]))]),_:1},8,[`scroll-target`,`items`])):N(``,!0)],64))]),_:1},512),S(H),S(Ft,{modelValue:O(d),"onUpdate:modelValue":D[3]||=e=>M(d)?d.value=e:null},null,8,[`modelValue`])],64))}}),[[`__scopeId`,`data-v-bdc095b7`]]),Jt=[`wheel`,`pointerdown`,`keydown`,`touchstart`];function Yt(e){let t=e.inputTarget??(typeof document>`u`?null:document),n=e.follow??Xe,r=null,i;function o(){r=x(e.request),i?.(),i=void 0}for(let e of Jt)t?.addEventListener(e,o,{capture:!0,passive:!0});let s=a([()=>x(e.request),()=>x(e.list),()=>x(e.root)],([t,a,o],s,c)=>{if(!t||t===r||!a||!o)return;let l=!1,u,d=()=>{l=!0,u?.(),u=void 0};i=d,c(()=>{d(),x(e.request)===t&&(r=t),i===d&&(i=void 0)}),f().then(()=>{l||t===r||(a.scrollTo(t.index,`start`),u=n({root:o,target:()=>e.target?e.target(t):document.getElementById(`diff-file-${t.path}`)}))})},{immediate:!0,flush:`post`});A(()=>{s(),i?.();for(let e of Jt)t?.removeEventListener(e,o,!0)})}var Xt={class:`diff-status-bar row items-center q-gutter-x-md q-pa-sm text-body2`},Zt={class:`text-weight-medium`},Qt={class:`text-positive`},$t={class:`text-negative`},en={key:0,class:`text-grey-6`},tn={key:1,class:`text-grey-6`},nn={key:2,class:`text-grey-6`},rn={key:3,class:`text-grey-6`},an=g({__name:`DiffStatusBar`,props:{files:{}},emits:[`expand-all`,`collapse-all`],setup(e,{emit:t}){let n=e,r=t,{t:i}=U(),a=j(()=>{let e=n.files.reduce((e,t)=>e+t.additions,0),t=n.files.reduce((e,t)=>e+t.deletions,0),r=n.files.filter(e=>e.status===`added`).length,i=n.files.filter(e=>e.status===`modified`).length,a=n.files.filter(e=>e.status===`deleted`).length,o=n.files.filter(e=>e.status===`renamed`).length;return{total:n.files.length,additions:e,deletions:t,added:r,modified:i,deleted:a,renamed:o}});return(e,t)=>(u(),b(`div`,Xt,[v(`span`,Zt,w(O(i)(`changes.filesChanged`,{count:a.value.total})),1),v(`span`,Qt,` +`+w(a.value.additions)+` `+w(O(i)(`changes.additions`)),1),v(`span`,$t,` -`+w(a.value.deletions)+` `+w(O(i)(`changes.deletions`)),1),a.value.added?(u(),b(`span`,en,w(a.value.added)+` `+w(O(i)(`changes.added`)),1)):N(``,!0),a.value.modified?(u(),b(`span`,tn,w(a.value.modified)+` `+w(O(i)(`changes.modified`)),1)):N(``,!0),a.value.deleted?(u(),b(`span`,nn,w(a.value.deleted)+` `+w(O(i)(`changes.deletedPlural`)),1)):N(``,!0),a.value.renamed?(u(),b(`span`,rn,w(a.value.renamed)+` `+w(O(i)(`changes.renamed`)),1)):N(``,!0),S(xe),S(B,{dense:``,flat:``,"no-caps":``,size:`sm`,icon:`unfold_more`,label:O(i)(`changes.expandAll`),onClick:t[0]||=e=>r(`expand-all`)},null,8,[`label`]),S(B,{dense:``,flat:``,"no-caps":``,size:`sm`,icon:`unfold_less`,label:O(i)(`changes.collapseAll`),onClick:t[1]||=e=>r(`collapse-all`)},null,8,[`label`])]))}}),on=6e3,sn=40;function cn(e,t,n){let r=y(n(t())?.clientWidth??0),i=j(()=>JSON.stringify([e.version,r.value])),a=Ge({get minHeight(){return e.minHeight},get heightOwner(){return e.owner},heightKey:`card-reserve`,get heightVersion(){return i.value},get cacheHeight(){return e.cacheHeight},get keep(){return e.keep},cost:sn,mountMargin:on},t),o;function s(){let e=n(t());e&&(r.value=e.clientWidth,o=He(e,()=>{r.value=e.clientWidth})),a.start(e)}function c(){a.stop(),o?.(),o=void 0}return A(c),{mounted:a.mounted,height:a.height,start:s,stop:c}}var ln={key:1,class:`card-shell-placeholder__title text-mono`,"aria-busy":`true`},un=G(g({__name:`ChangesFileCard`,props:{file:{}},setup(e){let n=e,r=$(),i=X(),a=Y(),{expandedFiles:o}=W(r),{activeReview:s,commentsByFile:d}=W(a),f=j(()=>Z(n.file)),p=j(()=>De(r.source,f.value)),h=j(()=>i.hunksOf(r.source,n.file)),g=j(()=>i.hunksFresh(r.source,n.file)),_=j(()=>i.hunksError(r.source,n.file)),v=j(()=>o.value.has(f.value)),y=j(()=>d.value.get(f.value)),x=j(()=>!!s.value),S={key:p.value},E=Le(`wrap`,()=>Ve(f.value),S),D=Le(`viewMode`,()=>`diff`,S),k=Ie(S),A=Ye(S),M=j(()=>D.value===`full`?A.value:k.value),N=j(()=>46+(v.value?Me(n.file,h.value)+Re(y.value??[],D.value)+(M.value?90:0):0)),P=j(()=>JSON.stringify([v.value,D.value,E.value,x.value,M.value?[M.value.column,M.value.startKey,M.value.endKey]:null,y.value?.map(e=>[e.id,e.lineType,e.lineNumberEnd,e.content,e.suggestion,e.resolved])])),F=m(`el`),{mounted:I,height:L,start:ee,stop:R}=cn({get minHeight(){return N.value},get owner(){return h.value??n.file},get version(){return P.value},get cacheHeight(){return v.value&&g.value&&D.value===`diff`&&!E.value&&!y.value?.length&&!M.value},get keep(){return!!M.value}},()=>F.value,Pe());C(ee),c(R);function z(){i.ensureHunks(r.source,n.file)}function B(){i.retryHunks(r.source,n.file)}return(n,a)=>(u(),b(`div`,{ref_key:`el`,ref:F,class:t({"card-shell-placeholder":!O(I)}),style:l(O(I)?void 0:{height:`${O(L)}px`})},[O(I)?(u(),T(Ue,{key:0,file:e.file,"state-key":p.value,detail:h.value,"hunks-loaded":g.value,"hunks-error":_.value,expanded:v.value,"agent-source":O(r).source,commentable:x.value,"comments-editable":x.value,comments:y.value,onLoadHunks:z,onRetryHunks:B,onClearHunksError:a[0]||=t=>O(i).clearHunksError(O(r).source,e.file),onToggle:a[1]||=e=>O(r).handleCardToggle(f.value),onExpand:a[2]||=e=>O(r).expandFile(f.value)},null,8,[`file`,`state-key`,`detail`,`hunks-loaded`,`hunks-error`,`expanded`,`agent-source`,`commentable`,`comments-editable`,`comments`])):(u(),b(`div`,ln,w(f.value),1))],6))}}),[[`__scopeId`,`data-v-c1bd4d06`]]),dn={key:0,class:`active-review-bar row items-center q-gutter-x-sm q-px-sm no-wrap`},fn={class:`text-body2 ellipsis`},pn=G(g({__name:`ActiveReviewBar`,setup(e){let{t}=U(),n=ye(),r=Y(),{activeReview:i}=W(r),a=me(),o=Ne();function s(e){r.setStatus(e).catch(e=>{n(t(`reviews.comments.error`),e)})}return(e,n)=>O(i)?(u(),b(`div`,dn,[S(L,{name:`rate_review`,size:`18px`,color:`primary`}),v(`span`,fn,w(O(i).name??O(t)(`reviews.list.unnamed`)),1),S(xe),O(a).enabled?(u(),T(B,{key:0,flat:``,dense:``,"no-caps":``,size:`sm`,icon:O(be),label:O(t)(`agent.context.addReview`),onClick:n[0]||=e=>O(o)({kind:`review`,reviewId:O(i).id})},null,8,[`icon`,`label`])):N(``,!0),S(Je,{status:O(i).status,onChange:s},null,8,[`status`])])):N(``,!0)}}),[[`__scopeId`,`data-v-2b6e4bdd`]]),mn={key:1,class:`q-pa-md text-grey-6`},hn=12,gn=1.5,_n=2,vn=G(g({__name:`DiffPanel`,setup(e){let{t}=U(),r=$(),{diffFiles:o}=W(r),{error:s,loading:c}=W(X()),l=Y(),{activeReview:d}=W(l);ze({create:e=>l.createComment(e),edit:(e,t)=>l.editComment(e,t),remove:e=>l.deleteComment(e),resolve:e=>l.resolveComment(e),unresolve:e=>l.unresolveComment(e)});let p=D(null),m=j(()=>p.value?.getScrollTarget()??null);n(Qe,()=>m.value);let h=D(null);return Yt({request:()=>r.scrollRequest,list:h,root:m}),a(()=>r.layoutVersion,async()=>{await f(),h.value?.reset()}),a(o,async(e,t)=>{Ae(e,t,(e,t)=>Z(e)===Z(t))||(await f(),h.value?.reset())}),(e,n)=>(u(),b(k,null,[O(s)?(u(),T(qe,{key:0,title:O(t)(`changes.loadError`),message:O(s),loading:O(c),onRetry:n[0]||=e=>O(r).refresh()},null,8,[`title`,`message`,`loading`])):N(``,!0),O(o).length===0&&!O(s)?(u(),b(`div`,mn,w(O(t)(`changes.emptyDiffPanel`)),1)):O(o).length>0?(u(),b(k,{key:2},[S(pn),O(d)?(u(),T(H,{key:0})):N(``,!0),S(an,{files:O(o),onExpandAll:O(r).expandAllFiles,onCollapseAll:O(r).collapseAllFiles},null,8,[`files`,`onExpandAll`,`onCollapseAll`]),S(H),S(_e,{ref_key:`scrollArea`,ref:p,class:`col sticky-header-scroll`,"content-style":`padding: 8px; width: 100%; max-width: 100%`,"content-active-style":`padding: 8px; width: 100%; max-width: 100%`},{default:i(()=>[m.value?(u(),T(J,{key:O(r).source,ref_key:`virtualScroll`,ref:h,"scroll-target":m.value,items:O(o),"virtual-scroll-item-size":O(46),"virtual-scroll-slice-size":hn,"virtual-scroll-slice-ratio-before":gn,"virtual-scroll-slice-ratio-after":_n},{default:i(({item:e})=>[(u(),b(`div`,{key:O(Z)(e),class:`diff-virtual-slot`},[S(un,{file:e},null,8,[`file`])]))]),_:1},8,[`scroll-target`,`items`,`virtual-scroll-item-size`])):N(``,!0)]),_:1},512)],64)):N(``,!0),!O(d)&&O(o).length>0?(u(),T(et,{key:3})):N(``,!0)],64))}}),[[`__scopeId`,`data-v-44aabadb`]]),yn={key:1,class:`q-pa-md text-grey-6`},bn={key:0,class:`row justify-center q-pa-lg`},xn={key:1,class:`q-pa-md text-grey-6`},Sn={class:`text-caption`},Cn={key:2,class:`q-pa-md text-grey-6`},wn=g({__name:`FileContentPanel`,setup(e){let{t}=U(),n=$(),{selectedPath:r,browseFileLines:o,browseFileIsBinary:s,browseFileLoading:c,browseFileError:l,treeError:d,refreshing:f}=W(n),{error:p}=W(X()),m=j(()=>p.value?{title:t(`changes.loadError`),message:p.value}:d.value?{title:t(`browse.treeLoadError`),message:d.value}:null),h=D(!1);return a(r,e=>{h.value=e?Ve(e):!1},{immediate:!0}),(e,a)=>(u(),b(k,null,[m.value?(u(),T(qe,{key:0,title:m.value.title,message:m.value.message,loading:O(f),onRetry:a[0]||=e=>O(n).refresh()},null,8,[`title`,`message`,`loading`])):N(``,!0),O(r)?(u(),T(Ke,{key:2,class:`col`},{header:i(()=>[S(We,{path:O(r)},{default:i(()=>[S(Be,{modelValue:h.value,"onUpdate:modelValue":a[1]||=e=>h.value=e,path:O(r)},null,8,[`modelValue`,`path`])]),_:1},8,[`path`])]),default:i(()=>[O(c)&&O(o).length===0&&!O(l)?(u(),b(`div`,bn,[S(z,{color:`primary`,size:`2em`})])):O(l)?(u(),b(`div`,xn,[E(w(O(t)(`changes.fullFileLoadError`))+` `,1),v(`div`,Sn,w(O(l)),1),S(B,{flat:``,dense:``,color:`primary`,class:`q-mt-sm`,label:O(t)(`changes.retry`),loading:O(f),onClick:a[2]||=e=>O(n).refresh()},null,8,[`label`,`loading`])])):O(s)?(u(),b(`div`,Cn,w(O(t)(`changes.binaryFile`)),1)):(u(),T(_e,{key:3,class:`col`,"content-style":`padding: 8px`,"content-active-style":`padding: 8px`},{default:i(()=>[S(Fe,{path:O(r),lines:O(o),wrap:h.value},null,8,[`path`,`lines`,`wrap`])]),_:1}))]),_:1})):(u(),b(`div`,yn,w(O(t)(`browse.selectFile`)),1))],64))}}),Tn=g({__name:`FileExplorer`,setup(e){let t=$(),n=Y(),{browseMode:r}=W(t);C(()=>{t.refresh(),n.refresh()});let a=le([`files:changed`],()=>void t.refreshFromServerEvent());s(()=>a.close());let o=le([`review:created`,`review:updated`,`review:deleted`,`comment:created`,`comment:updated`,`comment:deleted`],()=>void n.refresh());return s(()=>o.close()),(e,t)=>(u(),T(vt,null,{panel:i(()=>[S(qt)]),content:i(()=>[O(r)?(u(),T(wn,{key:0})):(u(),T(vn,{key:1}))]),_:1}))}}),En=g({__name:`IndexPage`,setup(e){return(e,t)=>(u(),T(ke,null,{default:i(()=>[S(Tn)]),_:1}))}});export{En as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.preview-controls[data-v-6576d18c]{border:1px solid var(--window-divider);background:var(--window-header-bg);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;border-radius:4px;padding:2px;font-size:10px;box-shadow:0 3px 12px #00000040}.preview-controls__value[data-v-6576d18c]{white-space:nowrap;padding:0 2px}.preview-controls__number[data-v-6576d18c]{padding:1px 4px;display:inline-block}.preview-controls__page[data-v-6576d18c]{text-align:center}.preview-controls__status[data-v-6576d18c]{flex:0 0 19px;justify-content:center;align-items:center;display:flex}.preview-controls__scale[data-v-6576d18c]{text-align:center;min-width:36px}.preview-controls__divider[data-v-6576d18c]{border-left:1px solid var(--window-divider);height:12px;margin:0 2px}.terminal-header__drag[data-v-1d632033]{cursor:move;-webkit-user-select:none;user-select:none}.terminal-header__drag--static[data-v-1d632033]{cursor:default}.terminal-tabs[data-v-4855fecf]{border-bottom:1px solid var(--window-divider);flex:none;min-height:36px}.terminal-tabs__tabs[data-v-4855fecf]{min-width:0}.terminal-tab[data-v-4855fecf]{text-transform:none;padding:0 8px}.terminal-tab__body[data-v-4855fecf]{min-width:0;max-width:200px}.terminal-tab__name[data-v-4855fecf]{min-width:0;font-size:12px}.terminal-resize[data-v-662195a2]{z-index:2;touch-action:none;--edge:8px;--corner:12px;--outside:calc(var(--edge) / -2);--edge-inset:calc(var(--corner) + var(--outside));position:absolute}.terminal-resize--n[data-v-662195a2],.terminal-resize--s[data-v-662195a2]{left:var(--edge-inset);right:var(--edge-inset);height:var(--edge);cursor:ns-resize}.terminal-resize--e[data-v-662195a2],.terminal-resize--w[data-v-662195a2]{top:var(--edge-inset);bottom:var(--edge-inset);width:var(--edge);cursor:ew-resize}.terminal-resize--ne[data-v-662195a2],.terminal-resize--nw[data-v-662195a2],.terminal-resize--se[data-v-662195a2],.terminal-resize--sw[data-v-662195a2]{width:var(--corner);height:var(--corner)}.terminal-resize--n[data-v-662195a2],.terminal-resize--ne[data-v-662195a2],.terminal-resize--nw[data-v-662195a2]{top:var(--outside)}.terminal-resize--s[data-v-662195a2],.terminal-resize--se[data-v-662195a2],.terminal-resize--sw[data-v-662195a2]{bottom:var(--outside)}.terminal-resize--e[data-v-662195a2],.terminal-resize--ne[data-v-662195a2],.terminal-resize--se[data-v-662195a2]{right:var(--outside)}.terminal-resize--w[data-v-662195a2],.terminal-resize--nw[data-v-662195a2],.terminal-resize--sw[data-v-662195a2]{left:var(--outside)}.terminal-resize--ne[data-v-662195a2],.terminal-resize--sw[data-v-662195a2]{cursor:nesw-resize}.terminal-resize--nw[data-v-662195a2],.terminal-resize--se[data-v-662195a2]{cursor:nwse-resize}.floating-window[data-v-3efd4e4b]{display:flex;position:fixed}.floating-window__frame[data-v-3efd4e4b]{border:1px solid var(--window-divider);min-width:0;box-shadow:var(--window-shadow);border-radius:8px;flex-direction:column;flex:1;display:flex;overflow:hidden}.floating-window--maximized .floating-window__frame[data-v-3efd4e4b]{box-shadow:none;border:0;border-radius:0}.floating-window__body[data-v-3efd4e4b]{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.terminal-window__body[data-v-d32bfd7c]{flex:1;min-width:0;min-height:0;display:flex}.preview-diagram[data-v-d44ed45b]{width:max-content;padding:16px}.preview-diagram[data-v-d44ed45b] svg{max-width:none!important}.preview-image[data-v-96021427]{max-width:100%;margin:16px auto;display:block}.preview-viewport[data-v-36ab3433]{flex:1;min-width:0;min-height:0;display:flex;position:relative}.preview-overlay[data-v-36ab3433]{z-index:2;position:absolute;bottom:16px;right:16px}.preview-content[data-v-36ab3433]{flex:1;min-height:0;position:relative;overflow:auto}.preview-markdown[data-v-36ab3433]{padding:24px clamp(32px,8%,128px)}.preview-markdown[data-v-36ab3433] .md-content{line-height:1.8}.preview-markdown[data-v-36ab3433] .md-content p{margin-bottom:1.2em}.preview-markdown[data-v-36ab3433] .md-content li{margin:.8em 0}.preview-markdown[data-v-36ab3433] .md-content li>p{margin-bottom:0}.preview-markdown[data-v-36ab3433] .md-content li>p+p{margin-top:1.2em}.preview-markdown[data-v-36ab3433] .md-content>:last-child{margin-bottom:0}.preview-refresh[data-v-36ab3433]{position:sticky;bottom:12px;left:12px}.preview-title[data-v-31d8b3ab]{cursor:move;-webkit-user-select:none;user-select:none}.preview-tabs[data-v-2dd6485f]{border-bottom:1px solid var(--window-divider);flex:none;min-height:36px}.preview-tabs__tabs[data-v-2dd6485f]{min-width:0}.preview-tab-label[data-v-2dd6485f]{max-width:240px}.preview-empty[data-v-0b464106]{flex:1}.preview-drop-overlay[data-v-2e7ae1af]{z-index:3;pointer-events:none;border:2px dashed var(--q-primary);background:var(--window-header-bg);color:var(--q-primary);border-radius:8px;position:absolute;inset:0}.window-dock[data-v-d41e90d8]{z-index:2600;border:1px solid var(--window-divider);background:color-mix(in srgb, var(--window-header-bg) 88%, black);box-shadow:var(--window-shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;align-items:center;gap:4px;max-width:100vw;max-height:100vh;padding:6px;display:flex;position:fixed}body.body--dark .window-dock{background:color-mix(in srgb, var(--window-header-bg) 88%, white)}.window-dock--vertical[data-v-d41e90d8]{flex-direction:column}.window-dock__handle[data-v-d41e90d8]{cursor:move;touch-action:none;align-items:center;padding:4px;display:flex}.window-dock__button[data-v-d41e90d8]{border:1px solid #0000;border-radius:8px;width:42px;min-height:42px;padding:0}.window-dock__button--running[data-v-d41e90d8]{border-color:color-mix(in srgb, currentColor 65%, transparent);background:linear-gradient(to bottom, color-mix(in srgb, currentColor 18%, transparent), color-mix(in srgb, currentColor 7%, transparent));box-shadow:inset 0 1px 1px #ffffff38,inset 0 -1px 1px #00000026,0 2px 3px #0003}.window-dock__item[data-v-d41e90d8]{position:relative}.agent-item__thumb[data-v-a05b8739]{cursor:zoom-in;width:72px;height:72px}.agent-item.q-message[data-v-f80f2fb9]{font-family:var(--font-agent);min-width:0;max-width:100%;margin-bottom:0}.agent-item[data-v-f80f2fb9] .q-message-text{min-height:0;padding-left:16px;padding-right:16px}.agent-item[data-v-f80f2fb9] .q-message-container>*,.agent-item[data-v-f80f2fb9] .q-message-text-content,.agent-item[data-v-f80f2fb9] .q-message-text{min-width:0;max-width:100%}.agent-item__text[data-v-f80f2fb9]{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.65}.agent-item.q-message[data-v-348f888b]{font-family:var(--font-agent);min-width:0;max-width:100%;margin-bottom:0}.agent-item[data-v-348f888b] .q-message-text{min-height:0;padding-left:16px;padding-right:16px}.agent-item[data-v-348f888b] .q-message-container>*,.agent-item[data-v-348f888b] .q-message-text-content,.agent-item[data-v-348f888b] .q-message-text{min-width:0;max-width:100%}.agent-item[data-v-348f888b] .md-content{font-size:14px;line-height:1.65}.agent-item[data-v-348f888b] .md-content strong,.agent-item[data-v-348f888b] .md-content b{font-weight:500}.agent-diff[data-v-60226168]{border:1px solid var(--q-separator-color,#8080804d);border-radius:4px}.agent-diff__path[data-v-60226168]{background:var(--diff-header-bg);padding:2px 8px}.agent-diff__body[data-v-60226168]{max-width:100%;margin:0;font-size:12px;line-height:1.45;overflow-x:auto}.agent-diff__row[data-v-60226168]{white-space:pre;padding:0 8px;display:block}.agent-diff__row--added[data-v-60226168]{background:#2ea0432e}.agent-diff__row--removed[data-v-60226168]{background:#f851492e}.agent-tool[data-v-6537eaaa]{border:1px solid var(--q-separator-color,#8080804d);border-radius:6px;font-size:11px}.agent-tool[data-v-6537eaaa] .q-item{min-height:26px;padding:0 8px}.agent-tool[data-v-6537eaaa] .q-item__label{font-size:11px}.agent-tool[data-v-6537eaaa] .q-item__section--side{padding-left:6px}.agent-tool__icon[data-v-6537eaaa]{min-width:22px;padding-right:6px}.agent-tool__badge[data-v-6537eaaa]{font-size:10px}.agent-tool__caption[data-v-6537eaaa],.agent-tool__body[data-v-6537eaaa]{font-size:11px}.agent-tool__output[data-v-6537eaaa]{white-space:pre-wrap;max-height:200px;margin:0;font-size:11px;overflow:auto}.agent-thought[data-v-2bc07051]{font-size:11px}.agent-thought__text[data-v-2bc07051]{white-space:pre-wrap;font-size:11px}.agent-thought[data-v-2bc07051] .q-item{min-height:26px;padding:0 8px}.agent-thought[data-v-2bc07051] .q-item__label,.agent-thought[data-v-2bc07051] .q-item__section--main{font-size:11px}.agent-thought[data-v-2bc07051] .q-icon{font-size:14px}.agent-auto-approved[data-v-c0c0181b]{font-size:11px}.agent-auto-approved[data-v-c0c0181b] .q-icon{font-size:14px}.agent-chat-banners__banner[data-v-ece62303]{overflow-wrap:anywhere;flex:none;font-size:12px}.agent-chat-banners__banner[data-v-ece62303] .q-banner__content,.agent-chat-banners__banner[data-v-ece62303] .q-btn{font-size:12px;line-height:1.35}.agent-chat-banners__banner[data-v-ece62303] .q-banner__actions{align-self:center}.agent-mention-popup[data-v-9f415c8c]{z-index:6000;border:1px solid #80808059;border-radius:6px;width:340px;max-width:calc(100vw - 16px);max-height:260px;font-size:13px;position:fixed;overflow-y:auto}.agent-mention-popup__item[data-v-9f415c8c]{cursor:pointer;align-items:baseline;gap:8px;padding:4px 10px;display:flex}.agent-mention-popup__item--active[data-v-9f415c8c]{background:#1976d22e}.agent-mention-popup__icon[data-v-9f415c8c]{opacity:.7;flex:none}.agent-mention-popup__name[data-v-9f415c8c]{flex:none;font-weight:500}.agent-mention-popup__dir[data-v-9f415c8c]{opacity:.6;text-overflow:ellipsis;white-space:nowrap;text-align:left;direction:rtl;min-width:0;font-size:11.5px;overflow:hidden}.agent-editor-wrap[data-v-7bc219e6]{min-width:0;position:relative}.agent-editor[data-v-7bc219e6]{font-family:var(--font-agent);white-space:pre-wrap;overflow-wrap:anywhere;outline:none;min-height:24px;max-height:160px;padding:5px 4px;font-size:14px;line-height:1.65;overflow-y:auto}.agent-editor[aria-disabled=true][data-v-7bc219e6]{cursor:not-allowed;opacity:.6}.agent-editor--empty[data-v-7bc219e6]:before{content:attr(data-placeholder);opacity:.5;pointer-events:none;text-overflow:ellipsis;white-space:nowrap;position:absolute;top:5px;left:4px;right:4px;overflow:hidden}.agent-editor[data-v-7bc219e6] .agent-mention{-webkit-user-select:none;user-select:none;white-space:nowrap;background:#1976d22e;border-radius:4px;align-items:center;margin:0 1px;padding:0 1px 0 6px;font-size:12.5px;line-height:1.6;display:inline-flex}.agent-editor[data-v-7bc219e6] .agent-mention__remove{color:inherit;cursor:pointer;opacity:.6;background:0 0;border:0;padding:0 4px;font-size:14px;line-height:1}.agent-editor[data-v-7bc219e6] .agent-mention__remove:hover{opacity:1}.agent-attachment-thumb[data-v-b18100a3]{width:56px;height:56px;position:relative}.agent-attachment-thumb-remove[data-v-b18100a3]{position:absolute;top:-6px;right:-6px}.agent-add-menu[data-v-3c2497e7]{min-width:180px}.agent-dot[data-v-8919c3e4]{flex:none;justify-content:center;align-items:center;width:14px;height:14px;display:inline-flex}.agent-dot__mark[data-v-8919c3e4]{background:var(--q-positive);opacity:.55;border-radius:50%;width:7px;height:7px}.agent-dot__mark--attention[data-v-8919c3e4]{background:var(--q-warning);opacity:1}.agent-dot__mark--closed[data-v-8919c3e4]{background:var(--q-negative);opacity:1}.agent-cfg[data-v-444c80b3]{max-width:190px;font-size:12px}.agent-cfg[data-v-444c80b3] .q-btn__content{flex-wrap:nowrap}.agent-cfg[data-v-444c80b3] .block{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.agent-cfg__list[data-v-444c80b3]{width:340px;min-width:220px;max-width:calc(100vw - 24px);max-height:300px}.agent-composer__status[data-v-1bb33b11]{min-height:28px;margin-top:4px}.agent-composer__state[data-v-1bb33b11]{opacity:.8;padding-right:8px;font-size:12px}.agent-voice[data-v-366e9105]{position:relative}.agent-voice__hidden[data-v-366e9105]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.agent-voice__button[data-v-366e9105]{touch-action:none;-webkit-user-select:none;user-select:none}.agent-voice__button--on[data-v-366e9105]{animation:1.2s ease-in-out infinite agent-voice-pulse-366e9105}.agent-voice__preview[data-v-366e9105]{white-space:pre-wrap;pointer-events:none;border-radius:8px;width:max-content;max-width:min(420px,80vw);padding:6px 10px;font-size:13px;line-height:1.4;position:absolute;bottom:calc(100% + 6px);right:0}@keyframes agent-voice-pulse-366e9105{50%{opacity:.55}}.agent-composer[data-v-6781b3ff]{flex:none;padding:4px 16px 10px}.agent-composer__box[data-v-6781b3ff]{border:1px solid #80808073;border-radius:8px}.agent-composer__box[data-v-6781b3ff]:focus-within{border-color:var(--q-primary)}.agent-permission[data-v-e3be80da]{border:1px solid #8080804d;border-left:3px solid var(--q-warning);border-radius:4px;padding:6px 10px 8px;font-size:12px}.agent-permission__head[data-v-e3be80da]{opacity:.7;font-size:11px}.agent-permission__title[data-v-e3be80da]{text-overflow:ellipsis;white-space:nowrap;margin-top:2px;overflow:hidden}.agent-permission__changes[data-v-e3be80da]{font-size:11px}.agent-permission__changes[data-v-e3be80da] .q-item{min-height:24px;padding:0}.agent-view[data-v-5217395c]{position:absolute;inset:0}.agent-view[data-v-5217395c] .q-scrollarea__content{width:100%}.agent-view__feed[data-v-5217395c]{flex-direction:column;gap:10px;padding:14px 16px;display:flex}.agent-empty[data-v-cb2aea04]{padding:24px}.agent-empty__hint[data-v-cb2aea04]{max-width:260px}.agent-tabs[data-v-b05c3281]{border-bottom:1px solid var(--q-separator-color,#8080804d);flex:none}.agent-tabs__tabs[data-v-b05c3281]{min-width:0}.agent-tab[data-v-b05c3281]{text-transform:none;padding:0 8px}.agent-tab__body[data-v-b05c3281]{min-width:0;max-width:180px}.agent-tab__name[data-v-b05c3281]{min-width:0;font-size:13px}.agent-panel__views[data-v-f30b083a]{min-height:0;position:relative}.agent-new-chat[data-v-887d90c7]{width:380px;max-width:92vw}.agent-drawer__handle[data-v-2a2eac99]{z-index:10;cursor:col-resize;touch-action:none;width:13px;position:absolute;top:0;bottom:0;left:-6px}.agent-drawer__handle[data-v-2a2eac99]:focus-visible{outline-offset:2px;outline:2px solid}.agent-drawer--dragging[data-v-2a2eac99]{-webkit-user-select:none;user-select:none;transition:none!important}.repo-info[data-v-792bc4fd]{line-height:1}.agent-menu__chats[data-v-e91db037]{padding:4px 0 8px}.agent-menu__dot[data-v-e91db037]{min-width:28px;padding-left:8px}
|