@band-app/server 0.26.0 → 0.27.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/dist/client/assets/{DockviewBrowserContainer-BiS2PXe9.js → DockviewBrowserContainer-CGJxcrlC.js} +2 -2
- package/dist/client/assets/DockviewTerminalContainer-Ch1hGjB3.js +2 -0
- package/dist/client/assets/{TerminalPanel-CcBKJ24l.js → TerminalPanel-D6316IRS.js} +1 -1
- package/dist/client/assets/{_basePickBy-CIajkJdO.js → _basePickBy-CmBV18rc.js} +1 -1
- package/dist/client/assets/_baseUniq-U0BTd0Rz.js +1 -0
- package/dist/client/assets/{arc-DexZNm0-.js → arc-BsQxyIE1.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-DAFvsZAd.js → architectureDiagram-VXUJARFQ-utzNWMoy.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-AWnBKy9Q.js → blockDiagram-VD42YOAC-xxfCrQvu.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-BddbyIic.js → c4Diagram-YG6GDRKO-CYbkaWJ4.js} +1 -1
- package/dist/client/assets/channel-CpSzKNMk.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-DnMh7Pc9.js → chunk-4BX2VUAB-DKCxjb37.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-24SitHr9.js → chunk-55IACEB6-B9W9ltjh.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-BOb93Gpn.js → chunk-B4BG7PRW-0MSaUsdv.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-oSbpJBti.js → chunk-DI55MBZ5-K1HZY-B4.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-Dqfg6wVO.js → chunk-FMBD7UC4-DL19-zkO.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-C2cIUL6l.js → chunk-QN33PNHL-Bjj5Xo40.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-Ox_MiYok.js → chunk-QZHKN3VN-B7u9UlRD.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-CGaUt5wn.js → chunk-TZMSLE5B-1C4Ii4Su.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-BgIuIwCk.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-BgIuIwCk.js +1 -0
- package/dist/client/assets/clone-BnxcJIG7.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-D_3-w0MJ.js → cose-bilkent-S5V4N54A-PGTI-4nv.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-DTrojOKw.js → dagre-6UL2VRFP-SduuRX7O.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-D3nSuJ59.js → diagram-PSM6KHXK-CBSJaBQx.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-h0Gm6yRs.js → diagram-QEK2KX5R-BtO_0TYR.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-DIOqbA5d.js → diagram-S2PKOQOG-CU-3HUn7.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-BGWtWskF.js → erDiagram-Q2GNP2WA-B7YcBWa7.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-BHqUj91h.js → flowDiagram-NV44I4VS-B_exjXhH.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-CCA7lEel.js → ganttDiagram-JELNMOA3-K_s2lhZo.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-CXisBbMV.js → gitGraphDiagram-V2S2FVAM-Cy8dWU3T.js} +1 -1
- package/dist/client/assets/{graph-C8GKZaWf.js → graph-F7Go3eb_.js} +1 -1
- package/dist/client/assets/{highlighted-body-B3W2YXNL-Ckz9HnyE.js → highlighted-body-B3W2YXNL-JIbcl_Gj.js} +1 -1
- package/dist/client/assets/{index-DfZlU-44.js → index-2I1ScAnS.js} +1 -1
- package/dist/client/assets/{index-DPLAjlSm.js → index-BwLCRFTA.js} +1 -1
- package/dist/client/assets/{index-BasWn2BQ.js → index-C8kfQI4r.js} +1 -1
- package/dist/client/assets/{index-BROqtYkO.js → index-Cg4Lw3Yz.js} +1 -1
- package/dist/client/assets/{index-s1AHxiWE.js → index-Ckir_3bE.js} +1 -1
- package/dist/client/assets/{index-CN7sJN1E.js → index-CpaiC9qY.js} +1 -1
- package/dist/client/assets/{index-CyfIec3L.js → index-Cy5Bsovp.js} +1 -1
- package/dist/client/assets/{index-1qpYuqGB.js → index-CyKK9pLi.js} +1 -1
- package/dist/client/assets/{index-CmpISwt5.js → index-D2dWAqXm.js} +1 -1
- package/dist/client/assets/{index-B7L6_ylA.js → index-D3_75AIk.js} +1 -1
- package/dist/client/assets/{index-D2Sje321.js → index-DKc3v7ID.js} +1 -1
- package/dist/client/assets/{index-D5Pn_WYc.js → index-DR5Cdr17.js} +1 -1
- package/dist/client/assets/{index-D0m_DHVt.js → index-DtwjNrea.js} +1 -1
- package/dist/client/assets/{index-UViDhopU.js → index-O8FbcZ5P.js} +1 -1
- package/dist/client/assets/{index-C22P_3Ba.js → index-QMtr_UY_.js} +1 -1
- package/dist/client/assets/{index-CNSO_MYp.js → index-T2mcmOLE.js} +1 -1
- package/dist/client/assets/{index-TsR4AJCf.js → index-VnMyG1bC.js} +1 -1
- package/dist/client/assets/{index-rwBKhhdF.js → index-qr9Za9SW.js} +1 -1
- package/dist/client/assets/{infoDiagram-HS3SLOUP-CbFZ5guu.js → infoDiagram-HS3SLOUP-DwTbDgO5.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DgIR2fwH.js → journeyDiagram-XKPGCS4Q-Di8V2Erc.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-BvaiOaK8.js → kanban-definition-3W4ZIXB7-CsLOWnzV.js} +1 -1
- package/dist/client/assets/{layout-BHFL_-2i.js → layout-C3qPiTeF.js} +1 -1
- package/dist/client/assets/{main-Dtbkl2jA.js → main-C0_EuI87.js} +208 -208
- package/dist/client/assets/{main-DpPgdfV2.css → main-DFLn265W.css} +1 -1
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-BXmDj_SN.js → mindmap-definition-VGOIOE7T-CTcR694h.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-DWBhs-q-.js → pieDiagram-ADFJNKIX-B-gdfE-T.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-BLczU7TW.js → quadrantDiagram-AYHSOK5B-B0wmCtBi.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-lm071pmC.js → requirementDiagram-UZGBJVZJ-B1DgDXmR.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-CWgkQuq0.js → sankeyDiagram-TZEHDZUN-B-onab8X.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-DR0quDCJ.js → sequenceDiagram-WL72ISMW-B8sIiN1d.js} +1 -1
- package/dist/client/assets/{square-terminal-ByCNqakb.js → square-terminal-Bi7EDEf7.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-CWjWCPZ4.js → stateDiagram-FKZM4ZOC-CTETJ7q1.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BvVewf6E.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-BMaR6Nuo.js → timeline-definition-IT6M3QCI-DYNUQPry.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-CbRLz23z.js → treemap-GDKQZRPO-extyB4z8.js} +1 -1
- package/dist/client/assets/workspace._workspaceId-C8Z_0tr5.js +2 -0
- package/dist/client/assets/{workspace._workspaceId-4ah7xBuS.js → workspace._workspaceId-D0Fj26bF.js} +1 -1
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-DNMYDMAj.js → xychartDiagram-PRI3JC2R-BtUY3rKA.js} +1 -1
- package/dist/server/assets/{DockviewBrowserContainer-BuItINME.js → DockviewBrowserContainer-BjdfNGy8.js} +14 -9
- package/dist/server/assets/{DockviewTerminalContainer-TX2ecJ9k.js → DockviewTerminalContainer-CwXOWGN4.js} +16 -11
- package/dist/server/assets/{TerminalPanel-CvEpdUzO.js → TerminalPanel-BkB-gDqg.js} +1 -1
- package/dist/server/assets/{_basePickBy-7qoOGcXD.js → _basePickBy-8tzGwV15.js} +2 -2
- package/dist/server/assets/{_baseUniq-Cm0aWwLl.js → _baseUniq-CTXsu8pj.js} +1 -1
- package/dist/server/assets/_tanstack-start-manifest_v-Bu_aDRUe.js +4 -0
- package/dist/server/assets/{arc-DH5jD29O.js → arc-DfLShGGX.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-BQSW1CNO.js → architecture-7HQA4BMR-B3ThBUTU.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-DgTZkqMC.js → architectureDiagram-VXUJARFQ-CWzfFX__.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-CHY_BpPT.js → blockDiagram-VD42YOAC-DCaPOrQR.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-Buvaq10G.js → c4Diagram-YG6GDRKO-BU-dO_db.js} +2 -2
- package/dist/server/assets/{channel-CSV_0Wq9.js → channel-Bs5JejOk.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-B4TPMkRz.js → chunk-4BX2VUAB-BuiyFSiN.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-CTFAFIsE.js → chunk-55IACEB6-CPYazKTg.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-CR8829ZP.js → chunk-B4BG7PRW-Kknt_fVn.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-DetqjIc9.js → chunk-DI55MBZ5-9Ix3Oo-P.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-D6DpqSQ8.js → chunk-FMBD7UC4-OhxFQXHM.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-U9pD23ft.js → chunk-QN33PNHL-LsrLj9Ip.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-BK2E8m4j.js → chunk-QZHKN3VN-BwJQ_Q1g.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-DRLbWC_A.js → chunk-TZMSLE5B-Bl5v6Ae6.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-BNcG92nY.js → classDiagram-2ON5EDUG-C6GK2Aoj.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-BNcG92nY.js → classDiagram-v2-WZHVMYZB-C6GK2Aoj.js} +5 -5
- package/dist/server/assets/{clone-CHpwEW-O.js → clone-DqNWgXxT.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-700evsrQ.js → cose-bilkent-S5V4N54A-qzfBNLDd.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-B8Qw2znf.js → dagre-6UL2VRFP-DNZS86ly.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-C6EJCqfL.js → diagram-PSM6KHXK-C6ImURyq.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-CQAcI4L4.js → diagram-QEK2KX5R-diOF3OBK.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-DsDqxdmS.js → diagram-S2PKOQOG-CP1GoHeA.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-DGEMY_JO.js → erDiagram-Q2GNP2WA-DnkGfUio.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-DCV18CNa.js → flowDiagram-NV44I4VS-B1dpItw0.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-Cf9uIRTp.js → ganttDiagram-JELNMOA3-CfB_h9HP.js} +1 -1
- package/dist/server/assets/{gitGraph-G5XIXVHT-Bphh3EfC.js → gitGraph-G5XIXVHT-uIxmtjOh.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-_q2n-s2e.js → gitGraphDiagram-V2S2FVAM-BWi1KybI.js} +7 -7
- package/dist/server/assets/{graph-Ccd2dFz0.js → graph-BpINl381.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-DYwYCtBU.js → highlighted-body-B3W2YXNL-X1-_bh6z.js} +1 -1
- package/dist/server/assets/{index-DXSqtFcT.js → index-BIn7ueGd.js} +2 -2
- package/dist/server/assets/{index-C06ZyGGj.js → index-BUCj1Yl_.js} +4 -4
- package/dist/server/assets/{index-BCTaINbC.js → index-B_uZBCQp.js} +2 -2
- package/dist/server/assets/{index-tV4Tdk7z.js → index-Bcu0C2js.js} +3 -3
- package/dist/server/assets/{index-rF-uGnt9.js → index-Bm4xacwx.js} +1 -1
- package/dist/server/assets/{index-DGyXXlV8.js → index-Bqv1Yqbp.js} +2 -2
- package/dist/server/assets/{index-B1VfjVjc.js → index-CF9A2ZU-.js} +2 -2
- package/dist/server/assets/{index-B1aJ0zMt.js → index-CGqMcWZv.js} +5 -5
- package/dist/server/assets/{index-4y021XhL.js → index-CecHlx7n.js} +1 -1
- package/dist/server/assets/{index-CprdJ8Lo.js → index-Ch5w2qx-.js} +2 -2
- package/dist/server/assets/{index-DHt4VQNS.js → index-Cuy6v4sQ.js} +5 -5
- package/dist/server/assets/{index-CXEg-eDA.js → index-CyY0UzHL.js} +2 -2
- package/dist/server/assets/{index-e4ZKMFB1.js → index-D3oif9Da.js} +2 -2
- package/dist/server/assets/{index-BhpCZORq.js → index-DEYBFbnW.js} +2 -2
- package/dist/server/assets/{index-BCLSgPI1.js → index-DXfbzq6y.js} +2 -2
- package/dist/server/assets/{index-CD62n4Wy.js → index-IM5Lznch.js} +3 -3
- package/dist/server/assets/{index-dJOmGf_o.js → index-YfWUTx8U.js} +2 -2
- package/dist/server/assets/{index-WOVU_Ptt.js → index-oLF27Nfu.js} +2 -2
- package/dist/server/assets/{info-VBDWY6EO-CtEo3hWH.js → info-VBDWY6EO-CqVqNO_U.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-DlVfYs3y.js → infoDiagram-HS3SLOUP-LstCwT5M.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-DEvLjN67.js → journeyDiagram-XKPGCS4Q-Bq4xdGvc.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-C8wt29HD.js → kanban-definition-3W4ZIXB7-Cz8QJrE-.js} +2 -2
- package/dist/server/assets/{layout-B3YZdVGY.js → layout-BR6KziPh.js} +4 -4
- package/dist/server/assets/{mermaid-3ZIDBTTL-Drwee8F2.js → mermaid-3ZIDBTTL-CX1H3heG.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-BArH7IDC.js → mermaid-parser.core-DErnTWrV.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-CLGmFN8m.js → mindmap-definition-VGOIOE7T-OX1eekPS.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-BuBX0bTH.js → packet-DYOGHKS2-C8FvmUVf.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-CaZ9Z0V-.js → pie-VRWISCQL-Bb_jFdxC.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-jGuNgZxo.js → pieDiagram-ADFJNKIX-CyhwaYTd.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-DAAEbR4l.js → quadrantDiagram-AYHSOK5B-BRzFRm7k.js} +1 -1
- package/dist/server/assets/{radar-ZZBFDIW7-D80s-gzM.js → radar-ZZBFDIW7-C2cWeYfK.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-DmT06vgs.js → requirementDiagram-UZGBJVZJ-fJ6FCY2X.js} +3 -3
- package/dist/server/assets/{router-PslJYw0K.js → router-BSilWMbB.js} +409 -450
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-DubOMd7c.js → sankeyDiagram-TZEHDZUN-DkGxRBc4.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-V8TCpuJa.js → sequenceDiagram-WL72ISMW-Y9h8QzpA.js} +3 -3
- package/dist/server/assets/{square-terminal-DqxGkh8h.js → square-terminal-lPOPYTqx.js} +1 -1
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-DDhvvfjL.js → stateDiagram-FKZM4ZOC-D9Xo5bg5.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-CrVhacjl.js → stateDiagram-v2-4FDKWEC3-BBj6Aiwx.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI-PRx7QaX4.js → timeline-definition-IT6M3QCI-oAS-tbgM.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-DDEerlZp.js → treemap-GDKQZRPO-BA7EQwOb.js} +6 -6
- package/dist/server/assets/{workspace._workspaceId-B_ziNHiq.js → workspace._workspaceId-BAO3HXDS.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId-CO8mKKZW.js → workspace._workspaceId-CREreypp.js} +9 -3
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-Cdaq77X5.js → xychartDiagram-PRI3JC2R-CYgqsSC_.js} +1 -1
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +211 -170
- package/package.json +4 -4
- package/dist/client/assets/DockviewTerminalContainer-BFBZVril.js +0 -2
- package/dist/client/assets/_baseUniq-DHw48s_G.js +0 -1
- package/dist/client/assets/channel-BSRbBCzT.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-ntGI3hWd.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-ntGI3hWd.js +0 -1
- package/dist/client/assets/clone-Q7bdnWu2.js +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CPppMgt3.js +0 -1
- package/dist/client/assets/workspace._workspaceId-Dg3ERq5R.js +0 -2
- package/dist/server/assets/_tanstack-start-manifest_v-DuTbaj5T.js +0 -4
package/dist/start-server.mjs
CHANGED
|
@@ -114150,9 +114150,9 @@ var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);
|
|
|
114150
114150
|
// src/dashboard/components/AgentStatusIndicator.tsx
|
|
114151
114151
|
var import_lucide_react2 = __toESM(require_lucide_react(), 1);
|
|
114152
114152
|
var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
|
|
114153
|
-
function AgentStatusIndicator({ agent, isActive }) {
|
|
114153
|
+
function AgentStatusIndicator({ agent, isActive, fallback }) {
|
|
114154
114154
|
if (!agent || agent.status !== "working" && agent.status !== "needs_attention") {
|
|
114155
|
-
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
114155
|
+
return fallback ?? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
114156
114156
|
import_lucide_react2.GitBranch,
|
|
114157
114157
|
{
|
|
114158
114158
|
className: `size-3 shrink-0 ${isActive ? "text-primary" : "text-muted-foreground"}`
|
|
@@ -114164,7 +114164,13 @@ function AgentStatusIndicator({ agent, isActive }) {
|
|
|
114164
114164
|
const tooltip = isWorking ? "Agent running..." : "Needs your attention";
|
|
114165
114165
|
const animation = isWorking ? "" : "animate-status-pulse";
|
|
114166
114166
|
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Tooltip2, { children: [
|
|
114167
|
-
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
114167
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
114168
|
+
"span",
|
|
114169
|
+
{
|
|
114170
|
+
"data-testid": "workspace-card__agent-status",
|
|
114171
|
+
className: `inline-block size-2 shrink-0 rounded-full ${color} ${animation}`
|
|
114172
|
+
}
|
|
114173
|
+
) }),
|
|
114168
114174
|
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(TooltipContent2, { side: "top", children: tooltip })
|
|
114169
114175
|
] });
|
|
114170
114176
|
}
|
|
@@ -114722,8 +114728,24 @@ function SetupStatusIndicator({ setup }) {
|
|
|
114722
114728
|
return null;
|
|
114723
114729
|
}
|
|
114724
114730
|
|
|
114725
|
-
// src/dashboard/components/
|
|
114731
|
+
// src/dashboard/components/WorkspaceLabel.tsx
|
|
114726
114732
|
var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
|
|
114733
|
+
function WorkspaceLabel({
|
|
114734
|
+
name: name3,
|
|
114735
|
+
projectName,
|
|
114736
|
+
isActive,
|
|
114737
|
+
tone = "sidebar"
|
|
114738
|
+
}) {
|
|
114739
|
+
const nameClass = tone === "switcher" ? `text-foreground ${isActive ? "font-semibold" : "font-medium"}` : isActive ? "font-bold text-foreground" : "font-medium text-muted-foreground";
|
|
114740
|
+
const projectClass = tone === "switcher" ? "text-foreground/70" : isActive ? "text-foreground/80" : "text-muted-foreground";
|
|
114741
|
+
return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex flex-col min-w-0 leading-tight", children: [
|
|
114742
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: cn("text-sm truncate", nameClass), children: name3 }),
|
|
114743
|
+
/* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: cn("text-xs truncate", projectClass), children: projectName })
|
|
114744
|
+
] });
|
|
114745
|
+
}
|
|
114746
|
+
|
|
114747
|
+
// src/dashboard/components/WorkspaceCard.tsx
|
|
114748
|
+
var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
|
|
114727
114749
|
var RECENT_ACTIVATION_WINDOW_MS = 300;
|
|
114728
114750
|
var recentlyActivatedWorkspaceId = null;
|
|
114729
114751
|
var recentlyActivatedTimer = null;
|
|
@@ -114768,7 +114790,6 @@ var WorkspaceCard = (0, import_react22.memo)(function WorkspaceCard2({
|
|
|
114768
114790
|
const removeWorkspaceMutation = useRemoveWorkspace();
|
|
114769
114791
|
const isPinned = worktree.pinned;
|
|
114770
114792
|
const isRoot = !isPlain && worktree.name === defaultBranch;
|
|
114771
|
-
const agentActive = status?.agent?.status === "working" || status?.agent?.status === "needs_attention";
|
|
114772
114793
|
const workspaceId = toWorkspaceId(projectName, worktree.name);
|
|
114773
114794
|
const isActive = useDashboardStore((s6) => s6.activeWorkspaceId === workspaceId);
|
|
114774
114795
|
const href = capabilities.getWorkspaceHref?.(workspaceId);
|
|
@@ -114830,41 +114851,45 @@ var WorkspaceCard = (0, import_react22.memo)(function WorkspaceCard2({
|
|
|
114830
114851
|
});
|
|
114831
114852
|
}
|
|
114832
114853
|
};
|
|
114833
|
-
return /* @__PURE__ */ (0,
|
|
114834
|
-
/* @__PURE__ */ (0,
|
|
114835
|
-
/* @__PURE__ */ (0,
|
|
114836
|
-
/* @__PURE__ */ (0,
|
|
114837
|
-
isRoot ?
|
|
114838
|
-
|
|
114839
|
-
|
|
114840
|
-
|
|
114854
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenu2, { children: [
|
|
114855
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ContextMenuTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { ...containerProps, children: [
|
|
114856
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(Tooltip2, { delayDuration: 800, children: [
|
|
114857
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(TooltipTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex items-center gap-2 min-w-0 overflow-hidden", children: [
|
|
114858
|
+
isRoot ? (
|
|
114859
|
+
// On the root card the house is AgentStatusIndicator's idle
|
|
114860
|
+
// fallback (the slot other cards use for the branch glyph),
|
|
114861
|
+
// so an active agent's status dot replaces the house rather
|
|
114862
|
+
// than sitting beside it.
|
|
114863
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
114864
|
+
AgentStatusIndicator,
|
|
114841
114865
|
{
|
|
114842
|
-
|
|
114866
|
+
agent: status?.agent,
|
|
114867
|
+
isActive,
|
|
114868
|
+
fallback: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
114869
|
+
import_lucide_react5.Home,
|
|
114870
|
+
{
|
|
114871
|
+
"data-testid": "workspace-card__home-icon",
|
|
114872
|
+
className: `size-3.5 shrink-0 ${isActive ? "text-primary" : "text-muted-foreground"}`
|
|
114873
|
+
}
|
|
114874
|
+
)
|
|
114843
114875
|
}
|
|
114844
114876
|
)
|
|
114845
|
-
|
|
114877
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(AgentStatusIndicator, { agent: status?.agent, isActive }),
|
|
114846
114878
|
showProjectName ? (
|
|
114847
114879
|
// Pinned section: stack the branch name over the project name
|
|
114848
114880
|
// as a compact two-line block so a mixed list of pinned cards
|
|
114849
114881
|
// stays scannable without a long, mid-truncated
|
|
114850
|
-
// `project/branch` string on one line.
|
|
114851
|
-
|
|
114852
|
-
|
|
114853
|
-
|
|
114854
|
-
|
|
114855
|
-
|
|
114856
|
-
|
|
114857
|
-
|
|
114858
|
-
|
|
114859
|
-
|
|
114860
|
-
|
|
114861
|
-
{
|
|
114862
|
-
className: `text-xs truncate ${isActive ? "text-foreground/80" : "text-muted-foreground"}`,
|
|
114863
|
-
children: projectName
|
|
114864
|
-
}
|
|
114865
|
-
)
|
|
114866
|
-
] })
|
|
114867
|
-
) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
|
|
114882
|
+
// `project/branch` string on one line. Shared with the ⌘K
|
|
114883
|
+
// workspace picker via `WorkspaceLabel`.
|
|
114884
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
114885
|
+
WorkspaceLabel,
|
|
114886
|
+
{
|
|
114887
|
+
name: worktree.name,
|
|
114888
|
+
projectName,
|
|
114889
|
+
isActive
|
|
114890
|
+
}
|
|
114891
|
+
)
|
|
114892
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
114868
114893
|
"span",
|
|
114869
114894
|
{
|
|
114870
114895
|
className: `text-sm truncate ${isActive ? "font-bold text-foreground" : "font-medium text-muted-foreground"}`,
|
|
@@ -114872,46 +114897,46 @@ var WorkspaceCard = (0, import_react22.memo)(function WorkspaceCard2({
|
|
|
114872
114897
|
}
|
|
114873
114898
|
)
|
|
114874
114899
|
] }) }),
|
|
114875
|
-
/* @__PURE__ */ (0,
|
|
114900
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(TooltipContent2, { side: "right", children: `${projectName}/${worktree.name}` })
|
|
114876
114901
|
] }),
|
|
114877
|
-
/* @__PURE__ */ (0,
|
|
114878
|
-
/* @__PURE__ */ (0,
|
|
114879
|
-
!isPlain && branchStatus && /* @__PURE__ */ (0,
|
|
114880
|
-
!isPlain && branchStatus && /* @__PURE__ */ (0,
|
|
114902
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "hidden @[10rem]:flex group-hover:flex items-center gap-2 shrink-0 ml-auto pl-2", children: [
|
|
114903
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(SetupStatusIndicator, { setup: setupStatus }),
|
|
114904
|
+
!isPlain && branchStatus && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(GitStatusIndicator, { git: branchStatus.git }),
|
|
114905
|
+
!isPlain && branchStatus && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CIStatusIndicator, { ci: branchStatus.ci })
|
|
114881
114906
|
] })
|
|
114882
114907
|
] }) }),
|
|
114883
|
-
/* @__PURE__ */ (0,
|
|
114884
|
-
/* @__PURE__ */ (0,
|
|
114885
|
-
isPinned ? /* @__PURE__ */ (0,
|
|
114908
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuContent2, { children: [
|
|
114909
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { onClick: () => onTogglePinned(projectName, worktree.name, isPinned), children: [
|
|
114910
|
+
isPinned ? /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.PinOff, {}) : /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.Pin, {}),
|
|
114886
114911
|
isPinned ? "Unpin workspace" : "Pin workspace"
|
|
114887
114912
|
] }),
|
|
114888
|
-
/* @__PURE__ */ (0,
|
|
114889
|
-
capabilities.copyPath && /* @__PURE__ */ (0,
|
|
114890
|
-
/* @__PURE__ */ (0,
|
|
114913
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ContextMenuSeparator2, {}),
|
|
114914
|
+
capabilities.copyPath && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { onClick: () => navigator.clipboard.writeText(worktree.path), children: [
|
|
114915
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.Clipboard, {}),
|
|
114891
114916
|
"Copy path"
|
|
114892
114917
|
] }),
|
|
114893
|
-
capabilities.revealInFinder && /* @__PURE__ */ (0,
|
|
114894
|
-
/* @__PURE__ */ (0,
|
|
114918
|
+
capabilities.revealInFinder && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { onClick: () => capabilities.revealInFinder(worktree.path), children: [
|
|
114919
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.FolderOpen, {}),
|
|
114895
114920
|
"Open in Finder"
|
|
114896
114921
|
] }),
|
|
114897
|
-
worktree.hasSetup && /* @__PURE__ */ (0,
|
|
114898
|
-
/* @__PURE__ */ (0,
|
|
114922
|
+
worktree.hasSetup && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { onClick: () => runScript(worktree.path, "setup"), children: [
|
|
114923
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.Play, {}),
|
|
114899
114924
|
"Run setup"
|
|
114900
114925
|
] }),
|
|
114901
|
-
worktree.hasTeardown && /* @__PURE__ */ (0,
|
|
114902
|
-
/* @__PURE__ */ (0,
|
|
114926
|
+
worktree.hasTeardown && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { onClick: () => runScript(worktree.path, "teardown"), children: [
|
|
114927
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.Square, {}),
|
|
114903
114928
|
"Run teardown"
|
|
114904
114929
|
] }),
|
|
114905
|
-
!isPlain && /* @__PURE__ */ (0,
|
|
114906
|
-
/* @__PURE__ */ (0,
|
|
114930
|
+
!isPlain && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { onClick: () => gitPull(projectName, worktree.name), children: [
|
|
114931
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.ArrowDownToLine, {}),
|
|
114907
114932
|
"Git pull"
|
|
114908
114933
|
] }),
|
|
114909
|
-
!isPlain && /* @__PURE__ */ (0,
|
|
114910
|
-
/* @__PURE__ */ (0,
|
|
114934
|
+
!isPlain && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { onClick: () => gitPush(projectName, worktree.name), children: [
|
|
114935
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.ArrowUpFromLine, {}),
|
|
114911
114936
|
"Git push"
|
|
114912
114937
|
] }),
|
|
114913
|
-
!isPlain && worktree.name !== defaultBranch && /* @__PURE__ */ (0,
|
|
114914
|
-
/* @__PURE__ */ (0,
|
|
114938
|
+
!isPlain && worktree.name !== defaultBranch && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(ContextMenuItem2, { variant: "destructive", onClick: handleDelete, children: [
|
|
114939
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react5.Trash2, {}),
|
|
114915
114940
|
"Delete workspace"
|
|
114916
114941
|
] })
|
|
114917
114942
|
] })
|
|
@@ -114919,7 +114944,7 @@ var WorkspaceCard = (0, import_react22.memo)(function WorkspaceCard2({
|
|
|
114919
114944
|
});
|
|
114920
114945
|
|
|
114921
114946
|
// src/dashboard/components/ProjectList.tsx
|
|
114922
|
-
var
|
|
114947
|
+
var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
|
|
114923
114948
|
|
|
114924
114949
|
// src/dashboard/components/SettingsPage.tsx
|
|
114925
114950
|
var import_react25 = __toESM(require_react(), 1);
|
|
@@ -114928,16 +114953,16 @@ var import_react25 = __toESM(require_react(), 1);
|
|
|
114928
114953
|
var import_react24 = __toESM(require_react(), 1);
|
|
114929
114954
|
|
|
114930
114955
|
// src/dashboard/components/settings/SettingsRow.tsx
|
|
114931
|
-
var
|
|
114956
|
+
var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
|
|
114932
114957
|
|
|
114933
114958
|
// src/dashboard/components/settings/SettingsSection.tsx
|
|
114934
|
-
var
|
|
114959
|
+
var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);
|
|
114935
114960
|
|
|
114936
114961
|
// src/dashboard/components/SettingsPage.tsx
|
|
114937
|
-
var
|
|
114962
|
+
var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1);
|
|
114938
114963
|
|
|
114939
114964
|
// src/dashboard/components/DashboardShell.tsx
|
|
114940
|
-
var
|
|
114965
|
+
var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1);
|
|
114941
114966
|
var isElectron = typeof window !== "undefined" && "__BAND_DESKTOP__" in window;
|
|
114942
114967
|
|
|
114943
114968
|
// src/dashboard/components/DiffView.tsx
|
|
@@ -115203,18 +115228,18 @@ function joinWorkspacePath(workspaceRoot, relativePath) {
|
|
|
115203
115228
|
}
|
|
115204
115229
|
|
|
115205
115230
|
// src/dashboard/components/FileStatusBadge.tsx
|
|
115206
|
-
var
|
|
115231
|
+
var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1);
|
|
115207
115232
|
|
|
115208
115233
|
// src/dashboard/components/ChangesFileTree.tsx
|
|
115209
|
-
var
|
|
115234
|
+
var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1);
|
|
115210
115235
|
|
|
115211
115236
|
// src/dashboard/components/RevertFileDialog.tsx
|
|
115212
|
-
var
|
|
115237
|
+
var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1);
|
|
115213
115238
|
|
|
115214
115239
|
// src/dashboard/components/SearchBar.tsx
|
|
115215
115240
|
var import_lucide_react6 = __toESM(require_lucide_react(), 1);
|
|
115216
115241
|
var import_react34 = __toESM(require_react(), 1);
|
|
115217
|
-
var
|
|
115242
|
+
var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1);
|
|
115218
115243
|
var DEFAULT_VISIBLE_OPTIONS = ["caseSensitive", "wholeWord", "regex"];
|
|
115219
115244
|
function ToggleButton({
|
|
115220
115245
|
active,
|
|
@@ -115222,7 +115247,7 @@ function ToggleButton({
|
|
|
115222
115247
|
title,
|
|
115223
115248
|
children
|
|
115224
115249
|
}) {
|
|
115225
|
-
return /* @__PURE__ */ (0,
|
|
115250
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
115226
115251
|
"button",
|
|
115227
115252
|
{
|
|
115228
115253
|
type: "button",
|
|
@@ -115263,7 +115288,7 @@ var SearchBar = (0, import_react34.forwardRef)(function SearchBar2({
|
|
|
115263
115288
|
const toggleRegex = (0, import_react34.useCallback)(() => {
|
|
115264
115289
|
onOptionsChange({ ...options2, regex: !options2.regex });
|
|
115265
115290
|
}, [options2, onOptionsChange]);
|
|
115266
|
-
return /* @__PURE__ */ (0,
|
|
115291
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
|
|
115267
115292
|
"div",
|
|
115268
115293
|
{
|
|
115269
115294
|
className: cn(
|
|
@@ -115271,8 +115296,8 @@ var SearchBar = (0, import_react34.forwardRef)(function SearchBar2({
|
|
|
115271
115296
|
className
|
|
115272
115297
|
),
|
|
115273
115298
|
children: [
|
|
115274
|
-
/* @__PURE__ */ (0,
|
|
115275
|
-
/* @__PURE__ */ (0,
|
|
115299
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react6.Search, { className: "size-3.5 shrink-0 text-muted-foreground" }),
|
|
115300
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
115276
115301
|
"input",
|
|
115277
115302
|
{
|
|
115278
115303
|
ref: inputRef,
|
|
@@ -115293,11 +115318,11 @@ var SearchBar = (0, import_react34.forwardRef)(function SearchBar2({
|
|
|
115293
115318
|
}
|
|
115294
115319
|
}
|
|
115295
115320
|
),
|
|
115296
|
-
showCase && /* @__PURE__ */ (0,
|
|
115297
|
-
showWholeWord && /* @__PURE__ */ (0,
|
|
115298
|
-
showRegex && /* @__PURE__ */ (0,
|
|
115299
|
-
matchInfo && query && /* @__PURE__ */ (0,
|
|
115300
|
-
onPrevious && /* @__PURE__ */ (0,
|
|
115321
|
+
showCase && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ToggleButton, { active: options2.caseSensitive, onClick: toggleCase, title: "Match Case", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react6.CaseSensitive, { className: "size-4" }) }),
|
|
115322
|
+
showWholeWord && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ToggleButton, { active: options2.wholeWord, onClick: toggleWholeWord, title: "Match Whole Word", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react6.WholeWord, { className: "size-4" }) }),
|
|
115323
|
+
showRegex && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ToggleButton, { active: options2.regex, onClick: toggleRegex, title: "Use Regular Expression", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react6.Regex, { className: "size-4" }) }),
|
|
115324
|
+
matchInfo && query && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("span", { className: "shrink-0 text-xs text-muted-foreground tabular-nums", children: matchInfo.total > 0 ? `${matchInfo.current} of ${matchInfo.total}` : "No results" }),
|
|
115325
|
+
onPrevious && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
115301
115326
|
"button",
|
|
115302
115327
|
{
|
|
115303
115328
|
type: "button",
|
|
@@ -115305,10 +115330,10 @@ var SearchBar = (0, import_react34.forwardRef)(function SearchBar2({
|
|
|
115305
115330
|
disabled: !matchInfo || matchInfo.total === 0,
|
|
115306
115331
|
className: "inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:text-foreground disabled:opacity-30",
|
|
115307
115332
|
title: "Previous match (Shift+Enter)",
|
|
115308
|
-
children: /* @__PURE__ */ (0,
|
|
115333
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react6.ChevronUp, { className: "size-3.5" })
|
|
115309
115334
|
}
|
|
115310
115335
|
),
|
|
115311
|
-
onNext && /* @__PURE__ */ (0,
|
|
115336
|
+
onNext && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
115312
115337
|
"button",
|
|
115313
115338
|
{
|
|
115314
115339
|
type: "button",
|
|
@@ -115316,17 +115341,17 @@ var SearchBar = (0, import_react34.forwardRef)(function SearchBar2({
|
|
|
115316
115341
|
disabled: !matchInfo || matchInfo.total === 0,
|
|
115317
115342
|
className: "inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:text-foreground disabled:opacity-30",
|
|
115318
115343
|
title: "Next match (Enter)",
|
|
115319
|
-
children: /* @__PURE__ */ (0,
|
|
115344
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react6.ChevronDown, { className: "size-3.5" })
|
|
115320
115345
|
}
|
|
115321
115346
|
),
|
|
115322
|
-
onClose && /* @__PURE__ */ (0,
|
|
115347
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
115323
115348
|
"button",
|
|
115324
115349
|
{
|
|
115325
115350
|
type: "button",
|
|
115326
115351
|
onClick: onClose,
|
|
115327
115352
|
className: "inline-flex size-6 items-center justify-center rounded text-muted-foreground hover:text-foreground",
|
|
115328
115353
|
title: "Close (Escape)",
|
|
115329
|
-
children: /* @__PURE__ */ (0,
|
|
115354
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_lucide_react6.X, { className: "size-3.5" })
|
|
115330
115355
|
}
|
|
115331
115356
|
)
|
|
115332
115357
|
]
|
|
@@ -115335,7 +115360,7 @@ var SearchBar = (0, import_react34.forwardRef)(function SearchBar2({
|
|
|
115335
115360
|
});
|
|
115336
115361
|
|
|
115337
115362
|
// src/dashboard/components/DiffView.tsx
|
|
115338
|
-
var
|
|
115363
|
+
var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1);
|
|
115339
115364
|
var diffTheme = EditorView.theme({
|
|
115340
115365
|
".cm-insertedLine": { backgroundColor: "rgba(34, 197, 94, 0.1)" },
|
|
115341
115366
|
".cm-deletedLine": { backgroundColor: "rgba(239, 68, 68, 0.1)" },
|
|
@@ -115387,7 +115412,7 @@ var diffTheme = EditorView.theme({
|
|
|
115387
115412
|
// src/dashboard/components/FileBrowser.tsx
|
|
115388
115413
|
var import_lucide_react7 = __toESM(require_lucide_react(), 1);
|
|
115389
115414
|
var import_react36 = __toESM(require_react(), 1);
|
|
115390
|
-
var
|
|
115415
|
+
var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1);
|
|
115391
115416
|
var expandedStateCache = /* @__PURE__ */ new Map();
|
|
115392
115417
|
var dirContentsCache = /* @__PURE__ */ new Map();
|
|
115393
115418
|
function getCachedExpanded(wsId) {
|
|
@@ -115468,21 +115493,21 @@ function EntryNameInput({
|
|
|
115468
115493
|
}
|
|
115469
115494
|
};
|
|
115470
115495
|
const Icon = kind === "directory" ? import_lucide_react7.Folder : import_lucide_react7.File;
|
|
115471
|
-
return /* @__PURE__ */ (0,
|
|
115472
|
-
/* @__PURE__ */ (0,
|
|
115496
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex w-full flex-col", style: { paddingLeft: `${depth * indent + basePad}px` }, children: [
|
|
115497
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115473
115498
|
"div",
|
|
115474
115499
|
{
|
|
115475
115500
|
className: `flex items-center ${compact ? "h-[28px] gap-1 pr-3 text-[13px]" : "h-[32px] gap-1.5 pr-4 text-[15px]"}`,
|
|
115476
115501
|
style: { height },
|
|
115477
115502
|
children: [
|
|
115478
|
-
/* @__PURE__ */ (0,
|
|
115479
|
-
/* @__PURE__ */ (0,
|
|
115503
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "size-3.5 shrink-0" }),
|
|
115504
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115480
115505
|
Icon,
|
|
115481
115506
|
{
|
|
115482
115507
|
className: kind === "directory" ? "size-4 shrink-0 text-blue-600 dark:text-blue-400" : "size-4 shrink-0 text-muted-foreground"
|
|
115483
115508
|
}
|
|
115484
115509
|
),
|
|
115485
|
-
/* @__PURE__ */ (0,
|
|
115510
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115486
115511
|
"input",
|
|
115487
115512
|
{
|
|
115488
115513
|
ref: inputRef,
|
|
@@ -115519,7 +115544,7 @@ function EntryNameInput({
|
|
|
115519
115544
|
]
|
|
115520
115545
|
}
|
|
115521
115546
|
),
|
|
115522
|
-
error2 && /* @__PURE__ */ (0,
|
|
115547
|
+
error2 && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115523
115548
|
"div",
|
|
115524
115549
|
{
|
|
115525
115550
|
className: "pointer-events-none text-xs text-destructive",
|
|
@@ -115587,7 +115612,7 @@ function TreeNode2({
|
|
|
115587
115612
|
onOpenFilePinned(entryPath);
|
|
115588
115613
|
}
|
|
115589
115614
|
};
|
|
115590
|
-
const button = /* @__PURE__ */ (0,
|
|
115615
|
+
const button = /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115591
115616
|
"button",
|
|
115592
115617
|
{
|
|
115593
115618
|
ref: isSelected ? selectedRef : void 0,
|
|
@@ -115601,15 +115626,15 @@ function TreeNode2({
|
|
|
115601
115626
|
className: `flex w-full items-center text-left select-none hover:bg-accent/50 [-webkit-touch-callout:none] ${compact ? "h-[28px] gap-1 pr-3 text-[13px]" : "h-[32px] gap-1.5 pr-4 text-[15px]"} ${isSelected ? "bg-blue-500/30 text-foreground outline outline-1 -outline-offset-1 outline-blue-400/60 hover:bg-blue-500/30 dark:bg-blue-500/40 dark:outline-blue-400/70 dark:hover:bg-blue-500/40" : ""} ${isCut ? "opacity-50" : ""}`,
|
|
115602
115627
|
style: { paddingLeft: `${depth * indent + basePad}px` },
|
|
115603
115628
|
children: [
|
|
115604
|
-
isDir ? isExpanded ? /* @__PURE__ */ (0,
|
|
115629
|
+
isDir ? isExpanded ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.ChevronDown, { className: "size-3.5 shrink-0 text-muted-foreground/70" }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.ChevronRight, { className: "size-3.5 shrink-0 text-muted-foreground/70" }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "size-3.5 shrink-0" }),
|
|
115605
115630
|
isDir ? (() => {
|
|
115606
115631
|
const FolderIcon = getFolderIcon(entry.name, isExpanded);
|
|
115607
|
-
return /* @__PURE__ */ (0,
|
|
115632
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(FolderIcon, { className: "size-4 shrink-0" });
|
|
115608
115633
|
})() : (() => {
|
|
115609
115634
|
const FileIcon = getFileIcon(entry.name);
|
|
115610
|
-
return /* @__PURE__ */ (0,
|
|
115635
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(FileIcon, { className: "size-4 shrink-0" });
|
|
115611
115636
|
})(),
|
|
115612
|
-
/* @__PURE__ */ (0,
|
|
115637
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { className: "min-w-0 flex-1 truncate", children: entry.name })
|
|
115613
115638
|
]
|
|
115614
115639
|
}
|
|
115615
115640
|
);
|
|
@@ -115631,7 +115656,7 @@ function TreeNode2({
|
|
|
115631
115656
|
// a padding div with `depth={0}` would double-apply `basePad`, shifting
|
|
115632
115657
|
// the input ~4px to the right and giving it visibly less horizontal
|
|
115633
115658
|
// room than the rest of the tree.
|
|
115634
|
-
/* @__PURE__ */ (0,
|
|
115659
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115635
115660
|
EntryNameInput,
|
|
115636
115661
|
{
|
|
115637
115662
|
kind: isDir ? "directory" : "file",
|
|
@@ -115645,97 +115670,97 @@ function TreeNode2({
|
|
|
115645
115670
|
},
|
|
115646
115671
|
`rename-${entryPath}`
|
|
115647
115672
|
)
|
|
115648
|
-
) : /* @__PURE__ */ (0,
|
|
115673
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115649
115674
|
ContextMenu2,
|
|
115650
115675
|
{
|
|
115651
115676
|
onOpenChange: (open3) => {
|
|
115652
115677
|
if (open3) onSelectRow(entryPath, isDir ? "directory" : "file");
|
|
115653
115678
|
},
|
|
115654
115679
|
children: [
|
|
115655
|
-
/* @__PURE__ */ (0,
|
|
115656
|
-
/* @__PURE__ */ (0,
|
|
115657
|
-
isDir && /* @__PURE__ */ (0,
|
|
115658
|
-
/* @__PURE__ */ (0,
|
|
115680
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ContextMenuTrigger2, { asChild: true, children: button }),
|
|
115681
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ContextMenuContent2, { onCloseAutoFocus: menu.flush, children: [
|
|
115682
|
+
isDir && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_jsx_runtime70.Fragment, { children: [
|
|
115683
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115659
115684
|
ContextMenuItem2,
|
|
115660
115685
|
{
|
|
115661
115686
|
onSelect: () => menu.queue(() => onRequestNewEntry(entryPath, "file")),
|
|
115662
115687
|
children: [
|
|
115663
|
-
/* @__PURE__ */ (0,
|
|
115688
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.File, { className: "size-4" }),
|
|
115664
115689
|
"New File"
|
|
115665
115690
|
]
|
|
115666
115691
|
}
|
|
115667
115692
|
),
|
|
115668
|
-
/* @__PURE__ */ (0,
|
|
115693
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115669
115694
|
ContextMenuItem2,
|
|
115670
115695
|
{
|
|
115671
115696
|
onSelect: () => menu.queue(() => onRequestNewEntry(entryPath, "directory")),
|
|
115672
115697
|
children: [
|
|
115673
|
-
/* @__PURE__ */ (0,
|
|
115698
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.FolderPlus, { className: "size-4" }),
|
|
115674
115699
|
"New Folder"
|
|
115675
115700
|
]
|
|
115676
115701
|
}
|
|
115677
115702
|
),
|
|
115678
|
-
/* @__PURE__ */ (0,
|
|
115703
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ContextMenuSeparator2, {})
|
|
115679
115704
|
] }),
|
|
115680
|
-
canCut && /* @__PURE__ */ (0,
|
|
115705
|
+
canCut && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115681
115706
|
ContextMenuItem2,
|
|
115682
115707
|
{
|
|
115683
115708
|
onSelect: () => menu.queue(() => onCut(entryPath, isDir ? "directory" : "file")),
|
|
115684
115709
|
children: [
|
|
115685
|
-
/* @__PURE__ */ (0,
|
|
115710
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.Scissors, { className: "size-4" }),
|
|
115686
115711
|
"Cut"
|
|
115687
115712
|
]
|
|
115688
115713
|
}
|
|
115689
115714
|
),
|
|
115690
|
-
canCopy && /* @__PURE__ */ (0,
|
|
115715
|
+
canCopy && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115691
115716
|
ContextMenuItem2,
|
|
115692
115717
|
{
|
|
115693
115718
|
onSelect: () => menu.queue(() => onCopy(entryPath, isDir ? "directory" : "file")),
|
|
115694
115719
|
children: [
|
|
115695
|
-
/* @__PURE__ */ (0,
|
|
115720
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.Copy, { className: "size-4" }),
|
|
115696
115721
|
"Copy"
|
|
115697
115722
|
]
|
|
115698
115723
|
}
|
|
115699
115724
|
),
|
|
115700
|
-
isDir && canPaste && /* @__PURE__ */ (0,
|
|
115701
|
-
/* @__PURE__ */ (0,
|
|
115725
|
+
isDir && canPaste && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ContextMenuItem2, { onSelect: () => menu.queue(() => void onPaste(entryPath)), children: [
|
|
115726
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.ClipboardPaste, { className: "size-4" }),
|
|
115702
115727
|
"Paste"
|
|
115703
115728
|
] }),
|
|
115704
|
-
(canCut || canCopy || isDir && canPaste) && /* @__PURE__ */ (0,
|
|
115705
|
-
/* @__PURE__ */ (0,
|
|
115729
|
+
(canCut || canCopy || isDir && canPaste) && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ContextMenuSeparator2, {}),
|
|
115730
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115706
115731
|
ContextMenuItem2,
|
|
115707
115732
|
{
|
|
115708
115733
|
"data-testid": "file-tree__copy-relative-path",
|
|
115709
115734
|
onSelect: () => menu.queue(() => void writeClipboardText(entryPath)),
|
|
115710
115735
|
children: [
|
|
115711
|
-
/* @__PURE__ */ (0,
|
|
115736
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.ClipboardCopy, { className: "size-4" }),
|
|
115712
115737
|
"Copy relative path"
|
|
115713
115738
|
]
|
|
115714
115739
|
}
|
|
115715
115740
|
),
|
|
115716
|
-
workspacePath && /* @__PURE__ */ (0,
|
|
115741
|
+
workspacePath && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115717
115742
|
ContextMenuItem2,
|
|
115718
115743
|
{
|
|
115719
115744
|
"data-testid": "file-tree__copy-absolute-path",
|
|
115720
115745
|
onSelect: () => menu.queue(() => void writeClipboardText(joinWorkspacePath(workspacePath, entryPath))),
|
|
115721
115746
|
children: [
|
|
115722
|
-
/* @__PURE__ */ (0,
|
|
115747
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.ClipboardCopy, { className: "size-4" }),
|
|
115723
115748
|
"Copy absolute path"
|
|
115724
115749
|
]
|
|
115725
115750
|
}
|
|
115726
115751
|
),
|
|
115727
|
-
(canRename || canDelete) && /* @__PURE__ */ (0,
|
|
115728
|
-
canRename && /* @__PURE__ */ (0,
|
|
115729
|
-
/* @__PURE__ */ (0,
|
|
115752
|
+
(canRename || canDelete) && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ContextMenuSeparator2, {}),
|
|
115753
|
+
canRename && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ContextMenuItem2, { onSelect: () => menu.queue(() => onRequestRename(entryPath)), children: [
|
|
115754
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.Pencil, { className: "size-4" }),
|
|
115730
115755
|
"Rename"
|
|
115731
115756
|
] }),
|
|
115732
|
-
canDelete && /* @__PURE__ */ (0,
|
|
115757
|
+
canDelete && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
115733
115758
|
ContextMenuItem2,
|
|
115734
115759
|
{
|
|
115735
115760
|
variant: "destructive",
|
|
115736
115761
|
onSelect: () => menu.queue(() => onRequestDelete(entryPath, isDir ? "directory" : "file")),
|
|
115737
115762
|
children: [
|
|
115738
|
-
/* @__PURE__ */ (0,
|
|
115763
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.Trash2, { className: "size-4" }),
|
|
115739
115764
|
"Delete"
|
|
115740
115765
|
]
|
|
115741
115766
|
}
|
|
@@ -115745,13 +115770,13 @@ function TreeNode2({
|
|
|
115745
115770
|
}
|
|
115746
115771
|
);
|
|
115747
115772
|
const showInlineInput = newEntry?.parentPath === entryPath;
|
|
115748
|
-
return /* @__PURE__ */ (0,
|
|
115773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_jsx_runtime70.Fragment, { children: [
|
|
115749
115774
|
row,
|
|
115750
115775
|
isExpanded && (() => {
|
|
115751
115776
|
const splitIdx = children?.findIndex((c2) => c2.type === "file") ?? -1;
|
|
115752
115777
|
const folderChildren = splitIdx === -1 ? children ?? [] : (children ?? []).slice(0, splitIdx);
|
|
115753
115778
|
const fileChildren = splitIdx === -1 ? [] : (children ?? []).slice(splitIdx);
|
|
115754
|
-
const renderChild = (child) => /* @__PURE__ */ (0,
|
|
115779
|
+
const renderChild = (child) => /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115755
115780
|
TreeNode2,
|
|
115756
115781
|
{
|
|
115757
115782
|
entry: child,
|
|
@@ -115789,7 +115814,7 @@ function TreeNode2({
|
|
|
115789
115814
|
},
|
|
115790
115815
|
child.name
|
|
115791
115816
|
);
|
|
115792
|
-
const newEntryInput = showInlineInput ? /* @__PURE__ */ (0,
|
|
115817
|
+
const newEntryInput = showInlineInput ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115793
115818
|
EntryNameInput,
|
|
115794
115819
|
{
|
|
115795
115820
|
kind: newEntry.kind,
|
|
@@ -115801,9 +115826,9 @@ function TreeNode2({
|
|
|
115801
115826
|
},
|
|
115802
115827
|
`new-${newEntry.kind}-${entryPath}`
|
|
115803
115828
|
) : null;
|
|
115804
|
-
return /* @__PURE__ */ (0,
|
|
115829
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_jsx_runtime70.Fragment, { children: [
|
|
115805
115830
|
showInlineInput && newEntry.kind === "directory" && newEntryInput,
|
|
115806
|
-
isLoading && !children?.length && /* @__PURE__ */ (0,
|
|
115831
|
+
isLoading && !children?.length && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115807
115832
|
"div",
|
|
115808
115833
|
{
|
|
115809
115834
|
className: `flex items-center text-muted-foreground/70 ${compact ? "text-[13px]" : "text-[15px]"}`,
|
|
@@ -115814,7 +115839,7 @@ function TreeNode2({
|
|
|
115814
115839
|
children: "Loading\u2026"
|
|
115815
115840
|
}
|
|
115816
115841
|
),
|
|
115817
|
-
!isLoading && !showInlineInput && children && children.length === 0 && /* @__PURE__ */ (0,
|
|
115842
|
+
!isLoading && !showInlineInput && children && children.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
115818
115843
|
"div",
|
|
115819
115844
|
{
|
|
115820
115845
|
className: `flex items-center italic text-muted-foreground/50 ${compact ? "text-[13px]" : "text-[15px]"}`,
|
|
@@ -116260,7 +116285,7 @@ var FileBrowser = (0, import_react36.forwardRef)(function FileBrowser2({
|
|
|
116260
116285
|
);
|
|
116261
116286
|
const rootMenu = useDeferredMenuAction();
|
|
116262
116287
|
if (!adapter.listWorkspaceFiles) {
|
|
116263
|
-
return /* @__PURE__ */ (0,
|
|
116288
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "flex h-32 items-center justify-center text-sm text-muted-foreground", children: "File browsing not supported" });
|
|
116264
116289
|
}
|
|
116265
116290
|
const rootEntries = dirContents.get("") ?? [];
|
|
116266
116291
|
const rootLoading = loadingPaths.has("");
|
|
@@ -116297,20 +116322,20 @@ var FileBrowser = (0, import_react36.forwardRef)(function FileBrowser2({
|
|
|
116297
116322
|
void pasteInto(resolveDefaultTarget());
|
|
116298
116323
|
}
|
|
116299
116324
|
};
|
|
116300
|
-
return /* @__PURE__ */ (0,
|
|
116301
|
-
/* @__PURE__ */ (0,
|
|
116325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex h-full flex-col overflow-hidden", onKeyDown: handleKeyDown, children: [
|
|
116326
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
|
|
116302
116327
|
ContextMenu2,
|
|
116303
116328
|
{
|
|
116304
116329
|
onOpenChange: (open3) => {
|
|
116305
116330
|
if (open3) clearTreeSelection();
|
|
116306
116331
|
},
|
|
116307
116332
|
children: [
|
|
116308
|
-
/* @__PURE__ */ (0,
|
|
116333
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ContextMenuTrigger2, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "min-h-0 flex-1 overflow-y-auto py-1 pl-px", children: [
|
|
116309
116334
|
(() => {
|
|
116310
116335
|
const rootSplitIdx = rootEntries.findIndex((e2) => e2.type === "file");
|
|
116311
116336
|
const rootFolders = rootSplitIdx === -1 ? rootEntries : rootEntries.slice(0, rootSplitIdx);
|
|
116312
116337
|
const rootFiles = rootSplitIdx === -1 ? [] : rootEntries.slice(rootSplitIdx);
|
|
116313
|
-
const renderRow = (entry) => /* @__PURE__ */ (0,
|
|
116338
|
+
const renderRow = (entry) => /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
116314
116339
|
TreeNode2,
|
|
116315
116340
|
{
|
|
116316
116341
|
entry,
|
|
@@ -116348,7 +116373,7 @@ var FileBrowser = (0, import_react36.forwardRef)(function FileBrowser2({
|
|
|
116348
116373
|
},
|
|
116349
116374
|
entry.name
|
|
116350
116375
|
);
|
|
116351
|
-
const rootInput = showRootInput ? /* @__PURE__ */ (0,
|
|
116376
|
+
const rootInput = showRootInput ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
116352
116377
|
EntryNameInput,
|
|
116353
116378
|
{
|
|
116354
116379
|
kind: newEntry.kind,
|
|
@@ -116360,30 +116385,30 @@ var FileBrowser = (0, import_react36.forwardRef)(function FileBrowser2({
|
|
|
116360
116385
|
},
|
|
116361
116386
|
`new-${newEntry.kind}-root`
|
|
116362
116387
|
) : null;
|
|
116363
|
-
return /* @__PURE__ */ (0,
|
|
116388
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_jsx_runtime70.Fragment, { children: [
|
|
116364
116389
|
showRootInput && newEntry.kind === "directory" && rootInput,
|
|
116365
|
-
rootLoading && rootEntries.length === 0 && !showRootInput && /* @__PURE__ */ (0,
|
|
116366
|
-
!rootLoading && rootEntries.length === 0 && !showRootInput && /* @__PURE__ */ (0,
|
|
116390
|
+
rootLoading && rootEntries.length === 0 && !showRootInput && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "flex h-32 items-center justify-center text-sm text-muted-foreground", children: "Loading\u2026" }),
|
|
116391
|
+
!rootLoading && rootEntries.length === 0 && !showRootInput && /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "flex h-32 items-center justify-center text-sm text-muted-foreground", children: "Empty directory" }),
|
|
116367
116392
|
rootFolders.map(renderRow),
|
|
116368
116393
|
showRootInput && newEntry.kind === "file" && rootInput,
|
|
116369
116394
|
rootFiles.map(renderRow)
|
|
116370
116395
|
] });
|
|
116371
116396
|
})(),
|
|
116372
|
-
/* @__PURE__ */ (0,
|
|
116397
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "min-h-[40px] flex-1" })
|
|
116373
116398
|
] }) }),
|
|
116374
|
-
/* @__PURE__ */ (0,
|
|
116375
|
-
/* @__PURE__ */ (0,
|
|
116376
|
-
/* @__PURE__ */ (0,
|
|
116399
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ContextMenuContent2, { onCloseAutoFocus: rootMenu.flush, children: [
|
|
116400
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ContextMenuItem2, { onSelect: () => rootMenu.queue(() => requestNewEntry("", "file")), children: [
|
|
116401
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.File, { className: "size-4" }),
|
|
116377
116402
|
"New File"
|
|
116378
116403
|
] }),
|
|
116379
|
-
/* @__PURE__ */ (0,
|
|
116380
|
-
/* @__PURE__ */ (0,
|
|
116404
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ContextMenuItem2, { onSelect: () => rootMenu.queue(() => requestNewEntry("", "directory")), children: [
|
|
116405
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.FolderPlus, { className: "size-4" }),
|
|
116381
116406
|
"New Folder"
|
|
116382
116407
|
] }),
|
|
116383
|
-
canPaste && /* @__PURE__ */ (0,
|
|
116384
|
-
/* @__PURE__ */ (0,
|
|
116385
|
-
/* @__PURE__ */ (0,
|
|
116386
|
-
/* @__PURE__ */ (0,
|
|
116408
|
+
canPaste && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_jsx_runtime70.Fragment, { children: [
|
|
116409
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(ContextMenuSeparator2, {}),
|
|
116410
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(ContextMenuItem2, { onSelect: () => rootMenu.queue(() => void pasteInto("")), children: [
|
|
116411
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.ClipboardPaste, { className: "size-4" }),
|
|
116387
116412
|
"Paste"
|
|
116388
116413
|
] })
|
|
116389
116414
|
] })
|
|
@@ -116391,42 +116416,42 @@ var FileBrowser = (0, import_react36.forwardRef)(function FileBrowser2({
|
|
|
116391
116416
|
]
|
|
116392
116417
|
}
|
|
116393
116418
|
),
|
|
116394
|
-
/* @__PURE__ */ (0,
|
|
116419
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
116395
116420
|
Dialog2,
|
|
116396
116421
|
{
|
|
116397
116422
|
open: pendingDelete !== null,
|
|
116398
116423
|
onOpenChange: (open3) => {
|
|
116399
116424
|
if (!open3) cancelDelete();
|
|
116400
116425
|
},
|
|
116401
|
-
children: /* @__PURE__ */ (0,
|
|
116402
|
-
/* @__PURE__ */ (0,
|
|
116403
|
-
/* @__PURE__ */ (0,
|
|
116426
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogContent2, { className: "sm:max-w-[425px]", onClick: (e2) => e2.stopPropagation(), children: [
|
|
116427
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogHeader, { children: [
|
|
116428
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogTitle2, { children: [
|
|
116404
116429
|
"Delete ",
|
|
116405
116430
|
pendingDelete?.kind === "directory" ? "folder" : "file"
|
|
116406
116431
|
] }),
|
|
116407
|
-
/* @__PURE__ */ (0,
|
|
116432
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogDescription2, { children: [
|
|
116408
116433
|
"Are you sure you want to delete ",
|
|
116409
|
-
/* @__PURE__ */ (0,
|
|
116434
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("strong", { children: pendingDelete?.path }),
|
|
116410
116435
|
"?"
|
|
116411
116436
|
] })
|
|
116412
116437
|
] }),
|
|
116413
|
-
/* @__PURE__ */ (0,
|
|
116414
|
-
pendingDelete?.kind === "directory" && /* @__PURE__ */ (0,
|
|
116415
|
-
/* @__PURE__ */ (0,
|
|
116416
|
-
/* @__PURE__ */ (0,
|
|
116438
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex flex-col gap-2 text-sm", children: [
|
|
116439
|
+
pendingDelete?.kind === "directory" && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-start gap-2 rounded-md border border-yellow-500/30 bg-yellow-500/10 p-3", children: [
|
|
116440
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.AlertTriangle, { className: "size-4 shrink-0 text-yellow-500 mt-0.5" }),
|
|
116441
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { children: "The folder and all of its contents will be deleted from disk. This cannot be undone." })
|
|
116417
116442
|
] }),
|
|
116418
|
-
pendingDelete?.kind === "file" && /* @__PURE__ */ (0,
|
|
116419
|
-
/* @__PURE__ */ (0,
|
|
116420
|
-
/* @__PURE__ */ (0,
|
|
116443
|
+
pendingDelete?.kind === "file" && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-start gap-2 rounded-md border border-yellow-500/30 bg-yellow-500/10 p-3", children: [
|
|
116444
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.AlertTriangle, { className: "size-4 shrink-0 text-yellow-500 mt-0.5" }),
|
|
116445
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { children: "The file will be deleted from disk. This cannot be undone." })
|
|
116421
116446
|
] }),
|
|
116422
|
-
deleteError && /* @__PURE__ */ (0,
|
|
116423
|
-
/* @__PURE__ */ (0,
|
|
116424
|
-
/* @__PURE__ */ (0,
|
|
116447
|
+
deleteError && /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: "flex items-start gap-2 rounded-md border border-destructive/30 bg-destructive/10 p-3 text-destructive", children: [
|
|
116448
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_lucide_react7.AlertTriangle, { className: "size-4 shrink-0 mt-0.5" }),
|
|
116449
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("span", { children: deleteError })
|
|
116425
116450
|
] })
|
|
116426
116451
|
] }),
|
|
116427
|
-
/* @__PURE__ */ (0,
|
|
116428
|
-
/* @__PURE__ */ (0,
|
|
116429
|
-
/* @__PURE__ */ (0,
|
|
116452
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(DialogFooter, { children: [
|
|
116453
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(Button, { variant: "ghost", onClick: cancelDelete, disabled: deleteSubmitting, children: "Cancel" }),
|
|
116454
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
116430
116455
|
Button,
|
|
116431
116456
|
{
|
|
116432
116457
|
variant: "destructive",
|
|
@@ -116447,32 +116472,32 @@ var import_react39 = __toESM(require_react(), 1);
|
|
|
116447
116472
|
|
|
116448
116473
|
// src/dashboard/components/ImagePreview.tsx
|
|
116449
116474
|
var import_react37 = __toESM(require_react(), 1);
|
|
116450
|
-
var
|
|
116475
|
+
var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1);
|
|
116451
116476
|
|
|
116452
116477
|
// src/dashboard/components/LanguagePickerDialog.tsx
|
|
116453
116478
|
var import_react38 = __toESM(require_react(), 1);
|
|
116454
|
-
var
|
|
116479
|
+
var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);
|
|
116455
116480
|
|
|
116456
116481
|
// src/dashboard/components/PdfPreview.tsx
|
|
116457
|
-
var
|
|
116482
|
+
var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1);
|
|
116458
116483
|
|
|
116459
116484
|
// src/dashboard/components/FileViewer.tsx
|
|
116460
|
-
var
|
|
116485
|
+
var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1);
|
|
116461
116486
|
|
|
116462
116487
|
// src/dashboard/components/QuickOpenDialog.tsx
|
|
116463
116488
|
var import_react40 = __toESM(require_react(), 1);
|
|
116464
|
-
var
|
|
116489
|
+
var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1);
|
|
116465
116490
|
|
|
116466
116491
|
// src/dashboard/components/SearchFilesDialog.tsx
|
|
116467
116492
|
var import_react41 = __toESM(require_react(), 1);
|
|
116468
|
-
var
|
|
116493
|
+
var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1);
|
|
116469
116494
|
|
|
116470
116495
|
// src/dashboard/components/WorkspacePickerDialog.tsx
|
|
116471
116496
|
var import_react42 = __toESM(require_react(), 1);
|
|
116472
|
-
var
|
|
116497
|
+
var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1);
|
|
116473
116498
|
|
|
116474
116499
|
// src/dashboard/components/WorkspaceTabNav.tsx
|
|
116475
|
-
var
|
|
116500
|
+
var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1);
|
|
116476
116501
|
|
|
116477
116502
|
// src/dashboard/hooks/use-editor-history.ts
|
|
116478
116503
|
var import_react43 = __toESM(require_react(), 1);
|
|
@@ -123793,6 +123818,14 @@ var WorkspaceService = class {
|
|
|
123793
123818
|
log24.warn({ err, workspaceId }, "teardown script failed");
|
|
123794
123819
|
}
|
|
123795
123820
|
}
|
|
123821
|
+
try {
|
|
123822
|
+
await execFileAsync2(command, ["worktree", "unlock", worktreePath], {
|
|
123823
|
+
cwd: projPath,
|
|
123824
|
+
env: gitEnv,
|
|
123825
|
+
encoding: "utf-8"
|
|
123826
|
+
});
|
|
123827
|
+
} catch {
|
|
123828
|
+
}
|
|
123796
123829
|
try {
|
|
123797
123830
|
await execFileAsync2(command, ["worktree", "remove", "--force", worktreePath], {
|
|
123798
123831
|
cwd: projPath,
|
|
@@ -123805,6 +123838,14 @@ var WorkspaceService = class {
|
|
|
123805
123838
|
} catch (err) {
|
|
123806
123839
|
log24.warn({ err, workspaceId, worktreePath }, "manual worktree rm failed");
|
|
123807
123840
|
}
|
|
123841
|
+
try {
|
|
123842
|
+
await execFileAsync2(command, ["worktree", "unlock", worktreePath], {
|
|
123843
|
+
cwd: projPath,
|
|
123844
|
+
env: gitEnv,
|
|
123845
|
+
encoding: "utf-8"
|
|
123846
|
+
});
|
|
123847
|
+
} catch {
|
|
123848
|
+
}
|
|
123808
123849
|
try {
|
|
123809
123850
|
await execFileAsync2(command, ["worktree", "prune"], {
|
|
123810
123851
|
cwd: projPath,
|