@puddle-code/cli 0.2.18 → 0.2.21

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.
Files changed (140) hide show
  1. package/CHANGELOG.md +4 -16
  2. package/dist/host-control.mjs +59 -0
  3. package/dist/index.js +66 -3
  4. package/dist/public/assets/App-NrJUEV9p.js +2 -0
  5. package/dist/public/assets/{Dashboard-DdqyCWkG.js → Dashboard-BhAek_r4.js} +1 -1
  6. package/dist/public/assets/{EditorTabClose-BYTH6g2Z.js → EditorTabClose-CSKAGWsA.js} +1 -1
  7. package/dist/public/assets/{FindWidget-B4wnVQS_.js → FindWidget-B6dVpkKr.js} +1 -1
  8. package/dist/public/assets/LazyTerminal-fxF4IO4o.js +2 -0
  9. package/dist/public/assets/{ModelRefcount-DHis9DXZ.js → ModelRefcount-CrpDNwTn.js} +1 -1
  10. package/dist/public/assets/{NewProjectDialog-B4ySxxDz.js → NewProjectDialog-D-hVQlA4.js} +1 -1
  11. package/dist/public/assets/{PaneEditorBody-tjlNFM2W.js → PaneEditorBody--h9jLt1e.js} +3 -3
  12. package/dist/public/assets/{PdfViewer-Bqvxu-es.js → PdfViewer-CNzO040W.js} +2 -2
  13. package/dist/public/assets/SettingsDialog-DaxYdggs.js +8 -0
  14. package/dist/public/assets/{Terminal-B297I2Hn.js → Terminal-DQL8GETy.js} +5 -5
  15. package/dist/public/assets/{Workspace-BO11vRQa.js → Workspace-BDDSmIKE.js} +5 -5
  16. package/dist/public/assets/{abnfDiagram-VCTEODGH-BgqZK9hy.js → abnfDiagram-VCTEODGH-Dj6CI3Nv.js} +1 -1
  17. package/dist/public/assets/architecture-7GRP2DOG-CDcS1iVd.js +1 -0
  18. package/dist/public/assets/{architectureDiagram-5GKGNRK7-Dic5TzsL.js → architectureDiagram-5GKGNRK7-7n7HJQxV.js} +1 -1
  19. package/dist/public/assets/{blockDiagram-I7D4REHJ-DVS-B-eY.js → blockDiagram-I7D4REHJ-Cmsxv8OS.js} +1 -1
  20. package/dist/public/assets/{buffer-store-CXH0xBDj.js → buffer-store-NeRSjzSg.js} +3 -3
  21. package/dist/public/assets/{button-CZSpHYG9.js → button-hdghxls7.js} +1 -1
  22. package/dist/public/assets/{c4Diagram-7LVT6UL2-BSzLGfzg.js → c4Diagram-7LVT6UL2-D23ryIme.js} +1 -1
  23. package/dist/public/assets/channel-B98_B4F2.js +1 -0
  24. package/dist/public/assets/{chunk-2E4U76K2-CdDCDyYU.js → chunk-2E4U76K2-usroR3SM.js} +1 -1
  25. package/dist/public/assets/{chunk-4HAMMTFA-DEQ4g2Vr.js → chunk-4HAMMTFA-B4mxD8f1.js} +1 -1
  26. package/dist/public/assets/{chunk-75Z2AOVW-Bil9fayR.js → chunk-75Z2AOVW-BSDNHsOk.js} +1 -1
  27. package/dist/public/assets/{chunk-CLGD4ZFX-BCcQCUw7.js → chunk-CLGD4ZFX-DpUm0L6C.js} +1 -1
  28. package/dist/public/assets/{chunk-DU6HZSFF-BsEqNRs6.js → chunk-DU6HZSFF-Cin9bFEJ.js} +1 -1
  29. package/dist/public/assets/{chunk-F27PBJKO-3VPQvVOa.js → chunk-F27PBJKO-BWPIZmRh.js} +1 -1
  30. package/dist/public/assets/{chunk-GMAD6QVW-B1-kp_mS.js → chunk-GMAD6QVW-eS27qQYi.js} +1 -1
  31. package/dist/public/assets/{chunk-GVQU2GXP-CcH5DIRn.js → chunk-GVQU2GXP-DvZzuy44.js} +1 -1
  32. package/dist/public/assets/{chunk-IMKFNOWR-DXsqjjty.js → chunk-IMKFNOWR-CKfEqBn8.js} +1 -1
  33. package/dist/public/assets/{chunk-L3NEJ4N5-CLWbTGk0.js → chunk-L3NEJ4N5-Gq2sL0Oq.js} +1 -1
  34. package/dist/public/assets/{chunk-OSK3NFVY-Cg7bYfyL.js → chunk-OSK3NFVY-DSHFDm2K.js} +1 -1
  35. package/dist/public/assets/{chunk-P2QGCYS3-CPn0gvFx.js → chunk-P2QGCYS3-B0b6PsO0.js} +1 -1
  36. package/dist/public/assets/{chunk-POPQ4Y6H-Dy-mw1ro.js → chunk-POPQ4Y6H-B_whPWNN.js} +1 -1
  37. package/dist/public/assets/{chunk-PWAF6VOD-CrBboqO8.js → chunk-PWAF6VOD-DfdxoQ_F.js} +1 -1
  38. package/dist/public/assets/{chunk-SHT3W25Y-CPJO0R1G.js → chunk-SHT3W25Y-CHrnqlvt.js} +1 -1
  39. package/dist/public/assets/{chunk-SVP7TREG-BIhK7PZA.js → chunk-SVP7TREG-keTkvLck.js} +1 -1
  40. package/dist/public/assets/{chunk-TICWLB2K-CyGrrjlf.js → chunk-TICWLB2K-ZF0XdA5t.js} +1 -1
  41. package/dist/public/assets/{chunk-TLUHSLCS-EdA0yALB.js → chunk-TLUHSLCS-B3xiw07r.js} +2 -2
  42. package/dist/public/assets/classDiagram-ZZMXUADV-CalLaxUD.js +1 -0
  43. package/dist/public/assets/classDiagram-v2-VYDZK3BY-CalLaxUD.js +1 -0
  44. package/dist/public/assets/{context-menu-BcxQJKjd.js → context-menu-fGutCa7q.js} +1 -1
  45. package/dist/public/assets/{copy-DO0WkB3-.js → copy-B38GDFbv.js} +1 -1
  46. package/dist/public/assets/{cssMode-D53Um_ik.js → cssMode-BBPxRrZH.js} +1 -1
  47. package/dist/public/assets/{cynefin-OW5HDTMX-Cc22mgCn.js → cynefin-OW5HDTMX-BKwXHhp6.js} +1 -1
  48. package/dist/public/assets/{cynefinDiagram-5FMLGOSQ-CIyNRThr.js → cynefinDiagram-5FMLGOSQ-B59dmX8D.js} +1 -1
  49. package/dist/public/assets/{dagre-GXQ25YYZ-CnMk_Gwy.js → dagre-GXQ25YYZ-BysK_yGg.js} +1 -1
  50. package/dist/public/assets/{diagram-S7CK7UJ4-D0MGCjd4.js → diagram-S7CK7UJ4-BTvgOprS.js} +1 -1
  51. package/dist/public/assets/{diagram-UQ7AKVKN-BmkJFJIY.js → diagram-UQ7AKVKN-C1FXQfFT.js} +1 -1
  52. package/dist/public/assets/{diagram-VSXAHHWV-Dbl-ipQB.js → diagram-VSXAHHWV-CTub3LLw.js} +1 -1
  53. package/dist/public/assets/{diagram-VX7I27RA-DRVKTRul.js → diagram-VX7I27RA-C8YSQsst.js} +1 -1
  54. package/dist/public/assets/{diagram-Z3DM3KII-RyOfpikP.js → diagram-Z3DM3KII-zBY2ZT-7.js} +1 -1
  55. package/dist/public/assets/dialog-CVAp0B_q.js +41 -0
  56. package/dist/public/assets/disclosure-CWTUvRKU.js +1 -0
  57. package/dist/public/assets/{dist-sv8JIOv-.js → dist-1iWQMdtt.js} +1 -1
  58. package/dist/public/assets/{dist-Ci7LEIn0.js → dist-DWt3BCrg.js} +1 -1
  59. package/dist/public/assets/{ebnfDiagram-PWID7BFC-DsbOKLzm.js → ebnfDiagram-PWID7BFC-DZbYMMq9.js} +1 -1
  60. package/dist/public/assets/{erDiagram-RLTQ6QDP-BRu0Y85B.js → erDiagram-RLTQ6QDP-BufFqh6K.js} +1 -1
  61. package/dist/public/assets/{errors-wktZNO7z.js → errors-0CwhraNS.js} +1 -1
  62. package/dist/public/assets/eventmodeling-NTZA5JFV-CC5F0fZk.js +1 -0
  63. package/dist/public/assets/flowDiagram-HODETNUW-Dmt2DAB8.js +1 -0
  64. package/dist/public/assets/{ganttDiagram-EL5Y4UJY-BvxI4ZZ2.js → ganttDiagram-EL5Y4UJY-CzBnAVfV.js} +1 -1
  65. package/dist/public/assets/{gitGraph-4MIJSDKK-vLrRAKmJ.js → gitGraph-4MIJSDKK-DzkiKDz3.js} +1 -1
  66. package/dist/public/assets/{gitGraphDiagram-WWUBYQGX-BJ4Dh4JQ.js → gitGraphDiagram-WWUBYQGX-Cg5zqV71.js} +1 -1
  67. package/dist/public/assets/{htmlMode-7q2c14cA.js → htmlMode-HP2zLptL.js} +1 -1
  68. package/dist/public/assets/{index-CIyjjiv2.js → index-W9vnFL1i.js} +4 -4
  69. package/dist/public/assets/{info-A6RAGUB7-Dgq4dAoa.js → info-A6RAGUB7-DrzRcVCp.js} +1 -1
  70. package/dist/public/assets/{infoDiagram-27XIBGKW-BBeyIc-M.js → infoDiagram-27XIBGKW-DKhhQ6Mi.js} +1 -1
  71. package/dist/public/assets/{ishikawaDiagram-5VMMS53U-Bcmg0Rdq.js → ishikawaDiagram-5VMMS53U-Sxvy6BP4.js} +1 -1
  72. package/dist/public/assets/{journeyDiagram-3NMN7TZE-CwY84cL9.js → journeyDiagram-3NMN7TZE-DLCDGlAt.js} +1 -1
  73. package/dist/public/assets/{jsonMode-DrKVocC3.js → jsonMode-3cqCCYan.js} +1 -1
  74. package/dist/public/assets/{kanban-definition-UXKFOSKX-CF1YxPMi.js → kanban-definition-UXKFOSKX-BBHezsUK.js} +1 -1
  75. package/dist/public/assets/{line-4eWO9hqS.js → line-CXD0KIW6.js} +1 -1
  76. package/dist/public/assets/{markdown-mermaid-B3PzAp3L.js → markdown-mermaid-gr78oRak.js} +2 -2
  77. package/dist/public/assets/{math-C84CoDfI.js → math-DD0qgOf_.js} +1 -1
  78. package/dist/public/assets/{media-refresh-store-CTzNrUO5.js → media-refresh-store-DTLvGgrw.js} +1 -1
  79. package/dist/public/assets/{mermaid-parser.core-DINfbsjJ.js → mermaid-parser.core-CQpv25sY.js} +3 -3
  80. package/dist/public/assets/{mermaid.core-Cgopz4Nb.js → mermaid.core-CO3okgIG.js} +3 -3
  81. package/dist/public/assets/{mindmap-definition-YA3MSWOX-DiV-gupr.js → mindmap-definition-YA3MSWOX-DnuqRR1y.js} +1 -1
  82. package/dist/public/assets/notification-delivery-rQp5tkM8.js +1 -0
  83. package/dist/public/assets/{packet-AYTQ26CC-D4U8naDn.js → packet-AYTQ26CC--9UnHksn.js} +1 -1
  84. package/dist/public/assets/{pdf-Kc6SO_pI.js → pdf-DFR5TvGJ.js} +1 -1
  85. package/dist/public/assets/{pegDiagram-XKGWAZYB-2EhHewzX.js → pegDiagram-XKGWAZYB-m8JdNNtC.js} +1 -1
  86. package/dist/public/assets/{pie-WAS4IAKB-hLX3y_iU.js → pie-WAS4IAKB-GnDinOP5.js} +1 -1
  87. package/dist/public/assets/{pieDiagram-E7YTZNPT-ZPBxvnxk.js → pieDiagram-E7YTZNPT-u-NA8MFl.js} +1 -1
  88. package/dist/public/assets/{project-abbrev-DuSyhdGL.js → project-abbrev-Ce2YQx3q.js} +1 -1
  89. package/dist/public/assets/{protocol-support-B2anXRJW.js → protocol-support-DM3D3Owq.js} +1 -1
  90. package/dist/public/assets/{quadrantDiagram-AXDQQJYC-BrgYSl9Y.js → quadrantDiagram-AXDQQJYC-si_KhMBB.js} +1 -1
  91. package/dist/public/assets/{radar-RG4KPBEZ-ezwXnTYT.js → radar-RG4KPBEZ-CnJwODJt.js} +1 -1
  92. package/dist/public/assets/{railroad-74A4TZTK-CR-81fO8.js → railroad-74A4TZTK-Cgg0LWTI.js} +1 -1
  93. package/dist/public/assets/railroad-abnf-HS5TGJTU-DPqD3hz7.js +1 -0
  94. package/dist/public/assets/railroad-ebnf-LZEXJU2U-9Jxyrh7e.js +1 -0
  95. package/dist/public/assets/railroad-peg-WCYAUIDC-gr2ZokSI.js +1 -0
  96. package/dist/public/assets/{railroadDiagram-O6MQD6OU-Dm98Dukk.js → railroadDiagram-O6MQD6OU-DuQX8qaE.js} +1 -1
  97. package/dist/public/assets/{requirementDiagram-BXWQKSXE-BKUOU0s7.js → requirementDiagram-BXWQKSXE-Chwrn5Tf.js} +1 -1
  98. package/dist/public/assets/{sankeyDiagram-P5KCCOFB-5197_HSs.js → sankeyDiagram-P5KCCOFB-FpJ30BIQ.js} +1 -1
  99. package/dist/public/assets/{scroll-restoration-ClxX1YHt.js → scroll-restoration-B3J09_am.js} +1 -1
  100. package/dist/public/assets/{selection-actions-BTyYbd08.js → selection-actions-awCJJCSe.js} +1 -1
  101. package/dist/public/assets/{sequenceDiagram-WJ2MYXX4-rNfQjUcO.js → sequenceDiagram-WJ2MYXX4-DVw87Ucm.js} +1 -1
  102. package/dist/public/assets/{stateDiagram-D77RDMKH-Cx5Ee_e1.js → stateDiagram-D77RDMKH-qmBcs9VH.js} +1 -1
  103. package/dist/public/assets/stateDiagram-v2-MP3YSRHH-TK5UygAI.js +1 -0
  104. package/dist/public/assets/{swimlanes-42K2YHIH-wMD3I2QL.js → swimlanes-42K2YHIH-ts5KQGMt.js} +1 -1
  105. package/dist/public/assets/swimlanesDiagram-VR7AAH4N-BUMN0oZf.js +8 -0
  106. package/dist/public/assets/{switch-Y_nZqNi0.js → switch-DMkSxGf3.js} +1 -1
  107. package/dist/public/assets/{timeline-definition-24CTP7MA-mnOLKfvu.js → timeline-definition-24CTP7MA-BDL_pzrt.js} +1 -1
  108. package/dist/public/assets/{treeView-Q6P3EWNA-DYPLE01q.js → treeView-Q6P3EWNA-B1vMOTkl.js} +1 -1
  109. package/dist/public/assets/{treemap-WGGIJYW6-D_iDh6g6.js → treemap-WGGIJYW6-wi5T0FIb.js} +1 -1
  110. package/dist/public/assets/{tsMode-CZWKy2l3.js → tsMode-CsaS5imR.js} +1 -1
  111. package/dist/public/assets/{use-ui-state-9fFSPrEY.js → use-ui-state-2VprViGF.js} +1 -1
  112. package/dist/public/assets/{vennDiagram-4TSXK5OY-Bve1WBMV.js → vennDiagram-4TSXK5OY-Djvp5-2_.js} +1 -1
  113. package/dist/public/assets/{view-state-store-DShmQqnS.js → view-state-store-rOwEBYKn.js} +1 -1
  114. package/dist/public/assets/{wardley-WFR3VGLG-3pdzzC1s.js → wardley-WFR3VGLG-Di-PFH_i.js} +1 -1
  115. package/dist/public/assets/{wardleyDiagram-VM6X3IG4-EPB-PAuG.js → wardleyDiagram-VM6X3IG4-B5Y8UZiL.js} +1 -1
  116. package/dist/public/assets/ws-DsytGlkr.js +1 -0
  117. package/dist/public/assets/{xychartDiagram-S5SC5T6Z-wGpnlL1-.js → xychartDiagram-S5SC5T6Z-d-pvxFe2.js} +1 -1
  118. package/dist/public/index.html +3 -1
  119. package/dist/public/manifest.webmanifest +11 -0
  120. package/dist/public/notification-worker.js +135 -0
  121. package/dist/public/puddle-app.png +0 -0
  122. package/package.json +1 -1
  123. package/dist/public/assets/App-CGG5do99.js +0 -2
  124. package/dist/public/assets/LazyTerminal-DqKe6H-V.js +0 -2
  125. package/dist/public/assets/SettingsDialog-VAdM-npo.js +0 -8
  126. package/dist/public/assets/architecture-7GRP2DOG-D-XtK_lw.js +0 -1
  127. package/dist/public/assets/channel-Dl9lubaq.js +0 -1
  128. package/dist/public/assets/classDiagram-ZZMXUADV-BXIsJXJa.js +0 -1
  129. package/dist/public/assets/classDiagram-v2-VYDZK3BY-BXIsJXJa.js +0 -1
  130. package/dist/public/assets/dialog-cFDquLR6.js +0 -41
  131. package/dist/public/assets/disclosure-FybNXyk_.js +0 -1
  132. package/dist/public/assets/eventmodeling-NTZA5JFV-CyvczrOZ.js +0 -1
  133. package/dist/public/assets/flowDiagram-HODETNUW-CZyfSlpG.js +0 -1
  134. package/dist/public/assets/notification-permission-2B9Xl86r.js +0 -1
  135. package/dist/public/assets/railroad-abnf-HS5TGJTU-DbufkTPM.js +0 -1
  136. package/dist/public/assets/railroad-ebnf-LZEXJU2U-DqvR8uyV.js +0 -1
  137. package/dist/public/assets/railroad-peg-WCYAUIDC-CSIG-i7o.js +0 -1
  138. package/dist/public/assets/stateDiagram-v2-MP3YSRHH-BC_og2uK.js +0 -1
  139. package/dist/public/assets/swimlanesDiagram-VR7AAH4N-DD33Ofd5.js +0 -8
  140. package/dist/public/assets/ws-ClWC7CMz.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,24 +1,12 @@
1
1
  <!--
2
- Rolling changelog for the NEXT release. Governance lives in CLAUDE.md §"Changelog discipline".
3
- On publish: retitle [Unreleased] to [X.Y.Z] — date, archive a copy to
4
- docs/changelogs/CHANGELOG-vX.Y.Z.md, then reset this file to this template.
5
- Past releases: see docs/changelogs/.
2
+ Archived release changelog. Governance lives in CLAUDE.md §"Changelog discipline".
6
3
  -->
7
4
 
8
5
  # Changelog
9
6
 
10
- ## [0.2.18] — 2026-10-02
11
-
12
- ### Changed
13
-
14
- - Slightly tighten horizontal key spacing in the mobile terminal strip.
15
-
16
- - Label mobile terminal modifiers with the Mac symbols ⌃, ⌥ and ⇧ while retaining accessible names and pressed-state highlighting.
7
+ ## [0.2.21] — 2026-10-14
17
8
 
18
9
  ### Fixed
19
10
 
20
- - Close terminal and agent session panels after archiving from their tab controls, even when the archive update arrives before the request completes.
21
-
22
- - Add a one-shot Shift key to the mobile terminal strip and preserve Ctrl/Opt/Shift combinations for application-mode arrows, Shift+Tab, Shift+Enter and Escape.
23
-
24
- - Open forwarded applications from desktop terminal links and port chips using an application-scoped invitation, so the system browser does not require a separate Puddle login.
11
+ - Align the shared API protocol assertion with protocol 22.4 so CI accepts the remote push notification changes.
12
+ - Publish the npm CLI through GitHub OIDC trusted publishing with a compatible npm version instead of relying on a stored publishing token.
@@ -14521,6 +14521,29 @@ function date4(params) {
14521
14521
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
14522
14522
  config(en_default());
14523
14523
 
14524
+ // ../shared/src/notifications.ts
14525
+ var notificationPreferencesSchema = external_exports.object({
14526
+ desktop: external_exports.boolean().default(true),
14527
+ sound: external_exports.boolean().default(false),
14528
+ when_focused: external_exports.boolean().default(true),
14529
+ muted_projects: external_exports.array(external_exports.string()).default([])
14530
+ });
14531
+ var desktopNotificationRequestSchema = external_exports.object({
14532
+ id: external_exports.string().min(1).max(128),
14533
+ title: external_exports.string().min(1).max(160),
14534
+ body: external_exports.string().min(1).max(256)
14535
+ }).strict();
14536
+ var notificationDeliverySchema = external_exports.object({
14537
+ state: external_exports.enum(["unverified", "shown", "failed", "unsupported"]),
14538
+ message: external_exports.string().max(512).nullable()
14539
+ });
14540
+ var agentNotificationSchema = external_exports.object({
14541
+ t: external_exports.literal("agent-notification"),
14542
+ id: external_exports.string().uuid(),
14543
+ session: external_exports.string().uuid(),
14544
+ reason: external_exports.enum(["waiting_input", "exited"])
14545
+ });
14546
+
14524
14547
  // ../shared/src/api/common.ts
14525
14548
  var errorResponseSchema = external_exports.object({
14526
14549
  error: external_exports.object({
@@ -14540,6 +14563,7 @@ var profileId = external_exports.string().regex(/^[0-9a-f]{10}$/);
14540
14563
  var versionResponseSchema = external_exports.object({
14541
14564
  version: external_exports.string(),
14542
14565
  /** Added by the host connector; absent on direct daemon responses and older connectors. */
14566
+ remote_notifications: external_exports.boolean().optional(),
14543
14567
  remote_image_uploads: external_exports.boolean().optional(),
14544
14568
  protocol: external_exports.object({
14545
14569
  major: external_exports.number().int().nonnegative(),
@@ -14916,6 +14940,8 @@ var sessionSchema = external_exports.object({
14916
14940
  kind: sessionKindSchema,
14917
14941
  /** Null for terminal sessions, which run a plain shell rather than an agent. */
14918
14942
  agent_type: external_exports.string().nullable(),
14943
+ /** Live foreground agent in a terminal session; icon hint only, never persisted. */
14944
+ detected_agent_type: external_exports.string().nullable().optional(),
14919
14945
  agent_session_ref: external_exports.string().nullable(),
14920
14946
  /** Durable native-conversation catalogue row; null for terminal sessions. */
14921
14947
  conversation_id: rowId.nullable().optional(),
@@ -15729,6 +15755,7 @@ var wsClientMessageSchema = external_exports.discriminatedUnion("t", [
15729
15755
  })
15730
15756
  ]);
15731
15757
  var wsServerMessageSchema = external_exports.discriminatedUnion("t", [
15758
+ agentNotificationSchema,
15732
15759
  external_exports.object({ t: external_exports.literal("authenticated") }),
15733
15760
  external_exports.object({ t: external_exports.literal("shell-spawned"), session: external_exports.string(), term: external_exports.string() }),
15734
15761
  external_exports.object({ t: external_exports.literal("replay"), session: external_exports.string(), term: external_exports.string(), data: external_exports.string() }),
@@ -15904,6 +15931,7 @@ var remoteHostSchema = external_exports.object({
15904
15931
  });
15905
15932
  var remoteHostsSchema = external_exports.array(remoteHostSchema);
15906
15933
  var remoteServiceInfoSchema = external_exports.object({
15934
+ push_public_key: external_exports.string().max(100).optional(),
15907
15935
  providers: external_exports.array(external_exports.enum(["google", "github"])),
15908
15936
  protocol: external_exports.literal(REMOTE_PROTOCOL_VERSION)
15909
15937
  });
@@ -16096,6 +16124,37 @@ var imageUploadProgressSchema = external_exports.object({
16096
16124
  received: external_exports.number().int().nonnegative().max(IMAGE_UPLOAD_POLICY.imageBytes)
16097
16125
  });
16098
16126
 
16127
+ // ../shared/src/remote/notifications.ts
16128
+ var pushEndpointSchema = external_exports.string().max(2048).url().refine((value) => {
16129
+ let url2;
16130
+ try {
16131
+ url2 = new URL(value);
16132
+ } catch {
16133
+ return false;
16134
+ }
16135
+ const host = url2.hostname;
16136
+ return url2.protocol === "https:" && !url2.username && !url2.password && !url2.port && !url2.hash && (host === "fcm.googleapis.com" || host === "updates.push.services.mozilla.com" || host === "web.push.apple.com" || host.endsWith(".notify.windows.com"));
16137
+ }, "Unsupported push service");
16138
+ var pushSubscriptionSchema = external_exports.object({
16139
+ endpoint: pushEndpointSchema,
16140
+ expirationTime: external_exports.number().positive().nullable().optional(),
16141
+ keys: external_exports.object({
16142
+ p256dh: external_exports.string().regex(/^[A-Za-z0-9_-]{87}={0,1}$/),
16143
+ auth: external_exports.string().regex(/^[A-Za-z0-9_-]{22}={0,2}$/)
16144
+ }).strict()
16145
+ }).strict();
16146
+ var pushPreferenceSchema = external_exports.object({ subscription: pushSubscriptionSchema.nullable() }).strict();
16147
+ var pushRegistrationSchema = pushPreferenceSchema.extend({ credential: remoteSecretSchema, device: remoteIdSchema }).strict();
16148
+ var pushDispatchSchema = external_exports.object({
16149
+ credential: remoteSecretSchema,
16150
+ devices: external_exports.array(remoteIdSchema).min(1).max(64),
16151
+ id: remoteIdSchema
16152
+ }).strict();
16153
+ var pushPayloadSchema = external_exports.object({ id: remoteIdSchema, host: remoteIdSchema }).strict();
16154
+ var connectorNotificationSchema = external_exports.object({ t: external_exports.literal("notify"), id: remoteIdSchema }).strict();
16155
+ var pushDispatchResultSchema = external_exports.object({ accepted: external_exports.number().int().nonnegative(), failed: external_exports.number().int().nonnegative() }).strict();
16156
+ var pushPreferenceResultSchema = external_exports.object({ enabled: external_exports.boolean() }).strict();
16157
+
16099
16158
  // ../shared/src/node/security.ts
16100
16159
  import { createHash, randomBytes } from "node:crypto";
16101
16160
  import {
package/dist/index.js CHANGED
@@ -3925,7 +3925,7 @@ import { createInterface } from "node:readline";
3925
3925
  import { Writable } from "node:stream";
3926
3926
 
3927
3927
  // ../shared/src/protocol.ts
3928
- var PROTOCOL_VERSION = { major: 22, minor: 0 };
3928
+ var PROTOCOL_VERSION = { major: 22, minor: 4 };
3929
3929
 
3930
3930
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
3931
3931
  var external_exports = {};
@@ -18441,6 +18441,29 @@ function date4(params) {
18441
18441
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
18442
18442
  config(en_default());
18443
18443
 
18444
+ // ../shared/src/notifications.ts
18445
+ var notificationPreferencesSchema = external_exports.object({
18446
+ desktop: external_exports.boolean().default(true),
18447
+ sound: external_exports.boolean().default(false),
18448
+ when_focused: external_exports.boolean().default(true),
18449
+ muted_projects: external_exports.array(external_exports.string()).default([])
18450
+ });
18451
+ var desktopNotificationRequestSchema = external_exports.object({
18452
+ id: external_exports.string().min(1).max(128),
18453
+ title: external_exports.string().min(1).max(160),
18454
+ body: external_exports.string().min(1).max(256)
18455
+ }).strict();
18456
+ var notificationDeliverySchema = external_exports.object({
18457
+ state: external_exports.enum(["unverified", "shown", "failed", "unsupported"]),
18458
+ message: external_exports.string().max(512).nullable()
18459
+ });
18460
+ var agentNotificationSchema = external_exports.object({
18461
+ t: external_exports.literal("agent-notification"),
18462
+ id: external_exports.string().uuid(),
18463
+ session: external_exports.string().uuid(),
18464
+ reason: external_exports.enum(["waiting_input", "exited"])
18465
+ });
18466
+
18444
18467
  // ../shared/src/api/common.ts
18445
18468
  var errorResponseSchema = external_exports.object({
18446
18469
  error: external_exports.object({
@@ -18460,6 +18483,7 @@ var profileId = external_exports.string().regex(/^[0-9a-f]{10}$/);
18460
18483
  var versionResponseSchema = external_exports.object({
18461
18484
  version: external_exports.string(),
18462
18485
  /** Added by the host connector; absent on direct daemon responses and older connectors. */
18486
+ remote_notifications: external_exports.boolean().optional(),
18463
18487
  remote_image_uploads: external_exports.boolean().optional(),
18464
18488
  protocol: external_exports.object({
18465
18489
  major: external_exports.number().int().nonnegative(),
@@ -18836,6 +18860,8 @@ var sessionSchema = external_exports.object({
18836
18860
  kind: sessionKindSchema,
18837
18861
  /** Null for terminal sessions, which run a plain shell rather than an agent. */
18838
18862
  agent_type: external_exports.string().nullable(),
18863
+ /** Live foreground agent in a terminal session; icon hint only, never persisted. */
18864
+ detected_agent_type: external_exports.string().nullable().optional(),
18839
18865
  agent_session_ref: external_exports.string().nullable(),
18840
18866
  /** Durable native-conversation catalogue row; null for terminal sessions. */
18841
18867
  conversation_id: rowId.nullable().optional(),
@@ -19649,6 +19675,7 @@ var wsClientMessageSchema = external_exports.discriminatedUnion("t", [
19649
19675
  })
19650
19676
  ]);
19651
19677
  var wsServerMessageSchema = external_exports.discriminatedUnion("t", [
19678
+ agentNotificationSchema,
19652
19679
  external_exports.object({ t: external_exports.literal("authenticated") }),
19653
19680
  external_exports.object({ t: external_exports.literal("shell-spawned"), session: external_exports.string(), term: external_exports.string() }),
19654
19681
  external_exports.object({ t: external_exports.literal("replay"), session: external_exports.string(), term: external_exports.string(), data: external_exports.string() }),
@@ -19824,6 +19851,7 @@ var remoteHostSchema = external_exports.object({
19824
19851
  });
19825
19852
  var remoteHostsSchema = external_exports.array(remoteHostSchema);
19826
19853
  var remoteServiceInfoSchema = external_exports.object({
19854
+ push_public_key: external_exports.string().max(100).optional(),
19827
19855
  providers: external_exports.array(external_exports.enum(["google", "github"])),
19828
19856
  protocol: external_exports.literal(REMOTE_PROTOCOL_VERSION)
19829
19857
  });
@@ -20016,6 +20044,37 @@ var imageUploadProgressSchema = external_exports.object({
20016
20044
  received: external_exports.number().int().nonnegative().max(IMAGE_UPLOAD_POLICY.imageBytes)
20017
20045
  });
20018
20046
 
20047
+ // ../shared/src/remote/notifications.ts
20048
+ var pushEndpointSchema = external_exports.string().max(2048).url().refine((value) => {
20049
+ let url2;
20050
+ try {
20051
+ url2 = new URL(value);
20052
+ } catch {
20053
+ return false;
20054
+ }
20055
+ const host = url2.hostname;
20056
+ return url2.protocol === "https:" && !url2.username && !url2.password && !url2.port && !url2.hash && (host === "fcm.googleapis.com" || host === "updates.push.services.mozilla.com" || host === "web.push.apple.com" || host.endsWith(".notify.windows.com"));
20057
+ }, "Unsupported push service");
20058
+ var pushSubscriptionSchema = external_exports.object({
20059
+ endpoint: pushEndpointSchema,
20060
+ expirationTime: external_exports.number().positive().nullable().optional(),
20061
+ keys: external_exports.object({
20062
+ p256dh: external_exports.string().regex(/^[A-Za-z0-9_-]{87}={0,1}$/),
20063
+ auth: external_exports.string().regex(/^[A-Za-z0-9_-]{22}={0,2}$/)
20064
+ }).strict()
20065
+ }).strict();
20066
+ var pushPreferenceSchema = external_exports.object({ subscription: pushSubscriptionSchema.nullable() }).strict();
20067
+ var pushRegistrationSchema = pushPreferenceSchema.extend({ credential: remoteSecretSchema, device: remoteIdSchema }).strict();
20068
+ var pushDispatchSchema = external_exports.object({
20069
+ credential: remoteSecretSchema,
20070
+ devices: external_exports.array(remoteIdSchema).min(1).max(64),
20071
+ id: remoteIdSchema
20072
+ }).strict();
20073
+ var pushPayloadSchema = external_exports.object({ id: remoteIdSchema, host: remoteIdSchema }).strict();
20074
+ var connectorNotificationSchema = external_exports.object({ t: external_exports.literal("notify"), id: remoteIdSchema }).strict();
20075
+ var pushDispatchResultSchema = external_exports.object({ accepted: external_exports.number().int().nonnegative(), failed: external_exports.number().int().nonnegative() }).strict();
20076
+ var pushPreferenceResultSchema = external_exports.object({ enabled: external_exports.boolean() }).strict();
20077
+
20019
20078
  // src/lib/transport/local.ts
20020
20079
  import { spawn } from "node:child_process";
20021
20080
  import { copyFileSync, mkdirSync, readFileSync } from "node:fs";
@@ -20151,6 +20210,7 @@ var SshTransport = class {
20151
20210
  ...process.env,
20152
20211
  SSH_ASKPASS: this.askpassProgram,
20153
20212
  SSH_ASKPASS_REQUIRE: "force",
20213
+ PUDDLE_DESKTOP_SSH_TARGET: this.host,
20154
20214
  DISPLAY: process.env.DISPLAY ?? "puddle"
20155
20215
  };
20156
20216
  }
@@ -21553,7 +21613,7 @@ import { readFileSync as readFileSync4 } from "node:fs";
21553
21613
  import { dirname as dirname4, join as join5 } from "node:path";
21554
21614
  import { fileURLToPath as fileURLToPath2 } from "node:url";
21555
21615
  function cliVersion() {
21556
- if (true) return "0.2.18";
21616
+ if (true) return "0.2.21";
21557
21617
  const here = dirname4(fileURLToPath2(import.meta.url));
21558
21618
  for (const candidate of [
21559
21619
  join5(here, "..", "..", "package.json"),
@@ -21944,7 +22004,10 @@ var RELEASE_PROTOCOLS = {
21944
22004
  "0.2.15": { major: 22, minor: 0 },
21945
22005
  "0.2.16": { major: 22, minor: 0 },
21946
22006
  "0.2.17": { major: 22, minor: 0 },
21947
- "0.2.18": { major: 22, minor: 0 }
22007
+ "0.2.18": { major: 22, minor: 0 },
22008
+ "0.2.19": { major: 22, minor: 0 },
22009
+ "0.2.20": { major: 22, minor: 4 },
22010
+ "0.2.21": { major: 22, minor: 4 }
21948
22011
  };
21949
22012
  function validProtocol(value) {
21950
22013
  if (typeof value !== "object" || value === null) return false;
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SettingsDialog-DaxYdggs.js","assets/rolldown-runtime-QTnfLwEv.js","assets/react-CZI7_Jkm.js","assets/index-W9vnFL1i.js","assets/index-Bwl8S5Du.css","assets/dist-1iWQMdtt.js","assets/protocol-support-DM3D3Owq.js","assets/dialog-CVAp0B_q.js","assets/button-hdghxls7.js","assets/x-CZCUod6A.js","assets/createLucideIcon-DyMAgLa3.js","assets/LazyTerminal-fxF4IO4o.js","assets/switch-DMkSxGf3.js","assets/notification-delivery-rQp5tkM8.js","assets/disclosure-CWTUvRKU.js","assets/chevron-down--sjpQEHH.js","assets/dist-DWt3BCrg.js","assets/code-DRWf9a5s.js","assets/errors-0CwhraNS.js","assets/use-debounced-value-C86N-mOK.js","assets/Dashboard-BhAek_r4.js","assets/project-abbrev-Ce2YQx3q.js","assets/context-menu-fGutCa7q.js","assets/NewProjectDialog-D-hVQlA4.js","assets/ws-DsytGlkr.js","assets/Workspace-BDDSmIKE.js","assets/copy-B38GDFbv.js","assets/media-refresh-store-DTLvGgrw.js","assets/use-ui-state-2VprViGF.js","assets/preview-kind-QJSMKfUN.js","assets/debounce-B9DrqirV.js","assets/selection-actions-awCJJCSe.js","assets/drafts-B_tChlzR.js","assets/buffer-logic-BAkSBQT7.js","assets/view-state-store-rOwEBYKn.js","assets/scroll-restoration-B3J09_am.js","assets/Workspace-DdL3ODEC.css"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{K as n,N as r,S as i,T as a,U as o,a as s,at as c,c as l,g as u,h as d,i as f,m as p,n as m,nt as h,r as g,s as _,t as v,y}from"./index-W9vnFL1i.js";import{i as b,n as x,t as S}from"./dist-1iWQMdtt.js";import{$t as C,A as w,B as ee,Bt as T,C as E,D,E as O,Et as k,F as A,Gt as j,Ht as M,It as te,Jt as ne,K as re,Kt as N,M as ie,Mt as ae,N as oe,Nt as se,O as ce,P as le,Pt as ue,Qt as de,St as fe,T as pe,Ut as me,V as he,Vt as ge,W as _e,Wt as ve,Xt as ye,Y as be,Yt as xe,Z as Se,Zt as Ce,_ as we,a as Te,b as Ee,ct as De,ft as Oe,g as ke,gt as Ae,ht as je,k as Me,lt as Ne,m as Pe,mt as Fe,nt as Ie,ot as Le,p as Re,pt as ze,qt as Be,rt as Ve,st as He,tt as Ue,w as We,x as Ge,y as Ke,zt as qe}from"./protocol-support-DM3D3Owq.js";import{n as Je,t as Ye}from"./copy-B38GDFbv.js";import{a as Xe,c as Ze,d as Qe,f as $e,i as et,l as tt,m as nt,p as rt,s as it,u as at}from"./project-abbrev-Ce2YQx3q.js";import{S as P,c as ot,l as st,n as ct,s as lt,t as ut,u as dt,v as F}from"./dialog-CVAp0B_q.js";import{i as ft,t as I}from"./button-hdghxls7.js";import{c as pt,f as mt,i as ht,o as gt,s as L,u as _t}from"./LazyTerminal-fxF4IO4o.js";import{a as vt,c as yt,d as bt,f as xt,l as St,t as Ct,u as wt}from"./switch-DMkSxGf3.js";import{$ as Tt,G as Et,H as Dt,J as Ot,K as kt,Q as At,U as jt,W as Mt,X as Nt,Y as Pt,at as Ft,d as It,et as Lt,f as Rt,h as R,i as zt,it as z,m as Bt,nt as Vt,ot as B,p as Ht,q as Ut,r as Wt,rt as V,t as Gt,tt as Kt}from"./use-ui-state-2VprViGF.js";import{n as H}from"./x-CZCUod6A.js";import{t as U}from"./createLucideIcon-DyMAgLa3.js";import{a as qt,b as Jt,d as Yt,f as Xt,g as Zt,h as Qt,i as $t,l as en,m as tn,o as nn,p as rn,s as an,t as on,u as sn,v as cn,x as ln}from"./notification-delivery-rQp5tkM8.js";import{t as un}from"./NewProjectDialog-D-hVQlA4.js";import{n as W}from"./errors-0CwhraNS.js";import{t as G}from"./ws-DsytGlkr.js";var K=e(t(),1),q=m();function dn(){let[e,t]=(0,K.useState)(`Opening forwarded application…`);return(0,K.useEffect)(()=>{if(!/^\/forward\/([^/]+)\/(\d+)$/.exec(window.location.pathname)){t(`This forwarding link is invalid.`);return}let e=!0;return Je(new URL(window.location.href)).then(t=>{e&&window.location.replace(t)}).catch(()=>{e&&t(`The application is unavailable. Reconnect to Puddle and open this link again.`)}),()=>{e=!1}},[]),(0,q.jsx)(`p`,{className:`p-8 text-sm text-fg-secondary`,children:e})}var fn=class extends Ce{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new ue({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=pn(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=pn(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=pn(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=pn(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){T.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ve(t,e))}findAll(e={}){return this.getAll().filter(t=>ve(e,t))}notify(e){T.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return T.batch(()=>Promise.all(e.map(e=>e.continue().catch(N))))}};function pn(e){return e.options.scope?.id}var mn=class extends Ce{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){let r=t.queryKey,i=t.queryHash??me(r,t),a=this.get(i);return a||(a=new te({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){T.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>j(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>j(e,t)):t}notify(e){T.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){T.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){T.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},hn=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new mn,this.#t=e.mutationCache||new fn,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=ye.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=qe.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(ne(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=ge(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return T.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;T.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return T.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},r=T.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(N).catch(N)}invalidateQueries(e,t={}){return T.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=T.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(N)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(N)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(ne(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(N).catch(N)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(N).catch(N)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return qe.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(M(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{Be(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(M(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{Be(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=me(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===xe&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},gn=class extends K.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidUpdate(e){this.state.error!==null&&e.resetOn!==this.props.resetOn&&this.setState({error:null})}componentDidCatch(e,t){console.error(`Puddle: the ${this.props.scope} crashed`,e,t.componentStack)}render(){let{error:e}=this.state;return e===null?this.props.children:(0,q.jsxs)(`div`,{className:`flex h-full min-h-40 flex-col items-center justify-center gap-4 px-8 py-10 text-center`,children:[(0,q.jsxs)(`p`,{className:`text-sm text-fg`,children:[`The `,this.props.scope,` stopped rendering.`]}),(0,q.jsx)(`p`,{className:`max-w-lg font-mono text-2xs leading-relaxed text-interrupted`,children:e.message||String(e)}),(0,q.jsx)(`p`,{className:`max-w-sm text-2xs leading-relaxed text-fg-muted`,children:`Your sessions and their worktrees are on the daemon and untouched; the layout is saved. The console has the full stack.`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,q.jsx)(`button`,{type:`button`,onClick:()=>this.setState({error:null}),className:`text-2xs font-medium text-fg-gold transition-colors hover:underline`,children:`Try again`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>window.location.reload(),className:`text-2xs text-fg-muted transition-colors hover:text-fg`,children:`Reload`})]})]})}};function _n(){return(0,q.jsx)(S,{theme:(0,K.useSyncExternalStore)(_,s),position:`bottom-right`,toastOptions:{style:{background:`var(--bg-elevated)`,border:`none`,boxShadow:`0 8px 30px rgb(0 0 0 / 0.25)`,color:`var(--text-primary)`},classNames:{description:`whitespace-pre-wrap break-words font-mono text-2xs leading-snug max-h-40 overflow-y-auto`}}})}function vn(){return(0,q.jsx)(`div`,{className:`flex min-h-screen items-center justify-center bg-ground`,children:(0,q.jsxs)(`div`,{className:`flex w-full max-w-md flex-col gap-10 px-8 pb-24`,children:[(0,q.jsx)(`h1`,{className:`font-mono text-2xl font-semibold text-fg`,children:`Puddle`}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 text-sm leading-relaxed text-fg-secondary`,children:[(0,q.jsxs)(`p`,{children:[`Authorise this browser by running`,` `,(0,q.jsx)(`span`,{className:`font-mono text-accent`,children:`puddle launch`}),` in a terminal.`]}),(0,q.jsx)(`p`,{children:`Use the link it opens. Your sessions, drafts and layouts stay in place.`})]})]})})}var yn=e(c(),1),bn=`a, button, [role="button"], [role="slider"], input, select, textarea, summary, label, [onclick], .cursor-pointer`,xn=`.monaco-editor`;function Sn(e,t){return e?.closest(xn)&&!e.closest(t)?`text`:e?.closest(bn)?`interactive`:`default`}function Cn(e,t=`.no-custom-caret`){(0,K.useEffect)(()=>{let n=e.current;if(!n)return;let r=window.matchMedia(`(pointer: fine)`),i=()=>{n.style.opacity=`0`},a=e=>{if(e.pointerType===`touch`||!r.matches){i();return}n.style.transform=`translate3d(${e.clientX}px, ${e.clientY}px, 0) translate(-50%, -50%)`;let a=e.target instanceof Element?e.target:null;if(a instanceof HTMLIFrameElement){i();return}n.style.opacity=`1`;let o=a?.closest(xn),s=Sn(a,t),c=s===`text`,l=s===`interactive`,u=c;if(c&&o){let e=getComputedStyle(o);n.style.setProperty(`--custom-cursor-caret-height`,`${Math.round(Number.parseFloat(e.fontSize)*1.3)}px`)}else if(!l&&a&&!a.closest(t)&&Array.from(a.childNodes).some(e=>e.nodeType===Node.TEXT_NODE&&e.textContent?.trim())){let e=getComputedStyle(a);e.userSelect!==`none`&&(u=!0,n.style.setProperty(`--custom-cursor-caret-height`,`${Math.round(Number.parseFloat(e.fontSize)*1.3)}px`))}n.classList.toggle(`is-interactive`,l),n.classList.toggle(`is-text`,u)};return window.addEventListener(`pointermove`,a,{passive:!0}),document.documentElement.addEventListener(`pointerleave`,i),window.addEventListener(`blur`,i),()=>{window.removeEventListener(`pointermove`,a),document.documentElement.removeEventListener(`pointerleave`,i),window.removeEventListener(`blur`,i)}},[t,e])}var wn=[`top`,`right`,`bottom`,`left`];function Tn(){let e=(0,K.useRef)(null);return Cn(e),(0,q.jsx)(`div`,{ref:e,className:`custom-cursor drafting-cursor`,"aria-hidden":`true`,children:wn.map(e=>(0,q.jsx)(`span`,{className:`drafting-cursor-tick`,"data-side":e},e))})}function En(){let e=(0,K.useRef)(null);return Cn(e),(0,q.jsx)(`div`,{ref:e,className:`custom-cursor invert-cursor`,"aria-hidden":`true`})}var Dn=`h1, h2, h3, h4, h5, h6, .no-rangefinder-caret`,On=40.5,J=4.05,kn=J*Math.sqrt(3)/2;function An(){let e=[],t=[],n=On/2,r=Math.ceil(n/kn)+1,i=e=>Math.round(e*100)/100,a=e=>`M${e.map(([e,t])=>`${i(e)} ${i(t)}`).join(`L`)}Z`;for(let i=-r;i<r;i+=1){let o=n+i*kn,s=o+kn,c=(i%2+2)%2*(J/2);for(let i=-r;i<r;i+=1){let r=n+i*J+c,l=[[r+J/2,o],[r,s],[r+J,s]],u=[[r+J/2,o],[r+3*J/2,o],[r+J,s]],d=e=>{let t=e.map(([e])=>e),n=e.map(([,e])=>e);return Math.max(...t)>0&&Math.min(...t)<On&&Math.max(...n)>0&&Math.min(...n)<On};d(l)&&e.push(a(l)),d(u)&&t.push(a(u))}}return{light:e.join(``),dark:t.join(``)}}var jn=An();function Mn(){let e=(0,K.useRef)(null);return Cn(e,Dn),(0,q.jsx)(`div`,{ref:e,className:`custom-cursor rangefinder-cursor`,"aria-hidden":`true`,children:(0,q.jsxs)(`svg`,{className:`rangefinder-cursor-facets`,viewBox:`0 0 ${On} ${On}`,focusable:`false`,children:[(0,q.jsx)(`path`,{className:`rangefinder-cursor-facet-light`,d:jn.light}),(0,q.jsx)(`path`,{className:`rangefinder-cursor-facet-dark`,d:jn.dark})]})})}function Nn(){let{cursorPackage:e}=u(),t=null;switch(e){case`rangefinder`:t=(0,q.jsx)(Mn,{});break;case`drafting`:t=(0,q.jsx)(Tn,{});break;case`invert`:t=(0,q.jsx)(En,{});break;case`system`:return null}return(0,yn.createPortal)(t,document.body)}var Pn=U(`corner-down-left`,[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]),Fn=U(`layout-template`,[[`rect`,{width:`18`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`f1a2em`}],[`rect`,{width:`9`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`jqznyg`}],[`rect`,{width:`5`,height:`7`,x:`16`,y:`14`,rx:`1`,key:`q5h2i8`}]]),In=U(`monitor-cog`,[[`path`,{d:`M12 17v4`,key:`1riwvh`}],[`path`,{d:`m14.305 7.53.923-.382`,key:`1mlnsw`}],[`path`,{d:`m15.228 4.852-.923-.383`,key:`82mpwg`}],[`path`,{d:`m16.852 3.228-.383-.924`,key:`ln4sir`}],[`path`,{d:`m16.852 8.772-.383.923`,key:`1dejw0`}],[`path`,{d:`m19.148 3.228.383-.924`,key:`192kgf`}],[`path`,{d:`m19.53 9.696-.382-.924`,key:`fiavlr`}],[`path`,{d:`m20.772 4.852.924-.383`,key:`1j8mgp`}],[`path`,{d:`m20.772 7.148.924.383`,key:`zix9be`}],[`path`,{d:`M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7`,key:`1tnzv8`}],[`path`,{d:`M8 21h8`,key:`1ev6f3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}]]),Ln=U(`notebook-pen`,[[`path`,{d:`M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4`,key:`re6nr2`}],[`path`,{d:`M2 6h4`,key:`aawbzj`}],[`path`,{d:`M2 10h4`,key:`l0bgd4`}],[`path`,{d:`M2 14h4`,key:`1gsvsf`}],[`path`,{d:`M2 18h4`,key:`1bu2t1`}],[`path`,{d:`M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z`,key:`pqwjuv`}]]),Rn=U(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),zn=U(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),Bn=U(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]);function Vn(){let e=Fe(),t=he(),[r,i]=(0,K.useState)(``),[a,o]=(0,K.useState)(n),s=()=>{r.trim()&&t.mutate({name:r.trim(),branch_prefix:a.trim()},{onSuccess:e=>pe(e.id)})},c=(e.data?.length??0)>0;return(0,q.jsx)(`div`,{className:`flex min-h-screen items-center justify-center bg-ground`,children:(0,q.jsxs)(`div`,{className:`flex w-full max-w-md flex-col gap-10 px-8 pb-16`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsx)(`h1`,{className:`font-mono text-2xl font-semibold text-fg`,children:`Puddle`}),(0,q.jsx)(`p`,{className:`text-sm text-fg-secondary`,children:`Who is working?`})]}),c&&(0,q.jsx)(`div`,{className:`flex flex-col`,children:e.data.map(e=>(0,q.jsxs)(`button`,{onClick:()=>pe(e.id),className:`flex items-center gap-3 rounded-md px-3 py-2.5 text-left transition-colors hover:bg-elevated active:bg-border/70`,children:[(0,q.jsx)(Qt,{icon:e.icon,colour:e.icon_colour,className:`size-5`}),(0,q.jsx)(`span`,{className:H(`text-base`,Zt(e.icon_colour)||`text-fg`),children:e.name}),e.branch_prefix&&(0,q.jsxs)(`span`,{className:`ml-auto text-2xs text-fg-muted`,children:[e.branch_prefix,`…`]})]},e.id))}),(0,q.jsxs)(`form`,{className:`flex flex-col gap-5`,onSubmit:e=>{e.preventDefault(),s()},children:[c&&(0,q.jsx)(`p`,{className:`text-2xs font-medium uppercase tracking-wide text-fg-muted`,children:`or create a profile`}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,q.jsx)(gt,{htmlFor:`profile-name`,children:`Name`}),(0,q.jsx)(L,{id:`profile-name`,placeholder:`e.g. alice`,value:r,onChange:e=>i(e.target.value),className:`h-10`,autoFocus:!c})]}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,q.jsx)(gt,{htmlFor:`branch-prefix`,children:`Branch prefix`}),(0,q.jsx)(L,{id:`branch-prefix`,placeholder:`no prefix`,value:a,onChange:e=>o(e.target.value),className:`h-10`})]}),t.error&&(0,q.jsx)(`p`,{className:`text-xs text-danger`,children:t.error.message}),(0,q.jsx)(I,{type:`submit`,size:`lg`,className:`self-start px-6`,disabled:!r.trim()||t.isPending,children:`Create profile`})]})]})})}var Hn=1,Un=.9,Wn=.8,Gn=.17,Kn=.1,qn=.999,Jn=.9999,Yn=.99,Xn=/[\\\/_+.#"@\[\(\{&]/,Zn=/[\\\/_+.#"@\[\(\{&]/g,Qn=/[\s-]/,$n=/[\s-]/g;function er(e,t,n,r,i,a,o){if(a===t.length)return i===e.length?Hn:Yn;var s=`${i},${a}`;if(o[s]!==void 0)return o[s];for(var c=r.charAt(a),l=n.indexOf(c,i),u=0,d,f,p,m;l>=0;)d=er(e,t,n,r,l+1,a+1,o),d>u&&(l===i?d*=Hn:Xn.test(e.charAt(l-1))?(d*=Wn,p=e.slice(i,l-1).match(Zn),p&&i>0&&(d*=qn**+p.length)):Qn.test(e.charAt(l-1))?(d*=Un,m=e.slice(i,l-1).match($n),m&&i>0&&(d*=qn**+m.length)):(d*=Gn,i>0&&(d*=qn**+(l-i))),e.charAt(l)!==t.charAt(a)&&(d*=Jn)),(d<Kn&&n.charAt(l-1)===r.charAt(a+1)||r.charAt(a+1)===r.charAt(a)&&n.charAt(l-1)!==r.charAt(a))&&(f=er(e,t,n,r,l+1,a+2,o),f*Kn>d&&(d=f*Kn)),d>u&&(u=d),l=n.indexOf(c,l+1);return o[s]=u,u}function tr(e){return e.toLowerCase().replace($n,` `)}function nr(e,t,n){return e=n&&n.length>0?`${e+` `+n.join(` `)}`:e,er(e,t,tr(e),tr(t),0,0,{})}var rr=`[cmdk-group=""]`,ir=`[cmdk-group-items=""]`,ar=`[cmdk-group-heading=""]`,or=`[cmdk-item=""]`,sr=`${or}:not([aria-disabled="true"])`,cr=`cmdk-item-select`,Y=`data-value`,lr=(e,t,n)=>nr(e,t,n),ur=K.createContext(void 0),dr=()=>K.useContext(ur),fr=K.createContext(void 0),pr=()=>K.useContext(fr),mr=K.createContext(void 0),hr=K.forwardRef((e,t)=>{let n=Q(()=>({search:``,value:e.value??e.defaultValue??``,selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}})),r=Q(()=>new Set),i=Q(()=>new Map),a=Q(()=>new Map),o=Q(()=>new Set),s=Er(e),{label:c,children:l,value:u,onValueChange:d,filter:f,shouldFilter:p,loop:m,disablePointerSelection:h=!1,vimBindings:g=!0,..._}=e,v=F(),y=F(),b=F(),x=K.useRef(null),S=Or();Z(()=>{if(u!==void 0){let e=u.trim();n.current.value=e,C.emit()}},[u]),Z(()=>{S(6,O)},[]);let C=K.useMemo(()=>({subscribe:e=>(o.current.add(e),()=>o.current.delete(e)),snapshot:()=>n.current,setState:(e,t,r)=>{var i,a,o;if(!Object.is(n.current[e],t)){if(n.current[e]=t,e===`search`)D(),T(),S(1,E);else if(e===`value`){if(document.activeElement.hasAttribute(`cmdk-input`)||document.activeElement.hasAttribute(`cmdk-root`)){let e=document.getElementById(b);e?e.focus():(i=document.getElementById(v))==null||i.focus()}if(S(7,()=>{n.current.selectedItemId=k()?.id,C.emit()}),r||S(5,O),s.current?.value!==void 0){let e=t??``;(o=(a=s.current).onValueChange)==null||o.call(a,e);return}}C.emit()}},emit:()=>{o.current.forEach(e=>e())}}),[]),w=K.useMemo(()=>({value:(e,t,r)=>{t!==a.current.get(e)?.value&&(a.current.set(e,{value:t,keywords:r}),n.current.filtered.items.set(e,ee(t,r)),S(2,()=>{T(),C.emit()}))},item:(e,t)=>(r.current.add(e),t&&(i.current.has(t)?i.current.get(t).add(e):i.current.set(t,new Set([e]))),S(3,()=>{D(),T(),n.current.value||E(),C.emit()}),()=>{a.current.delete(e),r.current.delete(e),n.current.filtered.items.delete(e);let t=k();S(4,()=>{D(),t?.getAttribute(`id`)===e&&E(),C.emit()})}),group:e=>(i.current.has(e)||i.current.set(e,new Set),()=>{a.current.delete(e),i.current.delete(e)}),filter:()=>s.current.shouldFilter,label:c||e[`aria-label`],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:v,inputId:b,labelId:y,listInnerRef:x}),[]);function ee(e,t){let r=s.current?.filter??lr;return e?r(e,n.current.search,t):0}function T(){if(!n.current.search||s.current.shouldFilter===!1)return;let e=n.current.filtered.items,t=[];n.current.filtered.groups.forEach(n=>{let r=i.current.get(n),a=0;r.forEach(t=>{let n=e.get(t);a=Math.max(n,a)}),t.push([n,a])});let r=x.current;A().sort((t,n)=>{let r=t.getAttribute(`id`),i=n.getAttribute(`id`);return(e.get(i)??0)-(e.get(r)??0)}).forEach(e=>{let t=e.closest(ir);t?t.appendChild(e.parentElement===t?e:e.closest(`${ir} > *`)):r.appendChild(e.parentElement===r?e:e.closest(`${ir} > *`))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{let t=x.current?.querySelector(`${rr}[${Y}="${encodeURIComponent(e[0])}"]`);t?.parentElement.appendChild(t)})}function E(){let e=A().find(e=>e.getAttribute(`aria-disabled`)!==`true`)?.getAttribute(Y);C.setState(`value`,e||void 0)}function D(){if(!n.current.search||s.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let t of r.current){let r=ee(a.current.get(t)?.value??``,a.current.get(t)?.keywords??[]);n.current.filtered.items.set(t,r),r>0&&e++}for(let[e,t]of i.current)for(let r of t)if(n.current.filtered.items.get(r)>0){n.current.filtered.groups.add(e);break}n.current.filtered.count=e}function O(){var e;let t=k();t&&(t.parentElement?.firstChild===t&&((e=t.closest(rr)?.querySelector(ar))==null||e.scrollIntoView({block:`nearest`})),t.scrollIntoView({block:`nearest`}))}function k(){return x.current?.querySelector(`${or}[aria-selected="true"]`)}function A(){return Array.from(x.current?.querySelectorAll(sr)||[])}function j(e){let t=A()[e];t&&C.setState(`value`,t.getAttribute(Y))}function M(e){var t;let n=k(),r=A(),i=r.findIndex(e=>e===n),a=r[i+e];(t=s.current)!=null&&t.loop&&(a=i+e<0?r[r.length-1]:i+e===r.length?r[0]:r[i+e]),a&&C.setState(`value`,a.getAttribute(Y))}function te(e){let t=k()?.closest(rr),n;for(;t&&!n;)t=e>0?wr(t,rr):Tr(t,rr),n=t?.querySelector(sr);n?C.setState(`value`,n.getAttribute(Y)):M(e)}let ne=()=>j(A().length-1),re=e=>{e.preventDefault(),e.metaKey?ne():e.altKey?te(1):M(1)},N=e=>{e.preventDefault(),e.metaKey?j(0):e.altKey?te(-1):M(-1)};return K.createElement(P.div,{ref:t,tabIndex:-1,..._,"cmdk-root":``,onKeyDown:e=>{var t;(t=_.onKeyDown)==null||t.call(_,e);let n=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||n))switch(e.key){case`n`:case`j`:g&&e.ctrlKey&&re(e);break;case`ArrowDown`:re(e);break;case`p`:case`k`:g&&e.ctrlKey&&N(e);break;case`ArrowUp`:N(e);break;case`Home`:e.preventDefault(),j(0);break;case`End`:e.preventDefault(),ne();break;case`Enter`:{e.preventDefault();let t=k();if(t){let e=new Event(cr);t.dispatchEvent(e)}}}}},K.createElement(`label`,{"cmdk-label":``,htmlFor:w.inputId,id:w.labelId,style:jr},c),Ar(e,e=>K.createElement(fr.Provider,{value:C},K.createElement(ur.Provider,{value:w},e))))}),gr=K.forwardRef((e,t)=>{let n=F(),r=K.useRef(null),i=K.useContext(mr),a=dr(),o=Er(e),s=o.current?.forceMount??i?.forceMount;Z(()=>{if(!s)return a.item(n,i?.id)},[s]);let c=Dr(n,r,[e.value,e.children,r],e.keywords),l=pr(),u=$(e=>e.value&&e.value===c.current),d=$(e=>s||a.filter()===!1?!0:!e.search||e.filtered.items.get(n)>0);K.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(cr,f),()=>t.removeEventListener(cr,f)},[d,e.onSelect,e.disabled]);function f(){var e,t;p(),(t=(e=o.current).onSelect)==null||t.call(e,c.current)}function p(){l.setState(`value`,c.current,!0)}if(!d)return null;let{disabled:m,value:h,onSelect:g,forceMount:_,keywords:v,...y}=e;return K.createElement(P.div,{ref:ft(r,t),...y,id:n,"cmdk-item":``,role:`option`,"aria-disabled":!!m,"aria-selected":!!u,"data-disabled":!!m,"data-selected":!!u,onPointerMove:m||a.getDisablePointerSelection()?void 0:p,onClick:m?void 0:f},e.children)}),_r=K.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:i,...a}=e,o=F(),s=K.useRef(null),c=K.useRef(null),l=F(),u=dr(),d=$(e=>i||u.filter()===!1?!0:!e.search||e.filtered.groups.has(o));Z(()=>u.group(o),[]),Dr(o,s,[e.value,e.heading,c]);let f=K.useMemo(()=>({id:o,forceMount:i}),[i]);return K.createElement(P.div,{ref:ft(s,t),...a,"cmdk-group":``,role:`presentation`,hidden:!d||void 0},n&&K.createElement(`div`,{ref:c,"cmdk-group-heading":``,"aria-hidden":!0,id:l},n),Ar(e,e=>K.createElement(`div`,{"cmdk-group-items":``,role:`group`,"aria-labelledby":n?l:void 0},K.createElement(mr.Provider,{value:f},e))))}),vr=K.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,i=K.useRef(null),a=$(e=>!e.search);return!n&&!a?null:K.createElement(P.div,{ref:ft(i,t),...r,"cmdk-separator":``,role:`separator`})}),yr=K.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,i=e.value!=null,a=pr(),o=$(e=>e.search),s=$(e=>e.selectedItemId),c=dr();return K.useEffect(()=>{e.value!=null&&a.setState(`search`,e.value)},[e.value]),K.createElement(P.input,{ref:t,...r,"cmdk-input":``,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,"aria-autocomplete":`list`,role:`combobox`,"aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":s,id:c.inputId,type:`text`,value:i?e.value:o,onChange:e=>{i||a.setState(`search`,e.target.value),n?.(e.target.value)}})}),br=K.forwardRef((e,t)=>{let{children:n,label:r=`Suggestions`,...i}=e,a=K.useRef(null),o=K.useRef(null),s=$(e=>e.selectedItemId),c=dr();return K.useEffect(()=>{if(o.current&&a.current){let e=o.current,t=a.current,n,r=new ResizeObserver(()=>{n=requestAnimationFrame(()=>{let n=e.offsetHeight;t.style.setProperty(`--cmdk-list-height`,n.toFixed(1)+`px`)})});return r.observe(e),()=>{cancelAnimationFrame(n),r.unobserve(e)}}},[]),K.createElement(P.div,{ref:ft(a,t),...i,"cmdk-list":``,role:`listbox`,tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:c.listId},Ar(e,e=>K.createElement(`div`,{ref:ft(o,c.listInnerRef),"cmdk-list-sizer":``},e)))}),xr=K.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:i,contentClassName:a,container:o,...s}=e;return K.createElement(lt,{open:n,onOpenChange:r},K.createElement(dt,{container:o},K.createElement(st,{"cmdk-overlay":``,className:i}),K.createElement(ot,{"aria-label":e.label,"cmdk-dialog":``,className:a},K.createElement(hr,{ref:t,...s}))))}),Sr=K.forwardRef((e,t)=>$(e=>e.filtered.count===0)?K.createElement(P.div,{ref:t,...e,"cmdk-empty":``,role:`presentation`}):null),Cr=K.forwardRef((e,t)=>{let{progress:n,children:r,label:i=`Loading...`,...a}=e;return K.createElement(P.div,{ref:t,...a,"cmdk-loading":``,role:`progressbar`,"aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":i},Ar(e,e=>K.createElement(`div`,{"aria-hidden":!0},e)))}),X=Object.assign(hr,{List:br,Item:gr,Input:yr,Group:_r,Separator:vr,Dialog:xr,Empty:Sr,Loading:Cr});function wr(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function Tr(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function Er(e){let t=K.useRef(e);return Z(()=>{t.current=e}),t}var Z=typeof window>`u`?K.useEffect:K.useLayoutEffect;function Q(e){let t=K.useRef();return t.current===void 0&&(t.current=e()),t}function $(e){let t=pr(),n=()=>e(t.snapshot());return K.useSyncExternalStore(t.subscribe,n,n)}function Dr(e,t,n,r=[]){let i=K.useRef(),a=dr();return Z(()=>{var o;let s=(()=>{for(let e of n){if(typeof e==`string`)return e.trim();if(typeof e==`object`&&`current`in e)return e.current?e.current.textContent?.trim():i.current}})(),c=r.map(e=>e.trim());a.value(e,s,c),(o=t.current)==null||o.setAttribute(Y,s),i.current=s}),i}var Or=()=>{let[e,t]=K.useState(),n=Q(()=>new Map);return Z(()=>{n.current.forEach(e=>e()),n.current=new Map},[e]),(e,r)=>{n.current.set(e,r),t({})}};function kr(e){let t=e.type;return typeof t==`function`?t(e.props):`render`in t?t.render(e.props):e}function Ar({asChild:e,children:t},n){return e&&K.isValidElement(t)?K.cloneElement(kr(t),{ref:t.ref},n(t.props.children)):n(t)}var jr={position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`};function Mr({className:e,...t}){return(0,q.jsx)(X,{className:H(`flex size-full flex-col overflow-hidden rounded-lg bg-elevated`,e),...t})}function Nr({open:e,onOpenChange:t,children:n}){return(0,q.jsx)(ut,{open:e,onOpenChange:t,children:(0,q.jsx)(ct,{className:`max-w-lg overflow-hidden p-0 [&>button]:hidden`,children:(0,q.jsx)(Mr,{loop:!0,children:n})})})}function Pr({className:e,...t}){return(0,q.jsxs)(`div`,{className:`flex items-center gap-2 px-3 pt-1`,children:[(0,q.jsx)(Vt,{className:`size-4 shrink-0 text-fg-muted`}),(0,q.jsx)(X.Input,{className:H(`flex h-10 w-full bg-transparent text-sm text-fg outline-none placeholder:text-fg-muted`,e),...t})]})}function Fr({className:e,...t}){return(0,q.jsx)(X.List,{className:H(`max-h-72 overflow-y-auto p-1`,e),...t})}function Ir(e){return(0,q.jsx)(X.Empty,{className:`py-6 text-center text-sm text-fg-muted`,...e})}function Lr({className:e,...t}){return(0,q.jsx)(X.Group,{className:H(`overflow-hidden [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-2xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:uppercase [&_[cmdk-group-heading]]:tracking-wide [&_[cmdk-group-heading]]:text-fg-muted`,e),...t})}function Rr({className:e,...t}){return(0,q.jsx)(X.Item,{className:H(mt,_t,`[&_svg]:size-3.5 [&_svg]:text-fg-muted data-[selected=true]:[&_svg]:text-action-ink`,e),...t})}function zr({className:e,...t}){return(0,q.jsx)(`span`,{className:H(`ml-auto font-mono text-2xs tracking-widest text-fg-muted`,e),...t})}var Br=new class{transport;reload;pause;phase=`idle`;pending=null;constructor(e=fetch,t=()=>window.location.reload(),n=e=>new Promise(t=>setTimeout(t,e))){this.transport=e,this.reload=t,this.pause=n}refresh(e=12e4){return this.pending||=this.run(e).finally(()=>{this.pending=null}),this.pending}async run(e){this.phase=`requesting`;let t={authorization:`Bearer ${y.get()??``}`,"content-type":`application/json`};try{let n=await this.transport(`/cockpit/refresh`,{method:`POST`,headers:t,signal:AbortSignal.timeout(1e4),body:JSON.stringify({refreshId:crypto.randomUUID()})});if(n.status!==202)throw Error(`refresh rejected`);let i=r.parse(await n.json());this.phase=`waiting`;let o=Date.now()+e;for(;Date.now()<o;){await this.pause(1e3);try{let e=await this.transport(`/cockpit/status`,{headers:t,cache:`no-store`,signal:AbortSignal.timeout(3e3)});if(!e.ok)continue;let n=a.parse(await e.json());if(n.instance===i.instance||n.refreshId!==i.refreshId||n.upstream!==`ready`)continue;return this.phase=`complete`,this.reload(),!0}catch{}}}catch{}return this.phase=`failed`,!1}},Vr=null;function Hr(e){return Vr=e,()=>{Vr===e&&(Vr=null)}}function Ur(){Vr?.()}var Wr=new Set;function Gr(){return[...Wr].flatMap(e=>e())}function Kr({onNewSession:e,onNewProject:t}){let[n,r]=(0,K.useState)(!1),[i,a]=(0,K.useState)(`commands`),[o,s]=(0,K.useState)(``),[c,l]=(0,K.useState)(null),[u,d]=(0,K.useState)(!1),f=rt(),p=nt(),m=O(),h=p.id,_=Ae(m??void 0),v=k(h),y=Pt();(0,K.useEffect)(()=>Ee(`palette.toggle`,()=>r(e=>!e)),[]),(0,K.useEffect)(()=>Tt(()=>r(!0)),[]),(0,K.useEffect)(()=>{n||(a(`commands`),s(``),l(null),d(!1))},[n]);let b=(0,K.useMemo)(()=>{let n=[];for(let e of _.data??[])n.push({id:`project-${e.id}`,group:`Projects`,label:e.name,icon:Xe,keywords:`switch project open`,run:()=>void f(`/project/${e.id}`)});for(let e of v.data??[])e.status!==`archived`&&n.push({id:`session-${e.id}`,group:`Sessions`,label:y(e),icon:et,keywords:`switch session ${e.branch}`,run:()=>void f(`/project/${e.project_id}/session/${e.id}`)});return h!==void 0&&e&&n.push({id:`new-agent`,group:`Actions`,label:`New agent`,icon:xt,keywords:`new agent create start session`,run:()=>e()},{id:`new-terminal`,group:`Actions`,label:`New terminal`,icon:et,keywords:`new terminal create start shell session`,run:()=>e({kind:`terminal`})}),h!==void 0&&n.push({id:`open-path`,group:`Actions`,label:`Open path`,icon:Xe,keywords:`open path file directory folder editor tree browse absolute relative home`,closeOnRun:!1,run:()=>{s(``),l(null),a(`path`)}}),t&&n.push({id:`new-project`,group:`Actions`,label:`New project`,icon:bt,keywords:`new project open create repository repo workspace`,run:t}),n.push({id:`theme-dark`,group:`Theme`,label:`Switch theme: dark`,icon:Jt,keywords:`switch theme dark appearance`,run:()=>void g(`dark`)},{id:`theme-light`,group:`Theme`,label:`Switch theme: light`,icon:cn,keywords:`switch theme light appearance`,run:()=>void g(`light`)},{id:`theme-system`,group:`Theme`,label:`Switch theme: system`,icon:In,keywords:`switch theme system appearance`,run:()=>void g(`system`)},{id:`open-settings`,group:`Actions`,label:`Settings`,icon:Bn,keywords:`open settings preferences options configure`,run:()=>vt()},{id:`switch-profile`,group:`Actions`,label:`Switch profile`,icon:yt,keywords:`switch profile identity user change`,run:()=>We.set(null)},{id:`refresh-connection`,group:`Actions`,label:`Refresh connection`,icon:wt,keywords:`refresh connection reconnect restart cockpit tunnel ssh daemon`,run:()=>Ur()}),[...n,...Gr()]},[_.data,v.data,h,f,e,t,y]),x=(0,K.useMemo)(()=>{let e=new Map;for(let t of b){let n=e.get(t.group)??[];n.push(t),e.set(t.group,n)}return[...e.entries()]},[b]),S=async()=>{let e=o.trim();if(!(e===``||u)){d(!0),l(null);try{await Nt(e),r(!1)}catch(e){l(e instanceof Error?e.message:`Could not open that path.`)}finally{d(!1)}}};return(0,q.jsxs)(Nr,{open:n,onOpenChange:r,children:[(0,q.jsx)(Pr,{value:o,onValueChange:e=>{s(e),l(null)},placeholder:i===`path`?`Enter a path…`:`Type a command or search…`,onKeyDown:e=>{i===`path`&&(e.key===`Enter`?(e.preventDefault(),e.stopPropagation(),S()):e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),a(`commands`),s(``),l(null)))}}),i===`path`?(0,q.jsx)(Fr,{children:(0,q.jsxs)(`div`,{className:`px-3 py-3 text-xs text-fg-muted`,children:[(0,q.jsx)(`p`,{children:`Relative paths start from the bound worktree or project. Absolute and ~ paths work too.`}),(0,q.jsx)(`p`,{className:c?`mt-2 text-danger`:`mt-2`,"aria-live":`polite`,children:c??(u?`Opening…`:`Press Enter to open.`)})]})}):(0,q.jsxs)(Fr,{children:[(0,q.jsx)(Ir,{children:`Nothing matches.`}),x.map(([e,t])=>(0,q.jsx)(Lr,{heading:e,children:t.map(e=>{let t=e.icon;return(0,q.jsxs)(Rr,{value:`${e.label} ${e.keywords??``}`,onSelect:()=>{e.closeOnRun!==!1&&r(!1),e.run()},children:[t&&(0,q.jsx)(t,{}),e.label,e.shortcut&&(0,q.jsx)(zr,{children:e.shortcut})]},e.id)})},e))]})]})}function qr(){let e=document.activeElement;return e instanceof Element&&e.closest(`.xterm`)!==null}function Jr(){let e=document.activeElement;return e instanceof Element&&e.closest(`.monaco-editor`)!==null}function Yr(){let e=ze(O()??void 0).data?.hotkeys;return(0,K.useEffect)(()=>{Ge(e&&typeof e==`object`?e:void 0)},[e]),(0,K.useEffect)(()=>Ee(`window.close`,()=>{let e=de();e?.closeWindow?e.closeWindow():window.close()}),[]),(0,K.useEffect)(()=>{let e=e=>{let t=Pe(e);if(!t)return;let n=Re(t);if(!n)return;let r=ke(n);if(!r||!Ke(r,Jr()))return;let i=we(n);i&&(e.preventDefault(),e.stopPropagation(),i())},t=e=>{let t=Pe(e);if(!t)return;let n=Re(t);if(!n)return;let r=ke(n);if(!r||r.editor&&Jr()||r.deferInTerminal&&qr())return;let i=we(n);i&&(e.preventDefault(),i())};return window.addEventListener(`keydown`,e,!0),window.addEventListener(`keydown`,t),()=>{window.removeEventListener(`keydown`,e,!0),window.removeEventListener(`keydown`,t)}},[]),null}var Xr=4e3;function Zr(){let[e,t]=(0,K.useState)(`hidden`),n=(0,K.useRef)(e);n.current=e,(0,K.useEffect)(()=>{let e=null,r=G.onConnectionChange(r=>{if(r){e!==null&&clearTimeout(e),e=null,n.current===`lost`&&t(`hidden`);return}e!==null||n.current!==`hidden`||(e=setTimeout(()=>{e=null,n.current===`hidden`&&t(`lost`)},Xr))});return()=>{r(),e!==null&&clearTimeout(e)}},[]);let r=(0,K.useCallback)(async()=>{n.current!==`refreshing`&&(t(`refreshing`),await Br.refresh()||(x.error(`The cockpit has not come back — it may need a terminal (ssh re-auth): puddle refresh`),t(G.isConnected()?`hidden`:`lost`)))},[]);return(0,K.useEffect)(()=>Hr(()=>void r()),[r]),e===`hidden`?null:(0,q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-3 bg-elevated px-3 py-2`,children:[(0,q.jsx)(`span`,{className:`text-xs text-fg-secondary`,children:e===`refreshing`?`Restarting the cockpit.`:`Connection to the daemon lost.`}),e===`lost`&&(0,q.jsxs)(I,{size:`sm`,className:`ml-auto`,onClick:()=>void r(),children:[(0,q.jsx)(wt,{}),`Refresh connection`]})]})}function Qr({label:e,percentage:t,hint:n}){let r=Math.max(0,Math.min(100,t));return(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`w-24 shrink-0 truncate text-2xs text-fg-muted`,title:e,children:e}),(0,q.jsx)(`span`,{className:`relative h-1.5 min-w-0 flex-1 overflow-hidden rounded-full bg-border`,children:(0,q.jsx)(`span`,{className:`absolute inset-y-0 left-0 rounded-full ${r>=90?`bg-danger`:r>=75?`bg-warning`:`bg-action`}`,style:{width:`${r}%`}})}),(0,q.jsxs)(`span`,{className:`shrink-0 text-2xs tabular-nums text-fg-muted`,children:[Math.round(r),`%`,n?` · ${n}`:``]})]})}function $r(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function ei(e){if(e===null)return`never`;let t=new Date(e).getTime(),n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<60)return`just now`;let r=Math.round(n/60);if(r<60)return`${r}m ago`;let i=Math.round(r/60);return i<24?`${i}h ago`:`${Math.round(i/24)}d ago`}function ti({account:e,onLogin:t,onStartSession:n,installed:r=!0}){let i=ie(e.id),a=e.logged_in?n:r?t:null,o=i.data?.subscription;return(0,q.jsxs)(`div`,{className:`rounded-md px-2 py-2 transition-colors hover:bg-elevated`,children:[(0,q.jsxs)(`button`,{type:`button`,disabled:a===null,onClick:()=>a?.(),className:`flex w-full items-center gap-3 text-left disabled:cursor-default`,children:[(0,q.jsx)(`span`,{className:`size-2 shrink-0 rounded-full ${e.logged_in?`bg-success`:`bg-idle`}`,"aria-hidden":!0}),(0,q.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,q.jsx)(`span`,{className:`block truncate text-sm text-fg`,children:e.label}),(0,q.jsxs)(`span`,{className:`block text-2xs text-fg-muted`,children:[e.logged_in?`logged in`:`logged out`,i.data&&(0,q.jsxs)(q.Fragment,{children:[` · `,i.data.session_count,` session`,i.data.session_count===1?``:`s`,i.data.active_session_count>0&&` (${i.data.active_session_count} active)`,` · `,`last `,ei(i.data.last_activity_at)]})]}),i.data?.agent_usage&&(0,q.jsxs)(`span`,{className:`block text-2xs text-fg-muted`,children:[$r(i.data.agent_usage.input_tokens),` in ·`,` `,$r(i.data.agent_usage.output_tokens),` out ·`,` `,$r(i.data.agent_usage.cache_read_input_tokens),` cached ·`,` `,i.data.agent_usage.message_count,` msgs`]}),i.data?.live_usage?.context_used_percentage!=null&&(0,q.jsx)(`span`,{className:`mt-1 block`,children:(0,q.jsx)(Qr,{label:`context`,percentage:i.data.live_usage.context_used_percentage})})]}),(0,q.jsx)(`span`,{className:`shrink-0 text-2xs text-fg-muted`,children:r?e.logged_in?n?`new agent`:``:(0,q.jsxs)(`span`,{className:`flex items-center gap-1 text-warning`,children:[(0,q.jsx)(ln,{className:`size-3`}),`sign in`]}):`unavailable`})]}),o!=null&&o.windows.length>0&&(0,q.jsx)(`div`,{className:`mt-2 flex flex-col gap-1 pl-5`,children:o.windows.map(e=>(0,q.jsx)(Qr,{label:e.label,percentage:e.used_percentage,hint:e.resets==null?void 0:`resets ${e.resets}`},e.key))})]})}function ni(){let[e,t]=(0,K.useState)(!1),[n,r]=(0,K.useState)(!1),i=O(),a=Fe(),o=De(),s=a.data?.find(e=>e.id===i),c=oe(i??void 0),l=le(),u=Ve(),{open:d,handler:f}=Ot(),[p,m]=(0,K.useState)(null),h=e=>u.mutate(e.id,{onSuccess:t=>m({stream:t.stream,label:`${e.agent_type}/${e.label}`}),onError:e=>W(e)}),g=e=>{t(!1),d({accountId:e.id})};return n&&s?(0,q.jsxs)(`div`,{className:`flex h-8 items-center gap-2 px-3`,children:[(0,q.jsx)(Qt,{icon:s.icon,colour:s.icon_colour}),(0,q.jsx)(Lt,{initial:s.name,maxLength:100,className:H(`w-32 text-sm`,Zt(s.icon_colour)),onCommit:e=>{r(!1);let t=e.trim();!i||!t||t===s?.name||o.mutate({id:i,name:t},{onError:e=>W(e)})},onCancel:()=>r(!1)})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(Xt,{open:e,onOpenChange:t,children:[(0,q.jsxs)(V,{children:[(0,q.jsx)(B,{asChild:!0,children:(0,q.jsx)(tn,{asChild:!0,children:(0,q.jsxs)(I,{variant:`ghost`,size:`sm`,className:`font-sans compact:h-7 compact:px-1.5`,children:[(0,q.jsx)(Qt,{icon:s?.icon,colour:s?.icon_colour}),(0,q.jsx)(`span`,{className:Zt(s?.icon_colour),...Kt(()=>{t(!1),r(!0)}),children:s?.name??`…`})]})})}),(0,q.jsx)(z,{children:`Profile`})]}),(0,q.jsxs)(rn,{className:`w-[28rem] max-w-[calc(100vw-1rem)]`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(l.data??[]).map(e=>{let t=c.data?.filter(t=>t.agent_type===e.id)??[];if(t.length===0)return null;let n=e.available!==!1;return(0,q.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,q.jsxs)(`span`,{className:`px-2 text-2xs font-medium uppercase tracking-wide text-fg-muted`,children:[e.display_name,!n&&(0,q.jsxs)(`span`,{className:`ml-2 normal-case tracking-normal text-fg-muted`,children:[`not installed — no `,e.binary??e.id,` on PATH`]})]}),t.map(e=>(0,q.jsx)(ti,{account:e,onLogin:()=>h(e),onStartSession:f&&n?()=>g(e):null,installed:n},e.id))]},e.id)}),c.data?.length===0&&(0,q.jsx)(`p`,{className:`px-2 text-sm text-fg-muted`,children:`No accounts yet — add one in settings.`})]}),(0,q.jsxs)(`div`,{className:`mt-4 flex items-center gap-2`,children:[(0,q.jsxs)(I,{variant:`ghost`,size:`sm`,onClick:()=>{t(!1),vt(`accounts`)},children:[(0,q.jsx)(bt,{}),`Add account`]}),(0,q.jsxs)(I,{variant:`ghost`,size:`sm`,className:`ml-auto`,onClick:()=>{t(!1),We.set(null)},children:[(0,q.jsx)(zn,{}),`Switch profile`]})]})]})]}),p&&(0,q.jsx)(Yt,{stream:p.stream,label:p.label,onClose:()=>m(null)})]})}var ri=`desktop-update`;function ii(){let e=(0,K.useRef)(null);return(0,K.useEffect)(()=>{let t=de();if(t?.updateReady===void 0||t.onUpdateReady===void 0)return;let n=t=>{e.current!==t&&(e.current=t,x(`Puddle ${t} is downloaded and ready.`,{id:ri,duration:1/0,closeButton:!0,action:{label:`Restart to update`,onClick:()=>{de()?.installUpdate?.(),x.loading(`Restarting into Puddle ${t}…`,{id:`${ri}-restarting`,duration:1/0})}}}))};return t.updateReady().then(e=>{e!==null&&n(e)}),t.onUpdateReady(n)},[]),null}function ai(){let e=O(),t=Fe().data?.find(t=>t.id===e),n=ze(e??void 0),r=fe(e??void 0,void 0),i=u(),a=nn(),o=an(),s=Ne(e??``),c=De(),f=_e(),[p,m]=(0,K.useReducer)(e=>e+1,0);(0,K.useEffect)(()=>_(()=>m()),[]);let h=(0,K.useRef)(null);(0,K.useEffect)(()=>{h.current=null},[t?.name]);let v=a.data?.available===!0?a.data.file:void 0,y=t!==void 0&&e!==null&&n.data!==void 0&&r.data!==void 0&&v!==void 0,b=t&&v?qt(v,t.name):void 0,x=s.isPending||c.isPending||f.isPending||o.isPending||n.isFetching||r.isFetching;(0,K.useEffect)(()=>{if(!y||!b?.enabled||x)return;let a={client:i,theme:l(),profileSettings:n.data,profile:t,scratchpad:r.data},u={setClient:e=>d(e),setTheme:e=>{typeof e==`string`&&g(e)},patchProfileSettings:e=>s.mutate(e),patchProfileColumns:t=>c.mutate({id:e,...t}),createScratchpad:t=>{for(let n of t)f.mutate({profile_id:e,scope:`profile`,title:n.title??void 0,body:n.body,tags:n.tags,agent_type:n.agent_type??void 0})}},p=JSON.stringify(b.doc);if(h.current!==p){h.current=p,en(b.doc,u,a,b.groups);return}let m=sn(b.groups,a),_=JSON.stringify(m);_!==p&&(h.current=_,o.mutate({profile:t.name,entry:{...b,doc:m,updatedAt:new Date().toISOString()}}))})}var oi=new Set,si=e=>!!e&&oi.has(e),ci=h.parse({});function li(e){return e.prefs.muted_projects.includes(e.projectId)?{desktop:!1,sound:!1}:{desktop:e.prefs.desktop&&(e.permission===`granted`||e.permission===`unverified`)&&(e.prefs.when_focused||!e.windowFocused),sound:e.prefs.sound}}function ui(e,t){for(let[,n]of e.getQueriesData({queryKey:[`sessions`]})){let e=n?.find(e=>e.id===t);if(e)return e}for(let[,n]of e.getQueriesData({queryKey:[`project`]})){let e=n?.sessions.find(e=>e.id===t);if(e)return e}}function di(e){return e.title??e.agent_title??e.osc_title??e.id.slice(0,8)}function fi(){try{let e=new AudioContext,t=e.createGain();t.gain.value=.04,t.connect(e.destination);for(let[n,r]of[[880,0],[1318.5,.09]]){let i=e.createOscillator();i.type=`sine`,i.frequency.value=n,i.connect(t),i.start(e.currentTime+r),i.stop(e.currentTime+r+.12)}setTimeout(()=>void e.close(),400)}catch{}}function pi(){let e=rt();mi(t=>{e(`/project/${t.project_id}/session/${t.id}`)})}function mi(e){let t=se(),n=(0,K.useRef)(e);n.current=e;let r=Me(Ue().data)??`Puddle`,a=(0,K.useRef)(r);(0,K.useEffect)(()=>{document.title===a.current&&(document.title=r),a.current=r},[r]),(0,K.useEffect)(()=>{let e=new Set,r=()=>{document.title=e.size>0?`(${e.size}) ${a.current}`:a.current},o=!0,s=async e=>{let r=ui(t,e.session);if(!r)try{r=(await D(t)).find(t=>t.id===e.session)}catch{return}if(!o||!r)return;let a=r,s;try{let e=await t.fetchQuery({queryKey:[`project`,a.project_id],queryFn:()=>b(`GET`,`/api/projects/${a.project_id}`),staleTime:1e4});if(!o)return;let n=e.project.profile_id,r=await t.fetchQuery({queryKey:[`profile-settings`,n],queryFn:()=>b(`GET`,`/api/profiles/${n}/settings`),staleTime:1e4});s=h.catch(ci).parse(r.notifications??{})}catch{return}if(!o)return;let c=li({prefs:s,projectId:a.project_id,windowFocused:document.hasFocus(),permission:$t()});c.sound&&fi(),c.desktop&&!si(i()?.scope)&&await on({id:e.id?`puddle-event-${e.id}`:`puddle-agent-${a.id}`,title:di(a).slice(0,160),body:e.reason===`exited`?`Agent finished running`:`Waiting for your input`},()=>{o&&n.current(a)})},c=G.onAgentNotification(e=>{s(e)}),l=G.onStatus(n=>{let i=e.has(n.session);n.status===`waiting_input`?e.add(n.session):e.delete(n.session),r(),!(n.status!==`waiting_input`||i)&&t.fetchQuery({queryKey:[`version`],queryFn:()=>b(`GET`,`/api/version`),staleTime:1/0}).then(e=>{if(!(e.protocol.major>22||e.protocol.major===22&&e.protocol.minor>=3))return s({session:n.session,reason:`waiting_input`})}).catch(()=>{})});return()=>{o=!1,l(),c(),document.title=a.current}},[t])}function hi({initial:e,defaultScope:t,allowProject:n=!0,agents:r,onSave:i,onCancel:a}){let[o,s]=(0,K.useState)(e?.title??``),[c,l]=(0,K.useState)(e?.body??``),[u,d]=(0,K.useState)(n?e?.scope??t:`profile`),[f,p]=(0,K.useState)((e?.tags??[]).join(`, `)),[m,h]=(0,K.useState)(e?.agent_type??null),g=()=>{let e=c.trim();e&&i({title:o.trim()||null,body:e,scope:u,tags:f.split(`,`).map(e=>e.trim()).filter(Boolean),agent_type:m})};return(0,q.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,q.jsx)(L,{value:o,placeholder:`Title (optional)`,spellCheck:!1,onChange:e=>s(e.target.value),onKeyDown:e=>e.stopPropagation(),className:`h-9 text-sm font-medium`}),(0,q.jsx)(pt,{autoFocus:!0,value:c,placeholder:`Prompt or note…`,spellCheck:!1,rows:10,onChange:e=>l(e.target.value),onKeyDown:e=>{e.stopPropagation(),e.key===`Escape`?a():e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&g()},className:`resize-y text-sm leading-relaxed`}),(0,q.jsx)(L,{value:f,placeholder:`tags, comma, separated`,spellCheck:!1,onChange:e=>p(e.target.value),onKeyDown:e=>e.stopPropagation(),className:`h-8 text-xs`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[n&&(0,q.jsxs)(`label`,{className:`flex items-center gap-1.5 text-2xs text-fg-secondary`,children:[(0,q.jsx)(Ct,{checked:u===`profile`,onCheckedChange:e=>d(e?`profile`:`project`)}),`Profile-wide`]}),(0,q.jsx)(`div`,{className:`ml-auto flex items-center gap-1`,children:r.map(e=>(0,q.jsxs)(`button`,{type:`button`,title:e.display_name,"aria-pressed":m===e.id,onClick:()=>h(t=>t===e.id?null:e.id),className:H(`rounded-md p-1 transition-colors`,m===e.id?`bg-surface text-fg`:`text-fg-gold hover:bg-surface hover:text-fg`),children:[(0,q.jsx)(kt,{type:e.id,className:`size-3.5`}),(0,q.jsx)(`span`,{className:`sr-only`,children:e.display_name})]},e.id))})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-end gap-1.5`,children:[(0,q.jsx)(I,{variant:`ghost`,size:`sm`,onClick:a,children:`Cancel`}),(0,q.jsx)(I,{size:`sm`,disabled:!c.trim(),onClick:g,children:`Save`})]})]})}function gi(){let e=Et(),t=O(),n=nt().id,r=fe(t??void 0,n).data??[],i=le().data??[],a=_e(),o=Oe(),s=Se(),c=Mt(),[l,u]=(0,K.useState)(null),[d,f]=(0,K.useState)(null),[p,m]=(0,K.useState)(null),[h,g]=(0,K.useState)(null),[_,v]=(0,K.useState)(null);(0,K.useEffect)(()=>Ee(`scratchpad.toggle`,jt),[]),(0,K.useEffect)(()=>{e||(u(null),f(null),m(null))},[e]);let y=(0,K.useMemo)(()=>[...new Set(r.flatMap(e=>e.tags))].sort((e,t)=>e.localeCompare(t)),[r]),b=(0,K.useMemo)(()=>[...new Set(r.map(e=>e.agent_type).filter(e=>e!==null))],[r]),S=d!==null||p!==null,C=r.filter(e=>(d===null||e.tags.includes(d))&&(p===null||e.agent_type===p)),w=S?C:_??r,ee=e=>{t&&(a.mutate({profile_id:t,scope:e.scope,project_id:e.scope===`project`?n:void 0,title:e.title??void 0,body:e.body,tags:e.tags,agent_type:e.agent_type??void 0}),u(null))},T=(e,t)=>{o.mutate({id:e,scope:t.scope,project_id:t.scope===`project`?n??null:null,title:t.title,body:t.body,tags:t.tags,agent_type:t.agent_type}),u(null)},E=(e,t)=>{let n=_??r,i=n.findIndex(t=>t.id===e),a=n.findIndex(e=>e.id===t);if(i===-1||a===-1||i===a)return;let o=n.slice(),[s]=o.splice(i,1);o.splice(a,0,s),v(o)},D=()=>{let e=h,t=_;if(g(null),v(null),e===null||!t)return;let n=t.findIndex(t=>t.id===e);if(n===-1)return;let r=t[n-1],i=t[n+1],a=r?i?(r.position+i.position)/2:r.position+1:(i?i.position:0)-1;o.mutate({id:e,position:a})},k=e=>{navigator.clipboard?.writeText(e.body),x.success(`Copied to clipboard`)};return(0,q.jsxs)(Xt,{open:e,onOpenChange:Dt,children:[(0,q.jsxs)(V,{children:[(0,q.jsx)(B,{asChild:!0,children:(0,q.jsx)(tn,{asChild:!0,children:(0,q.jsxs)(I,{variant:`ghost`,size:`icon`,className:`compact:h-7 compact:w-7`,children:[(0,q.jsx)(Ln,{}),(0,q.jsx)(`span`,{className:`sr-only`,children:`Scratchpad`})]})})}),(0,q.jsx)(z,{children:`Scratchpad`})]}),(0,q.jsxs)(rn,{className:`w-[34rem] max-w-[calc(100vw-1rem)] p-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 px-5 pb-2 pt-4`,children:[(0,q.jsx)(`span`,{className:`text-2xs font-medium uppercase tracking-wide text-fg-gold`,children:`Scratchpad`}),(0,q.jsxs)(`button`,{type:`button`,onClick:()=>u(l===`new`?null:`new`),className:`ml-auto flex items-center rounded-md p-1 text-fg-gold transition-colors hover:bg-surface hover:text-fg`,children:[(0,q.jsx)(bt,{className:`size-4`}),(0,q.jsx)(`span`,{className:`sr-only`,children:`New entry`})]})]}),(y.length>0||b.length>0)&&(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1 px-5 pb-2`,children:[y.map(e=>(0,q.jsx)(`button`,{type:`button`,onClick:()=>f(t=>t===e?null:e),className:H(`rounded-full px-2 py-0.5 text-2xs transition-colors`,d===e?`bg-action text-action-ink`:`bg-surface text-fg-secondary hover:text-fg`),children:e},e)),b.map(e=>(0,q.jsx)(`button`,{type:`button`,"aria-pressed":p===e,onClick:()=>m(t=>t===e?null:e),className:H(`rounded-md p-1 transition-colors`,p===e?`bg-action text-action-ink`:`text-fg-gold hover:bg-surface`),children:(0,q.jsx)(kt,{type:e,className:`size-3.5`})},e))]}),(0,q.jsxs)(`div`,{className:`no-scrollbar max-h-[65vh] overflow-y-auto px-2 pb-3`,children:[l===`new`&&(0,q.jsx)(`div`,{className:`px-3 py-2`,children:(0,q.jsx)(hi,{defaultScope:n?`project`:`profile`,allowProject:n!==void 0,agents:i,onSave:ee,onCancel:()=>u(null)})}),w.length===0&&l!==`new`&&(0,q.jsx)(`p`,{className:`px-3 py-3 text-sm text-fg-muted`,children:S?`Nothing matches this filter.`:`No entries yet — press + to add a reusable prompt or note.`}),(0,q.jsx)(`ul`,{className:`flex flex-col`,children:w.map(e=>l===e.id?(0,q.jsx)(`li`,{className:`px-3 py-2`,children:(0,q.jsx)(hi,{initial:e,defaultScope:e.scope,allowProject:n!==void 0||e.scope===`project`,agents:i,onSave:t=>T(e.id,t),onCancel:()=>u(null)})},e.id):(0,q.jsx)(`li`,{draggable:!S&&l===null,onDragStart:t=>{t.dataTransfer.effectAllowed=`move`,g(e.id)},onDragOver:t=>{h!==null&&(t.preventDefault(),h!==e.id&&E(h,e.id))},onDragEnd:D,className:H(`transition-opacity`,h===e.id&&`opacity-50`),children:(0,q.jsx)(_i,{entry:e,onInsert:c?()=>{c(e.body),Dt(!1)}:null,onCopy:()=>k(e),onEdit:()=>u(e.id),onDelete:()=>s.mutate(e.id)})},e.id))})]})]})]})}function _i({entry:e,onInsert:t,onCopy:n,onEdit:r,onDelete:i}){let[a,o]=(0,K.useState)(!1);return(0,q.jsxs)(`div`,{onClick:e=>{e.target.closest(`button`)||r()},className:`cursor-pointer rounded-md px-3 py-2.5 transition-colors hover:bg-surface`,children:[e.title&&(0,q.jsx)(`p`,{className:`text-sm font-medium text-fg`,children:e.title}),(0,q.jsx)(`p`,{className:H(`line-clamp-3 whitespace-pre-wrap text-sm text-fg-secondary`,e.title&&`mt-0.5`),children:e.body}),a?(0,q.jsxs)(`div`,{className:`mt-2 flex items-center gap-3`,children:[(0,q.jsx)(`span`,{className:`text-2xs text-fg-muted`,children:`Delete this entry? This can’t be undone.`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>{o(!1),i()},className:`text-2xs font-medium text-interrupted transition-colors hover:underline`,children:`Delete`}),(0,q.jsx)(`button`,{type:`button`,onClick:()=>o(!1),className:`text-2xs text-fg-muted transition-colors hover:text-fg`,children:`Cancel`})]}):(0,q.jsxs)(`div`,{className:`mt-2 flex items-center gap-1.5`,children:[(0,q.jsx)(`span`,{className:`text-2xs uppercase tracking-wide text-fg-muted`,children:e.scope===`profile`?`Profile-wide`:`Project`}),e.agent_type&&(0,q.jsx)(kt,{type:e.agent_type,className:`size-3 text-fg-gold`}),e.tags.map(e=>(0,q.jsx)(`span`,{className:`rounded-full bg-surface px-1.5 text-2xs text-fg-secondary`,children:e},e)),(0,q.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[t&&(0,q.jsx)(vi,{icon:Pn,label:`Insert into focused terminal`,onClick:t}),(0,q.jsx)(vi,{icon:Ye,label:`Copy`,onClick:n}),(0,q.jsx)(vi,{icon:ht,label:`Edit`,onClick:r}),(0,q.jsx)(vi,{icon:St,label:`Delete`,onClick:()=>o(!0)})]})]})]})}function vi({icon:e,label:t,onClick:n}){return(0,q.jsxs)(V,{children:[(0,q.jsx)(B,{asChild:!0,children:(0,q.jsxs)(`button`,{type:`button`,onClick:n,className:`rounded-md p-1 text-fg-gold transition-colors hover:bg-elevated hover:text-fg`,children:[(0,q.jsx)(e,{className:`size-3.5`}),(0,q.jsx)(`span`,{className:`sr-only`,children:t})]})}),(0,q.jsx)(z,{children:t})]})}var yi=o.parse({});function bi(e,t){let[n,r]=(0,K.useState)(null),i=A(t).data,a=Ae(e??void 0,t&&e!==null).data;return(0,K.useEffect)(()=>{if(!t||e===null){r(null);return}let n=!1,i;try{i=Gt(sessionStorage.getItem(Wt(e)))}catch{i={kind:`absent`}}if(i.kind===`present`){r(i.snapshot);return}return ce(e).then(e=>{n||r(e?e.ui_state:yi)}).catch(()=>{n||r(yi)}),()=>{n=!0}},[t,e]),(0,K.useMemo)(()=>{if(!t||e===null||n===null)return null;let o=t=>{if(!i||!a)return!1;let{patch:o,projectBased:s}=zt(n,t,{alive:new Set(i.filter(e=>e.status!==`archived`).map(e=>e.id)),sessionProject:new Map(i.map(e=>[e.id,e.project_id])),projectIds:a.map(e=>e.id),currentProject:null}),c={...n,...o};r(c),w(e,c).catch(e=>console.warn(`ui-state save failed: ${e.message}`));try{sessionStorage.setItem(Wt(e),JSON.stringify(c))}catch(e){console.warn(`ui-state write failed: ${e.message}`)}return p().projectBasedLayout!==s&&d({projectBasedLayout:s}),!0},s=Object.fromEntries(Object.entries(n.project_layouts).map(([e,t])=>[e,{layoutRef:t.layout_ref,signature:R(t.layout_tree)}]));return(n.layout_mode??`profile`)===`project`?{headless:!0,scope:`project`,projectId:``,layoutRef:null,signature:R(null),slices:s,capture:()=>({layout_tree:null,active_session:null}),apply:o}:{scope:`profile`,projectId:``,layoutRef:n.layout_ref,signature:R(n.layout_tree),slices:s,capture:()=>({layout_tree:n.layout_tree,active_session:n.active_session}),apply:o}},[t,e,n,i,a])}var xi=R(null);function Si(){let e=Bt(),t=rt(),n=O(),r=Ht(),i=bi(n,e&&r===null),a=r??i,o=Ie(n??void 0,void 0).data??[],s=Ae(n??void 0,e&&n!==null).data??[],c=ee(),l=He(),u=be(),[d,f]=(0,K.useState)(``),[p,m]=(0,K.useState)(!1),[h,g]=(0,K.useState)(null);(0,K.useEffect)(()=>Ee(`layouts.toggle`,Rt),[]),(0,K.useEffect)(()=>{e||(f(``),m(!1),g(null))},[e]);let _=a?.headless===!0,v=a===null||_?null:o.find(e=>e.id===a.layoutRef)??null,y=a!==null&&!_&&(v===null?a.signature!==xi:R(v.layout_tree)!==a.signature),b=e=>{let t=a?.slices?.[e];if(!t)return!1;let n=t.layoutRef===null?null:o.find(e=>e.id===t.layoutRef)??null;return n?R(n.layout_tree)!==t.signature:t.signature!==xi},S=e=>a===null?!1:e.scope===`profile`?a.scope===`profile`&&y:e.project_id===null?!1:a.scope===`project`?!_&&e.project_id===a.projectId?y:b(e.project_id):y||b(e.project_id),C=e=>v!==null&&e.id===v.id,w=e=>(e===null?void 0:s.find(t=>t.id===e)?.name)??`Project`,T=a!==null&&!_&&a.scope===`project`?o.filter(e=>e.scope===`profile`||e.project_id===a.projectId):o,E=[...T.some(e=>e.scope===`profile`)?[{key:`profile`,name:`Profile-wide`}]:[],...[...new Set(T.flatMap(e=>e.project_id===null?[]:[e.project_id]))].map(e=>({key:e,name:w(e)})).sort((e,t)=>e.name.localeCompare(t.name))],D=h===null?T:h===`profile`?T.filter(e=>e.scope===`profile`):T.filter(e=>e.project_id===h),k=e=>a!==null&&e.scope===a.scope&&(a.scope===`profile`||e.project_id===a.projectId),A=(e,t,r)=>{!a||!n||c.mutate({profile_id:n,scope:a.scope,project_id:a.scope===`project`?a.projectId:void 0,name:e,...t},{onSuccess:e=>{r&&a.apply(e)},onError:e=>W(e)})},j=e=>{if(!a)return;let t=k(e)?e:o.find(t=>t.name===e.name&&k(t));if(!t){A(e.name,a.capture(),!0);return}l.mutate({id:t.id,...a.capture()},{onSuccess:e=>a.apply(e),onError:e=>W(e)})},M=(e,t)=>A(t,{layout_tree:e.layout_tree,active_session:e.active_session},!1),te=e=>{if(a){if(!a.apply(e)){x.error(`Workspace is still loading — try again in a moment`);return}e.project_id!==null&&e.project_id!==a.projectId&&t(`/project/${e.project_id}`),It(!1)}};return(0,q.jsxs)(Xt,{open:e,onOpenChange:It,children:[(0,q.jsxs)(V,{children:[(0,q.jsx)(B,{asChild:!0,children:(0,q.jsx)(tn,{asChild:!0,children:(0,q.jsxs)(I,{variant:`ghost`,size:`icon`,className:`compact:h-7 compact:w-7`,children:[(0,q.jsx)(Fn,{}),(0,q.jsx)(`span`,{className:`sr-only`,children:`Layouts`})]})})}),(0,q.jsx)(z,{children:`Layouts`})]}),(0,q.jsxs)(rn,{className:`w-[26rem] max-w-[calc(100vw-1rem)] p-0`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 px-5 pb-2 pt-4`,children:[(0,q.jsx)(`span`,{className:`text-2xs font-medium uppercase tracking-wide text-fg-gold`,children:`Layouts`}),a!==null&&!_&&(0,q.jsxs)(`button`,{type:`button`,onClick:()=>m(e=>!e),className:`ml-auto flex items-center rounded-md p-1 text-fg-gold transition-colors hover:bg-surface hover:text-fg`,children:[(0,q.jsx)(bt,{className:`size-4`}),(0,q.jsx)(`span`,{className:`sr-only`,children:`Save the current layout as a new layout`})]})]}),a===null?(0,q.jsx)(`p`,{className:`px-5 pb-3 text-sm text-fg-muted`,children:`Loading the profile’s layout state…`}):_?(0,q.jsx)(`p`,{className:`px-5 pb-3 text-sm text-fg-muted`,children:`Project-based layout is on — every project keeps its own layout. Open a project to name or save it; loading works from here.`}):(v===null||p)&&(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 px-5 pb-3`,children:[v===null&&(0,q.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,q.jsx)(`span`,{className:`text-sm font-medium text-fg`,children:`Unnamed layout`}),(0,q.jsx)(`span`,{className:`text-2xs uppercase tracking-wide text-fg-muted`,children:a.scope===`profile`?`Profile-wide`:`Project`}),(0,q.jsx)(`span`,{className:`ml-auto text-2xs text-interrupted`,children:`Unsaved`})]}),(0,q.jsxs)(`form`,{className:`flex items-center gap-1.5`,onSubmit:e=>{e.preventDefault();let t=d.trim();t&&(A(t,a.capture(),!0),f(``),m(!1))},children:[(0,q.jsx)(L,{autoFocus:p,value:d,placeholder:v===null?`Name this layout…`:`Save as a new layout…`,spellCheck:!1,onChange:e=>f(e.target.value),onKeyDown:e=>{e.stopPropagation(),e.key===`Escape`&&m(!1)},className:`h-8 flex-1 text-sm`}),(0,q.jsx)(I,{size:`sm`,type:`submit`,disabled:!d.trim(),children:`Save`}),v!==null&&(0,q.jsx)(I,{variant:`ghost`,size:`sm`,onClick:()=>m(!1),children:`Cancel`})]})]}),E.length>1&&(0,q.jsx)(`div`,{className:`flex flex-wrap items-center gap-1 px-5 pb-2`,children:E.map(e=>(0,q.jsx)(Ti,{active:h===e.key,onClick:()=>g(t=>t===e.key?null:e.key),children:e.name},e.key))}),(0,q.jsxs)(`div`,{className:`no-scrollbar max-h-[60vh] overflow-y-auto px-2 pb-3`,children:[D.length===0&&(0,q.jsx)(`p`,{className:`px-3 py-3 text-sm text-fg-muted`,children:h===null?`No layouts yet — name and save the current layout to keep it.`:`Nothing matches this filter.`}),(0,q.jsx)(`ul`,{className:`flex flex-col`,children:D.map(e=>(0,q.jsx)(`li`,{children:(0,q.jsx)(Ci,{layout:e,projectLabel:e.scope===`profile`?null:w(e.project_id),isCurrent:C(e),dirty:y,loadable:a!==null,savable:a!==null&&!_,confirmBeforeLoad:S(e),overwrites:k(e),onLoad:()=>te(e),onRename:t=>l.mutate({id:e.id,name:t}),onDelete:()=>u.mutate(e.id),onSaveAs:()=>j(e),onDuplicate:t=>M(e,t)})},e.id))})]})]})]})}function Ci({layout:e,projectLabel:t,isCurrent:n,dirty:r,loadable:i,savable:a,confirmBeforeLoad:o,overwrites:s,onLoad:c,onRename:l,onDelete:u,onSaveAs:d,onDuplicate:f}){let[p,m]=(0,K.useState)(null),[h,g]=(0,K.useState)(null),[_,v]=(0,K.useState)(e.name),y=()=>{if(!(!i||h!==null)){if(o&&p!==`load`){m(`load`);return}m(null),c()}},b=t=>{m(null),v(t===`rename`?e.name:`${e.name} copy`),g(t)},x=()=>{if(n){d();return}m(`save`)},S=n?r?`unsaved`:`active`:null;return(0,q.jsxs)(`div`,{onClick:e=>{e.target.closest(`button, input`)||y()},className:H(`rounded-md px-3 py-2.5 transition-colors`,i&&`cursor-pointer hover:bg-surface`),children:[h===null?(0,q.jsxs)(`p`,{className:H(`flex items-baseline gap-2 text-sm font-medium`,S===`active`?`text-success`:S===`unsaved`?`text-interrupted`:`text-fg`),children:[e.name,S!==null&&(0,q.jsx)(`span`,{className:`text-2xs font-normal`,children:S===`active`?`Active`:`Unsaved`})]}):(0,q.jsxs)(`form`,{className:`flex items-center gap-1.5`,onSubmit:t=>{t.preventDefault();let n=_.trim();n&&(h===`rename`?n!==e.name&&l(n):f(n)),g(null)},children:[(0,q.jsx)(L,{autoFocus:!0,value:_,spellCheck:!1,onChange:e=>v(e.target.value),onKeyDown:e=>{e.stopPropagation(),e.key===`Escape`&&g(null)},className:`h-7 flex-1 text-sm`}),(0,q.jsx)(I,{size:`sm`,type:`submit`,disabled:!_.trim(),children:h===`rename`?`Rename`:`Save`})]}),p===`save`?(0,q.jsx)(wi,{question:s?`Overwrite “${e.name}” with the current layout?`:`Save the current layout as “${e.name}” here?`,verb:s?`Overwrite`:`Save`,onConfirm:()=>{m(null),d()},onCancel:()=>m(null)}):p===`delete`?(0,q.jsx)(wi,{question:`Delete this layout? This can’t be undone.`,verb:`Delete`,onConfirm:()=>{m(null),u()},onCancel:()=>m(null)}):p===`load`?(0,q.jsx)(wi,{question:`Loading discards unsaved layout changes.`,verb:`Load`,onConfirm:y,onCancel:()=>m(null)}):(0,q.jsxs)(`div`,{className:`mt-2 flex items-center gap-1.5`,children:[t!==null&&(0,q.jsx)(`span`,{className:`text-2xs uppercase tracking-wide text-fg-muted`,children:t}),(0,q.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[a&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Ei,{icon:Rn,label:n?`Save`:`Save the current layout as “${e.name}”`,onClick:x}),(0,q.jsx)(Ei,{icon:Ye,label:`Duplicate`,onClick:()=>b(`duplicate`)})]}),(0,q.jsx)(Ei,{icon:ht,label:`Rename`,onClick:()=>b(`rename`)}),(0,q.jsx)(Ei,{icon:St,label:`Delete`,onClick:()=>m(`delete`)})]})]})]})}function wi({question:e,verb:t,onConfirm:n,onCancel:r}){return(0,q.jsxs)(`div`,{className:`mt-2 flex items-center gap-3`,children:[(0,q.jsx)(`span`,{className:`text-2xs text-fg-muted`,children:e}),(0,q.jsx)(`button`,{type:`button`,onClick:n,className:`text-2xs font-medium text-interrupted transition-colors hover:underline`,children:t}),(0,q.jsx)(`button`,{type:`button`,onClick:r,className:`text-2xs text-fg-muted transition-colors hover:text-fg`,children:`Cancel`})]})}function Ti({active:e,onClick:t,children:n}){return(0,q.jsx)(`button`,{type:`button`,"aria-pressed":e,onClick:t,className:H(`rounded-full px-2 py-0.5 text-2xs transition-colors`,e?`bg-action text-action-ink`:`bg-surface text-fg-secondary hover:text-fg`),children:n})}function Ei({icon:e,label:t,onClick:n}){return(0,q.jsxs)(V,{children:[(0,q.jsx)(B,{asChild:!0,children:(0,q.jsxs)(`button`,{type:`button`,onClick:n,className:`rounded-md p-1 text-fg-gold transition-colors hover:bg-elevated hover:text-fg`,children:[(0,q.jsx)(e,{className:`size-3.5`}),(0,q.jsx)(`span`,{className:`sr-only`,children:t})]})}),(0,q.jsx)(z,{children:t})]})}var Di=de()!==void 0&&/Mac/.test(navigator.platform),Oi=(0,K.lazy)(()=>v(()=>import(`./SettingsDialog-DaxYdggs.js`).then(e=>({default:e.SettingsDialog})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])));function ki(){let e=se();(0,K.useEffect)(()=>{let t=t=>{for(let[n,r]of e.getQueriesData({queryKey:[`sessions`]}))r&&e.setQueryData(n,r.map(t));for(let[n,r]of e.getQueriesData({queryKey:[`project`]}))r&&e.setQueryData(n,{...r,sessions:r.sessions.map(t)})},n=G.onStatus(e=>t(t=>t.id===e.session?{...t,status:e.status,last_activity_at:e.last_activity_at}:t)),r=G.onRenamed(e=>t(t=>t.id===e.session?{...t,title:e.title,agent_title:`agent_title`in e?e.agent_title:t.agent_title,osc_title:`osc_title`in e?e.osc_title:t.osc_title}:t)),i=G.onAccount(t=>{for(let[n,r]of e.getQueriesData({queryKey:[`accounts`]}))r&&e.setQueryData(n,r.map(e=>e.id===t.account_id?{...e,logged_in:t.logged_in}:e))}),a=t=>{e.invalidateQueries({queryKey:[`sessions`]});for(let n of t)e.invalidateQueries({queryKey:[`project`,n]})},o=G.onSessionsChanged(e=>a(e.project_ids)),s=G.onSessionSwitched(e=>a([e.target_project]));return()=>{n(),r(),i(),o(),s()}},[e])}function Ai(){let e=Ue(),t=Le(),[n,r]=(0,K.useState)(!1),i=Me(e.data),a=n=>{r(!1);let a=n.trim();a!==i&&t.mutate({displayName:a===e.data?.hostname?``:a},{onError:e=>W(e)})},o=!Di&&(0,q.jsx)(`img`,{src:`/puddle.svg`,alt:`Puddle`,className:`size-4`}),s=H(`flex shrink-0 items-center gap-2`,Di&&`[-webkit-app-region:no-drag]`),c=`truncate text-sm font-semibold text-fg-secondary`;return n&&i!==void 0?(0,q.jsxs)(`div`,{className:s,children:[o,(0,q.jsx)(Lt,{initial:e.data?.displayName??i,maxLength:64,className:H(c,`w-40`),onCommit:a,onCancel:()=>r(!1)})]}):(0,q.jsxs)(Ze,{to:`/`,className:H(s,`transition-opacity hover:opacity-70`),title:`All projects`,children:[o,i!==void 0&&(0,q.jsx)(`span`,{className:c,...Kt(()=>r(!0)),children:i})]})}function ji(){let e=nt(),t=E(`palette.toggle`),n=je(e.id).data?.project,r=n!==void 0&&n.id===e.id?n.name:void 0;return(0,q.jsxs)(`button`,{type:`button`,onClick:At,className:H(`absolute left-1/2 flex h-6 w-[min(30rem,42%)] -translate-x-1/2 items-center justify-center gap-2 rounded-md bg-ground text-fg-muted transition-colors hover:bg-elevated hover:text-fg-secondary`,Di&&`[-webkit-app-region:no-drag]`),children:[(0,q.jsx)(`span`,{className:`truncate text-xs`,children:r??`Puddle`}),(0,q.jsx)(`span`,{className:`text-2xs`,children:t})]})}function Mi(){let{fullScreen:e,animate:t}=C();return(0,q.jsxs)(`header`,{className:H(`relative flex h-9 shrink-0 items-center gap-3 bg-surface pl-3 pr-3`,Di&&!e&&`pl-[88px] [-webkit-app-region:drag]`,t&&`transition-[padding] duration-200 ease-out`),children:[(0,q.jsx)(Ai,{}),(0,q.jsx)(ji,{}),(0,q.jsxs)(`div`,{className:H(`ml-auto flex items-center`,Di&&`[-webkit-app-region:no-drag]`),children:[(0,q.jsxs)(V,{children:[(0,q.jsx)(B,{asChild:!0,children:(0,q.jsxs)(I,{variant:`ghost`,size:`icon`,className:`compact:h-7 compact:w-7`,onClick:()=>vt(),children:[(0,q.jsx)(Bn,{}),(0,q.jsx)(`span`,{className:`sr-only`,children:`Settings`})]})}),(0,q.jsx)(z,{children:`Settings`})]}),(0,q.jsx)(Si,{}),(0,q.jsx)(gi,{}),(0,q.jsx)(ni,{})]})]})}function Ni(){ki(),ai(),pi();let{handler:e}=Ot(),t=O(),{pathname:n}=$e(),[r,i]=(0,K.useState)(!1),a=re(),o=a.data!==void 0&&Te(a.data.protocol);return(0,K.useEffect)(()=>{if(!o)return;let e=()=>{let e=f();G.reportTheme(e(`--text-primary`),e(`--bg-base`))};return e(),_(e)},[o]),(0,q.jsxs)(`div`,{className:`flex h-screen flex-col overflow-hidden overscroll-y-none bg-ground`,children:[(0,q.jsx)(Mi,{}),(0,q.jsx)(`main`,{className:`min-h-0 flex-1`,children:(0,q.jsx)(gn,{resetOn:n,scope:n.startsWith(`/project/`)?`workspace`:`view`,children:(0,q.jsx)(tt,{})})}),(0,q.jsx)(Zr,{}),(0,q.jsx)(ii,{}),(0,q.jsx)(Kr,{onNewSession:e??void 0,onNewProject:()=>i(!0)}),t!==null&&(0,q.jsx)(un,{profileId:t,open:r,onOpenChange:i}),(0,q.jsx)(K.Suspense,{fallback:null,children:(0,q.jsx)(Oi,{})}),(0,q.jsx)(Yr,{})]})}function Pi(){return(0,q.jsx)(Ut,{children:(0,q.jsx)(Ni,{})})}var Fi=(0,K.lazy)(()=>v(()=>import(`./Dashboard-BhAek_r4.js`).then(e=>({default:e.Dashboard})),__vite__mapDeps([20,1,2,3,4,6,5,21,10,7,8,9,11,22,16,23,19,18,24]))),Ii=(0,K.lazy)(()=>v(()=>import(`./Workspace-BDDSmIKE.js`).then(e=>({default:e.Workspace})),__vite__mapDeps([25,1,2,3,4,5,6,26,10,27,21,7,8,9,11,12,28,29,30,22,16,31,24,14,15,18,32,33,34,35,36]))),Li=new hn({defaultOptions:{queries:{retry:1,staleTime:5e3}},mutationCache:new fn({onError:e=>W(e)})});function Ri(){let e=O(),t=Fe(),n=e!==null&&t.data!==void 0&&!t.data.some(t=>t.id===e);return e===null||n?(0,q.jsx)(Vn,{}):(0,q.jsx)(it,{useTransitions:!1,children:(0,q.jsx)(K.Suspense,{fallback:null,children:(0,q.jsx)(Qe,{children:(0,q.jsxs)(at,{element:(0,q.jsx)(Pi,{}),children:[(0,q.jsx)(at,{path:`/`,element:(0,q.jsx)(Fi,{})}),(0,q.jsx)(at,{path:`/project/:id`,element:(0,q.jsx)(Ii,{})}),(0,q.jsx)(at,{path:`/project/:id/session/:sid`,element:(0,q.jsx)(Ii,{})})]})})})})}function zi(){let e=(0,K.useSyncExternalStore)(y.subscribe,y.get);return(0,q.jsx)(ae,{client:Li,children:(0,q.jsxs)(Ft,{delayDuration:300,children:[(0,q.jsx)(Nn,{}),(0,q.jsx)(gn,{scope:`app`,children:e?window.location.pathname.startsWith(`/forward/`)?(0,q.jsx)(dn,{}):(0,q.jsx)(Ri,{}):(0,q.jsx)(vn,{})}),(0,q.jsx)(_n,{})]})})}export{zi as App};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{M as n,n as r}from"./index-CIyjjiv2.js";import{C as i,E as a,Et as o,gt as s,lt as c,pt as l,ut as u,xt as d}from"./protocol-support-B2anXRJW.js";import{a as f,c as p,i as m,n as h,r as g}from"./project-abbrev-DuSyhdGL.js";import{a as _,i as v,n as y,o as b,t as x}from"./dialog-cFDquLR6.js";import{t as S}from"./button-CZSpHYG9.js";import{a as C,i as w,o as T,s as E,t as D}from"./LazyTerminal-DqKe6H-V.js";import{n as O}from"./x-CZCUod6A.js";import{A as k,M as A,c as j,j as M,k as N,n as P,r as F,t as I}from"./context-menu-BcxQJKjd.js";import{r as L}from"./dist-Ci7LEIn0.js";import{t as R}from"./NewProjectDialog-B4ySxxDz.js";import{n as z}from"./errors-wktZNO7z.js";import{t as B}from"./ws-ClWC7CMz.js";var V=e(t(),1),H=r(),U=!1;function W(){let[e,t]=(0,V.useState)(U),[r,i]=(0,V.useState)(null);(0,V.useEffect)(()=>{if(!e)return;let t=!1;return B.spawnShell(n).then(e=>{t||i(e)}),()=>{t=!0}},[e]);let a=()=>{U=!1,t(!1),i(null)};return{open:e,term:r,toggle:()=>{e?(r&&B.killShell(n,r),a()):(U=!0,t(!0))},onExit:a}}function G({term:e,onExit:t}){return(0,H.jsx)(`div`,{className:`h-72 shrink-0 pb-6`,children:(0,H.jsx)(`div`,{className:`mx-auto size-full max-w-4xl px-6`,children:e!==null&&(0,H.jsx)(D,{stream:`home`,term:e,onExit:t})})})}var K=`group block w-full rounded-lg bg-surface p-4 text-left transition-colors hover:bg-elevated`,q=[{status:`running`,colour:`bg-running`},{status:`waiting_input`,colour:`bg-waiting`},{status:`interrupted`,colour:`bg-interrupted`}];function J({project:e,repoPath:t,sessions:n}){let r=n.filter(e=>e.status!==`archived`);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`h2`,{className:`truncate pr-16 text-base font-semibold text-fg group-hover:text-accent`,children:e.name}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:t??`…`}),(0,H.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-3 text-2xs text-fg-muted tabular-nums`,children:[(0,H.jsxs)(`span`,{children:[r.length,` session`,r.length===1?``:`s`]}),q.map(({status:e,colour:t})=>{let n=r.filter(t=>t.status===e).length;return n>0?(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`span`,{className:`size-1.5 rounded-full ${t}`}),n,` `,e.replace(`_`,` `)]},e):null})]})]})}function Y({icon:e,label:t,onClick:n}){return(0,H.jsx)(`button`,{type:`button`,"aria-label":t,title:t,onClick:e=>{e.preventDefault(),e.stopPropagation(),n()},className:`flex items-center rounded-md p-1.5 text-fg-muted transition-colors hover:bg-ground hover:text-fg`,children:(0,H.jsx)(e,{className:`size-4`})})}function X({project:e,repoPath:t,draggable:n,dragging:r,onDragStart:i,onDragEnd:a,onDragOver:s}){let c=u(),l=o(e.id),[d,f]=(0,V.useState)(!1),[m,C]=(0,V.useState)(e.name),[D,k]=(0,V.useState)(g(e)),N=t=>c.mutate({id:e.id,archived:t},{onError:e=>z(e)}),L=()=>{C(e.name),k(g(e)),f(!0)},R=()=>{let t=m.trim(),n=h(D);if(!t){f(!1);return}let r={...t===e.name?{}:{name:t},...n&&n!==g(e)?{abbrev:n}:{}};if(Object.keys(r).length===0){f(!1);return}c.mutate({id:e.id,...r},{onSuccess:()=>f(!1),onError:e=>z(e)})};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(I,{children:[(0,H.jsx)(j,{asChild:!0,children:(0,H.jsxs)(`div`,{draggable:n,onDragStart:i,onDragEnd:a,onDragOver:s,className:O(`group relative transition-opacity`,r&&`opacity-50`),children:[(0,H.jsx)(p,{draggable:!1,to:`/project/${e.id}`,className:K,children:(0,H.jsx)(J,{project:e,repoPath:t,sessions:l.data??[]})}),(0,H.jsx)(`div`,{className:`absolute right-2 top-2 hidden gap-0.5 group-hover:flex has-[[data-state=open]]:flex pointer-coarse:flex`,children:e.archived?(0,H.jsx)(Y,{icon:A,label:`Reopen project`,onClick:()=>N(!1)}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Y,{icon:w,label:`Edit project`,onClick:L}),(0,H.jsx)(Y,{icon:M,label:`Archive project`,onClick:()=>N(!0)})]})})]})}),(0,H.jsx)(P,{children:e.archived?(0,H.jsxs)(F,{onSelect:()=>N(!1),children:[(0,H.jsx)(A,{}),` Reopen`]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(F,{onSelect:L,children:[(0,H.jsx)(w,{}),` Edit`]}),(0,H.jsxs)(F,{onSelect:()=>N(!0),children:[(0,H.jsx)(M,{}),` Archive`]})]})})]}),(0,H.jsx)(x,{open:d,onOpenChange:f,children:(0,H.jsxs)(y,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(b,{children:`Edit project`})}),(0,H.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>{e.preventDefault(),R()},children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(T,{htmlFor:`project-name-${e.id}`,children:`Name`}),(0,H.jsx)(E,{id:`project-name-${e.id}`,value:m,onChange:e=>C(e.target.value),autoFocus:!0})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(T,{htmlFor:`project-abbrev-${e.id}`,children:`Abbreviation`}),(0,H.jsx)(E,{id:`project-abbrev-${e.id}`,maxLength:5,value:D,onChange:e=>k(h(e.target.value)),className:`w-24 uppercase`}),(0,H.jsxs)(`p`,{className:`text-2xs text-fg-muted`,children:[`Up to `,5,` characters — the label on the collapsed sidebar rail.`]})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(T,{className:`text-fg-muted`,children:`Path`}),(0,H.jsx)(`p`,{className:`truncate text-2xs text-fg-muted`,children:t??`…`})]}),(0,H.jsxs)(v,{children:[(0,H.jsx)(S,{type:`button`,variant:`ghost`,onClick:()=>f(!1),children:`Cancel`}),(0,H.jsx)(S,{type:`submit`,disabled:!m.trim()||c.isPending,children:`Save`})]})]})]})})]})}function Z({icon:e,label:t,hint:n,onClick:r}){return(0,H.jsxs)(`button`,{type:`button`,onClick:r,className:`group flex flex-col rounded-lg bg-surface p-4 text-left transition-colors hover:bg-elevated`,children:[(0,H.jsxs)(`h2`,{className:`flex items-center gap-2 truncate text-base font-semibold text-fg group-hover:text-accent`,children:[(0,H.jsx)(e,{className:`size-4 shrink-0`}),t]}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:n})]})}function Q(){let e=a(),t=s(e??void 0),n=d(),r=l(e??void 0),o=c(e??``),[u,p]=(0,V.useState)(!1),[h,g]=(0,V.useState)(null),[_,v]=(0,V.useState)(!1),y=W(),b=i(`palette.toggle`),x=e=>n.data?.find(t=>t.id===e)?.path,S=t.data??[],w=r.data?.projectOrder??[],T=N(S.filter(e=>!e.archived),w),E=S.filter(e=>e.archived),D=(e,t)=>{e!==t&&o.mutate({projectOrder:k(T.map(e=>e.id),e,t)})};return(0,H.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,H.jsxs)(`div`,{className:`mx-auto max-w-4xl p-6`,children:[S.length===0&&(0,H.jsxs)(`div`,{className:`mb-8 mt-16 flex flex-col items-center gap-3 text-center`,children:[(0,H.jsx)(C,{className:`size-8 text-fg-muted`}),(0,H.jsxs)(`p`,{className:`text-sm text-fg-secondary`,children:[`No projects yet — open one below, or press `,b,`.`]})]}),(0,H.jsxs)(`div`,{className:`grid auto-rows-fr grid-cols-1 gap-3 sm:grid-cols-2`,children:[T.map(e=>(0,H.jsx)(X,{project:e,repoPath:x(e.repo_id),draggable:!0,dragging:h===e.id,onDragStart:()=>g(e.id),onDragEnd:()=>g(null),onDragOver:t=>{t.preventDefault(),h&&h!==e.id&&D(h,e.id)}},e.id)),(0,H.jsx)(Z,{icon:f,label:`Open project`,hint:`Point at a repository on this host`,onClick:()=>p(!0)}),(0,H.jsx)(Z,{icon:m,label:y.open?`Close terminal`:`Open terminal`,hint:y.open?`End the shell below`:`A shell at ~ for cloning repositories`,onClick:y.toggle})]}),E.length>0&&(0,H.jsxs)(`div`,{className:`mt-6`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`flex items-center gap-1.5 px-1 py-1.5 text-2xs uppercase tracking-wide text-fg-muted transition-colors hover:text-fg`,children:[(0,H.jsx)(L,{className:O(`size-3 transition-transform`,_&&`rotate-90`)}),(0,H.jsx)(M,{className:`size-3`}),(0,H.jsx)(`span`,{children:`Archived`}),(0,H.jsx)(`span`,{className:`tabular-nums`,children:E.length})]}),_&&(0,H.jsx)(`div`,{className:`mt-2 grid grid-cols-1 gap-3 sm:grid-cols-2`,children:E.map(e=>(0,H.jsx)(X,{project:e,repoPath:x(e.repo_id),draggable:!1,dragging:!1,onDragStart:()=>{},onDragEnd:()=>{},onDragOver:()=>{}},e.id))})]})]})}),y.open&&(0,H.jsx)(G,{term:y.term,onExit:y.onExit}),e!==null&&(0,H.jsx)(R,{profileId:e,open:u,onOpenChange:p})]})}export{Q as Dashboard};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{M as n,n as r}from"./index-W9vnFL1i.js";import{C as i,E as a,Et as o,gt as s,lt as c,pt as l,ut as u,xt as d}from"./protocol-support-DM3D3Owq.js";import{a as f,c as p,i as m,n as h,r as g}from"./project-abbrev-Ce2YQx3q.js";import{a as _,i as v,n as y,o as b,t as x}from"./dialog-CVAp0B_q.js";import{t as S}from"./button-hdghxls7.js";import{a as C,i as w,o as T,s as E,t as D}from"./LazyTerminal-fxF4IO4o.js";import{n as O}from"./x-CZCUod6A.js";import{A as k,M as A,c as j,j as M,k as N,n as P,r as F,t as I}from"./context-menu-fGutCa7q.js";import{r as L}from"./dist-DWt3BCrg.js";import{t as R}from"./NewProjectDialog-D-hVQlA4.js";import{n as z}from"./errors-0CwhraNS.js";import{t as B}from"./ws-DsytGlkr.js";var V=e(t(),1),H=r(),U=!1;function W(){let[e,t]=(0,V.useState)(U),[r,i]=(0,V.useState)(null);(0,V.useEffect)(()=>{if(!e)return;let t=!1;return B.spawnShell(n).then(e=>{t||i(e)}),()=>{t=!0}},[e]);let a=()=>{U=!1,t(!1),i(null)};return{open:e,term:r,toggle:()=>{e?(r&&B.killShell(n,r),a()):(U=!0,t(!0))},onExit:a}}function G({term:e,onExit:t}){return(0,H.jsx)(`div`,{className:`h-72 shrink-0 pb-6`,children:(0,H.jsx)(`div`,{className:`mx-auto size-full max-w-4xl px-6`,children:e!==null&&(0,H.jsx)(D,{stream:`home`,term:e,onExit:t})})})}var K=`group block w-full rounded-lg bg-surface p-4 text-left transition-colors hover:bg-elevated`,q=[{status:`running`,colour:`bg-running`},{status:`waiting_input`,colour:`bg-waiting`},{status:`interrupted`,colour:`bg-interrupted`}];function J({project:e,repoPath:t,sessions:n}){let r=n.filter(e=>e.status!==`archived`);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`h2`,{className:`truncate pr-16 text-base font-semibold text-fg group-hover:text-accent`,children:e.name}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:t??`…`}),(0,H.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-3 text-2xs text-fg-muted tabular-nums`,children:[(0,H.jsxs)(`span`,{children:[r.length,` session`,r.length===1?``:`s`]}),q.map(({status:e,colour:t})=>{let n=r.filter(t=>t.status===e).length;return n>0?(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`span`,{className:`size-1.5 rounded-full ${t}`}),n,` `,e.replace(`_`,` `)]},e):null})]})]})}function Y({icon:e,label:t,onClick:n}){return(0,H.jsx)(`button`,{type:`button`,"aria-label":t,title:t,onClick:e=>{e.preventDefault(),e.stopPropagation(),n()},className:`flex items-center rounded-md p-1.5 text-fg-muted transition-colors hover:bg-ground hover:text-fg`,children:(0,H.jsx)(e,{className:`size-4`})})}function X({project:e,repoPath:t,draggable:n,dragging:r,onDragStart:i,onDragEnd:a,onDragOver:s}){let c=u(),l=o(e.id),[d,f]=(0,V.useState)(!1),[m,C]=(0,V.useState)(e.name),[D,k]=(0,V.useState)(g(e)),N=t=>c.mutate({id:e.id,archived:t},{onError:e=>z(e)}),L=()=>{C(e.name),k(g(e)),f(!0)},R=()=>{let t=m.trim(),n=h(D);if(!t){f(!1);return}let r={...t===e.name?{}:{name:t},...n&&n!==g(e)?{abbrev:n}:{}};if(Object.keys(r).length===0){f(!1);return}c.mutate({id:e.id,...r},{onSuccess:()=>f(!1),onError:e=>z(e)})};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(I,{children:[(0,H.jsx)(j,{asChild:!0,children:(0,H.jsxs)(`div`,{draggable:n,onDragStart:i,onDragEnd:a,onDragOver:s,className:O(`group relative transition-opacity`,r&&`opacity-50`),children:[(0,H.jsx)(p,{draggable:!1,to:`/project/${e.id}`,className:K,children:(0,H.jsx)(J,{project:e,repoPath:t,sessions:l.data??[]})}),(0,H.jsx)(`div`,{className:`absolute right-2 top-2 hidden gap-0.5 group-hover:flex has-[[data-state=open]]:flex pointer-coarse:flex`,children:e.archived?(0,H.jsx)(Y,{icon:A,label:`Reopen project`,onClick:()=>N(!1)}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(Y,{icon:w,label:`Edit project`,onClick:L}),(0,H.jsx)(Y,{icon:M,label:`Archive project`,onClick:()=>N(!0)})]})})]})}),(0,H.jsx)(P,{children:e.archived?(0,H.jsxs)(F,{onSelect:()=>N(!1),children:[(0,H.jsx)(A,{}),` Reopen`]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(F,{onSelect:L,children:[(0,H.jsx)(w,{}),` Edit`]}),(0,H.jsxs)(F,{onSelect:()=>N(!0),children:[(0,H.jsx)(M,{}),` Archive`]})]})})]}),(0,H.jsx)(x,{open:d,onOpenChange:f,children:(0,H.jsxs)(y,{children:[(0,H.jsx)(_,{children:(0,H.jsx)(b,{children:`Edit project`})}),(0,H.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>{e.preventDefault(),R()},children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(T,{htmlFor:`project-name-${e.id}`,children:`Name`}),(0,H.jsx)(E,{id:`project-name-${e.id}`,value:m,onChange:e=>C(e.target.value),autoFocus:!0})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(T,{htmlFor:`project-abbrev-${e.id}`,children:`Abbreviation`}),(0,H.jsx)(E,{id:`project-abbrev-${e.id}`,maxLength:5,value:D,onChange:e=>k(h(e.target.value)),className:`w-24 uppercase`}),(0,H.jsxs)(`p`,{className:`text-2xs text-fg-muted`,children:[`Up to `,5,` characters — the label on the collapsed sidebar rail.`]})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(T,{className:`text-fg-muted`,children:`Path`}),(0,H.jsx)(`p`,{className:`truncate text-2xs text-fg-muted`,children:t??`…`})]}),(0,H.jsxs)(v,{children:[(0,H.jsx)(S,{type:`button`,variant:`ghost`,onClick:()=>f(!1),children:`Cancel`}),(0,H.jsx)(S,{type:`submit`,disabled:!m.trim()||c.isPending,children:`Save`})]})]})]})})]})}function Z({icon:e,label:t,hint:n,onClick:r}){return(0,H.jsxs)(`button`,{type:`button`,onClick:r,className:`group flex flex-col rounded-lg bg-surface p-4 text-left transition-colors hover:bg-elevated`,children:[(0,H.jsxs)(`h2`,{className:`flex items-center gap-2 truncate text-base font-semibold text-fg group-hover:text-accent`,children:[(0,H.jsx)(e,{className:`size-4 shrink-0`}),t]}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:n})]})}function Q(){let e=a(),t=s(e??void 0),n=d(),r=l(e??void 0),o=c(e??``),[u,p]=(0,V.useState)(!1),[h,g]=(0,V.useState)(null),[_,v]=(0,V.useState)(!1),y=W(),b=i(`palette.toggle`),x=e=>n.data?.find(t=>t.id===e)?.path,S=t.data??[],w=r.data?.projectOrder??[],T=N(S.filter(e=>!e.archived),w),E=S.filter(e=>e.archived),D=(e,t)=>{e!==t&&o.mutate({projectOrder:k(T.map(e=>e.id),e,t)})};return(0,H.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,H.jsxs)(`div`,{className:`mx-auto max-w-4xl p-6`,children:[S.length===0&&(0,H.jsxs)(`div`,{className:`mb-8 mt-16 flex flex-col items-center gap-3 text-center`,children:[(0,H.jsx)(C,{className:`size-8 text-fg-muted`}),(0,H.jsxs)(`p`,{className:`text-sm text-fg-secondary`,children:[`No projects yet — open one below, or press `,b,`.`]})]}),(0,H.jsxs)(`div`,{className:`grid auto-rows-fr grid-cols-1 gap-3 sm:grid-cols-2`,children:[T.map(e=>(0,H.jsx)(X,{project:e,repoPath:x(e.repo_id),draggable:!0,dragging:h===e.id,onDragStart:()=>g(e.id),onDragEnd:()=>g(null),onDragOver:t=>{t.preventDefault(),h&&h!==e.id&&D(h,e.id)}},e.id)),(0,H.jsx)(Z,{icon:f,label:`Open project`,hint:`Point at a repository on this host`,onClick:()=>p(!0)}),(0,H.jsx)(Z,{icon:m,label:y.open?`Close terminal`:`Open terminal`,hint:y.open?`End the shell below`:`A shell at ~ for cloning repositories`,onClick:y.toggle})]}),E.length>0&&(0,H.jsxs)(`div`,{className:`mt-6`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:`flex items-center gap-1.5 px-1 py-1.5 text-2xs uppercase tracking-wide text-fg-muted transition-colors hover:text-fg`,children:[(0,H.jsx)(L,{className:O(`size-3 transition-transform`,_&&`rotate-90`)}),(0,H.jsx)(M,{className:`size-3`}),(0,H.jsx)(`span`,{children:`Archived`}),(0,H.jsx)(`span`,{className:`tabular-nums`,children:E.length})]}),_&&(0,H.jsx)(`div`,{className:`mt-2 grid grid-cols-1 gap-3 sm:grid-cols-2`,children:E.map(e=>(0,H.jsx)(X,{project:e,repoPath:x(e.repo_id),draggable:!1,dragging:!1,onDragStart:()=>{},onDragEnd:()=>{},onDragOver:()=>{}},e.id))})]})]})}),y.open&&(0,H.jsx)(G,{term:y.term,onExit:y.onExit}),e!==null&&(0,H.jsx)(R,{profileId:e,open:u,onOpenChange:p})]})}export{Q as Dashboard};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{n}from"./index-CIyjjiv2.js";import{i as r,t as i,u as a}from"./buffer-store-CXH0xBDj.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./dialog-cFDquLR6.js";import{t as f}from"./button-CZSpHYG9.js";import{t as p}from"./x-CZCUod6A.js";import{t as m}from"./createLucideIcon-DyMAgLa3.js";import{t as h}from"./drafts-B_tChlzR.js";import{t as g}from"./editor-sync-W1bamxAP.js";var _=m(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),v=e(t(),1),y=n();function b(e,t,n){let o=i(e,t,n);return(0,v.useSyncExternalStore)((0,v.useCallback)(e=>a(o,e),[o]),()=>r(o))}function x({session:e,path:t,kind:n,root:r}){return b(e,t,r)&&n!==`commit`?(0,y.jsx)(_,{"aria-hidden":!0,className:`size-2 shrink-0 fill-current text-fg-muted group-hover:hidden`}):null}function S({session:e,path:t,kind:n,root:r,label:i,onClose:a}){let m=b(e,t,r)&&n!==`commit`,[_,x]=(0,v.useState)(!1),S=()=>m?x(!0):a();return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`button`,{onClick:e=>{e.stopPropagation(),S()},className:`hidden size-4 items-center justify-center rounded-sm text-fg-muted transition-colors hover:text-fg group-hover:flex pointer-coarse:flex`,"aria-label":`Close ${i}`,children:(0,y.jsx)(p,{className:`size-3`})}),(0,y.jsx)(d,{open:_,onOpenChange:e=>!e&&x(!1),children:(0,y.jsxs)(c,{children:[(0,y.jsxs)(o,{children:[(0,y.jsxs)(l,{children:[`Discard changes to `,i,`?`]}),(0,y.jsx)(u,{children:`This file has unsaved changes. Closing the tab will discard them.`})]}),(0,y.jsxs)(s,{children:[(0,y.jsx)(f,{variant:`ghost`,onClick:()=>x(!1),children:`Keep editing`}),(0,y.jsx)(f,{variant:`danger`,onClick:()=>{h(e,t,r),g(e,t,r),x(!1),a()},children:`Discard`})]})]})})]})}export{x as EditorDirtyDot,S as EditorTabClose};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{n}from"./index-W9vnFL1i.js";import{i as r,t as i,u as a}from"./buffer-store-NeRSjzSg.js";import{a as o,i as s,n as c,o as l,r as u,t as d}from"./dialog-CVAp0B_q.js";import{t as f}from"./button-hdghxls7.js";import{t as p}from"./x-CZCUod6A.js";import{t as m}from"./createLucideIcon-DyMAgLa3.js";import{t as h}from"./drafts-B_tChlzR.js";import{t as g}from"./editor-sync-W1bamxAP.js";var _=m(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),v=e(t(),1),y=n();function b(e,t,n){let o=i(e,t,n);return(0,v.useSyncExternalStore)((0,v.useCallback)(e=>a(o,e),[o]),()=>r(o))}function x({session:e,path:t,kind:n,root:r}){return b(e,t,r)&&n!==`commit`?(0,y.jsx)(_,{"aria-hidden":!0,className:`size-2 shrink-0 fill-current text-fg-muted group-hover:hidden`}):null}function S({session:e,path:t,kind:n,root:r,label:i,onClose:a}){let m=b(e,t,r)&&n!==`commit`,[_,x]=(0,v.useState)(!1),S=()=>m?x(!0):a();return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`button`,{onClick:e=>{e.stopPropagation(),S()},className:`hidden size-4 items-center justify-center rounded-sm text-fg-muted transition-colors hover:text-fg group-hover:flex pointer-coarse:flex`,"aria-label":`Close ${i}`,children:(0,y.jsx)(p,{className:`size-3`})}),(0,y.jsx)(d,{open:_,onOpenChange:e=>!e&&x(!1),children:(0,y.jsxs)(c,{children:[(0,y.jsxs)(o,{children:[(0,y.jsxs)(l,{children:[`Discard changes to `,i,`?`]}),(0,y.jsx)(u,{children:`This file has unsaved changes. Closing the tab will discard them.`})]}),(0,y.jsxs)(s,{children:[(0,y.jsx)(f,{variant:`ghost`,onClick:()=>x(!1),children:`Keep editing`}),(0,y.jsx)(f,{variant:`danger`,onClick:()=>{h(e,t,r),g(e,t,r),x(!1),a()},children:`Discard`})]})]})})]})}export{x as EditorDirtyDot,S as EditorTabClose};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{n}from"./index-CIyjjiv2.js";import{n as r,t as i}from"./x-CZCUod6A.js";import{t as a}from"./createLucideIcon-DyMAgLa3.js";import{C as o,b as s,x as c}from"./selection-actions-BTyYbd08.js";import{t as l}from"./chevron-down--sjpQEHH.js";var u=a(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),d=/[.*+?^${}()|[\]\\]/g;function f(e,t){if(e.length===0)return null;try{let n=t.regex?e:e.replace(d,`\\$&`);return t.wholeWord&&(n=`\\b(?:${n})\\b`),new RegExp(n,t.caseSensitive?`g`:`gi`)}catch{return null}}function p(e,t){return e.length===0||f(e,t)!==null}function m(e,t,n,r=1e3){let i=f(t,n);if(t.length>0&&i===null)return{matches:[],invalid:!0,limited:!1};if(!i)return{matches:[],invalid:!1,limited:!1};let a=[],o;for(;(o=i.exec(e))!==null;){if(o[0].length===0){i.lastIndex++;continue}if(a.length===r)return{matches:a,invalid:!1,limited:!0};a.push({start:o.index,end:o.index+o[0].length})}return{matches:a,invalid:!1,limited:!1}}var h=e(t(),1),g={index:-1,count:0},_={caseSensitive:!1,wholeWord:!1,regex:!1},v=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform);function y(e,t=v){return e.key.toLowerCase()===`f`&&!e.altKey&&!e.shiftKey&&(t?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey)}function b({shortcutEnabled:e,onFind:t,onClear:n,onCloseFocus:r}){let[i,a]=(0,h.useState)(!1),[o,s]=(0,h.useState)(0),[c,l]=(0,h.useState)(``),[u,d]=(0,h.useState)(_),[f,p]=(0,h.useState)(g),m=(0,h.useRef)({open:i,query:c,options:u});m.current={open:i,query:c,options:u};let v=(0,h.useRef)(t);v.current=t;let b=(0,h.useRef)(n);b.current=n;let x=(0,h.useRef)(r);x.current=r;let S=(0,h.useCallback)(e=>{let t=m.current;if(!t.open)return;let n=v.current(t.query,t.options,e);n&&p(n)},[]),C=(0,h.useCallback)(()=>{a(!0),s(e=>e+1)},[]),w=(0,h.useCallback)(()=>{a(!1),b.current(),x.current?.()},[]),T=(0,h.useCallback)(()=>S(`next`),[S]),E=(0,h.useCallback)(()=>S(`previous`),[S]),D=(0,h.useCallback)(()=>S(`reset`),[S]);return(0,h.useEffect)(()=>{i&&S(`reset`)},[i,c,u,S]),(0,h.useEffect)(()=>{if(!e)return;let t=e=>{y(e)&&(e.preventDefault(),e.stopPropagation(),C())};return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[e,C]),(0,h.useEffect)(()=>()=>{b.current()},[]),{open:i,focusKey:o,query:c,options:u,result:f,openFind:C,close:w,next:T,previous:E,refresh:D,setQuery:l,setOptions:d,setResult:p}}var x=[[`$$`,`$$`,!0],[`\\[`,`\\]`,!0],[`\\(`,`\\)`,!1],[`$`,`$`,!1]];function S(e){return e===`$`||e===`\\`}function C(e,t=0){for(let[n,r,i]of x){if(!e.startsWith(n,t))continue;let a=t+n.length,o=T(e,a,r);if(o<0)continue;let s=e.slice(a,o);if(!(s.trim()===``||/\n[ \t]*\n/.test(s))&&!(n===`$`&&!E(s,e[o+r.length])))return{length:o+r.length-t,tex:s,display:i}}return null}function w(e,t=0){for(let n=t;n<e.length;n++){if(!S(e[n]))continue;let t=C(e,n);if(t)return{...t,start:n}}return null}function T(e,t,n){for(let r=t;r<e.length;r++){if(e.startsWith(n,r))return r;e[r]===`\\`&&r++}return-1}function E(e,t){return!/^\s|\s$/.test(e)&&!(t!==void 0&&/\d/.test(t))}var D=n();function O({active:e,label:t,onClick:n,children:i}){return(0,D.jsx)(`button`,{type:`button`,"aria-label":t,"aria-pressed":e,title:t,onClick:n,className:r(`rounded-sm p-1 transition-colors`,e?`bg-surface text-accent`:`text-fg-muted hover:bg-surface hover:text-fg`),children:i})}function k({query:e,result:t}){return e.length===0?null:t.invalid?(0,D.jsx)(D.Fragment,{children:`Invalid expression`}):t.count===0?(0,D.jsx)(D.Fragment,{children:`No results`}):t.limited?(0,D.jsxs)(D.Fragment,{children:[t.count,`+ results`]}):t.index<0?(0,D.jsxs)(D.Fragment,{children:[t.count,` results`]}):(0,D.jsxs)(D.Fragment,{children:[t.index+1,` of `,t.count]})}function A({query:e,focusKey:t,options:n,result:r,onQueryChange:a,onOptionsChange:d,onNext:f,onPrevious:p,onClose:m}){let g=(0,h.useRef)(null);(0,h.useEffect)(()=>{g.current?.focus(),g.current?.select()},[t]);let _=r.count>0&&!r.invalid;return(0,D.jsxs)(`div`,{role:`search`,"aria-label":`Find in view`,className:`absolute right-2 top-0 z-30 flex h-10 w-[min(34rem,calc(100%-0.5rem))] items-center gap-1.5 rounded-b-md bg-surface px-1.5 shadow-lg`,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),m();return}if(e.key===`Enter`){e.preventDefault(),e.stopPropagation(),e.shiftKey?p():f();return}y(e.nativeEvent)&&(e.preventDefault(),e.stopPropagation(),g.current?.select())},children:[(0,D.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center rounded-md bg-elevated pl-2 pr-0.5`,children:[(0,D.jsx)(`input`,{ref:g,value:e,onChange:e=>a(e.target.value),placeholder:`Find`,spellCheck:!1,autoComplete:`off`,"aria-label":`Find`,className:`h-7 min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-fg-muted`}),(0,D.jsx)(O,{active:n.caseSensitive,label:`Match case`,onClick:()=>d({...n,caseSensitive:!n.caseSensitive}),children:(0,D.jsx)(o,{className:`size-3.5`})}),(0,D.jsx)(O,{active:n.wholeWord,label:`Match whole word`,onClick:()=>d({...n,wholeWord:!n.wholeWord}),children:(0,D.jsx)(s,{className:`size-3.5`})}),(0,D.jsx)(O,{active:n.regex,label:`Use regular expression`,onClick:()=>d({...n,regex:!n.regex}),children:(0,D.jsx)(c,{className:`size-3.5`})})]}),(0,D.jsx)(`div`,{className:`w-20 shrink-0 text-center text-xs text-fg-muted`,children:(0,D.jsx)(k,{query:e,result:r})}),(0,D.jsx)(`button`,{type:`button`,"aria-label":`Previous match`,title:`Previous match (Shift+Enter)`,disabled:!_,onClick:p,className:`rounded-sm p-1 text-fg-muted transition-colors hover:bg-elevated hover:text-fg disabled:cursor-default disabled:opacity-40`,children:(0,D.jsx)(u,{className:`size-4`})}),(0,D.jsx)(`button`,{type:`button`,"aria-label":`Next match`,title:`Next match (Enter)`,disabled:!_,onClick:f,className:`rounded-sm p-1 text-fg-muted transition-colors hover:bg-elevated hover:text-fg disabled:cursor-default disabled:opacity-40`,children:(0,D.jsx)(l,{className:`size-4`})}),(0,D.jsx)(`button`,{type:`button`,"aria-label":`Close find`,title:`Close (Escape)`,onClick:m,className:`rounded-sm p-1 text-fg-muted transition-colors hover:bg-elevated hover:text-fg`,children:(0,D.jsx)(i,{className:`size-4`})})]})}export{b as a,m as c,C as i,p as l,S as n,y as o,w as r,g as s,A as t};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{n}from"./index-W9vnFL1i.js";import{n as r,t as i}from"./x-CZCUod6A.js";import{t as a}from"./createLucideIcon-DyMAgLa3.js";import{C as o,b as s,x as c}from"./selection-actions-awCJJCSe.js";import{t as l}from"./chevron-down--sjpQEHH.js";var u=a(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),d=/[.*+?^${}()|[\]\\]/g;function f(e,t){if(e.length===0)return null;try{let n=t.regex?e:e.replace(d,`\\$&`);return t.wholeWord&&(n=`\\b(?:${n})\\b`),new RegExp(n,t.caseSensitive?`g`:`gi`)}catch{return null}}function p(e,t){return e.length===0||f(e,t)!==null}function m(e,t,n,r=1e3){let i=f(t,n);if(t.length>0&&i===null)return{matches:[],invalid:!0,limited:!1};if(!i)return{matches:[],invalid:!1,limited:!1};let a=[],o;for(;(o=i.exec(e))!==null;){if(o[0].length===0){i.lastIndex++;continue}if(a.length===r)return{matches:a,invalid:!1,limited:!0};a.push({start:o.index,end:o.index+o[0].length})}return{matches:a,invalid:!1,limited:!1}}var h=e(t(),1),g={index:-1,count:0},_={caseSensitive:!1,wholeWord:!1,regex:!1},v=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform);function y(e,t=v){return e.key.toLowerCase()===`f`&&!e.altKey&&!e.shiftKey&&(t?e.metaKey&&!e.ctrlKey:e.ctrlKey&&!e.metaKey)}function b({shortcutEnabled:e,onFind:t,onClear:n,onCloseFocus:r}){let[i,a]=(0,h.useState)(!1),[o,s]=(0,h.useState)(0),[c,l]=(0,h.useState)(``),[u,d]=(0,h.useState)(_),[f,p]=(0,h.useState)(g),m=(0,h.useRef)({open:i,query:c,options:u});m.current={open:i,query:c,options:u};let v=(0,h.useRef)(t);v.current=t;let b=(0,h.useRef)(n);b.current=n;let x=(0,h.useRef)(r);x.current=r;let S=(0,h.useCallback)(e=>{let t=m.current;if(!t.open)return;let n=v.current(t.query,t.options,e);n&&p(n)},[]),C=(0,h.useCallback)(()=>{a(!0),s(e=>e+1)},[]),w=(0,h.useCallback)(()=>{a(!1),b.current(),x.current?.()},[]),T=(0,h.useCallback)(()=>S(`next`),[S]),E=(0,h.useCallback)(()=>S(`previous`),[S]),D=(0,h.useCallback)(()=>S(`reset`),[S]);return(0,h.useEffect)(()=>{i&&S(`reset`)},[i,c,u,S]),(0,h.useEffect)(()=>{if(!e)return;let t=e=>{y(e)&&(e.preventDefault(),e.stopPropagation(),C())};return window.addEventListener(`keydown`,t,!0),()=>window.removeEventListener(`keydown`,t,!0)},[e,C]),(0,h.useEffect)(()=>()=>{b.current()},[]),{open:i,focusKey:o,query:c,options:u,result:f,openFind:C,close:w,next:T,previous:E,refresh:D,setQuery:l,setOptions:d,setResult:p}}var x=[[`$$`,`$$`,!0],[`\\[`,`\\]`,!0],[`\\(`,`\\)`,!1],[`$`,`$`,!1]];function S(e){return e===`$`||e===`\\`}function C(e,t=0){for(let[n,r,i]of x){if(!e.startsWith(n,t))continue;let a=t+n.length,o=T(e,a,r);if(o<0)continue;let s=e.slice(a,o);if(!(s.trim()===``||/\n[ \t]*\n/.test(s))&&!(n===`$`&&!E(s,e[o+r.length])))return{length:o+r.length-t,tex:s,display:i}}return null}function w(e,t=0){for(let n=t;n<e.length;n++){if(!S(e[n]))continue;let t=C(e,n);if(t)return{...t,start:n}}return null}function T(e,t,n){for(let r=t;r<e.length;r++){if(e.startsWith(n,r))return r;e[r]===`\\`&&r++}return-1}function E(e,t){return!/^\s|\s$/.test(e)&&!(t!==void 0&&/\d/.test(t))}var D=n();function O({active:e,label:t,onClick:n,children:i}){return(0,D.jsx)(`button`,{type:`button`,"aria-label":t,"aria-pressed":e,title:t,onClick:n,className:r(`rounded-sm p-1 transition-colors`,e?`bg-surface text-accent`:`text-fg-muted hover:bg-surface hover:text-fg`),children:i})}function k({query:e,result:t}){return e.length===0?null:t.invalid?(0,D.jsx)(D.Fragment,{children:`Invalid expression`}):t.count===0?(0,D.jsx)(D.Fragment,{children:`No results`}):t.limited?(0,D.jsxs)(D.Fragment,{children:[t.count,`+ results`]}):t.index<0?(0,D.jsxs)(D.Fragment,{children:[t.count,` results`]}):(0,D.jsxs)(D.Fragment,{children:[t.index+1,` of `,t.count]})}function A({query:e,focusKey:t,options:n,result:r,onQueryChange:a,onOptionsChange:d,onNext:f,onPrevious:p,onClose:m}){let g=(0,h.useRef)(null);(0,h.useEffect)(()=>{g.current?.focus(),g.current?.select()},[t]);let _=r.count>0&&!r.invalid;return(0,D.jsxs)(`div`,{role:`search`,"aria-label":`Find in view`,className:`absolute right-2 top-0 z-30 flex h-10 w-[min(34rem,calc(100%-0.5rem))] items-center gap-1.5 rounded-b-md bg-surface px-1.5 shadow-lg`,onKeyDown:e=>{if(e.key===`Escape`){e.preventDefault(),e.stopPropagation(),m();return}if(e.key===`Enter`){e.preventDefault(),e.stopPropagation(),e.shiftKey?p():f();return}y(e.nativeEvent)&&(e.preventDefault(),e.stopPropagation(),g.current?.select())},children:[(0,D.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center rounded-md bg-elevated pl-2 pr-0.5`,children:[(0,D.jsx)(`input`,{ref:g,value:e,onChange:e=>a(e.target.value),placeholder:`Find`,spellCheck:!1,autoComplete:`off`,"aria-label":`Find`,className:`h-7 min-w-0 flex-1 bg-transparent text-sm text-fg outline-none placeholder:text-fg-muted`}),(0,D.jsx)(O,{active:n.caseSensitive,label:`Match case`,onClick:()=>d({...n,caseSensitive:!n.caseSensitive}),children:(0,D.jsx)(o,{className:`size-3.5`})}),(0,D.jsx)(O,{active:n.wholeWord,label:`Match whole word`,onClick:()=>d({...n,wholeWord:!n.wholeWord}),children:(0,D.jsx)(s,{className:`size-3.5`})}),(0,D.jsx)(O,{active:n.regex,label:`Use regular expression`,onClick:()=>d({...n,regex:!n.regex}),children:(0,D.jsx)(c,{className:`size-3.5`})})]}),(0,D.jsx)(`div`,{className:`w-20 shrink-0 text-center text-xs text-fg-muted`,children:(0,D.jsx)(k,{query:e,result:r})}),(0,D.jsx)(`button`,{type:`button`,"aria-label":`Previous match`,title:`Previous match (Shift+Enter)`,disabled:!_,onClick:p,className:`rounded-sm p-1 text-fg-muted transition-colors hover:bg-elevated hover:text-fg disabled:cursor-default disabled:opacity-40`,children:(0,D.jsx)(u,{className:`size-4`})}),(0,D.jsx)(`button`,{type:`button`,"aria-label":`Next match`,title:`Next match (Enter)`,disabled:!_,onClick:f,className:`rounded-sm p-1 text-fg-muted transition-colors hover:bg-elevated hover:text-fg disabled:cursor-default disabled:opacity-40`,children:(0,D.jsx)(l,{className:`size-4`})}),(0,D.jsx)(`button`,{type:`button`,"aria-label":`Close find`,title:`Close (Escape)`,onClick:m,className:`rounded-sm p-1 text-fg-muted transition-colors hover:bg-elevated hover:text-fg`,children:(0,D.jsx)(i,{className:`size-4`})})]})}export{b as a,m as c,C as i,p as l,S as n,y as o,w as r,g as s,A as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Terminal-DQL8GETy.js","assets/rolldown-runtime-QTnfLwEv.js","assets/react-CZI7_Jkm.js","assets/index-W9vnFL1i.js","assets/index-Bwl8S5Du.css","assets/dist-1iWQMdtt.js","assets/protocol-support-DM3D3Owq.js","assets/copy-B38GDFbv.js","assets/createLucideIcon-DyMAgLa3.js","assets/x-CZCUod6A.js","assets/selection-actions-awCJJCSe.js","assets/button-hdghxls7.js","assets/ws-DsytGlkr.js","assets/FindWidget-B6dVpkKr.js","assets/chevron-down--sjpQEHH.js","assets/code-DRWf9a5s.js","assets/errors-0CwhraNS.js","assets/Terminal-BrP-ENHg.css"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{at as n,n as r,t as i}from"./index-W9vnFL1i.js";import{S as a,w as o,x as s,y as c}from"./dialog-CVAp0B_q.js";import{a as l}from"./button-hdghxls7.js";import{n as u}from"./x-CZCUod6A.js";import{t as d}from"./createLucideIcon-DyMAgLa3.js";var f=e(t(),1),p=[`top`,`right`,`bottom`,`left`],m=Math.min,h=Math.max,g=Math.round,_=Math.floor,v=e=>({x:e,y:e}),y={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function b(e,t,n){return h(e,m(t,n))}function x(e,t){return typeof e==`function`?e(t):e}function S(e){return e.split(`-`)[0]}function C(e){return e.split(`-`)[1]}function w(e){return e===`x`?`y`:`x`}function T(e){return e===`y`?`height`:`width`}function E(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function D(e){return w(E(e))}function O(e,t,n){n===void 0&&(n=!1);let r=C(e),i=D(e),a=T(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=L(o)),[o,L(o)]}function k(e){let t=L(e);return[A(e),t,A(t)]}function A(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var j=[`left`,`right`],M=[`right`,`left`],N=[`top`,`bottom`],P=[`bottom`,`top`];function F(e,t,n){switch(e){case`top`:case`bottom`:return n?t?M:j:t?j:M;case`left`:case`right`:return t?N:P;default:return[]}}function I(e,t,n,r){let i=C(e),a=F(S(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(A)))),a}function L(e){let t=S(e);return y[t]+e.slice(t.length)}function R(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function z(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:R(e)}function B(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function ee(e,t,n){let{reference:r,floating:i}=e,a=E(t),o=D(t),s=T(o),c=S(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=C(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function te(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=x(t,e),p=z(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=B(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=B(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var ne=50,re=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:te},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=ee(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<ne&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=ee(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},ie=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=x(e,t)||{};if(l==null)return{};let d=z(u),f={x:n,y:r},p=D(i),h=T(p),g=await o.getDimensions(l),_=p===`y`,v=_?`top`:`left`,y=_?`bottom`:`right`,S=_?`clientHeight`:`clientWidth`,w=a.reference[h]+a.reference[p]-f[p]-a.floating[h],E=f[p]-a.reference[p],O=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),k=O?O[S]:0;(!k||!await(o.isElement==null?void 0:o.isElement(O)))&&(k=s.floating[S]||a.floating[h]);let A=w/2-E/2,j=k/2-g[h]/2-1,M=m(d[v],j),N=m(d[y],j),P=k-g[h]-N,F=k/2-g[h]/2+A,I=b(M,F,P),L=!c.arrow&&C(i)!=null&&F!==I&&a.reference[h]/2-(F<M?M:N)-g[h]/2<0,R=L?F<M?F-M:F-P:0;return{[p]:f[p]+R,data:{[p]:I,centerOffset:F-I-R,...L&&{alignmentOffset:R}},reset:L}}}),ae=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=x(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=S(r),_=E(o),v=S(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[L(o)]:k(o)),C=p!==`none`;!d&&C&&b.push(...I(o,m,p,y));let w=[o,...b],T=await s.detectOverflow(t,h),D=[],A=i.flip?.overflows||[];if(l&&D.push(T[g]),u){let e=O(r,a,y);D.push(T[e[0]],T[e[1]])}if(A=[...A,{placement:r,overflows:D}],!D.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=w[e];if(t&&(!(u===`alignment`&&_!==E(t))||A.every(e=>E(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:A},reset:{placement:t}};let n=A.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=A.filter(e=>{if(C){let t=E(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function oe(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function se(e){return p.some(t=>e[t]>=0)}var ce=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=x(e,t);switch(i){case`referenceHidden`:{let e=oe(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:se(e)}}}case`escaped`:{let e=oe(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:se(e)}}}default:return{}}}}},le=new Set([`left`,`top`]);async function ue(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=S(n),s=C(n),c=E(n)===`y`,l=le.has(o)?-1:1,u=a&&c?-1:1,d=x(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var de=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await ue(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},fe=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=x(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=E(i),p=w(f),m=u[p],h=u[f],g=(e,t)=>b(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},pe=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=x(e,t),u={x:n,y:r},d=E(i),f=w(d),p=u[f],m=u[d],h=x(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:h.mainAxis??0,crossAxis:h.crossAxis??0};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;p<t?p=t:p>n&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=le.has(S(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[f]:p,[d]:m}}}},me=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=x(e,t),c=await i.detectOverflow(t,s),l=S(n),u=C(n),d=E(n)===`y`,{width:f,height:p}=r.floating,g,_;l===`top`||l===`bottom`?(g=l,_=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(_=l,g=u===`end`?`top`:`bottom`);let v=p-c.top-c.bottom,y=f-c.left-c.right,b=m(p-c[g],v),w=m(f-c[_],y),T=t.middlewareData.shift,D=!T,O=b,k=w;T!=null&&T.enabled.x&&(k=y),T!=null&&T.enabled.y&&(O=v),D&&!u&&(d?k=f-2*h(c.left,c.right):O=p-2*h(c.top,c.bottom)),await o({...t,availableWidth:k,availableHeight:O});let A=await i.getDimensions(a.floating);return f!==A.width||p!==A.height?{reset:{rects:!0}}:{}}}};function he(){return typeof window<`u`}function V(e){return ge(e)?(e.nodeName||``).toLowerCase():`#document`}function H(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function U(e){return((ge(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function ge(e){return he()?e instanceof Node||e instanceof H(e).Node:!1}function W(e){return he()?e instanceof Element||e instanceof H(e).Element:!1}function G(e){return he()?e instanceof HTMLElement||e instanceof H(e).HTMLElement:!1}function _e(e){return!he()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof H(e).ShadowRoot}function ve(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=J(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ye(e){return/^(table|td|th)$/.test(V(e))}function be(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var xe=/transform|translate|scale|rotate|perspective|filter/,Se=/paint|layout|strict|content/,K=e=>!!e&&e!==`none`,Ce;function we(e){let t=W(e)?J(e):e;return K(t.transform)||K(t.translate)||K(t.scale)||K(t.rotate)||K(t.perspective)||!Ee()&&(K(t.backdropFilter)||K(t.filter))||xe.test(t.willChange||``)||Se.test(t.contain||``)}function Te(e){let t=Y(e);for(;G(t)&&!q(t);){if(we(t))return t;if(be(t))return null;t=Y(t)}return null}function Ee(){return Ce??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Ce}function q(e){return/^(html|body|#document)$/.test(V(e))}function J(e){return H(e).getComputedStyle(e)}function De(e){return W(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Y(e){if(V(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||_e(e)&&e.host||U(e);return _e(t)?t.host:t}function Oe(e){let t=Y(e);return q(t)?(e.ownerDocument||e).body:G(t)&&ve(t)?t:Oe(t)}function X(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Oe(e),i=r===e.ownerDocument?.body,a=H(r);if(i){let e=ke(a);return t.concat(a,a.visualViewport||[],ve(r)?r:[],e&&n?X(e):[])}else return t.concat(r,X(r,[],n))}function ke(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Ae(e){let t=J(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=G(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=g(n)!==a||g(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function je(e){return W(e)?e:e.contextElement}function Z(e){let t=je(e);if(!G(t))return v(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Ae(t),o=(a?g(n.width):n.width)/r,s=(a?g(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Me=v(0);function Ne(e){let t=H(e);return!Ee()||!t.visualViewport?Me:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Pe(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===H(e)}function Q(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=je(e),o=v(1);t&&(r?W(r)&&(o=Z(r)):o=Z(e));let s=Pe(a,n,r)?Ne(a):v(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=H(a),t=W(r)?H(r):r,n=e,i=ke(n);for(;i&&t!==n;){let e=Z(i),t=i.getBoundingClientRect(),r=J(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=H(i),i=ke(n)}}return B({width:u,height:d,x:c,y:l})}function Fe(e,t){let n=De(e).scrollLeft;return t?t.left+n:Q(U(e)).left+n}function Ie(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Fe(e,n),y:n.top+t.scrollTop}}function Le(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=U(r),s=t?be(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=v(1),u=v(0),d=G(r);if((d||!a)&&((V(r)!==`body`||ve(o))&&(c=De(r)),d)){let e=Q(r);l=Z(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Ie(o,c):v(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function Re(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function ze(e){let t=De(e),n=e.ownerDocument.body,r=h(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=h(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+Fe(e),o=-t.scrollTop;return J(n).direction===`rtl`&&(a+=h(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var Be=25;function Ve(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=H(e),a=U(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!Ee()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(Fe(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=Be&&(s-=o)}return{width:s,height:c,x:l,y:u}}function He(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Z(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Ue(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=Ve(e,n,t);else if(t===`document`)r=ze(U(e));else if(W(t))r=He(t,n);else{let n=Ne(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return B(r)}function We(e,t){let n=t.get(e);if(n)return n;let r=X(e,[],!1).filter(e=>W(e)&&V(e)!==`body`),i=null,a=J(e).position===`fixed`,o=a?Y(e):e;for(;W(o)&&!q(o);){let e=J(o),t=we(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=Y(o)}return t.set(e,r),r}function Ge(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?be(t)?[]:We(t,this._c):[].concat(n),r],o=Ue(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=Ue(t,a[e],i);s=h(n.top,s),c=m(n.right,c),l=m(n.bottom,l),u=h(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function Ke(e){let{width:t,height:n}=Ae(e);return{width:t,height:n}}function qe(e,t,n){let r=G(t),i=U(t),a=n===`fixed`,o=Q(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=v(0);if((r||!a)&&((V(t)!==`body`||ve(i))&&(s=De(t)),r)){let e=Q(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}!r&&i&&(c.x=Fe(i));let l=i&&!r&&!a?Ie(i,s):v(0);return{x:o.left+s.scrollLeft-c.x-l.x,y:o.top+s.scrollTop-c.y-l.y,width:o.width,height:o.height}}function Je(e){return J(e).position===`static`}function Ye(e,t){if(!G(e)||J(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return U(e)===n&&(n=n.ownerDocument.body),n}function Xe(e,t){let n=H(e);if(be(e))return n;if(!G(e)){let t=Y(e);for(;t&&!q(t);){if(W(t)&&!Je(t))return t;t=Y(t)}return n}let r=Ye(e,t);for(;r&&ye(r)&&Je(r);)r=Ye(r,t);return r&&q(r)&&Je(r)&&!we(r)?n:r||Te(e)||n}var Ze=async function(e){let t=this.getOffsetParent||Xe,n=this.getDimensions,r=await n(e.floating);return{reference:qe(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Qe(e){return J(e).direction===`rtl`}var $e={convertOffsetParentRelativeRectToViewportRelativeRect:Le,getDocumentElement:U,getClippingRect:Ge,getOffsetParent:Xe,getElementRects:Ze,getClientRects:Re,getDimensions:Ke,getScale:Z,isElement:W,isRTL:Qe};function et(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function tt(e,t,n){let r=null,i,a=U(e);function o(){var e;clearTimeout(i),(e=r)==null||e.disconnect(),r=null}function s(n,c){n===void 0&&(n=!1),c===void 0&&(c=1),o();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(n||t(),!f||!p)return;let g=_(d),v=_(a.clientWidth-(u+f)),y=_(a.clientHeight-(d+p)),b=_(u),x={rootMargin:-g+`px `+-v+`px `+-y+`px `+-b+`px`,threshold:h(0,m(1,c))||1},S=!0;function C(t){let n=t[0].intersectionRatio;if(!et(l,e.getBoundingClientRect()))return s();if(n!==c){if(!S)return s();n?s(!1,n):i=setTimeout(()=>{s(!1,1e-7)},1e3)}S=!1}try{r=new IntersectionObserver(C,{...x,root:a.ownerDocument})}catch{r=new IntersectionObserver(C,x)}r.observe(e)}let c=H(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function nt(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=je(e),u=i||a?[...l?X(l):[],...t?X(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?tt(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Q(e):null;c&&g();function g(){let t=Q(e);h&&!et(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var rt=de,it=fe,at=ae,ot=me,st=ce,ct=ie,lt=pe,ut=(e,t,n)=>{let r=new Map,i=n??{},a={...$e,...i.platform,_c:r};return re(e,t,{...i,platform:a})},dt=e(n(),1),ft=typeof document<`u`?f.useLayoutEffect:function(){};function pt(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!pt(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!pt(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function mt(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function ht(e,t){let n=mt(e);return Math.round(t*n)/n}function gt(e){let t=f.useRef(e);return ft(()=>{t.current=e}),t}function _t(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=f.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=f.useState(r);pt(p,r)||m(r);let[h,g]=f.useState(null),[_,v]=f.useState(null),y=f.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),b=f.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||h,S=o||_,C=f.useRef(null),w=f.useRef(null),T=f.useRef(u),E=c!=null,D=gt(c),O=gt(i),k=gt(l),A=f.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),ut(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!pt(T.current,t)&&(T.current=t,dt.flushSync(()=>{d(t)}))})},[p,t,n,O,k]);ft(()=>{l===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let j=f.useRef(!1);ft(()=>(j.current=!0,()=>{j.current=!1}),[]),ft(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(D.current)return D.current(x,S,A);A()}},[x,S,A,D,E]);let M=f.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),N=f.useMemo(()=>({reference:x,floating:S}),[x,S]),P=f.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=ht(N.floating,u.x),r=ht(N.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...mt(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,N.floating,u.x,u.y]);return f.useMemo(()=>({...u,update:A,refs:M,elements:N,floatingStyles:P}),[u,A,M,N,P])}var vt=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:ct({element:r.current,padding:i}).fn(n):r?ct({element:r,padding:i}).fn(n):{}}}},yt=(e,t)=>{let n=rt(e);return{name:n.name,fn:n.fn,options:[e,t]}},bt=(e,t)=>{let n=it(e);return{name:n.name,fn:n.fn,options:[e,t]}},xt=(e,t)=>({fn:lt(e).fn,options:[e,t]}),St=(e,t)=>{let n=at(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ct=(e,t)=>{let n=ot(e);return{name:n.name,fn:n.fn,options:[e,t]}},wt=(e,t)=>{let n=st(e);return{name:n.name,fn:n.fn,options:[e,t]}},Tt=(e,t)=>{let n=vt(e);return{name:n.name,fn:n.fn,options:[e,t]}},$=r(),Et=`Arrow`,Dt=f.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...o}=e;return(0,$.jsx)(a.svg,{...o,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,$.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});Dt.displayName=Et;var Ot=Dt;function kt(e){let[t,n]=f.useState(void 0);return c(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var At=`Popper`,[jt,Mt]=o(At),[Nt,Pt]=jt(At),Ft=e=>{let{__scopePopper:t,children:n}=e,[r,i]=f.useState(null),[a,o]=f.useState(void 0);return(0,$.jsx)(Nt,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})};Ft.displayName=At;var It=`PopperAnchor`,Lt=f.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,o=Pt(It,n),s=f.useRef(null),c=o.onAnchorChange,u=l(t,f.useCallback(e=>{s.current=e,e&&c(e)},[c])),d=f.useRef(null);f.useEffect(()=>{if(!r)return;let e=d.current;d.current=r.current,e!==d.current&&c(d.current)});let p=o.placementState&&qt(o.placementState),m=p?.[0],h=p?.[1];return r?null:(0,$.jsx)(a.div,{"data-radix-popper-side":m,"data-radix-popper-align":h,...i,ref:u})});Lt.displayName=It;var Rt=`PopperContent`,[zt,Bt]=jt(Rt),Vt=f.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:o=`center`,alignOffset:u=0,arrowPadding:d=0,avoidCollisions:p=!0,collisionBoundary:m=[],collisionPadding:h=0,sticky:g=`partial`,hideWhenDetached:_=!1,updatePositionStrategy:v=`optimized`,onPlaced:y,...b}=e,x=Pt(Rt,n),[S,C]=f.useState(null),w=l(t,C),[T,E]=f.useState(null),D=kt(T),O=D?.width??0,k=D?.height??0,A=r+(o===`center`?``:`-`+o),j=typeof h==`number`?h:{top:0,right:0,bottom:0,left:0,...h},M=Array.isArray(m)?m:[m],N=M.length>0,P={padding:j,boundary:M.filter(Gt),altBoundary:N},{refs:F,floatingStyles:I,placement:L,isPositioned:R,middlewareData:z}=_t({strategy:`fixed`,placement:A,whileElementsMounted:(...e)=>nt(...e,{animationFrame:v===`always`}),elements:{reference:x.anchor},middleware:[yt({mainAxis:i+k,alignmentAxis:u}),p&&bt({mainAxis:!0,crossAxis:!1,limiter:g===`partial`?xt():void 0,...P}),p&&St({...P}),Ct({...P,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),T&&Tt({element:T,padding:d}),Kt({arrowWidth:O,arrowHeight:k}),_&&wt({strategy:`referenceHidden`,...P,boundary:N?P.boundary:void 0})]}),B=x.setPlacementState;c(()=>(B(L),()=>{B(void 0)}),[L,B]);let[ee,te]=qt(L),ne=s(y);c(()=>{R&&ne?.()},[R,ne]);let re=z.arrow?.x,ie=z.arrow?.y,ae=z.arrow?.centerOffset!==0,[oe,se]=f.useState();return c(()=>{S&&se(window.getComputedStyle(S).zIndex)},[S]),(0,$.jsx)(`div`,{ref:F.setFloating,"data-radix-popper-content-wrapper":``,style:{...I,transform:R?I.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:oe,"--radix-popper-transform-origin":[z.transformOrigin?.x,z.transformOrigin?.y].join(` `),...z.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,$.jsx)(zt,{scope:n,placedSide:ee,placedAlign:te,onArrowChange:E,arrowX:re,arrowY:ie,shouldHideArrow:ae,children:(0,$.jsx)(a.div,{"data-side":ee,"data-align":te,...b,ref:w,style:{...b.style,animation:R?void 0:`none`}})})})});Vt.displayName=Rt;var Ht=`PopperArrow`,Ut={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Wt=f.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=Bt(Ht,n),a=Ut[i.placedSide];return(0,$.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,$.jsx)(Ot,{...r,ref:t,style:{...r.style,display:`block`}})})});Wt.displayName=Ht;function Gt(e){return e!==null}var Kt=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=qt(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function qt(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var Jt=Ft,Yt=Lt,Xt=Vt,Zt=Wt,Qt=`rounded-md bg-border/50 text-sm text-fg placeholder:text-fg-muted transition-colors hover:bg-border/80 focus:bg-border/80 disabled:cursor-not-allowed disabled:opacity-50`,$t=`relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-fg outline-none transition-colors`,en=`data-[highlighted]:bg-action data-[highlighted]:text-action-ink data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,tn=`data-[selected=true]:bg-action data-[selected=true]:text-action-ink data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`;function nn({className:e,type:t,...n}){return(0,$.jsx)(`input`,{type:t,className:u(`flex h-8 w-full px-2.5`,Qt,e),...n})}function rn({className:e,...t}){return(0,$.jsx)(`textarea`,{className:u(`flex min-h-16 w-full px-2.5 py-2`,Qt,e),...t})}var an=`Label`,on=f.forwardRef((e,t)=>(0,$.jsx)(a.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));on.displayName=an;var sn=on;function cn({className:e,...t}){return(0,$.jsx)(sn,{className:u(`text-xs font-medium text-fg-secondary peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}var ln=d(`folder-git-2`,[[`path`,{d:`M18 19a5 5 0 0 1-5-5v8`,key:`sz5oeg`}],[`path`,{d:`M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5`,key:`1w6njk`}],[`circle`,{cx:`13`,cy:`12`,r:`2`,key:`1j92g6`}],[`circle`,{cx:`20`,cy:`19`,r:`2`,key:`1obnsp`}]]),un=d(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]);function dn({id:e,value:t,onValueChange:n,onChoose:r,hints:i,placeholder:a,className:o,hintsClassName:s,autoFocus:c}){let[l,d]=(0,f.useState)(!1),[p,m]=(0,f.useState)(0),h=e=>{n(e.value),r?.(e),d(!1)};return(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(nn,{id:e,value:t,onChange:e=>{n(e.target.value),d(!0),m(0)},onFocus:()=>d(!0),onBlur:()=>d(!1),onKeyDown:e=>{if(!(!l||i.length===0))if(e.key===`ArrowDown`)e.preventDefault(),m(e=>(e+1)%i.length);else if(e.key===`ArrowUp`)e.preventDefault(),m(e=>(e-1+i.length)%i.length);else if(e.key===`Enter`||e.key===`Tab`){let t=i[p]??i[0];t&&(e.preventDefault(),h(t))}else e.key===`Escape`&&(e.stopPropagation(),d(!1))},placeholder:a,className:o,autoComplete:`off`,spellCheck:!1,autoFocus:c}),l&&i.length>0&&(0,$.jsx)(`ul`,{className:u(`absolute top-full z-10 mt-1 max-h-56 overflow-y-auto rounded-md bg-elevated p-1 shadow-xl`,s??`w-full`),children:i.map((e,t)=>(0,$.jsx)(`li`,{children:(0,$.jsxs)(`button`,{type:`button`,onMouseDown:t=>{t.preventDefault(),h(e)},onMouseEnter:()=>m(t),className:u(`relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-fg outline-none transition-colors`,`data-[selected=true]:bg-action data-[selected=true]:text-action-ink data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`,`w-full text-xs`),"data-selected":t===p,children:[(0,$.jsx)(`span`,{className:`truncate`,children:e.label??e.value}),e.badge&&(0,$.jsx)(`span`,{className:`ml-auto shrink-0 text-2xs opacity-70`,children:e.badge})]})},e.value))})]})}var fn=(0,f.lazy)(()=>i(()=>import(`./Terminal-DQL8GETy.js`).then(e=>({default:e.Terminal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]))),pn=null;async function mn(){pn=(await i(()=>import(`./Terminal-DQL8GETy.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]))).Terminal}function hn(e){return pn?(0,$.jsx)(pn,{...e}):(0,$.jsx)(f.Suspense,{fallback:(0,$.jsx)(`div`,{className:`size-full bg-ground`}),children:(0,$.jsx)(fn,{...e})})}export{Mt as _,ln as a,rn as c,en as d,$t as f,Jt as g,Xt as h,un as i,Qt as l,Zt as m,mn as n,cn as o,Yt as p,dn as r,nn as s,hn as t,tn as u,kt as v};