dorkos 0.126.2 → 0.126.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/cli.js +133 -38
- package/dist/browser/native/package-manifest.json +1 -1
- package/dist/browser/source-manifest.json +1 -1
- package/dist/client/assets/{AboutPage-BQ66xWcJ.js → AboutPage-ycWTfXI8.js} +1 -1
- package/dist/client/assets/{ActivityErrorState-CPbfgXjw.js → ActivityErrorState-DBecAo4-.js} +1 -1
- package/dist/client/assets/{ActivityPage-CesljfZn.js → ActivityPage-CGuIeDGm.js} +1 -1
- package/dist/client/assets/{ActivityRow-DzhwE0ht.js → ActivityRow-BRiUvjHA.js} +1 -1
- package/dist/client/assets/{AdapterIcon-BXJkyF5g.js → AdapterIcon-z6z9LKwd.js} +1 -1
- package/dist/client/assets/{AdapterSetupWizard-CwKYl1vG.js → AdapterSetupWizard-Cp56Zx24.js} +1 -1
- package/dist/client/assets/{AgentOptionRow-0VdNzXCF.js → AgentOptionRow-BLuSwpNh.js} +1 -1
- package/dist/client/assets/{AgentPicker-Ldh64iOA.js → AgentPicker-DazquIgR.js} +1 -1
- package/dist/client/assets/{AgentRequestCard-CmAlDGTr.js → AgentRequestCard-BoRmxLKy.js} +1 -1
- package/dist/client/assets/{AppearancePage-DmsZPHst.js → AppearancePage-BMiVpe48.js} +1 -1
- package/dist/client/assets/{ApplyToOverridesDialog-Ct1W283T.js → ApplyToOverridesDialog-BHIrnfPf.js} +1 -1
- package/dist/client/assets/{AttentionSignalRow-B7gezgzA.js → AttentionSignalRow-CjN8lCWI.js} +1 -1
- package/dist/client/assets/{BaseTanStackRouterDevtoolsPanel-B-iktbLX-Nqvr65_g.js → BaseTanStackRouterDevtoolsPanel-B-iktbLX-BMBnO0fv.js} +1 -1
- package/dist/client/assets/{BindingDialog-CpBZoSZU.js → BindingDialog-Bw55sMTh.js} +1 -1
- package/dist/client/assets/{BlintzCanvas-BCtfZPrs.js → BlintzCanvas-Dd3bC9vw.js} +3 -3
- package/dist/client/assets/{CanvasCsvContent-DYksqzaf.js → CanvasCsvContent-B2S75f6B.js} +1 -1
- package/dist/client/assets/{CanvasFileContent-CqEqSxuJ.js → CanvasFileContent-CVSfg4MO.js} +2 -2
- package/dist/client/assets/{CanvasModel3dContent-vR6ze4IR.js → CanvasModel3dContent-CNmJsBTS.js} +2 -2
- package/dist/client/assets/{ChannelComposer-BVACOdph.js → ChannelComposer-7KpffyFv.js} +3 -3
- package/dist/client/assets/{ChatAppsOff-VsPP2Hye.js → ChatAppsOff-D7anOG3n.js} +1 -1
- package/dist/client/assets/{CodeMirrorDiff-CmKjH03N.js → CodeMirrorDiff-CfOmRCky.js} +1 -1
- package/dist/client/assets/{CodeMirrorEditor-BtNgazuc.js → CodeMirrorEditor-Cyz227_1.js} +1 -1
- package/dist/client/assets/{CommitmentList-D9I-CmNy.js → CommitmentList-DKo1Fb1A.js} +1 -1
- package/dist/client/assets/{CommitmentsPage-BORMYDZb.js → CommitmentsPage-DIcEZ2ka.js} +1 -1
- package/dist/client/assets/{ComputerResourceView-BZ9BxgOi.js → ComputerResourceView-Ck7rJ-SP.js} +1 -1
- package/dist/client/assets/{ComputerViewer-CbuU9tXK.js → ComputerViewer-Dw_VpNjD.js} +1 -1
- package/dist/client/assets/{ConnectionAccessLists-uE-Fzp6Y.js → ConnectionAccessLists-CETLVH7o.js} +1 -1
- package/dist/client/assets/{ConnectionsPage-D7QTHeQQ.js → ConnectionsPage-ZVWDffcl.js} +1 -1
- package/dist/client/assets/{ConventionPage-PS2WWCyB.js → ConventionPage-DkJ91wrN.js} +1 -1
- package/dist/client/assets/{ExtensionPageRoute-Cn7bYxGB.js → ExtensionPageRoute-FbJo1Qc0.js} +1 -1
- package/dist/client/assets/{FloatingTanStackRouterDevtools-CqogiFob-DKGNSXVz.js → FloatingTanStackRouterDevtools-CqogiFob-DCLR3iKw.js} +1 -1
- package/dist/client/assets/{ForwardConsentHost-CLIHtWwq.js → ForwardConsentHost-Buy5XlH7.js} +1 -1
- package/dist/client/assets/HandlePage-CByGC3B8.js +1 -0
- package/dist/client/assets/{HeartbeatPage-7MTowke-.js → HeartbeatPage-GXBEcZoJ.js} +1 -1
- package/dist/client/assets/{KeyEntry-Cf7D0Oo6.js → KeyEntry-g2VQ33KW.js} +1 -1
- package/dist/client/assets/{LexicalField-DqvzeMr3.js → LexicalField-CLd77PuB.js} +1 -1
- package/dist/client/assets/{ManagesPage-DxR4zWMf.js → ManagesPage-qCwzJ4Cx.js} +1 -1
- package/dist/client/assets/{Marketplace-V_92jKOn.js → Marketplace-DdkdIVPQ.js} +1 -1
- package/dist/client/assets/{MarketplaceSourcesView-CjCVMP_d.js → MarketplaceSourcesView-D44G21ff.js} +1 -1
- package/dist/client/assets/{McpAppFrame-4JDJsrmg.js → McpAppFrame-DVNWJHrn.js} +1 -1
- package/dist/client/assets/{McpSigninBody-DG1XX7XT.js → McpSigninBody-BO0OkvOw.js} +1 -1
- package/dist/client/assets/{Model3dViewer-DedBFHsl.js → Model3dViewer-Cvcyx2yv.js} +1 -1
- package/dist/client/assets/NamePage-5VUtswMH.js +1 -0
- package/dist/client/assets/{NewDirectMessageMenu-C8t7x-sB.js → NewDirectMessageMenu-C_hXtliM.js} +1 -1
- package/dist/client/assets/{NotificationsPage-DwGFE3F6.js → NotificationsPage-DP4HAVMA.js} +1 -1
- package/dist/client/assets/{OpenMeshSwitch-DPmTA9eg.js → OpenMeshSwitch-0Mkl8abo.js} +1 -1
- package/dist/client/assets/{OperatorIdentityForm-Cu0h8Xqy.js → OperatorIdentityForm-BRftJqRq.js} +1 -1
- package/dist/client/assets/{PermissionHistory-zD6ksrl2.js → PermissionHistory-Czl5PWN3.js} +1 -1
- package/dist/client/assets/{PermissionsPage-Durcnmie.js → PermissionsPage-DAsbrl6Q.js} +1 -1
- package/dist/client/assets/{PersonalityPopover-DuRjJuLj.js → PersonalityPopover-liTJ0Lns.js} +1 -1
- package/dist/client/assets/PhotoPage-DDcbiGjb.js +1 -0
- package/dist/client/assets/{PreviewRefusedNotice-hlYrFDQM.js → PreviewRefusedNotice-DcD1EY2c.js} +1 -1
- package/dist/client/assets/{ProfileFields-x-x8vgNo.js → ProfileFields-Bi_AfHOE.js} +1 -1
- package/dist/client/assets/{ProfilePanelContainer-8WxopRj2.js → ProfilePanelContainer-BIbOulLu.js} +1 -1
- package/dist/client/assets/{ProfileRolePicker-BfciiNpr.js → ProfileRolePicker-BadkFi4V.js} +1 -1
- package/dist/client/assets/{PromptSuggestionChips-D34Zeaq_.js → PromptSuggestionChips-C653MlaU.js} +1 -1
- package/dist/client/assets/{ReportsToPopover-BhqA5qXi.js → ReportsToPopover-dIbt6aes.js} +1 -1
- package/dist/client/assets/{RoomSurface-BlMNuQsT.js → RoomSurface-CssMcozl.js} +1 -1
- package/dist/client/assets/{RoomsPage-C52AOHIE.js → RoomsPage-CxwTRRNu.js} +1 -1
- package/dist/client/assets/{RunsOnPopover-DLhEKwXF.js → RunsOnPopover-lp8n4lgI.js} +1 -1
- package/dist/client/assets/{RuntimeConnectFlow-D3H5Fpkc.js → RuntimeConnectFlow-BAqkzthF.js} +1 -1
- package/dist/client/assets/{RuntimeSetupDialog-DPU4QIY9.js → RuntimeSetupDialog-E6f7Rd2W.js} +1 -1
- package/dist/client/assets/{SeenDevices-CDSHTsL7.js → SeenDevices-xdR3YQNr.js} +1 -1
- package/dist/client/assets/{SessionsPage-Crh3D3Jj.js → SessionsPage-BNZTufty.js} +1 -1
- package/dist/client/assets/{SettingsDialog-D0Oh-ku1.js → SettingsDialog-d7SQTDNy.js} +1 -1
- package/dist/client/assets/{SkillsPage-BPexZwnJ.js → SkillsPage-DiqUOZup.js} +1 -1
- package/dist/client/assets/{TaskDialogWrapper-D6RB8E59.js → TaskDialogWrapper-5gb-f-Uo.js} +1 -1
- package/dist/client/assets/{TasksEmptyState-Di3SbhJM.js → TasksEmptyState-g-CavcMv.js} +1 -1
- package/dist/client/assets/{TasksPage-CDLsY1Ww.js → TasksPage-BexV_pxB.js} +1 -1
- package/dist/client/assets/{TeamComputerEntry-B_q-oVSs.js → TeamComputerEntry-BFYqGL-G.js} +1 -1
- package/dist/client/assets/{ToolsPage-gvIVTnwf.js → ToolsPage-Dxt6qOdF.js} +1 -1
- package/dist/client/assets/{TopologyGraph-Bp8aL_qw.js → TopologyGraph-Cx_6gdbV.js} +1 -1
- package/dist/client/assets/{TourHost-Cg8EHvod.js → TourHost-DvAjpsug.js} +1 -1
- package/dist/client/assets/{UnlinkDialog-Ddd1Yxfk.js → UnlinkDialog-fgubvOUd.js} +1 -1
- package/dist/client/assets/{UnreadDivider-LL4_YtF0.js → UnreadDivider-BoLcTO_Z.js} +1 -1
- package/dist/client/assets/{WidgetErrorCard-BA3P7hNv.js → WidgetErrorCard-CgRMeAEO.js} +1 -1
- package/dist/client/assets/{WithheldExtensionsNotice-quqWNbus.js → WithheldExtensionsNotice-CFHBDyIh.js} +1 -1
- package/dist/client/assets/{WorkView-C_h8sclU.js → WorkView-5jzcnod5.js} +1 -1
- package/dist/client/assets/{_shell-D9q8zLfr.js → _shell-DFfXd1ys.js} +1 -1
- package/dist/client/assets/{_shell._home-CrTxBB3h.js → _shell._home-D2GJeGbi.js} +1 -1
- package/dist/client/assets/{_shell._home.activity-2M0BJkbQ.js → _shell._home.activity-DRXBBtAq.js} +1 -1
- package/dist/client/assets/{_shell._home.index-BTJhhEWN.js → _shell._home.index-CA_GnaUK.js} +1 -1
- package/dist/client/assets/{_shell._home.tasks-Dfrqv2nl.js → _shell._home.tasks-Cr4gak8T.js} +1 -1
- package/dist/client/assets/{_shell._home.workspaces-DPLQXDdH.js → _shell._home.workspaces-DbWciI1g.js} +1 -1
- package/dist/client/assets/{_shell.channels-CJqfUTZ1.js → _shell.channels-C31Txlqh.js} +1 -1
- package/dist/client/assets/{_shell.connections-Cpe1hru3.js → _shell.connections-gfevZyC-.js} +1 -1
- package/dist/client/assets/{_shell.feedback-requests-BeWCqScf.js → _shell.feedback-requests-CQc7aVrV.js} +1 -1
- package/dist/client/assets/_shell.marketplace-BepG1fJe.js +1 -0
- package/dist/client/assets/_shell.marketplace_.sources-BBQESbqU.js +1 -0
- package/dist/client/assets/_shell.session-DzeI9YIK.js +1 -0
- package/dist/client/assets/{_shell.team-EPvcS7RS.js → _shell.team-BlLU5BMC.js} +3 -3
- package/dist/client/assets/{_shell.threads-NJDzq9dv.js → _shell.threads-YmF9dQnZ.js} +1 -1
- package/dist/client/assets/_shell.x._extensionId-ByRocZjS.js +1 -0
- package/dist/client/assets/_shell.x._extensionId_._-ByRocZjS.js +1 -0
- package/dist/client/assets/{abnfDiagram-WEYOIA3C-DUHshdrR.js → abnfDiagram-WEYOIA3C-DLiXaMmC.js} +1 -1
- package/dist/client/assets/{access-copy-DHfPjN3G.js → access-copy-xWnaUps1.js} +1 -1
- package/dist/client/assets/{arc-sP6zNsGB.js → arc-AndXXvZc.js} +1 -1
- package/dist/client/assets/{architectureDiagram-ZHVYKT53-C8PTjsPx.js → architectureDiagram-ZHVYKT53-CM4tGveM.js} +1 -1
- package/dist/client/assets/{banner-CVrzHqOT.js → banner-BH1gXPTc.js} +1 -1
- package/dist/client/assets/{blockDiagram-RJAE7QA3-Cydde2fz.js → blockDiagram-RJAE7QA3-DenkdFXV.js} +1 -1
- package/dist/client/assets/{c4Diagram-XDPPPE54-DbM6KAK7.js → c4Diagram-XDPPPE54-DMAlFuoX.js} +1 -1
- package/dist/client/assets/{card-DA_Z-FYX.js → card-TbpEl6EH.js} +1 -1
- package/dist/client/assets/channel-5-dQamNX.js +1 -0
- package/dist/client/assets/{chunk-2E7WHVMD-CEbspaNh.js → chunk-2E7WHVMD-u0q5vCEc.js} +1 -1
- package/dist/client/assets/{chunk-2Q5K7J3B-DDP1SiE0.js → chunk-2Q5K7J3B-DBTggfjR.js} +1 -1
- package/dist/client/assets/{chunk-4EMNKR2T-BFjozJqd.js → chunk-4EMNKR2T-zu55wq-c.js} +1 -1
- package/dist/client/assets/{chunk-55XCU76K-0JSp6acZ.js → chunk-55XCU76K-XLIA3Qss.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-DswTXnmp.js → chunk-5VM5RSS4-DmGjbtZg.js} +1 -1
- package/dist/client/assets/{chunk-JWPE2WC7-D0PYncYV.js → chunk-JWPE2WC7-ikMrk6md.js} +1 -1
- package/dist/client/assets/{chunk-VQ5W62QI-r5T-ZVBs.js → chunk-VQ5W62QI-cfwin8SC.js} +1 -1
- package/dist/client/assets/{chunk-XXDRQBXY-D8kkjktE.js → chunk-XXDRQBXY-Cn3e0QEQ.js} +1 -1
- package/dist/client/assets/{chunk-ZCHMQSOR-D6XtRzln.js → chunk-ZCHMQSOR-7RkBP94K.js} +2 -2
- package/dist/client/assets/{classDiagram-v2-4MYWR3UA-DUPDMGfm.js → classDiagram-v2-4MYWR3UA-CqVol7t8.js} +1 -1
- package/dist/client/assets/{command-BvXBgZfv.js → command-2pl_Cn7b.js} +1 -1
- package/dist/client/assets/{cose-bilkent-JH36ORCC-tiQpE-Q8.js → cose-bilkent-JH36ORCC-m0tmlDnx.js} +1 -1
- package/dist/client/assets/{cpu-mx7zDf7k.js → cpu-CdCfSlSR.js} +1 -1
- package/dist/client/assets/{cynefin-EF2NZ3EQ-BjAUxFfb.js → cynefin-EF2NZ3EQ-Cf7ajLou.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-WF24UDRP-PmlyltXR.js → cynefinDiagram-WF24UDRP-Dl8GJr0l.js} +1 -1
- package/dist/client/assets/{dagre-NK4GIZVX-DDePjPkn.js → dagre-NK4GIZVX-2yAF6nW_.js} +1 -1
- package/dist/client/assets/{diagram-CBK3MWTC-D7N3T4Fx.js → diagram-CBK3MWTC-DaBb9JFm.js} +1 -1
- package/dist/client/assets/{diagram-I5XIIV2D-BfZHSbR2.js → diagram-I5XIIV2D-BMeCfhD1.js} +1 -1
- package/dist/client/assets/{diagram-ODIL2UCW-sXAa9bzN.js → diagram-ODIL2UCW-ClVKCieB.js} +1 -1
- package/dist/client/assets/{diagram-PFBEJUXE-Dfd_61WO.js → diagram-PFBEJUXE-DFIKk-tB.js} +1 -1
- package/dist/client/assets/{diagram-RJA3I4VV-BCzdEfnM.js → diagram-RJA3I4VV-DzC_xtYu.js} +1 -1
- package/dist/client/assets/{diagram-TYUNFSNR-BMqtz6sZ.js → diagram-TYUNFSNR-BroMVHm2.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-V4P3TTPT-CyWj1615.js → ebnfDiagram-V4P3TTPT-GMsyIh86.js} +1 -1
- package/dist/client/assets/{elk-QONTBCTQ-BkQMBXse.js → elk-QONTBCTQ-DIpw6SW5.js} +1 -1
- package/dist/client/assets/{empty-state-Dv5iV4jb.js → empty-state-B7ufhAFk.js} +1 -1
- package/dist/client/assets/{erDiagram-KYQIGQAA-DiPsX7uU.js → erDiagram-KYQIGQAA-CsezeWpx.js} +1 -1
- package/dist/client/assets/{execution-config-Bej0Ot8e.js → execution-config-DRqIsff0.js} +1 -1
- package/dist/client/assets/{file-DXbyb23e.js → file-DHPgnMgj.js} +1 -1
- package/dist/client/assets/{file-exclamation-point-C8XqHyzY.js → file-exclamation-point-DtjBa2XX.js} +1 -1
- package/dist/client/assets/{file-text-CRTgqqkn.js → file-text-wmrSy3Io.js} +1 -1
- package/dist/client/assets/{find-latest-widget-fence-D1i7qNny.js → find-latest-widget-fence-Bv9D10ve.js} +1 -1
- package/dist/client/assets/{flowDiagram-IUGLLWBU-BSM44aJP.js → flowDiagram-IUGLLWBU-BGwNqglr.js} +1 -1
- package/dist/client/assets/{form-DYSiVEri.js → form-CA_eiUg-.js} +1 -1
- package/dist/client/assets/{format-cron-DYYwmo-o.js → format-cron-YPhIy57w.js} +1 -1
- package/dist/client/assets/{ganttDiagram-R7GPNTJY-BWCjYexX.js → ganttDiagram-R7GPNTJY-4IlzTCzA.js} +1 -1
- package/dist/client/assets/{git-branch-1zYKSuur.js → git-branch-BLIYLcM4.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PDYL7XHY-ULC7Zunc.js → gitGraphDiagram-PDYL7XHY-HeaC8vlP.js} +1 -1
- package/dist/client/assets/{graph-BsZzo5TN.js → graph-Ch9lnHSS.js} +1 -1
- package/dist/client/assets/{heart-C4CSHUW7.js → heart-D4fTvM5q.js} +1 -1
- package/dist/client/assets/{highlighted-body-KPVGNVTW-CFECg7iB.js → highlighted-body-KPVGNVTW-KPma22SA.js} +1 -1
- package/dist/client/assets/{image-lightbox-M9t3Wulc.js → image-lightbox-DI18fB2Q.js} +1 -1
- package/dist/client/assets/{image-off-c01kxBAm.js → image-off-DRgXXpgv.js} +1 -1
- package/dist/client/assets/{index-BScgHCO_.js → index--2mMmier.js} +1 -1
- package/dist/client/assets/{index-DG13Cp5o.js → index-2J89pJxF.js} +1 -1
- package/dist/client/assets/{index-C1XazYWZ.js → index-3UGWygRZ.js} +1 -1
- package/dist/client/assets/{index-Dt7RONID.js → index-B-4XmK5Q.js} +1 -1
- package/dist/client/assets/index-B9X2-pzp.js +1 -0
- package/dist/client/assets/{index-Du4HX97h.js → index-BAd8jUzo.js} +2 -2
- package/dist/client/assets/{index-UJq1qaku.js → index-BMYGo6Ki.js} +1 -1
- package/dist/client/assets/{index-B3xeyV6n.js → index-BY0SKYuc.js} +1 -1
- package/dist/client/assets/{index-DIDUjTkq.js → index-B_56Srtt.js} +1 -1
- package/dist/client/assets/{index-uLbyd6YP.js → index-BmlBYrxT.js} +1 -1
- package/dist/client/assets/{index-Br35Gqfz.js → index-BtRM2yox.js} +1 -1
- package/dist/client/assets/{index-DyN65ufd.js → index-ButY6gKr.js} +1 -1
- package/dist/client/assets/{index-BYY8HEOz.js → index-C-X6jaVm.js} +1 -1
- package/dist/client/assets/{index-XEE1k4cl.js → index-C3IsCAxA.js} +1 -1
- package/dist/client/assets/{index-BTGRc0hC.js → index-COoO8dzi.js} +1 -1
- package/dist/client/assets/{index-BIVIHPoe.js → index-CRCfkwyN.js} +1 -1
- package/dist/client/assets/{index-BRH6C3LJ.js → index-CTTaeOCw.js} +1 -1
- package/dist/client/assets/index-CgpRBcA4.js +1 -0
- package/dist/client/assets/{index-DrENuQdJ.js → index-ClbMjgcZ.js} +1 -1
- package/dist/client/assets/{index-CnltS8ym.js → index-CucieFDK.js} +1 -1
- package/dist/client/assets/{index-DQTTC52E.js → index-D0cIffaH.js} +1 -1
- package/dist/client/assets/{index-B-7P1Q9s.js → index-D9w0FBQG.js} +1 -1
- package/dist/client/assets/{index-BqwCOIbF.js → index-DHZS9Lod.js} +1 -1
- package/dist/client/assets/{index-DsasLE1l.js → index-DSIdPh8G.js} +1 -1
- package/dist/client/assets/{index-CAAsqmfP.js → index-DTRAR0KK.js} +1 -1
- package/dist/client/assets/{index-LpaxG4VS.js → index-DbV3-jog.js} +1 -1
- package/dist/client/assets/{index-JG_0k1NX.js → index-Dbujw1c2.js} +1 -1
- package/dist/client/assets/{index-C3swXqWW.js → index-DpvGUFpV.js} +1 -1
- package/dist/client/assets/{index-CAjKQnAd.js → index-DuvW22xi.js} +1 -1
- package/dist/client/assets/{index-D847rJXW.js → index-Dy9bWvna.js} +1 -1
- package/dist/client/assets/{index-B_he44rF.js → index-EDXuyCOT.js} +1 -1
- package/dist/client/assets/{index-FwAvbbet.js → index-Ix2nCAz0.js} +1 -1
- package/dist/client/assets/{index-BSxkprTm.js → index-JoxvTUfo.js} +3 -3
- package/dist/client/assets/{index-YXyEu3Ia.js → index-QSo53dH-.js} +1 -1
- package/dist/client/assets/{index-DhkfALZp.js → index-bzM-k5lI.js} +1 -1
- package/dist/client/assets/{index-Ce3HZQem.js → index-jk2K24il.js} +1 -1
- package/dist/client/assets/{index-DzHj8lCz.js → index-mRMaqxu5.js} +9 -9
- package/dist/client/assets/{index-B6Scr7KJ.js → index-p3WivF1M.js} +226 -226
- package/dist/client/assets/{index-DrQqkQq_.js → index-qEI7Rsr1.js} +1 -1
- package/dist/client/assets/{index-DhoaVQXu.js → index-rPJ8b_DO.js} +1 -1
- package/dist/client/assets/{index-jLIoULQt.js → index-uG06zgQo.js} +1 -1
- package/dist/client/assets/{index-DhYnXLRT.js → index-uy36h8lC.js} +1 -1
- package/dist/client/assets/{index-BnXWm8Db.js → index-zvAbU6ah.js} +1 -1
- package/dist/client/assets/{index.esm-CZ68Qd2t.js → index.esm-CxXuMuQv.js} +1 -1
- package/dist/client/assets/{infoDiagram-MVDRKAX5-BCjhXqIT.js → infoDiagram-MVDRKAX5-g9EeD2xH.js} +1 -1
- package/dist/client/assets/{inline-code-BKPMIXZR.js → inline-code-14c1Gacs.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-HPEHV2GE-C9rsv2nh.js → ishikawaDiagram-HPEHV2GE-Zv5DrRnv.js} +1 -1
- package/dist/client/assets/{journeyDiagram-BOSHW7O7-BRYr1XL1.js → journeyDiagram-BOSHW7O7-COiWWTez.js} +1 -1
- package/dist/client/assets/{kanban-definition-FNSA4HC5-2ey8FXEn.js → kanban-definition-FNSA4HC5-DnQa8qXB.js} +1 -1
- package/dist/client/assets/{layers-DE3wjQuk.js → layers-D_NEJsnH.js} +1 -1
- package/dist/client/assets/{lightbulb-BXJIRUdm.js → lightbulb-EadQi_Lr.js} +1 -1
- package/dist/client/assets/{link-2-DzWm9OxA.js → link-2-DugR2HHU.js} +1 -1
- package/dist/client/assets/{list-runtime-types-BhkZkTrB.js → list-runtime-types-iJaKcim4.js} +1 -1
- package/dist/client/assets/{markdown-content-Bk9lCksw.js → markdown-content-BFHUHPgi.js} +1 -1
- package/dist/client/assets/{mention-pill-os_7QQu2.js → mention-pill-DXBno6EY.js} +1 -1
- package/dist/client/assets/{mermaid.core-BcRUBvZd.js → mermaid.core-C6ckWvkG.js} +4 -4
- package/dist/client/assets/{message-square-off-DuOiETNI.js → message-square-off-BH8wbm2a.js} +1 -1
- package/dist/client/assets/{mindmap-definition-6OY57UG3-DBhXkS2i.js → mindmap-definition-6OY57UG3-DV4PNLc-.js} +1 -1
- package/dist/client/assets/{more-details-Bt9nlPmS.js → more-details-DhdX4DGU.js} +1 -1
- package/dist/client/assets/{owner-notice-4ZSBxa2K.js → owner-notice-FMj3k7-f.js} +1 -1
- package/dist/client/assets/{package-BmOMrNwc.js → package-0mI7-RiJ.js} +1 -1
- package/dist/client/assets/{page-container-LomhzyuS.js → page-container-DRyYoDkA.js} +1 -1
- package/dist/client/assets/{pane-resize-handle-BOtzx5Q4.js → pane-resize-handle-OBc3uYxQ.js} +1 -1
- package/dist/client/assets/{paperclip-C1tkiT74.js → paperclip-BsTJpkyE.js} +1 -1
- package/dist/client/assets/{path-input-JHTlL97W.js → path-input-CFm1b1pk.js} +1 -1
- package/dist/client/assets/{pegDiagram-ECIUJNBX-B01fb3t0.js → pegDiagram-ECIUJNBX-Cboo0f6B.js} +1 -1
- package/dist/client/assets/{pieDiagram-GNMPY74T-BJ7JYrTk.js → pieDiagram-GNMPY74T-CiihSor1.js} +1 -1
- package/dist/client/assets/{plug-CsqfQsYq.js → plug-BdnJAo1j.js} +1 -1
- package/dist/client/assets/{primer-trigger-DLdK7lVr.js → primer-trigger-BV4xZfFz.js} +1 -1
- package/dist/client/assets/{profile-errors-CpvSy5wY.js → profile-errors-B08zStmk.js} +1 -1
- package/dist/client/assets/{progress-qB87L0zJ.js → progress-CpiQE0rv.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-D57K4MC3-mJYGGmOV.js → quadrantDiagram-D57K4MC3-dF0oKeMn.js} +1 -1
- package/dist/client/assets/{query-error-state-MyJ1ivia.js → query-error-state-B0RUeb10.js} +1 -1
- package/dist/client/assets/{radio-DJV7l0fv.js → radio-CAGXbJK_.js} +1 -1
- package/dist/client/assets/{railroadDiagram-Y72NRBL7-BlXWwQe2.js → railroadDiagram-Y72NRBL7-ClkFJVq1.js} +1 -1
- package/dist/client/assets/{registry-tJrGs7kB.js → registry-Cog_2xvt.js} +4 -4
- package/dist/client/assets/registry-DLWJMbtY.js +1 -0
- package/dist/client/assets/{relay-trace-schemas-TH0-GYCB.js → relay-trace-schemas-CNDSmhcJ.js} +1 -1
- package/dist/client/assets/{repeat-CBnopqBr.js → repeat-Dag80z5v.js} +1 -1
- package/dist/client/assets/{requirementDiagram-EQYSW5RA-Dqr1Y74x.js → requirementDiagram-EQYSW5RA-Cey6FmFd.js} +1 -1
- package/dist/client/assets/{room-files-source-BFo0FEUP.js → room-files-source-BKUFMU_b.js} +1 -1
- package/dist/client/assets/{rotate-ccw-clock-D9XRHj5E.js → rotate-ccw-clock-egrvXlKX.js} +1 -1
- package/dist/client/assets/{rotate-cw-DNa7ENG3.js → rotate-cw-Po-L3HFe.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-SY24JHO5-DGYZs_kW.js → sankeyDiagram-SY24JHO5-BsIuHjbJ.js} +1 -1
- package/dist/client/assets/{scroll-area-Bf6IGziJ.js → scroll-area-C7vKp2H4.js} +1 -1
- package/dist/client/assets/{search-x-DFBBEouE.js → search-x-C_BEqIuX.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-BLEHNHQU-BW3u4L9y.js → sequenceDiagram-BLEHNHQU-BJZXJxwu.js} +1 -1
- package/dist/client/assets/{shield-x-WGxwrtNV.js → shield-x-hHpT8rAA.js} +1 -1
- package/dist/client/assets/{signed-in-eV4_EXuv.js → signed-in-BhArfIJC.js} +1 -1
- package/dist/client/assets/{sizeCapture-INFHLROL-C1TpueOu.js → sizeCapture-INFHLROL-DYCQyn7S.js} +1 -1
- package/dist/client/assets/{soul-file-e1iYX9IV.js → soul-file-Doekkv7n.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-A6IESKWZ-DvrHUauN.js → stateDiagram-v2-A6IESKWZ-C6bUDAO7.js} +1 -1
- package/dist/client/assets/{swimlanes-B3ENRKFQ-BUbTcoId.js → swimlanes-B3ENRKFQ-DGyTrJBT.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-AYQRV4AK-DrZ99xGr.js +8 -0
- package/dist/client/assets/{table-DsxLk3Gx.js → table-9KRGRv_s.js} +1 -1
- package/dist/client/assets/{timeline-definition-JXYKGLGB-CzbVpGxn.js → timeline-definition-JXYKGLGB-CHAJwSq6.js} +1 -1
- package/dist/client/assets/{trust-posture-Blofy7eE.js → trust-posture-BQE9NSf_.js} +1 -1
- package/dist/client/assets/{unplug-B6dUhqA7.js → unplug-CklGWwz7.js} +1 -1
- package/dist/client/assets/untrusted-text-BDygHCRk.js +1 -0
- package/dist/client/assets/{unverified-catalog-notice-6pwZtIjx.js → unverified-catalog-notice-9mykZSlO.js} +1 -1
- package/dist/client/assets/{use-adapter-catalog-J43bUHJu.js → use-adapter-catalog-CDxy08u_.js} +1 -1
- package/dist/client/assets/{use-bindings-BgXZ0D7k.js → use-bindings-CPbqKyo6.js} +1 -1
- package/dist/client/assets/{use-composer-prefs--zO2mm_M.js → use-composer-prefs-C7v03Xx_.js} +1 -1
- package/dist/client/assets/{use-connector-management-9Q7wHb06.js → use-connector-management-COqWo76Y.js} +1 -1
- package/dist/client/assets/{use-deep-link-scroll-CXqwdwGr.js → use-deep-link-scroll-BuYR3PaO.js} +1 -1
- package/dist/client/assets/{use-delete-binding-BBQNMtUY.js → use-delete-binding-Dfz8BlLn.js} +1 -1
- package/dist/client/assets/{use-dev-links-C643CCcq.js → use-dev-links-Cu2JmM-_.js} +1 -1
- package/dist/client/assets/{use-direct-message-panel-BD_daG2E.js → use-direct-message-panel-DobIp_O4.js} +1 -1
- package/dist/client/assets/{use-external-adapter-catalog-BjbC1V6t.js → use-external-adapter-catalog-OLn4l20Q.js} +1 -1
- package/dist/client/assets/{use-full-activity-feed-DUH8r8jx.js → use-full-activity-feed-DNrhQueu.js} +1 -1
- package/dist/client/assets/use-is-below-desktop-7gY1n-47.js +1 -0
- package/dist/client/assets/{use-local-browser-P93oA-F5.js → use-local-browser-DPdkgs06.js} +1 -1
- package/dist/client/assets/{use-mesh-topology-B0k0gLoW.js → use-mesh-topology-Ci7r-pAi.js} +1 -1
- package/dist/client/assets/{use-mounted-ref-DE7EQsBF.js → use-mounted-ref-CWXhSyZ8.js} +1 -1
- package/dist/client/assets/{use-notification-prefs-B8JtshQ0.js → use-notification-prefs-GJ2coibL.js} +1 -1
- package/dist/client/assets/use-pending-read-DcVJ8fZb.js +1 -0
- package/dist/client/assets/{use-personality-commit-Dh5Sejj_.js → use-personality-commit-Da2BJ_58.js} +1 -1
- package/dist/client/assets/{use-promo-activation-C9FWA7ru.js → use-promo-activation-D4PAd7pd.js} +1 -1
- package/dist/client/assets/{use-promo-dismissals-BIfafj9f.js → use-promo-dismissals-BCBu0s3k.js} +1 -1
- package/dist/client/assets/{use-pulse-freshness-CxzVMmVK.js → use-pulse-freshness-CHLSUL-h.js} +1 -1
- package/dist/client/assets/{use-relay-config-DQE3dmJ2.js → use-relay-config-C6rPlEud.js} +1 -1
- package/dist/client/assets/{use-room-follow-claim-B1QPFaUb.js → use-room-follow-claim-BSijPV3c.js} +1 -1
- package/dist/client/assets/{use-room-sessions-CdjzO67_.js → use-room-sessions-CNqHgLVa.js} +1 -1
- package/dist/client/assets/{use-roving-tab-list-Nu-MIapD.js → use-roving-tab-list-EsqX22Ik.js} +1 -1
- package/dist/client/assets/use-session-canvas-DAGOz8a6.js +27 -0
- package/dist/client/assets/{use-status-budget-DgeTxC3h.js → use-status-budget-CHln-8aP.js} +1 -1
- package/dist/client/assets/{use-transform-CiJqtMBf.js → use-transform-BmyqpcvO.js} +1 -1
- package/dist/client/assets/{use-unclaimed-chats-Blkq6U4D.js → use-unclaimed-chats-9Clj_rwl.js} +1 -1
- package/dist/client/assets/use-update-config-T78vOnRy.js +1 -0
- package/dist/client/assets/{useMutationState-lbcdmnfE.js → useMutationState-B61VoWtY.js} +1 -1
- package/dist/client/assets/{usecaseDiagram-WPOLBNNX-BM36oESm.js → usecaseDiagram-WPOLBNNX-BUqj8rIH.js} +1 -1
- package/dist/client/assets/{vennDiagram-Q3Y3IDCW-Zrybcs91.js → vennDiagram-Q3Y3IDCW-B09oli-Z.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-IVAIDKWA-CO4pzGG0.js → wardleyDiagram-IVAIDKWA-BE7gzLdw.js} +1 -1
- package/dist/client/assets/{xychartDiagram-4URNHDU4-pi_wF1CM.js → xychartDiagram-4URNHDU4-CbGKfmuW.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/index.js +5692 -4710
- package/dist/server/index.js.map +2 -2
- package/package.json +4 -4
- package/dist/client/assets/HandlePage-BjlcYr_l.js +0 -1
- package/dist/client/assets/NamePage-A8X09lY7.js +0 -1
- package/dist/client/assets/PhotoPage-DP5WoeFd.js +0 -1
- package/dist/client/assets/_shell.marketplace-CzLqm8iR.js +0 -1
- package/dist/client/assets/_shell.marketplace_.sources-DtraxnMx.js +0 -1
- package/dist/client/assets/_shell.session-72JEfodU.js +0 -1
- package/dist/client/assets/_shell.x._extensionId-CcJi8pKR.js +0 -1
- package/dist/client/assets/_shell.x._extensionId_._-CcJi8pKR.js +0 -1
- package/dist/client/assets/channel-DMgpNBDz.js +0 -1
- package/dist/client/assets/index-e6oawwKv.js +0 -1
- package/dist/client/assets/index-j30EyYIU.js +0 -1
- package/dist/client/assets/registry-BrjQCdmG.js +0 -1
- package/dist/client/assets/swimlanesDiagram-AYQRV4AK-wkooBe_N.js +0 -8
- package/dist/client/assets/untrusted-text-pHjcUwfI.js +0 -1
- package/dist/client/assets/use-is-below-desktop-DAZnwJGB.js +0 -1
- package/dist/client/assets/use-pending-read-DeGO1wGC.js +0 -1
- package/dist/client/assets/use-session-canvas-BfKGOpNy.js +0 -27
- package/dist/client/assets/use-update-config-BFFW_6Mc.js +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{j as e,ig as Ve,G as V,r as m,e4 as Be,$ as fe,I as We,eh as q,ei as U,ej as G,ek as K,el as L,by as le,ar as ce,ih as de,ii as ue,fv as Re,al as qe,J as me,eo as R,e as ge,ai as Ue,aj as Ge,ak as Ke,ij as Ye,a1 as He,ea as xe,a2 as Qe,ik as Xe,ef as ne,eg as Ze,il as Je,a0 as et,im as Ee,io as Oe,ip as tt,B as Z,iq as st,gX as je,_ as ve,gW as nt,gY as rt,gV as at,dO as ot,fi as it,ir as lt,is as ct,b_ as dt,aN as ut,y as mt,g_ as ht,g$ as ft,a$ as xt,b2 as pt,d2 as gt,d3 as jt,d5 as vt,e7 as bt,d6 as yt,d7 as Nt,gQ as wt,fj as Ct,fk as St,fl as kt,fm as Rt,fn as Et,fo as Ot}from"./index-B6Scr7KJ.js";import{I as Mt}from"./inline-code-BKPMIXZR.js";import{a as Ft,u as At}from"./form-DYSiVEri.js";import{C as Dt,a as $t,b as Lt,c as It,d as be,e as he}from"./command-BvXBgZfv.js";import{A as zt}from"./AgentPicker-Ldh64iOA.js";import{d as _t,k as Tt,e as ye}from"./execution-config-Bej0Ot8e.js";import{s as Pt}from"./settings-for-runtime-BoOa-ZFG.js";import{l as Vt}from"./list-runtime-types-BhkZkTrB.js";import{f as Bt,u as Wt}from"./format-cron-DYYwmo-o.js";function Cs({icon:t,name:n,description:s,command:o,commandHint:a="Restart DorkOS from your terminal with:",className:l,...c}){return e.jsxs("div",{"data-slot":"feature-disabled-state",className:V("flex flex-col items-center justify-center gap-3 p-8 text-center",l),...c,children:[e.jsx(t,{className:"text-muted-foreground/50 size-8"}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-medium",children:[n," is off"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm",children:s})]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:a}),e.jsxs("div",{className:"flex max-w-full items-center gap-1.5",children:[e.jsx(Mt,{className:"min-w-0 px-3 py-1.5 text-sm break-all",children:o}),e.jsx(Ve,{value:o,label:`Copy the command for ${n}`})]})]})}const z=(t,n=o=>o,s)=>Ft(t,n,{compare:s});function qt(){const[t,n]=m.useState({x:0,y:0}),[s,o]=m.useState(!1),a=Be(),l=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(hover: none)").matches,c=a||l,d=m.useCallback(x=>{if(c)return;const j=x.currentTarget.getBoundingClientRect();n({x:x.clientX-j.left,y:x.clientY-j.top}),o(!0)},[c]),h=m.useCallback(()=>{o(!1)},[]),v=!c&&s?{background:`radial-gradient(350px circle at ${t.x}px ${t.y}px, rgba(59,130,246,0.06), transparent 80%)`}:void 0;return{position:t,isActive:s,onMouseMove:d,onMouseLeave:h,spotlightStyle:v}}function Ut({preset:t,variant:n,checked:s,onCheckedChange:o,onSelect:a,selected:l=!1,className:c}){const{onMouseMove:d,onMouseLeave:h,spotlightStyle:v}=qt(),x=()=>{n==="toggle"?o==null||o(!s):a==null||a(t)};return e.jsxs("button",{type:"button",onClick:x,onMouseMove:d,onMouseLeave:h,"aria-label":`${t.name}: ${t.description}`,className:V("relative flex w-full items-start gap-4 rounded-lg border p-4 text-left transition","hover:bg-accent/50 focus-ring","min-h-11",n==="toggle"&&s&&"border-primary/40 bg-accent/30",n==="selectable"&&l&&"border-primary ring-primary bg-accent/30 ring-1",c),children:[v&&e.jsx("div",{className:"pointer-events-none absolute inset-0 rounded-lg",style:v}),n==="toggle"&&e.jsx("div",{className:"flex size-11 shrink-0 items-center justify-center",children:e.jsx(fe,{checked:s??!1,onCheckedChange:o,"aria-label":`Enable ${t.name}`,onClick:j=>j.stopPropagation()})}),e.jsxs("div",{className:"min-w-0 flex-1 space-y-1",children:[e.jsx("div",{className:"font-medium",children:t.name}),e.jsx("p",{className:"text-muted-foreground text-sm",children:t.description}),e.jsx("p",{"aria-hidden":"true",className:"text-muted-foreground text-xs",children:Bt(t.cron)}),e.jsx("p",{"aria-hidden":"true",className:"text-muted-foreground/80 line-clamp-2 text-sm",children:t.prompt})]})]})}function Me({onSelect:t,selectedId:n,className:s}){const{data:o,isLoading:a,isError:l}=Wt();return a?e.jsx("div",{className:V("grid grid-cols-2 gap-3",s),children:[0,1,2,3].map(c=>e.jsx("div",{className:"bg-muted animate-breath h-28 rounded-lg border"},c))}):l?e.jsx("p",{className:"text-destructive text-sm",children:"Couldn’t load ready-made tasks. Start from scratch instead."}):!o||o.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No ready-made tasks yet."}):e.jsx("div",{className:V("grid grid-cols-2 gap-3",s),children:o.map(c=>e.jsx(Ut,{preset:c,variant:"selectable",selected:c.id===n,onSelect:t},c.id))})}const W={frequency:"daily",hour:9,days:[1,2,3,4,5],dayOfMonth:1},Gt=[{value:"15m",label:"Every 15 minutes"},{value:"hourly",label:"Every hour"},{value:"daily",label:"Every day"},{value:"weekly",label:"Every week"},{value:"monthly",label:"Every month"}],Kt=[{value:1,label:"Mon"},{value:2,label:"Tue"},{value:3,label:"Wed"},{value:4,label:"Thu"},{value:5,label:"Fri"},{value:6,label:"Sat"},{value:0,label:"Sun"}],Yt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Ht=[1,2,3,4,5],Qt=[0,6];function Ne(t){const n=t.trim();if(!n)return null;const s=n.split(/\s+/);if(s.length!==5)return null;const[o,a,l,c,d]=s;if(c!=="*")return null;if(o==="*/15"&&a==="*"&&l==="*"&&d==="*")return{...W,frequency:"15m"};if(o!=="0")return null;if(a==="*"&&l==="*"&&d==="*")return{...W,frequency:"hourly"};const h=Number(a);if(!Number.isInteger(h)||h<0||h>23)return null;if(l!=="*"&&d==="*"){const v=Number(l);return!Number.isInteger(v)||v<1||v>31?null:{...W,frequency:"monthly",hour:h,dayOfMonth:v}}if(l==="*"&&d==="*")return{...W,frequency:"daily",hour:h};if(l==="*"&&d!=="*"){const v=Xt(d);return v?{...W,frequency:"weekly",hour:h,days:v}:null}return null}function Xt(t){const n=[];for(const s of t.split(",")){const o=s.match(/^(\d)-(\d)$/);if(o){const a=Number(o[1]),l=Number(o[2]);if(a>6||l>6||a>l)return null;for(let c=a;c<=l;c++)n.push(c)}else{const a=Number(s);if(!Number.isInteger(a)||a<0||a>6)return null;n.push(a)}}return n.length>0?n.sort((s,o)=>s-o):null}function we(t){switch(t.frequency){case"15m":return"*/15 * * * *";case"hourly":return"0 * * * *";case"daily":return`0 ${t.hour} * * *`;case"weekly":return`0 ${t.hour} * * ${t.days.join(",")}`;case"monthly":return`0 ${t.hour} ${t.dayOfMonth} * *`}}function Fe(t){const n=t<12?"AM":"PM";return`${t%12||12}:00 ${n}`}function Ae(t){const n=t%100;if(n>=11&&n<=13)return`${t}th`;const s=t%10;return s===1?`${t}st`:s===2?`${t}nd`:s===3?`${t}rd`:`${t}th`}function Ce(t,n){return t.length===n.length&&t.every((s,o)=>s===n[o])}function Zt(t){const n=Fe(t.hour);switch(t.frequency){case"15m":return"Runs every 15 minutes";case"hourly":return"Runs every hour, on the hour";case"daily":return`Runs every day at ${n}`;case"weekly":{const s=[...t.days].sort((c,d)=>c-d);if(Ce(s,Ht))return`Runs every weekday at ${n}`;if(Ce(s,Qt))return`Runs every Saturday and Sunday at ${n}`;const a=s.filter(c=>c!==0).concat(s.includes(0)?[0]:[]).map(c=>Yt[c]);if(a.length===1)return`Runs every ${a[0]} at ${n}`;if(a.length===2)return`Runs every ${a[0]} and ${a[1]} at ${n}`;const l=a.pop();return`Runs every ${a.join(", ")}, and ${l} at ${n}`}case"monthly":return`Runs on the ${Ae(t.dayOfMonth)} of every month at ${n}`}}const Jt="Can’t read this timing. Check the format.";function oe(t){const n=t.trim();if(!n)return!0;try{return Re.toString(n),!0}catch{return!1}}function es(t){const n=t.trim();return n?oe(n)?Re.toString(n):Jt:""}function ts({value:t,onChange:n}){const s=Ne(t),[o,a]=m.useState(s?"simple":t.trim()?"cron":"simple"),[l,c]=m.useState(s??W),d=m.useRef(t);m.useEffect(()=>{if(t===d.current)return;d.current=t;const i=Ne(t);i?(a("simple"),c(i)):t.trim()&&a("cron")},[t]);function h(i){c(i);const g=we(i);d.current=g,n(g)}function v(i){h({...l,frequency:i})}function x(i){h({...l,hour:Number(i)})}function j(i){const g=l.days.includes(i);if(g&&l.days.length<=1)return;const w=g?l.days.filter(S=>S!==i):[...l.days,i].sort((S,N)=>S-N);h({...l,days:w})}function p(i){h({...l,dayOfMonth:Number(i)})}function k(){a("cron")}function C(){a("simple");const i=we(l);d.current=i,n(i)}const u=l.frequency!=="15m"&&l.frequency!=="hourly";return o==="cron"?e.jsxs("div",{className:"space-y-2",children:[e.jsx("button",{type:"button",onClick:C,className:"text-muted-foreground hover:text-foreground text-xs underline-offset-4 hover:underline",children:"Back to simple schedule"}),e.jsx(We,{className:"font-mono",value:t,onChange:i=>n(i.target.value),placeholder:"0 9 * * 1-5"}),t.trim()&&e.jsx("p",{className:V("text-xs",oe(t)?"text-muted-foreground":"text-destructive"),children:es(t)}),e.jsx("a",{href:"https://crontab.guru",target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground block text-xs hover:underline",children:"Learn about cron expressions"})]}):e.jsxs("div",{className:"space-y-3",children:[e.jsxs(q,{value:l.frequency,onValueChange:v,children:[e.jsx(U,{"aria-label":"Frequency",children:e.jsx(G,{})}),e.jsx(K,{children:Gt.map(i=>e.jsx(L,{value:i.value,children:i.label},i.value))})]}),e.jsx(le,{initial:!1,mode:"wait",children:u&&e.jsx(ce.div,{variants:ue,initial:"initial",animate:"animate",exit:"exit",transition:de,className:"overflow-hidden",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"at"}),e.jsxs(q,{value:String(l.hour),onValueChange:x,children:[e.jsx(U,{className:"w-32","aria-label":"Time",children:e.jsx(G,{})}),e.jsx(K,{children:Array.from({length:24},(i,g)=>e.jsx(L,{value:String(g),children:Fe(g)},g))})]})]})},"time")}),e.jsx(le,{initial:!1,children:l.frequency==="weekly"&&e.jsx(ce.div,{variants:ue,initial:"initial",animate:"animate",exit:"exit",transition:de,className:"overflow-hidden",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Kt.map(i=>{const g=l.days.includes(i.value);return e.jsx("button",{type:"button","aria-label":i.label,"aria-pressed":g,className:V("inline-flex min-h-11 items-center justify-center rounded-md border px-2.5 py-1 text-xs font-medium transition-colors md:min-h-0",g?"border-primary bg-primary/10 text-primary":"border-input text-muted-foreground hover:bg-accent hover:text-accent-foreground"),onClick:()=>j(i.value),children:i.label},i.value)})})},"days")}),e.jsx(le,{initial:!1,children:l.frequency==="monthly"&&e.jsx(ce.div,{variants:ue,initial:"initial",animate:"animate",exit:"exit",transition:de,className:"overflow-hidden",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"on day"}),e.jsxs(q,{value:String(l.dayOfMonth),onValueChange:p,children:[e.jsx(U,{className:"w-20","aria-label":"Day of month",children:e.jsx(G,{})}),e.jsx(K,{children:Array.from({length:31},(i,g)=>e.jsx(L,{value:String(g+1),children:Ae(g+1)},g+1))})]})]})},"dom")}),e.jsx("p",{className:"text-muted-foreground text-xs",children:Zt(l)}),e.jsx("button",{type:"button",onClick:k,className:"text-muted-foreground hover:text-foreground text-xs underline-offset-4 hover:underline",children:"Use a cron expression"})]})}function ss(t){const n=new Map;for(const s of t){const[o]=s.split("/");n.has(o)||n.set(o,[]),n.get(o).push(s)}return n}function ns({value:t,onChange:n}){const[s,o]=m.useState(!1),a=m.useRef(null),l=m.useMemo(()=>{try{return Intl.supportedValuesOf("timeZone")}catch{return[]}},[]),c=m.useMemo(()=>ss(l),[l]),d=m.useMemo(()=>Intl.DateTimeFormat().resolvedOptions().timeZone,[]);m.useEffect(()=>{if(!s)return;function x(j){a.current&&!a.current.contains(j.target)&&o(!1)}return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[s]);const h=t||"System default";function v(x){n(x),o(!1)}return e.jsxs("div",{ref:a,className:"relative w-full",children:[e.jsxs("button",{type:"button","aria-expanded":s,"aria-haspopup":"listbox",className:V("border-input ring-offset-background flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs transition-colors","focus-visible:ring-ring focus-visible:ring-1 focus-visible:outline-none","hover:bg-accent/50"),onClick:()=>o(x=>!x),children:[e.jsx("span",{className:"truncate",children:h}),e.jsx(qe,{className:"ml-2 size-4 shrink-0 opacity-50"})]}),s&&e.jsx("div",{className:"bg-popover text-popover-foreground absolute top-full left-0 z-50 mt-1 w-full rounded-md border shadow-md",children:e.jsxs(Dt,{children:[e.jsx($t,{placeholder:"Search timezone…"}),e.jsxs(Lt,{className:"max-h-60",children:[e.jsx(It,{children:"No timezone found."}),e.jsxs(be,{heading:"Default",children:[e.jsxs(he,{value:"system-default",onSelect:()=>v(""),children:[e.jsx("span",{children:"System default"}),t===""&&e.jsx(me,{className:"ml-auto size-4"})]}),d&&e.jsxs(he,{value:`${d}-detected`,onSelect:()=>v(d),children:[e.jsxs("span",{children:[d," (detected)"]}),t===d&&e.jsx(me,{className:"ml-auto size-4"})]})]}),[...c.entries()].map(([x,j])=>e.jsx(be,{heading:x,children:j.map(p=>e.jsxs(he,{value:p,onSelect:()=>v(p),children:[e.jsx("span",{children:p.replace(`${x}/`,"").replace(/_/g," ")}),p===t&&e.jsx(me,{className:"ml-auto size-4"})]},p))},x))]})]})})]})}function rs({roster:t,value:n}){const s="flex h-9 w-full items-center gap-2 text-sm";if(!n)return e.jsx("p",{"data-testid":"settled-agent",className:`${s} text-muted-foreground`,children:"No agent"});if(t.unreadable)return e.jsx("p",{"data-testid":"settled-agent",className:`${s} text-muted-foreground`,children:"Couldn’t load your agents to show this one."});if(!t.answered)return e.jsxs("div",{"data-testid":"settled-agent-loading",className:s,"aria-hidden":!0,children:[e.jsx(ge,{className:"size-5 rounded-full"}),e.jsx(ge,{className:"h-4 w-32"})]});const o=t.agents.find(l=>l.id===n);if(!o)return e.jsx("p",{"data-testid":"settled-agent",className:`${s} text-muted-foreground`,children:"This agent isn’t registered any more."});const a=Ue(o);return e.jsxs("p",{"data-testid":"settled-agent",className:s,children:[e.jsx(Ge,{color:a.color,emoji:a.emoji,size:"xs"}),e.jsx("span",{className:"truncate",children:Ke(o)})]})}function as({roster:t,value:n,locked:s,onChange:o}){return e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{children:"Agent"}),s?e.jsxs(e.Fragment,{children:[e.jsx(rs,{roster:t,value:n}),e.jsx("p",{"data-testid":"agent-locked-note",className:"text-muted-foreground text-xs leading-relaxed",children:"The agent is set once. For another agent, make a new task."})]}):e.jsx(zt,{agents:t.agents,value:n||void 0,onValueChange:a=>o(a??"")})]})}function De(t,n){var c,d;const s=t.map(h=>h.projectPath).join(`
|
|
1
|
+
import{j as e,ig as Ve,G as V,r as m,e4 as Be,$ as fe,I as We,eh as q,ei as U,ej as G,ek as K,el as L,by as le,ar as ce,ih as de,ii as ue,fv as Re,al as qe,J as me,eo as R,e as ge,ai as Ue,aj as Ge,ak as Ke,ij as Ye,a1 as He,ea as xe,a2 as Qe,ik as Xe,ef as ne,eg as Ze,il as Je,a0 as et,im as Ee,io as Oe,ip as tt,B as Z,iq as st,gX as je,_ as ve,gW as nt,gY as rt,gV as at,dO as ot,fi as it,ir as lt,is as ct,b_ as dt,aN as ut,y as mt,g_ as ht,g$ as ft,a$ as xt,b2 as pt,d2 as gt,d3 as jt,d5 as vt,e7 as bt,d6 as yt,d7 as Nt,gQ as wt,fj as Ct,fk as St,fl as kt,fm as Rt,fn as Et,fo as Ot}from"./index-p3WivF1M.js";import{I as Mt}from"./inline-code-14c1Gacs.js";import{a as Ft,u as At}from"./form-CA_eiUg-.js";import{C as Dt,a as $t,b as Lt,c as It,d as be,e as he}from"./command-2pl_Cn7b.js";import{A as zt}from"./AgentPicker-DazquIgR.js";import{d as _t,k as Tt,e as ye}from"./execution-config-DRqIsff0.js";import{s as Pt}from"./settings-for-runtime-BoOa-ZFG.js";import{l as Vt}from"./list-runtime-types-iJaKcim4.js";import{f as Bt,u as Wt}from"./format-cron-YPhIy57w.js";function Cs({icon:t,name:n,description:s,command:o,commandHint:a="Restart DorkOS from your terminal with:",className:l,...c}){return e.jsxs("div",{"data-slot":"feature-disabled-state",className:V("flex flex-col items-center justify-center gap-3 p-8 text-center",l),...c,children:[e.jsx(t,{className:"text-muted-foreground/50 size-8"}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-medium",children:[n," is off"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm",children:s})]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs",children:a}),e.jsxs("div",{className:"flex max-w-full items-center gap-1.5",children:[e.jsx(Mt,{className:"min-w-0 px-3 py-1.5 text-sm break-all",children:o}),e.jsx(Ve,{value:o,label:`Copy the command for ${n}`})]})]})}const z=(t,n=o=>o,s)=>Ft(t,n,{compare:s});function qt(){const[t,n]=m.useState({x:0,y:0}),[s,o]=m.useState(!1),a=Be(),l=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(hover: none)").matches,c=a||l,d=m.useCallback(x=>{if(c)return;const j=x.currentTarget.getBoundingClientRect();n({x:x.clientX-j.left,y:x.clientY-j.top}),o(!0)},[c]),h=m.useCallback(()=>{o(!1)},[]),v=!c&&s?{background:`radial-gradient(350px circle at ${t.x}px ${t.y}px, rgba(59,130,246,0.06), transparent 80%)`}:void 0;return{position:t,isActive:s,onMouseMove:d,onMouseLeave:h,spotlightStyle:v}}function Ut({preset:t,variant:n,checked:s,onCheckedChange:o,onSelect:a,selected:l=!1,className:c}){const{onMouseMove:d,onMouseLeave:h,spotlightStyle:v}=qt(),x=()=>{n==="toggle"?o==null||o(!s):a==null||a(t)};return e.jsxs("button",{type:"button",onClick:x,onMouseMove:d,onMouseLeave:h,"aria-label":`${t.name}: ${t.description}`,className:V("relative flex w-full items-start gap-4 rounded-lg border p-4 text-left transition","hover:bg-accent/50 focus-ring","min-h-11",n==="toggle"&&s&&"border-primary/40 bg-accent/30",n==="selectable"&&l&&"border-primary ring-primary bg-accent/30 ring-1",c),children:[v&&e.jsx("div",{className:"pointer-events-none absolute inset-0 rounded-lg",style:v}),n==="toggle"&&e.jsx("div",{className:"flex size-11 shrink-0 items-center justify-center",children:e.jsx(fe,{checked:s??!1,onCheckedChange:o,"aria-label":`Enable ${t.name}`,onClick:j=>j.stopPropagation()})}),e.jsxs("div",{className:"min-w-0 flex-1 space-y-1",children:[e.jsx("div",{className:"font-medium",children:t.name}),e.jsx("p",{className:"text-muted-foreground text-sm",children:t.description}),e.jsx("p",{"aria-hidden":"true",className:"text-muted-foreground text-xs",children:Bt(t.cron)}),e.jsx("p",{"aria-hidden":"true",className:"text-muted-foreground/80 line-clamp-2 text-sm",children:t.prompt})]})]})}function Me({onSelect:t,selectedId:n,className:s}){const{data:o,isLoading:a,isError:l}=Wt();return a?e.jsx("div",{className:V("grid grid-cols-2 gap-3",s),children:[0,1,2,3].map(c=>e.jsx("div",{className:"bg-muted animate-breath h-28 rounded-lg border"},c))}):l?e.jsx("p",{className:"text-destructive text-sm",children:"Couldn’t load ready-made tasks. Start from scratch instead."}):!o||o.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No ready-made tasks yet."}):e.jsx("div",{className:V("grid grid-cols-2 gap-3",s),children:o.map(c=>e.jsx(Ut,{preset:c,variant:"selectable",selected:c.id===n,onSelect:t},c.id))})}const W={frequency:"daily",hour:9,days:[1,2,3,4,5],dayOfMonth:1},Gt=[{value:"15m",label:"Every 15 minutes"},{value:"hourly",label:"Every hour"},{value:"daily",label:"Every day"},{value:"weekly",label:"Every week"},{value:"monthly",label:"Every month"}],Kt=[{value:1,label:"Mon"},{value:2,label:"Tue"},{value:3,label:"Wed"},{value:4,label:"Thu"},{value:5,label:"Fri"},{value:6,label:"Sat"},{value:0,label:"Sun"}],Yt=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],Ht=[1,2,3,4,5],Qt=[0,6];function Ne(t){const n=t.trim();if(!n)return null;const s=n.split(/\s+/);if(s.length!==5)return null;const[o,a,l,c,d]=s;if(c!=="*")return null;if(o==="*/15"&&a==="*"&&l==="*"&&d==="*")return{...W,frequency:"15m"};if(o!=="0")return null;if(a==="*"&&l==="*"&&d==="*")return{...W,frequency:"hourly"};const h=Number(a);if(!Number.isInteger(h)||h<0||h>23)return null;if(l!=="*"&&d==="*"){const v=Number(l);return!Number.isInteger(v)||v<1||v>31?null:{...W,frequency:"monthly",hour:h,dayOfMonth:v}}if(l==="*"&&d==="*")return{...W,frequency:"daily",hour:h};if(l==="*"&&d!=="*"){const v=Xt(d);return v?{...W,frequency:"weekly",hour:h,days:v}:null}return null}function Xt(t){const n=[];for(const s of t.split(",")){const o=s.match(/^(\d)-(\d)$/);if(o){const a=Number(o[1]),l=Number(o[2]);if(a>6||l>6||a>l)return null;for(let c=a;c<=l;c++)n.push(c)}else{const a=Number(s);if(!Number.isInteger(a)||a<0||a>6)return null;n.push(a)}}return n.length>0?n.sort((s,o)=>s-o):null}function we(t){switch(t.frequency){case"15m":return"*/15 * * * *";case"hourly":return"0 * * * *";case"daily":return`0 ${t.hour} * * *`;case"weekly":return`0 ${t.hour} * * ${t.days.join(",")}`;case"monthly":return`0 ${t.hour} ${t.dayOfMonth} * *`}}function Fe(t){const n=t<12?"AM":"PM";return`${t%12||12}:00 ${n}`}function Ae(t){const n=t%100;if(n>=11&&n<=13)return`${t}th`;const s=t%10;return s===1?`${t}st`:s===2?`${t}nd`:s===3?`${t}rd`:`${t}th`}function Ce(t,n){return t.length===n.length&&t.every((s,o)=>s===n[o])}function Zt(t){const n=Fe(t.hour);switch(t.frequency){case"15m":return"Runs every 15 minutes";case"hourly":return"Runs every hour, on the hour";case"daily":return`Runs every day at ${n}`;case"weekly":{const s=[...t.days].sort((c,d)=>c-d);if(Ce(s,Ht))return`Runs every weekday at ${n}`;if(Ce(s,Qt))return`Runs every Saturday and Sunday at ${n}`;const a=s.filter(c=>c!==0).concat(s.includes(0)?[0]:[]).map(c=>Yt[c]);if(a.length===1)return`Runs every ${a[0]} at ${n}`;if(a.length===2)return`Runs every ${a[0]} and ${a[1]} at ${n}`;const l=a.pop();return`Runs every ${a.join(", ")}, and ${l} at ${n}`}case"monthly":return`Runs on the ${Ae(t.dayOfMonth)} of every month at ${n}`}}const Jt="Can’t read this timing. Check the format.";function oe(t){const n=t.trim();if(!n)return!0;try{return Re.toString(n),!0}catch{return!1}}function es(t){const n=t.trim();return n?oe(n)?Re.toString(n):Jt:""}function ts({value:t,onChange:n}){const s=Ne(t),[o,a]=m.useState(s?"simple":t.trim()?"cron":"simple"),[l,c]=m.useState(s??W),d=m.useRef(t);m.useEffect(()=>{if(t===d.current)return;d.current=t;const i=Ne(t);i?(a("simple"),c(i)):t.trim()&&a("cron")},[t]);function h(i){c(i);const g=we(i);d.current=g,n(g)}function v(i){h({...l,frequency:i})}function x(i){h({...l,hour:Number(i)})}function j(i){const g=l.days.includes(i);if(g&&l.days.length<=1)return;const w=g?l.days.filter(S=>S!==i):[...l.days,i].sort((S,N)=>S-N);h({...l,days:w})}function p(i){h({...l,dayOfMonth:Number(i)})}function k(){a("cron")}function C(){a("simple");const i=we(l);d.current=i,n(i)}const u=l.frequency!=="15m"&&l.frequency!=="hourly";return o==="cron"?e.jsxs("div",{className:"space-y-2",children:[e.jsx("button",{type:"button",onClick:C,className:"text-muted-foreground hover:text-foreground text-xs underline-offset-4 hover:underline",children:"Back to simple schedule"}),e.jsx(We,{className:"font-mono",value:t,onChange:i=>n(i.target.value),placeholder:"0 9 * * 1-5"}),t.trim()&&e.jsx("p",{className:V("text-xs",oe(t)?"text-muted-foreground":"text-destructive"),children:es(t)}),e.jsx("a",{href:"https://crontab.guru",target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground block text-xs hover:underline",children:"Learn about cron expressions"})]}):e.jsxs("div",{className:"space-y-3",children:[e.jsxs(q,{value:l.frequency,onValueChange:v,children:[e.jsx(U,{"aria-label":"Frequency",children:e.jsx(G,{})}),e.jsx(K,{children:Gt.map(i=>e.jsx(L,{value:i.value,children:i.label},i.value))})]}),e.jsx(le,{initial:!1,mode:"wait",children:u&&e.jsx(ce.div,{variants:ue,initial:"initial",animate:"animate",exit:"exit",transition:de,className:"overflow-hidden",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"at"}),e.jsxs(q,{value:String(l.hour),onValueChange:x,children:[e.jsx(U,{className:"w-32","aria-label":"Time",children:e.jsx(G,{})}),e.jsx(K,{children:Array.from({length:24},(i,g)=>e.jsx(L,{value:String(g),children:Fe(g)},g))})]})]})},"time")}),e.jsx(le,{initial:!1,children:l.frequency==="weekly"&&e.jsx(ce.div,{variants:ue,initial:"initial",animate:"animate",exit:"exit",transition:de,className:"overflow-hidden",children:e.jsx("div",{className:"flex flex-wrap gap-1.5",children:Kt.map(i=>{const g=l.days.includes(i.value);return e.jsx("button",{type:"button","aria-label":i.label,"aria-pressed":g,className:V("inline-flex min-h-11 items-center justify-center rounded-md border px-2.5 py-1 text-xs font-medium transition-colors md:min-h-0",g?"border-primary bg-primary/10 text-primary":"border-input text-muted-foreground hover:bg-accent hover:text-accent-foreground"),onClick:()=>j(i.value),children:i.label},i.value)})})},"days")}),e.jsx(le,{initial:!1,children:l.frequency==="monthly"&&e.jsx(ce.div,{variants:ue,initial:"initial",animate:"animate",exit:"exit",transition:de,className:"overflow-hidden",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-muted-foreground text-sm",children:"on day"}),e.jsxs(q,{value:String(l.dayOfMonth),onValueChange:p,children:[e.jsx(U,{className:"w-20","aria-label":"Day of month",children:e.jsx(G,{})}),e.jsx(K,{children:Array.from({length:31},(i,g)=>e.jsx(L,{value:String(g+1),children:Ae(g+1)},g+1))})]})]})},"dom")}),e.jsx("p",{className:"text-muted-foreground text-xs",children:Zt(l)}),e.jsx("button",{type:"button",onClick:k,className:"text-muted-foreground hover:text-foreground text-xs underline-offset-4 hover:underline",children:"Use a cron expression"})]})}function ss(t){const n=new Map;for(const s of t){const[o]=s.split("/");n.has(o)||n.set(o,[]),n.get(o).push(s)}return n}function ns({value:t,onChange:n}){const[s,o]=m.useState(!1),a=m.useRef(null),l=m.useMemo(()=>{try{return Intl.supportedValuesOf("timeZone")}catch{return[]}},[]),c=m.useMemo(()=>ss(l),[l]),d=m.useMemo(()=>Intl.DateTimeFormat().resolvedOptions().timeZone,[]);m.useEffect(()=>{if(!s)return;function x(j){a.current&&!a.current.contains(j.target)&&o(!1)}return document.addEventListener("mousedown",x),()=>document.removeEventListener("mousedown",x)},[s]);const h=t||"System default";function v(x){n(x),o(!1)}return e.jsxs("div",{ref:a,className:"relative w-full",children:[e.jsxs("button",{type:"button","aria-expanded":s,"aria-haspopup":"listbox",className:V("border-input ring-offset-background flex h-9 w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs transition-colors","focus-visible:ring-ring focus-visible:ring-1 focus-visible:outline-none","hover:bg-accent/50"),onClick:()=>o(x=>!x),children:[e.jsx("span",{className:"truncate",children:h}),e.jsx(qe,{className:"ml-2 size-4 shrink-0 opacity-50"})]}),s&&e.jsx("div",{className:"bg-popover text-popover-foreground absolute top-full left-0 z-50 mt-1 w-full rounded-md border shadow-md",children:e.jsxs(Dt,{children:[e.jsx($t,{placeholder:"Search timezone…"}),e.jsxs(Lt,{className:"max-h-60",children:[e.jsx(It,{children:"No timezone found."}),e.jsxs(be,{heading:"Default",children:[e.jsxs(he,{value:"system-default",onSelect:()=>v(""),children:[e.jsx("span",{children:"System default"}),t===""&&e.jsx(me,{className:"ml-auto size-4"})]}),d&&e.jsxs(he,{value:`${d}-detected`,onSelect:()=>v(d),children:[e.jsxs("span",{children:[d," (detected)"]}),t===d&&e.jsx(me,{className:"ml-auto size-4"})]})]}),[...c.entries()].map(([x,j])=>e.jsx(be,{heading:x,children:j.map(p=>e.jsxs(he,{value:p,onSelect:()=>v(p),children:[e.jsx("span",{children:p.replace(`${x}/`,"").replace(/_/g," ")}),p===t&&e.jsx(me,{className:"ml-auto size-4"})]},p))},x))]})]})})]})}function rs({roster:t,value:n}){const s="flex h-9 w-full items-center gap-2 text-sm";if(!n)return e.jsx("p",{"data-testid":"settled-agent",className:`${s} text-muted-foreground`,children:"No agent"});if(t.unreadable)return e.jsx("p",{"data-testid":"settled-agent",className:`${s} text-muted-foreground`,children:"Couldn’t load your agents to show this one."});if(!t.answered)return e.jsxs("div",{"data-testid":"settled-agent-loading",className:s,"aria-hidden":!0,children:[e.jsx(ge,{className:"size-5 rounded-full"}),e.jsx(ge,{className:"h-4 w-32"})]});const o=t.agents.find(l=>l.id===n);if(!o)return e.jsx("p",{"data-testid":"settled-agent",className:`${s} text-muted-foreground`,children:"This agent isn’t registered any more."});const a=Ue(o);return e.jsxs("p",{"data-testid":"settled-agent",className:s,children:[e.jsx(Ge,{color:a.color,emoji:a.emoji,size:"xs"}),e.jsx("span",{className:"truncate",children:Ke(o)})]})}function as({roster:t,value:n,locked:s,onChange:o}){return e.jsxs("div",{className:"space-y-2",children:[e.jsx(R,{children:"Agent"}),s?e.jsxs(e.Fragment,{children:[e.jsx(rs,{roster:t,value:n}),e.jsx("p",{"data-testid":"agent-locked-note",className:"text-muted-foreground text-xs leading-relaxed",children:"The agent is set once. For another agent, make a new task."})]}):e.jsx(zt,{agents:t.agents,value:n||void 0,onValueChange:a=>o(a??"")})]})}function De(t,n){var c,d;const s=t.map(h=>h.projectPath).join(`
|
|
2
2
|
`),o=m.useMemo(()=>s?s.split(`
|
|
3
3
|
`):[],[s]),{data:a}=Ye(o),l=n?(c=t.find(h=>h.id===n))==null?void 0:c.projectPath:void 0;return l?((d=a==null?void 0:a[l])==null?void 0:d.runtime)??null:null}const $="__inherit__";function os(t){var T;const{runtime:n,model:s,effort:o,agentRuntime:a}=t,l=He(),{data:c}=xe(),d=c?Object.keys(c.capabilities):void 0,h=(c==null?void 0:c.defaultRuntime)??null,x=(b=>b!==null&&d!==void 0&&d.includes(b))(a),j=x?a:h,p=n||j,k=p??void 0,C=k!==void 0&&d!==void 0&&d.includes(k),{data:u}=Qe({...Xe(l,k?{runtime:k}:{}),enabled:C,retry:!1}),i=s?u==null?void 0:u.find(b=>b.value===s):void 0,g=(T=Pt(c,p))==null?void 0:T.supportsEffort,w=p?_t({agent:{runtime:p,model:s||null,effort:o||null},defaultRuntime:p,knownRuntimes:d,knownModels:Tt(u),modelSupportsEffort:i?i.supportsEffort??!1:void 0,runtimeSupportsEffort:g,runtimeLabel:b=>ne(b).label}):null,S=b=>{var y;return((y=w==null?void 0:w.breakages.find(M=>b.includes(M.kind)))==null?void 0:y.message)??null},N=d==null?void 0:d.join(","),_=m.useMemo(()=>{const b=N===void 0?[]:N.split(",").filter(Boolean),y=Vt(b).filter(M=>b.includes(M));return n&&!y.includes(n)&&y.push(n),y.map(M=>({value:M,label:ne(M).label}))},[N,n]),A=m.useMemo(()=>{const b=(u??[]).map(y=>({value:y.value,label:y.displayName}));return s&&!b.some(y=>y.value===s)&&b.push({value:s,label:s}),b},[u,s]),Y=m.useMemo(()=>{const b=Ze.filter(y=>!(i!=null&&i.supportedEffortLevels)||i.supportedEffortLevels.includes(y)).map(y=>({value:y,label:ye(y)}));return o&&!b.some(y=>y.value===o)&&b.push({value:o,label:ye(o)}),b},[i,o]),D=j===null?"Same as agent":x?`Same as agent (${ne(j).label})`:`Server default (${ne(j).label})`;return{effectiveRuntime:p,runtimeOptions:_,inheritRuntimeLabel:D,modelOptions:A,supportsEffort:g===!0,effortOptions:Y,runtimeWarning:S(["runtime-not-connected"]),modelWarning:S(["model-unavailable"]),effortWarning:S(["effort-unsupported-runtime","effort-unsupported-model"])}}const re="text-xs text-status-warning-fg";function is({runtime:t,model:n,effort:s,execution:o,onRuntimeChange:a,onModelChange:l,onEffortChange:c}){const{runtimeOptions:d,inheritRuntimeLabel:h,modelOptions:v,supportsEffort:x,effortOptions:j,runtimeWarning:p,modelWarning:k,effortWarning:C}=o;return e.jsxs("fieldset",{className:"space-y-3",children:[e.jsx("legend",{className:"mb-1.5 text-sm font-medium",children:"Runs on"}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{htmlFor:"schedule-runtime",children:"Runs on"}),e.jsxs(q,{value:t||$,onValueChange:u=>a(u===$?"":u),children:[e.jsx(U,{id:"schedule-runtime",responsive:!1,className:"text-sm","data-testid":"task-runtime-select",children:e.jsx(G,{})}),e.jsxs(K,{children:[e.jsx(L,{value:$,children:h}),d.map(u=>e.jsx(L,{value:u.value,children:u.label},u.value))]})]}),p&&e.jsx("p",{"data-testid":"task-runtime-warning",className:re,children:p})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{htmlFor:"schedule-model",children:"Model"}),e.jsxs(q,{value:n||$,onValueChange:u=>l(u===$?"":u),children:[e.jsx(U,{id:"schedule-model",responsive:!1,className:"text-sm","data-testid":"task-model-select",children:e.jsx(G,{})}),e.jsxs(K,{children:[e.jsx(L,{value:$,children:"Agent default"}),v.map(u=>e.jsx(L,{value:u.value,children:u.label},u.value))]})]}),k&&e.jsx("p",{"data-testid":"task-model-warning",className:re,children:k})]}),x?e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{htmlFor:"schedule-effort",children:"Effort"}),e.jsxs(q,{value:s||$,onValueChange:u=>c(u===$?"":u),children:[e.jsx(U,{id:"schedule-effort",responsive:!1,className:"text-sm","data-testid":"task-effort-select",children:e.jsx(G,{})}),e.jsxs(K,{children:[e.jsx(L,{value:$,children:"Agent default"}),j.map(u=>e.jsx(L,{value:u.value,children:u.label},u.value))]})]}),C&&e.jsx("p",{"data-testid":"task-effort-warning",className:re,children:C})]}):s&&e.jsxs("div",{className:"space-y-1.5","data-testid":"task-effort-stranded",children:[e.jsx(R,{children:"Effort"}),e.jsx("p",{className:re,children:C??"No effort setting here, so this does nothing."}),e.jsx("button",{type:"button",onClick:()=>c(""),className:"focus-ring text-status-warning-fg rounded-sm text-xs underline-offset-2 hover:underline","data-testid":"task-effort-clear",children:"Clear it"})]})]})}function ls(t){return t.asks!=="never"&&t.id!==Je}function cs(){return e.jsxs("div",{role:"note","data-testid":"task-unattended-warning",className:"bg-status-warning-bg border-status-warning-border text-status-warning-fg flex gap-2 rounded-md border px-2.5 py-2 text-xs leading-relaxed",children:[e.jsx(et,{className:"mt-0.5 size-5 shrink-0 sm:size-3.5","aria-hidden":!0}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"font-medium",children:"Nobody is there to approve asks on a scheduled run."}),e.jsx("p",{children:"Each ask is refused, so the run will need attention."}),e.jsx("p",{children:"Use Never ask with an allow list for the commands it needs."}),e.jsx("p",{children:"“Run now” still asks you."})]})]})}const ae="10m";function ds(t){return`${Math.round(t/6e4)}m`}function P(t,n,s,o="acceptEdits"){return t?{name:t.name,description:t.description??"",prompt:t.prompt,cron:t.cron??"",agentId:t.agentId??"",timezone:t.timezone??"",permissionMode:t.permissionMode,maxRuntime:t.maxRuntime?ds(t.maxRuntime):ae,sticky:t.sticky,runtime:t.runtime??"",model:t.model??"",effort:t.effort??""}:n?{name:n.name,description:n.description,prompt:n.prompt,cron:n.cron,agentId:s??"",timezone:n.timezone??"",permissionMode:o,maxRuntime:ae,sticky:!1,runtime:"",model:"",effort:""}:{name:"",description:"",prompt:"",cron:"",agentId:s??"",timezone:"",permissionMode:o,maxRuntime:ae,sticky:!1,runtime:"",model:"",effort:""}}function Se(t){const n=t.cron.trim();return{name:t.name.trim(),description:t.description.trim(),prompt:t.prompt.trim(),cron:n||null,...n&&t.timezone?{timezone:t.timezone}:{},permissionMode:t.permissionMode,maxRuntime:t.maxRuntime.trim()||void 0,sticky:t.sticky,runtime:t.runtime||null,model:t.model||null,effort:t.effort||null}}function us(t,n){const s=Se(t),o=Se(n);return Object.fromEntries(Object.entries(o).filter(([a,l])=>l!==s[a]))}const $e=100;function ms(t,n=[]){const s=new Set([...n].map(a=>a.toLowerCase())),o=t.name.trim();for(let a=1;;a++){const l=a===1?"-copy":`-copy-${a}`,c=`${o.slice(0,$e-l.length)}${l}`;if(!s.has(c.toLowerCase()))return{...t,name:c}}}const hs={record:["This schedule came with a package. Only the package can change what it does.","You can still turn it on or off, or change when it runs."],legacy:["This schedule came with a package from an older DorkOS.","DorkOS can’t yet tell its files from yours.","You can still turn it on or off, or change when it runs.","To edit the rest, choose Check files on its package in Marketplace › Installed."]};function ke(t){var s;const n=t;return(n==null?void 0:n.code)!==lt?null:{message:n.message,ownedBy:((s=n.body)==null?void 0:s.ownedBy)==="legacy"?"legacy":"record"}}function fs({defaultValues:t,roster:n,editTask:s,onSubmitSuccess:o,onCancel:a,onDeleteClick:l,isPending:c,onMakeCopy:d,leading:h}){var ee,te;const v=Ee(),x=m.useRef(!0);m.useEffect(()=>(x.current=!0,()=>{x.current=!1}),[]);const j=Oe({isShownInline:r=>x.current&&ke(r)!==null}),p=s?ke(j.error):null,k=(s==null?void 0:s.packageOwned)??null,C=k??(p==null?void 0:p.ownedBy)??null,u=k!==null,i=At({defaultValues:t,onSubmit:({value:r})=>{const f=r.agentId.trim()||void 0,F=r.cron.trim();if(s){const O=us(t,r);if(Object.keys(O).length===0){o();return}j.mutate({id:s.id,...O},{onSuccess:o})}else{const O=f??"global",se={name:r.name.trim(),description:r.description.trim()||r.name.trim(),prompt:r.prompt.trim(),target:O,cron:F||void 0,...F&&r.timezone?{timezone:r.timezone}:{},permissionMode:r.permissionMode,maxRuntime:r.maxRuntime.trim()||void 0,...r.sticky?{sticky:!0}:{},...r.runtime?{runtime:r.runtime}:{},...r.model?{model:r.model}:{},...r.effort?{effort:r.effort}:{}};v.mutate(se,{onSuccess:o})}}}),g=z(i.store,r=>r.values.agentId),w=z(i.store,r=>r.values.runtime),S=z(i.store,r=>r.values.model),N=z(i.store,r=>r.values.effort),_=z(i.store,r=>r.values.permissionMode),A=z(i.store,r=>r.values.cron),[Y,D]=m.useState(!!t.cron),[T,b]=m.useState(!1),y=z(i.store,r=>r.values.maxRuntime),M=z(i.store,r=>r.values.sticky),I=[w!=="",S!=="",N!=="",y!==ae,M,tt(_)].filter(Boolean).length,J=De(n.agents,g),B=os({runtime:w,model:S,effort:N,agentRuntime:J}),{data:H}=xe(),Q=(B.effectiveRuntime?(te=(ee=H==null?void 0:H.capabilities[B.effectiveRuntime])==null?void 0:ee.permissionModes)==null?void 0:te.values:void 0)??[];return e.jsxs(i.AppForm,{children:[e.jsx("form",{onSubmit:r=>{r.preventDefault(),i.handleSubmit()},id:"schedule-form",className:"min-h-0 flex-1 overflow-y-auto",children:e.jsxs("div",{className:"space-y-5 px-4 py-5",children:[C!==null&&e.jsxs("div",{role:"status","data-slot":"package-owned-notice",className:"bg-muted/40 space-y-2 rounded-md border px-3 py-2 text-xs",children:[p?e.jsx("p",{children:p.message}):hs[C].map(r=>e.jsx("p",{children:r},r)),C==="record"&&d&&e.jsxs(Z,{type:"button",variant:"outline",size:"xs",onClick:()=>d(i.state.values),children:[e.jsx(st,{}),"Make a copy"]})]}),h,e.jsx(as,{roster:n,value:g,locked:s!==void 0,onChange:r=>i.setFieldValue("agentId",r)}),e.jsxs("fieldset",{disabled:u,className:"min-w-0 space-y-5",children:[e.jsx(i.AppField,{name:"name",children:r=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{htmlFor:"schedule-name",children:"Name *"}),e.jsx("input",{id:"schedule-name",className:"border-input focus-visible:ring-ring disabled:bg-muted/40 w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:ring-1 focus-visible:outline-none disabled:cursor-default",value:r.state.value,onChange:f=>r.handleChange(f.target.value),onBlur:r.handleBlur,maxLength:$e,placeholder:"Daily code review"}),r.state.meta.isTouched&&r.state.meta.errors.length>0&&e.jsx("p",{className:"text-destructive text-xs",children:String(r.state.meta.errors[0])})]})}),e.jsx(i.AppField,{name:"description",children:r=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{htmlFor:"schedule-description",children:"Description *"}),e.jsx("input",{id:"schedule-description",className:"border-input focus-visible:ring-ring disabled:bg-muted/40 w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:ring-1 focus-visible:outline-none disabled:cursor-default",value:r.state.value,onChange:f=>r.handleChange(f.target.value),onBlur:r.handleBlur,placeholder:"A short description of this schedule"}),r.state.meta.isTouched&&r.state.meta.errors.length>0&&e.jsx("p",{className:"text-destructive text-xs",children:String(r.state.meta.errors[0])})]})}),e.jsx(i.AppField,{name:"prompt",children:r=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{htmlFor:"schedule-prompt",children:"Prompt *"}),e.jsx("textarea",{id:"schedule-prompt",className:"border-input focus-visible:ring-ring disabled:bg-muted/40 w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:ring-1 focus-visible:outline-none disabled:cursor-default",value:r.state.value,onChange:f=>r.handleChange(f.target.value),onBlur:r.handleBlur,rows:4,placeholder:"Review all pending PRs and summarize findings…"}),r.state.meta.isTouched&&r.state.meta.errors.length>0&&e.jsx("p",{className:"text-destructive text-xs",children:String(r.state.meta.errors[0])})]})})]}),e.jsx(je,{open:Y,onOpenChange:D,trigger:"Schedule",badge:e.jsx(ve,{variant:"secondary",className:"text-xs",children:A?"On a schedule":"Optional"}),children:e.jsxs("div",{className:"space-y-4",children:[e.jsx(i.AppField,{name:"cron",children:r=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{children:"When it runs"}),e.jsx(ts,{value:r.state.value,onChange:f=>r.handleChange(f)})]})}),e.jsx(i.AppField,{name:"timezone",children:r=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{children:"Timezone"}),e.jsx(ns,{value:r.state.value,onChange:f=>r.handleChange(f)})]})})]})}),e.jsx(i.Subscribe,{selector:r=>!oe(r.values.cron),children:r=>r?e.jsx("p",{role:"alert","data-testid":"cron-blocks-save",className:"text-destructive text-xs",children:"Fix the timing under Schedule before saving."}):null}),e.jsx(je,{open:T,onOpenChange:b,trigger:"Advanced settings",badge:I>0?e.jsxs(ve,{variant:"secondary",className:"text-xs",children:[I," changed"]}):void 0,children:e.jsxs("fieldset",{disabled:u,className:"min-w-0 space-y-4",children:[e.jsx(is,{runtime:w,model:S,effort:N,execution:B,onRuntimeChange:r=>i.setFieldValue("runtime",r),onModelChange:r=>i.setFieldValue("model",r),onEffortChange:r=>i.setFieldValue("effort",r)}),e.jsx(i.AppField,{name:"permissionMode",children:r=>{const f=Q.find(O=>O.id===r.state.value),F=(f==null?void 0:f.label)??nt(r.state.value);return Q.length===0?e.jsxs("fieldset",{className:"space-y-2",children:[e.jsx("legend",{className:"mb-1.5 text-sm font-medium",children:"Permissions"}),e.jsxs("p",{"data-testid":"trust-dial-unavailable",className:"text-muted-foreground px-1 text-xs leading-relaxed",children:["Set to “",F,"”. No other options to choose yet. Saving keeps it."]})]}):e.jsxs("fieldset",{className:"space-y-2",children:[e.jsx("legend",{className:"mb-1.5 text-sm font-medium",children:"Permissions"}),e.jsx(rt,{mode:r.state.value,descriptors:Q,onChangeMode:O=>r.handleChange(O),strandsWorkingMode:!0,strandedNote:e.jsxs(e.Fragment,{children:["Set to “",F,"”, which isn’t listed. Saving keeps it. Pick a stop to change it."]})}),f!==void 0&&ls(f)&&e.jsx(cs,{}),e.jsx(at,{mode:r.state.value,...f?{descriptor:f}:{},className:"px-1"})]})}}),e.jsx(i.AppField,{name:"maxRuntime",children:r=>e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(R,{htmlFor:"schedule-max-runtime",children:"Stop after"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Ends the run if it takes longer."}),e.jsx("input",{id:"schedule-max-runtime",className:"border-input focus-visible:ring-ring disabled:bg-muted/40 w-24 rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs focus-visible:ring-1 focus-visible:outline-none disabled:cursor-default",value:r.state.value,onChange:f=>r.handleChange(f.target.value),onBlur:r.handleBlur,placeholder:"10m"})]})}),e.jsx(i.AppField,{name:"sticky",children:r=>e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(R,{htmlFor:"schedule-sticky",children:"Remember the last run"}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:"Pick up where the last run left off. Off starts fresh each time."})]}),e.jsx(fe,{id:"schedule-sticky",checked:r.state.value,onCheckedChange:f=>r.handleChange(f)})]})})]})})]})}),e.jsxs(ot,{className:"shrink-0 border-t px-4 py-3",children:[s&&e.jsxs(Z,{type:"button",variant:"ghost",size:"sm",className:"text-destructive hover:text-destructive mr-auto",onClick:l,children:[e.jsx(it,{className:"mr-1.5 size-4"}),"Delete"]}),e.jsx(Z,{variant:"ghost",size:"sm",onClick:a,children:"Cancel"}),e.jsx(i.Subscribe,{selector:r=>r.values.name.trim()!==""&&r.values.prompt.trim()!==""&&oe(r.values.cron),children:r=>e.jsx(Z,{type:"submit",size:"sm",form:"schedule-form",disabled:!r||c,children:c?"Saving…":s?"Save":"Create task"})})]})]})}function Ss({open:t,onOpenChange:n,editTask:s,initialPreset:o,initialAgentId:a}){var pe;const l=ct(),c=Oe(),d=Ee(),{data:h,isError:v}=dt(),x={agents:(h==null?void 0:h.agents)??[],answered:h!==void 0,unreadable:v},{data:j}=xe(),p=De(x.agents,a),C=p!==null&&j!==void 0&&Object.hasOwn(j.capabilities,p)?p:(j==null?void 0:j.defaultRuntime)??null,{data:u}=ut(),i=mt(C),g=ht(C?ft(u==null?void 0:u.executionDefaults,C):null,((pe=i==null?void 0:i.permissionModes)==null?void 0:pe.values)??[]),w=m.useRef(g);m.useLayoutEffect(()=>{w.current=g},[g]);const[S,N]=m.useState(()=>s?"form":"preset-picker"),[_,A]=m.useState(null),[Y,D]=m.useState(!1),[T,b]=m.useState((s==null?void 0:s.enabled)??!0),[y,M]=m.useState(!1),I=y?void 0:s,[J,B]=m.useState(!0),{data:H}=xt(),[Q,ee]=m.useState(()=>P(s,void 0,a,g)),[te,r]=m.useState(0);function f(E,ie=!1){ee(E),r(X=>X+1),M(ie)}m.useEffect(()=>{if(!t){f(P(s,void 0,a,w.current)),A(null),D(!1),N(s?"form":"preset-picker");return}s?(f(P(s)),b(s.enabled),N("form")):o?(f(P(void 0,o,a,w.current)),A(o),N("form")):(f(P(void 0,void 0,a,w.current)),N("preset-picker"))},[s,t,o,a]);const{pendingTemplate:F,externalTrigger:O,clear:se}=pt();m.useEffect(()=>{O&&F&&(f(P(void 0,F,a,w.current)),A(F),N("form"),se())},[O,F,se,a]);function Le(E){f(P(void 0,E,a,w.current)),A(E),N("form")}function Ie(E){const ie=(H??[]).filter(X=>(X.agentId??"")===E.agentId).map(X=>X.name);B(!0),f(ms(E,ie),!0)}function ze(){y&&J&&s&&c.mutate({id:s.id,enabled:!1}),n(!1)}function _e(){s&&l.mutate(s.id,{onSuccess:()=>{D(!1),n(!1)}})}function Te(E){s&&(b(E),c.mutate({id:s.id,enabled:E},{onError:()=>b(s.enabled)}))}const Pe=d.isPending||c.isPending;return e.jsxs(gt,{open:t,onOpenChange:n,children:[e.jsxs(jt,{className:"flex max-h-[85vh] max-w-lg flex-col gap-0 p-0",children:[e.jsxs(vt,{className:"shrink-0 border-b px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[S==="form"&&!I&&!y&&e.jsxs("button",{type:"button",onClick:()=>N("preset-picker"),className:"text-muted-foreground hover:text-foreground flex items-center gap-1 text-sm","aria-label":"Back to preset picker",children:[e.jsx(bt,{className:"size-4"}),"Back"]}),e.jsx(yt,{children:I?"Edit schedule":"New schedule"}),I&&e.jsx(fe,{className:"ml-auto",checked:T,onCheckedChange:Te,disabled:c.isPending,"aria-label":T?"Disable schedule":"Enable schedule"})]}),e.jsx(Nt,{className:"sr-only",children:I?"Edit an existing schedule":"Create a new schedule"})]}),S==="preset-picker"&&e.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto",children:e.jsxs("div",{className:"space-y-4 px-4 py-5",children:[e.jsx("p",{className:"text-muted-foreground text-sm",children:"Start from a template"}),e.jsx(Me,{onSelect:Le,selectedId:_==null?void 0:_.id}),e.jsx("button",{type:"button",onClick:()=>{A(null),N("form")},className:"text-muted-foreground hover:text-foreground w-full text-center text-sm transition-colors",children:"Start from scratch"})]})}),S==="form"&&e.jsx(fs,{defaultValues:Q,roster:x,editTask:I,onSubmitSuccess:ze,onCancel:()=>n(!1),onDeleteClick:()=>D(!0),isPending:Pe,onMakeCopy:Ie,leading:y&&s?e.jsxs("div",{className:"flex items-start gap-2 rounded-md border px-3 py-2",children:[e.jsx(wt,{id:"copy-switch-off-original",checked:J,onCheckedChange:E=>B(E===!0)}),e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(R,{htmlFor:"copy-switch-off-original",className:"text-sm font-normal",children:"Switch off the package’s schedule"}),e.jsxs("p",{className:"text-muted-foreground text-xs",children:["So “",s.name,"” and your copy don’t both run."]})]})]}):void 0},te)]}),s&&e.jsx(Ct,{open:Y,onOpenChange:D,children:e.jsxs(St,{children:[e.jsxs(kt,{children:[e.jsxs(Rt,{children:["Delete “",s.name,"”?"]}),e.jsx(Et,{children:"Its run history is deleted too. This can’t be undone."})]}),e.jsxs(Ot,{children:[e.jsx("button",{onClick:()=>D(!1),className:"border-input hover:bg-accent hover:text-accent-foreground inline-flex items-center rounded-md border bg-transparent px-3 py-1.5 text-sm font-medium shadow-xs transition-colors",children:"Cancel"}),e.jsx("button",{onClick:_e,disabled:l.isPending,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90 dark:bg-destructive/60 inline-flex items-center rounded-md px-3 py-1.5 text-sm font-medium shadow-sm transition-colors",children:l.isPending?"Deleting…":"Delete task"})]})]})})]})}function ks({onCreateWithPreset:t,onCreateBlank:n}){return e.jsxs("div",{className:"flex flex-col items-center pb-8 md:pb-12",children:[e.jsx("h3",{className:"mb-2 text-lg font-medium",children:"No schedules yet"}),e.jsx("p",{className:"text-muted-foreground mb-6 max-w-sm text-center text-sm",children:"Put a skill on a timer and it runs without you."}),e.jsx("div",{className:"w-full max-w-lg",children:e.jsx(Me,{onSelect:t})}),e.jsx(Z,{variant:"ghost",className:"mt-4",onClick:n,children:"New custom schedule"})]})}export{Ss as C,Cs as F,ks as T};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a_ as F,aY as E,a$ as U,b0 as D,b1 as L,b2 as _,r as l,j as e,b3 as f,b4 as p,b5 as j,b6 as g,b7 as k,x as w,b8 as N,b9 as $,ba as B,bb as G,bc as O,bd as P,be as X,bf as V}from"./index-
|
|
1
|
+
import{a_ as F,aY as E,a$ as U,b0 as D,b1 as L,b2 as _,r as l,j as e,b3 as f,b4 as p,b5 as j,b6 as g,b7 as k,x as w,b8 as N,b9 as $,ba as B,bb as G,bc as O,bd as P,be as X,bf as V}from"./index-p3WivF1M.js";import{u as W,f as Y}from"./format-cron-YPhIy57w.js";import{S as q}from"./scroll-area-C7vKp2H4.js";const H=5;function J({status:t}){switch(t){case"running":return e.jsx(w,{size:"xs",className:"text-status-info shrink-0"});case"completed":return e.jsx(X,{className:"text-foreground size-3 shrink-0","aria-hidden":!0});case"failed":return e.jsx(P,{className:"text-destructive size-3 shrink-0","aria-hidden":!0});case"cancelled":return e.jsx(O,{className:"text-muted-foreground size-3 shrink-0","aria-hidden":!0});case"skipped":return e.jsx(G,{className:"text-muted-foreground size-3 shrink-0","aria-hidden":!0});case"needs_attention":return e.jsx(B,{className:"text-destructive size-3 shrink-0","aria-hidden":!0});default:return null}}function K(t){if(t===null)return"";if(t<1e3)return"< 1s";const n=Math.floor(t/1e3);if(n<60)return`${n}s`;const a=Math.floor(n/60),i=n%60;return`${a}m ${i}s`}function Q({run:t,scheduleName:n}){return e.jsx(g,{children:e.jsxs(k,{className:"text-sm",children:[e.jsx(w,{size:"xs",className:"text-status-info shrink-0"}),e.jsx("span",{className:"truncate",children:n}),t.startedAt&&e.jsx("span",{className:"text-muted-foreground/50 ml-auto shrink-0 text-xs",children:N(t.startedAt)})]})})}function Z({schedule:t,onEdit:n}){return e.jsx(g,{children:e.jsxs(k,{onClick:()=>n(t.id),className:"text-sm",children:[e.jsx($,{className:"text-muted-foreground/50 size-3 shrink-0","aria-hidden":!0}),e.jsx("span",{className:"truncate",children:t.name}),t.nextRun&&e.jsx("span",{className:"text-muted-foreground/50 ml-auto shrink-0 text-xs",children:N(t.nextRun)})]})})}function ee({run:t,scheduleName:n}){const a=t.status==="running"&&t.finishedAt?t.error?"failed":"completed":t.status;return e.jsx(g,{children:e.jsxs(k,{className:"text-sm",children:[e.jsx(J,{status:a}),e.jsx("span",{className:"truncate",children:n}),e.jsxs("span",{className:"text-muted-foreground/50 ml-auto flex shrink-0 items-center gap-1.5 text-xs",children:[t.durationMs!==null&&e.jsx("span",{children:K(t.durationMs)}),t.finishedAt&&e.jsx("span",{children:N(t.finishedAt)})]})]})})}function se({available:t,agentId:n}){const a=F(),i=E(s=>s.setTasksAgentFilter),b=E(s=>s.setTasksEditScheduleId),u=t,{data:x=[]}=U(u),{data:I=0}=D(u),{data:R=[]}=L(void 0,u),{data:T=[]}=W(),{openWithTemplate:y}=_(),v=[T[0],T[2]].filter(Boolean),o=l.useMemo(()=>n?x.filter(s=>s.agentId===n):x,[n,x]),d=l.useMemo(()=>{const s=new Map;for(const r of o)s.set(r.id,r.name);return s},[o]),S=l.useMemo(()=>R.filter(s=>d.has(s.scheduleId)),[R,d]),{runningRuns:A,recentRuns:M}=l.useMemo(()=>{const s=[],r=[];for(const c of S)c.finishedAt!=null||c.status!=="running"?r.push(c):s.push(c);return r.sort((c,h)=>(h.finishedAt??h.createdAt).localeCompare(c.finishedAt??c.createdAt)),{runningRuns:s,recentRuns:r.slice(0,H)}},[S]),C=l.useMemo(()=>o.filter(s=>s.enabled&&s.status==="active"&&s.nextRun).sort((s,r)=>(s.nextRun??"").localeCompare(r.nextRun??"")),[o]),m=()=>{n&&(i(n),b(null)),a.open()},z=s=>{b(s),i(null),a.open()};return o.length===0?e.jsxs("div",{className:"flex flex-col gap-3 px-3 py-4",children:[e.jsx("p",{className:"text-muted-foreground/70 text-xs",children:"No schedules yet."}),v.length>0&&e.jsx("div",{className:"space-y-2",children:v.map(s=>e.jsxs("div",{className:"rounded-lg border p-3 text-sm",children:[e.jsx("div",{className:"font-medium",children:s.name}),e.jsx("p",{className:"text-muted-foreground text-xs",children:Y(s.cron)}),e.jsx("button",{type:"button",onClick:()=>{y(s),m()},className:"text-primary mt-2 text-xs hover:underline",children:"+ Use preset"})]},s.id))}),e.jsx("button",{onClick:m,className:"text-muted-foreground hover:text-foreground text-xs transition-colors",children:"Open schedules →"})]}):e.jsx(q,{type:"scroll",className:"h-full",children:e.jsxs("div",{className:"pr-1",children:[A.length>0&&e.jsxs(f,{children:[e.jsxs(p,{className:"text-2xs text-muted-foreground/70 font-medium tracking-wider uppercase",children:["Running",e.jsx("span",{className:"text-muted-foreground/50 ml-auto text-xs font-normal normal-case",children:I})]}),e.jsx(j,{children:A.map(s=>e.jsx(Q,{run:s,scheduleName:d.get(s.scheduleId)??"Unknown"},s.id))})]}),C.length>0&&e.jsxs(f,{children:[e.jsx(p,{className:"text-2xs text-muted-foreground/70 font-medium tracking-wider uppercase",children:"Upcoming"}),e.jsx(j,{children:C.map(s=>e.jsx(Z,{schedule:s,onEdit:z},s.id))})]}),M.length>0&&e.jsxs(f,{children:[e.jsx(p,{className:"text-2xs text-muted-foreground/70 font-medium tracking-wider uppercase",children:"Recent runs"}),e.jsx(j,{children:M.map(s=>e.jsx(ee,{run:s,scheduleName:d.get(s.scheduleId)??"Unknown"},s.id))})]}),e.jsx("div",{className:"px-3 py-2",children:e.jsx("button",{onClick:m,className:"text-muted-foreground hover:text-foreground text-xs transition-colors",children:"Open schedules →"})})]})})}function re({member:t}){var i;const n=V(),a=((i=t.agent)==null?void 0:i.manifestId)??null;return e.jsx("div",{className:"min-h-0 flex-1","data-slot":"profile-tasks",children:e.jsx(se,{available:n,agentId:a})})}export{re as TasksPage};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a1 as v,a3 as N,r as p,j as n,B as r,ct as b,cu as S,cv as w,s as E}from"./index-
|
|
1
|
+
import{a1 as v,a3 as N,r as p,j as n,B as r,ct as b,cu as S,cv as w,s as E}from"./index-p3WivF1M.js";import{u as R,C as k,a as f}from"./ComputerViewer-Dw_VpNjD.js";const A={disabled:"Off",unsupported:"Unavailable",missing:"Not created",provisioning:"Setting up…",stopped:"Stopped",starting:"Starting…",ready:"Ready",stopping:"Stopping…",failed:"Needs attention",uncertain:"Needs attention"};function T({onOpenSession:o}){var x,g;const t=v(),a=N(),c=R(),[i,m]=p.useState(!1),[C,u]=p.useState(!1),[j,l]=p.useState(!1),e=c.data,y=e&&["provisioning","starting","stopping"].includes(e.phase),s=async d=>{m(!0),u(!1);try{const h=await d();h&&a.setQueryData(f,h),await a.invalidateQueries({queryKey:f})}catch{u(!0)}finally{m(!1)}};return n.jsxs("section",{"data-slot":"agent-computer-panel","aria-label":"Agent computer",className:"space-y-4",children:[n.jsxs("div",{className:"flex items-center justify-between gap-3",children:[n.jsx("h3",{className:"text-sm font-medium",children:"Agent computer"}),n.jsx("span",{role:"status",className:"text-muted-foreground text-xs",children:e?A[e.phase]:"Connecting…"})]}),(C||c.isError)&&n.jsx("p",{role:"alert",className:"text-destructive text-sm",children:"Couldn’t reach the computer. Reconnect and try again."}),(e==null?void 0:e.phase)==="unsupported"&&n.jsx("p",{className:"text-muted-foreground text-sm",children:"Requires an Apple Silicon Mac."}),(e==null?void 0:e.phase)==="disabled"&&n.jsx("p",{className:"text-muted-foreground text-sm",children:"Turn on Agent computer in Experiments."}),(e==null?void 0:e.phase)==="missing"&&n.jsx("p",{className:"text-muted-foreground text-sm",children:"Create a separate computer for your agent."}),(e==null?void 0:e.phase)==="provisioning"&&n.jsx("p",{className:"text-muted-foreground text-sm",children:"Downloading and setting up the computer…"}),(e==null?void 0:e.phase)==="stopped"&&n.jsx("p",{className:"text-muted-foreground text-sm",children:"Its files and sign-ins are kept."}),(e==null?void 0:e.phase)==="uncertain"&&n.jsx("p",{role:"alert",className:"text-sm",children:"Couldn’t confirm its state. Reconnect before continuing."}),((x=e==null?void 0:e.error)==null?void 0:x.code)==="cleanup-uncertain"&&e.phase!=="uncertain"&&n.jsx("p",{role:"alert",className:"text-sm",children:"Couldn’t confirm its state. Reconnect before continuing."}),(e==null?void 0:e.phase)==="failed"&&n.jsx("p",{role:"alert",className:"text-sm",children:"Couldn’t set up the computer. Try again."}),((g=e==null?void 0:e.error)==null?void 0:g.code)==="sign-in-required"&&n.jsx("p",{className:"text-sm",children:"Sign in before chatting."}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[(e==null?void 0:e.phase)==="missing"&&n.jsx(r,{disabled:i,onClick:()=>void s(()=>t.createComputer()),children:"Create computer"}),(e==null?void 0:e.phase)==="failed"&&n.jsx(r,{disabled:i,onClick:()=>void s(()=>t.createComputer()),children:"Try again"}),(e==null?void 0:e.phase)==="stopped"&&n.jsx(r,{disabled:i,onClick:()=>void s(()=>t.startComputer()),children:"Start"}),(e==null?void 0:e.ready)&&e.phase==="ready"&&n.jsxs(n.Fragment,{children:[n.jsx(r,{disabled:i,onClick:()=>void s(async()=>{o(await t.createComputerSession())}),children:"Chat"}),n.jsx(r,{variant:"outline",disabled:i,onClick:()=>void s(async()=>{const d=await t.signInComputer();return l(!0),d}),children:"Sign in"}),n.jsx(r,{variant:"outline",onClick:()=>l(!0),children:"View"})]}),e&&["ready","provisioning","starting","failed","uncertain"].includes(e.phase)&&n.jsx(r,{variant:"outline",disabled:i,onClick:()=>void s(()=>t.stopComputer()),children:"Stop"}),!y&&n.jsx(r,{variant:"ghost",disabled:i,onClick:()=>void s(async()=>{await c.refetch()}),children:"Reconnect"})]}),j&&(e==null?void 0:e.ready)&&e.phase==="ready"&&n.jsx(k,{generation:e.generation,onClose:()=>l(!1)},e.generation)]})}function Q(){const{enabled:o}=b("computers.enabled"),t=S();return o?n.jsx("div",{"data-slot":"team-computer-entry",className:"px-4 py-4 sm:px-6",children:n.jsx(T,{onOpenSession:a=>{w(a.id,{cwd:a.cwd,runtime:a.runtime,draft:!1}),t(E({session:a.id,runtime:a.runtime}))}})}):null}export{T as A,Q as T};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a1 as G,a2 as Le,a4 as ae,a3 as pe,en as $e,r as o,j as n,bg as $,bh as K,B as f,gP as Ke,it as Ue,f as fe,iu as xe,gs as X,ba as Ve,eo as D,I as W,eh as Be,ei as qe,ej as Ye,ek as He,el as We,h$ as de,cx as Qe,fC as Ge,C as ne,G as ue,W as re,dl as je,dm as Ne,_ as Ze,dn as ve,cy as _,eq as Je,iv as me,x as se,g1 as Xe,g2 as en,g3 as nn,g4 as sn,g5 as ee,g7 as tn,$ as an,iw as rn,y as on,e as te,hI as cn,b as ln}from"./index-
|
|
1
|
+
import{a1 as G,a2 as Le,a4 as ae,a3 as pe,en as $e,r as o,j as n,bg as $,bh as K,B as f,gP as Ke,it as Ue,f as fe,iu as xe,gs as X,ba as Ve,eo as D,I as W,eh as Be,ei as qe,ej as Ye,ek as He,el as We,h$ as de,cx as Qe,fC as Ge,C as ne,G as ue,W as re,dl as je,dm as Ne,_ as Ze,dn as ve,cy as _,eq as Je,iv as me,x as se,g1 as Xe,g2 as en,g3 as nn,g4 as sn,g5 as ee,g7 as tn,$ as an,iw as rn,y as on,e as te,hI as cn,b as ln}from"./index-p3WivF1M.js";import"./relay-trace-schemas-CNDSmhcJ.js";import{u as Se,M as be}from"./McpSigninBody-BO0OkvOw.js";import{R as dn}from"./rotate-cw-Po-L3HFe.js";import"./form-CA_eiUg-.js";function un(e,s){const t=G();return Le({queryKey:["mcp-config",e,s??null],queryFn:()=>t.getMcpConfig(e,{runtime:s??void 0}),enabled:!!e,staleTime:3e4})}function ye(e,s){e.invalidateQueries({queryKey:$e.mcpServers(s)}),e.invalidateQueries({queryKey:["mcp-config"]})}function Ce(e){const s=G(),t=pe();return ae({mutationFn:async({input:i,approval:r})=>r?(await s.grantApproval(r.approvalId),e(s,i,r.approvalToken)):e(s,i),onSuccess:(i,{input:r})=>{i.status==="ok"&&ye(t,r.agentId)}})}function mn(){return Ce((e,s,t)=>e.addAgentMcpServer(s,t?{approvalToken:t}:void 0))}function hn(){return Ce((e,s,t)=>e.importAgentMcpServer(s,t?{approvalToken:t}:void 0))}function ie(e){const s=G(),t=pe();return ae({mutationFn:({agentId:i,name:r})=>e(s,i,r),onSuccess:(i,{agentId:r})=>ye(t,r)})}function gn(){return ie((e,s,t)=>e.removeAgentMcpServer(s,t))}function pn(){return ie((e,s,t)=>e.enableAgentMcpServer(s,t))}function fn(){return ie((e,s,t)=>e.disableAgentMcpServer(s,t))}function xn(){const e=G();return ae({mutationFn:({agentId:s,name:t})=>e.testAgentMcpServer(s,t)})}function jn({agentId:e,serverName:s,onDone:t}){const i=Se(e,s),{start:r}=i,a=o.useRef(!1);return o.useEffect(()=>{a.current||(a.current=!0,r())},[r]),n.jsx($,{children:n.jsxs(K,{className:"space-y-2",children:[n.jsxs("p",{className:"text-sm font-medium",children:["Sign in to ",s]}),n.jsx("p",{className:"text-muted-foreground text-xs",children:"Sign in so your agent can use this server."}),n.jsx(be,{flow:i,serverName:s,failedActions:n.jsxs(n.Fragment,{children:[n.jsx(f,{variant:"secondary",size:"sm",onClick:()=>i.start(),className:"focus-visible:ring-2",children:"Try again"}),n.jsx(f,{variant:"ghost",size:"sm",onClick:t,className:"focus-visible:ring-2",children:"Later"})]}),connectedActions:n.jsx(f,{variant:"ghost",size:"sm",onClick:t,className:"focus-visible:ring-2",children:"Done"})}),i.state.step!=="failed"&&i.state.step!=="connected"&&n.jsx(f,{variant:"ghost",size:"sm",onClick:t,className:"focus-visible:ring-2",children:"Later"})]})})}const Nn=["stdio","http","sse"],vn=/^[a-zA-Z0-9_-]+$/;function he(e){const s={};for(const t of e.split(`
|
|
2
2
|
`)){const i=t.trim();if(!i)continue;const r=i.indexOf("=");if(r===-1)continue;const a=i.slice(0,r).trim();a&&(s[a]=i.slice(r+1).trim())}return s}function ge(e){return e.trim().length?e.trim().split(/\s+/):[]}function Sn(e,s){if(e.status!=="ok")return!1;const t=e.servers.find(r=>r.name===s),i=t==null?void 0:t.connection;return i!==void 0&&"authKind"in i&&i.authKind==="oauth2"}function bn({agentId:e,agentLabel:s,supportedTransports:t,onAdded:i,oauthDetectedFor:r=null}){const a=mn(),[l,g]=o.useState(!1),[m,S]=o.useState(""),[p,h]=o.useState(t[0]??"stdio"),c=t.includes(p)?p:t[0]??"stdio",[b,C]=o.useState(""),[N,k]=o.useState(""),[x,z]=o.useState(""),[y,M]=o.useState(""),[R,A]=o.useState(""),[O,P]=o.useState(null),[w,I]=o.useState(null),[F,V]=o.useState(!1),U=o.useCallback(d=>{const v=Ke(d);V(v!==null),I(v??(d instanceof Error?d.message:"Couldn’t add the server."))},[]),[B,u]=o.useState(null),[j,T]=o.useState(null),E=vn.test(m)&&m.length<=64,ze=c==="stdio"?b.trim().length>0:y.trim().length>0,Z=Ue(),Re=E&&ze&&!a.isPending&&!Z,ce=o.useCallback(()=>c==="stdio"?{transport:"stdio",command:b.trim(),args:ge(N),env:he(x)}:{transport:c,url:y.trim(),headers:he(R)},[c,b,N,x,y,R]),q=o.useCallback(()=>({agentId:e,name:m.trim(),connection:ce()}),[e,m,ce]),J=o.useCallback(()=>{g(!1),P(null),I(null),S(""),h(t[0]??"stdio"),C(""),k(""),z(""),M(""),A("")},[t]),le=o.useCallback(d=>{i({name:d.name,transport:d.connection.transport}),J()},[i,J]),Y=o.useCallback((d,v)=>{const _e=Sn(d,v.name);le(v),_e&&u(v.name)},[le]),Pe=o.useCallback(async()=>{I(null);const d=q();try{const v=await a.mutateAsync({input:d});v.status==="approval_required"?P(v.approval):Y(v,d)}catch(v){U(v)}},[a,q,Y,U]),Ie=o.useCallback(async()=>{if(!O)return;I(null);const d=q();try{const v=await a.mutateAsync({input:d,approval:O});v.status==="ok"?Y(v,d):(V(!1),I("The server still needs approval. Try again."))}catch(v){U(v)}},[a,q,O,Y,U]),H=B??(r&&r!==j?r:null),Fe=o.useCallback(()=>{T(H),u(null)},[H]),De=o.useMemo(()=>[b.trim(),...ge(N)].filter(Boolean).join(" "),[b,N]);return H?n.jsx(jn,{agentId:e,serverName:H,onDone:Fe}):l?O?n.jsx($,{children:n.jsxs(K,{className:"space-y-3",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(xe,{className:"text-status-warning-dot mt-0.5 size-4 shrink-0"}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("p",{className:"text-sm font-medium",children:["Add this server to ",s,"?"]}),n.jsx("p",{className:"text-muted-foreground text-xs",children:c==="stdio"?"Runs on this computer when a chat starts.":"The agent connects here when a chat starts."})]})]}),n.jsx("pre",{className:"bg-muted text-foreground overflow-x-auto rounded-md px-3 py-2 font-mono text-xs",children:c==="stdio"?De:y.trim()}),w&&(F?n.jsx(X,{tone:"info",role:"status",className:"text-xs",children:w}):n.jsx("p",{className:"text-destructive text-xs",children:w})),n.jsxs("div",{className:"flex justify-end gap-2",children:[n.jsx(f,{variant:"ghost",size:"sm",onClick:()=>P(null),disabled:a.isPending,className:"focus-visible:ring-2",children:"Back"}),n.jsx(f,{size:"sm",onClick:Ie,disabled:a.isPending,className:"focus-visible:ring-2",children:a.isPending?"Adding…":"Add server"})]})]})}):n.jsx($,{children:n.jsxs(K,{className:"space-y-3",children:[Z&&n.jsx(X,{tone:"info",role:"status",className:"text-xs",children:n.jsxs("span",{className:"flex items-center gap-1.5",children:[n.jsx(Ve,{className:"size-3.5 shrink-0","aria-hidden":!0}),"Adding a server only works at this computer. You’re on Wi-Fi."]})}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(D,{htmlFor:"mcp-name",children:"Name"}),n.jsx(W,{id:"mcp-name",value:m,onChange:d=>S(d.target.value),placeholder:"my-server","aria-invalid":m.length>0&&!E}),m.length>0&&!E&&n.jsx("p",{className:"text-destructive text-xs",children:"Letters, numbers, dashes, underscores only."})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(D,{htmlFor:"mcp-transport",children:"Transport"}),n.jsxs(Be,{value:c,onValueChange:d=>h(d),children:[n.jsx(qe,{id:"mcp-transport",className:"w-full",children:n.jsx(Ye,{})}),n.jsx(He,{children:t.map(d=>n.jsx(We,{value:d,children:d},d))})]})]}),c==="stdio"?n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(D,{htmlFor:"mcp-command",children:"Command"}),n.jsx(W,{id:"mcp-command",value:b,onChange:d=>C(d.target.value),placeholder:"npx",className:"font-mono"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(D,{htmlFor:"mcp-args",children:"Arguments"}),n.jsx(W,{id:"mcp-args",value:N,onChange:d=>k(d.target.value),placeholder:"-y @modelcontextprotocol/server-filesystem",className:"font-mono"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(D,{htmlFor:"mcp-env",children:"Environment (KEY=VALUE per line)"}),n.jsx(de,{id:"mcp-env",value:x,onChange:d=>z(d.target.value),placeholder:"API_KEY=…",rows:2,className:"font-mono text-xs"})]})]}):n.jsxs(n.Fragment,{children:[n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(D,{htmlFor:"mcp-url",children:"URL"}),n.jsx(W,{id:"mcp-url",value:y,onChange:d=>M(d.target.value),placeholder:"https://example.com/mcp",className:"font-mono"})]}),n.jsxs("div",{className:"space-y-1.5",children:[n.jsx(D,{htmlFor:"mcp-headers",children:"Headers (KEY=VALUE per line)"}),n.jsx(de,{id:"mcp-headers",value:R,onChange:d=>A(d.target.value),placeholder:"Authorization=Bearer …",rows:2,className:"font-mono text-xs"})]})]}),w&&!(Z&&F)&&(F?n.jsx(X,{tone:"info",role:"status",className:"text-xs",children:w}):n.jsx("p",{className:"text-destructive text-xs",children:w})),n.jsx(Qe,{}),n.jsxs("div",{className:"flex justify-end gap-2",children:[n.jsx(f,{variant:"ghost",size:"sm",onClick:J,className:"focus-visible:ring-2",children:"Cancel"}),n.jsx(f,{size:"sm",onClick:Pe,disabled:!Re,className:"focus-visible:ring-2",children:"Continue"})]})]})}):n.jsxs(f,{variant:"outline",size:"sm",onClick:()=>g(!0),className:"focus-visible:ring-2",children:[n.jsx(fe,{className:"size-4"}),"Add server"]})}const yn={connected:"connected","needs-auth":"needs-sign-in",pending:"connecting",disabled:"off"},Cn=["validation","invalid config","invalid configuration","missing required","command not found","enoent"];function oe(e){if(!e)return"cant-reach";const s=e.toLowerCase();return Cn.some(t=>s.includes(t))?"setup-problem":"cant-reach"}function we(e){return e.transport==="stdio"||e.authKind==="oauth2"?!1:Object.keys(e.headers).some(s=>s.toLowerCase()==="authorization")}function wn(e){const{connection:s,authStatus:t}=e;return s.transport!=="stdio"&&s.authKind==="oauth2"?!0:t!==void 0}function ke(e){const{enabled:s,testedOk:t,signedInNow:i,runtimeStatus:r,runtimeError:a,authStatus:l,ownKey:g}=e;return s?t?"connected":i?"signed-in":r==="failed"?oe(a):l==="connected"&&r==="needs-auth"?"signed-in":l==="needs-auth"&&(r==="connected"||r==="pending")?"needs-sign-in":r?yn[r]:l==="connected"?"signed-in":l==="needs-auth"?"needs-sign-in":g?"uses-your-key":"not-checked":"off"}function kn(e){const{statusKey:s,testResult:t,signedInNow:i}=e;return s==="off"||i?!1:(t==null?void 0:t.needsAuth)===!0?!0:s==="needs-sign-in"}function An(e){const{stamped:s,signedInNow:t,authStatus:i,rosterUpdatedAt:r}=e;if(!s)return;const{result:a}=s;if(!(t&&a.needsAuth===!0)&&!(s.at<=r&&(i==="needs-auth"&&a.ok||i==="connected"&&a.needsAuth===!0)))return a}function Tn(e){const{status:s,probe:t}=e;return s==="off"||!t||t.ok?s:t.needsAuth===!0?"needs-sign-in":oe(t.error)}const Q={attention:0,working:1,elsewhere:2,off:3};function Mn(e){return e==="off"?Q.off:e==="needs-sign-in"||e==="cant-reach"||e==="setup-problem"?Q.attention:Q.working}function On(e){const{managed:s,live:t,discovered:i}=e;return[...s.map(a=>{var l,g;return{name:a.name,band:Mn(ke({enabled:a.enabled,testedOk:!1,signedInNow:!1,runtimeStatus:(l=t.get(a.name))==null?void 0:l.status,runtimeError:(g=t.get(a.name))==null?void 0:g.error,authStatus:a.authStatus,ownKey:we(a.connection)}))}}),...i.map(a=>({name:a.name,band:Q.elsewhere}))].map((a,l)=>({entry:a,index:l})).sort((a,l)=>a.entry.band-l.entry.band||a.index-l.index).map(({entry:a})=>a.name)}function En(e){const{frozen:s,present:t}=e,i=new Set(t),r=new Set(s);return{ordered:s.filter(a=>i.has(a)),added:t.filter(a=>!r.has(a))}}function zn(){const e=Ge(null);return({bothSettled:s,managed:t,live:i,discovered:r,present:a})=>{e.read()===null&&s&&a.length>0&&e.write(On({managed:t,live:i,discovered:r}));const{ordered:l,added:g}=En({frozen:e.read()??[],present:a});return g.length>0&&e.read()!==null&&e.write([...l,...g]),[...l,...g]}}const Ae={"needs-sign-in":{label:"Needs sign-in",tooltip:"Sign in to use it.",tone:"attention"},"signing-in":{label:"Signing in…",tooltip:"Finish in the new tab.",tone:"attention"},connected:{label:"Connected",tooltip:"It answered. Its tools are ready.",tone:"calm"},"signed-in":{label:"Signed in",tooltip:"Signed in, not tested yet.",tone:"calm"},"uses-your-key":{label:"Uses your key",tooltip:"Uses a key you added.",tone:"calm"},"cant-reach":{label:"Can’t reach",tooltip:"No answer. See Details.",tone:"error"},"setup-problem":{label:"Setup problem",tooltip:"Couldn’t start. See Details.",tone:"error"},connecting:{label:"Connecting…",tooltip:"Connecting to this server.",tone:"calm"},"not-checked":{label:"Not checked yet",tooltip:"Nothing has checked it yet.",tone:"calm"},off:{label:"Off",tooltip:"Hidden from the agent.",tone:"calm"}},Rn={"needs-sign-in":"sign-in","signing-in":"none",connected:"none","signed-in":"test","uses-your-key":"test","cant-reach":"try-again","setup-problem":"try-again",connecting:"none","not-checked":"test",off:"none"};function Pn(e){return Rn[e]}function In({toolCount:e,justSignedIn:s}){const t=s?"Signed in just now. ":"";return e===null?`${t||"This server answered. "}Its tools are available.`:`${t}${e} tool${e===1?"":"s"} available.`}function Fn(e,s){switch(e){case"needs-sign-in":return`Sign in to ${s.displayName} to use its tools.`;case"signing-in":return null;case"connected":return In(s);case"signed-in":return s.justSignedIn?"Signed in just now. Test to check it answers.":"Signed in. Test to check it answers.";case"uses-your-key":return"You added an access key when setting this up.";case"cant-reach":return"This server didn’t answer. It may be down.";case"setup-problem":return"This server’s setup has a problem.";case"connecting":return"Connecting to this server.";case"not-checked":return"Nothing has checked this server yet.";case"off":return"Turned off. The agent doesn’t see this server."}}function Dn(e){const{connection:s,authStatus:t,clientOrigin:i}=e;return s.transport==="stdio"?"None. This server doesn’t need one.":s.authKind==="oauth2"?i==="manual"?`Your own app credentials, ${t==="connected"?"signed in, renews automatically":"not signed in yet"}. DorkOS holds the key, not the agent.`:t==="connected"?"Signed in, and it renews automatically. DorkOS holds the key, not the agent.":"DorkOS will hold the key, not the agent.":Object.keys(s.headers).some(a=>a.toLowerCase()==="authorization")?"Access key: you added a key when setting this up.":t===void 0?"Nothing has checked this yet.":"None. This server doesn’t need one."}function _n(e){if(e.transport==="stdio")return`Runs \`${e.command}\` on this computer`;const s=Ln(e.url);return s?`${s} (web service)`:`${e.url} (web service)`}function Ln(e){try{return new URL(e).host}catch{return null}}const $n={agent:"Added to this agent through DorkOS",project:"From this project’s config files",plugin:"Comes with a plugin",computer:"From your computer-wide config"},Kn={agent:"Added to this agent through DorkOS.",project:"From this project’s config. Add it to manage it here.",plugin:"Comes with a plugin. Add it to manage it here.",computer:"From your computer-wide config. Add it to manage it here."},Un=[{runtime:"claude-code",pattern:/^plugin:([^:]+):(.+)$/,read:e=>({pluginName:e[1],displayName:e[2]})},{runtime:"claude-code",pattern:/^plugin:(.+)$/,read:e=>({pluginName:e[1],displayName:e[1]})}];function Te(e){for(const s of Un){const t=e.match(s.pattern);if(!t)continue;const{displayName:i,pluginName:r}=s.read(t);if(!(!i||!r))return{displayName:i,pluginName:r,rawName:e}}return{displayName:e,pluginName:null,rawName:e}}function Vn(e,s){return s.pluginName?"plugin":e.scope==="project"||e.scope==="local"?"project":e.scope==="user"?"computer":null}const Bn="Loaded from outside DorkOS. Add it to manage it here.";function Me(e,s){return e==="plugin"&&s?`Comes with the ${s} plugin`:$n[e]}function qn(e,s){return e===null?Bn:e==="plugin"&&s?`Comes with the ${s} plugin. Add it to manage it here.`:Kn[e]}const Yn=re("border-border/60 relative overflow-hidden rounded-md border px-3 py-2.5 transition-colors",{variants:{managed:{true:"bg-card",false:"bg-muted/30"},dimmed:{true:"opacity-65",false:""}},defaultVariants:{managed:!0,dimmed:!1}}),Hn=re("pointer-events-none absolute inset-y-0 left-0 w-0.5",{variants:{tone:{calm:"hidden",attention:"bg-status-warning",error:"bg-status-error"}},defaultVariants:{tone:"calm"}}),Wn=re("shrink-0 rounded-full px-2 py-0.5 text-2xs leading-4 font-medium whitespace-nowrap",{variants:{chip:{success:"bg-status-success-bg text-status-success-fg",info:"bg-status-info-bg text-status-info-fg",warning:"bg-status-warning-bg text-status-warning-fg",error:"bg-status-error-bg text-status-error-fg",neutral:"bg-muted text-muted-foreground"}},defaultVariants:{chip:"neutral"}}),Qn={connected:"success","signed-in":"info","needs-sign-in":"warning","signing-in":"warning","cant-reach":"error","setup-problem":"error","uses-your-key":"neutral",connecting:"neutral","not-checked":"neutral",off:"neutral"};function Gn({status:e}){const s=Ae[e];return n.jsxs(je,{children:[n.jsx(Ne,{asChild:!0,children:n.jsx("span",{className:Wn({chip:Qn[e]}),children:s.label})}),n.jsx(ve,{children:s.tooltip})]})}function Zn({scope:e,pluginName:s}){return n.jsxs(je,{children:[n.jsx(Ne,{asChild:!0,children:n.jsx(Ze,{size:"xs",tone:"neutral",variant:"secondary",className:"shrink-0 font-normal",children:e})}),n.jsx(ve,{children:Me(e,s)})]})}function Oe({displayName:e,rawName:s,scope:t,pluginName:i,status:r,sentence:a,managed:l,toggle:g,actions:m,children:S,details:p,defaultDetailsOpen:h=!1}){const[c,b]=o.useState(h),C=o.useId(),N=Ae[r].tone;return n.jsxs("div",{"data-mcp-server":s,className:ue(Yn({managed:l,dimmed:r==="off"}),"mb-2 last:mb-0"),children:[n.jsx("span",{className:Hn({tone:N}),"aria-hidden":!0}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("span",{className:"min-w-0 flex-1 truncate text-sm font-medium",children:e}),t&&n.jsx(Zn,{scope:t,pluginName:i}),n.jsx(Gn,{status:r}),g]}),a&&n.jsx("p",{className:"text-muted-foreground mt-1 text-xs leading-relaxed",children:a}),S,m&&n.jsx("div",{className:"mt-2 flex items-center gap-1",children:m}),p&&n.jsxs(n.Fragment,{children:[n.jsxs("button",{type:"button",onClick:()=>b(k=>!k),"aria-expanded":c,"aria-controls":C,className:"text-muted-foreground hover:text-foreground mt-2 flex items-center gap-1 text-xs focus-visible:ring-2",children:[n.jsx(ne,{className:ue("size-3 transition-transform",c&&"rotate-90"),"aria-hidden":!0}),"Details"]}),c&&n.jsxs("div",{id:C,children:[p,n.jsxs("button",{type:"button",onClick:()=>b(!1),className:"text-muted-foreground hover:text-foreground mt-2 flex items-center gap-1 text-xs focus-visible:ring-2",children:[n.jsx(ne,{className:"size-3 -rotate-90","aria-hidden":!0}),"Collapse details"]})]})]})]})}const Jn=3,L="text-muted-foreground/70";function Xn({tools:e}){const[s,t]=o.useState(!1),i=s?e:e.slice(0,Jn),r=e.length-i.length;return n.jsxs("div",{className:"mt-1.5",children:[i.map(a=>n.jsxs("div",{className:"border-border/40 flex items-baseline gap-2 border-b py-1 last:border-b-0",children:[n.jsx("code",{className:"text-foreground text-2xs shrink-0 font-mono",children:a.name}),a.description&&n.jsx("span",{className:"text-muted-foreground text-2xs truncate",children:a.description})]},a.name)),r>0&&n.jsxs("button",{type:"button",onClick:()=>t(!0),className:"text-muted-foreground hover:text-foreground mt-1 flex items-center gap-1 text-xs focus-visible:ring-2",children:[n.jsx(ne,{className:"size-3","aria-hidden":!0}),"Show ",r," more"]})]})}function es(e){const{scope:s,pluginName:t,connection:i}=e;return s==="plugin"&&t?`Comes with the ${t} plugin`:i?_n(i):s?Me(s,t):null}function Ee({connection:e,authStatus:s,authClientOrigin:t,scope:i,pluginName:r,rawName:a,displayName:l,toolCount:g,tools:m,serverInfo:S,alsoUsedBy:p,error:h}){const c=es({scope:i,pluginName:r,connection:e});return n.jsxs("div",{className:"border-border/60 text-muted-foreground mt-2 space-y-1 border-t pt-2 text-xs leading-relaxed",children:[e&&n.jsx(_,{label:"Sign-in",align:"start",wrap:!0,labelClassName:L,children:n.jsxs("span",{className:"inline-flex items-start gap-1.5",children:[n.jsx(Je,{className:"mt-0.5 size-3 shrink-0","aria-hidden":!0}),Dn({connection:e,authStatus:s,clientOrigin:t})]})}),c&&n.jsx(_,{label:"Source",align:"start",wrap:!0,labelClassName:L,children:c}),a!==l&&n.jsx(_,{label:"Raw id",align:"start",wrap:!0,labelClassName:L,children:n.jsx("code",{className:"text-2xs font-mono",children:a})}),S&&n.jsx(_,{label:"Server",align:"start",wrap:!0,labelClassName:L,children:S}),p&&n.jsx(_,{label:"Also used by",align:"start",wrap:!0,labelClassName:L,children:p}),typeof g=="number"&&n.jsx(_,{label:"Tools",align:"start",labelClassName:L,children:g}),m&&m.length>0&&n.jsx(Xn,{tools:m}),h&&n.jsx(_,{label:"Error",align:"start",wrap:!0,labelClassName:L,children:n.jsx("code",{className:"text-2xs font-mono break-all",children:h})})]})}function ns({flow:e,serverName:s}){return n.jsxs(n.Fragment,{children:[n.jsx(be,{flow:e,serverName:s,failedActions:n.jsxs(n.Fragment,{children:[n.jsx(f,{variant:"secondary",size:"sm",onClick:()=>e.start(),className:"focus-visible:ring-2",children:"Try again"}),n.jsx(f,{variant:"ghost",size:"sm",onClick:()=>e.reset(),className:"focus-visible:ring-2",children:"Dismiss"})]}),connectedActions:n.jsx(f,{variant:"ghost",size:"sm",onClick:()=>e.reset(),className:"focus-visible:ring-2",children:"Dismiss"})}),(e.state.step==="disclosure"||e.state.step==="waiting")&&n.jsx("div",{className:"mt-2",children:n.jsx(f,{variant:"ghost",size:"sm",onClick:()=>e.reset(),"aria-label":`Cancel signing in to ${s}`,className:"focus-visible:ring-2",children:"Cancel"})})]})}function ss({server:e,agentId:s,live:t,testResult:i,rosterUpdatedAt:r,testing:a,busy:l,onToggle:g,onTest:m,onRemove:S}){const p=Se(s,e.name),h=p.state.step==="connected",c=An({stamped:i,signedInNow:h,authStatus:e.authStatus,rosterUpdatedAt:r}),b=we(e.connection),C=ke({enabled:e.enabled,testedOk:(c==null?void 0:c.ok)===!0,signedInNow:h,runtimeStatus:t==null?void 0:t.status,runtimeError:t==null?void 0:t.error,authStatus:e.authStatus,ownKey:b}),N=p.state.step==="starting",k=p.state.step==="disclosure"||p.state.step==="waiting"||N,x=k?"signing-in":C,z=kn({statusKey:C,testResult:c,signedInNow:h})&&(p.state.step==="idle"||N),y=Te(e.name),M=c!=null&&c.ok?c.toolCount??null:p.state.toolCount,R=k?x:Tn({status:x,probe:c}),A=Fn(R,{displayName:y.displayName,toolCount:M,justSignedIn:h}),O=k?"none":Pn(R),P=wn({connection:e.connection,authStatus:e.authStatus});return n.jsx(Oe,{displayName:y.displayName,rawName:e.name,scope:"agent",pluginName:y.pluginName,status:x,sentence:A,managed:!0,toggle:n.jsx(an,{checked:e.enabled,onCheckedChange:w=>g(e.name,w),disabled:l,"aria-label":`Enable ${e.name}`}),actions:n.jsxs(n.Fragment,{children:[z&&n.jsxs(f,{variant:"default",size:"sm",onClick:()=>p.start(),disabled:l||N,"aria-label":`Sign in to ${e.name}`,className:"gap-1.5 focus-visible:ring-2",children:[n.jsx(me,{className:"size-3.5","aria-hidden":!0}),"Sign in"]}),!z&&O==="try-again"&&n.jsxs(f,{variant:"outline",size:"sm",onClick:()=>m(e.name),disabled:a||l,"aria-label":`Try ${e.name} again`,className:"gap-1.5 focus-visible:ring-2",children:[a?n.jsx(se,{size:"xs"}):null,"Try again"]}),!z&&O==="test"&&n.jsx(f,{variant:"outline",size:"sm",onClick:()=>m(e.name),disabled:a||l,className:"focus-visible:ring-2",children:a?n.jsx(se,{size:"xs"}):"Test"}),n.jsxs(Xe,{children:[n.jsx(en,{asChild:!0,children:n.jsx(f,{variant:"ghost",size:"sm","aria-label":`More actions for ${e.name}`,className:"ml-auto focus-visible:ring-2",children:n.jsx(nn,{className:"size-4","aria-hidden":!0})})}),n.jsxs(sn,{align:"end",children:[n.jsxs(ee,{onSelect:()=>m(e.name),disabled:a||l,children:[n.jsx(dn,{className:"size-3.5","aria-hidden":!0}),"Test"]}),P&&n.jsxs(ee,{onSelect:()=>p.start(),disabled:l,children:[n.jsx(me,{className:"size-3.5","aria-hidden":!0}),"Sign in again"]}),n.jsx(tn,{}),n.jsx(ee,{variant:"destructive",onSelect:()=>S(e.name),disabled:l,children:"Remove"})]})]})]}),details:n.jsx(Ee,{connection:e.connection,authStatus:e.authStatus,authClientOrigin:e.authClientOrigin,scope:"agent",pluginName:y.pluginName,rawName:y.rawName,displayName:y.displayName,toolCount:M,error:(c==null?void 0:c.ok)===!1?c.error:t==null?void 0:t.error}),children:n.jsx(ns,{flow:p,serverName:y.displayName})})}function ts(e){switch(e.status){case"connected":return"connected";case"failed":return oe(e.error);case"needs-auth":return"needs-sign-in";case"pending":return"connecting";case"disabled":return"off";default:return"not-checked"}}function as(e){const{displayName:s,scope:t,pluginName:i}=e,r=rs(t,i);return`${s} ${r}. Manage it here to enable, disable, or sign in from DorkOS.`}function rs(e,s){return e==="plugin"&&s?`comes with the ${s} plugin`:e==="project"?"comes from this project’s own config":e==="computer"?"comes from your computer-wide config":"is loaded from outside DorkOS"}function is({entry:e,agentId:s,agentLabel:t,canImport:i}){const r=hn(),[a,l]=o.useState(null),[g,m]=o.useState(null),S=o.useCallback(async()=>{m(null);try{const x=await r.mutateAsync({input:{agentId:s,name:e.name}});x.status==="approval_required"&&l(x.approval)}catch(x){m(x instanceof Error?x.message:"Couldn’t add the server.")}},[r,s,e.name]),p=o.useCallback(async()=>{if(a){m(null);try{(await r.mutateAsync({input:{agentId:s,name:e.name},approval:a})).status!=="ok"&&m("Adding it still needs approval. Try again.")}catch(x){m(x instanceof Error?x.message:"Couldn’t add the server.")}}},[r,s,e.name,a]),h=Te(e.name),c=Vn(e,h),b=c!==null,C=h.rawName!==h.displayName,N=e.error!==void 0,k=b||C||N;return a?n.jsxs("div",{className:"border-border/60 mb-2 space-y-3 rounded-md border p-3 last:mb-0",children:[n.jsxs("div",{className:"flex items-start gap-2",children:[n.jsx(xe,{className:"text-status-warning mt-0.5 size-4 shrink-0","aria-hidden":!0}),n.jsxs("div",{className:"space-y-1",children:[n.jsxs("p",{className:"text-sm font-medium",children:["Add “",h.displayName,"” to ",t,"?"]}),n.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:as({displayName:h.displayName,scope:c,pluginName:h.pluginName})})]})]}),g&&n.jsx("p",{className:"text-destructive text-xs",children:g}),n.jsxs("div",{className:"flex justify-end gap-2",children:[n.jsx(f,{variant:"ghost",size:"sm",onClick:()=>l(null),disabled:r.isPending,className:"focus-visible:ring-2",children:"Cancel"}),n.jsx(f,{size:"sm",onClick:p,disabled:r.isPending,className:"focus-visible:ring-2",children:r.isPending?"Adding…":"Add to agent"})]})]}):n.jsx(Oe,{displayName:h.displayName,rawName:e.name,scope:c,pluginName:h.pluginName,status:ts(e),sentence:qn(c,h.pluginName),managed:!1,actions:i?n.jsxs(n.Fragment,{children:[n.jsxs(f,{variant:"outline",size:"sm",onClick:S,disabled:r.isPending,"aria-label":`Add ${e.name} to agent`,className:"gap-1.5 focus-visible:ring-2",children:[r.isPending?n.jsx(se,{size:"xs"}):n.jsx(fe,{className:"size-(--size-icon-xs)","aria-hidden":!0}),"Add to agent"]}),g&&n.jsx("p",{className:"text-destructive text-xs",children:g})]}):void 0,details:k?n.jsx(Ee,{scope:c,pluginName:h.pluginName,rawName:h.rawName,displayName:h.displayName,error:e.error}):void 0})}const os={codex:["stdio","http"],opencode:["stdio","http"]};function cs(e){return os[e]??Nn}function ls(){const{open:e}=cn();return n.jsxs("p",{className:"text-muted-foreground text-xs leading-relaxed",children:["Want other apps to use DorkOS’s tools?"," ",n.jsx(f,{variant:"link",size:"sm",className:"h-auto p-0 text-xs",onClick:()=>e("tools","external-mcp"),children:"See Settings → Advanced → Tools"})]})}function ds({agent:e,projectPath:s}){var B;const t=rn(e.id),i=un(s,e.runtime),r=i.data,a=on(e.runtime),l=(a==null?void 0:a.supportsManagedMcpServers)??!0,g=pn(),m=fn(),S=gn(),p=xn(),[h,c]=o.useState({}),[b,C]=o.useState(null),[N,k]=o.useState(null),x=zn(),z=o.useCallback((u,j)=>{(j?g:m).mutate({agentId:e.id,name:u})},[e.id,g,m]),y=o.useCallback(u=>{S.mutate({agentId:e.id,name:u}),c(j=>{const T={...j};return delete T[u],T})},[e.id,S]),M=o.useCallback(async u=>{C(u);try{const j=await p.mutateAsync({agentId:e.id,name:u});c(T=>({...T,[u]:{result:j,at:Date.now()}}))}finally{C(null)}},[e.id,p]),R=o.useCallback(({name:u,transport:j})=>{k(u),j!=="stdio"&&M(u).catch(()=>{})},[M]),A=t.data??[],O=new Set(A.map(u=>u.name)),P=new Map(((r==null?void 0:r.servers)??[]).map(u=>[u.name,u])),w=((r==null?void 0:r.servers)??[]).filter(u=>!O.has(u.name)),I=g.isPending||m.isPending||S.isPending,F=new Map;A.forEach((u,j)=>F.set(u.name,{kind:"managed",index:j})),w.forEach((u,j)=>F.set(u.name,{kind:"discovered",index:j}));const V=x({bothSettled:!t.isPending&&!i.isPending,managed:A,live:P,discovered:w,present:[...A.map(u=>u.name),...w.map(u=>u.name)]});function U(u){const j=F.get(u);if(!j)return null;if(j.kind==="managed"){const E=A[j.index];return n.jsx(ss,{server:E,agentId:e.id,live:P.get(E.name),testResult:h[E.name],rosterUpdatedAt:t.dataUpdatedAt,testing:b===E.name,busy:I,onToggle:z,onTest:M,onRemove:y},E.name)}const T=w[j.index];return n.jsx(is,{entry:T,agentId:e.id,agentLabel:e.displayName??e.name,canImport:l},T.name)}return n.jsxs("section",{className:"space-y-3","aria-label":"MCP servers",children:[n.jsxs("div",{className:"flex items-center justify-between",children:[n.jsx("h3",{className:"text-sm font-semibold",children:"MCP Servers"}),l&&n.jsx(bn,{agentId:e.id,agentLabel:e.displayName??e.name,supportedTransports:cs(e.runtime),onAdded:R,oauthDetectedFor:N&&((B=h[N])==null?void 0:B.result.needsAuth)===!0?N:null})]}),n.jsx(ls,{}),!l&&n.jsx("p",{className:"text-muted-foreground text-xs",children:"This agent can’t use added servers yet. View only."}),t.isLoading?n.jsx($,{children:n.jsxs(K,{className:"space-y-2",children:[n.jsx(te,{className:"h-5 w-full"}),n.jsx(te,{className:"h-5 w-3/4"})]})}):t.isError?n.jsx($,{children:n.jsxs(K,{className:"flex items-center justify-between gap-2",children:[n.jsx("p",{className:"text-destructive text-sm",children:"Couldn’t load managed servers."}),n.jsx(f,{variant:"outline",size:"sm",onClick:()=>t.refetch(),className:"focus-visible:ring-2",children:"Try again"})]})}):V.length===0?n.jsx($,{children:n.jsx(K,{children:n.jsxs("p",{className:"text-muted-foreground text-sm",children:["No MCP servers yet."," ",l?"Add one for more tools.":"This agent can’t use them yet."]})})}):n.jsx($,{children:n.jsx(K,{children:V.map(U)})})]})}function fs({member:e}){const{agent:s,projectPath:t,isPending:i}=ln(e);return i?n.jsx(te,{className:"h-32 w-full"}):!s||t===null?n.jsx("p",{className:"text-muted-foreground text-sm",children:"Couldn’t read this agent’s MCP servers."}):n.jsx(ds,{agent:s,projectPath:t})}export{fs as ToolsPage};
|