dorkos 0.131.0 → 0.132.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/bin/cli.js +324 -251
  2. package/dist/browser/fresh-verifier.mjs +13 -13
  3. package/dist/browser/native/darwin-supervisor-worker.mjs +3 -3
  4. package/dist/browser/native/package-manifest.json +1 -1
  5. package/dist/browser/source-manifest.json +1 -1
  6. package/dist/client/assets/{AboutPage-BZ2LLJ0k.js → AboutPage-Co7dVF9Z.js} +1 -1
  7. package/dist/client/assets/{ActivityErrorState-BnqAwUiy.js → ActivityErrorState-BrTkXZ6h.js} +1 -1
  8. package/dist/client/assets/{ActivityPage-BlZKrSVo.js → ActivityPage-Vk3zC2wX.js} +1 -1
  9. package/dist/client/assets/{ActivityRow-Ch8HxQ2m.js → ActivityRow-D_zqfTtI.js} +1 -1
  10. package/dist/client/assets/{AdapterIcon-CfocFMw-.js → AdapterIcon-Ba90gZtO.js} +1 -1
  11. package/dist/client/assets/{AdapterSetupWizard-Dtjx1Oad.js → AdapterSetupWizard-CzlKjgS0.js} +2 -2
  12. package/dist/client/assets/{AgentOptionRow-BGRvUeF7.js → AgentOptionRow-YsNMoqxA.js} +1 -1
  13. package/dist/client/assets/{AgentPicker-BcURPZQp.js → AgentPicker-Chtkpz5v.js} +1 -1
  14. package/dist/client/assets/{AgentRequestCard-kNq5A_IN.js → AgentRequestCard-BSvTh8P0.js} +1 -1
  15. package/dist/client/assets/{AppearancePage-Cd-k7dcc.js → AppearancePage-DQXsbxwz.js} +1 -1
  16. package/dist/client/assets/ApplyToOverridesDialog-Dz4dRYKs.js +1 -0
  17. package/dist/client/assets/{AttentionSignalRow-QY8AIjf9.js → AttentionSignalRow-D9Gs4fQW.js} +1 -1
  18. package/dist/client/assets/{BaseTanStackRouterDevtoolsPanel-B-iktbLX-Cgkvajbw.js → BaseTanStackRouterDevtoolsPanel-B-iktbLX-frMjE1fG.js} +3 -3
  19. package/dist/client/assets/BindingDialog-CMbJI0MX.js +1 -0
  20. package/dist/client/assets/{BlintzCanvas-CMzZnmWK.js → BlintzCanvas-Dz8rAsfT.js} +3 -3
  21. package/dist/client/assets/{CanvasCsvContent-uxMaHePf.js → CanvasCsvContent-FMSGU_ae.js} +4 -4
  22. package/dist/client/assets/CanvasFileContent-CecxcpLI.js +2 -0
  23. package/dist/client/assets/CanvasModel3dContent-C66rrYY-.js +2 -0
  24. package/dist/client/assets/{ChannelComposer-BAg0a29Q.js → ChannelComposer-EZk2JgmU.js} +12 -17
  25. package/dist/client/assets/{ChatAppsOff-DD28V0vX.js → ChatAppsOff-CM043XGQ.js} +2 -2
  26. package/dist/client/assets/{CodeMirrorDiff-CyoduBgM.js → CodeMirrorDiff-CCnDdKmg.js} +1 -1
  27. package/dist/client/assets/{CodeMirrorEditor-DGccoZ8Q.js → CodeMirrorEditor-Ct5GtLSd.js} +1 -1
  28. package/dist/client/assets/{CommitmentList-DOvfnyDA.js → CommitmentList-BXbIFc4Y.js} +1 -1
  29. package/dist/client/assets/{CommitmentsPage-D81vxHUk.js → CommitmentsPage-CMKLXfbr.js} +1 -1
  30. package/dist/client/assets/{ComputerResourceView-Dk98shko.js → ComputerResourceView-dXV2M5eB.js} +1 -1
  31. package/dist/client/assets/{ComputerViewer-Broprz4q.js → ComputerViewer-4Aq0_cCL.js} +1 -1
  32. package/dist/client/assets/{ConnectionAccessLists-C_qLz8GJ.js → ConnectionAccessLists-DfIlofzc.js} +1 -1
  33. package/dist/client/assets/{ConnectionsPage-CmGgGmDO.js → ConnectionsPage-Ck4qQt1-.js} +2 -2
  34. package/dist/client/assets/{ConventionPage-BxWLIUUC.js → ConventionPage-z4phQYn0.js} +2 -2
  35. package/dist/client/assets/{ExtensionPageRoute-CyfIRaGs.js → ExtensionPageRoute-5chyBxxz.js} +2 -2
  36. package/dist/client/assets/{FeatureDisabledState-By2dhVpu.js → FeatureDisabledState-DrNY_0RT.js} +1 -1
  37. package/dist/client/assets/{FloatingTanStackRouterDevtools-CqogiFob-B6wKQpLR.js → FloatingTanStackRouterDevtools-CqogiFob-BeWxYbjO.js} +1 -1
  38. package/dist/client/assets/{ForwardConsentHost-kDdpyBgA.js → ForwardConsentHost-BVh663l5.js} +1 -1
  39. package/dist/client/assets/HandlePage-0fA-Trcw.js +1 -0
  40. package/dist/client/assets/{HeartbeatPage-CMj1SS30.js → HeartbeatPage-CByO3lLO.js} +1 -1
  41. package/dist/client/assets/{KeyEntry-Ctc1zp2J.js → KeyEntry-Z5hKKbef.js} +1 -1
  42. package/dist/client/assets/{LexicalField-7zd4B8f1.js → LexicalField-C6xJGRPF.js} +2 -2
  43. package/dist/client/assets/{ManagesPage-BG1TIMP3.js → ManagesPage-CgicR4Kd.js} +1 -1
  44. package/dist/client/assets/{Marketplace-C9r4jRJf.js → Marketplace-vLgSIgdn.js} +4 -4
  45. package/dist/client/assets/{MarketplaceSourcesView-C01Cdrge.js → MarketplaceSourcesView-Dth8Z9u3.js} +1 -1
  46. package/dist/client/assets/{McpAppFrame-Dm7MqOhc.js → McpAppFrame-DAPJUxUi.js} +2 -2
  47. package/dist/client/assets/{McpSigninBody-CsXP_7lE.js → McpSigninBody-D4j1GIhT.js} +1 -1
  48. package/dist/client/assets/{Model3dViewer-DOl8ZkrU.js → Model3dViewer-BqErc378.js} +1 -1
  49. package/dist/client/assets/NamePage-BI35-ZiO.js +1 -0
  50. package/dist/client/assets/{NewDirectMessageMenu-Dj-Qw8zA.js → NewDirectMessageMenu-BC7MdqUz.js} +1 -1
  51. package/dist/client/assets/{NotificationsPage-UExs4YE2.js → NotificationsPage-DsO88sso.js} +1 -1
  52. package/dist/client/assets/{OpenMeshSwitch-Dx3M3wwS.js → OpenMeshSwitch-Bv623x0o.js} +2 -2
  53. package/dist/client/assets/{OperatorIdentityForm-Bz5570RF.js → OperatorIdentityForm-C1knkmdh.js} +1 -1
  54. package/dist/client/assets/PermissionHistory-BaQShYqE.js +1 -0
  55. package/dist/client/assets/PermissionsPage-C74Pvkwc.js +1 -0
  56. package/dist/client/assets/{PersonalityPopover-Do-k_Hhw.js → PersonalityPopover-CD0qi79s.js} +1 -1
  57. package/dist/client/assets/PhotoPage-DE7tKzAB.js +1 -0
  58. package/dist/client/assets/{PreviewRefusedNotice-B-yyzQZP.js → PreviewRefusedNotice-BtTsn6IU.js} +1 -1
  59. package/dist/client/assets/{ProfileFields-DiarOK2y.js → ProfileFields-qnjDsdIB.js} +1 -1
  60. package/dist/client/assets/{ProfilePanelContainer-33Xkwoc3.js → ProfilePanelContainer-B01W49_v.js} +1 -1
  61. package/dist/client/assets/{ProfileRolePicker-BI6T4hj8.js → ProfileRolePicker-LcLX20fO.js} +1 -1
  62. package/dist/client/assets/{PromptSuggestionChips-v5MScpZF.js → PromptSuggestionChips-Cxa-xTMn.js} +1 -1
  63. package/dist/client/assets/{ReportsToPopover-BALADuTO.js → ReportsToPopover-ukRxHNsk.js} +1 -1
  64. package/dist/client/assets/{RoomSurface-BatV7gf5.js → RoomSurface-CwlU4Lns.js} +1 -1
  65. package/dist/client/assets/{RoomsPage-DCCC3Dst.js → RoomsPage-CRJ7tbt0.js} +1 -1
  66. package/dist/client/assets/{RunsOnPopover-C7hMPyrb.js → RunsOnPopover-Bn1F_tCT.js} +1 -1
  67. package/dist/client/assets/{RuntimeConnectFlow-Dc5a8dlJ.js → RuntimeConnectFlow-Ddm_TBWI.js} +1 -1
  68. package/dist/client/assets/{RuntimeSetupDialog-w90VGjJ4.js → RuntimeSetupDialog-BcDt-BYK.js} +1 -1
  69. package/dist/client/assets/{SeenDevices-BIMmbMWC.js → SeenDevices-mpu0OgjB.js} +3 -3
  70. package/dist/client/assets/{SessionsPage-0lwvSYHB.js → SessionsPage-Dp_iQdpc.js} +1 -1
  71. package/dist/client/assets/{SettingsDialog-CrP6JzPg.js → SettingsDialog-TNI6sYo5.js} +4 -4
  72. package/dist/client/assets/{SkillsPage-BDgKWTfe.js → SkillsPage-k-7ycbOg.js} +1 -1
  73. package/dist/client/assets/TaskDialogWrapper-Bfp5pa_r.js +1 -0
  74. package/dist/client/assets/{TasksEmptyState-RkUEEU2r.js → TasksEmptyState-BlGELISr.js} +2 -2
  75. package/dist/client/assets/{TasksPage-DjGbMGvn.js → TasksPage-BRVvjSR1.js} +1 -1
  76. package/dist/client/assets/{TeamComputerEntry-B_sM9Fik.js → TeamComputerEntry-RQBXj6_l.js} +1 -1
  77. package/dist/client/assets/{ToolsPage-CeETRCd8.js → ToolsPage-D1seB8vW.js} +2 -2
  78. package/dist/client/assets/{TopologyGraph-CnpH2NjE.js → TopologyGraph-DdWrS7dp.js} +3 -3
  79. package/dist/client/assets/{TourHost-BQHrS47S.js → TourHost-DmcHWh9X.js} +1 -1
  80. package/dist/client/assets/{UnlinkDialog-DOQLeNx4.js → UnlinkDialog-FQzgYxPM.js} +1 -1
  81. package/dist/client/assets/{UnreadDivider-DhyK6uGG.js → UnreadDivider-DPMhdEbw.js} +1 -1
  82. package/dist/client/assets/{WidgetErrorCard-Bwlfu514.js → WidgetErrorCard-B477vOv2.js} +6 -6
  83. package/dist/client/assets/{WithheldExtensionsNotice-BDc-CM2t.js → WithheldExtensionsNotice-BQnkJvgb.js} +1 -1
  84. package/dist/client/assets/{WorkQueuePage-iO_DO1YK.js → WorkQueuePage-CwlR32Dy.js} +1 -1
  85. package/dist/client/assets/WorkView-J0V1k1Q7.js +51 -0
  86. package/dist/client/assets/_shell-B8mHdyV6.js +80 -0
  87. package/dist/client/assets/{_shell._home-BWi5YPaR.js → _shell._home-CadWLlSU.js} +1 -1
  88. package/dist/client/assets/{_shell._home.activity-BU1NIGb7.js → _shell._home.activity-Cmy3lakH.js} +1 -1
  89. package/dist/client/assets/_shell._home.index-eR2x0FUG.js +3 -0
  90. package/dist/client/assets/_shell._home.tasks-4Vkj6L-V.js +1 -0
  91. package/dist/client/assets/{_shell._home.workspaces-wbnqJ58w.js → _shell._home.workspaces-fYlBcaoi.js} +1 -1
  92. package/dist/client/assets/{_shell.channels-D1KdvWZF.js → _shell.channels-nErO_7xf.js} +2 -2
  93. package/dist/client/assets/_shell.connections-C9URqim3.js +1 -0
  94. package/dist/client/assets/{_shell.feedback-requests-DzHWC1fJ.js → _shell.feedback-requests-DJxcMS1O.js} +2 -2
  95. package/dist/client/assets/_shell.marketplace-CNUtNewz.js +1 -0
  96. package/dist/client/assets/_shell.marketplace_.sources-Cku_p8cg.js +1 -0
  97. package/dist/client/assets/_shell.session-B990EEo5.js +1 -0
  98. package/dist/client/assets/{_shell.team-BMNSUpQQ.js → _shell.team-CXbQysNY.js} +4 -4
  99. package/dist/client/assets/_shell.threads-CDEyGRL3.js +1 -0
  100. package/dist/client/assets/_shell.todos-8uEPusJV.js +6 -0
  101. package/dist/client/assets/_shell.x._extensionId-DXp9Wa0V.js +1 -0
  102. package/dist/client/assets/_shell.x._extensionId_._-DXp9Wa0V.js +1 -0
  103. package/dist/client/assets/{abnfDiagram-WEYOIA3C-Co2k29JX.js → abnfDiagram-WEYOIA3C-C4khI9rY.js} +1 -1
  104. package/dist/client/assets/{access-copy-D6BUySpp.js → access-copy-w5gryYsO.js} +1 -1
  105. package/dist/client/assets/{arc-DLZZpkuJ.js → arc-fvrOAWql.js} +1 -1
  106. package/dist/client/assets/{architectureDiagram-ZHVYKT53-ClS9xqK5.js → architectureDiagram-ZHVYKT53-CNH5Fhq_.js} +1 -1
  107. package/dist/client/assets/{banner-B8iMuXCP.js → banner-CBw5pFjQ.js} +2 -2
  108. package/dist/client/assets/{blockDiagram-RJAE7QA3-DheoOELu.js → blockDiagram-RJAE7QA3-BxP4ZQri.js} +1 -1
  109. package/dist/client/assets/{c4Diagram-XDPPPE54-VWWZJ5x4.js → c4Diagram-XDPPPE54-BhBYlCWz.js} +1 -1
  110. package/dist/client/assets/channel-splVtfTe.js +1 -0
  111. package/dist/client/assets/{chunk-2E7WHVMD-BqPLJVkv.js → chunk-2E7WHVMD-COA0yYP4.js} +1 -1
  112. package/dist/client/assets/{chunk-2Q5K7J3B-DZn6OnKe.js → chunk-2Q5K7J3B-BbmrmCrP.js} +1 -1
  113. package/dist/client/assets/{chunk-4EMNKR2T-Dl9Poajp.js → chunk-4EMNKR2T-CzA2mZv9.js} +1 -1
  114. package/dist/client/assets/{chunk-55XCU76K-RoKuZPUc.js → chunk-55XCU76K-DJ2x-ilD.js} +1 -1
  115. package/dist/client/assets/{chunk-5VM5RSS4-DV_1XHtU.js → chunk-5VM5RSS4-BxznGj8M.js} +1 -1
  116. package/dist/client/assets/{chunk-JWPE2WC7-B_IuS45y.js → chunk-JWPE2WC7-DHb10Lbd.js} +1 -1
  117. package/dist/client/assets/{chunk-VQ5W62QI-DkLNi45x.js → chunk-VQ5W62QI-C7cjQxzr.js} +1 -1
  118. package/dist/client/assets/{chunk-XXDRQBXY-ISM-1Dpw.js → chunk-XXDRQBXY-M7RrmKQv.js} +1 -1
  119. package/dist/client/assets/{chunk-ZCHMQSOR-MKaLMW8o.js → chunk-ZCHMQSOR-BZxPNYte.js} +2 -2
  120. package/dist/client/assets/{classDiagram-v2-4MYWR3UA-CIWuu4ht.js → classDiagram-v2-4MYWR3UA-vt1g5HlO.js} +1 -1
  121. package/dist/client/assets/{command-CxGYZKco.js → command-DU2-hlOP.js} +1 -1
  122. package/dist/client/assets/{copy-button-DjAoGwds.js → copy-button-BodCVufV.js} +1 -1
  123. package/dist/client/assets/{cose-bilkent-JH36ORCC-HiCifRyi.js → cose-bilkent-JH36ORCC-Cd27g-Yx.js} +1 -1
  124. package/dist/client/assets/{cpu-DHHTTvp_.js → cpu-BXE_D43d.js} +1 -1
  125. package/dist/client/assets/{cynefin-EF2NZ3EQ-DjJGZrPz.js → cynefin-EF2NZ3EQ-BnCAgdfS.js} +1 -1
  126. package/dist/client/assets/{cynefinDiagram-WF24UDRP-DE2NdiJ2.js → cynefinDiagram-WF24UDRP-eIO4xQHB.js} +1 -1
  127. package/dist/client/assets/{dagre-NK4GIZVX-C6gDOD26.js → dagre-NK4GIZVX-Bvd_3Cqy.js} +1 -1
  128. package/dist/client/assets/{detail-row-CjwI1iuc.js → detail-row-BvEUzVxe.js} +1 -1
  129. package/dist/client/assets/{diagram-CBK3MWTC-38LckcsL.js → diagram-CBK3MWTC-BGqDA_bh.js} +1 -1
  130. package/dist/client/assets/{diagram-I5XIIV2D--8L6D9Ra.js → diagram-I5XIIV2D-BXhbpnrE.js} +1 -1
  131. package/dist/client/assets/{diagram-ODIL2UCW-DGC2Inhd.js → diagram-ODIL2UCW-C4hWeQZn.js} +1 -1
  132. package/dist/client/assets/{diagram-PFBEJUXE-BDHp0AyR.js → diagram-PFBEJUXE-DIEuwCdA.js} +1 -1
  133. package/dist/client/assets/{diagram-RJA3I4VV-uBatJYPi.js → diagram-RJA3I4VV-C36ghYx6.js} +1 -1
  134. package/dist/client/assets/{diagram-TYUNFSNR-C8e1EH9X.js → diagram-TYUNFSNR-CSC9FLO6.js} +1 -1
  135. package/dist/client/assets/{ebnfDiagram-V4P3TTPT-DimRzU5B.js → ebnfDiagram-V4P3TTPT-DuOLfVHI.js} +1 -1
  136. package/dist/client/assets/{elk-QONTBCTQ-Dz6_Y2-G.js → elk-QONTBCTQ-NvLhZqkG.js} +1 -1
  137. package/dist/client/assets/{empty-state-saV209Il.js → empty-state-B316LEXY.js} +1 -1
  138. package/dist/client/assets/{erDiagram-KYQIGQAA-JeuTF8w6.js → erDiagram-KYQIGQAA-BcTRY9y8.js} +1 -1
  139. package/dist/client/assets/{execution-config-ClQZyDs9.js → execution-config-D9vIc46b.js} +1 -1
  140. package/dist/client/assets/{file-BIF-4ARS.js → file-C_57RCIQ.js} +1 -1
  141. package/dist/client/assets/{file-exclamation-point-DxadH2b-.js → file-exclamation-point-C7C2dM_w.js} +1 -1
  142. package/dist/client/assets/{file-text-C_NPIQr4.js → file-text-CS9s0qOe.js} +1 -1
  143. package/dist/client/assets/{find-latest-widget-fence-CXai_zs0.js → find-latest-widget-fence-D_FwbHep.js} +4 -4
  144. package/dist/client/assets/{flowDiagram-IUGLLWBU-9FHDdK4j.js → flowDiagram-IUGLLWBU-DxQ31Egh.js} +1 -1
  145. package/dist/client/assets/{form-D3VdAYl4.js → form-Cf49Z6eU.js} +1 -1
  146. package/dist/client/assets/{format-cron-BqRDcFZM.js → format-cron-Dlp0mfqz.js} +1 -1
  147. package/dist/client/assets/{ganttDiagram-R7GPNTJY-CLMuXlHt.js → ganttDiagram-R7GPNTJY-Bxwm173A.js} +1 -1
  148. package/dist/client/assets/{git-branch-Df7a5_fb.js → git-branch-DpByNz2U.js} +1 -1
  149. package/dist/client/assets/{gitGraphDiagram-PDYL7XHY-sE7Rlpr6.js → gitGraphDiagram-PDYL7XHY-DH8AQ76t.js} +1 -1
  150. package/dist/client/assets/{graph-iNVyFhBQ.js → graph-BGzqfhJw.js} +1 -1
  151. package/dist/client/assets/{heart-BHMhDZ0K.js → heart-DKWg_e72.js} +1 -1
  152. package/dist/client/assets/{highlighted-body-KPVGNVTW-VvvsrJbu.js → highlighted-body-KPVGNVTW-Dd_spScF.js} +1 -1
  153. package/dist/client/assets/{image-lightbox-CGEIRguA.js → image-lightbox-BtsV24zH.js} +1 -1
  154. package/dist/client/assets/{image-off-C5-TmSq8.js → image-off-Czqq8ai8.js} +1 -1
  155. package/dist/client/assets/{index-C3zS0ghJ.js → index-B401rtXR.js} +1 -1
  156. package/dist/client/assets/{index-WeLoaNzW.js → index-BGKWKxfR.js} +1 -1
  157. package/dist/client/assets/{index-DFkofTx1.js → index-BQulbvlk.js} +1 -1
  158. package/dist/client/assets/{index-Y6BDhuGt.js → index-BTB5QRQx.js} +1 -1
  159. package/dist/client/assets/index-BYTLOFNS.js +1061 -0
  160. package/dist/client/assets/{index-CLsoFUml.js → index-B_KMn9ji.js} +1 -1
  161. package/dist/client/assets/{index-Cudi8rs6.js → index-BapT4bjy.js} +1 -1
  162. package/dist/client/assets/index-BbPg1hpf.css +1 -0
  163. package/dist/client/assets/{index-BK5QrGfQ.js → index-BhIDM_HP.js} +1 -1
  164. package/dist/client/assets/{index-CExh9cKN.js → index-BmckK_5Q.js} +1 -1
  165. package/dist/client/assets/{index-BxFLHNLg.js → index-BxNcjL67.js} +1 -1
  166. package/dist/client/assets/{index-LPrq0pOA.js → index-CHGNCEc4.js} +1 -1
  167. package/dist/client/assets/{index-Bzm9YMbr.js → index-CIokV9hG.js} +1 -1
  168. package/dist/client/assets/index-CUDsA_8O.js +1 -0
  169. package/dist/client/assets/{index-DMwivStD.js → index-CWBtIScD.js} +2 -2
  170. package/dist/client/assets/{index-YZbu9tke.js → index-CX4nMOaI.js} +1 -1
  171. package/dist/client/assets/index-CaYgHnra.js +1 -0
  172. package/dist/client/assets/{index-D9bEy8X-.js → index-CpxbjS0M.js} +1 -1
  173. package/dist/client/assets/{index-Ci_J5Q-6.js → index-D0k8LoLP.js} +1 -1
  174. package/dist/client/assets/{index-BMLCfTba.js → index-D2gKRr6f.js} +1 -1
  175. package/dist/client/assets/index-D6jG1-Mw.js +1 -0
  176. package/dist/client/assets/{index-Bd0PAkxf.js → index-DCFKleTS.js} +1 -1
  177. package/dist/client/assets/{index-k67dvyau.js → index-DG-iZ_7U.js} +1 -1
  178. package/dist/client/assets/{index-CgWzzIbx.js → index-DGKwWSrJ.js} +1 -1
  179. package/dist/client/assets/{index-BLUUshO9.js → index-DHFIAKQc.js} +1 -1
  180. package/dist/client/assets/{index-CTgUh4p3.js → index-DNkWdNSz.js} +1 -1
  181. package/dist/client/assets/{index-DWZ5M321.js → index-DOFLQqXn.js} +1 -1
  182. package/dist/client/assets/index-DOZg4xUY.js +1 -0
  183. package/dist/client/assets/{index-BgRYuqWs.js → index-DQ9MUhkA.js} +1 -1
  184. package/dist/client/assets/{index-B0FHRkHM.js → index-DXA-11hB.js} +2 -2
  185. package/dist/client/assets/{index-BgdYXP8E.js → index-DcUcciFs.js} +3 -3
  186. package/dist/client/assets/{index-Dw-4S640.js → index-Deupek6J.js} +1 -1
  187. package/dist/client/assets/index-DrbZanni.js +1 -0
  188. package/dist/client/assets/{index-264YDu-W.js → index-DwAhtrb9.js} +1 -1
  189. package/dist/client/assets/{index-DEvpdTo6.js → index-EB7hJHJY.js} +1 -1
  190. package/dist/client/assets/{index-C_0JoCV6.js → index-GAcHtPZc.js} +1 -1
  191. package/dist/client/assets/{index-ClyRhxV_.js → index-GZP3iUOG.js} +1 -1
  192. package/dist/client/assets/{index-Dpu2CORc.js → index-JLySVSjV.js} +1 -1
  193. package/dist/client/assets/{index-DRtg_sGG.js → index-MCPJOxb7.js} +1 -1
  194. package/dist/client/assets/{index-D_bAtIJZ.js → index-N77XDvrM.js} +1 -1
  195. package/dist/client/assets/{index-B8I1k-z9.js → index-O9UP2ojb.js} +1 -1
  196. package/dist/client/assets/{index-DYVNSRDk.js → index-aSuMCzNN.js} +1 -1
  197. package/dist/client/assets/{index-BZTLFzJp.js → index-sbmgxCMU.js} +1 -1
  198. package/dist/client/assets/{index-Di-MIFQG.js → index-vEujcopz.js} +3 -3
  199. package/dist/client/assets/{index.esm-CYmalBux.js → index.esm-B0kiCgAP.js} +1 -1
  200. package/dist/client/assets/{infoDiagram-MVDRKAX5-0aR9wjgO.js → infoDiagram-MVDRKAX5-CFgHv4Dm.js} +1 -1
  201. package/dist/client/assets/{inline-code-DyTKSC5b.js → inline-code-B3u1dOXm.js} +1 -1
  202. package/dist/client/assets/{ishikawaDiagram-HPEHV2GE-D1lN8x2t.js → ishikawaDiagram-HPEHV2GE-BWRvdwNW.js} +1 -1
  203. package/dist/client/assets/{journeyDiagram-BOSHW7O7-CkXITXiJ.js → journeyDiagram-BOSHW7O7-6zzUqSAS.js} +1 -1
  204. package/dist/client/assets/{kanban-definition-FNSA4HC5-ge33IiSq.js → kanban-definition-FNSA4HC5-CCCFKXnc.js} +1 -1
  205. package/dist/client/assets/{layers-Bx3K7OUm.js → layers-Dbd-86dV.js} +1 -1
  206. package/dist/client/assets/{lightbulb-C5LvXkvM.js → lightbulb-C15x7OEZ.js} +1 -1
  207. package/dist/client/assets/{link-2-Bj0_Zkvr.js → link-2-D1CRDxXB.js} +1 -1
  208. package/dist/client/assets/{list-runtime-types-VNj1C8TB.js → list-runtime-types-Cyl4h4lV.js} +1 -1
  209. package/dist/client/assets/{markdown-content-BRaPEOC7.js → markdown-content-C1i_dR6j.js} +1 -1
  210. package/dist/client/assets/{mention-pill-B_MiJWfo.js → mention-pill-DoQBb5VU.js} +1 -1
  211. package/dist/client/assets/{mermaid.core-B2hil_4a.js → mermaid.core-BaDCR0nn.js} +4 -4
  212. package/dist/client/assets/{message-square-off-T33FHpr7.js → message-square-off-CwB3fRn1.js} +1 -1
  213. package/dist/client/assets/{mindmap-definition-6OY57UG3-Bu_Ia4Xz.js → mindmap-definition-6OY57UG3-B6g2CNRv.js} +1 -1
  214. package/dist/client/assets/{more-details-oDazWBxm.js → more-details-DNp6DH8i.js} +1 -1
  215. package/dist/client/assets/{owner-notice-VepbAQhj.js → owner-notice-P8INt5DW.js} +1 -1
  216. package/dist/client/assets/{package-DBsl3ao5.js → package-DHEY3aDq.js} +1 -1
  217. package/dist/client/assets/{page-container-Bkarym6m.js → page-container-BwHVHvGF.js} +1 -1
  218. package/dist/client/assets/{pane-resize-handle-gBlb5k1v.js → pane-resize-handle-BetBV5qX.js} +1 -1
  219. package/dist/client/assets/{paperclip-BeFttiUK.js → paperclip-DYgUORd3.js} +1 -1
  220. package/dist/client/assets/{path-input-NY_yCBHb.js → path-input-DpN1vJO-.js} +1 -1
  221. package/dist/client/assets/{pegDiagram-ECIUJNBX-0KmJlW0E.js → pegDiagram-ECIUJNBX-Db7P43aK.js} +1 -1
  222. package/dist/client/assets/{pieDiagram-GNMPY74T-IjeZXicv.js → pieDiagram-GNMPY74T-Cz1jeviu.js} +1 -1
  223. package/dist/client/assets/{plug-CTqOZ7cA.js → plug-C5hngNbe.js} +1 -1
  224. package/dist/client/assets/{primer-trigger-CjaGrT2u.js → primer-trigger-Bb7X-l3r.js} +2 -2
  225. package/dist/client/assets/{profile-errors-B8XkL2Rp.js → profile-errors-OMPgeYKJ.js} +1 -1
  226. package/dist/client/assets/{progress-Cr-4myw6.js → progress-CNm_pBbE.js} +1 -1
  227. package/dist/client/assets/{quadrantDiagram-D57K4MC3-CP6kLJKa.js → quadrantDiagram-D57K4MC3-PD02f4Da.js} +1 -1
  228. package/dist/client/assets/{query-error-state-DvhY-YKM.js → query-error-state-BdmBV0DG.js} +1 -1
  229. package/dist/client/assets/{radio-CmDmmJy6.js → radio-BmjH89ml.js} +1 -1
  230. package/dist/client/assets/{railroadDiagram-Y72NRBL7-Bcto__oE.js → railroadDiagram-Y72NRBL7-x1K1Xrsr.js} +1 -1
  231. package/dist/client/assets/registry-3K4FIIyI.js +39 -0
  232. package/dist/client/assets/registry-DNYPNSm5.js +1 -0
  233. package/dist/client/assets/{relay-trace-schemas-ZLR1S8ft.js → relay-trace-schemas-CctfRKB2.js} +2 -2
  234. package/dist/client/assets/{repeat-DVTM8et8.js → repeat-CK_sumJP.js} +1 -1
  235. package/dist/client/assets/{requirementDiagram-EQYSW5RA-DNJrds3m.js → requirementDiagram-EQYSW5RA-BM-pntyA.js} +1 -1
  236. package/dist/client/assets/{room-files-source-9Wdtc-bG.js → room-files-source-CKjJxFRA.js} +2 -2
  237. package/dist/client/assets/{rotate-ccw-clock-qJSWqifh.js → rotate-ccw-clock-DzVWecfL.js} +1 -1
  238. package/dist/client/assets/{rotate-cw-uoeBxIeM.js → rotate-cw-CpuoCwEK.js} +1 -1
  239. package/dist/client/assets/{sankeyDiagram-SY24JHO5-DNlU7xGI.js → sankeyDiagram-SY24JHO5-ByCX1rfW.js} +1 -1
  240. package/dist/client/assets/{scroll-area-B1d3NfEn.js → scroll-area-BO7uDl4z.js} +1 -1
  241. package/dist/client/assets/{sequenceDiagram-BLEHNHQU-CRk71coF.js → sequenceDiagram-BLEHNHQU-BPB2hLY6.js} +1 -1
  242. package/dist/client/assets/{shield-x-BpQmg1qz.js → shield-x-DknrRQrV.js} +1 -1
  243. package/dist/client/assets/{signed-in-CTmJ3OqM.js → signed-in-DdaXcjzY.js} +1 -1
  244. package/dist/client/assets/{sizeCapture-INFHLROL-cihX3QNq.js → sizeCapture-INFHLROL-DRe6LanJ.js} +1 -1
  245. package/dist/client/assets/{soul-file-BwiyiI5v.js → soul-file-CPL6-cba.js} +1 -1
  246. package/dist/client/assets/{stateDiagram-v2-A6IESKWZ-BAwwRsnH.js → stateDiagram-v2-A6IESKWZ-DZA18t3o.js} +1 -1
  247. package/dist/client/assets/{swimlanes-B3ENRKFQ-CpDB6CUC.js → swimlanes-B3ENRKFQ-DRX2o4k2.js} +1 -1
  248. package/dist/client/assets/swimlanesDiagram-AYQRV4AK-D5hU--1Q.js +8 -0
  249. package/dist/client/assets/{table-dWrfPeX-.js → table-BrvyPoEL.js} +1 -1
  250. package/dist/client/assets/{tabs-D4txthOi.js → tabs-BmbzJhKE.js} +1 -1
  251. package/dist/client/assets/{timeline-definition-JXYKGLGB-RDrKgCoU.js → timeline-definition-JXYKGLGB-BL2C4v8r.js} +1 -1
  252. package/dist/client/assets/trust-dial-tuMHO5Ug.js +11 -0
  253. package/dist/client/assets/{trust-posture-atZIh8tf.js → trust-posture-9cC08pk5.js} +1 -1
  254. package/dist/client/assets/{unplug-CnevV4yX.js → unplug-B8oONuTT.js} +1 -1
  255. package/dist/client/assets/{unverified-catalog-notice-BQwT36FA.js → unverified-catalog-notice-ofL4eYQH.js} +1 -1
  256. package/dist/client/assets/{use-bindings-CltfjAWW.js → use-bindings-DVKWBz4y.js} +1 -1
  257. package/dist/client/assets/{use-composer-prefs-D-Zlt6z2.js → use-composer-prefs-DWFqxtm6.js} +1 -1
  258. package/dist/client/assets/{use-connector-management-C3CLnOOt.js → use-connector-management-B_RvwV0T.js} +1 -1
  259. package/dist/client/assets/{use-deep-link-scroll-DQlz-scx.js → use-deep-link-scroll-Cahio5D0.js} +1 -1
  260. package/dist/client/assets/{use-delete-binding-D73CLm_7.js → use-delete-binding-DHiPJq9D.js} +1 -1
  261. package/dist/client/assets/{use-dev-links-BqVFsMKU.js → use-dev-links-Cunzy9gq.js} +1 -1
  262. package/dist/client/assets/use-direct-message-panel-CPyyrU4P.js +1 -0
  263. package/dist/client/assets/{use-external-adapter-catalog-DrnksH0t.js → use-external-adapter-catalog-l9RzI0W5.js} +1 -1
  264. package/dist/client/assets/{use-filter-state-D4i-hDOk.js → use-filter-state-DKALQgO9.js} +2 -2
  265. package/dist/client/assets/{use-full-activity-feed-DdDsRg8s.js → use-full-activity-feed-B7miUwr2.js} +1 -1
  266. package/dist/client/assets/use-is-below-desktop-DSwl4xyH.js +1 -0
  267. package/dist/client/assets/{use-mesh-topology-B7aLtPkZ.js → use-mesh-topology-Y9Cdja0F.js} +1 -1
  268. package/dist/client/assets/{use-mounted-ref-DSSTCJfY.js → use-mounted-ref-Bb8zNmgI.js} +1 -1
  269. package/dist/client/assets/{use-notification-prefs-DaF3kwmq.js → use-notification-prefs-DoZgirjS.js} +1 -1
  270. package/dist/client/assets/use-pending-read-DC4hUOFi.js +1 -0
  271. package/dist/client/assets/{use-personality-commit-D5b90JPX.js → use-personality-commit-CDMLIF8s.js} +1 -1
  272. package/dist/client/assets/{use-promo-activation-CPAOQpfe.js → use-promo-activation-XWY3OSoy.js} +2 -2
  273. package/dist/client/assets/{use-promo-dismissals-Bx1gz1R1.js → use-promo-dismissals-Bg7cJFb8.js} +1 -1
  274. package/dist/client/assets/{use-pulse-freshness-DeulB37O.js → use-pulse-freshness-B4nO2ugg.js} +1 -1
  275. package/dist/client/assets/{use-room-follow-claim-Dwke6RFQ.js → use-room-follow-claim-CpOIUcG7.js} +1 -1
  276. package/dist/client/assets/{use-room-sessions-iepVrIMm.js → use-room-sessions-BeiAMSkk.js} +1 -1
  277. package/dist/client/assets/{use-roving-tab-list-pCPKNQKv.js → use-roving-tab-list-HB0egh1C.js} +1 -1
  278. package/dist/client/assets/{use-session-canvas-BvvO-_V1.js → use-session-canvas-Cc04zSW3.js} +6 -6
  279. package/dist/client/assets/{use-status-budget-Bs7MMriS.js → use-status-budget-GIeJAyM1.js} +2 -2
  280. package/dist/client/assets/{use-todos-C-eREuDS.js → use-todos-Bq9I1_Md.js} +1 -1
  281. package/dist/client/assets/{use-transform-lj3TkjYO.js → use-transform-DEFDL9dO.js} +1 -1
  282. package/dist/client/assets/{use-unclaimed-chats-BF3-0jHC.js → use-unclaimed-chats-BzDzgx9Q.js} +1 -1
  283. package/dist/client/assets/use-update-config-Bt7fMLqS.js +1 -0
  284. package/dist/client/assets/{useMutationState-B_x_4f2K.js → useMutationState-Bffa43_B.js} +1 -1
  285. package/dist/client/assets/{usecaseDiagram-WPOLBNNX-DBsRYa4J.js → usecaseDiagram-WPOLBNNX-BoYu8koq.js} +1 -1
  286. package/dist/client/assets/{vennDiagram-Q3Y3IDCW-rFAXvcQI.js → vennDiagram-Q3Y3IDCW-U4E5RDf5.js} +1 -1
  287. package/dist/client/assets/{wardleyDiagram-IVAIDKWA-bI0JZkO3.js → wardleyDiagram-IVAIDKWA-DYWCkm0g.js} +1 -1
  288. package/dist/client/assets/{xychartDiagram-4URNHDU4-DZUd8iln.js → xychartDiagram-4URNHDU4-DMf6UlJg.js} +1 -1
  289. package/dist/client/assets/zap-BmeuEI5X.js +6 -0
  290. package/dist/client/index.html +2 -2
  291. package/dist/drizzle/20261104060919_package_approval_request.sql +1 -0
  292. package/dist/drizzle/meta/20261104060919_snapshot.json +14889 -0
  293. package/dist/drizzle/meta/_journal.json +7 -0
  294. package/dist/server/index.js +30881 -29909
  295. package/dist/server/index.js.map +2 -2
  296. package/package.json +7 -7
  297. package/dist/client/assets/ApplyToOverridesDialog-DE9VVQCA.js +0 -1
  298. package/dist/client/assets/BindingDialog-C_yflKOE.js +0 -1
  299. package/dist/client/assets/CanvasFileContent-C3ZKszxn.js +0 -2
  300. package/dist/client/assets/CanvasModel3dContent-CsNUuaj6.js +0 -2
  301. package/dist/client/assets/HandlePage-vsG04kBg.js +0 -1
  302. package/dist/client/assets/NamePage-DdX2yQ5f.js +0 -1
  303. package/dist/client/assets/PermissionHistory-Bhl2kr1R.js +0 -1
  304. package/dist/client/assets/PermissionsPage-DUbenFkt.js +0 -1
  305. package/dist/client/assets/PhotoPage-CExABoHA.js +0 -1
  306. package/dist/client/assets/TaskDialogWrapper-BVb8gAr0.js +0 -1
  307. package/dist/client/assets/WorkView-BDk_vwu3.js +0 -51
  308. package/dist/client/assets/_shell-CMNFxZKJ.js +0 -80
  309. package/dist/client/assets/_shell._home.index-BjR-d3_s.js +0 -3
  310. package/dist/client/assets/_shell._home.tasks-CqURPMQD.js +0 -1
  311. package/dist/client/assets/_shell.connections-D3gJrBTQ.js +0 -1
  312. package/dist/client/assets/_shell.marketplace-HdefWdN_.js +0 -1
  313. package/dist/client/assets/_shell.marketplace_.sources-wAZKfDQF.js +0 -1
  314. package/dist/client/assets/_shell.session-C0utZeSI.js +0 -1
  315. package/dist/client/assets/_shell.threads-TvzYRNMt.js +0 -1
  316. package/dist/client/assets/_shell.todos-sOFmsIPE.js +0 -6
  317. package/dist/client/assets/_shell.x._extensionId-DiEQZIvl.js +0 -1
  318. package/dist/client/assets/_shell.x._extensionId_._-DiEQZIvl.js +0 -1
  319. package/dist/client/assets/channel-B0WiEIVe.js +0 -1
  320. package/dist/client/assets/index-BwTGkJbK.js +0 -1071
  321. package/dist/client/assets/index-CCHGVclj.js +0 -1
  322. package/dist/client/assets/index-CiUmx-i3.js +0 -1
  323. package/dist/client/assets/index-Dd4JoHFP.js +0 -1
  324. package/dist/client/assets/index-DlmGvYpy.js +0 -1
  325. package/dist/client/assets/index-EXJsA5kw.js +0 -1
  326. package/dist/client/assets/index-MpS13vhQ.css +0 -1
  327. package/dist/client/assets/registry-BQTcAm5U.js +0 -39
  328. package/dist/client/assets/registry-HencHRXy.js +0 -1
  329. package/dist/client/assets/swimlanesDiagram-AYQRV4AK-nJfOIWYW.js +0 -8
  330. package/dist/client/assets/use-direct-message-panel-B3qfpDjY.js +0 -1
  331. package/dist/client/assets/use-is-below-desktop-BXHT3oPL.js +0 -1
  332. package/dist/client/assets/use-local-browser-DDWknHZE.js +0 -1
  333. package/dist/client/assets/use-pending-read-uvmEJ7H9.js +0 -1
  334. package/dist/client/assets/use-update-config-D-OGlXGR.js +0 -1
@@ -1 +1 @@
1
- import{ht as ve,j as e,hu as Ne,hv as ye,hw as T,hx as we,hy as Z,d0 as re,cw as ie,r as C,am as D,gD as E,H as _,aX as O,X as B,hz as be,hA as Se,gg as q,gh as H,B as $,f as K,gi as X,a6 as oe,a7 as de,a8 as le,hB as z,hC as ce,dS as S,hD as me,hE as Ce,hF as ue,hG as ke,hH as he,fR as Ee,a4 as $e,bf as Ae,g6 as Pe,hI as Re,g0 as Te,g1 as De,hJ as _e,hK as Oe,U as ze,G as F,eG as Ie,hL as ee,hM as Le,hN as Me,a2 as M,a3 as Fe,hO as Ue,hP as Be,hQ as qe,hR as He,hS as Ke,hT as Xe,hU as Ge,hV as Ye,hW as se,f8 as Ve,hX as Qe,hY as te}from"./index-BwTGkJbK.js";import{hZ as Rs,h_ as Ts,h$ as Ds,i0 as _s,i1 as Os,g4 as zs}from"./index-BwTGkJbK.js";import{u as Je}from"./use-deep-link-scroll-DQlz-scx.js";import{M as xe}from"./more-details-oDazWBxm.js";import{u as We,a as Ze}from"./ForwardConsentHost-kDdpyBgA.js";import{F as Ls}from"./ForwardConsentHost-kDdpyBgA.js";import{C as G,a as Y,b as V,c as Q,d as A,e as P}from"./command-CxGYZKco.js";import{F as ge}from"./file-text-C_NPIQr4.js";const es=["server_crashed","server_out_of_memory","server_unresponsive","isolation_unavailable","server_start_failed","server_start_timeout"],ss={server_crashed:s=>`${s} stopped unexpectedly 3 times. Reload it to try again.`,server_out_of_memory:s=>`${s} ran out of memory and stopped. Reload it to try again.`,server_unresponsive:s=>`${s} stopped responding, so DorkOS stopped it.`,isolation_unavailable:s=>`${s} can’t run with its limits on this computer.`,server_start_failed:s=>`${s} couldn’t start. Reload it to try again.`,server_start_timeout:s=>`${s} took too long to start. Reload it to try again.`};function U(s){return es.includes(s)}function ts(s,t){return U(s)?ss[s](t):null}function ns(s){return`Restarting ${s}…`}function as({extensionId:s}){const t=ve("right-panel").filter(n=>n.extensionId===s);return t.length===0?null:e.jsx("div",{className:"space-y-3 pt-1","data-testid":`panel-tab-placement-${s}`,children:t.map(n=>e.jsx(is,{tab:n,labelled:t.length>1},n.id))})}function rs(){var n;const s=(n=re().data)==null?void 0:n.agents,t=ie().data;return C.useMemo(()=>{const l=new Map((s??[]).map(a=>[a.id,D(a)])),i=new Map((t??[]).map(a=>[a.id,E(a)]));return{agents:s??[],rooms:t??[],agentNames:l,roomNames:i}},[s,t])}function is({tab:s,labelled:t}){const n=Ne(We(),s.id),{setPlacement:l}=Ze(),i=rs(),a=ye(n,s.declaredPlacement),h=a.show.pages.includes(T),u=d=>l(s.id,{show:d.show,hide:d.hide}),c=d=>d.kind==="agents"?i.agentNames.get(d.id)??"An agent that is gone":d.kind==="rooms"?i.roomNames.get(d.id)??"A channel that is gone":be(d.id),r=(d,f)=>["agents","rooms","pages"].flatMap(j=>d[j].filter(y=>f||y!==T).map(y=>({kind:j,id:y}))),o=(d,f)=>({...d,[f.kind]:d[f.kind].filter(j=>j!==f.id)}),v=r(a.show,!1),p=r(a.hide,!0);return e.jsxs("div",{className:"space-y-2","data-testid":`panel-tab-placement-${s.id}`,children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm",children:t?`${s.title} tab shows`:"Panel tab shows"}),e.jsxs(we,{value:h?"everywhere":"only",onValueChange:d=>u({hide:a.hide,show:d==="everywhere"?{...a.show,pages:[T]}:{...a.show,pages:a.show.pages.filter(f=>f!==T)}}),"aria-label":`Where the ${s.title} tab shows`,children:[e.jsx(Z,{value:"everywhere",children:"Everywhere"}),e.jsx(Z,{value:"only",children:"Only in…"})]}),n&&e.jsx("button",{type:"button",onClick:()=>l(s.id,null),className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm text-xs underline underline-offset-2",children:s.declaredPlacement?"Use its default":"Reset"})]}),!h&&e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[v.map(d=>e.jsx(ne,{place:d,name:c(d),removeLabel:`Remove ${c(d)}`,onRemove:()=>u({...a,show:o(a.show,d)})},`${d.kind}:${d.id}`)),e.jsx(ds,{tabTitle:s.title,names:i,taken:a.show,onAdd:d=>u({show:{...a.show,[d.kind]:[...a.show[d.kind],d.id]},hide:o(a.hide,d)})}),v.length===0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:"Shows nowhere yet. Add a place."})]}),p.length>0&&e.jsxs("div",{role:"group","aria-labelledby":`${s.id}-hidden-in`,className:"flex flex-wrap items-center gap-1.5",children:[e.jsx("span",{id:`${s.id}-hidden-in`,className:"text-muted-foreground text-xs",children:"Hidden in"}),p.map(d=>e.jsx(ne,{place:d,name:c(d),removeLabel:`Show in ${c(d)} again`,onRemove:()=>u({...a,hide:o(a.hide,d)})},`${d.kind}:${d.id}`))]})]})}const os={agents:O,rooms:_,pages:ge};function ne({place:s,name:t,removeLabel:n,onRemove:l}){const i=os[s.kind];return e.jsxs("span",{className:"bg-muted inline-flex h-6 items-center gap-1 rounded-md pr-0.5 pl-1.5 text-xs",children:[e.jsx(i,{className:"text-muted-foreground size-3","aria-hidden":!0}),e.jsx("span",{className:"max-w-40 truncate",children:t}),e.jsx("button",{type:"button",onClick:l,"aria-label":n,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm p-0.5",children:e.jsx(B,{className:"size-3"})})]})}function ds({tabTitle:s,names:t,taken:n,onAdd:l}){const[i,a]=C.useState(!1),h=o=>{l(o),a(!1)},u=Se.filter(o=>!n.pages.includes(o.key)),c=t.agents.filter(o=>!n.agents.includes(o.id)),r=t.rooms.filter(o=>!n.rooms.includes(o.id));return e.jsxs(q,{open:i,onOpenChange:a,children:[e.jsx(H,{asChild:!0,children:e.jsxs($,{variant:"ghost",size:"sm",className:"h-6 px-1.5 text-xs","aria-label":`Add a place for the ${s} tab`,children:[e.jsx(K,{className:"size-3"}),"Add"]})}),e.jsx(X,{align:"start",className:"w-64 p-0",children:e.jsxs(G,{children:[e.jsx(Y,{placeholder:"Find an agent, channel or page"}),e.jsxs(V,{className:"max-h-64",children:[e.jsx(Q,{children:"Nothing matches."}),c.length>0&&e.jsx(A,{heading:"Agents",children:c.map(o=>e.jsxs(P,{value:`agent ${D(o)} ${o.id}`,onSelect:()=>h({kind:"agents",id:o.id}),children:[e.jsx(O,{className:"size-3.5"}),D(o)]},o.id))}),r.length>0&&e.jsx(A,{heading:"Channels and DMs",children:r.map(o=>e.jsxs(P,{value:`room ${E(o)} ${o.id}`,onSelect:()=>h({kind:"rooms",id:o.id}),children:[e.jsx(_,{className:"size-3.5"}),E(o)]},o.id))}),u.length>0&&e.jsx(A,{heading:"Pages",children:u.map(o=>e.jsxs(P,{value:`page ${o.label}`,onSelect:()=>h({kind:"pages",id:o.key}),children:[e.jsx(ge,{className:"size-3.5"}),o.label]},o.key))})]})]})})]})}const pe=s=>[...ce.detail(s),"room-access"];function ls(s){return oe({queryKey:pe(s),queryFn:async()=>{const t=await fetch(z(`/extensions/${s}/room-access`));if(!t.ok)throw new Error(`Couldn’t load the rooms. The server answered ${t.status}.`);return(await t.json()).roomIds}})}function cs(s){const t=de();return le({mutationFn:async n=>{const l=await fetch(z(`/extensions/${s}/room-access`),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({roomIds:n})});if(!l.ok){const i=await l.json().catch(()=>({}));throw new Error(i.message??i.error??"Couldn’t save the rooms. Try again.")}return(await l.json()).roomIds},onSuccess:n=>{t.setQueryData(pe(s),n)}})}function ms({extensionId:s,name:t}){const n=ls(s).data??[],{mutate:l}=cs(s),i=ie().data,a=C.useMemo(()=>(i??[]).filter(r=>!r.bridge),[i]),h=C.useMemo(()=>new Map((i??[]).map(r=>[r.id,E(r)])),[i]),u=r=>l(r,{onError:o=>S.error(o.message)}),c=r=>h.get(r)??"A room that is gone";return e.jsxs("div",{className:"space-y-1.5 pt-1","data-testid":`room-access-${s}`,children:[e.jsx("p",{className:"text-sm",children:"Rooms it can use"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[n.map(r=>e.jsxs("span",{className:"bg-muted inline-flex h-6 items-center gap-1 rounded-md pr-0.5 pl-1.5 text-xs",children:[e.jsx(_,{className:"text-muted-foreground size-3","aria-hidden":!0}),e.jsx("span",{className:"max-w-40 truncate",children:c(r)}),e.jsx("button",{type:"button",onClick:()=>u(n.filter(o=>o!==r)),"aria-label":`Remove ${c(r)}`,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm p-0.5",children:e.jsx(B,{className:"size-3"})})]},r)),e.jsx(us,{name:t,rooms:a.filter(r=>!n.includes(r.id)),onAdd:r=>u([...n,r])})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:n.length===0?"None yet. It can’t read or reply anywhere.":"It reads and replies as you, only here."})]})}function us({name:s,rooms:t,onAdd:n}){const[l,i]=C.useState(!1);return e.jsxs(q,{open:l,onOpenChange:i,children:[e.jsx(H,{asChild:!0,children:e.jsxs($,{variant:"ghost",size:"sm",className:"h-6 px-1.5 text-xs","aria-label":`Add a room for ${s}`,children:[e.jsx(K,{className:"size-3"}),"Add"]})}),e.jsx(X,{align:"start",className:"w-64 p-0",children:e.jsxs(G,{children:[e.jsx(Y,{placeholder:"Find a channel or DM"}),e.jsxs(V,{className:"max-h-64",children:[e.jsx(Q,{children:"Nothing matches."}),t.length>0&&e.jsx(A,{heading:"Channels and DMs",children:t.map(a=>e.jsxs(P,{value:`room ${E(a)} ${a.id}`,onSelect:()=>{n(a.id),i(!1)},children:[e.jsx(_,{className:"size-3.5"}),E(a)]},a.id))})]})]})})]})}const fe=s=>[...ce.detail(s),"forward-agents"];function hs(s){return oe({queryKey:fe(s),queryFn:async()=>{const t=await fetch(z(`/extensions/${s}/forward-agents`),{headers:{"X-Client-Id":me()}});if(!t.ok)throw new Error(`Couldn’t load the agents. The server answered ${t.status}.`);return await t.json()}})}function xs(s){const t=de();return le({mutationFn:async n=>{const l=await fetch(z(`/extensions/${s}/forward-agents`),{method:"PUT",headers:{"Content-Type":"application/json","X-Client-Id":me()},body:JSON.stringify({agentIds:n})});if(!l.ok){const i=await l.json().catch(()=>({}));throw new Error(i.message??i.error??"Couldn’t save the agents. Try again.")}return await l.json()},onSuccess:n=>{t.setQueryData(fe(s),n)}})}function gs({extensionId:s,name:t}){var c;const n=hs(s).data,{mutate:l}=xs(s),i=((c=re().data)==null?void 0:c.agents)??[],a=[...(n==null?void 0:n.agents)??[],...((n==null?void 0:n.missing)??[]).map(r=>({id:r,name:"An agent that is gone"}))],h=a.map(r=>r.id),u=r=>l(r,{onError:o=>S.error(o.message)});return e.jsxs("div",{className:"space-y-1.5 pt-1","data-testid":`forward-agents-${s}`,children:[e.jsx("p",{className:"text-sm",children:"Sends your comments to"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[a.map(r=>e.jsxs("span",{className:"bg-muted inline-flex h-6 items-center gap-1 rounded-md pr-0.5 pl-1.5 text-xs",children:[e.jsx(O,{className:"text-muted-foreground size-3","aria-hidden":!0}),e.jsx("span",{className:"max-w-40 truncate",children:r.name}),e.jsx("button",{type:"button",onClick:()=>u(h.filter(o=>o!==r.id)),"aria-label":`Remove ${r.name}`,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm p-0.5",children:e.jsx(B,{className:"size-3"})})]},r.id)),e.jsx(ps,{name:t,agents:i.filter(r=>!h.includes(r.id)).map(r=>({id:r.id,name:D(r)})),onAdd:r=>u([...h,r])})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:a.length===0?"None yet. It asks you the first time you send a comment.":"Your comments reach these agents as your own words."})]})}function ps({name:s,agents:t,onAdd:n}){const[l,i]=C.useState(!1);return e.jsxs(q,{open:l,onOpenChange:i,children:[e.jsx(H,{asChild:!0,children:e.jsxs($,{variant:"ghost",size:"sm",className:"h-6 px-1.5 text-xs","aria-label":`Add an agent for ${s}`,children:[e.jsx(K,{className:"size-3"}),"Add"]})}),e.jsx(X,{align:"start",className:"w-64 p-0",children:e.jsxs(G,{children:[e.jsx(Y,{placeholder:"Find an agent"}),e.jsxs(V,{className:"max-h-64",children:[e.jsx(Q,{children:"Nothing matches."}),t.length>0&&e.jsx(A,{heading:"Agents",children:t.map(a=>e.jsxs(P,{value:`agent ${a.name} ${a.id}`,onSelect:()=>{n(a.id),i(!1)},children:[e.jsx(O,{className:"size-3.5"}),a.name]},a.id))})]})]})})]})}function fs({risk:s,id:t,name:n,onTurnOff:l,isToggling:i}){const a=Ce(),h=s.agentName??"an agent",u=a.isPending||i;return e.jsxs("div",{className:"text-status-warning-fg flex flex-wrap items-center gap-x-2 gap-y-1 text-sm","data-testid":`extension-step-up-risk-${t}`,children:[e.jsx("p",{children:s.reason==="agent-folder"?`${h} can edit this, so confirming is off.`:"Changed since you approved it, so confirming is off."}),s.reason==="agent-folder"?e.jsxs("button",{type:"button",onClick:()=>a.mutate({id:t,name:n}),disabled:u,className:"text-muted-foreground hover:text-foreground focus-ring min-h-11 rounded-sm text-left text-xs underline underline-offset-2 disabled:opacity-50 sm:min-h-0",children:["Move out of ",h,"’s folder"]}):e.jsx("button",{type:"button",onClick:l,disabled:u,className:"text-muted-foreground hover:text-foreground focus-ring min-h-11 rounded-sm text-left text-xs underline underline-offset-2 disabled:opacity-50 sm:min-h-0",children:"Turn off"})]})}const js=new Set(["disabled","discovered","incompatible","invalid"]),vs="/marketplace?view=installed";function Ns({extension:s,onToggle:t,isToggling:n,onSetRunApproval:l,isSettingApproval:i,onReload:a,isReloading:h,stepUpRisk:u}){var J,W;const{manifest:c,status:r,scope:o,error:v,serverError:p,origin:d,approvedToRun:f}=s,[j,y]=C.useState(!1),m=!js.has(r),x=r==="incompatible",w=r==="invalid",g=r==="compile_error"||r==="activate_error",k=!x&&!w,N=!(d==="core"&&c.canDisable===!1),R=s.hasServerEntry||s.hasDataProxy,b=ue(s),je=ke(s.id,he(b)),I=g?"Not working":x?"Incompatible":w?"Can’t load":null;return e.jsx(Ee,{"data-slot":"extension-card","data-testid":`extension-card-${s.id}`,"data-section":s.id,radius:"lg",gap:"none",className:F(g&&"border-amber-500/50",(x||w)&&"opacity-70"),children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0 flex-1 space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[g&&e.jsx($e,{className:"text-status-warning-dot size-4 shrink-0","aria-hidden":"true"}),(x||w)&&!g&&e.jsx(Ae,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":"true"}),!g&&!x&&!w&&e.jsx(Pe,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":"true"}),e.jsx("span",{className:"font-medium",children:c.name}),e.jsxs("span",{className:"text-muted-foreground text-sm",children:["v",c.version]}),s.devLink&&e.jsx(Re,{})]}),s.devLink&&e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1","data-testid":`extension-dev-link-${s.id}`,children:[e.jsx(Te,{path:s.devLink.path,className:"min-w-0"}),e.jsx("button",{type:"button",onClick:()=>void De(vs),className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm text-xs underline underline-offset-2",children:"Unlink or switch"})]}),c.description&&e.jsx("p",{className:"text-muted-foreground text-sm",children:c.description}),e.jsx(_e,{gifts:Oe(s),"data-testid":`extension-agent-gifts-${s.id}`}),m&&e.jsx(as,{extensionId:s.id}),((J=c.capabilities)==null?void 0:J.rooms)===!0&&e.jsx(ms,{extensionId:s.id,name:c.name}),((W=c.capabilities)==null?void 0:W.forward)===!0&&e.jsx(gs,{extensionId:s.id,name:c.name}),x&&c.minHostVersion&&e.jsxs("p",{className:"text-muted-foreground text-sm",children:["Needs DorkOS ",c.minHostVersion," or newer"]}),g&&v&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-status-warning-fg text-sm",children:[r==="compile_error"?"Couldn’t build: ":"Couldn’t start: ",v.message]}),v.details&&e.jsxs("button",{type:"button",onClick:()=>y(L=>!L),className:"text-muted-foreground hover:text-foreground flex items-center gap-1 text-xs transition-colors","aria-expanded":j,children:[e.jsx(ze,{className:F("size-3 transition-transform",j&&"rotate-180")}),j?"Hide details":"Show details"]}),j&&v.details&&e.jsx("pre",{className:"bg-muted mt-1 max-h-32 overflow-auto rounded-md p-2 text-xs",children:v.details})]}),p&&U(p.code)&&e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1","data-testid":`extension-server-status-${s.id}`,children:[e.jsx("p",{className:"text-status-warning-fg text-sm",children:p.message||ts(p.code,c.name)}),e.jsx("button",{type:"button",onClick:a,disabled:h,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm text-xs underline underline-offset-2 disabled:opacity-50",children:"Reload"})]}),s.restartingAt&&!p&&e.jsx("p",{className:"text-muted-foreground text-sm",role:"status",children:ns(c.name)}),p&&!U(p.code)&&e.jsxs("p",{className:"text-status-warning-fg text-sm",children:["Couldn’t rebuild its server part: ",p.message,". The last version still runs."]}),u&&e.jsx(fs,{risk:u,id:s.id,name:c.name,onTurnOff:()=>t(s.id,!1),isToggling:n}),d==="user"&&(f?e.jsxs("div",{className:"text-muted-foreground flex flex-wrap items-center gap-2 text-xs","data-testid":`extension-run-allowed-${s.id}`,children:[e.jsx(Ie,{className:"size-3.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:"You allowed this to run."}),s.originProblem==="changed"&&e.jsx("span",{children:"You approved its changed files. Any further change asks again."}),e.jsx("button",{type:"button",onClick:()=>l(s.id,!1),disabled:i,className:"hover:text-foreground underline underline-offset-2 disabled:opacity-50",children:"Stop it"}),e.jsx(ee,{permissions:b,className:"basis-full","data-testid":`extension-permissions-${s.id}`})]}):e.jsxs("div",{className:"space-y-2 rounded-lg border border-amber-500/40 bg-amber-500/5 p-3","data-testid":`extension-needs-approval-${s.id}`,children:[e.jsx("p",{className:"text-sm font-medium",children:"This extension is waiting for you"}),s.originProblem&&e.jsx("p",{className:"text-status-warning-fg text-sm","data-testid":`extension-origin-problem-${s.id}`,children:s.originProblem==="changed"?"Its files changed after install, so DorkOS can’t vouch for it. Look it over first.":s.originProblem==="dev-link"?"It runs from your folder, so DorkOS can’t vouch for its source.":"Its plugin links to files elsewhere, so DorkOS can’t vouch for its source."}),e.jsx(ee,{permissions:b,added:je,"data-testid":`extension-permissions-${s.id}`}),e.jsx("p",{className:"text-muted-foreground text-sm",children:Le(R,(b==null?void 0:b.runtime)==="subprocess")}),e.jsx("p",{className:"text-muted-foreground text-sm",children:Me}),e.jsx($,{size:"sm",onClick:()=>l(s.id,!0),disabled:i,"data-testid":`extension-approve-run-${s.id}`,children:"Turn it on"})]})),e.jsxs("div",{className:"text-muted-foreground flex flex-wrap items-center gap-2 text-xs",children:[e.jsx(M,{variant:"outline",children:o}),I&&e.jsx(M,{variant:I==="Not working"?"destructive":"secondary","data-testid":`extension-health-${s.id}`,children:I}),c.author&&e.jsx("span",{children:c.author})]})]}),e.jsx("div",{className:"flex shrink-0 items-center pt-0.5",children:N?e.jsx(Fe,{checked:m,onCheckedChange:L=>t(s.id,L),disabled:!k||n,"aria-label":`${m?"Disable":"Enable"} ${c.name}`}):e.jsx(M,{variant:"secondary",title:"This extension is always on","data-testid":`extension-required-${s.id}`,children:"Required"})})]})})}function ae(s){const t=new Date(s);return Number.isNaN(t.getTime())?"":t.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function ys(){const{data:s=[]}=Ue(),{stop:t,pendingSource:n}=Be();return s.length===0?null:e.jsxs("section",{className:"space-y-3","data-testid":"trusted-sources-section",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Trusted sources"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Extensions from these sources turn on without asking."}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Stop trusting one, and extensions already on keep running."}),e.jsx(xe,{className:"text-muted-foreground text-sm",label:"If you stop trusting one",openLabel:"If you stop trusting one",children:e.jsx("p",{children:"Newer versions and new extensions from it wait for your yes."})})]}),e.jsx("ul",{className:"divide-y rounded-xl border",children:s.map(({source:l,trustedAt:i})=>e.jsxs("li",{className:"flex flex-wrap items-center justify-between gap-x-3 gap-y-1.5 px-3 py-2.5",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate font-mono text-sm",children:l}),ae(i)&&e.jsxs("p",{className:"text-muted-foreground text-xs",children:["Trusted ",ae(i)]})]}),e.jsx($,{type:"button",variant:"outline",size:"sm",disabled:n===l,onClick:()=>t(l),children:"Stop trusting"})]},l))})]})}function $s(){const{data:s=[],isLoading:t}=qe(),{data:n}=He(),{section:l}=Ke();Je(t?null:l);const i=Xe(),a=Ge(),h=Ye(),u=se(!0),c=se(!1),r=new Set([...i.variables?[i.variables]:[],...a.variables?[a.variables]:[]]),o=new Set([...u.isPending&&u.variables?[u.variables.id]:[],...c.isPending&&c.variables?[c.variables.id]:[]]);function v(m,x){const w=x?u:c,g=s.find(N=>N.id===m);if(!g)return;const k=x?he(ue(g)):void 0;w.mutate({id:m,version:g.manifest.version,plugin:g.sourcePlugin??null,...k?{permissions:k}:{},...x&&g.digest?{expectedDigest:g.digest}:{}},{onSuccess:N=>{x&&te.getState().forget(m);const R=N.extension.manifest.name,b=N.extension.isolation?"":" inside DorkOS";S.success(x?`${R} can now run${b}`:`${R} stopped running`)},onError:N=>{if(N instanceof Qe&&N.stale){k&&te.getState().remember(m,k),S.error(`${g.manifest.name} changed since you saw it. Check it again.`);return}S.error(x?"Couldn’t let it run.":"Couldn’t stop it running.",{description:N.message})}})}async function p(m,x){(x?i:a).mutate(m,{onError:g=>{S.error(x?"Couldn’t turn that on.":"Couldn’t turn that off.",{description:g.message})}})}function d(){h.mutate(void 0,{onSuccess:m=>{S.success(`Reloaded ${m.length} extension${m.length===1?"":"s"}`)},onError:m=>{S.error("Couldn’t reload your extensions.",{description:m.message})}})}if(t)return e.jsx("div",{className:"text-muted-foreground py-8 text-center text-sm",children:"Loading extensions…"});const f=s.filter(m=>m.origin==="core"),j=s.filter(m=>m.origin==="user"),y=m=>e.jsx(Ns,{extension:m,onToggle:p,isToggling:r.has(m.id),onSetRunApproval:v,isSettingApproval:o.has(m.id),onReload:d,isReloading:h.isPending,stepUpRisk:n==null?void 0:n.find(x=>x.id===m.id)},m.id);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"text-muted-foreground space-y-1 text-sm",children:[e.jsx("p",{children:"Extensions add new screens and tools to DorkOS."}),e.jsxs(xe,{children:[e.jsx("p",{children:"Core extensions come with DorkOS."}),e.jsxs("p",{children:["Installed ones live in"," ",e.jsx("code",{className:"bg-muted rounded px-1",children:"~/.dork/extensions/"})," or your project’s"," ",e.jsx("code",{className:"bg-muted rounded px-1",children:".dork/extensions/"}),"."]})]})]}),s.length===0?e.jsx("div",{className:"text-muted-foreground py-8 text-center text-sm","data-testid":"no-extensions",children:e.jsx("p",{children:"No extensions installed."})}):e.jsxs(e.Fragment,{children:[f.length>0&&e.jsxs("section",{className:"space-y-3","data-testid":"core-extensions-section",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Core extensions"}),e.jsx("div",{className:"space-y-3",children:f.map(y)})]}),e.jsxs("section",{className:"space-y-3","data-testid":"installed-extensions-section",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Installed extensions"}),j.length>0?e.jsx("div",{className:"space-y-3",children:j.map(y)}):e.jsxs("div",{className:"text-muted-foreground rounded-xl border border-dashed p-4 text-sm","data-testid":"no-installed-extensions",children:["No extensions installed yet. Browse"," ",e.jsx("span",{className:"text-foreground font-medium",children:"Marketplace"})," to add some."]})]})]}),e.jsx(ys,{}),e.jsx("div",{className:"flex justify-end",children:e.jsxs($,{variant:"outline",size:"sm",onClick:d,disabled:h.isPending,"data-testid":"reload-extensions-button",children:[e.jsx(Ve,{className:F("mr-2 size-4",h.isPending&&"animate-spin")}),"Reload extensions"]})})]})}export{Rs as ExtensionEventBridge,Ts as ExtensionLoader,Ds as ExtensionProvider,$s as ExtensionsSettingsTab,Ls as ForwardConsentHost,_s as createExtensionAPI,Os as createExtensionEventBridge,zs as useExtensions};
1
+ import{hv as ve,j as e,hw as Ne,hx as ye,hy as T,eH as we,eI as Z,c$ as re,cv as ie,r as S,am as _,gM as E,H as D,aW as I,X as B,hz as be,hA as Ce,gn as H,go as q,B as $,f as K,gp as Y,a6 as oe,a7 as de,a8 as le,hB as O,hC as ce,dR as C,hD as me,hE as Se,hF as ue,hG as ke,hH as xe,fY as Ee,a4 as $e,be as Ae,gd as Pe,hI as Re,g7 as Te,g8 as _e,hJ as De,hK as Ie,U as Oe,G as F,eN as ze,hL as ee,hM as Le,hN as Me,a2 as M,a3 as Fe,hO as Ue,hP as Be,hQ as He,hR as qe,hS as Ke,hT as Ye,hU as Xe,hV as Ge,hW as se,ff as Ve,hX as Qe,hY as te}from"./index-BYTLOFNS.js";import{hZ as Rs,h_ as Ts,h$ as _s,i0 as Ds,i1 as Is,gb as Os}from"./index-BYTLOFNS.js";import{u as Je}from"./use-deep-link-scroll-Cahio5D0.js";import{M as he}from"./more-details-DNp6DH8i.js";import{u as We,a as Ze}from"./ForwardConsentHost-BVh663l5.js";import{F as Ls}from"./ForwardConsentHost-BVh663l5.js";import{C as X,a as G,b as V,c as Q,d as A,e as P}from"./command-DU2-hlOP.js";import{F as ge}from"./file-text-CS9s0qOe.js";const es=["server_crashed","server_out_of_memory","server_unresponsive","isolation_unavailable","server_start_failed","server_start_timeout"],ss={server_crashed:s=>`${s} stopped unexpectedly 3 times. Reload it to try again.`,server_out_of_memory:s=>`${s} ran out of memory and stopped. Reload it to try again.`,server_unresponsive:s=>`${s} stopped responding, so DorkOS stopped it.`,isolation_unavailable:s=>`${s} can’t run with its limits on this computer.`,server_start_failed:s=>`${s} couldn’t start. Reload it to try again.`,server_start_timeout:s=>`${s} took too long to start. Reload it to try again.`};function U(s){return es.includes(s)}function ts(s,t){return U(s)?ss[s](t):null}function ns(s){return`Restarting ${s}…`}function as({extensionId:s}){const t=ve("right-panel").filter(n=>n.extensionId===s);return t.length===0?null:e.jsx("div",{className:"space-y-3 pt-1","data-testid":`panel-tab-placement-${s}`,children:t.map(n=>e.jsx(is,{tab:n,labelled:t.length>1},n.id))})}function rs(){var n;const s=(n=re().data)==null?void 0:n.agents,t=ie().data;return S.useMemo(()=>{const l=new Map((s??[]).map(a=>[a.id,_(a)])),i=new Map((t??[]).map(a=>[a.id,E(a)]));return{agents:s??[],rooms:t??[],agentNames:l,roomNames:i}},[s,t])}function is({tab:s,labelled:t}){const n=Ne(We(),s.id),{setPlacement:l}=Ze(),i=rs(),a=ye(n,s.declaredPlacement),x=a.show.pages.includes(T),u=d=>l(s.id,{show:d.show,hide:d.hide}),c=d=>d.kind==="agents"?i.agentNames.get(d.id)??"An agent that is gone":d.kind==="rooms"?i.roomNames.get(d.id)??"A channel that is gone":be(d.id),r=(d,f)=>["agents","rooms","pages"].flatMap(j=>d[j].filter(y=>f||y!==T).map(y=>({kind:j,id:y}))),o=(d,f)=>({...d,[f.kind]:d[f.kind].filter(j=>j!==f.id)}),v=r(a.show,!1),p=r(a.hide,!0);return e.jsxs("div",{className:"space-y-2","data-testid":`panel-tab-placement-${s.id}`,children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm",children:t?`${s.title} tab shows`:"Panel tab shows"}),e.jsxs(we,{value:x?"everywhere":"only",onValueChange:d=>u({hide:a.hide,show:d==="everywhere"?{...a.show,pages:[T]}:{...a.show,pages:a.show.pages.filter(f=>f!==T)}}),"aria-label":`Where the ${s.title} tab shows`,children:[e.jsx(Z,{value:"everywhere",children:"Everywhere"}),e.jsx(Z,{value:"only",children:"Only in…"})]}),n&&e.jsx("button",{type:"button",onClick:()=>l(s.id,null),className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm text-xs underline underline-offset-2",children:s.declaredPlacement?"Use its default":"Reset"})]}),!x&&e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[v.map(d=>e.jsx(ne,{place:d,name:c(d),removeLabel:`Remove ${c(d)}`,onRemove:()=>u({...a,show:o(a.show,d)})},`${d.kind}:${d.id}`)),e.jsx(ds,{tabTitle:s.title,names:i,taken:a.show,onAdd:d=>u({show:{...a.show,[d.kind]:[...a.show[d.kind],d.id]},hide:o(a.hide,d)})}),v.length===0&&e.jsx("span",{className:"text-muted-foreground text-xs",children:"Shows nowhere yet. Add a place."})]}),p.length>0&&e.jsxs("div",{role:"group","aria-labelledby":`${s.id}-hidden-in`,className:"flex flex-wrap items-center gap-1.5",children:[e.jsx("span",{id:`${s.id}-hidden-in`,className:"text-muted-foreground text-xs",children:"Hidden in"}),p.map(d=>e.jsx(ne,{place:d,name:c(d),removeLabel:`Show in ${c(d)} again`,onRemove:()=>u({...a,hide:o(a.hide,d)})},`${d.kind}:${d.id}`))]})]})}const os={agents:I,rooms:D,pages:ge};function ne({place:s,name:t,removeLabel:n,onRemove:l}){const i=os[s.kind];return e.jsxs("span",{className:"bg-muted inline-flex h-6 items-center gap-1 rounded-md pr-0.5 pl-1.5 text-xs",children:[e.jsx(i,{className:"text-muted-foreground size-3","aria-hidden":!0}),e.jsx("span",{className:"max-w-40 truncate",children:t}),e.jsx("button",{type:"button",onClick:l,"aria-label":n,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm p-0.5",children:e.jsx(B,{className:"size-3"})})]})}function ds({tabTitle:s,names:t,taken:n,onAdd:l}){const[i,a]=S.useState(!1),x=o=>{l(o),a(!1)},u=Ce.filter(o=>!n.pages.includes(o.key)),c=t.agents.filter(o=>!n.agents.includes(o.id)),r=t.rooms.filter(o=>!n.rooms.includes(o.id));return e.jsxs(H,{open:i,onOpenChange:a,children:[e.jsx(q,{asChild:!0,children:e.jsxs($,{variant:"ghost",size:"sm",className:"h-6 px-1.5 text-xs","aria-label":`Add a place for the ${s} tab`,children:[e.jsx(K,{className:"size-3"}),"Add"]})}),e.jsx(Y,{align:"start",className:"w-64 p-0",children:e.jsxs(X,{children:[e.jsx(G,{placeholder:"Find an agent, channel or page"}),e.jsxs(V,{className:"max-h-64",children:[e.jsx(Q,{children:"Nothing matches."}),c.length>0&&e.jsx(A,{heading:"Agents",children:c.map(o=>e.jsxs(P,{value:`agent ${_(o)} ${o.id}`,onSelect:()=>x({kind:"agents",id:o.id}),children:[e.jsx(I,{className:"size-3.5"}),_(o)]},o.id))}),r.length>0&&e.jsx(A,{heading:"Channels and DMs",children:r.map(o=>e.jsxs(P,{value:`room ${E(o)} ${o.id}`,onSelect:()=>x({kind:"rooms",id:o.id}),children:[e.jsx(D,{className:"size-3.5"}),E(o)]},o.id))}),u.length>0&&e.jsx(A,{heading:"Pages",children:u.map(o=>e.jsxs(P,{value:`page ${o.label}`,onSelect:()=>x({kind:"pages",id:o.key}),children:[e.jsx(ge,{className:"size-3.5"}),o.label]},o.key))})]})]})})]})}const pe=s=>[...ce.detail(s),"room-access"];function ls(s){return oe({queryKey:pe(s),queryFn:async()=>{const t=await fetch(O(`/extensions/${s}/room-access`));if(!t.ok)throw new Error(`Couldn’t load the rooms. The server answered ${t.status}.`);return(await t.json()).roomIds}})}function cs(s){const t=de();return le({mutationFn:async n=>{const l=await fetch(O(`/extensions/${s}/room-access`),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({roomIds:n})});if(!l.ok){const i=await l.json().catch(()=>({}));throw new Error(i.message??i.error??"Couldn’t save the rooms. Try again.")}return(await l.json()).roomIds},onSuccess:n=>{t.setQueryData(pe(s),n)}})}function ms({extensionId:s,name:t}){const n=ls(s).data??[],{mutate:l}=cs(s),i=ie().data,a=S.useMemo(()=>(i??[]).filter(r=>!r.bridge),[i]),x=S.useMemo(()=>new Map((i??[]).map(r=>[r.id,E(r)])),[i]),u=r=>l(r,{onError:o=>C.error(o.message)}),c=r=>x.get(r)??"A room that is gone";return e.jsxs("div",{className:"space-y-1.5 pt-1","data-testid":`room-access-${s}`,children:[e.jsx("p",{className:"text-sm",children:"Rooms it can use"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[n.map(r=>e.jsxs("span",{className:"bg-muted inline-flex h-6 items-center gap-1 rounded-md pr-0.5 pl-1.5 text-xs",children:[e.jsx(D,{className:"text-muted-foreground size-3","aria-hidden":!0}),e.jsx("span",{className:"max-w-40 truncate",children:c(r)}),e.jsx("button",{type:"button",onClick:()=>u(n.filter(o=>o!==r)),"aria-label":`Remove ${c(r)}`,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm p-0.5",children:e.jsx(B,{className:"size-3"})})]},r)),e.jsx(us,{name:t,rooms:a.filter(r=>!n.includes(r.id)),onAdd:r=>u([...n,r])})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:n.length===0?"None yet. It can’t read or reply anywhere.":"It reads and replies as you, only here."})]})}function us({name:s,rooms:t,onAdd:n}){const[l,i]=S.useState(!1);return e.jsxs(H,{open:l,onOpenChange:i,children:[e.jsx(q,{asChild:!0,children:e.jsxs($,{variant:"ghost",size:"sm",className:"h-6 px-1.5 text-xs","aria-label":`Add a room for ${s}`,children:[e.jsx(K,{className:"size-3"}),"Add"]})}),e.jsx(Y,{align:"start",className:"w-64 p-0",children:e.jsxs(X,{children:[e.jsx(G,{placeholder:"Find a channel or DM"}),e.jsxs(V,{className:"max-h-64",children:[e.jsx(Q,{children:"Nothing matches."}),t.length>0&&e.jsx(A,{heading:"Channels and DMs",children:t.map(a=>e.jsxs(P,{value:`room ${E(a)} ${a.id}`,onSelect:()=>{n(a.id),i(!1)},children:[e.jsx(D,{className:"size-3.5"}),E(a)]},a.id))})]})]})})]})}const fe=s=>[...ce.detail(s),"forward-agents"];function xs(s){return oe({queryKey:fe(s),queryFn:async()=>{const t=await fetch(O(`/extensions/${s}/forward-agents`),{headers:{"X-Client-Id":me()}});if(!t.ok)throw new Error(`Couldn’t load the agents. The server answered ${t.status}.`);return await t.json()}})}function hs(s){const t=de();return le({mutationFn:async n=>{const l=await fetch(O(`/extensions/${s}/forward-agents`),{method:"PUT",headers:{"Content-Type":"application/json","X-Client-Id":me()},body:JSON.stringify({agentIds:n})});if(!l.ok){const i=await l.json().catch(()=>({}));throw new Error(i.message??i.error??"Couldn’t save the agents. Try again.")}return await l.json()},onSuccess:n=>{t.setQueryData(fe(s),n)}})}function gs({extensionId:s,name:t}){var c;const n=xs(s).data,{mutate:l}=hs(s),i=((c=re().data)==null?void 0:c.agents)??[],a=[...(n==null?void 0:n.agents)??[],...((n==null?void 0:n.missing)??[]).map(r=>({id:r,name:"An agent that is gone"}))],x=a.map(r=>r.id),u=r=>l(r,{onError:o=>C.error(o.message)});return e.jsxs("div",{className:"space-y-1.5 pt-1","data-testid":`forward-agents-${s}`,children:[e.jsx("p",{className:"text-sm",children:"Sends your comments to"}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[a.map(r=>e.jsxs("span",{className:"bg-muted inline-flex h-6 items-center gap-1 rounded-md pr-0.5 pl-1.5 text-xs",children:[e.jsx(I,{className:"text-muted-foreground size-3","aria-hidden":!0}),e.jsx("span",{className:"max-w-40 truncate",children:r.name}),e.jsx("button",{type:"button",onClick:()=>u(x.filter(o=>o!==r.id)),"aria-label":`Remove ${r.name}`,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm p-0.5",children:e.jsx(B,{className:"size-3"})})]},r.id)),e.jsx(ps,{name:t,agents:i.filter(r=>!x.includes(r.id)).map(r=>({id:r.id,name:_(r)})),onAdd:r=>u([...x,r])})]}),e.jsx("p",{className:"text-muted-foreground text-xs",children:a.length===0?"None yet. It asks you the first time you send a comment.":"Your comments reach these agents as your own words."})]})}function ps({name:s,agents:t,onAdd:n}){const[l,i]=S.useState(!1);return e.jsxs(H,{open:l,onOpenChange:i,children:[e.jsx(q,{asChild:!0,children:e.jsxs($,{variant:"ghost",size:"sm",className:"h-6 px-1.5 text-xs","aria-label":`Add an agent for ${s}`,children:[e.jsx(K,{className:"size-3"}),"Add"]})}),e.jsx(Y,{align:"start",className:"w-64 p-0",children:e.jsxs(X,{children:[e.jsx(G,{placeholder:"Find an agent"}),e.jsxs(V,{className:"max-h-64",children:[e.jsx(Q,{children:"Nothing matches."}),t.length>0&&e.jsx(A,{heading:"Agents",children:t.map(a=>e.jsxs(P,{value:`agent ${a.name} ${a.id}`,onSelect:()=>{n(a.id),i(!1)},children:[e.jsx(I,{className:"size-3.5"}),a.name]},a.id))})]})]})})]})}function fs({risk:s,id:t,name:n,onTurnOff:l,isToggling:i}){const a=Se(),x=s.agentName??"an agent",u=a.isPending||i;return e.jsxs("div",{className:"text-status-warning-fg flex flex-wrap items-center gap-x-2 gap-y-1 text-sm","data-testid":`extension-step-up-risk-${t}`,children:[e.jsx("p",{children:s.reason==="agent-folder"?`${x} can edit this, so confirming is off.`:"Changed since you approved it, so confirming is off."}),s.reason==="agent-folder"?e.jsxs("button",{type:"button",onClick:()=>a.mutate({id:t,name:n}),disabled:u,className:"text-muted-foreground hover:text-foreground focus-ring min-h-11 rounded-sm text-left text-xs underline underline-offset-2 disabled:opacity-50 sm:min-h-0",children:["Move out of ",x,"’s folder"]}):e.jsx("button",{type:"button",onClick:l,disabled:u,className:"text-muted-foreground hover:text-foreground focus-ring min-h-11 rounded-sm text-left text-xs underline underline-offset-2 disabled:opacity-50 sm:min-h-0",children:"Turn off"})]})}const js=new Set(["disabled","discovered","incompatible","invalid"]),vs="/marketplace?view=installed";function Ns({extension:s,onToggle:t,isToggling:n,onSetRunApproval:l,isSettingApproval:i,onReload:a,isReloading:x,stepUpRisk:u}){var J,W;const{manifest:c,status:r,scope:o,error:v,serverError:p,origin:d,approvedToRun:f}=s,[j,y]=S.useState(!1),m=!js.has(r),h=r==="incompatible",w=r==="invalid",g=r==="compile_error"||r==="activate_error",k=!h&&!w,N=!(d==="core"&&c.canDisable===!1),R=s.hasServerEntry||s.hasDataProxy,b=ue(s),je=ke(s.id,xe(b)),z=g?"Not working":h?"Incompatible":w?"Can’t load":null;return e.jsx(Ee,{"data-slot":"extension-card","data-testid":`extension-card-${s.id}`,"data-section":s.id,radius:"lg",gap:"none",className:F(g&&"border-amber-500/50",(h||w)&&"opacity-70"),children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"min-w-0 flex-1 space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[g&&e.jsx($e,{className:"text-status-warning-dot size-4 shrink-0","aria-hidden":"true"}),(h||w)&&!g&&e.jsx(Ae,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":"true"}),!g&&!h&&!w&&e.jsx(Pe,{className:"text-muted-foreground size-4 shrink-0","aria-hidden":"true"}),e.jsx("span",{className:"font-medium",children:c.name}),e.jsxs("span",{className:"text-muted-foreground text-sm",children:["v",c.version]}),s.devLink&&e.jsx(Re,{})]}),s.devLink&&e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1","data-testid":`extension-dev-link-${s.id}`,children:[e.jsx(Te,{path:s.devLink.path,className:"min-w-0"}),e.jsx("button",{type:"button",onClick:()=>void _e(vs),className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm text-xs underline underline-offset-2",children:"Unlink or switch"})]}),c.description&&e.jsx("p",{className:"text-muted-foreground text-sm",children:c.description}),e.jsx(De,{gifts:Ie(s),"data-testid":`extension-agent-gifts-${s.id}`}),m&&e.jsx(as,{extensionId:s.id}),((J=c.capabilities)==null?void 0:J.rooms)===!0&&e.jsx(ms,{extensionId:s.id,name:c.name}),((W=c.capabilities)==null?void 0:W.forward)===!0&&e.jsx(gs,{extensionId:s.id,name:c.name}),h&&c.minHostVersion&&e.jsxs("p",{className:"text-muted-foreground text-sm",children:["Needs DorkOS ",c.minHostVersion," or newer"]}),g&&v&&e.jsxs("div",{className:"space-y-1",children:[e.jsxs("p",{className:"text-status-warning-fg text-sm",children:[r==="compile_error"?"Couldn’t build: ":"Couldn’t start: ",v.message]}),v.details&&e.jsxs("button",{type:"button",onClick:()=>y(L=>!L),className:"text-muted-foreground hover:text-foreground flex items-center gap-1 text-xs transition-colors","aria-expanded":j,children:[e.jsx(Oe,{className:F("size-3 transition-transform",j&&"rotate-180")}),j?"Hide details":"Show details"]}),j&&v.details&&e.jsx("pre",{className:"bg-muted mt-1 max-h-32 overflow-auto rounded-md p-2 text-xs",children:v.details})]}),p&&U(p.code)&&e.jsxs("div",{className:"flex flex-wrap items-center gap-x-2 gap-y-1","data-testid":`extension-server-status-${s.id}`,children:[e.jsx("p",{className:"text-status-warning-fg text-sm",children:p.message||ts(p.code,c.name)}),e.jsx("button",{type:"button",onClick:a,disabled:x,className:"text-muted-foreground hover:text-foreground focus-ring rounded-sm text-xs underline underline-offset-2 disabled:opacity-50",children:"Reload"})]}),s.restartingAt&&!p&&e.jsx("p",{className:"text-muted-foreground text-sm",role:"status",children:ns(c.name)}),p&&!U(p.code)&&e.jsxs("p",{className:"text-status-warning-fg text-sm",children:["Couldn’t rebuild its server part: ",p.message,". The last version still runs."]}),u&&e.jsx(fs,{risk:u,id:s.id,name:c.name,onTurnOff:()=>t(s.id,!1),isToggling:n}),d==="user"&&(f?e.jsxs("div",{className:"text-muted-foreground flex flex-wrap items-center gap-2 text-xs","data-testid":`extension-run-allowed-${s.id}`,children:[e.jsx(ze,{className:"size-3.5 shrink-0","aria-hidden":"true"}),e.jsx("span",{children:"You allowed this to run."}),s.originProblem==="changed"&&e.jsx("span",{children:"You approved its changed files. Any further change asks again."}),e.jsx("button",{type:"button",onClick:()=>l(s.id,!1),disabled:i,className:"hover:text-foreground underline underline-offset-2 disabled:opacity-50",children:"Stop it"}),e.jsx(ee,{permissions:b,className:"basis-full","data-testid":`extension-permissions-${s.id}`})]}):e.jsxs("div",{className:"space-y-2 rounded-lg border border-amber-500/40 bg-amber-500/5 p-3","data-testid":`extension-needs-approval-${s.id}`,children:[e.jsx("p",{className:"text-sm font-medium",children:"This extension is waiting for you"}),s.originProblem&&e.jsx("p",{className:"text-status-warning-fg text-sm","data-testid":`extension-origin-problem-${s.id}`,children:s.originProblem==="changed"?"Its files changed after install, so DorkOS can’t vouch for it. Look it over first.":s.originProblem==="dev-link"?"It runs from your folder, so DorkOS can’t vouch for its source.":"Its plugin links to files elsewhere, so DorkOS can’t vouch for its source."}),e.jsx(ee,{permissions:b,added:je,"data-testid":`extension-permissions-${s.id}`}),e.jsx("p",{className:"text-muted-foreground text-sm",children:Le(R,(b==null?void 0:b.runtime)==="subprocess")}),e.jsx("p",{className:"text-muted-foreground text-sm",children:Me}),e.jsx($,{size:"sm",onClick:()=>l(s.id,!0),disabled:i,"data-testid":`extension-approve-run-${s.id}`,children:"Turn it on"})]})),e.jsxs("div",{className:"text-muted-foreground flex flex-wrap items-center gap-2 text-xs",children:[e.jsx(M,{variant:"outline",children:o}),z&&e.jsx(M,{variant:z==="Not working"?"destructive":"secondary","data-testid":`extension-health-${s.id}`,children:z}),c.author&&e.jsx("span",{children:c.author})]})]}),e.jsx("div",{className:"flex shrink-0 items-center pt-0.5",children:N?e.jsx(Fe,{checked:m,onCheckedChange:L=>t(s.id,L),disabled:!k||n,"aria-label":`${m?"Disable":"Enable"} ${c.name}`}):e.jsx(M,{variant:"secondary",title:"This extension is always on","data-testid":`extension-required-${s.id}`,children:"Required"})})]})})}function ae(s){const t=new Date(s);return Number.isNaN(t.getTime())?"":t.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function ys(){const{data:s=[]}=Ue(),{stop:t,pendingSource:n}=Be();return s.length===0?null:e.jsxs("section",{className:"space-y-3","data-testid":"trusted-sources-section",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Trusted sources"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Extensions from these sources turn on without asking."}),e.jsx("p",{className:"text-muted-foreground text-sm",children:"Stop trusting one, and extensions already on keep running."}),e.jsx(he,{className:"text-muted-foreground text-sm",label:"If you stop trusting one",openLabel:"If you stop trusting one",children:e.jsx("p",{children:"Newer versions and new extensions from it wait for your yes."})})]}),e.jsx("ul",{className:"divide-y rounded-xl border",children:s.map(({source:l,trustedAt:i})=>e.jsxs("li",{className:"flex flex-wrap items-center justify-between gap-x-3 gap-y-1.5 px-3 py-2.5",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"truncate font-mono text-sm",children:l}),ae(i)&&e.jsxs("p",{className:"text-muted-foreground text-xs",children:["Trusted ",ae(i)]})]}),e.jsx($,{type:"button",variant:"outline",size:"sm",disabled:n===l,onClick:()=>t(l),children:"Stop trusting"})]},l))})]})}function $s(){const{data:s=[],isLoading:t}=He(),{data:n}=qe(),{section:l}=Ke();Je(t?null:l);const i=Ye(),a=Xe(),x=Ge(),u=se(!0),c=se(!1),r=new Set([...i.variables?[i.variables]:[],...a.variables?[a.variables]:[]]),o=new Set([...u.isPending&&u.variables?[u.variables.id]:[],...c.isPending&&c.variables?[c.variables.id]:[]]);function v(m,h){const w=h?u:c,g=s.find(N=>N.id===m);if(!g)return;const k=h?xe(ue(g)):void 0;w.mutate({id:m,version:g.manifest.version,plugin:g.sourcePlugin??null,...k?{permissions:k}:{},...h&&g.digest?{expectedDigest:g.digest}:{}},{onSuccess:N=>{h&&te.getState().forget(m);const R=N.extension.manifest.name,b=N.extension.isolation?"":" inside DorkOS";C.success(h?`${R} can now run${b}`:`${R} stopped running`)},onError:N=>{if(N instanceof Qe&&N.stale){k&&te.getState().remember(m,k),C.error(`${g.manifest.name} changed since you saw it. Check it again.`);return}C.error(h?"Couldn’t let it run.":"Couldn’t stop it running.",{description:N.message})}})}async function p(m,h){(h?i:a).mutate(m,{onError:g=>{C.error(h?"Couldn’t turn that on.":"Couldn’t turn that off.",{description:g.message})}})}function d(){x.mutate(void 0,{onSuccess:m=>{C.success(`Reloaded ${m.length} extension${m.length===1?"":"s"}`)},onError:m=>{C.error("Couldn’t reload your extensions.",{description:m.message})}})}if(t)return e.jsx("div",{className:"text-muted-foreground py-8 text-center text-sm",children:"Loading extensions…"});const f=s.filter(m=>m.origin==="core"),j=s.filter(m=>m.origin==="user"),y=m=>e.jsx(Ns,{extension:m,onToggle:p,isToggling:r.has(m.id),onSetRunApproval:v,isSettingApproval:o.has(m.id),onReload:d,isReloading:x.isPending,stepUpRisk:n==null?void 0:n.find(h=>h.id===m.id)},m.id);return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"text-muted-foreground space-y-1 text-sm",children:[e.jsx("p",{children:"Extensions add new screens and tools to DorkOS."}),e.jsxs(he,{children:[e.jsx("p",{children:"Core extensions come with DorkOS."}),e.jsxs("p",{children:["Installed ones live in"," ",e.jsx("code",{className:"bg-muted rounded px-1",children:"~/.dork/extensions/"})," or your project’s"," ",e.jsx("code",{className:"bg-muted rounded px-1",children:".dork/extensions/"}),"."]})]})]}),s.length===0?e.jsx("div",{className:"text-muted-foreground py-8 text-center text-sm","data-testid":"no-extensions",children:e.jsx("p",{children:"No extensions installed."})}):e.jsxs(e.Fragment,{children:[f.length>0&&e.jsxs("section",{className:"space-y-3","data-testid":"core-extensions-section",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Core extensions"}),e.jsx("div",{className:"space-y-3",children:f.map(y)})]}),e.jsxs("section",{className:"space-y-3","data-testid":"installed-extensions-section",children:[e.jsx("h3",{className:"text-sm font-semibold",children:"Installed extensions"}),j.length>0?e.jsx("div",{className:"space-y-3",children:j.map(y)}):e.jsxs("div",{className:"text-muted-foreground rounded-xl border border-dashed p-4 text-sm","data-testid":"no-installed-extensions",children:["No extensions installed yet. Browse"," ",e.jsx("span",{className:"text-foreground font-medium",children:"Marketplace"})," to add some."]})]})]}),e.jsx(ys,{}),e.jsx("div",{className:"flex justify-end",children:e.jsxs($,{variant:"outline",size:"sm",onClick:d,disabled:x.isPending,"data-testid":"reload-extensions-button",children:[e.jsx(Ve,{className:F("mr-2 size-4",x.isPending&&"animate-spin")}),"Reload extensions"]})})]})}export{Rs as ExtensionEventBridge,Ts as ExtensionLoader,_s as ExtensionProvider,$s as ExtensionsSettingsTab,Ls as ForwardConsentHost,Ds as createExtensionAPI,Is as createExtensionEventBridge,Os as useExtensions};