dorkos 0.121.0 → 0.123.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/cli.js +532 -373
- package/dist/browser/native/package-manifest.json +1 -1
- package/dist/browser/source-manifest.json +1 -1
- package/dist/client/assets/{AboutPage-CtI8gbER.js → AboutPage-BmtoPqP9.js} +1 -1
- package/dist/client/assets/{ActivityErrorState-CHTXfBS7.js → ActivityErrorState-CEzdFJiR.js} +1 -1
- package/dist/client/assets/{ActivityPage-B8p4yYJL.js → ActivityPage-mFYgTr3e.js} +1 -1
- package/dist/client/assets/{ActivityRow-CSuSz-92.js → ActivityRow-Bkc0kkim.js} +1 -1
- package/dist/client/assets/{AdapterIcon-Qnxn0cE5.js → AdapterIcon-DVgTrgnM.js} +1 -1
- package/dist/client/assets/{AdapterSetupWizard-BG8H-Lld.js → AdapterSetupWizard-I03EluU5.js} +1 -1
- package/dist/client/assets/{AgentOptionRow-BWFQFynn.js → AgentOptionRow-DI1TzLaR.js} +1 -1
- package/dist/client/assets/{AgentPicker-CL93SET3.js → AgentPicker-CBYeBzjf.js} +1 -1
- package/dist/client/assets/{AgentRequestCard-CamX7Tvr.js → AgentRequestCard-DQ6GYoeE.js} +3 -3
- package/dist/client/assets/{AppearancePage-rN70_7ih.js → AppearancePage-62xIPNPn.js} +1 -1
- package/dist/client/assets/{ApplyToOverridesDialog-DeWaXbgm.js → ApplyToOverridesDialog-CrqkeHQb.js} +1 -1
- package/dist/client/assets/{AttentionSignalRow-CKcSWExi.js → AttentionSignalRow-Coe5pYX6.js} +1 -1
- package/dist/client/assets/{BaseTanStackRouterDevtoolsPanel-B-iktbLX-BwYaLf2P.js → BaseTanStackRouterDevtoolsPanel-B-iktbLX-D07cg75s.js} +1 -1
- package/dist/client/assets/{BindingDialog-DqPDLYbF.js → BindingDialog-DVyxVXZM.js} +1 -1
- package/dist/client/assets/{BlintzCanvas-DoAZs5bz.js → BlintzCanvas-BmfkiUQJ.js} +3 -3
- package/dist/client/assets/{BlintzCanvas-xZ3u3nk7.css → BlintzCanvas-DCXOV_yN.css} +1 -1
- package/dist/client/assets/{CanvasCsvContent-ViqRJuhW.js → CanvasCsvContent-CRTr-AI7.js} +2 -2
- package/dist/client/assets/CanvasFileContent-rOmY1s3T.js +2 -0
- package/dist/client/assets/CanvasModel3dContent-D7oRT6ey.js +2 -0
- package/dist/client/assets/{ChatAppsOff-D0PbHYqF.js → ChatAppsOff-BmuOTq83.js} +1 -1
- package/dist/client/assets/{CodeMirrorDiff-DFNSXeuV.js → CodeMirrorDiff-DidSWwYJ.js} +1 -1
- package/dist/client/assets/{CodeMirrorEditor-AgkgsSqN.js → CodeMirrorEditor-BUAWGbRo.js} +1 -1
- package/dist/client/assets/{CommitmentList-0V6QivXH.js → CommitmentList-uK4CKaz0.js} +1 -1
- package/dist/client/assets/{CommitmentsPage-i3XoHwBj.js → CommitmentsPage-BWITH1r2.js} +1 -1
- package/dist/client/assets/{ComputerResourceView-RPoBc-km.js → ComputerResourceView-adgF_EZU.js} +1 -1
- package/dist/client/assets/{ComputerViewer-2ugaCd0H.js → ComputerViewer-D87LhxwL.js} +1 -1
- package/dist/client/assets/{ConnectionAccessLists-DaPP4U96.js → ConnectionAccessLists-BFEFqcSZ.js} +1 -1
- package/dist/client/assets/{ConnectionsPage-BVqYvfk5.js → ConnectionsPage-Cd_cLoSY.js} +1 -1
- package/dist/client/assets/{ConventionPage-BoqncrFd.js → ConventionPage-BSztD-gU.js} +1 -1
- package/dist/client/assets/{ExtensionPageRoute-BrOEeNX3.js → ExtensionPageRoute-BSge6XRv.js} +1 -1
- package/dist/client/assets/{FloatingTanStackRouterDevtools-CqogiFob-DLwix3K7.js → FloatingTanStackRouterDevtools-CqogiFob-TO2CUPG0.js} +1 -1
- package/dist/client/assets/HandlePage-BKiqymRF.js +1 -0
- package/dist/client/assets/{HeartbeatPage-DgXhbaBJ.js → HeartbeatPage-DIJzdOhj.js} +1 -1
- package/dist/client/assets/{KeyEntry-CRr32Ae5.js → KeyEntry-DJnzW3Mu.js} +1 -1
- package/dist/client/assets/{LexicalField-DeAoA6yr.js → LexicalField-BxzNvIjJ.js} +1 -1
- package/dist/client/assets/{ManagesPage-ZBWYLTZx.js → ManagesPage-BQj8KbYA.js} +1 -1
- package/dist/client/assets/{Marketplace-iL5p8Omt.js → Marketplace-CIG5_a_H.js} +4 -4
- package/dist/client/assets/{MarketplaceSourcesView-CsNLVOdP.js → MarketplaceSourcesView-16HKvFK-.js} +1 -1
- package/dist/client/assets/{McpAppFrame-B1WPswgk.js → McpAppFrame-5xlga1jD.js} +1 -1
- package/dist/client/assets/{McpSigninBody-CJ28yu0o.js → McpSigninBody-COIHpHq_.js} +1 -1
- package/dist/client/assets/{Model3dViewer-BIZWdK8g.js → Model3dViewer-CQ0sA_kr.js} +1 -1
- package/dist/client/assets/NamePage-D7W6VMYd.js +1 -0
- package/dist/client/assets/{NewDirectMessageMenu-DRx9e9kM.js → NewDirectMessageMenu-D092y0K9.js} +1 -1
- package/dist/client/assets/{NotificationsPage-cfqgSuVy.js → NotificationsPage-CskOPdhh.js} +1 -1
- package/dist/client/assets/{OpenMeshSwitch-BIIuKDku.js → OpenMeshSwitch-BHRm328L.js} +1 -1
- package/dist/client/assets/{OperatorIdentityForm-BKUSGrs6.js → OperatorIdentityForm-C3op6BIC.js} +1 -1
- package/dist/client/assets/{PermissionHistory-Ctdqhib6.js → PermissionHistory-CKebTVkq.js} +1 -1
- package/dist/client/assets/{PermissionsPage-CYA_zdrV.js → PermissionsPage-XuPOSYll.js} +1 -1
- package/dist/client/assets/{PersonalityPopover-BR4Cpr2C.js → PersonalityPopover-BrZjxakx.js} +1 -1
- package/dist/client/assets/PhotoPage-Ch1at4A6.js +1 -0
- package/dist/client/assets/{PreviewRefusedNotice-D1Tl265t.js → PreviewRefusedNotice-BANdpT9O.js} +1 -1
- package/dist/client/assets/{ProfileFields-T3vVbHRC.js → ProfileFields-Dp68ebW9.js} +1 -1
- package/dist/client/assets/{ProfilePanelContainer-CParzTPA.js → ProfilePanelContainer-BKwGdI90.js} +1 -1
- package/dist/client/assets/{ProfileRolePicker-BU4eiMKn.js → ProfileRolePicker-ClOdfLda.js} +1 -1
- package/dist/client/assets/{PromptSuggestionChips-CGNQc2Tf.js → PromptSuggestionChips-zcW4UJ_O.js} +1 -1
- package/dist/client/assets/{ReportsToPopover-Dj5U_Ppi.js → ReportsToPopover-BwDVGqFg.js} +1 -1
- package/dist/client/assets/RoomSurface-CSKIvyHH.js +44 -0
- package/dist/client/assets/{RoomsPage-Cvs3h6f0.js → RoomsPage-CAvrRbPk.js} +1 -1
- package/dist/client/assets/{RunsOnPopover-BUlYwRW4.js → RunsOnPopover-CQ4t9EZ-.js} +1 -1
- package/dist/client/assets/{RuntimeConnectFlow-ChrvjC84.js → RuntimeConnectFlow--fVpIf0B.js} +1 -1
- package/dist/client/assets/{RuntimeSetupDialog-BK9yo7YF.js → RuntimeSetupDialog-COpyPrqL.js} +1 -1
- package/dist/client/assets/SeenDevices-BPw3UgjX.js +19 -0
- package/dist/client/assets/{SessionsPage-CWUwU3US.js → SessionsPage-FDyYzuXs.js} +1 -1
- package/dist/client/assets/{SettingsDialog-BApzy0J8.js → SettingsDialog-Bdws5dbS.js} +4 -4
- package/dist/client/assets/{SkillsPage-z3XnApNX.js → SkillsPage-PLXEY0LB.js} +1 -1
- package/dist/client/assets/{TaskDialogWrapper-BEWUpAlk.js → TaskDialogWrapper-CTcW70s8.js} +1 -1
- package/dist/client/assets/{TasksEmptyState-CLwpLnIO.js → TasksEmptyState-8RZxhRh6.js} +1 -1
- package/dist/client/assets/{TasksPage-CyHjr9OZ.js → TasksPage-C-EtQXKb.js} +1 -1
- package/dist/client/assets/{TeamComputerEntry-BHHIofx3.js → TeamComputerEntry-qx_19Htj.js} +1 -1
- package/dist/client/assets/{ToolsPage-CckCco8x.js → ToolsPage-D5-fx1EA.js} +1 -1
- package/dist/client/assets/{TopologyGraph-Dox7aWP3.js → TopologyGraph-1wtG1BE9.js} +1 -1
- package/dist/client/assets/{TourHost-CTBewD-a.js → TourHost-C664E8OY.js} +1 -1
- package/dist/client/assets/{UnlinkDialog-CFRgExId.js → UnlinkDialog-Di1oBFA_.js} +1 -1
- package/dist/client/assets/{WidgetErrorCard-Dx5oPMlF.js → WidgetErrorCard-BfgGzyqg.js} +1 -1
- package/dist/client/assets/_shell-BLTSXXDw.js +80 -0
- package/dist/client/assets/{_shell._home-DnBkgWs4.js → _shell._home-Hz78BY6-.js} +1 -1
- package/dist/client/assets/{_shell._home.activity-CVCC-EEI.js → _shell._home.activity-BxvI0gkw.js} +1 -1
- package/dist/client/assets/{_shell._home.index-Ck6jxwIx.js → _shell._home.index-Cqq81f3P.js} +1 -1
- package/dist/client/assets/{_shell._home.tasks-B7QQAZnA.js → _shell._home.tasks-Cth56CwC.js} +1 -1
- package/dist/client/assets/{_shell._home.workspaces-DlrRd9tv.js → _shell._home.workspaces-DkoOJSWz.js} +1 -1
- package/dist/client/assets/{_shell.channels-CiWehoyl.js → _shell.channels-D_GQU4RB.js} +4 -4
- package/dist/client/assets/{_shell.connections-CGP5hZHq.js → _shell.connections-DZrlxs4G.js} +1 -1
- package/dist/client/assets/{_shell.feedback-requests-BxxNvw6j.js → _shell.feedback-requests-BTxHdsfb.js} +1 -1
- package/dist/client/assets/_shell.marketplace-CZxkAmFz.js +1 -0
- package/dist/client/assets/_shell.marketplace_.sources-Q0BTQIuE.js +1 -0
- package/dist/client/assets/_shell.session-DvGL0DoX.js +63 -0
- package/dist/client/assets/{_shell.team-CsXH3NkS.js → _shell.team-ZxGwa39m.js} +3 -3
- package/dist/client/assets/_shell.x._extensionId-B6Tm5KuT.js +1 -0
- package/dist/client/assets/_shell.x._extensionId_._-B6Tm5KuT.js +1 -0
- package/dist/client/assets/{abnfDiagram-WEYOIA3C-CMdkyiQ3.js → abnfDiagram-WEYOIA3C-CzqPVMdw.js} +1 -1
- package/dist/client/assets/{access-copy-CW-z1oMH.js → access-copy-Dj09Xk4b.js} +1 -1
- package/dist/client/assets/{arc-Bw7tftQk.js → arc-Bgy7ExYl.js} +1 -1
- package/dist/client/assets/{architectureDiagram-ZHVYKT53-BhpXALtX.js → architectureDiagram-ZHVYKT53-DYfb2p9r.js} +1 -1
- package/dist/client/assets/{banner-EomQNDOH.js → banner-dlsHTWSf.js} +1 -1
- package/dist/client/assets/{blockDiagram-RJAE7QA3-Bxk_BuZv.js → blockDiagram-RJAE7QA3-BkOzLL8s.js} +1 -1
- package/dist/client/assets/{c4Diagram-XDPPPE54-CYN0FwR8.js → c4Diagram-XDPPPE54-CsZm4qpD.js} +1 -1
- package/dist/client/assets/{card-ww4ebz8h.js → card-Dj6ZfRgu.js} +1 -1
- package/dist/client/assets/channel-CGffcDRq.js +1 -0
- package/dist/client/assets/{chunk-2E7WHVMD-IPDvYcPa.js → chunk-2E7WHVMD-GA96Jfps.js} +1 -1
- package/dist/client/assets/{chunk-2Q5K7J3B-DZ5bU5Ax.js → chunk-2Q5K7J3B-CW2i0IkT.js} +1 -1
- package/dist/client/assets/{chunk-4EMNKR2T-DrsWxa6Y.js → chunk-4EMNKR2T-BwFvnPZg.js} +1 -1
- package/dist/client/assets/{chunk-55XCU76K-CiBbKG0b.js → chunk-55XCU76K-MOezzAAB.js} +1 -1
- package/dist/client/assets/{chunk-5VM5RSS4-B3K3MUav.js → chunk-5VM5RSS4-woru6zOC.js} +1 -1
- package/dist/client/assets/{chunk-JWPE2WC7-CjV5RcIh.js → chunk-JWPE2WC7-CUrKlP2M.js} +1 -1
- package/dist/client/assets/{chunk-VQ5W62QI-CWoRr0H2.js → chunk-VQ5W62QI-CqZ2cdEu.js} +1 -1
- package/dist/client/assets/{chunk-XXDRQBXY-E0nvzXiG.js → chunk-XXDRQBXY-ByAcvWaE.js} +1 -1
- package/dist/client/assets/{chunk-ZCHMQSOR-DFop6Lvt.js → chunk-ZCHMQSOR-3nkba9kj.js} +2 -2
- package/dist/client/assets/{classDiagram-v2-4MYWR3UA-B7JJfc9z.js → classDiagram-v2-4MYWR3UA-B-zZKAmI.js} +1 -1
- package/dist/client/assets/{command-D4fLpJxA.js → command-BAOEURY7.js} +1 -1
- package/dist/client/assets/{cose-bilkent-JH36ORCC-BjNppl29.js → cose-bilkent-JH36ORCC-sCKxRv1H.js} +1 -1
- package/dist/client/assets/{cpu-DCe0Yyml.js → cpu-TtYQqONc.js} +1 -1
- package/dist/client/assets/{cynefin-EF2NZ3EQ-PmRntJwW.js → cynefin-EF2NZ3EQ-CXzvL5Cg.js} +1 -1
- package/dist/client/assets/{cynefinDiagram-WF24UDRP-Ctdbp_Vg.js → cynefinDiagram-WF24UDRP-C0wjhu9X.js} +1 -1
- package/dist/client/assets/{dagre-NK4GIZVX-5tvLY2ZW.js → dagre-NK4GIZVX-Doi2IPkY.js} +1 -1
- package/dist/client/assets/{diagram-CBK3MWTC-DZO-XBOO.js → diagram-CBK3MWTC-11TVuPel.js} +1 -1
- package/dist/client/assets/{diagram-I5XIIV2D-CWBbA1Pv.js → diagram-I5XIIV2D-CJq7fHFM.js} +1 -1
- package/dist/client/assets/{diagram-ODIL2UCW-hP5A1tGl.js → diagram-ODIL2UCW-2Ae6unuU.js} +1 -1
- package/dist/client/assets/{diagram-PFBEJUXE-EI_-RoN7.js → diagram-PFBEJUXE-BXza6_iz.js} +1 -1
- package/dist/client/assets/{diagram-RJA3I4VV-TrYq9A4Z.js → diagram-RJA3I4VV-Z0i3uBW9.js} +1 -1
- package/dist/client/assets/{diagram-TYUNFSNR-BAQq2OM5.js → diagram-TYUNFSNR-Dq_-g1oP.js} +1 -1
- package/dist/client/assets/{ebnfDiagram-V4P3TTPT-cKbeW9dQ.js → ebnfDiagram-V4P3TTPT-vxzIvg-W.js} +1 -1
- package/dist/client/assets/{elk-QONTBCTQ-wpfNPp0q.js → elk-QONTBCTQ-BBIXXtg_.js} +1 -1
- package/dist/client/assets/{empty-state-DXWQsHMf.js → empty-state-kISAAp0z.js} +1 -1
- package/dist/client/assets/{erDiagram-KYQIGQAA-Dk0OrvjE.js → erDiagram-KYQIGQAA-Bk2MeLBx.js} +1 -1
- package/dist/client/assets/{execution-config-CAyT2Qoo.js → execution-config-DYFe-VNC.js} +1 -1
- package/dist/client/assets/{file-Bf7D_47y.js → file-DEt4KgZG.js} +1 -1
- package/dist/client/assets/{file-exclamation-point-DZXE9_8o.js → file-exclamation-point-QqXJhXD9.js} +1 -1
- package/dist/client/assets/{file-text-C1ougnBY.js → file-text-CRw31ZWd.js} +1 -1
- package/dist/client/assets/{find-latest-widget-fence-B1_-pC-Z.js → find-latest-widget-fence-B3aaiBNI.js} +1 -1
- package/dist/client/assets/{flowDiagram-IUGLLWBU-CdlOoRZV.js → flowDiagram-IUGLLWBU-B53m4r8u.js} +1 -1
- package/dist/client/assets/{form-D7kF-U0d.js → form-Bjhk9zOn.js} +1 -1
- package/dist/client/assets/{format-cron-ZtliseYi.js → format-cron-9tmNIcgl.js} +1 -1
- package/dist/client/assets/{ganttDiagram-R7GPNTJY-x0MJLv5d.js → ganttDiagram-R7GPNTJY-CS6TN3R1.js} +1 -1
- package/dist/client/assets/{git-branch-B2k77X3Q.js → git-branch-DWerghmw.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PDYL7XHY-CruCvk7w.js → gitGraphDiagram-PDYL7XHY-D096ZtqE.js} +1 -1
- package/dist/client/assets/{graph-5PBe05F8.js → graph-DQpTuPmX.js} +1 -1
- package/dist/client/assets/{heart-CmqGJPDc.js → heart-CRkjVW7-.js} +1 -1
- package/dist/client/assets/{highlighted-body-KPVGNVTW-Bqu2cQDj.js → highlighted-body-KPVGNVTW-DoVCXOMU.js} +1 -1
- package/dist/client/assets/{image-lightbox-BBbz-ThL.js → image-lightbox-BXzbN27o.js} +1 -1
- package/dist/client/assets/{image-off-BCtWIY4q.js → image-off-VyMBVwgK.js} +1 -1
- package/dist/client/assets/{index-8IAr9b71.js → index-1qv8ldHx.js} +1 -1
- package/dist/client/assets/{index-ClBIPuLA.js → index-2EaVZrJe.js} +1 -1
- package/dist/client/assets/{index-DcZPWi_I.js → index-8-iQ6PnT.js} +252 -247
- package/dist/client/assets/{index-CJ5v2_Cz.js → index-B2rBVMNl.js} +1 -1
- package/dist/client/assets/{index-BpmmNapD.js → index-BBcAekWE.js} +1 -1
- package/dist/client/assets/index-BFitbVs4.js +1 -0
- package/dist/client/assets/{index-xmk9Ohv9.js → index-BLkXoquZ.js} +1 -1
- package/dist/client/assets/{index-xaMF1mrN.js → index-BcFMs7lK.js} +1 -1
- package/dist/client/assets/{index-EdJm7ZN-.js → index-BiFJIg4n.js} +1 -1
- package/dist/client/assets/{index-BuGQxHrf.js → index-BpjEclkM.js} +1 -1
- package/dist/client/assets/{index-CtycM8wY.js → index-C24HfJir.js} +1 -1
- package/dist/client/assets/{index-DAdo_yIq.js → index-C3sW6rkN.js} +1 -1
- package/dist/client/assets/{index-JxeBJIuE.js → index-C6Fo2htT.js} +1 -1
- package/dist/client/assets/{index-B5rRtvWx.js → index-C6udJCgz.js} +1 -1
- package/dist/client/assets/{index-ChwNEkM8.js → index-CDuYKaGY.js} +1 -1
- package/dist/client/assets/{index-Cml5572f.js → index-CEVwhauU.js} +1 -1
- package/dist/client/assets/index-CI84yP-g.js +1 -0
- package/dist/client/assets/{index-BzPgsdPn.js → index-COMRALJO.js} +1 -1
- package/dist/client/assets/index-CiVeycsn.js +17 -0
- package/dist/client/assets/{index-BXZlDqvy.js → index-Cs3WB8yn.js} +1 -1
- package/dist/client/assets/{index-BrQGZ6iF.js → index-Csr_C1sk.js} +1 -1
- package/dist/client/assets/{index-CMNc_OrC.js → index-Ctqe81qr.js} +1 -1
- package/dist/client/assets/{index-Dmn03xST.js → index-CvhR1oZB.js} +1 -1
- package/dist/client/assets/{index-B6dEbNhI.js → index-CyGRWyhV.js} +1 -1
- package/dist/client/assets/{index-mFOJXyAE.js → index-Czm6C7FZ.js} +3 -3
- package/dist/client/assets/{index-1ShgR_xt.js → index-D5zUdnZM.js} +1 -1
- package/dist/client/assets/{index-Cv0GsC4n.js → index-DBo2XfNv.js} +1 -1
- package/dist/client/assets/{index-DIxzqCwG.js → index-DKWpwwxo.js} +1 -1
- package/dist/client/assets/{index-BXMxoWrk.js → index-DN2sTT2U.js} +1 -1
- package/dist/client/assets/index-DNzk9m1D.js +23 -0
- package/dist/client/assets/{index-CrflCTqO.css → index-DUZrTFYD.css} +1 -1
- package/dist/client/assets/{index-t4Ud6YTX.js → index-DX_2Mxwv.js} +1 -1
- package/dist/client/assets/{index-C11Ssk2u.js → index-Dgrk2udV.js} +2 -2
- package/dist/client/assets/{index-BCk4wW-T.js → index-DgyhdQnI.js} +1 -1
- package/dist/client/assets/{index-CQ0VLZf-.js → index-DmFNztTX.js} +1 -1
- package/dist/client/assets/{index-rWZWP3Wh.js → index-TnoaFCrj.js} +1 -1
- package/dist/client/assets/{index-DbDI5BAA.js → index-_emDKzsu.js} +1 -1
- package/dist/client/assets/{index-BIIH5CXj.js → index-b9p_y2Ql.js} +1 -1
- package/dist/client/assets/{index-yI1r4pSP.js → index-gIQ7FrL9.js} +1 -1
- package/dist/client/assets/{index-DsJWzmWw.js → index-igLqtuoO.js} +1 -1
- package/dist/client/assets/{index-Do6eeFps.js → index-n3-zWcH-.js} +2 -2
- package/dist/client/assets/{index-8TfzCkKR.js → index-rCvQat0D.js} +1 -1
- package/dist/client/assets/{index-BfRW2WTx.js → index-setKr4xl.js} +1 -1
- package/dist/client/assets/{index-DrA03bMq.js → index-t3eRSGcT.js} +1 -1
- package/dist/client/assets/{index.esm-CZZtbPRj.js → index.esm-bLeQzVWT.js} +1 -1
- package/dist/client/assets/{infoDiagram-MVDRKAX5-Bj9DD77n.js → infoDiagram-MVDRKAX5-nN_N76Fn.js} +1 -1
- package/dist/client/assets/{inline-code-g9PVHZI2.js → inline-code-D9bLKHjY.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-HPEHV2GE-DckI6dhS.js → ishikawaDiagram-HPEHV2GE-CiLFbWXd.js} +1 -1
- package/dist/client/assets/{journeyDiagram-BOSHW7O7-Ce1GAVa0.js → journeyDiagram-BOSHW7O7-Dn3yOv96.js} +1 -1
- package/dist/client/assets/{kanban-definition-FNSA4HC5-Kq5O9rZa.js → kanban-definition-FNSA4HC5-JxiBdBQC.js} +1 -1
- package/dist/client/assets/{layers-D3lEdRF0.js → layers-DTnLoRvE.js} +1 -1
- package/dist/client/assets/{lightbulb-BFE-KkFU.js → lightbulb-CRKLr5q3.js} +1 -1
- package/dist/client/assets/{link-2-Dvb6g-2Q.js → link-2-hgHg-lyw.js} +1 -1
- package/dist/client/assets/{list-runtime-types-8YGEK3Al.js → list-runtime-types-Bb33QiMC.js} +1 -1
- package/dist/client/assets/{markdown-content-Cqq_QMXA.js → markdown-content-D0FpU2cz.js} +1 -1
- package/dist/client/assets/{mention-pill-Bnzt4u2l.js → mention-pill-uuaUvwSW.js} +1 -1
- package/dist/client/assets/{mermaid.core-dpp59v7L.js → mermaid.core-x3Hh6iut.js} +4 -4
- package/dist/client/assets/{message-square-off-BX2XnEDx.js → message-square-off-B8N6YF9R.js} +1 -1
- package/dist/client/assets/{mindmap-definition-6OY57UG3-CFdfJO6g.js → mindmap-definition-6OY57UG3-D0SEv5Re.js} +1 -1
- package/dist/client/assets/{more-details-B4lBMpKi.js → more-details-CadxnGyH.js} +1 -1
- package/dist/client/assets/{owner-notice-ByjrIRmX.js → owner-notice-CJHyha58.js} +1 -1
- package/dist/client/assets/{package-6Rbxg35g.js → package-B8G7jQm-.js} +1 -1
- package/dist/client/assets/{page-container-DoZzad36.js → page-container-Bb-_N7lw.js} +1 -1
- package/dist/client/assets/{paperclip-B-jDXtxw.js → paperclip-BDeYGKqh.js} +1 -1
- package/dist/client/assets/{path-input-DpqUD8hN.js → path-input-BIfexEKz.js} +1 -1
- package/dist/client/assets/{pegDiagram-ECIUJNBX-eVnSw2Ma.js → pegDiagram-ECIUJNBX-7ivMd0-b.js} +1 -1
- package/dist/client/assets/{pieDiagram-GNMPY74T-BYG7LY5Q.js → pieDiagram-GNMPY74T-DGDkbFvu.js} +1 -1
- package/dist/client/assets/{plug-DnaAhcy4.js → plug-wP1d6OUX.js} +1 -1
- package/dist/client/assets/{primer-trigger-Da5ECjY8.js → primer-trigger-CEli_z4n.js} +1 -1
- package/dist/client/assets/{profile-errors-GbTNc2-M.js → profile-errors-C1qSJkiG.js} +1 -1
- package/dist/client/assets/{progress-DlIRjXIA.js → progress-DmUieXLn.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-D57K4MC3-CRgNKuHR.js → quadrantDiagram-D57K4MC3-AFQRVSsK.js} +1 -1
- package/dist/client/assets/{query-error-state-DB-Jby7_.js → query-error-state--8AnWSSn.js} +1 -1
- package/dist/client/assets/query-keys-DeYqUDia.js +1 -0
- package/dist/client/assets/{radio-CaaE60ws.js → radio-mkA-Sqe0.js} +1 -1
- package/dist/client/assets/{railroadDiagram-Y72NRBL7-DGL-Hqz9.js → railroadDiagram-Y72NRBL7-3QBa2d3j.js} +1 -1
- package/dist/client/assets/registry-Bnd-HFt3.js +1 -0
- package/dist/client/assets/{relay-trace-schemas-CcCqyOrA.js → relay-trace-schemas-fScydQ3A.js} +1 -1
- package/dist/client/assets/{requirementDiagram-EQYSW5RA-DKsFpU3l.js → requirementDiagram-EQYSW5RA-BVBqcASy.js} +1 -1
- package/dist/client/assets/{room-files-source-CbbVpvSW.js → room-files-source-BhkPUTiP.js} +1 -1
- package/dist/client/assets/{rotate-ccw-clock-CeY00nlZ.js → rotate-ccw-clock-DiuTseKz.js} +1 -1
- package/dist/client/assets/{rotate-cw-Djl5J_x9.js → rotate-cw-DvoxWwSx.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-SY24JHO5-BFRkDxic.js → sankeyDiagram-SY24JHO5-DFjfOD38.js} +1 -1
- package/dist/client/assets/{scroll-area-BOqrziJf.js → scroll-area-DYyyRqW_.js} +1 -1
- package/dist/client/assets/{search-x-B_mHjnlo.js → search-x-CA-FzEqZ.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-BLEHNHQU-fHea3KOI.js → sequenceDiagram-BLEHNHQU-Cr9LzoSF.js} +1 -1
- package/dist/client/assets/{shield-check-Csnr5rFy.js → shield-check-CpUB_Ju1.js} +1 -1
- package/dist/client/assets/{shield-x-Dhl4YvvW.js → shield-x-B0W_7qwR.js} +1 -1
- package/dist/client/assets/{signed-in-BMqAss8c.js → signed-in-X2utDqQS.js} +1 -1
- package/dist/client/assets/{sizeCapture-INFHLROL-CztsD3qF.js → sizeCapture-INFHLROL-Do_jfNyT.js} +1 -1
- package/dist/client/assets/{soul-file-DOfamgB5.js → soul-file-DgfhKQIK.js} +1 -1
- package/dist/client/assets/{stateDiagram-v2-A6IESKWZ-CWyOqZ9S.js → stateDiagram-v2-A6IESKWZ-BCi9yk_0.js} +1 -1
- package/dist/client/assets/{swimlanes-B3ENRKFQ-0EfOxSAX.js → swimlanes-B3ENRKFQ-3SSAw2av.js} +1 -1
- package/dist/client/assets/swimlanesDiagram-AYQRV4AK-jpZCGfva.js +8 -0
- package/dist/client/assets/{table-L7FvN6Or.js → table-DvU_oS4E.js} +1 -1
- package/dist/client/assets/{terminal-C9M5a_PS.js → terminal-Dw2QZ7Dh.js} +1 -1
- package/dist/client/assets/{timeline-definition-JXYKGLGB-sFyYvZ20.js → timeline-definition-JXYKGLGB-DTLPXTMA.js} +1 -1
- package/dist/client/assets/{trust-posture-dl6qwDtI.js → trust-posture-2MR0ap9o.js} +1 -1
- package/dist/client/assets/{unplug-CFUEVRbc.js → unplug-CAVOLB2R.js} +1 -1
- package/dist/client/assets/{unverified-catalog-notice-CdYU3WEJ.js → unverified-catalog-notice-u4ikVg8J.js} +1 -1
- package/dist/client/assets/{use-adapter-catalog-YTofdqDJ.js → use-adapter-catalog-BQKfRxXC.js} +1 -1
- package/dist/client/assets/{use-bindings-CpyT6kNu.js → use-bindings-BV6HA0MD.js} +1 -1
- package/dist/client/assets/{use-composer-prefs-CK_EK_QJ.js → use-composer-prefs-DCSzOnEO.js} +1 -1
- package/dist/client/assets/{use-connector-management-DwoK8kon.js → use-connector-management-fr1tx-GZ.js} +1 -1
- package/dist/client/assets/{use-deep-link-scroll-CgRjt48R.js → use-deep-link-scroll-v02TbidQ.js} +1 -1
- package/dist/client/assets/{use-delete-binding-CfsnMXrL.js → use-delete-binding-CnziYpXo.js} +1 -1
- package/dist/client/assets/{use-dev-links-B3I-ZK34.js → use-dev-links-k4YWFO1v.js} +1 -1
- package/dist/client/assets/{use-external-adapter-catalog-aGlZNRrp.js → use-external-adapter-catalog-DoGUfa2F.js} +1 -1
- package/dist/client/assets/{use-full-activity-feed-B61Olhdw.js → use-full-activity-feed-CQNxgxnw.js} +1 -1
- package/dist/client/assets/use-is-below-desktop-DR8FEbRW.js +1 -0
- package/dist/client/assets/use-is-hub-BmpgFnFp.js +1 -0
- package/dist/client/assets/{use-jump-back-in-C39GOTHa.js → use-jump-back-in-BuO6A0P7.js} +1 -1
- package/dist/client/assets/{use-local-browser-DCwzB4D8.js → use-local-browser-BNzN5O1P.js} +1 -1
- package/dist/client/assets/{use-mesh-topology-LRYxFuZp.js → use-mesh-topology-CpIDE8lD.js} +1 -1
- package/dist/client/assets/{use-mounted-ref-CZaegwTr.js → use-mounted-ref-BAO3qunF.js} +1 -1
- package/dist/client/assets/{use-notification-prefs-FtOiUS5H.js → use-notification-prefs-CtqeH5Pk.js} +1 -1
- package/dist/client/assets/{use-panel-tab-placements-Dv2OPvKh.js → use-panel-tab-placements-DFobGBRm.js} +1 -1
- package/dist/client/assets/use-pending-read-Do0_vZ2I.js +1 -0
- package/dist/client/assets/{use-personality-commit-BB5aeh6p.js → use-personality-commit-BvqCwzAC.js} +1 -1
- package/dist/client/assets/{use-promo-activation-BW0u7n7m.js → use-promo-activation-Dz5cYm-X.js} +1 -1
- package/dist/client/assets/{use-promo-dismissals-BOXzW4kD.js → use-promo-dismissals-CuOsnqnZ.js} +1 -1
- package/dist/client/assets/{use-pulse-freshness-ClW-MLMo.js → use-pulse-freshness-qcTH6PM7.js} +1 -1
- package/dist/client/assets/{use-relay-config-hItHtkSr.js → use-relay-config-1mAMDNbc.js} +1 -1
- package/dist/client/assets/{use-room-follow-claim-wotzxUWc.js → use-room-follow-claim-CCGhsyH3.js} +1 -1
- package/dist/client/assets/{use-roving-tab-list-DkbO6xSs.js → use-roving-tab-list-Bsg2dfUx.js} +1 -1
- package/dist/client/assets/use-session-canvas-awPngMKg.js +25 -0
- package/dist/client/assets/{use-session-diagnostics-DmxvD-wy.js → use-session-diagnostics-D5g8Mc52.js} +2 -2
- package/dist/client/assets/{use-unclaimed-chats-DKpexDm3.js → use-unclaimed-chats-Db_wuzt0.js} +1 -1
- package/dist/client/assets/use-update-config-DwtH_H9Z.js +1 -0
- package/dist/client/assets/{useMutationState-Btf2Hp1a.js → useMutationState-BvwBDXKc.js} +1 -1
- package/dist/client/assets/{usecaseDiagram-WPOLBNNX-DRngjDUq.js → usecaseDiagram-WPOLBNNX-1zKygEKR.js} +1 -1
- package/dist/client/assets/{vennDiagram-Q3Y3IDCW-iK-dlS1-.js → vennDiagram-Q3Y3IDCW-BR2EbgGY.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-IVAIDKWA-sOS67Cks.js → wardleyDiagram-IVAIDKWA-D0OwouJc.js} +1 -1
- package/dist/client/assets/{xychartDiagram-4URNHDU4-EgnLiIao.js → xychartDiagram-4URNHDU4-BM-7_FQQ.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/drizzle/20261018123612_session_route.sql +1 -0
- package/dist/drizzle/meta/20261018123612_snapshot.json +14027 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/server/index.js +31594 -28878
- package/dist/server/index.js.map +2 -2
- package/package.json +6 -6
- package/dist/client/assets/CanvasFileContent-ClcHZ_l-.js +0 -2
- package/dist/client/assets/CanvasModel3dContent-Cm3msNdQ.js +0 -2
- package/dist/client/assets/HandlePage-B_5GLHsp.js +0 -1
- package/dist/client/assets/NamePage-0nr288eM.js +0 -1
- package/dist/client/assets/PhotoPage-C3Ir3wlA.js +0 -1
- package/dist/client/assets/PresetPicker-zGvDOqTf.js +0 -19
- package/dist/client/assets/RoomSurface-BIyjtxKD.js +0 -44
- package/dist/client/assets/_shell-BHUZq_8C.js +0 -80
- package/dist/client/assets/_shell.marketplace-BoAmyvPt.js +0 -1
- package/dist/client/assets/_shell.marketplace_.sources-BpqWjkGL.js +0 -1
- package/dist/client/assets/_shell.session-KyPj3OxK.js +0 -61
- package/dist/client/assets/_shell.x._extensionId-CfiAgtoq.js +0 -1
- package/dist/client/assets/_shell.x._extensionId_._-CfiAgtoq.js +0 -1
- package/dist/client/assets/channel-DZpRF3QJ.js +0 -1
- package/dist/client/assets/index-Cl8trmnL.js +0 -1
- package/dist/client/assets/index-Cp3yShS8.js +0 -23
- package/dist/client/assets/index-DKDK-3KH.js +0 -17
- package/dist/client/assets/index-DPNBHwcQ.js +0 -1
- package/dist/client/assets/registry-DS1Ghdft.js +0 -1
- package/dist/client/assets/swimlanesDiagram-AYQRV4AK-C7fkUKrq.js +0 -8
- package/dist/client/assets/use-is-below-desktop-Qwyg-mFb.js +0 -1
- package/dist/client/assets/use-is-hub-CSz6NDaP.js +0 -1
- package/dist/client/assets/use-pending-read-DBOl1ee_.js +0 -1
- package/dist/client/assets/use-session-canvas-C_fuAgW_.js +0 -24
- package/dist/client/assets/use-update-config-CSYwg557.js +0 -1
package/dist/bin/cli.js
CHANGED
|
@@ -22178,15 +22178,26 @@ var init_runtime_settings = __esm({
|
|
|
22178
22178
|
* agent is the same executable with the same permissions and the same
|
|
22179
22179
|
* per-dispatch boundary check, held open for longer — nothing about what
|
|
22180
22180
|
* it may DO changes. The real cost is memory, and the bounds on it live
|
|
22181
|
-
* in
|
|
22182
|
-
*
|
|
22181
|
+
* in `maxWarmProcesses` below, and the idle
|
|
22182
|
+
* reaper closes the rest.
|
|
22183
22183
|
*
|
|
22184
22184
|
* Read when a chat's agent starts, so a chat already under way keeps
|
|
22185
22185
|
* the way it started until its process is replaced. That is what lets
|
|
22186
22186
|
* one machine run chats both ways at the same time and compare them on
|
|
22187
22187
|
* the same work (spec `persistent-session-runtime` §P3).
|
|
22188
22188
|
*/
|
|
22189
|
-
persistentSession: external_exports.boolean().default(true)
|
|
22189
|
+
persistentSession: external_exports.boolean().default(true),
|
|
22190
|
+
/**
|
|
22191
|
+
* The most chats whose agent may be running at once on this machine
|
|
22192
|
+
* (DOR-3012). `null`, the default, sizes it to the machine's memory: one per
|
|
22193
|
+
* 2 GB, at least 12 and at most 32. A number pins it.
|
|
22194
|
+
*
|
|
22195
|
+
* A chat past the limit is never refused outright: the least recently used
|
|
22196
|
+
* idle agent is closed to make room, and when every one is mid-turn the chat
|
|
22197
|
+
* waits for one to finish. Read when an agent starts, so a change applies to
|
|
22198
|
+
* the next one.
|
|
22199
|
+
*/
|
|
22200
|
+
maxWarmProcesses: external_exports.number().int().min(1).max(128).nullable().default(null)
|
|
22190
22201
|
});
|
|
22191
22202
|
DoeInferenceConfigSchema = external_exports.object({
|
|
22192
22203
|
source: external_exports.enum(["api-key", "local", "dorkos-credits"]),
|
|
@@ -22284,7 +22295,8 @@ var init_runtime_settings = __esm({
|
|
|
22284
22295
|
// carry this value — the per-field one on `ClaudeCodeSettingsSchema`,
|
|
22285
22296
|
// this one, and the `runtimes` literal below — and all three have to
|
|
22286
22297
|
// agree or the shallow defaults-merge lands somebody on the old value.
|
|
22287
|
-
persistentSession: true
|
|
22298
|
+
persistentSession: true,
|
|
22299
|
+
maxWarmProcesses: null
|
|
22288
22300
|
})),
|
|
22289
22301
|
doe: DoeRuntimeSettingsSchema,
|
|
22290
22302
|
opencode: external_exports.object({
|
|
@@ -22377,7 +22389,8 @@ var init_runtime_settings = __esm({
|
|
|
22377
22389
|
defaultModel: null,
|
|
22378
22390
|
defaultEffort: null,
|
|
22379
22391
|
defaultTrustStop: null,
|
|
22380
|
-
persistentSession: true
|
|
22392
|
+
persistentSession: true,
|
|
22393
|
+
maxWarmProcesses: null
|
|
22381
22394
|
},
|
|
22382
22395
|
opencode: {
|
|
22383
22396
|
enabled: true,
|
|
@@ -26362,7 +26375,6 @@ function repoUrl(path66 = "") {
|
|
|
26362
26375
|
var GITHUB_ORG, links;
|
|
26363
26376
|
var init_links = __esm({
|
|
26364
26377
|
"../shared/src/links.ts"() {
|
|
26365
|
-
"use strict";
|
|
26366
26378
|
GITHUB_ORG = "dork-labs";
|
|
26367
26379
|
links = {
|
|
26368
26380
|
/** The public origin of the marketing site, the docs and DorkOS Cloud. */
|
|
@@ -26761,7 +26773,7 @@ import path2 from "path";
|
|
|
26761
26773
|
import { fileURLToPath } from "url";
|
|
26762
26774
|
function resolveVersion() {
|
|
26763
26775
|
if (env2.DORKOS_VERSION_OVERRIDE) return env2.DORKOS_VERSION_OVERRIDE;
|
|
26764
|
-
if (true) return "0.
|
|
26776
|
+
if (true) return "0.123.0";
|
|
26765
26777
|
const pkgPath = path2.join(path2.dirname(fileURLToPath(import.meta.url)), "../../package.json");
|
|
26766
26778
|
return JSON.parse(readFileSync(pkgPath, "utf-8")).version;
|
|
26767
26779
|
}
|
|
@@ -28210,7 +28222,7 @@ var init_interceptor = __esm({
|
|
|
28210
28222
|
for (const callback of this.callbacks) {
|
|
28211
28223
|
callback();
|
|
28212
28224
|
}
|
|
28213
|
-
if (signal) {
|
|
28225
|
+
if (signal && process6.listenerCount(signal) === 0) {
|
|
28214
28226
|
if (IS_WINDOWS && (signal !== "SIGINT" && signal !== "SIGTERM" && signal !== "SIGKILL")) {
|
|
28215
28227
|
process6.kill(process6.pid, "SIGTERM");
|
|
28216
28228
|
} else {
|
|
@@ -40753,6 +40765,12 @@ function seedLanAccess(store) {
|
|
|
40753
40765
|
if ("lanAccess" in server2) return;
|
|
40754
40766
|
store.set("server", { ...server2, lanAccess: false });
|
|
40755
40767
|
}
|
|
40768
|
+
function seedMaxWarmProcesses(store) {
|
|
40769
|
+
const claudeCode = store.get("runtimes.claudeCode");
|
|
40770
|
+
if (claudeCode === null || typeof claudeCode !== "object" || Array.isArray(claudeCode)) return;
|
|
40771
|
+
if ("maxWarmProcesses" in claudeCode) return;
|
|
40772
|
+
store.set("runtimes.claudeCode", { ...claudeCode, maxWarmProcesses: null });
|
|
40773
|
+
}
|
|
40756
40774
|
function raiseEngagedWindowDefaults(store) {
|
|
40757
40775
|
if (store.get("rooms") === void 0) return;
|
|
40758
40776
|
const minutes = store.get("rooms.engagedWindowMinutes");
|
|
@@ -41451,7 +41469,14 @@ var init_config_migrations = __esm({
|
|
|
41451
41469
|
enabled: sessionRelay.enabled === true
|
|
41452
41470
|
});
|
|
41453
41471
|
}
|
|
41454
|
-
}
|
|
41472
|
+
},
|
|
41473
|
+
// v0.122.0 is the newest release, so this opens 0.123.0. Frozen from merge;
|
|
41474
|
+
// anything further opens `'0.124.0'`.
|
|
41475
|
+
//
|
|
41476
|
+
// Writes `runtimes.claudeCode.maxWarmProcesses: null` where the stored
|
|
41477
|
+
// section lacks it, and touches nothing else (DOR-3012). See
|
|
41478
|
+
// `seedMaxWarmProcesses`.
|
|
41479
|
+
"0.123.0": seedMaxWarmProcesses
|
|
41455
41480
|
};
|
|
41456
41481
|
}
|
|
41457
41482
|
});
|
|
@@ -41550,6 +41575,7 @@ __export(config_manager_exports, {
|
|
|
41550
41575
|
seedIdentityPromptDismissedDefault: () => seedIdentityPromptDismissedDefault,
|
|
41551
41576
|
seedLanAccess: () => seedLanAccess,
|
|
41552
41577
|
seedMaxConcurrentTurnsPerAgent: () => seedMaxConcurrentTurnsPerAgent,
|
|
41578
|
+
seedMaxWarmProcesses: () => seedMaxWarmProcesses,
|
|
41553
41579
|
seedMemoryProviderDefault: () => seedMemoryProviderDefault,
|
|
41554
41580
|
seedPermissionPresetFromDoor: () => seedPermissionPresetFromDoor,
|
|
41555
41581
|
seedRoomCanvasOps: () => seedRoomCanvasOps,
|
|
@@ -49414,6 +49440,7 @@ function parseSkillFile(filePath, content, schema3, options) {
|
|
|
49414
49440
|
}
|
|
49415
49441
|
var init_parser = __esm({
|
|
49416
49442
|
"../skills/src/parser.ts"() {
|
|
49443
|
+
"use strict";
|
|
49417
49444
|
init_constants7();
|
|
49418
49445
|
init_frontmatter();
|
|
49419
49446
|
}
|
|
@@ -52983,6 +53010,27 @@ var init_mesh_schemas = __esm({
|
|
|
52983
53010
|
}
|
|
52984
53011
|
});
|
|
52985
53012
|
|
|
53013
|
+
// ../shared/src/direct-notes-context.ts
|
|
53014
|
+
var DirectNotesDataSchema;
|
|
53015
|
+
var init_direct_notes_context = __esm({
|
|
53016
|
+
"../shared/src/direct-notes-context.ts"() {
|
|
53017
|
+
"use strict";
|
|
53018
|
+
init_zod();
|
|
53019
|
+
DirectNotesDataSchema = external_exports.object({
|
|
53020
|
+
withName: external_exports.string().min(1),
|
|
53021
|
+
notes: external_exports.array(
|
|
53022
|
+
external_exports.object({
|
|
53023
|
+
at: external_exports.string().min(1),
|
|
53024
|
+
from: external_exports.string().min(1),
|
|
53025
|
+
fromYou: external_exports.boolean(),
|
|
53026
|
+
text: external_exports.string()
|
|
53027
|
+
})
|
|
53028
|
+
).min(1),
|
|
53029
|
+
omitted: external_exports.number().int().nonnegative()
|
|
53030
|
+
});
|
|
53031
|
+
}
|
|
53032
|
+
});
|
|
53033
|
+
|
|
52986
53034
|
// ../shared/src/additional-context.ts
|
|
52987
53035
|
var GitStatusDataSchema, EnvDataSchema, RelayContextDataSchema, RoomContextOriginSchema, RoomContextAuthorSchema, RoomContextMemberSchema, RoomContextEntrySchema, RoomContextAcknowledgmentSchema, MainMovedSchema, WorktreeRefreshOutcomeSchema, RoomContextFilesSchema, RoomContextDataSchema, SeedContextDataSchema, StagedContextDataSchema, AccountsAccessDataSchema, ContextWarningDataSchema, ApprovalVerdictDataSchema, AdditionalContextEntrySchema, AdditionalContextSchema, ClientContextSchema;
|
|
52988
53036
|
var init_additional_context = __esm({
|
|
@@ -52992,6 +53040,7 @@ var init_additional_context = __esm({
|
|
|
52992
53040
|
init_canvas_channel_schemas();
|
|
52993
53041
|
init_mesh_schemas();
|
|
52994
53042
|
init_schemas4();
|
|
53043
|
+
init_direct_notes_context();
|
|
52995
53044
|
GitStatusDataSchema = external_exports.object({
|
|
52996
53045
|
isRepo: external_exports.boolean(),
|
|
52997
53046
|
branch: external_exports.string().optional(),
|
|
@@ -53214,6 +53263,11 @@ var init_additional_context = __esm({
|
|
|
53214
53263
|
scope: external_exports.literal("per-turn"),
|
|
53215
53264
|
data: ApprovalVerdictDataSchema
|
|
53216
53265
|
}),
|
|
53266
|
+
external_exports.object({
|
|
53267
|
+
kind: external_exports.literal("direct_notes"),
|
|
53268
|
+
scope: external_exports.literal("per-turn"),
|
|
53269
|
+
data: DirectNotesDataSchema
|
|
53270
|
+
}),
|
|
53217
53271
|
external_exports.object({
|
|
53218
53272
|
kind: external_exports.literal("context_warning"),
|
|
53219
53273
|
scope: external_exports.literal("per-turn"),
|
|
@@ -83015,7 +83069,7 @@ var init_factory = __esm({
|
|
|
83015
83069
|
}
|
|
83016
83070
|
return transformedData;
|
|
83017
83071
|
};
|
|
83018
|
-
const transformOutput = async (data, inputModel, select2 = [],
|
|
83072
|
+
const transformOutput = async (data, inputModel, select2 = [], join62) => {
|
|
83019
83073
|
const transformSingleOutput = async (data2, inputModel2, select3 = []) => {
|
|
83020
83074
|
if (!data2) return null;
|
|
83021
83075
|
const modelKey2 = getDefaultModelName(inputModel2);
|
|
@@ -83052,10 +83106,10 @@ var init_factory = __esm({
|
|
|
83052
83106
|
}
|
|
83053
83107
|
return transformedData2;
|
|
83054
83108
|
};
|
|
83055
|
-
if (!
|
|
83109
|
+
if (!join62 || Object.keys(join62).length === 0) return await transformSingleOutput(data, inputModel, select2);
|
|
83056
83110
|
const modelKey = getDefaultModelName(inputModel);
|
|
83057
83111
|
const transformedData = await transformSingleOutput(data, modelKey, select2);
|
|
83058
|
-
const requiredModels = Object.entries(
|
|
83112
|
+
const requiredModels = Object.entries(join62).map(([model, joinConfig]) => ({
|
|
83059
83113
|
modelName: model,
|
|
83060
83114
|
defaultModelName: joinConfig.modelKey ?? getDefaultModelName(model),
|
|
83061
83115
|
joinConfig
|
|
@@ -83154,8 +83208,8 @@ var init_factory = __esm({
|
|
|
83154
83208
|
if (!unsanitizedJoin) return void 0;
|
|
83155
83209
|
if (Object.keys(unsanitizedJoin).length === 0) return void 0;
|
|
83156
83210
|
const transformedJoin = {};
|
|
83157
|
-
for (const [model,
|
|
83158
|
-
if (!
|
|
83211
|
+
for (const [model, join62] of Object.entries(unsanitizedJoin)) {
|
|
83212
|
+
if (!join62) continue;
|
|
83159
83213
|
const defaultModelName = getDefaultModelName(model);
|
|
83160
83214
|
const defaultBaseModelName = getDefaultModelName(baseModel);
|
|
83161
83215
|
let foreignKeys = Object.entries(schema3[defaultModelName].fields).filter(([field, fieldAttributes]) => fieldAttributes.references && getDefaultModelName(fieldAttributes.references.model) === defaultBaseModelName);
|
|
@@ -83196,7 +83250,7 @@ var init_factory = __esm({
|
|
|
83196
83250
|
const isUnique = to === "id" ? true : foreignKeyAttributes.unique ?? false;
|
|
83197
83251
|
let limit = options.advanced?.database?.defaultFindManyLimit ?? 100;
|
|
83198
83252
|
if (isUnique) limit = 1;
|
|
83199
|
-
else if (typeof
|
|
83253
|
+
else if (typeof join62 === "object" && typeof join62.limit === "number") limit = join62.limit;
|
|
83200
83254
|
transformedJoin[getModelName(model)] = {
|
|
83201
83255
|
modelKey: model,
|
|
83202
83256
|
on: {
|
|
@@ -83429,21 +83483,21 @@ var init_factory = __esm({
|
|
|
83429
83483
|
where: unsafeWhere,
|
|
83430
83484
|
action: "findOne"
|
|
83431
83485
|
});
|
|
83432
|
-
let
|
|
83486
|
+
let join62;
|
|
83433
83487
|
let passJoinToAdapter = true;
|
|
83434
83488
|
if (!config3.disableTransformJoin) {
|
|
83435
83489
|
const result2 = transformJoinClause(modelKey, unsafeJoin, select2);
|
|
83436
83490
|
if (result2) {
|
|
83437
|
-
|
|
83491
|
+
join62 = result2.join;
|
|
83438
83492
|
select2 = result2.select;
|
|
83439
83493
|
}
|
|
83440
|
-
if (!options.advanced?.database?.joins &&
|
|
83441
|
-
} else
|
|
83494
|
+
if (!options.advanced?.database?.joins && join62 && Object.keys(join62).length > 0) passJoinToAdapter = false;
|
|
83495
|
+
} else join62 = unsafeJoin;
|
|
83442
83496
|
debugLog({ method: "findOne" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 3)}`, `${formatMethod("findOne")}:`, {
|
|
83443
83497
|
model,
|
|
83444
83498
|
where,
|
|
83445
83499
|
select: select2,
|
|
83446
|
-
join:
|
|
83500
|
+
join: join62
|
|
83447
83501
|
});
|
|
83448
83502
|
const res = await withSpan3(`db findOne ${model}`, {
|
|
83449
83503
|
[ATTR_DB_OPERATION_NAME]: "findOne",
|
|
@@ -83453,14 +83507,14 @@ var init_factory = __esm({
|
|
|
83453
83507
|
modelKey,
|
|
83454
83508
|
where,
|
|
83455
83509
|
select: select2,
|
|
83456
|
-
join: passJoinToAdapter ?
|
|
83510
|
+
join: passJoinToAdapter ? join62 : void 0
|
|
83457
83511
|
}));
|
|
83458
83512
|
debugLog({ method: "findOne" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 3)}`, `${formatMethod("findOne")} ${formatAction("DB Result")}:`, {
|
|
83459
83513
|
model,
|
|
83460
83514
|
data: res
|
|
83461
83515
|
});
|
|
83462
83516
|
let transformed = res;
|
|
83463
|
-
if (!config3.disableTransformOutput) transformed = await transformOutput(res, modelKey, select2,
|
|
83517
|
+
if (!config3.disableTransformOutput) transformed = await transformOutput(res, modelKey, select2, join62);
|
|
83464
83518
|
debugLog({ method: "findOne" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 3)}`, `${formatMethod("findOne")} ${formatAction("Parsed Result")}:`, {
|
|
83465
83519
|
model,
|
|
83466
83520
|
data: transformed
|
|
@@ -83478,23 +83532,23 @@ var init_factory = __esm({
|
|
|
83478
83532
|
where: unsafeWhere,
|
|
83479
83533
|
action: "findMany"
|
|
83480
83534
|
});
|
|
83481
|
-
let
|
|
83535
|
+
let join62;
|
|
83482
83536
|
let passJoinToAdapter = true;
|
|
83483
83537
|
if (!config3.disableTransformJoin) {
|
|
83484
83538
|
const result2 = transformJoinClause(modelKey, unsafeJoin, select2);
|
|
83485
83539
|
if (result2) {
|
|
83486
|
-
|
|
83540
|
+
join62 = result2.join;
|
|
83487
83541
|
select2 = result2.select;
|
|
83488
83542
|
}
|
|
83489
|
-
if (!options.advanced?.database?.joins &&
|
|
83490
|
-
} else
|
|
83543
|
+
if (!options.advanced?.database?.joins && join62 && Object.keys(join62).length > 0) passJoinToAdapter = false;
|
|
83544
|
+
} else join62 = unsafeJoin;
|
|
83491
83545
|
debugLog({ method: "findMany" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 3)}`, `${formatMethod("findMany")}:`, {
|
|
83492
83546
|
model,
|
|
83493
83547
|
where,
|
|
83494
83548
|
limit,
|
|
83495
83549
|
sortBy,
|
|
83496
83550
|
offset,
|
|
83497
|
-
join:
|
|
83551
|
+
join: join62
|
|
83498
83552
|
});
|
|
83499
83553
|
const res = await withSpan3(`db findMany ${model}`, {
|
|
83500
83554
|
[ATTR_DB_OPERATION_NAME]: "findMany",
|
|
@@ -83507,7 +83561,7 @@ var init_factory = __esm({
|
|
|
83507
83561
|
select: select2,
|
|
83508
83562
|
sortBy,
|
|
83509
83563
|
offset,
|
|
83510
|
-
join: passJoinToAdapter ?
|
|
83564
|
+
join: passJoinToAdapter ? join62 : void 0
|
|
83511
83565
|
}));
|
|
83512
83566
|
debugLog({ method: "findMany" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 3)}`, `${formatMethod("findMany")} ${formatAction("DB Result")}:`, {
|
|
83513
83567
|
model,
|
|
@@ -83515,7 +83569,7 @@ var init_factory = __esm({
|
|
|
83515
83569
|
});
|
|
83516
83570
|
let transformed = res;
|
|
83517
83571
|
if (!config3.disableTransformOutput) transformed = await Promise.all(res.map(async (r3) => {
|
|
83518
|
-
return await transformOutput(r3, modelKey, void 0,
|
|
83572
|
+
return await transformOutput(r3, modelKey, void 0, join62);
|
|
83519
83573
|
}));
|
|
83520
83574
|
debugLog({ method: "findMany" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 3)}`, `${formatMethod("findMany")} ${formatAction("Parsed Result")}:`, {
|
|
83521
83575
|
model,
|
|
@@ -83870,7 +83924,7 @@ var init_dist9 = __esm({
|
|
|
83870
83924
|
return sortBy.direction === "asc" ? comparison : -comparison;
|
|
83871
83925
|
});
|
|
83872
83926
|
};
|
|
83873
|
-
function convertWhereClause(where, model, modelKey,
|
|
83927
|
+
function convertWhereClause(where, model, modelKey, join62, select2) {
|
|
83874
83928
|
const baseRecords = (() => {
|
|
83875
83929
|
const table2 = activeDb2[model];
|
|
83876
83930
|
if (!table2) {
|
|
@@ -83930,14 +83984,14 @@ var init_dist9 = __esm({
|
|
|
83930
83984
|
})))));
|
|
83931
83985
|
return records;
|
|
83932
83986
|
})();
|
|
83933
|
-
if (!
|
|
83987
|
+
if (!join62) return baseRecords;
|
|
83934
83988
|
const grouped = /* @__PURE__ */ new Map();
|
|
83935
83989
|
const seenIds = /* @__PURE__ */ new Map();
|
|
83936
83990
|
for (const baseRecord of baseRecords) {
|
|
83937
83991
|
const baseId = String(baseRecord.id);
|
|
83938
83992
|
if (!grouped.has(baseId)) {
|
|
83939
83993
|
const nested = { ...baseRecord };
|
|
83940
|
-
for (const [joinModel, joinAttr] of Object.entries(
|
|
83994
|
+
for (const [joinModel, joinAttr] of Object.entries(join62)) {
|
|
83941
83995
|
const joinModelName = joinModel;
|
|
83942
83996
|
if (joinAttr.relation === "one-to-one") nested[joinModelName] = null;
|
|
83943
83997
|
else {
|
|
@@ -83948,7 +84002,7 @@ var init_dist9 = __esm({
|
|
|
83948
84002
|
grouped.set(baseId, nested);
|
|
83949
84003
|
}
|
|
83950
84004
|
const nestedEntry = grouped.get(baseId);
|
|
83951
|
-
for (const [joinModel, joinAttr] of Object.entries(
|
|
84005
|
+
for (const [joinModel, joinAttr] of Object.entries(join62)) {
|
|
83952
84006
|
const joinModelName = joinModel;
|
|
83953
84007
|
const joinTable = activeDb2[joinModelName];
|
|
83954
84008
|
if (!joinTable) {
|
|
@@ -83981,18 +84035,18 @@ var init_dist9 = __esm({
|
|
|
83981
84035
|
activeDb2[model].push(data);
|
|
83982
84036
|
return data;
|
|
83983
84037
|
},
|
|
83984
|
-
findOne: async ({ model, modelKey = model, where, select: select2, join:
|
|
83985
|
-
const res = convertWhereClause(where, model, modelKey,
|
|
83986
|
-
if (
|
|
84038
|
+
findOne: async ({ model, modelKey = model, where, select: select2, join: join62 }) => {
|
|
84039
|
+
const res = convertWhereClause(where, model, modelKey, join62, select2);
|
|
84040
|
+
if (join62) {
|
|
83987
84041
|
const resArray = res;
|
|
83988
84042
|
if (!resArray.length) return null;
|
|
83989
84043
|
return resArray[0];
|
|
83990
84044
|
}
|
|
83991
84045
|
return res[0] || null;
|
|
83992
84046
|
},
|
|
83993
|
-
findMany: async ({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join:
|
|
83994
|
-
const res = convertWhereClause(where || [], model, modelKey,
|
|
83995
|
-
if (
|
|
84047
|
+
findMany: async ({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join: join62 }) => {
|
|
84048
|
+
const res = convertWhereClause(where || [], model, modelKey, join62, select2);
|
|
84049
|
+
if (join62) {
|
|
83996
84050
|
const resArray = res;
|
|
83997
84051
|
if (!resArray.length) return [];
|
|
83998
84052
|
applySortToRecords(resArray, sortBy, modelKey);
|
|
@@ -85990,10 +86044,10 @@ var init_query_node = __esm({
|
|
|
85990
86044
|
where: node2.where ? WhereNode.cloneWithOperation(node2.where, "And", operation) : WhereNode.create(operation)
|
|
85991
86045
|
});
|
|
85992
86046
|
},
|
|
85993
|
-
cloneWithJoin(node2,
|
|
86047
|
+
cloneWithJoin(node2, join62) {
|
|
85994
86048
|
return freeze({
|
|
85995
86049
|
...node2,
|
|
85996
|
-
joins: node2.joins ? freeze([...node2.joins,
|
|
86050
|
+
joins: node2.joins ? freeze([...node2.joins, join62]) : freeze([join62])
|
|
85997
86051
|
});
|
|
85998
86052
|
},
|
|
85999
86053
|
cloneWithReturning(node2, selections) {
|
|
@@ -90504,8 +90558,8 @@ var init_with_schema_transformer = __esm({
|
|
|
90504
90558
|
this.#collectSchemableIdsFromTableExpr(node2.table, schemableIds);
|
|
90505
90559
|
}
|
|
90506
90560
|
if ("joins" in node2 && node2.joins) {
|
|
90507
|
-
for (const
|
|
90508
|
-
this.#collectSchemableIdsFromTableExpr(
|
|
90561
|
+
for (const join62 of node2.joins) {
|
|
90562
|
+
this.#collectSchemableIdsFromTableExpr(join62.table, schemableIds);
|
|
90509
90563
|
}
|
|
90510
90564
|
}
|
|
90511
90565
|
if ("using" in node2 && node2.using) {
|
|
@@ -102677,7 +102731,7 @@ var init_mssql_introspector = __esm({
|
|
|
102677
102731
|
return await this.#db.selectFrom("sys.schemas").select("name").execute();
|
|
102678
102732
|
}
|
|
102679
102733
|
async getTables(options = { withInternalKyselyTables: false }) {
|
|
102680
|
-
const rawColumns = await this.#db.selectFrom("sys.tables as tables").leftJoin("sys.schemas as table_schemas", "table_schemas.schema_id", "tables.schema_id").innerJoin("sys.columns as columns", "columns.object_id", "tables.object_id").innerJoin("sys.types as types", "types.user_type_id", "columns.user_type_id").leftJoin("sys.schemas as type_schemas", "type_schemas.schema_id", "types.schema_id").leftJoin("sys.extended_properties as comments", (
|
|
102734
|
+
const rawColumns = await this.#db.selectFrom("sys.tables as tables").leftJoin("sys.schemas as table_schemas", "table_schemas.schema_id", "tables.schema_id").innerJoin("sys.columns as columns", "columns.object_id", "tables.object_id").innerJoin("sys.types as types", "types.user_type_id", "columns.user_type_id").leftJoin("sys.schemas as type_schemas", "type_schemas.schema_id", "types.schema_id").leftJoin("sys.extended_properties as comments", (join62) => join62.onRef("comments.major_id", "=", "tables.object_id").onRef("comments.minor_id", "=", "columns.column_id").on("comments.name", "=", "MS_Description")).$if(!options.withInternalKyselyTables, (qb) => qb.where("tables.name", "!=", DEFAULT_MIGRATION_TABLE).where("tables.name", "!=", DEFAULT_MIGRATION_LOCK_TABLE)).select([
|
|
102681
102735
|
"tables.name as table_name",
|
|
102682
102736
|
(eb) => eb.ref("tables.type").$castTo().as("table_type"),
|
|
102683
102737
|
"table_schemas.name as table_schema_name",
|
|
@@ -102692,7 +102746,7 @@ var init_mssql_introspector = __esm({
|
|
|
102692
102746
|
"types.name as type_name",
|
|
102693
102747
|
"type_schemas.name as type_schema_name",
|
|
102694
102748
|
"comments.value as column_comment"
|
|
102695
|
-
]).unionAll(this.#db.selectFrom("sys.views as views").leftJoin("sys.schemas as view_schemas", "view_schemas.schema_id", "views.schema_id").innerJoin("sys.columns as columns", "columns.object_id", "views.object_id").innerJoin("sys.types as types", "types.user_type_id", "columns.user_type_id").leftJoin("sys.schemas as type_schemas", "type_schemas.schema_id", "types.schema_id").leftJoin("sys.extended_properties as comments", (
|
|
102749
|
+
]).unionAll(this.#db.selectFrom("sys.views as views").leftJoin("sys.schemas as view_schemas", "view_schemas.schema_id", "views.schema_id").innerJoin("sys.columns as columns", "columns.object_id", "views.object_id").innerJoin("sys.types as types", "types.user_type_id", "columns.user_type_id").leftJoin("sys.schemas as type_schemas", "type_schemas.schema_id", "types.schema_id").leftJoin("sys.extended_properties as comments", (join62) => join62.onRef("comments.major_id", "=", "views.object_id").onRef("comments.minor_id", "=", "columns.column_id").on("comments.name", "=", "MS_Description")).select([
|
|
102696
102750
|
"views.name as table_name",
|
|
102697
102751
|
"views.type as table_type",
|
|
102698
102752
|
"view_schemas.name as table_schema_name",
|
|
@@ -103919,10 +103973,10 @@ var init_dist11 = __esm({
|
|
|
103919
103973
|
mysqlNoIdWarned = true;
|
|
103920
103974
|
logger2.warn(`[Kysely Adapter] MySQL does not support INSERT...RETURNING. With generateId set to false, the adapter uses best-effort fallback strategies (unique columns, full-field match) to retrieve inserted rows. For reliable behavior, use Better Auth's default ID generation, a custom generateId function, or generateId: "serial" for auto-increment.`);
|
|
103921
103975
|
}
|
|
103922
|
-
const selectAllJoins = (
|
|
103976
|
+
const selectAllJoins = (join62) => {
|
|
103923
103977
|
const allSelects = [];
|
|
103924
103978
|
const allSelectsStr = [];
|
|
103925
|
-
if (
|
|
103979
|
+
if (join62) for (const [joinModel, joinConfig] of Object.entries(join62)) {
|
|
103926
103980
|
const fields = schema3[joinConfig.modelKey ?? getDefaultModelName(joinModel)]?.fields;
|
|
103927
103981
|
const [_joinModelSchema, joinModelName] = joinModel.includes(".") ? joinModel.split(".") : [void 0, joinModel];
|
|
103928
103982
|
if (!fields) continue;
|
|
@@ -104147,7 +104201,7 @@ var init_dist11 = __esm({
|
|
|
104147
104201
|
async create({ data, model, modelKey = model }) {
|
|
104148
104202
|
return await withReturning(data, db2.insertInto(model).values(data), model, modelKey, []);
|
|
104149
104203
|
},
|
|
104150
|
-
async findOne({ model, modelKey = model, where, select: select2, join:
|
|
104204
|
+
async findOne({ model, modelKey = model, where, select: select2, join: join62 }) {
|
|
104151
104205
|
const { and: and2, or: or2 } = convertWhereClause(model, modelKey, where);
|
|
104152
104206
|
let query = db2.selectFrom((eb) => {
|
|
104153
104207
|
let b2 = eb.selectFrom(model);
|
|
@@ -104160,19 +104214,19 @@ var init_dist11 = __esm({
|
|
|
104160
104214
|
else b2 = b2.selectAll();
|
|
104161
104215
|
return b2.as("primary");
|
|
104162
104216
|
}).selectAll("primary");
|
|
104163
|
-
if (
|
|
104217
|
+
if (join62) for (const [joinModel, joinAttr] of Object.entries(join62)) {
|
|
104164
104218
|
const [_joinModelSchema, joinModelName] = joinModel.includes(".") ? joinModel.split(".") : [void 0, joinModel];
|
|
104165
|
-
query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (
|
|
104219
|
+
query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join63) => join63.onRef(`join_${joinModelName}.${joinAttr.on.to}`, "=", `primary.${joinAttr.on.from}`));
|
|
104166
104220
|
}
|
|
104167
|
-
const { allSelectsStr, allSelects } = selectAllJoins(
|
|
104221
|
+
const { allSelectsStr, allSelects } = selectAllJoins(join62);
|
|
104168
104222
|
query = query.select(allSelects);
|
|
104169
104223
|
const res = await query.execute();
|
|
104170
104224
|
if (!res || !Array.isArray(res) || res.length === 0) return null;
|
|
104171
104225
|
const row2 = res[0];
|
|
104172
|
-
if (
|
|
104226
|
+
if (join62) return processJoinedResults(res, join62, allSelectsStr)[0];
|
|
104173
104227
|
return row2;
|
|
104174
104228
|
},
|
|
104175
|
-
async findMany({ model, modelKey = model, where, limit, select: select2, offset, sortBy, join:
|
|
104229
|
+
async findMany({ model, modelKey = model, where, limit, select: select2, offset, sortBy, join: join62 }) {
|
|
104176
104230
|
const { and: and2, or: or2 } = convertWhereClause(model, modelKey, where);
|
|
104177
104231
|
let query = db2.selectFrom((eb) => {
|
|
104178
104232
|
let b2 = eb.selectFrom(model);
|
|
@@ -104201,11 +104255,11 @@ var init_dist11 = __esm({
|
|
|
104201
104255
|
else b2 = b2.selectAll();
|
|
104202
104256
|
return b2.as("primary");
|
|
104203
104257
|
}).selectAll("primary");
|
|
104204
|
-
if (
|
|
104258
|
+
if (join62) for (const [joinModel, joinAttr] of Object.entries(join62)) {
|
|
104205
104259
|
const [_joinModelSchema, joinModelName] = joinModel.includes(".") ? joinModel.split(".") : [void 0, joinModel];
|
|
104206
|
-
query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (
|
|
104260
|
+
query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join63) => join63.onRef(`join_${joinModelName}.${joinAttr.on.to}`, "=", `primary.${joinAttr.on.from}`));
|
|
104207
104261
|
}
|
|
104208
|
-
const { allSelectsStr, allSelects } = selectAllJoins(
|
|
104262
|
+
const { allSelectsStr, allSelects } = selectAllJoins(join62);
|
|
104209
104263
|
query = query.select(allSelects);
|
|
104210
104264
|
if (sortBy?.field) query = query.orderBy(`${getFieldName({
|
|
104211
104265
|
model: modelKey,
|
|
@@ -104213,7 +104267,7 @@ var init_dist11 = __esm({
|
|
|
104213
104267
|
})}`, sortBy.direction);
|
|
104214
104268
|
const res = await query.execute();
|
|
104215
104269
|
if (!res) return [];
|
|
104216
|
-
if (
|
|
104270
|
+
if (join62) return processJoinedResults(res, join62, allSelectsStr);
|
|
104217
104271
|
return res;
|
|
104218
104272
|
},
|
|
104219
104273
|
async update({ model, modelKey = model, where, update: values2 }) {
|
|
@@ -107146,7 +107200,7 @@ var init_sql2 = __esm({
|
|
|
107146
107200
|
return new SQL([new StringChunk(str2)]);
|
|
107147
107201
|
}
|
|
107148
107202
|
sql22.raw = raw;
|
|
107149
|
-
function
|
|
107203
|
+
function join62(chunks, separator) {
|
|
107150
107204
|
const result2 = [];
|
|
107151
107205
|
for (const [i2, chunk] of chunks.entries()) {
|
|
107152
107206
|
if (i2 > 0 && separator !== void 0) {
|
|
@@ -107156,7 +107210,7 @@ var init_sql2 = __esm({
|
|
|
107156
107210
|
}
|
|
107157
107211
|
return new SQL(result2);
|
|
107158
107212
|
}
|
|
107159
|
-
sql22.join =
|
|
107213
|
+
sql22.join = join62;
|
|
107160
107214
|
function identifier(value) {
|
|
107161
107215
|
return new Name(value);
|
|
107162
107216
|
}
|
|
@@ -108507,10 +108561,10 @@ var init_dist14 = __esm({
|
|
|
108507
108561
|
checkMissingFields(table2, modelKey, values2);
|
|
108508
108562
|
return await withReturning(model, modelKey, db2.insert(table2).values(values2), values2);
|
|
108509
108563
|
},
|
|
108510
|
-
async findOne({ model, modelKey = model, where, select: select2, join:
|
|
108564
|
+
async findOne({ model, modelKey = model, where, select: select2, join: join62 }) {
|
|
108511
108565
|
const table2 = getSchema2(model);
|
|
108512
108566
|
const clause = convertWhereClause(where, model, modelKey);
|
|
108513
|
-
if (
|
|
108567
|
+
if (join62) {
|
|
108514
108568
|
const queryModel = getQueryModel(model);
|
|
108515
108569
|
if (!db2.query || !queryModel) {
|
|
108516
108570
|
logger2.error(`[# Drizzle Adapter]: The model "${model}" was not found in the query object. Please update your Drizzle schema to include relations or re-generate using "npx auth@latest generate".`);
|
|
@@ -108520,7 +108574,7 @@ var init_dist14 = __esm({
|
|
|
108520
108574
|
const renamedJoinResults = [];
|
|
108521
108575
|
const relationKeys = getRelationKeysByModel().get(queryModel);
|
|
108522
108576
|
includes = {};
|
|
108523
|
-
const joinEntries = Object.entries(
|
|
108577
|
+
const joinEntries = Object.entries(join62);
|
|
108524
108578
|
for (const [joinModel, joinAttr] of joinEntries) {
|
|
108525
108579
|
const limit = joinAttr.limit ?? options.advanced?.database?.defaultFindManyLimit ?? 100;
|
|
108526
108580
|
const isUnique = joinAttr.relation === "one-to-one";
|
|
@@ -108562,11 +108616,11 @@ var init_dist14 = __esm({
|
|
|
108562
108616
|
if (!res.length) return null;
|
|
108563
108617
|
return res[0];
|
|
108564
108618
|
},
|
|
108565
|
-
async findMany({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join:
|
|
108619
|
+
async findMany({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join: join62 }) {
|
|
108566
108620
|
const table2 = getSchema2(model);
|
|
108567
108621
|
const clause = where ? convertWhereClause(where, model, modelKey) : [];
|
|
108568
108622
|
const sortFn = sortBy?.direction === "desc" ? desc : asc;
|
|
108569
|
-
if (
|
|
108623
|
+
if (join62) {
|
|
108570
108624
|
const queryModel = getQueryModel(model);
|
|
108571
108625
|
if (!db2.query || !queryModel) {
|
|
108572
108626
|
logger2.error(`[# Drizzle Adapter]: The model "${model}" was not found in the query object. Please update your Drizzle schema to include relations or re-generate using "npx auth@latest generate".`);
|
|
@@ -108576,7 +108630,7 @@ var init_dist14 = __esm({
|
|
|
108576
108630
|
const renamedJoinResults = [];
|
|
108577
108631
|
const relationKeys = getRelationKeysByModel().get(queryModel);
|
|
108578
108632
|
includes = {};
|
|
108579
|
-
const joinEntries = Object.entries(
|
|
108633
|
+
const joinEntries = Object.entries(join62);
|
|
108580
108634
|
for (const [joinModel, joinAttr] of joinEntries) {
|
|
108581
108635
|
const isUnique = joinAttr.relation === "one-to-one";
|
|
108582
108636
|
const limit2 = joinAttr.limit ?? options.advanced?.database?.defaultFindManyLimit ?? 100;
|
|
@@ -120183,7 +120237,7 @@ var init_select2 = __esm({
|
|
|
120183
120237
|
const baseTableName = this.tableName;
|
|
120184
120238
|
const tableName = getTableLikeName(table2);
|
|
120185
120239
|
for (const item of extractUsedTable(table2)) this.usedTables.add(item);
|
|
120186
|
-
if (typeof tableName === "string" && this.config.joins?.some((
|
|
120240
|
+
if (typeof tableName === "string" && this.config.joins?.some((join62) => join62.alias === tableName)) {
|
|
120187
120241
|
throw new Error(`Alias "${tableName}" is already used in this query`);
|
|
120188
120242
|
}
|
|
120189
120243
|
if (!this.isPartialSelect) {
|
|
@@ -121069,7 +121123,7 @@ var init_update = __esm({
|
|
|
121069
121123
|
createJoin(joinType) {
|
|
121070
121124
|
return (table2, on) => {
|
|
121071
121125
|
const tableName = getTableLikeName(table2);
|
|
121072
|
-
if (typeof tableName === "string" && this.config.joins.some((
|
|
121126
|
+
if (typeof tableName === "string" && this.config.joins.some((join62) => join62.alias === tableName)) {
|
|
121073
121127
|
throw new Error(`Alias "${tableName}" is already used in this query`);
|
|
121074
121128
|
}
|
|
121075
121129
|
if (typeof on === "function") {
|
|
@@ -123798,6 +123852,11 @@ var init_auth = __esm({
|
|
|
123798
123852
|
updatedAt: integer2("updated_at", { mode: "timestamp_ms" }).$onUpdate(() => /* @__PURE__ */ new Date()).notNull(),
|
|
123799
123853
|
ipAddress: text("ip_address"),
|
|
123800
123854
|
userAgent: text("user_agent"),
|
|
123855
|
+
// The way the sign-in that made this session came in: 'local', 'wifi',
|
|
123856
|
+
// 'tunnel', 'managed', 'network' or 'hub'. A session works only on that
|
|
123857
|
+
// route (DOR-2969). Null for a session made before it was recorded, which
|
|
123858
|
+
// works only on this computer.
|
|
123859
|
+
route: text("route"),
|
|
123801
123860
|
userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
|
|
123802
123861
|
// A sign-in on a shared or public computer (A4, DOR-2936): the cookie ends
|
|
123803
123862
|
// with the browser, the session cannot outlive a working day, and the app
|
|
@@ -126222,7 +126281,8 @@ var init_notifications = __esm({
|
|
|
126222
126281
|
"community.owner-replacement",
|
|
126223
126282
|
"heartbeat.credits-offer",
|
|
126224
126283
|
"connector.destructive_pending",
|
|
126225
|
-
"connector.destructive_executed"
|
|
126284
|
+
"connector.destructive_executed",
|
|
126285
|
+
"web.new_device"
|
|
126226
126286
|
]
|
|
126227
126287
|
}).notNull(),
|
|
126228
126288
|
/** How loud this was allowed to be. Copied from the registry at write time. */
|
|
@@ -128889,6 +128949,18 @@ var init_setup_code_gate = __esm({
|
|
|
128889
128949
|
}
|
|
128890
128950
|
});
|
|
128891
128951
|
|
|
128952
|
+
// ../../apps/server/src/services/core/auth/sessions/session-route.ts
|
|
128953
|
+
var WIFI_SESSION_MAX_SECONDS;
|
|
128954
|
+
var init_session_route = __esm({
|
|
128955
|
+
"../../apps/server/src/services/core/auth/sessions/session-route.ts"() {
|
|
128956
|
+
"use strict";
|
|
128957
|
+
init_request_classifier();
|
|
128958
|
+
init_server_role();
|
|
128959
|
+
init_registration_policy();
|
|
128960
|
+
WIFI_SESSION_MAX_SECONDS = 7 * 24 * 60 * 60;
|
|
128961
|
+
}
|
|
128962
|
+
});
|
|
128963
|
+
|
|
128892
128964
|
// ../../apps/server/src/services/core/auth/cookie-security.ts
|
|
128893
128965
|
var AUTH_COOKIES_SECURE;
|
|
128894
128966
|
var init_cookie_security = __esm({
|
|
@@ -128900,7 +128972,7 @@ var init_cookie_security = __esm({
|
|
|
128900
128972
|
});
|
|
128901
128973
|
|
|
128902
128974
|
// ../shared/src/session-relay.ts
|
|
128903
|
-
var SESSION_RELAY_MAX_FRAME_LENGTH, SESSION_RELAY_MAX_MESSAGE_LENGTH, SESSION_RELAY_MAX_CHATS, SESSION_RELAY_IDLE_CLOSE_MS, VersionSchema, RelayVersionRangeSchema, AdvertisedFeaturesSchema, RequestIdSchema, StreamIdSchema, SessionIdSchema, AgentIdSchema, ToolCallIdSchema, ResumeCursorSchema, base64url3, ChatsListRequestSchema, SessionStreamRequestSchema, SessionSendRequestSchema, SessionInterruptRequestSchema, ApprovalDecisionSchema, InteractionChallengeRequestSchema, RelayApprovalProofSchema, InteractionAnswerSchema, InteractionRespondRequestSchema, RelayRequestSchema, RelayChatSummarySchema, RelayResultBodySchemas, RelayErrorSchema, exactBase64url, RelayEphemeralKeySchema, RelaySignatureSchema, RelayNonceSchema, RelayPinnedHubKeySchema, RelayHelloFrameSchema, RelayHandshakeAnswerSchema, RelaySealedFrameSchema, HeartbeatFrameSchema, RelayWebFrameSchema, RelayStreamFrameSchema, RelayComputerFrameSchema, RelayFinishFrameSchema;
|
|
128975
|
+
var SESSION_RELAY_MAX_FRAME_LENGTH, SESSION_RELAY_MAX_MESSAGE_LENGTH, SESSION_RELAY_MAX_CHATS, SESSION_RELAY_IDLE_CLOSE_MS, VersionSchema, RelayVersionRangeSchema, AdvertisedFeaturesSchema, RequestIdSchema, StreamIdSchema, SessionIdSchema, AgentIdSchema, ToolCallIdSchema, ResumeCursorSchema, NO_CONTROL, INVISIBLE, RelayDisplayNameSchema, RelayDeviceSchema, base64url3, ChatsListRequestSchema, SessionStreamRequestSchema, SessionSendRequestSchema, SessionInterruptRequestSchema, ApprovalDecisionSchema, InteractionChallengeRequestSchema, RelayApprovalProofSchema, InteractionAnswerSchema, InteractionRespondRequestSchema, RelayRequestSchema, RelayChatSummarySchema, RelayResultBodySchemas, RelayErrorSchema, exactBase64url, RelayEphemeralKeySchema, RelaySignatureSchema, RelayNonceSchema, RelayPinnedHubKeySchema, RelayHelloFrameSchema, RelayHandshakeAnswerSchema, RelaySealedFrameSchema, HeartbeatFrameSchema, RelayWebFrameSchema, RelayStreamFrameSchema, RelayComputerFrameSchema, RelayFinishFrameSchema;
|
|
128904
128976
|
var init_session_relay = __esm({
|
|
128905
128977
|
"../shared/src/session-relay.ts"() {
|
|
128906
128978
|
"use strict";
|
|
@@ -128919,6 +128991,13 @@ var init_session_relay = __esm({
|
|
|
128919
128991
|
AgentIdSchema = external_exports.string().regex(/^[0-9A-HJKMNP-TV-Z]{26}$/);
|
|
128920
128992
|
ToolCallIdSchema = external_exports.string().min(1).max(256).regex(/^[\w.:-]+$/);
|
|
128921
128993
|
ResumeCursorSchema = external_exports.string().max(256).regex(/^[0-9a-f-]+-\d+-g\d+-\d+$/);
|
|
128994
|
+
NO_CONTROL = /^[^\u0000-\u001f\u007f]*$/;
|
|
128995
|
+
INVISIBLE = /[\p{Cf}\u2028\u2029]/u;
|
|
128996
|
+
RelayDisplayNameSchema = external_exports.string().min(1).max(64).regex(NO_CONTROL).refine((name2) => name2.trim() === name2, "no leading or trailing whitespace").refine((name2) => !INVISIBLE.test(name2), "no invisible characters");
|
|
128997
|
+
RelayDeviceSchema = external_exports.strictObject({
|
|
128998
|
+
id: external_exports.string().min(8).max(64).regex(/^[A-Za-z0-9_-]+$/),
|
|
128999
|
+
label: RelayDisplayNameSchema
|
|
129000
|
+
});
|
|
128922
129001
|
base64url3 = (max2) => external_exports.string().min(1).max(max2).regex(/^[A-Za-z0-9_-]+$/);
|
|
128923
129002
|
ChatsListRequestSchema = external_exports.strictObject({
|
|
128924
129003
|
op: external_exports.literal("chats.list"),
|
|
@@ -129061,7 +129140,13 @@ var init_session_relay = __esm({
|
|
|
129061
129140
|
* `stream.frame`s and one `stream.end`, which carries the refusal if it never
|
|
129062
129141
|
* opened.
|
|
129063
129142
|
*/
|
|
129064
|
-
external_exports.strictObject({
|
|
129143
|
+
external_exports.strictObject({
|
|
129144
|
+
type: external_exports.literal("request"),
|
|
129145
|
+
id: RequestIdSchema,
|
|
129146
|
+
request: RelayRequestSchema,
|
|
129147
|
+
/** The browser that asked; sent only to a computer that advertised `request.device`. */
|
|
129148
|
+
device: RelayDeviceSchema.optional()
|
|
129149
|
+
}),
|
|
129065
129150
|
external_exports.strictObject({ type: external_exports.literal("stream.close"), streamId: StreamIdSchema }),
|
|
129066
129151
|
/**
|
|
129067
129152
|
* How many viewers have a chat of this computer open right now. At 0, and
|
|
@@ -129109,7 +129194,7 @@ var init_session_relay = __esm({
|
|
|
129109
129194
|
});
|
|
129110
129195
|
|
|
129111
129196
|
// ../shared/src/session-relay-link.ts
|
|
129112
|
-
var RELAY_LINK_CODE_TTL_MS, RelayLinkComputerIdSchema, Sha256Base64urlSchema,
|
|
129197
|
+
var RELAY_LINK_CODE_TTL_MS, RelayLinkComputerIdSchema, Sha256Base64urlSchema, NO_CONTROL2, RelayLinkComputerNameSchema, RelayLinkRequestSchema, RelayLinkResponseSchema, HubComputerSummarySchema, HubComputerListSchema, HubLinkCodeSchema, SessionRelayLevelSchema, SessionRelayStatusSchema, StepUpPasswordSchema, SessionRelayLinkBodySchema, SessionRelayLevelBodySchema, SessionRelayResumeBodySchema, SessionRelayLinkRefusalSchema, SessionRelayDeviceSchema, SessionRelayPresenceSchema, SessionRelayDeviceListSchema;
|
|
129113
129198
|
var init_session_relay_link = __esm({
|
|
129114
129199
|
"../shared/src/session-relay-link.ts"() {
|
|
129115
129200
|
init_zod();
|
|
@@ -129117,9 +129202,8 @@ var init_session_relay_link = __esm({
|
|
|
129117
129202
|
RELAY_LINK_CODE_TTL_MS = 10 * 60 * 1e3;
|
|
129118
129203
|
RelayLinkComputerIdSchema = external_exports.string().min(1).max(64).regex(/^[\w.:-]+$/);
|
|
129119
129204
|
Sha256Base64urlSchema = external_exports.string().length(43).regex(/^[A-Za-z0-9_-]+$/);
|
|
129120
|
-
|
|
129121
|
-
|
|
129122
|
-
RelayLinkComputerNameSchema = external_exports.string().min(1).max(64).regex(NO_CONTROL).refine((name2) => name2.trim() === name2, "no leading or trailing whitespace").refine((name2) => !INVISIBLE.test(name2), "no invisible characters");
|
|
129205
|
+
NO_CONTROL2 = /^[^\u0000-\u001f\u007f]*$/;
|
|
129206
|
+
RelayLinkComputerNameSchema = RelayDisplayNameSchema;
|
|
129123
129207
|
RelayLinkRequestSchema = external_exports.strictObject({
|
|
129124
129208
|
v: external_exports.literal(1),
|
|
129125
129209
|
/** The code part of the link code, as the owner pasted it. */
|
|
@@ -129137,9 +129221,9 @@ var init_session_relay_link = __esm({
|
|
|
129137
129221
|
/** The hub's Ed25519 public key, raw 32 bytes base64url. Pin this one. */
|
|
129138
129222
|
hubKey: RelayPinnedHubKeySchema,
|
|
129139
129223
|
/** The hub owner's account id at `issuer`. */
|
|
129140
|
-
ownerAccountId: external_exports.string().min(1).max(128).regex(
|
|
129224
|
+
ownerAccountId: external_exports.string().min(1).max(128).regex(NO_CONTROL2).optional(),
|
|
129141
129225
|
/** The issuer that account id belongs to. */
|
|
129142
|
-
issuer: external_exports.string().min(1).max(512).startsWith("https://").regex(
|
|
129226
|
+
issuer: external_exports.string().min(1).max(512).startsWith("https://").regex(NO_CONTROL2).optional(),
|
|
129143
129227
|
signature: RelaySignatureSchema
|
|
129144
129228
|
});
|
|
129145
129229
|
HubComputerSummarySchema = external_exports.object({
|
|
@@ -129210,6 +129294,23 @@ var init_session_relay_link = __esm({
|
|
|
129210
129294
|
/** This computer is linked to a DorkOS account that could not be read just now. */
|
|
129211
129295
|
"account-unreadable"
|
|
129212
129296
|
]);
|
|
129297
|
+
SessionRelayDeviceSchema = external_exports.object({
|
|
129298
|
+
label: external_exports.string(),
|
|
129299
|
+
/** When this computer first saw it (ISO 8601). */
|
|
129300
|
+
firstSeenAt: external_exports.string(),
|
|
129301
|
+
/** When it last asked this computer for something (ISO 8601). */
|
|
129302
|
+
lastSeenAt: external_exports.string()
|
|
129303
|
+
});
|
|
129304
|
+
SessionRelayPresenceSchema = external_exports.object({
|
|
129305
|
+
active: external_exports.boolean(),
|
|
129306
|
+
/** When it became active (ISO 8601); absent while not active. */
|
|
129307
|
+
since: external_exports.string().optional(),
|
|
129308
|
+
/** The browsers seen since then, most recent first; empty while not active. */
|
|
129309
|
+
devices: external_exports.array(SessionRelayDeviceSchema)
|
|
129310
|
+
});
|
|
129311
|
+
SessionRelayDeviceListSchema = external_exports.object({
|
|
129312
|
+
devices: external_exports.array(SessionRelayDeviceSchema)
|
|
129313
|
+
});
|
|
129213
129314
|
}
|
|
129214
129315
|
});
|
|
129215
129316
|
|
|
@@ -129224,6 +129325,7 @@ var init_session_gate = __esm({
|
|
|
129224
129325
|
init_server_role();
|
|
129225
129326
|
init_public_computer();
|
|
129226
129327
|
init_session_relay_link();
|
|
129328
|
+
init_session_route();
|
|
129227
129329
|
}
|
|
129228
129330
|
});
|
|
129229
129331
|
|
|
@@ -129265,6 +129367,7 @@ var init_auth2 = __esm({
|
|
|
129265
129367
|
init_server_role();
|
|
129266
129368
|
init_seed_legacy_mcp_key();
|
|
129267
129369
|
init_setup_code_gate();
|
|
129370
|
+
init_session_route();
|
|
129268
129371
|
init_setup_code();
|
|
129269
129372
|
init_cookie_security();
|
|
129270
129373
|
init_session_gate();
|
|
@@ -129313,7 +129416,6 @@ function defuseSystemTags(text3, tagNames) {
|
|
|
129313
129416
|
var IDENTITY_MAX_LENGTH, INVISIBLE_FORMAT, CONTROL_CHARS, PATTERN_CACHE;
|
|
129314
129417
|
var init_untrusted_text = __esm({
|
|
129315
129418
|
"../shared/src/untrusted-text.ts"() {
|
|
129316
|
-
"use strict";
|
|
129317
129419
|
IDENTITY_MAX_LENGTH = 80;
|
|
129318
129420
|
INVISIBLE_FORMAT = /[\u00ad\u200b-\u200f\u202a-\u202e\u2060-\u2064\ufeff\ufff9-\ufffb]/g;
|
|
129319
129421
|
CONTROL_CHARS = /[\u0000-\u001f\u007f-\u009f]/g;
|
|
@@ -129722,6 +129824,9 @@ var init_config_disclosure = __esm({
|
|
|
129722
129824
|
// work runs on this machine, names no credential and no person, and an agent
|
|
129723
129825
|
// that can see it can say why a session behaves the way it does.
|
|
129724
129826
|
"runtimes.claudeCode.persistentSession": "expose",
|
|
129827
|
+
// How many agents may run at once here (DOR-3012). A number about this
|
|
129828
|
+
// machine, naming no credential and no person.
|
|
129829
|
+
"runtimes.claudeCode.maxWarmProcesses": "expose",
|
|
129725
129830
|
"runtimes.opencode.defaultModel": "expose",
|
|
129726
129831
|
"runtimes.codex.defaultModel": "expose",
|
|
129727
129832
|
"runtimes.codex.defaultEffort": "expose",
|
|
@@ -130479,6 +130584,9 @@ var init_config_write_policy = __esm({
|
|
|
130479
130584
|
// what makes the verdict cheap: refusing the agent takes nothing away from the
|
|
130480
130585
|
// person, who was never going to reach for a config door to begin with.
|
|
130481
130586
|
"runtimes.claudeCode.persistentSession": "operator-only",
|
|
130587
|
+
// How many agents may run at once (DOR-3012): memory on this machine, so the
|
|
130588
|
+
// person sets it, like `scheduler.maxConcurrentRuns`.
|
|
130589
|
+
"runtimes.claudeCode.maxWarmProcesses": "operator-only",
|
|
130482
130590
|
"runtimes.opencode.defaultModel": "agent-writable",
|
|
130483
130591
|
"runtimes.codex.defaultModel": "agent-writable",
|
|
130484
130592
|
"runtimes.codex.defaultEffort": "agent-writable",
|
|
@@ -130785,6 +130893,9 @@ var init_config_write_policy = __esm({
|
|
|
130785
130893
|
// and the wipe floor says an agent may not widen it back (DOR-1505).
|
|
130786
130894
|
"uploads.allowedTypes",
|
|
130787
130895
|
"runtimes.claudeCode.persistentSession",
|
|
130896
|
+
// How many agents may run at once: a person who lowered it to save memory
|
|
130897
|
+
// must not have an agent raise it back (DOR-3012).
|
|
130898
|
+
"runtimes.claudeCode.maxWarmProcesses",
|
|
130788
130899
|
"scheduler.maxConcurrentRuns",
|
|
130789
130900
|
// Whether the computer stays awake for the work, and whether it is woken
|
|
130790
130901
|
// for it: battery, and whether the machine is on while nobody is there.
|
|
@@ -131170,21 +131281,45 @@ var init_constants9 = __esm({
|
|
|
131170
131281
|
*/
|
|
131171
131282
|
WARM_IDLE_MS: 5 * 60 * 1e3,
|
|
131172
131283
|
/**
|
|
131173
|
-
*
|
|
131284
|
+
* The fewest sessions that may hold a subprocess at once when the ceiling is
|
|
131285
|
+
* sized automatically (spec §4.4; DOR-3012).
|
|
131174
131286
|
*
|
|
131175
|
-
*
|
|
131176
|
-
* two are deliberately different numbers.
|
|
131177
|
-
*
|
|
131178
|
-
*
|
|
131179
|
-
*
|
|
131287
|
+
* The ceiling counts PROCESSES; `MAX_SESSIONS` (50) counts session RECORDS,
|
|
131288
|
+
* and the two are deliberately different numbers. It is set by
|
|
131289
|
+
* `runtimes.claudeCode.maxWarmProcesses`, and left unset it is sized to the
|
|
131290
|
+
* machine: one process per {@link SESSIONS.WARM_SESSION_RAM_GB} of memory,
|
|
131291
|
+
* never fewer than this and never more than
|
|
131292
|
+
* {@link SESSIONS.MAX_WARM_SESSIONS_AUTO}. Twelve was the fixed ceiling until
|
|
131293
|
+
* DOR-3012, and a machine with 48 GB filled it with 5.5 GB in use.
|
|
131180
131294
|
*
|
|
131181
|
-
* It is
|
|
131182
|
-
*
|
|
131183
|
-
*
|
|
131184
|
-
*
|
|
131185
|
-
* refused.
|
|
131295
|
+
* It is **not** a refusal ceiling in the way `MAX_SESSIONS` is. Warmth is a
|
|
131296
|
+
* cache, so a launch past it reclaims the least recently used warm process,
|
|
131297
|
+
* and when nothing is reclaimable — every process mid-turn or parked on a
|
|
131298
|
+
* person — it waits for one to come free ({@link SESSIONS.WARM_SLOT_WAIT_MS}).
|
|
131186
131299
|
*/
|
|
131187
|
-
|
|
131300
|
+
MIN_WARM_SESSIONS: 12,
|
|
131301
|
+
/** The most an automatically sized warm ceiling allows; see {@link SESSIONS.MIN_WARM_SESSIONS}. */
|
|
131302
|
+
MAX_WARM_SESSIONS_AUTO: 32,
|
|
131303
|
+
/**
|
|
131304
|
+
* Memory an automatically sized ceiling budgets per warm process, in GB. A
|
|
131305
|
+
* busy claude-code process measured about 0.5 GB on 2026-10-18; four times
|
|
131306
|
+
* that leaves room for its MCP children and for everything else on the
|
|
131307
|
+
* machine.
|
|
131308
|
+
*/
|
|
131309
|
+
WARM_SESSION_RAM_GB: 2,
|
|
131310
|
+
/**
|
|
131311
|
+
* How long a turn waits for a warm slot when every process is busy, before it
|
|
131312
|
+
* is refused in plain words (DOR-3012).
|
|
131313
|
+
*
|
|
131314
|
+
* Long on purpose: a full ceiling is the busiest moment a room has, and a
|
|
131315
|
+
* late answer beats a failed one. Every busy process frees its slot when its
|
|
131316
|
+
* turn ends, so a wait this long means every agent sat on one turn for most
|
|
131317
|
+
* of an hour. Kept under the room's default late-reply ceiling (60 min) so the
|
|
131318
|
+
* room hears the reason rather than giving up first. The turn says it is
|
|
131319
|
+
* waiting on a beat (`SLOT_WAIT_BEAT_MS`), which keeps the stall guard from
|
|
131320
|
+
* mistaking the wait for a stalled turn.
|
|
131321
|
+
*/
|
|
131322
|
+
WARM_SLOT_WAIT_MS: 45 * 60 * 1e3,
|
|
131188
131323
|
/**
|
|
131189
131324
|
* How long a warm process must be CONTINUOUSLY quiet before its busy spell is
|
|
131190
131325
|
* over (spec `warm-process-lifecycle` D1).
|
|
@@ -131206,7 +131341,7 @@ var init_constants9 = __esm({
|
|
|
131206
131341
|
* The same four hours, and the same reasoning, as
|
|
131207
131342
|
* {@link SESSIONS.INTERACTION_PARK_CEILING_MS}: a hold with no bound is a
|
|
131208
131343
|
* resource leak with a story attached, and twelve processes pinned by helpers
|
|
131209
|
-
* that will never finish fill
|
|
131344
|
+
* that will never finish fill the warm ceiling exactly as a ceiling's worth of parked
|
|
131210
131345
|
* ones do. Deliberately a SEPARATE constant from the person-wait ceiling even
|
|
131211
131346
|
* though both are four hours: one bounds how long DorkOS waits for a person,
|
|
131212
131347
|
* the other how long it waits for an agent, and a future change to either
|
|
@@ -143029,11 +143164,11 @@ function globalInstallReasonOf(plugin, shared) {
|
|
|
143029
143164
|
namedSkills(plugin.skills.map((skill) => skill.name)),
|
|
143030
143165
|
shared
|
|
143031
143166
|
);
|
|
143032
|
-
const
|
|
143167
|
+
const join62 = (into) => shared ? into : `${into}${into.endsWith(".") ? "" : "."} ${GLOBAL_INSTALL_SHARE_OFFER}`;
|
|
143033
143168
|
const timed = plugin.skills.filter((skill) => skill.hasSchedule);
|
|
143034
|
-
if (timed.length === 0) return
|
|
143169
|
+
if (timed.length === 0) return join62(lead);
|
|
143035
143170
|
const allLinked = timed.every((skill) => skill.linkedInDorkHome === true);
|
|
143036
|
-
return
|
|
143171
|
+
return join62(`${lead}. ${allLinked ? GLOBAL_INSTALL_TIMERS_WORK : GLOBAL_INSTALL_TIMERS_PENDING}`);
|
|
143037
143172
|
}
|
|
143038
143173
|
function planGlobalInstallDrops(input4) {
|
|
143039
143174
|
const projectNames = new Set(
|
|
@@ -149602,9 +149737,57 @@ var init_settings_hooks = __esm({
|
|
|
149602
149737
|
}
|
|
149603
149738
|
});
|
|
149604
149739
|
|
|
149740
|
+
// ../harness/src/apply/opencode-command-orphans.ts
|
|
149741
|
+
import { readFileSync as readFileSync16, rmSync as rmSync6 } from "node:fs";
|
|
149742
|
+
import { join as join38 } from "node:path";
|
|
149743
|
+
function findOpencodeCommandOrphans(repoRoot, plan) {
|
|
149744
|
+
return removableOf(repoRoot, allOpencodeCommandOrphans(repoRoot, plan));
|
|
149745
|
+
}
|
|
149746
|
+
function allOpencodeCommandOrphans(repoRoot, plan) {
|
|
149747
|
+
const kept = new Set(
|
|
149748
|
+
plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${OPENCODE_COMMANDS_DIR}/`)).map((a2) => a2.target)
|
|
149749
|
+
);
|
|
149750
|
+
const commandsDir = join38(repoRoot, OPENCODE_COMMANDS_DIR);
|
|
149751
|
+
const orphans = [];
|
|
149752
|
+
for (const entry of listDirEntries(commandsDir)) {
|
|
149753
|
+
if (!entry.isFile()) continue;
|
|
149754
|
+
const rel = `${OPENCODE_COMMANDS_DIR}/${entry.name}`;
|
|
149755
|
+
const abs = join38(commandsDir, entry.name);
|
|
149756
|
+
if (isAtomicTempName(entry.name)) {
|
|
149757
|
+
if (isStaleAtomicTemp(abs)) orphans.push(rel);
|
|
149758
|
+
continue;
|
|
149759
|
+
}
|
|
149760
|
+
if (kept.has(rel)) continue;
|
|
149761
|
+
if (!isEngineGeneratedCommand(abs)) continue;
|
|
149762
|
+
orphans.push(rel);
|
|
149763
|
+
}
|
|
149764
|
+
return orphans;
|
|
149765
|
+
}
|
|
149766
|
+
function sweepOpencodeCommandOrphans(repoRoot, plan) {
|
|
149767
|
+
const orphans = findOpencodeCommandOrphans(repoRoot, plan);
|
|
149768
|
+
for (const rel of orphans) rmSync6(join38(repoRoot, rel), { force: true });
|
|
149769
|
+
return orphans;
|
|
149770
|
+
}
|
|
149771
|
+
function isEngineGeneratedCommand(abs) {
|
|
149772
|
+
try {
|
|
149773
|
+
return readFileSync16(abs, "utf8").includes(GENERATED_COMMAND_MARKER);
|
|
149774
|
+
} catch {
|
|
149775
|
+
return false;
|
|
149776
|
+
}
|
|
149777
|
+
}
|
|
149778
|
+
var init_opencode_command_orphans = __esm({
|
|
149779
|
+
"../harness/src/apply/opencode-command-orphans.ts"() {
|
|
149780
|
+
"use strict";
|
|
149781
|
+
init_installed_projector();
|
|
149782
|
+
init_atomic_write();
|
|
149783
|
+
init_link_state();
|
|
149784
|
+
init_sweep_warnings();
|
|
149785
|
+
}
|
|
149786
|
+
});
|
|
149787
|
+
|
|
149605
149788
|
// ../harness/src/apply/apply.ts
|
|
149606
|
-
import { existsSync as existsSync12, mkdirSync as mkdirSync5,
|
|
149607
|
-
import { dirname as dirname11, join as
|
|
149789
|
+
import { existsSync as existsSync12, mkdirSync as mkdirSync5, rmSync as rmSync7, symlinkSync as symlinkSync2 } from "node:fs";
|
|
149790
|
+
import { dirname as dirname11, join as join39, relative as relative6 } from "node:path";
|
|
149608
149791
|
function skillSourcesUnreadable(plan) {
|
|
149609
149792
|
return (plan.unreadableSkillRoots?.length ?? 0) > 0;
|
|
149610
149793
|
}
|
|
@@ -149615,13 +149798,13 @@ function scaffoldPresent(absTarget) {
|
|
|
149615
149798
|
return pathExists(absTarget) && !isDanglingSymlink(absTarget);
|
|
149616
149799
|
}
|
|
149617
149800
|
function relativeLink(repoRoot, source, target) {
|
|
149618
|
-
return relative6(dirname11(
|
|
149801
|
+
return relative6(dirname11(join39(repoRoot, target)), absolutePlanPath(repoRoot, source));
|
|
149619
149802
|
}
|
|
149620
149803
|
function applySymlink(repoRoot, action) {
|
|
149621
149804
|
if (!action.source || !action.target) {
|
|
149622
149805
|
throw new Error(`symlink action for "${action.name}" is missing source/target`);
|
|
149623
149806
|
}
|
|
149624
|
-
const absTarget =
|
|
149807
|
+
const absTarget = join39(repoRoot, action.target);
|
|
149625
149808
|
const linkText = relativeLink(repoRoot, action.source, action.target);
|
|
149626
149809
|
const absSource = absolutePlanPath(repoRoot, action.source);
|
|
149627
149810
|
for (let attempt = 0, removalRetries = 0; attempt < SYMLINK_ATTEMPTS; ) {
|
|
@@ -149632,7 +149815,7 @@ function applySymlink(repoRoot, action) {
|
|
|
149632
149815
|
return void 0;
|
|
149633
149816
|
}
|
|
149634
149817
|
try {
|
|
149635
|
-
|
|
149818
|
+
rmSync7(absTarget, { force: true });
|
|
149636
149819
|
} catch (error63) {
|
|
149637
149820
|
if (!waitForSymlinkRemoval(error63, removalRetries++)) throw error63;
|
|
149638
149821
|
continue;
|
|
@@ -149651,13 +149834,13 @@ function applySymlink(repoRoot, action) {
|
|
|
149651
149834
|
}
|
|
149652
149835
|
function applyScaffold(repoRoot, action) {
|
|
149653
149836
|
if (!action.target) throw new Error(`scaffold action for "${action.name}" is missing target`);
|
|
149654
|
-
const absTarget =
|
|
149837
|
+
const absTarget = join39(repoRoot, action.target);
|
|
149655
149838
|
if (scaffoldPresent(absTarget)) return;
|
|
149656
149839
|
writeFileAtomic(absTarget, requireActionContent(action));
|
|
149657
149840
|
}
|
|
149658
149841
|
function applyGenerate(repoRoot, action) {
|
|
149659
149842
|
if (!action.target) throw new Error(`generate action for "${action.name}" is missing target`);
|
|
149660
|
-
const absTarget =
|
|
149843
|
+
const absTarget = join39(repoRoot, action.target);
|
|
149661
149844
|
const shape = blockingGenerateOccupant(absTarget);
|
|
149662
149845
|
if (shape !== void 0) return shape;
|
|
149663
149846
|
const content = requireActionContent(action);
|
|
@@ -149671,7 +149854,7 @@ function applyGenerate(repoRoot, action) {
|
|
|
149671
149854
|
function applyMerge(repoRoot, action) {
|
|
149672
149855
|
if (!action.target) throw new Error(`merge action for "${action.name}" is missing target`);
|
|
149673
149856
|
const managed = JSON.parse(requireActionContent(action));
|
|
149674
|
-
return mergeManagedHooks(
|
|
149857
|
+
return mergeManagedHooks(join39(repoRoot, action.target), managed);
|
|
149675
149858
|
}
|
|
149676
149859
|
function findInstalledOrphans(repoRoot, plan) {
|
|
149677
149860
|
return removableOf(repoRoot, allInstalledOrphans(repoRoot, plan));
|
|
@@ -149683,10 +149866,10 @@ function allInstalledOrphans(repoRoot, plan) {
|
|
|
149683
149866
|
);
|
|
149684
149867
|
const orphans = [];
|
|
149685
149868
|
for (const dir of INSTALLED_SKILL_DIRS) {
|
|
149686
|
-
const skillsDir =
|
|
149869
|
+
const skillsDir = join39(repoRoot, dir);
|
|
149687
149870
|
for (const entry of listDir(skillsDir)) {
|
|
149688
149871
|
if (!entry.includes(INSTALLED_PROJECTION_MARKER)) continue;
|
|
149689
|
-
const abs =
|
|
149872
|
+
const abs = join39(skillsDir, entry);
|
|
149690
149873
|
if (!isSymlink(abs)) continue;
|
|
149691
149874
|
const rel = `${dir}/${entry}`;
|
|
149692
149875
|
if (managed.has(rel)) continue;
|
|
@@ -149698,7 +149881,7 @@ function allInstalledOrphans(repoRoot, plan) {
|
|
|
149698
149881
|
}
|
|
149699
149882
|
function sweepInstalledOrphans(repoRoot, plan) {
|
|
149700
149883
|
const orphans = findInstalledOrphans(repoRoot, plan);
|
|
149701
|
-
for (const rel of orphans)
|
|
149884
|
+
for (const rel of orphans) rmSync7(join39(repoRoot, rel), { force: true });
|
|
149702
149885
|
return orphans;
|
|
149703
149886
|
}
|
|
149704
149887
|
function findGeneratedCommandOrphans(repoRoot, plan) {
|
|
@@ -149708,14 +149891,14 @@ function allGeneratedCommandOrphans(repoRoot, plan) {
|
|
|
149708
149891
|
const kept = new Set(
|
|
149709
149892
|
plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${CLAUDE_COMMANDS_DIR}/`)).map((a2) => a2.target)
|
|
149710
149893
|
);
|
|
149711
|
-
const commandsDir =
|
|
149894
|
+
const commandsDir = join39(repoRoot, CLAUDE_COMMANDS_DIR);
|
|
149712
149895
|
const orphans = [];
|
|
149713
149896
|
for (const sub of listDirEntries(commandsDir)) {
|
|
149714
149897
|
if (!sub.isDirectory()) continue;
|
|
149715
|
-
const subAbs =
|
|
149898
|
+
const subAbs = join39(commandsDir, sub.name);
|
|
149716
149899
|
for (const file2 of listDir(subAbs)) {
|
|
149717
149900
|
const rel = `${CLAUDE_COMMANDS_DIR}/${sub.name}/${file2}`;
|
|
149718
|
-
const abs =
|
|
149901
|
+
const abs = join39(subAbs, file2);
|
|
149719
149902
|
if (isAtomicTempName(file2)) {
|
|
149720
149903
|
if (isStaleAtomicTemp(abs)) orphans.push(rel);
|
|
149721
149904
|
continue;
|
|
@@ -149729,68 +149912,33 @@ function allGeneratedCommandOrphans(repoRoot, plan) {
|
|
|
149729
149912
|
}
|
|
149730
149913
|
function sweepGeneratedCommandOrphans(repoRoot, plan) {
|
|
149731
149914
|
const orphans = findGeneratedCommandOrphans(repoRoot, plan);
|
|
149732
|
-
for (const rel of orphans)
|
|
149915
|
+
for (const rel of orphans) rmSync7(join39(repoRoot, rel), { force: true });
|
|
149733
149916
|
for (const rel of removableOf(repoRoot, emptiedWrapperDirs(repoRoot, plan))) {
|
|
149734
|
-
|
|
149917
|
+
rmSync7(join39(repoRoot, rel), { recursive: true, force: true });
|
|
149735
149918
|
}
|
|
149736
149919
|
return orphans;
|
|
149737
149920
|
}
|
|
149738
149921
|
function emptiedWrapperDirs(repoRoot, plan) {
|
|
149739
|
-
const commandsDir =
|
|
149922
|
+
const commandsDir = join39(repoRoot, CLAUDE_COMMANDS_DIR);
|
|
149740
149923
|
const taking = new Set(findGeneratedCommandOrphans(repoRoot, plan));
|
|
149741
149924
|
const dirs = [];
|
|
149742
149925
|
for (const sub of listDirEntries(commandsDir)) {
|
|
149743
149926
|
if (!sub.isDirectory()) continue;
|
|
149744
149927
|
const rel = `${CLAUDE_COMMANDS_DIR}/${sub.name}`;
|
|
149745
|
-
const listing = tryListDir(
|
|
149928
|
+
const listing = tryListDir(join39(commandsDir, sub.name));
|
|
149746
149929
|
if (listing === void 0) continue;
|
|
149747
149930
|
if (listing.every((entry) => taking.has(`${rel}/${entry}`))) dirs.push(rel);
|
|
149748
149931
|
}
|
|
149749
149932
|
return dirs.sort();
|
|
149750
149933
|
}
|
|
149751
|
-
function findOpencodeCommandOrphans(repoRoot, plan) {
|
|
149752
|
-
return removableOf(repoRoot, allOpencodeCommandOrphans(repoRoot, plan));
|
|
149753
|
-
}
|
|
149754
|
-
function allOpencodeCommandOrphans(repoRoot, plan) {
|
|
149755
|
-
const kept = new Set(
|
|
149756
|
-
plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${OPENCODE_COMMANDS_DIR}/`)).map((a2) => a2.target)
|
|
149757
|
-
);
|
|
149758
|
-
const commandsDir = join38(repoRoot, OPENCODE_COMMANDS_DIR);
|
|
149759
|
-
const orphans = [];
|
|
149760
|
-
for (const entry of listDirEntries(commandsDir)) {
|
|
149761
|
-
if (!entry.isFile()) continue;
|
|
149762
|
-
const rel = `${OPENCODE_COMMANDS_DIR}/${entry.name}`;
|
|
149763
|
-
const abs = join38(commandsDir, entry.name);
|
|
149764
|
-
if (isAtomicTempName(entry.name)) {
|
|
149765
|
-
if (isStaleAtomicTemp(abs)) orphans.push(rel);
|
|
149766
|
-
continue;
|
|
149767
|
-
}
|
|
149768
|
-
if (kept.has(rel)) continue;
|
|
149769
|
-
if (!isEngineGeneratedCommand(abs)) continue;
|
|
149770
|
-
orphans.push(rel);
|
|
149771
|
-
}
|
|
149772
|
-
return orphans;
|
|
149773
|
-
}
|
|
149774
|
-
function sweepOpencodeCommandOrphans(repoRoot, plan) {
|
|
149775
|
-
const orphans = findOpencodeCommandOrphans(repoRoot, plan);
|
|
149776
|
-
for (const rel of orphans) rmSync6(join38(repoRoot, rel), { force: true });
|
|
149777
|
-
return orphans;
|
|
149778
|
-
}
|
|
149779
|
-
function isEngineGeneratedCommand(abs) {
|
|
149780
|
-
try {
|
|
149781
|
-
return readFileSync16(abs, "utf8").includes(GENERATED_COMMAND_MARKER);
|
|
149782
|
-
} catch {
|
|
149783
|
-
return false;
|
|
149784
|
-
}
|
|
149785
|
-
}
|
|
149786
149934
|
function findBlockedWrapperDirs(repoRoot, plan) {
|
|
149787
149935
|
const wrapperDirs = new Set(
|
|
149788
149936
|
plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${CLAUDE_COMMANDS_DIR}/`)).map((a2) => dirname11(a2.target))
|
|
149789
149937
|
);
|
|
149790
149938
|
const blocked = /* @__PURE__ */ new Set();
|
|
149791
149939
|
for (const relDir of wrapperDirs) {
|
|
149792
|
-
const abs =
|
|
149793
|
-
const hasForeignContent = listDir(abs).some((entry) => isForeign(
|
|
149940
|
+
const abs = join39(repoRoot, relDir);
|
|
149941
|
+
const hasForeignContent = listDir(abs).some((entry) => isForeign(join39(abs, entry), entry));
|
|
149794
149942
|
if (hasForeignContent) blocked.add(relDir);
|
|
149795
149943
|
}
|
|
149796
149944
|
return blocked;
|
|
@@ -149806,7 +149954,7 @@ function findBlockedOpencodeCommandFiles(repoRoot, plan) {
|
|
|
149806
149954
|
if (action.kind !== "generate") continue;
|
|
149807
149955
|
const target = action.target;
|
|
149808
149956
|
if (!target?.startsWith(`${OPENCODE_COMMANDS_DIR}/`)) continue;
|
|
149809
|
-
const abs =
|
|
149957
|
+
const abs = join39(repoRoot, target);
|
|
149810
149958
|
if (pathExists(abs) && !isEngineGeneratedCommand(abs)) blocked.add(target);
|
|
149811
149959
|
}
|
|
149812
149960
|
return blocked;
|
|
@@ -149819,11 +149967,11 @@ function allSettingsHooksOrphan(repoRoot, plan) {
|
|
|
149819
149967
|
(a2) => a2.kind === "merge" && a2.target === CLAUDE_SETTINGS_LOCAL_TARGET
|
|
149820
149968
|
);
|
|
149821
149969
|
if (hasMerge) return [];
|
|
149822
|
-
return hasManagedHooks(
|
|
149970
|
+
return hasManagedHooks(join39(repoRoot, CLAUDE_SETTINGS_LOCAL_TARGET)) ? [CLAUDE_SETTINGS_LOCAL_TARGET] : [];
|
|
149823
149971
|
}
|
|
149824
149972
|
function sweepSettingsHooksOrphan(repoRoot, plan) {
|
|
149825
149973
|
const orphans = findSettingsHooksOrphan(repoRoot, plan);
|
|
149826
|
-
if (orphans.length > 0) sweepManagedHooks(
|
|
149974
|
+
if (orphans.length > 0) sweepManagedHooks(join39(repoRoot, CLAUDE_SETTINGS_LOCAL_TARGET));
|
|
149827
149975
|
return orphans;
|
|
149828
149976
|
}
|
|
149829
149977
|
function applyPlan(repoRoot, plan, opts) {
|
|
@@ -149911,7 +150059,7 @@ function isDrifted(repoRoot, action) {
|
|
|
149911
150059
|
switch (action.kind) {
|
|
149912
150060
|
case "symlink": {
|
|
149913
150061
|
if (!action.source || !action.target) return true;
|
|
149914
|
-
const absTarget =
|
|
150062
|
+
const absTarget = join39(repoRoot, action.target);
|
|
149915
150063
|
const kind = occupantKind(absTarget);
|
|
149916
150064
|
if (kind === "absent") return true;
|
|
149917
150065
|
if (kind === "file" || kind === "directory") return false;
|
|
@@ -149924,10 +150072,10 @@ function isDrifted(repoRoot, action) {
|
|
|
149924
150072
|
);
|
|
149925
150073
|
}
|
|
149926
150074
|
case "scaffold":
|
|
149927
|
-
return !action.target || !scaffoldPresent(
|
|
150075
|
+
return !action.target || !scaffoldPresent(join39(repoRoot, action.target));
|
|
149928
150076
|
case "generate": {
|
|
149929
150077
|
if (!action.target) return true;
|
|
149930
|
-
const absTarget =
|
|
150078
|
+
const absTarget = join39(repoRoot, action.target);
|
|
149931
150079
|
if (blockingGenerateOccupant(absTarget) !== void 0) return false;
|
|
149932
150080
|
const onDisk = readFileIfPresent(absTarget);
|
|
149933
150081
|
if (onDisk === void 0) return true;
|
|
@@ -149939,7 +150087,7 @@ function isDrifted(repoRoot, action) {
|
|
|
149939
150087
|
case "merge": {
|
|
149940
150088
|
if (!action.target) return true;
|
|
149941
150089
|
const managed = JSON.parse(requireActionContent(action));
|
|
149942
|
-
return managedHooksDrift(
|
|
150090
|
+
return managedHooksDrift(join39(repoRoot, action.target), managed);
|
|
149943
150091
|
}
|
|
149944
150092
|
case "native":
|
|
149945
150093
|
case "drop":
|
|
@@ -149951,7 +150099,7 @@ function findBlockedSymlinkTargets(repoRoot, plan) {
|
|
|
149951
150099
|
for (const action of plan.actions) {
|
|
149952
150100
|
if (action.kind !== "symlink" || !action.source || !action.target) continue;
|
|
149953
150101
|
const reason = blockingSymlinkOccupant(
|
|
149954
|
-
|
|
150102
|
+
join39(repoRoot, action.target),
|
|
149955
150103
|
relativeLink(repoRoot, action.source, action.target)
|
|
149956
150104
|
);
|
|
149957
150105
|
if (reason !== void 0) blocked.push({ ...action, reason });
|
|
@@ -150057,6 +150205,7 @@ var init_apply = __esm({
|
|
|
150057
150205
|
init_sweep_warnings();
|
|
150058
150206
|
init_installed_projector();
|
|
150059
150207
|
init_settings_hooks();
|
|
150208
|
+
init_opencode_command_orphans();
|
|
150060
150209
|
INSTALLED_SKILL_DIRS = [AGENTS_SKILLS_DIR, CLAUDE_SKILLS_DIR];
|
|
150061
150210
|
SYMLINK_ATTEMPTS = 3;
|
|
150062
150211
|
}
|
|
@@ -150064,7 +150213,7 @@ var init_apply = __esm({
|
|
|
150064
150213
|
|
|
150065
150214
|
// ../harness/src/adopt/apply.ts
|
|
150066
150215
|
import { lstatSync as lstatSync12, mkdirSync as mkdirSync6, renameSync as renameSync3, rmdirSync } from "node:fs";
|
|
150067
|
-
import { join as
|
|
150216
|
+
import { join as join40 } from "node:path";
|
|
150068
150217
|
function applyAdopt(repoRoot, plan) {
|
|
150069
150218
|
const moved = [];
|
|
150070
150219
|
const declared = [];
|
|
@@ -150082,9 +150231,9 @@ function applyAdopt(repoRoot, plan) {
|
|
|
150082
150231
|
return { moved, declared, refusals };
|
|
150083
150232
|
}
|
|
150084
150233
|
function applyMove(repoRoot, move) {
|
|
150085
|
-
const absFrom =
|
|
150086
|
-
const absTo =
|
|
150087
|
-
const canonicalLayer =
|
|
150234
|
+
const absFrom = join40(repoRoot, move.from);
|
|
150235
|
+
const absTo = join40(repoRoot, move.to);
|
|
150236
|
+
const canonicalLayer = join40(repoRoot, ADOPT_TARGET_ROOT);
|
|
150088
150237
|
const layerExisted = somethingIsAt(canonicalLayer);
|
|
150089
150238
|
mkdirSync6(canonicalLayer, { recursive: true });
|
|
150090
150239
|
try {
|
|
@@ -150128,7 +150277,7 @@ function restore(input4) {
|
|
|
150128
150277
|
if (!somethingIsAt(absFrom)) {
|
|
150129
150278
|
try {
|
|
150130
150279
|
renameSync3(absTo, absFrom);
|
|
150131
|
-
if (!layerExisted) removeIfEmpty(
|
|
150280
|
+
if (!layerExisted) removeIfEmpty(join40(repoRoot, ADOPT_TARGET_ROOT));
|
|
150132
150281
|
return { name: move.name, source: move.from, rule: "link-blocked", reason: blocked };
|
|
150133
150282
|
} catch {
|
|
150134
150283
|
}
|
|
@@ -150195,10 +150344,10 @@ import {
|
|
|
150195
150344
|
lstatSync as lstatSync13,
|
|
150196
150345
|
mkdirSync as mkdirSync7,
|
|
150197
150346
|
readlinkSync as readlinkSync5,
|
|
150198
|
-
rmSync as
|
|
150347
|
+
rmSync as rmSync8,
|
|
150199
150348
|
symlinkSync as symlinkSync3
|
|
150200
150349
|
} from "node:fs";
|
|
150201
|
-
import { basename as basename6, dirname as dirname12, join as
|
|
150350
|
+
import { basename as basename6, dirname as dirname12, join as join41, relative as relative7, resolve as resolve6, sep as sep8 } from "node:path";
|
|
150202
150351
|
function globalSweepDirs(roots) {
|
|
150203
150352
|
return [
|
|
150204
150353
|
...new Set(
|
|
@@ -150254,13 +150403,13 @@ function globalOrphanCandidates(plan, roots) {
|
|
|
150254
150403
|
if (pkg === void 0) {
|
|
150255
150404
|
const extension = linkOwnerUnder(abs, extensionRoot);
|
|
150256
150405
|
if (extension === void 0 || planned.has(abs)) continue;
|
|
150257
|
-
if (!existsSync13(
|
|
150406
|
+
if (!existsSync13(join41(extensionRoot, extension)) || plan.extensionLedger === "read") {
|
|
150258
150407
|
orphans.set(abs, SWEEP_REASONS["global-extension-stopped"]);
|
|
150259
150408
|
}
|
|
150260
150409
|
continue;
|
|
150261
150410
|
}
|
|
150262
150411
|
if (planned.has(abs)) continue;
|
|
150263
|
-
if (!existsSync13(
|
|
150412
|
+
if (!existsSync13(join41(pluginsRoot, pkg))) {
|
|
150264
150413
|
orphans.set(abs, SWEEP_REASONS["global-package-gone"]);
|
|
150265
150414
|
continue;
|
|
150266
150415
|
}
|
|
@@ -150287,7 +150436,7 @@ function rawGlobalOrphanPaths(plan, roots) {
|
|
|
150287
150436
|
}
|
|
150288
150437
|
function sweepGlobalOrphans(plan, roots) {
|
|
150289
150438
|
const orphans = findGlobalOrphans(plan, roots);
|
|
150290
|
-
for (const { path: path66 } of orphans)
|
|
150439
|
+
for (const { path: path66 } of orphans) rmSync8(path66, { force: true });
|
|
150291
150440
|
return orphans;
|
|
150292
150441
|
}
|
|
150293
150442
|
function globalLinkText(action) {
|
|
@@ -150344,7 +150493,7 @@ function applyGlobalSymlink(action, memo2) {
|
|
|
150344
150493
|
if (blocked !== void 0) return { kind: "blocked", reason: blocked };
|
|
150345
150494
|
if (linkMatchesPlan(absTarget, absSource, linkText, LINK_CHECK)) return { kind: "unchanged" };
|
|
150346
150495
|
try {
|
|
150347
|
-
|
|
150496
|
+
rmSync8(absTarget, { force: true });
|
|
150348
150497
|
} catch (error63) {
|
|
150349
150498
|
if (!waitForSymlinkRemoval(error63, removalRetries++)) throw error63;
|
|
150350
150499
|
continue;
|
|
@@ -150591,7 +150740,7 @@ import {
|
|
|
150591
150740
|
realpathSync as realpathSync10,
|
|
150592
150741
|
statSync as statSync10
|
|
150593
150742
|
} from "node:fs";
|
|
150594
|
-
import { basename as basename7, isAbsolute as isAbsolute7, join as
|
|
150743
|
+
import { basename as basename7, isAbsolute as isAbsolute7, join as join42, relative as relative8, resolve as resolve7, sep as sep9 } from "node:path";
|
|
150595
150744
|
function statOrUndefined(path66) {
|
|
150596
150745
|
try {
|
|
150597
150746
|
return statSync10(path66, { throwIfNoEntry: false });
|
|
@@ -150628,7 +150777,7 @@ function ascendLevels(root, cwd, stopAtWorktree) {
|
|
|
150628
150777
|
const levels2 = [];
|
|
150629
150778
|
for (; ; ) {
|
|
150630
150779
|
levels2.push(current3);
|
|
150631
|
-
if (stopAtWorktree && existsSync14(
|
|
150780
|
+
if (stopAtWorktree && existsSync14(join42(current3, ".git"))) break;
|
|
150632
150781
|
if (current3 === root) break;
|
|
150633
150782
|
const parent = resolve7(current3, "..");
|
|
150634
150783
|
if (parent === current3) break;
|
|
@@ -150654,7 +150803,7 @@ function descendScopes(root, facts) {
|
|
|
150654
150803
|
if (!entry.isDirectory()) continue;
|
|
150655
150804
|
if (NEVER_DESCEND.has(entry.name)) continue;
|
|
150656
150805
|
if (entry.name.startsWith(".") && !listedDotDirs.has(entry.name)) continue;
|
|
150657
|
-
visit2(
|
|
150806
|
+
visit2(join42(dir, entry.name), depth + 1);
|
|
150658
150807
|
}
|
|
150659
150808
|
};
|
|
150660
150809
|
visit2(root, 0);
|
|
@@ -150666,7 +150815,7 @@ function readDirs(facts, root, cwd) {
|
|
|
150666
150815
|
const seen = /* @__PURE__ */ new Set();
|
|
150667
150816
|
for (const scope3 of scopes) {
|
|
150668
150817
|
for (const readPath2 of facts.readPaths.project) {
|
|
150669
|
-
const abs =
|
|
150818
|
+
const abs = join42(scope3, readPath2);
|
|
150670
150819
|
if (seen.has(abs)) continue;
|
|
150671
150820
|
seen.add(abs);
|
|
150672
150821
|
dirs.push({ abs, via: viaOf(root, abs) });
|
|
@@ -150750,9 +150899,9 @@ function harnessCoverage(harness, root, opts) {
|
|
|
150750
150899
|
continue;
|
|
150751
150900
|
}
|
|
150752
150901
|
for (const entry of [...entries].sort((a2, b2) => a2.name.localeCompare(b2.name))) {
|
|
150753
|
-
const dir =
|
|
150902
|
+
const dir = join42(abs, entry.name);
|
|
150754
150903
|
if (!statOrUndefined(dir)?.isDirectory()) continue;
|
|
150755
|
-
const skillMd =
|
|
150904
|
+
const skillMd = join42(dir, "SKILL.md");
|
|
150756
150905
|
if (!statOrUndefined(skillMd)?.isFile()) continue;
|
|
150757
150906
|
const reachedThroughSymlink = lstatOrUndefined(dir)?.isSymbolicLink() === true;
|
|
150758
150907
|
const { found, reasons, loads, droppedReason } = evaluate(
|
|
@@ -150789,21 +150938,21 @@ var init_coverage = __esm({
|
|
|
150789
150938
|
|
|
150790
150939
|
// ../harness/src/engine.ts
|
|
150791
150940
|
import { existsSync as existsSync15, lstatSync as lstatSync15, readFileSync as readFileSync18, readdirSync as readdirSync9 } from "node:fs";
|
|
150792
|
-
import { join as
|
|
150941
|
+
import { join as join43 } from "node:path";
|
|
150793
150942
|
function loadManifest(repoRoot) {
|
|
150794
150943
|
const raw = JSON.parse(
|
|
150795
|
-
readFileSync18(
|
|
150944
|
+
readFileSync18(join43(repoRoot, ".agents", "harness.manifest.json"), "utf8")
|
|
150796
150945
|
);
|
|
150797
150946
|
return parseHarnessManifest(raw);
|
|
150798
150947
|
}
|
|
150799
150948
|
function loadClaudeHooks(repoRoot) {
|
|
150800
|
-
const settingsPath =
|
|
150949
|
+
const settingsPath = join43(repoRoot, ".claude", "settings.json");
|
|
150801
150950
|
if (!existsSync15(settingsPath)) return void 0;
|
|
150802
150951
|
const settings = JSON.parse(readFileSync18(settingsPath, "utf8"));
|
|
150803
150952
|
return settings.hooks;
|
|
150804
150953
|
}
|
|
150805
150954
|
function agentsMdExists(repoRoot) {
|
|
150806
|
-
return existsSync15(
|
|
150955
|
+
return existsSync15(join43(repoRoot, "AGENTS.md"));
|
|
150807
150956
|
}
|
|
150808
150957
|
function claudeCommandsExist(repoRoot) {
|
|
150809
150958
|
const walk = (dir) => {
|
|
@@ -150815,22 +150964,22 @@ function claudeCommandsExist(repoRoot) {
|
|
|
150815
150964
|
}
|
|
150816
150965
|
for (const entry of entries) {
|
|
150817
150966
|
if (entry.isFile() && entry.name.endsWith(".md")) return true;
|
|
150818
|
-
if (entry.isDirectory() && walk(
|
|
150967
|
+
if (entry.isDirectory() && walk(join43(dir, entry.name))) return true;
|
|
150819
150968
|
}
|
|
150820
150969
|
return false;
|
|
150821
150970
|
};
|
|
150822
|
-
return walk(
|
|
150971
|
+
return walk(join43(repoRoot, CLAUDE_COMMANDS_DIR));
|
|
150823
150972
|
}
|
|
150824
150973
|
function scanClaudeOnlySkills(repoRoot, manifest) {
|
|
150825
150974
|
const resolved = /* @__PURE__ */ new Map();
|
|
150826
150975
|
for (const entry of manifest.claudeOnlySkills) {
|
|
150827
150976
|
const defaultPath = `${CLAUDE_SKILLS_DIR}/${entry.name}`;
|
|
150828
150977
|
const path66 = entry.path.trim() === "" ? defaultPath : entry.path;
|
|
150829
|
-
const abs =
|
|
150978
|
+
const abs = join43(repoRoot, path66);
|
|
150830
150979
|
let kind = "missing";
|
|
150831
150980
|
const stats2 = lstatSync15(abs, { throwIfNoEntry: false });
|
|
150832
150981
|
if (stats2?.isSymbolicLink()) kind = "symlink";
|
|
150833
|
-
else if (stats2?.isDirectory() && existsSync15(
|
|
150982
|
+
else if (stats2?.isDirectory() && existsSync15(join43(abs, "SKILL.md"))) kind = "directory";
|
|
150834
150983
|
resolved.set(entry.name, { path: path66, kind, atProjectionTarget: path66 === defaultPath });
|
|
150835
150984
|
}
|
|
150836
150985
|
return resolved;
|
|
@@ -151178,7 +151327,7 @@ __export(adopt_owned_workspace_exports, {
|
|
|
151178
151327
|
autoAdoptFromDisk: () => autoAdoptFromDisk
|
|
151179
151328
|
});
|
|
151180
151329
|
import { readFileSync as readFileSync19 } from "node:fs";
|
|
151181
|
-
import { join as
|
|
151330
|
+
import { join as join44 } from "node:path";
|
|
151182
151331
|
function autoAdoptPermitted() {
|
|
151183
151332
|
return configManager.get("harness").autoAdopt;
|
|
151184
151333
|
}
|
|
@@ -151186,7 +151335,7 @@ function autoAdoptFromDisk(dorkHome) {
|
|
|
151186
151335
|
const fallback = UserConfigSchema.shape.harness.parse(void 0).autoAdopt;
|
|
151187
151336
|
let raw;
|
|
151188
151337
|
try {
|
|
151189
|
-
raw = JSON.parse(readFileSync19(
|
|
151338
|
+
raw = JSON.parse(readFileSync19(join44(dorkHome, "config.json"), "utf8"));
|
|
151190
151339
|
} catch {
|
|
151191
151340
|
return fallback;
|
|
151192
151341
|
}
|
|
@@ -151288,7 +151437,7 @@ var init_adopt_owned_workspace = __esm({
|
|
|
151288
151437
|
|
|
151289
151438
|
// ../../apps/server/src/services/harness/project-agent-workspace.ts
|
|
151290
151439
|
import { existsSync as existsSync16, realpathSync as realpathSync11 } from "node:fs";
|
|
151291
|
-
import { join as
|
|
151440
|
+
import { join as join45, relative as relative9, resolve as resolve8, isAbsolute as isAbsolute8 } from "node:path";
|
|
151292
151441
|
function canonicalize(p) {
|
|
151293
151442
|
const absolute = resolve8(p);
|
|
151294
151443
|
try {
|
|
@@ -151298,7 +151447,7 @@ function canonicalize(p) {
|
|
|
151298
151447
|
}
|
|
151299
151448
|
}
|
|
151300
151449
|
function isAgentHome(dir, dorkHome) {
|
|
151301
|
-
const rel = relative9(canonicalize(
|
|
151450
|
+
const rel = relative9(canonicalize(join45(dorkHome, "agents")), canonicalize(dir));
|
|
151302
151451
|
return rel !== "" && !rel.startsWith("..") && !isAbsolute8(rel);
|
|
151303
151452
|
}
|
|
151304
151453
|
var AGENT_SKILLS_DIR;
|
|
@@ -151310,7 +151459,7 @@ var init_project_agent_workspace = __esm({
|
|
|
151310
151459
|
init_dork_home();
|
|
151311
151460
|
init_logger();
|
|
151312
151461
|
init_adopt_owned_workspace();
|
|
151313
|
-
AGENT_SKILLS_DIR =
|
|
151462
|
+
AGENT_SKILLS_DIR = join45(".agents", "skills");
|
|
151314
151463
|
}
|
|
151315
151464
|
});
|
|
151316
151465
|
|
|
@@ -151319,14 +151468,14 @@ var directory_ownership_exports = {};
|
|
|
151319
151468
|
__export(directory_ownership_exports, {
|
|
151320
151469
|
resolveDirectoryOwnership: () => resolveDirectoryOwnership
|
|
151321
151470
|
});
|
|
151322
|
-
import { join as
|
|
151471
|
+
import { join as join46, relative as relative10, sep as sep10 } from "node:path";
|
|
151323
151472
|
function resolveDirectoryOwnership(dir, dorkHome) {
|
|
151324
151473
|
if (isAgentHome(dir, dorkHome)) return "agent-home";
|
|
151325
151474
|
if (isRoomWorktree(dir, dorkHome)) return "room-worktree";
|
|
151326
151475
|
return "plain";
|
|
151327
151476
|
}
|
|
151328
151477
|
function isRoomWorktree(dir, dorkHome) {
|
|
151329
|
-
const rel = relative10(canonicalize(
|
|
151478
|
+
const rel = relative10(canonicalize(join46(dorkHome, "rooms")), canonicalize(dir));
|
|
151330
151479
|
if (rel === "" || rel.startsWith("..")) return false;
|
|
151331
151480
|
const parts = rel.split(sep10);
|
|
151332
151481
|
return parts.length === 3 && parts[1] === "worktrees";
|
|
@@ -151338,9 +151487,9 @@ var init_directory_ownership = __esm({
|
|
|
151338
151487
|
});
|
|
151339
151488
|
|
|
151340
151489
|
// src/harness-consent.ts
|
|
151341
|
-
import { join as
|
|
151490
|
+
import { join as join47 } from "node:path";
|
|
151342
151491
|
function configPathFor(dorkHome) {
|
|
151343
|
-
return
|
|
151492
|
+
return join47(dorkHome, "config.json");
|
|
151344
151493
|
}
|
|
151345
151494
|
async function readStoredDecisions(dorkHome) {
|
|
151346
151495
|
const { readHookDecisionsFromDisk: readHookDecisionsFromDisk2 } = await Promise.resolve().then(() => (init_hook_consent(), hook_consent_exports));
|
|
@@ -151501,11 +151650,11 @@ __export(global_scope_exports, {
|
|
|
151501
151650
|
writeGlobalSharing: () => writeGlobalSharing
|
|
151502
151651
|
});
|
|
151503
151652
|
import { readFileSync as readFileSync20 } from "node:fs";
|
|
151504
|
-
import { join as
|
|
151653
|
+
import { join as join48 } from "node:path";
|
|
151505
151654
|
function readGlobalSharingFromDisk(dorkHome) {
|
|
151506
151655
|
let text3;
|
|
151507
151656
|
try {
|
|
151508
|
-
text3 = readFileSync20(
|
|
151657
|
+
text3 = readFileSync20(join48(dorkHome, "config.json"), "utf8");
|
|
151509
151658
|
} catch (err) {
|
|
151510
151659
|
if (err.code === "ENOENT") return NOTHING_SHARED;
|
|
151511
151660
|
return { ...NOTHING_SHARED, unreadable: describeReadFailure2(err) };
|
|
@@ -151534,7 +151683,7 @@ function boundaryConfigFromDisk(dorkHome) {
|
|
|
151534
151683
|
getDot: (key) => {
|
|
151535
151684
|
if (key !== "server.boundary") return void 0;
|
|
151536
151685
|
try {
|
|
151537
|
-
const raw = JSON.parse(readFileSync20(
|
|
151686
|
+
const raw = JSON.parse(readFileSync20(join48(dorkHome, "config.json"), "utf8"));
|
|
151538
151687
|
const server2 = raw?.server;
|
|
151539
151688
|
return server2?.boundary;
|
|
151540
151689
|
} catch {
|
|
@@ -151565,7 +151714,7 @@ function resolveGlobalScopeInputs(dorkHome, env6, config3) {
|
|
|
151565
151714
|
roots: {
|
|
151566
151715
|
dorkHome,
|
|
151567
151716
|
...AGENTS_SKILLS_DIR_READERS.some((harness) => enabled3.has(harness)) ? { agentsSkillsDir: agentsUserSkillsDir() } : {},
|
|
151568
|
-
...enabled3.has("claude-code") ? { claudeSkillsDir:
|
|
151717
|
+
...enabled3.has("claude-code") ? { claudeSkillsDir: join48(inheritedClaudeRoot(), "skills") } : {}
|
|
151569
151718
|
}
|
|
151570
151719
|
};
|
|
151571
151720
|
}
|
|
@@ -151575,7 +151724,7 @@ function globalRootsFor(dorkHome, harnesses, env6, config3) {
|
|
|
151575
151724
|
return {
|
|
151576
151725
|
dorkHome,
|
|
151577
151726
|
...AGENTS_SKILLS_DIR_READERS.some((harness) => enabled3.has(harness)) ? { agentsSkillsDir: agentsUserSkillsDir() } : {},
|
|
151578
|
-
...enabled3.has("claude-code") ? { claudeSkillsDir:
|
|
151727
|
+
...enabled3.has("claude-code") ? { claudeSkillsDir: join48(inheritedClaudeRoot(), "skills") } : {}
|
|
151579
151728
|
};
|
|
151580
151729
|
}
|
|
151581
151730
|
function writeGlobalSharing(harnesses, reason, now3 = /* @__PURE__ */ new Date()) {
|
|
@@ -151589,6 +151738,7 @@ function writeGlobalSharing(harnesses, reason, now3 = /* @__PURE__ */ new Date()
|
|
|
151589
151738
|
var NOTHING_SHARED;
|
|
151590
151739
|
var init_global_scope = __esm({
|
|
151591
151740
|
"../../apps/server/src/services/harness/global-scope.ts"() {
|
|
151741
|
+
"use strict";
|
|
151592
151742
|
init_src5();
|
|
151593
151743
|
init_config_schema();
|
|
151594
151744
|
init_boundary();
|
|
@@ -152054,6 +152204,109 @@ var init_harness_sync_global = __esm({
|
|
|
152054
152204
|
}
|
|
152055
152205
|
});
|
|
152056
152206
|
|
|
152207
|
+
// src/harness-sync-claude-only.ts
|
|
152208
|
+
function formatClaudeOnly(claudeOnly, repoRoot) {
|
|
152209
|
+
const { root, plugins, personalHookCommands: hooks } = claudeOnly;
|
|
152210
|
+
const HEADING = "Installed in Claude Code only";
|
|
152211
|
+
if (claudeOnly.unreadable !== void 0) {
|
|
152212
|
+
return [
|
|
152213
|
+
"",
|
|
152214
|
+
HEADING,
|
|
152215
|
+
` DorkOS could not read ${root}/settings.json, so it cannot tell you what Claude Code has. (${claudeOnly.unreadable})`,
|
|
152216
|
+
" Nothing else in this report is affected."
|
|
152217
|
+
];
|
|
152218
|
+
}
|
|
152219
|
+
const notices = claudeOnly.unreadableParts.length + (claudeOnly.skippedEntries ?? 0);
|
|
152220
|
+
if (plugins.length === 0 && notices === 0) return [];
|
|
152221
|
+
const from = (plugin) => plugin.repo === void 0 ? ` - ${plugin.name} (from a source Claude Code calls "${plugin.marketplace}")` : ` - ${plugin.name} (from ${plugin.repo})`;
|
|
152222
|
+
const machineWide = plugins.filter((plugin) => plugin.settingsScope === "user");
|
|
152223
|
+
const inGroup = (offer) => machineWide.filter((plugin) => plugin.offer === offer);
|
|
152224
|
+
const lines = ["", HEADING, ` Read from ${root}`];
|
|
152225
|
+
if (plugins.length > 0) {
|
|
152226
|
+
lines.push(
|
|
152227
|
+
"",
|
|
152228
|
+
` You turned on ${plugins.length} ${plugins.length === 1 ? "plugin" : "plugins"} in Claude Code. Your other agent tools cannot see them.`
|
|
152229
|
+
);
|
|
152230
|
+
}
|
|
152231
|
+
for (const part of claudeOnly.unreadableParts) {
|
|
152232
|
+
lines.push(
|
|
152233
|
+
"",
|
|
152234
|
+
` DorkOS could not read the ${part} part of ${root}/settings.json; the plugin list is still right.`
|
|
152235
|
+
);
|
|
152236
|
+
}
|
|
152237
|
+
const skipped = claudeOnly.skippedEntries ?? 0;
|
|
152238
|
+
if (skipped > 0) {
|
|
152239
|
+
lines.push(
|
|
152240
|
+
"",
|
|
152241
|
+
skipped === 1 ? " DorkOS could not read 1 of the entries in that file, so it is not listed." : ` DorkOS could not read ${skipped} of the entries in that file, so they are not listed.`
|
|
152242
|
+
);
|
|
152243
|
+
}
|
|
152244
|
+
if (plugins.length === 0) return lines;
|
|
152245
|
+
if (hooks > 0) {
|
|
152246
|
+
lines.push(
|
|
152247
|
+
"",
|
|
152248
|
+
` Your personal Claude Code settings run ${hooks} ${hooks === 1 ? "command" : "commands"} automatically. Only Claude Code runs ${hooks === 1 ? "it" : "them"}.`
|
|
152249
|
+
);
|
|
152250
|
+
}
|
|
152251
|
+
if (claudeOnly.sourcesUnreadable !== void 0) {
|
|
152252
|
+
lines.push(
|
|
152253
|
+
"",
|
|
152254
|
+
` DorkOS could not read its own list of sources (${claudeOnly.sourcesUnreadable}), so it cannot offer installs right now.`,
|
|
152255
|
+
"",
|
|
152256
|
+
" Turned on in Claude Code:",
|
|
152257
|
+
...plugins.map(from),
|
|
152258
|
+
"",
|
|
152259
|
+
" Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
|
|
152260
|
+
" not be the whole story."
|
|
152261
|
+
);
|
|
152262
|
+
return lines;
|
|
152263
|
+
}
|
|
152264
|
+
const canInstall = inGroup("install");
|
|
152265
|
+
if (canInstall.length > 0) {
|
|
152266
|
+
lines.push(
|
|
152267
|
+
"",
|
|
152268
|
+
" DorkOS can install these for this project, so every agent tool here gets them:"
|
|
152269
|
+
);
|
|
152270
|
+
for (const plugin of canInstall) {
|
|
152271
|
+
lines.push(from(plugin), ` Run: dorkos install ${plugin.name} --project ${repoRoot}`);
|
|
152272
|
+
}
|
|
152273
|
+
lines.push(" DorkOS has to be running, and it asks you to approve the install first.");
|
|
152274
|
+
}
|
|
152275
|
+
const needsSource = inGroup("add-source-then-install");
|
|
152276
|
+
if (needsSource.length > 0) {
|
|
152277
|
+
lines.push("", " DorkOS does not have these sources yet:");
|
|
152278
|
+
for (const plugin of needsSource) {
|
|
152279
|
+
lines.push(
|
|
152280
|
+
from(plugin),
|
|
152281
|
+
` Add the source first: dorkos marketplace add ${plugin.sourceUrl}`
|
|
152282
|
+
);
|
|
152283
|
+
}
|
|
152284
|
+
}
|
|
152285
|
+
const noPackage = inGroup("no-package");
|
|
152286
|
+
if (noPackage.length > 0) {
|
|
152287
|
+
lines.push("", " DorkOS has that source but nothing by that name:", ...noPackage.map(from));
|
|
152288
|
+
}
|
|
152289
|
+
const unknownSource = inGroup("unknown-source");
|
|
152290
|
+
if (unknownSource.length > 0) {
|
|
152291
|
+
lines.push("", " DorkOS cannot tell where these came from:", ...unknownSource.map(from));
|
|
152292
|
+
}
|
|
152293
|
+
const projectOnly = plugins.filter((plugin) => plugin.settingsScope === "project");
|
|
152294
|
+
if (projectOnly.length > 0) {
|
|
152295
|
+
lines.push("", " On for this project only:", ...projectOnly.map(from));
|
|
152296
|
+
}
|
|
152297
|
+
lines.push(
|
|
152298
|
+
"",
|
|
152299
|
+
" Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
|
|
152300
|
+
" not be the whole story."
|
|
152301
|
+
);
|
|
152302
|
+
return lines;
|
|
152303
|
+
}
|
|
152304
|
+
var init_harness_sync_claude_only = __esm({
|
|
152305
|
+
"src/harness-sync-claude-only.ts"() {
|
|
152306
|
+
"use strict";
|
|
152307
|
+
}
|
|
152308
|
+
});
|
|
152309
|
+
|
|
152057
152310
|
// ../../apps/server/src/services/harness/project-with-consent.ts
|
|
152058
152311
|
var project_with_consent_exports = {};
|
|
152059
152312
|
__export(project_with_consent_exports, {
|
|
@@ -152185,11 +152438,11 @@ var init_project_with_consent = __esm({
|
|
|
152185
152438
|
import { AsyncLocalStorage as AsyncLocalStorage7 } from "node:async_hooks";
|
|
152186
152439
|
import { randomUUID as randomUUID3 } from "node:crypto";
|
|
152187
152440
|
import { chmod, mkdir as mkdir3, rename, rm, writeFile as writeFile3 } from "node:fs/promises";
|
|
152188
|
-
import { basename as basename8, dirname as dirname13, join as
|
|
152441
|
+
import { basename as basename8, dirname as dirname13, join as join49, resolve as resolve10 } from "node:path";
|
|
152189
152442
|
async function writeUnlocked(filePath, data, options) {
|
|
152190
152443
|
const dir = dirname13(filePath);
|
|
152191
152444
|
await mkdir3(dir, { recursive: true });
|
|
152192
|
-
const tempPath =
|
|
152445
|
+
const tempPath = join49(dir, `.${basename8(filePath)}.${process.pid}.${randomUUID3()}.tmp`);
|
|
152193
152446
|
try {
|
|
152194
152447
|
await writeFile3(tempPath, data, {
|
|
152195
152448
|
encoding: "utf-8",
|
|
@@ -152354,7 +152607,7 @@ var init_git_tree = __esm({
|
|
|
152354
152607
|
|
|
152355
152608
|
// ../../apps/server/src/services/marketplace/lib/directory-size.ts
|
|
152356
152609
|
import { lstat as lstat3, readdir as readdir3 } from "node:fs/promises";
|
|
152357
|
-
import { join as
|
|
152610
|
+
import { join as join50 } from "node:path";
|
|
152358
152611
|
async function directorySize(root) {
|
|
152359
152612
|
let total = 0;
|
|
152360
152613
|
const walk = async (dir, depth) => {
|
|
@@ -152366,7 +152619,7 @@ async function directorySize(root) {
|
|
|
152366
152619
|
return;
|
|
152367
152620
|
}
|
|
152368
152621
|
for (const entry of entries) {
|
|
152369
|
-
const entryPath =
|
|
152622
|
+
const entryPath = join50(dir, entry.name);
|
|
152370
152623
|
if (entry.isDirectory()) {
|
|
152371
152624
|
await walk(entryPath, depth + 1);
|
|
152372
152625
|
} else if (entry.isFile()) {
|
|
@@ -152402,7 +152655,7 @@ import {
|
|
|
152402
152655
|
stat as stat2,
|
|
152403
152656
|
utimes
|
|
152404
152657
|
} from "node:fs/promises";
|
|
152405
|
-
import { join as
|
|
152658
|
+
import { join as join51 } from "node:path";
|
|
152406
152659
|
function isFetchStatus(value) {
|
|
152407
152660
|
if (typeof value !== "object" || value === null) return false;
|
|
152408
152661
|
const v2 = value;
|
|
@@ -152494,7 +152747,7 @@ var init_marketplace_cache = __esm({
|
|
|
152494
152747
|
entryWrittenListeners = /* @__PURE__ */ new Set();
|
|
152495
152748
|
/** Compute the cache root path: `${dorkHome}/cache/marketplace`. */
|
|
152496
152749
|
get cacheRoot() {
|
|
152497
|
-
return
|
|
152750
|
+
return join51(this.dorkHome, "cache", "marketplace");
|
|
152498
152751
|
}
|
|
152499
152752
|
/**
|
|
152500
152753
|
* Read a cached marketplace.json document.
|
|
@@ -152525,8 +152778,8 @@ var init_marketplace_cache = __esm({
|
|
|
152525
152778
|
if (err instanceof PathEscapeError) return null;
|
|
152526
152779
|
throw err;
|
|
152527
152780
|
}
|
|
152528
|
-
const jsonPath =
|
|
152529
|
-
const stampPath =
|
|
152781
|
+
const jsonPath = join51(dir, MARKETPLACE_FILENAME);
|
|
152782
|
+
const stampPath = join51(dir, LAST_FETCHED_FILENAME);
|
|
152530
152783
|
let raw;
|
|
152531
152784
|
let stamp2;
|
|
152532
152785
|
try {
|
|
@@ -152561,9 +152814,9 @@ var init_marketplace_cache = __esm({
|
|
|
152561
152814
|
async writeMarketplace(marketplaceName, json3) {
|
|
152562
152815
|
const dir = this.marketplaceDir(marketplaceName);
|
|
152563
152816
|
await mkdir4(dir, { recursive: true });
|
|
152564
|
-
await writeFile4(
|
|
152817
|
+
await writeFile4(join51(dir, MARKETPLACE_FILENAME), `${JSON.stringify(json3, null, 2)}
|
|
152565
152818
|
`);
|
|
152566
|
-
await writeFile4(
|
|
152819
|
+
await writeFile4(join51(dir, LAST_FETCHED_FILENAME), (/* @__PURE__ */ new Date()).toISOString());
|
|
152567
152820
|
}
|
|
152568
152821
|
/**
|
|
152569
152822
|
* Record how an attempt to fetch a marketplace's listing went.
|
|
@@ -152582,7 +152835,7 @@ var init_marketplace_cache = __esm({
|
|
|
152582
152835
|
* cache. Callers treat recording as best effort.
|
|
152583
152836
|
*/
|
|
152584
152837
|
async writeFetchStatus(marketplaceName, status) {
|
|
152585
|
-
const file2 =
|
|
152838
|
+
const file2 = join51(this.marketplaceDir(marketplaceName), LAST_CHECK_FILENAME);
|
|
152586
152839
|
await withFileLock(file2, async (write) => {
|
|
152587
152840
|
const current3 = await this.readFetchStatus(marketplaceName);
|
|
152588
152841
|
if (current3 && current3.startedAt > status.startedAt) return;
|
|
@@ -152602,8 +152855,8 @@ var init_marketplace_cache = __esm({
|
|
|
152602
152855
|
try {
|
|
152603
152856
|
const dir = this.marketplaceDir(marketplaceName);
|
|
152604
152857
|
const [stamp2] = await Promise.all([
|
|
152605
|
-
readFile3(
|
|
152606
|
-
access(
|
|
152858
|
+
readFile3(join51(dir, LAST_FETCHED_FILENAME), "utf-8"),
|
|
152859
|
+
access(join51(dir, MARKETPLACE_FILENAME))
|
|
152607
152860
|
]);
|
|
152608
152861
|
const at = new Date(stamp2.trim());
|
|
152609
152862
|
return Number.isNaN(at.getTime()) ? null : at;
|
|
@@ -152621,7 +152874,7 @@ var init_marketplace_cache = __esm({
|
|
|
152621
152874
|
async readFetchStatus(marketplaceName) {
|
|
152622
152875
|
try {
|
|
152623
152876
|
const raw = await readFile3(
|
|
152624
|
-
|
|
152877
|
+
join51(this.marketplaceDir(marketplaceName), LAST_CHECK_FILENAME),
|
|
152625
152878
|
"utf-8"
|
|
152626
152879
|
);
|
|
152627
152880
|
const parsed = JSON.parse(raw);
|
|
@@ -152733,8 +152986,8 @@ var init_marketplace_cache = __esm({
|
|
|
152733
152986
|
* Idempotent. Not safe while a fetch is running in this cache.
|
|
152734
152987
|
*/
|
|
152735
152988
|
async removeLeftovers() {
|
|
152736
|
-
await rm2(
|
|
152737
|
-
const treesRoot =
|
|
152989
|
+
await rm2(join51(this.cacheRoot, LEGACY_PACKAGES_DIRNAME), { recursive: true, force: true });
|
|
152990
|
+
const treesRoot = join51(this.cacheRoot, TREES_DIRNAME);
|
|
152738
152991
|
let entries;
|
|
152739
152992
|
try {
|
|
152740
152993
|
entries = await readdir4(treesRoot);
|
|
@@ -152744,7 +152997,7 @@ var init_marketplace_cache = __esm({
|
|
|
152744
152997
|
await Promise.all(
|
|
152745
152998
|
entries.filter(
|
|
152746
152999
|
(entry) => entry.startsWith(TEMP_FETCH_PREFIX) || entry.startsWith(TEMP_PRUNE_PREFIX)
|
|
152747
|
-
).map((entry) => rm2(
|
|
153000
|
+
).map((entry) => rm2(join51(treesRoot, entry), { recursive: true, force: true }))
|
|
152748
153001
|
);
|
|
152749
153002
|
}
|
|
152750
153003
|
/**
|
|
@@ -152755,9 +153008,9 @@ var init_marketplace_cache = __esm({
|
|
|
152755
153008
|
* @internal
|
|
152756
153009
|
*/
|
|
152757
153010
|
async fetchAndPromote(packageName, subpath, fetch2) {
|
|
152758
|
-
const treesRoot =
|
|
153011
|
+
const treesRoot = join51(this.cacheRoot, TREES_DIRNAME);
|
|
152759
153012
|
await mkdir4(treesRoot, { recursive: true });
|
|
152760
|
-
const tempDir = await mkdtemp(
|
|
153013
|
+
const tempDir = await mkdtemp(join51(treesRoot, TEMP_FETCH_PREFIX));
|
|
152761
153014
|
let commitSha;
|
|
152762
153015
|
let finalPath;
|
|
152763
153016
|
try {
|
|
@@ -152821,7 +153074,7 @@ var init_marketplace_cache = __esm({
|
|
|
152821
153074
|
* removed (the others still are).
|
|
152822
153075
|
*/
|
|
152823
153076
|
async removeUnused(keep) {
|
|
152824
|
-
const treesRoot =
|
|
153077
|
+
const treesRoot = join51(this.cacheRoot, TREES_DIRNAME);
|
|
152825
153078
|
const entries = await this.listPackages();
|
|
152826
153079
|
const kept = keep(entries);
|
|
152827
153080
|
const result2 = { removed: [], freedBytes: 0, failed: [] };
|
|
@@ -152836,7 +153089,7 @@ var init_marketplace_cache = __esm({
|
|
|
152836
153089
|
return null;
|
|
152837
153090
|
}
|
|
152838
153091
|
if (Date.now() - lastUsedMs < IN_USE_GRACE_MS) return null;
|
|
152839
|
-
const target =
|
|
153092
|
+
const target = join51(treesRoot, `${TEMP_PRUNE_PREFIX}${randomUUID4()}`);
|
|
152840
153093
|
await rename2(entry.path, target);
|
|
152841
153094
|
return target;
|
|
152842
153095
|
});
|
|
@@ -152885,7 +153138,7 @@ var init_marketplace_cache = __esm({
|
|
|
152885
153138
|
* Listing is not use: it stamps nothing.
|
|
152886
153139
|
*/
|
|
152887
153140
|
async listPackages() {
|
|
152888
|
-
const root =
|
|
153141
|
+
const root = join51(this.cacheRoot, TREES_DIRNAME);
|
|
152889
153142
|
let entries;
|
|
152890
153143
|
try {
|
|
152891
153144
|
entries = await readdir4(root);
|
|
@@ -152899,7 +153152,7 @@ var init_marketplace_cache = __esm({
|
|
|
152899
153152
|
if (!parsed) {
|
|
152900
153153
|
continue;
|
|
152901
153154
|
}
|
|
152902
|
-
const path66 =
|
|
153155
|
+
const path66 = join51(root, entry);
|
|
152903
153156
|
try {
|
|
152904
153157
|
const info2 = await stat2(path66);
|
|
152905
153158
|
if (!info2.isDirectory()) {
|
|
@@ -152928,8 +153181,8 @@ var init_marketplace_cache = __esm({
|
|
|
152928
153181
|
* the cache.
|
|
152929
153182
|
*/
|
|
152930
153183
|
marketplaceDir(marketplaceName) {
|
|
152931
|
-
const root =
|
|
152932
|
-
return assertContainedIn(root,
|
|
153184
|
+
const root = join51(this.cacheRoot, "marketplaces");
|
|
153185
|
+
return assertContainedIn(root, join51(root, marketplaceName));
|
|
152933
153186
|
}
|
|
152934
153187
|
/**
|
|
152935
153188
|
* Compute the directory path for a content-addressable package tree:
|
|
@@ -152949,10 +153202,10 @@ var init_marketplace_cache = __esm({
|
|
|
152949
153202
|
* the cache.
|
|
152950
153203
|
*/
|
|
152951
153204
|
packageDir(packageName, commitSha, subpath) {
|
|
152952
|
-
const root =
|
|
153205
|
+
const root = join51(this.cacheRoot, TREES_DIRNAME);
|
|
152953
153206
|
const digest2 = subpathDigest(subpath);
|
|
152954
153207
|
const tree = digest2 === "" ? "" : `${SUBPATH_SEPARATOR}${digest2}`;
|
|
152955
|
-
return assertContainedIn(root,
|
|
153208
|
+
return assertContainedIn(root, join51(root, `${packageName}@${commitSha}${tree}`));
|
|
152956
153209
|
}
|
|
152957
153210
|
};
|
|
152958
153211
|
}
|
|
@@ -153013,7 +153266,7 @@ var init_source_url_policy = __esm({
|
|
|
153013
153266
|
|
|
153014
153267
|
// ../../apps/server/src/services/marketplace/sources/marketplace-source-manager.ts
|
|
153015
153268
|
import { readFile as readFile4 } from "node:fs/promises";
|
|
153016
|
-
import { join as
|
|
153269
|
+
import { join as join52 } from "node:path";
|
|
153017
153270
|
function buildDefaultSources() {
|
|
153018
153271
|
const now3 = (/* @__PURE__ */ new Date()).toISOString();
|
|
153019
153272
|
return [
|
|
@@ -153089,7 +153342,7 @@ var init_marketplace_source_manager = __esm({
|
|
|
153089
153342
|
*/
|
|
153090
153343
|
constructor(dorkHome) {
|
|
153091
153344
|
this.dorkHome = dorkHome;
|
|
153092
|
-
this.filePath =
|
|
153345
|
+
this.filePath = join52(dorkHome, MARKETPLACES_FILENAME);
|
|
153093
153346
|
}
|
|
153094
153347
|
dorkHome;
|
|
153095
153348
|
filePath;
|
|
@@ -153529,7 +153782,7 @@ __export(harness_sync_command_exports, {
|
|
|
153529
153782
|
runHarnessSync: () => runHarnessSync
|
|
153530
153783
|
});
|
|
153531
153784
|
import { existsSync as existsSync18, readFileSync as readFileSync21 } from "node:fs";
|
|
153532
|
-
import { join as
|
|
153785
|
+
import { join as join53 } from "node:path";
|
|
153533
153786
|
import { parseArgs as parseArgs4 } from "node:util";
|
|
153534
153787
|
function parseHarnessSyncArgs(rawArgs) {
|
|
153535
153788
|
let parsed;
|
|
@@ -153656,7 +153909,7 @@ function reportCodexTrust(before, after) {
|
|
|
153656
153909
|
}
|
|
153657
153910
|
function reportClaudeSkillsRestart(existedBefore, repoRoot) {
|
|
153658
153911
|
if (existedBefore) return;
|
|
153659
|
-
if (!existsSync18(
|
|
153912
|
+
if (!existsSync18(join53(repoRoot, CLAUDE_SKILLS_DIR))) return;
|
|
153660
153913
|
const facts = skillsFactsFor("claude-code");
|
|
153661
153914
|
console.log("");
|
|
153662
153915
|
console.log(`Created ${CLAUDE_SKILLS_DIR}/, which is where Claude Code reads skills.`);
|
|
@@ -153667,107 +153920,11 @@ function reportClaudeSkillsRestart(existedBefore, repoRoot) {
|
|
|
153667
153920
|
}
|
|
153668
153921
|
function readIfPresent(repoRoot, rel) {
|
|
153669
153922
|
try {
|
|
153670
|
-
return readFileSync21(
|
|
153923
|
+
return readFileSync21(join53(repoRoot, rel), "utf8");
|
|
153671
153924
|
} catch {
|
|
153672
153925
|
return void 0;
|
|
153673
153926
|
}
|
|
153674
153927
|
}
|
|
153675
|
-
function formatClaudeOnly(claudeOnly, repoRoot) {
|
|
153676
|
-
const { root, plugins, personalHookCommands: hooks } = claudeOnly;
|
|
153677
|
-
const HEADING = "Installed in Claude Code only";
|
|
153678
|
-
if (claudeOnly.unreadable !== void 0) {
|
|
153679
|
-
return [
|
|
153680
|
-
"",
|
|
153681
|
-
HEADING,
|
|
153682
|
-
` DorkOS could not read ${root}/settings.json, so it cannot tell you what Claude Code has. (${claudeOnly.unreadable})`,
|
|
153683
|
-
" Nothing else in this report is affected."
|
|
153684
|
-
];
|
|
153685
|
-
}
|
|
153686
|
-
const notices = claudeOnly.unreadableParts.length + (claudeOnly.skippedEntries ?? 0);
|
|
153687
|
-
if (plugins.length === 0 && notices === 0) return [];
|
|
153688
|
-
const from = (plugin) => plugin.repo === void 0 ? ` - ${plugin.name} (from a source Claude Code calls "${plugin.marketplace}")` : ` - ${plugin.name} (from ${plugin.repo})`;
|
|
153689
|
-
const machineWide = plugins.filter((plugin) => plugin.settingsScope === "user");
|
|
153690
|
-
const inGroup = (offer) => machineWide.filter((plugin) => plugin.offer === offer);
|
|
153691
|
-
const lines = ["", HEADING, ` Read from ${root}`];
|
|
153692
|
-
if (plugins.length > 0) {
|
|
153693
|
-
lines.push(
|
|
153694
|
-
"",
|
|
153695
|
-
` You turned on ${plugins.length} ${plugins.length === 1 ? "plugin" : "plugins"} in Claude Code. Your other agent tools cannot see them.`
|
|
153696
|
-
);
|
|
153697
|
-
}
|
|
153698
|
-
for (const part of claudeOnly.unreadableParts) {
|
|
153699
|
-
lines.push(
|
|
153700
|
-
"",
|
|
153701
|
-
` DorkOS could not read the ${part} part of ${root}/settings.json; the plugin list is still right.`
|
|
153702
|
-
);
|
|
153703
|
-
}
|
|
153704
|
-
const skipped = claudeOnly.skippedEntries ?? 0;
|
|
153705
|
-
if (skipped > 0) {
|
|
153706
|
-
lines.push(
|
|
153707
|
-
"",
|
|
153708
|
-
skipped === 1 ? " DorkOS could not read 1 of the entries in that file, so it is not listed." : ` DorkOS could not read ${skipped} of the entries in that file, so they are not listed.`
|
|
153709
|
-
);
|
|
153710
|
-
}
|
|
153711
|
-
if (plugins.length === 0) return lines;
|
|
153712
|
-
if (hooks > 0) {
|
|
153713
|
-
lines.push(
|
|
153714
|
-
"",
|
|
153715
|
-
` Your personal Claude Code settings run ${hooks} ${hooks === 1 ? "command" : "commands"} automatically. Only Claude Code runs ${hooks === 1 ? "it" : "them"}.`
|
|
153716
|
-
);
|
|
153717
|
-
}
|
|
153718
|
-
if (claudeOnly.sourcesUnreadable !== void 0) {
|
|
153719
|
-
lines.push(
|
|
153720
|
-
"",
|
|
153721
|
-
` DorkOS could not read its own list of sources (${claudeOnly.sourcesUnreadable}), so it cannot offer installs right now.`,
|
|
153722
|
-
"",
|
|
153723
|
-
" Turned on in Claude Code:",
|
|
153724
|
-
...plugins.map(from),
|
|
153725
|
-
"",
|
|
153726
|
-
" Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
|
|
153727
|
-
" not be the whole story."
|
|
153728
|
-
);
|
|
153729
|
-
return lines;
|
|
153730
|
-
}
|
|
153731
|
-
const canInstall = inGroup("install");
|
|
153732
|
-
if (canInstall.length > 0) {
|
|
153733
|
-
lines.push(
|
|
153734
|
-
"",
|
|
153735
|
-
" DorkOS can install these for this project, so every agent tool here gets them:"
|
|
153736
|
-
);
|
|
153737
|
-
for (const plugin of canInstall) {
|
|
153738
|
-
lines.push(from(plugin), ` Run: dorkos install ${plugin.name} --project ${repoRoot}`);
|
|
153739
|
-
}
|
|
153740
|
-
lines.push(" DorkOS has to be running, and it asks you to approve the install first.");
|
|
153741
|
-
}
|
|
153742
|
-
const needsSource = inGroup("add-source-then-install");
|
|
153743
|
-
if (needsSource.length > 0) {
|
|
153744
|
-
lines.push("", " DorkOS does not have these sources yet:");
|
|
153745
|
-
for (const plugin of needsSource) {
|
|
153746
|
-
lines.push(
|
|
153747
|
-
from(plugin),
|
|
153748
|
-
` Add the source first: dorkos marketplace add ${plugin.sourceUrl}`
|
|
153749
|
-
);
|
|
153750
|
-
}
|
|
153751
|
-
}
|
|
153752
|
-
const noPackage = inGroup("no-package");
|
|
153753
|
-
if (noPackage.length > 0) {
|
|
153754
|
-
lines.push("", " DorkOS has that source but nothing by that name:", ...noPackage.map(from));
|
|
153755
|
-
}
|
|
153756
|
-
const unknownSource = inGroup("unknown-source");
|
|
153757
|
-
if (unknownSource.length > 0) {
|
|
153758
|
-
lines.push("", " DorkOS cannot tell where these came from:", ...unknownSource.map(from));
|
|
153759
|
-
}
|
|
153760
|
-
const projectOnly = plugins.filter((plugin) => plugin.settingsScope === "project");
|
|
153761
|
-
if (projectOnly.length > 0) {
|
|
153762
|
-
lines.push("", " On for this project only:", ...projectOnly.map(from));
|
|
153763
|
-
}
|
|
153764
|
-
lines.push(
|
|
153765
|
-
"",
|
|
153766
|
-
" Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
|
|
153767
|
-
" not be the whole story."
|
|
153768
|
-
);
|
|
153769
|
-
return lines;
|
|
153770
|
-
}
|
|
153771
153928
|
function formatNotEnabled(plan) {
|
|
153772
153929
|
if (plan.notEnabled.length === 0) return [];
|
|
153773
153930
|
const enableWith = (harness) => `add it to ${HARNESS_MANIFEST_PATH} or run dorkos harness sync --fix --enable ${harness}`;
|
|
@@ -153994,7 +154151,7 @@ async function runHarnessSync(args) {
|
|
|
153994
154151
|
}
|
|
153995
154152
|
const repoRoot = process.cwd();
|
|
153996
154153
|
const ourHarness = await readDorkosHarness(resolveDorkHome2());
|
|
153997
|
-
if (!existsSync18(
|
|
154154
|
+
if (!existsSync18(join53(repoRoot, HARNESS_MANIFEST_PATH))) {
|
|
153998
154155
|
if (!args.fix) {
|
|
153999
154156
|
console.error(`No harness manifest in ${repoRoot}`);
|
|
154000
154157
|
console.error(` looked for: ${HARNESS_MANIFEST_PATH}`);
|
|
@@ -154074,7 +154231,7 @@ async function runHarnessSync(args) {
|
|
|
154074
154231
|
return { exitCode: strictExit(exitCode2, withheld, args.strict) };
|
|
154075
154232
|
}
|
|
154076
154233
|
const codexHooksBefore = readIfPresent(repoRoot, CODEX_HOOKS_TARGET);
|
|
154077
|
-
const claudeSkillsExistedBefore = existsSync18(
|
|
154234
|
+
const claudeSkillsExistedBefore = existsSync18(join53(repoRoot, CLAUDE_SKILLS_DIR));
|
|
154078
154235
|
const result2 = projectWithConsent2(repoRoot, {
|
|
154079
154236
|
...consentOpts,
|
|
154080
154237
|
sweepOrphans: harnessFilter === void 0
|
|
@@ -154111,6 +154268,7 @@ var init_harness_sync_command = __esm({
|
|
|
154111
154268
|
init_harness_consent();
|
|
154112
154269
|
init_harness_sync_allow_hooks();
|
|
154113
154270
|
init_harness_sync_global();
|
|
154271
|
+
init_harness_sync_claude_only();
|
|
154114
154272
|
init_src5();
|
|
154115
154273
|
SUMMARY_KINDS = ["native", "symlink", "scaffold", "generate", "merge"];
|
|
154116
154274
|
USAGE_LINE5 = "Usage: dorkos harness sync [--check] [--fix] [--global] [--harness <id>] [--strict] [--allow-hooks <package>] [--enable <harness>] [--write-gitignore]";
|
|
@@ -154132,7 +154290,7 @@ __export(harness_adopt_command_exports, {
|
|
|
154132
154290
|
runHarnessAdopt: () => runHarnessAdopt
|
|
154133
154291
|
});
|
|
154134
154292
|
import { existsSync as existsSync19 } from "node:fs";
|
|
154135
|
-
import { join as
|
|
154293
|
+
import { join as join54, resolve as resolve11 } from "node:path";
|
|
154136
154294
|
import { parseArgs as parseArgs5 } from "node:util";
|
|
154137
154295
|
function parseHarnessAdoptArgs(rawArgs) {
|
|
154138
154296
|
let parsed;
|
|
@@ -154173,7 +154331,7 @@ ${USAGE_LINE6}`
|
|
|
154173
154331
|
}
|
|
154174
154332
|
async function runHarnessAdopt(args) {
|
|
154175
154333
|
const repoRoot = args.project === void 0 ? process.cwd() : resolve11(process.cwd(), args.project);
|
|
154176
|
-
if (!existsSync19(
|
|
154334
|
+
if (!existsSync19(join54(repoRoot, HARNESS_MANIFEST_PATH))) {
|
|
154177
154335
|
console.error(`No harness manifest in ${repoRoot}`);
|
|
154178
154336
|
console.error(` looked for: ${HARNESS_MANIFEST_PATH}`);
|
|
154179
154337
|
console.error("");
|
|
@@ -157141,7 +157299,7 @@ import { spawn } from "node:child_process";
|
|
|
157141
157299
|
import { randomBytes as randomBytes5, createHash as createHash7 } from "node:crypto";
|
|
157142
157300
|
import { constants as constants6 } from "node:fs";
|
|
157143
157301
|
import { lstat as lstat5, open as open4, realpath as realpath4 } from "node:fs/promises";
|
|
157144
|
-
import { join as
|
|
157302
|
+
import { join as join55, resolve as resolve12, relative as relative11, isAbsolute as isAbsolute10, dirname as dirname14 } from "node:path";
|
|
157145
157303
|
function requireFact2(value, code) {
|
|
157146
157304
|
if (!value) throw new InstallationFailure(code);
|
|
157147
157305
|
}
|
|
@@ -157422,10 +157580,10 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
|
|
|
157422
157580
|
sameBinding(request.attempt.binding, slot.binding) && sameBinding(request.candidate.binding, slot.binding),
|
|
157423
157581
|
"BINDING_MISMATCH"
|
|
157424
157582
|
);
|
|
157425
|
-
const attempt =
|
|
157426
|
-
const candidate =
|
|
157583
|
+
const attempt = join55(config3.cacheRoot, "attempts", slot.binding.attemptId);
|
|
157584
|
+
const candidate = join55(config3.cacheRoot, "candidates", slot.binding.installationId);
|
|
157427
157585
|
requireFact2(
|
|
157428
|
-
request.attempt.attemptRoot === attempt && request.attempt.homeRoot ===
|
|
157586
|
+
request.attempt.attemptRoot === attempt && request.attempt.homeRoot === join55(attempt, "home") && request.attempt.temporaryRoot === join55(attempt, "tmp") && request.candidate.candidateRoot === candidate && request.candidate.payloadRoot === join55(candidate, "payload"),
|
|
157429
157587
|
"BINDING_MISMATCH"
|
|
157430
157588
|
);
|
|
157431
157589
|
await assertDirectory(attempt, request.attempt.identity);
|
|
@@ -157434,7 +157592,7 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
|
|
|
157434
157592
|
await assertDirectory(request.candidate.payloadRoot);
|
|
157435
157593
|
await assertDirectory(config3.libraryRoot);
|
|
157436
157594
|
requireFact2(
|
|
157437
|
-
request.library.distributionSHA256 === INSTALLATION_TARGET.libraryDistributionSHA256 && request.library.cli.path ===
|
|
157595
|
+
request.library.distributionSHA256 === INSTALLATION_TARGET.libraryDistributionSHA256 && request.library.cli.path === join55(config3.libraryRoot, "cli.js") && request.library.browsersManifest.path === join55(config3.libraryRoot, "browsers.json") && request.library.files.length > 0 && request.library.files.length <= INSTALLATION_LIMITS.libraryEntries,
|
|
157438
157596
|
"LIBRARY_MISMATCH"
|
|
157439
157597
|
);
|
|
157440
157598
|
const paths2 = /* @__PURE__ */ new Set();
|
|
@@ -157469,9 +157627,9 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
|
|
|
157469
157627
|
PATH: dirname14(config3.nodeExecutable) + ":/usr/bin:/bin",
|
|
157470
157628
|
HOME: home2,
|
|
157471
157629
|
TMPDIR: temporary,
|
|
157472
|
-
XDG_CONFIG_HOME:
|
|
157473
|
-
XDG_CACHE_HOME:
|
|
157474
|
-
XDG_DATA_HOME:
|
|
157630
|
+
XDG_CONFIG_HOME: join55(home2, ".config"),
|
|
157631
|
+
XDG_CACHE_HOME: join55(home2, ".cache"),
|
|
157632
|
+
XDG_DATA_HOME: join55(home2, ".local", "share"),
|
|
157475
157633
|
NODE_DISABLE_COMPILE_CACHE: "1",
|
|
157476
157634
|
...payload ? { PLAYWRIGHT_BROWSERS_PATH: payload } : {},
|
|
157477
157635
|
LC_ALL: "C",
|
|
@@ -157804,17 +157962,17 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
|
|
|
157804
157962
|
},
|
|
157805
157963
|
async runVersionProbe(request) {
|
|
157806
157964
|
const slot = register("version-probe", request.binding, request.bounds);
|
|
157807
|
-
const attempt =
|
|
157965
|
+
const attempt = join55(config3.cacheRoot, "attempts", slot.binding.attemptId);
|
|
157808
157966
|
return execute(
|
|
157809
157967
|
slot,
|
|
157810
157968
|
request,
|
|
157811
157969
|
request.executable.path,
|
|
157812
157970
|
["--version"],
|
|
157813
157971
|
request.cwd,
|
|
157814
|
-
environment(
|
|
157972
|
+
environment(join55(attempt, "home"), join55(attempt, "tmp")),
|
|
157815
157973
|
async () => {
|
|
157816
157974
|
requireFact2(
|
|
157817
|
-
request.cwd === attempt && request.executable.path ===
|
|
157975
|
+
request.cwd === attempt && request.executable.path === join55(
|
|
157818
157976
|
config3.cacheRoot,
|
|
157819
157977
|
"candidates",
|
|
157820
157978
|
slot.binding.installationId,
|
|
@@ -157823,8 +157981,8 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
|
|
|
157823
157981
|
"BINDING_MISMATCH"
|
|
157824
157982
|
);
|
|
157825
157983
|
await assertDirectory(attempt);
|
|
157826
|
-
await assertDirectory(
|
|
157827
|
-
await assertDirectory(
|
|
157984
|
+
await assertDirectory(join55(attempt, "home"));
|
|
157985
|
+
await assertDirectory(join55(attempt, "tmp"));
|
|
157828
157986
|
await sourceIntake(slot);
|
|
157829
157987
|
await readPinned(
|
|
157830
157988
|
slot,
|
|
@@ -157887,7 +158045,7 @@ var init_status2 = __esm({
|
|
|
157887
158045
|
});
|
|
157888
158046
|
|
|
157889
158047
|
// ../browser/src/runtime/installation/transaction.ts
|
|
157890
|
-
import { join as
|
|
158048
|
+
import { join as join56 } from "node:path";
|
|
157891
158049
|
function require2(value, code) {
|
|
157892
158050
|
if (!value) throw new InstallationFailure(code);
|
|
157893
158051
|
}
|
|
@@ -157951,7 +158109,7 @@ function createInstallationTransaction(configuration, dependencies, generation3)
|
|
|
157951
158109
|
require2(facts.cleanupCauses.length === 0 && !facts.stopRequested && facts.exitObserved && facts.closeObserved, "CUSTODY_UNCERTAIN");
|
|
157952
158110
|
require2(facts.exitCode === 0 && facts.signal === null, role2 === "official-install" ? "INSTALLER_FAILED" : "VERIFIER_FAILED");
|
|
157953
158111
|
const birth = facts.birth;
|
|
157954
|
-
require2(birth && sameBinding(birth.binding, expected) && birth.role === role2 && birth.jobId === facts.jobId && birth.executable === config3.nodeExecutable && canonicalDigest(birth.bounds) === canonicalDigest(bounds) && birth.cwd ===
|
|
158112
|
+
require2(birth && sameBinding(birth.binding, expected) && birth.role === role2 && birth.jobId === facts.jobId && birth.executable === config3.nodeExecutable && canonicalDigest(birth.bounds) === canonicalDigest(bounds) && birth.cwd === join56(config3.cacheRoot, "attempts", expected.attemptId) && Number.isSafeInteger(birth.pid) && birth.pid > 0 && canonicalDigest(birth.argv) === canonicalDigest(argv2), "BINDING_MISMATCH");
|
|
157955
158113
|
for (const [stream, bytes] of [
|
|
157956
158114
|
[facts.stdout, run.stdout],
|
|
157957
158115
|
[facts.stderr, run.stderr]
|
|
@@ -157964,11 +158122,11 @@ function createInstallationTransaction(configuration, dependencies, generation3)
|
|
|
157964
158122
|
};
|
|
157965
158123
|
const validateLibrary = (library) => {
|
|
157966
158124
|
require2(library.distributionSHA256 === INSTALLATION_TARGET.libraryDistributionSHA256, "LIBRARY_MISMATCH");
|
|
157967
|
-
require2(library.cli.path ===
|
|
158125
|
+
require2(library.cli.path === join56(config3.libraryRoot, "cli.js") && library.browsersManifest.path === join56(config3.libraryRoot, "browsers.json"), "LIBRARY_MISMATCH");
|
|
157968
158126
|
require2(library.files.length > 0 && library.files.length <= INSTALLATION_LIMITS.libraryEntries, "LIBRARY_MISMATCH");
|
|
157969
158127
|
};
|
|
157970
158128
|
const validateCandidate = (candidate, expected) => {
|
|
157971
|
-
require2(candidate.installationId === expected.installationId && candidate.candidateRoot ===
|
|
158129
|
+
require2(candidate.installationId === expected.installationId && candidate.candidateRoot === join56(config3.cacheRoot, "candidates", expected.installationId) && candidate.payloadRoot === join56(candidate.candidateRoot, "payload") && candidate.executable.path === join56(candidate.candidateRoot, INSTALLATION_TARGET.executablePath), "OWNERSHIP_UNCERTAIN");
|
|
157972
158130
|
FileIdentitySchema.parse(candidate.executable.identity);
|
|
157973
158131
|
DigestSchema.parse(candidate.executable.sha256);
|
|
157974
158132
|
DigestSchema.parse(candidate.inventoryDigest);
|
|
@@ -158155,7 +158313,7 @@ function createInstallationTransaction(configuration, dependencies, generation3)
|
|
|
158155
158313
|
recordBytes(journal, INSTALLATION_LIMITS.journalBytes);
|
|
158156
158314
|
check4(bounds, options.signal);
|
|
158157
158315
|
const written = await fs40.writeReuseJournal(reservation, attempt, journal);
|
|
158158
|
-
require2(written.path ===
|
|
158316
|
+
require2(written.path === join56(attempt.attemptRoot, "reuse.json") && written.sha256 === sha2562(recordBytes(journal, INSTALLATION_LIMITS.journalBytes)), "OWNERSHIP_UNCERTAIN");
|
|
158159
158317
|
const unchanged = await fs40.inspectExisting({ signal: options.signal });
|
|
158160
158318
|
require2(canonicalDigest(unchanged.current) === canonicalDigest(reserved.current) && canonicalDigest(unchanged.installation) === canonicalDigest(reserved.installation), "ROOT_CHANGED");
|
|
158161
158319
|
journalDigest = written.sha256;
|
|
@@ -158263,7 +158421,7 @@ import { createHash as createHash8 } from "node:crypto";
|
|
|
158263
158421
|
import { constants as constants7 } from "node:fs";
|
|
158264
158422
|
import { lstat as lstat6, open as open5, realpath as realpath5 } from "node:fs/promises";
|
|
158265
158423
|
import { createRequire as createRequire3 } from "node:module";
|
|
158266
|
-
import { dirname as dirname15, join as
|
|
158424
|
+
import { dirname as dirname15, join as join57, resolve as resolve13 } from "node:path";
|
|
158267
158425
|
import { fileURLToPath as fileURLToPath6 } from "node:url";
|
|
158268
158426
|
function sameFile(a2, b2) {
|
|
158269
158427
|
return a2.isFile() && b2.isFile() && a2.dev === b2.dev && a2.ino === b2.ino && a2.size === b2.size && a2.mtimeNs === b2.mtimeNs && a2.ctimeNs === b2.ctimeNs && a2.mode === b2.mode && a2.uid === b2.uid;
|
|
@@ -158324,7 +158482,7 @@ async function inspectFile(filename, cap, retainBytes = false) {
|
|
|
158324
158482
|
async function packageRoot(controller) {
|
|
158325
158483
|
let directory = dirname15(controller);
|
|
158326
158484
|
while (true) {
|
|
158327
|
-
const candidate =
|
|
158485
|
+
const candidate = join57(directory, "package.json");
|
|
158328
158486
|
let named3 = null;
|
|
158329
158487
|
try {
|
|
158330
158488
|
named3 = await lstat6(candidate, { bigint: true });
|
|
@@ -158344,10 +158502,10 @@ async function packageRoot(controller) {
|
|
|
158344
158502
|
async function resolveInstalledRuntimeConfiguration(controllerURL, dataDirectory) {
|
|
158345
158503
|
const controllerEntry = await realpath5(fileURLToPath6(controllerURL));
|
|
158346
158504
|
const root = await packageRoot(controllerEntry);
|
|
158347
|
-
if (controllerEntry !==
|
|
158505
|
+
if (controllerEntry !== join57(root, "dist/bin/cli.js"))
|
|
158348
158506
|
throw new Error("The managed browser needs the packaged DorkOS command.");
|
|
158349
|
-
const verifierEntry =
|
|
158350
|
-
const sourceManifestPath =
|
|
158507
|
+
const verifierEntry = join57(root, BROWSER_VERIFIER_ASSET);
|
|
158508
|
+
const sourceManifestPath = join57(root, BROWSER_SOURCE_MANIFEST);
|
|
158351
158509
|
const nodeExecutable = await realpath5(process.execPath);
|
|
158352
158510
|
const node2 = await inspectFile(nodeExecutable, 268435456);
|
|
158353
158511
|
const controller = await inspectFile(controllerEntry, INSTALLATION_LIMITS.controllerBytes);
|
|
@@ -162682,7 +162840,7 @@ var init_provider_process = __esm({
|
|
|
162682
162840
|
// src/commands/community-deploy/runtime/github-release-source.ts
|
|
162683
162841
|
import { mkdtemp as mkdtemp2, rm as rm3, writeFile as writeFile5 } from "node:fs/promises";
|
|
162684
162842
|
import { tmpdir as tmpdir3 } from "node:os";
|
|
162685
|
-
import { join as
|
|
162843
|
+
import { join as join58 } from "node:path";
|
|
162686
162844
|
function createGitHubCommunityReleaseSource(options) {
|
|
162687
162845
|
const verify = async (subject, trusted) => {
|
|
162688
162846
|
await runProviderCommand({
|
|
@@ -162728,8 +162886,8 @@ function createGitHubCommunityReleaseSource(options) {
|
|
|
162728
162886
|
return result2.value;
|
|
162729
162887
|
},
|
|
162730
162888
|
verifyManifest: async (bytes, trusted) => {
|
|
162731
|
-
const directory = await mkdtemp2(
|
|
162732
|
-
const path66 =
|
|
162889
|
+
const directory = await mkdtemp2(join58(tmpdir3(), "dorkos-community-manifest-"));
|
|
162890
|
+
const path66 = join58(directory, "manifest.json");
|
|
162733
162891
|
try {
|
|
162734
162892
|
await writeFile5(path66, bytes, { mode: 384, flag: "wx" });
|
|
162735
162893
|
return await verify(path66, trusted);
|
|
@@ -165483,7 +165641,7 @@ var init_community_release_manifest = __esm({
|
|
|
165483
165641
|
// src/commands/community-deploy/fly-config.ts
|
|
165484
165642
|
import { mkdtemp as mkdtemp3, rm as rm4, writeFile as writeFile6 } from "node:fs/promises";
|
|
165485
165643
|
import { tmpdir as tmpdir4 } from "node:os";
|
|
165486
|
-
import { join as
|
|
165644
|
+
import { join as join59 } from "node:path";
|
|
165487
165645
|
function tomlString(value) {
|
|
165488
165646
|
return JSON.stringify(value);
|
|
165489
165647
|
}
|
|
@@ -165536,8 +165694,8 @@ kill_timeout = "30s"
|
|
|
165536
165694
|
`;
|
|
165537
165695
|
}
|
|
165538
165696
|
async function withCommunityFlyConfig(plan, consumer) {
|
|
165539
|
-
const directory = await mkdtemp3(
|
|
165540
|
-
const path66 =
|
|
165697
|
+
const directory = await mkdtemp3(join59(tmpdir4(), "dorkos-community-fly-"));
|
|
165698
|
+
const path66 = join59(directory, "fly.toml");
|
|
165541
165699
|
try {
|
|
165542
165700
|
await writeFile6(path66, renderCommunityFlyConfig(plan), { mode: 384, flag: "wx" });
|
|
165543
165701
|
return await consumer(path66);
|
|
@@ -165980,7 +166138,7 @@ var init_default_deploy = __esm({
|
|
|
165980
166138
|
// src/commands/community-deploy/runtime/default-owner.ts
|
|
165981
166139
|
import { access as access2, constants as constants9, stat as stat4 } from "node:fs/promises";
|
|
165982
166140
|
import { platform as platform2 } from "node:os";
|
|
165983
|
-
import { delimiter, join as
|
|
166141
|
+
import { delimiter, join as join60 } from "node:path";
|
|
165984
166142
|
import { createInterface as createInterface4 } from "node:readline/promises";
|
|
165985
166143
|
import { stdin as stdin2, stdout as stdout2 } from "node:process";
|
|
165986
166144
|
async function ask(question, signal) {
|
|
@@ -166013,7 +166171,7 @@ function handoffCommands(system) {
|
|
|
166013
166171
|
async function executableOnPath(executable, path66) {
|
|
166014
166172
|
for (const directory of path66.split(delimiter).filter(Boolean)) {
|
|
166015
166173
|
try {
|
|
166016
|
-
await access2(
|
|
166174
|
+
await access2(join60(directory, executable), constants9.X_OK);
|
|
166017
166175
|
return true;
|
|
166018
166176
|
} catch {
|
|
166019
166177
|
}
|
|
@@ -166045,7 +166203,7 @@ async function assertOwnerHandoffPrerequisites(env6, system = platform2()) {
|
|
|
166045
166203
|
`Owner handoff needs an active Wayland clipboard session before setup can create resources. See ${FLY_GUIDE_URL}`
|
|
166046
166204
|
);
|
|
166047
166205
|
}
|
|
166048
|
-
const socketAvailable = await stat4(
|
|
166206
|
+
const socketAvailable = await stat4(join60(runtimeDirectory, display)).then(
|
|
166049
166207
|
(value) => value.isSocket(),
|
|
166050
166208
|
() => false
|
|
166051
166209
|
);
|
|
@@ -166230,10 +166388,10 @@ import {
|
|
|
166230
166388
|
rm as rm5,
|
|
166231
166389
|
unlink as unlink2
|
|
166232
166390
|
} from "node:fs/promises";
|
|
166233
|
-
import { basename as basename9, dirname as dirname16, join as
|
|
166391
|
+
import { basename as basename9, dirname as dirname16, join as join61 } from "node:path";
|
|
166234
166392
|
function launchJournalPath(dorkHome, runId) {
|
|
166235
166393
|
const safeRunId = external_exports.uuid().parse(runId);
|
|
166236
|
-
return
|
|
166394
|
+
return join61(dorkHome, "launches", "community", `${safeRunId}.json`);
|
|
166237
166395
|
}
|
|
166238
166396
|
async function rejectSymlink(path66) {
|
|
166239
166397
|
try {
|
|
@@ -166270,7 +166428,7 @@ async function exists2(path66) {
|
|
|
166270
166428
|
}
|
|
166271
166429
|
async function writeDurably(filePath, data) {
|
|
166272
166430
|
const directory = dirname16(filePath);
|
|
166273
|
-
const temporary =
|
|
166431
|
+
const temporary = join61(
|
|
166274
166432
|
directory,
|
|
166275
166433
|
`.${basename9(filePath)}.${process.pid}.${randomUUID6()}.durable`
|
|
166276
166434
|
);
|
|
@@ -166367,7 +166525,7 @@ async function readLaunchJournal(filePath) {
|
|
|
166367
166525
|
}
|
|
166368
166526
|
}
|
|
166369
166527
|
async function listIncompleteLaunchJournals(dorkHome) {
|
|
166370
|
-
const directory =
|
|
166528
|
+
const directory = join61(dorkHome, "launches", "community");
|
|
166371
166529
|
await rejectSymlink(dirname16(directory));
|
|
166372
166530
|
await rejectSymlink(directory);
|
|
166373
166531
|
let filenames;
|
|
@@ -170552,6 +170710,7 @@ var init_connection_copy = __esm({
|
|
|
170552
170710
|
var CONNECTOR_OPERATION_SELECTION_LIMIT, CONNECTOR_AUTHENTICATION_FLOW_TTL_MS, CONNECTOR_EVENT_REVIEW_SCOPE_LIMIT, ConnectorJsonValueSchema, ConnectorJsonObjectSchema, ConnectorProviderInstanceIdSchema, ConnectionIdSchema, ConnectorExternalAccountRefSchema, ConnectorProviderModeSchema, ConnectorProviderHealthSchema, ConnectorGrantReconciliationStatusSchema, ConnectorOperationClassificationSchema, ConnectorAccessLevelSchema, ConnectorRetryPolicySchema, ConnectorOperationRevisionSchema, ConnectorOperationPageSchema, ConnectorCapabilityAvailabilitySchema, ConnectorUnsupportedResultSchema, ConnectorProviderCapabilitySetSchema, ConnectorToolkitVersionResultSchema, ConnectorProviderExecuteResultSchema, ConnectorAuthenticationFlowSchema, ConnectorExecutionTargetSchema, ConnectorProgramExecutionRequestSchema, ConnectorExecutionPublicResultSchema, ConnectorExecutionResponseSchema, ConnectionReadinessStateSchema, ConnectionReadinessReasonSchema, ConnectionFixActionSchema, ConnectionFixSchema, ConnectionReadinessSchema, AccessibleConnectorConnectionSchema, AccessibleConnectorOperationSchema, ConnectorAccessibleConnectionsResponseSchema, ConnectorAccessibleOperationsResponseSchema, ConnectorUsageItemSchema, ConnectorUsagePageSchema, ConnectorReconciliationPreviewRequestSchema, ConnectorReconciliationGrantSelectionSchema, ConnectorReconciliationEveryAgentSelectionSchema, ConnectorReconciliationEveryAgentStateSchema, ConnectorEveryAgentRevokeResponseSchema, ConnectorReconciliationAgentSchema, ConnectorReconciliationCandidateSchema, ConnectorReconciliationPreviewSchema, ConnectorReconciliationApplyRequestSchema, ConnectorReconciliationApplyResponseSchema, ReviewActionBaseSchema, ConnectionTargetSchema, ConnectorRequestAccessSchema, ConnectorReviewActionSchema, ConnectorAgentConnectionRequestInputSchema, ConnectorAgentRequestBaseSchema, ConnectorRequestNotGrantedSchema, ConnectorAgentRequestStatusSchema, ConnectorAgentRequestItemSchema, ConnectorAgentRequestListResponseSchema, ConnectorManagementConnectActionSchema, ConnectorManagementAppliedActionSchema, ConnectorManagementReviewActionSchema, ConnectorManagementReviewCreateRequestSchema, ConnectorManagementReviewOutcomeSchema, ConnectorManagementReviewOperationContextSchema, ConnectorManagementReviewConnectionContextSchema, ConnectorManagementReviewAgentContextSchema, ConnectorManagementReviewContextSchema, ManagementReviewItemBaseShape, ConnectorPendingManagementReviewItemSchema, ConnectorResolvingManagementReviewItemSchema, ConnectorExpiredManagementReviewItemSchema, ConnectorDeniedManagementReviewItemSchema, ConnectorApprovedAppliedManagementReviewItemSchema, ConnectorApprovedConnectManagementReviewItemSchema, ConnectorApprovedUnknownManagementReviewItemSchema, ConnectorManagementReviewItemSchema, ProgramReviewStatusBaseShape, ConnectorProgramReviewStatusSchema, ConnectorManagementReviewDecisionSchema, ConnectorManagementReviewDecisionResultSchema;
|
|
170553
170711
|
var init_connector_schemas = __esm({
|
|
170554
170712
|
"../connector-providers/src/connector-schemas.ts"() {
|
|
170713
|
+
"use strict";
|
|
170555
170714
|
init_zod();
|
|
170556
170715
|
init_connection_copy();
|
|
170557
170716
|
CONNECTOR_OPERATION_SELECTION_LIMIT = 1e5;
|
|
@@ -176677,7 +176836,7 @@ if (process.argv[2] === "community") {
|
|
|
176677
176836
|
);
|
|
176678
176837
|
Object.assign(childEnv, credentialEnv.pickCommunityCredentialEnv(rawProcessEnv));
|
|
176679
176838
|
const exitCode = await dispatcher.runCommunityDispatcher(process.argv.slice(3), {
|
|
176680
|
-
cliVersion: "0.
|
|
176839
|
+
cliVersion: "0.123.0",
|
|
176681
176840
|
dorkHome: DORK_HOME,
|
|
176682
176841
|
processEnv: childEnv,
|
|
176683
176842
|
parseRelease: (bytes) => releaseContract.parseCompatibleCommunityReleaseManifest(
|
|
@@ -176695,7 +176854,7 @@ if (process.argv[2] === "community") {
|
|
|
176695
176854
|
process.exit(1);
|
|
176696
176855
|
}
|
|
176697
176856
|
}
|
|
176698
|
-
var cliErrorReporter = initCliErrorReporting({ dorkHome: DORK_HOME, version: "0.
|
|
176857
|
+
var cliErrorReporter = initCliErrorReporting({ dorkHome: DORK_HOME, version: "0.123.0" });
|
|
176699
176858
|
var uninstallCliErrorHandlers = cliErrorReporter ? installCliErrorHandlers(cliErrorReporter) : void 0;
|
|
176700
176859
|
if (process.argv[2] === "doctor") {
|
|
176701
176860
|
process.env.DORK_HOME = DORK_HOME;
|
|
@@ -176705,7 +176864,7 @@ if (process.argv[2] === "doctor") {
|
|
|
176705
176864
|
if (process.argv[2] === "feedback") {
|
|
176706
176865
|
process.env.DORK_HOME = DORK_HOME;
|
|
176707
176866
|
const { runFeedback: runFeedback2 } = await Promise.resolve().then(() => (init_feedback2(), feedback_exports));
|
|
176708
|
-
process.exit(await runFeedback2(DORK_HOME, "0.
|
|
176867
|
+
process.exit(await runFeedback2(DORK_HOME, "0.123.0", process.argv.slice(3)));
|
|
176709
176868
|
}
|
|
176710
176869
|
if (process.argv[2] === "auth") {
|
|
176711
176870
|
process.env.DORK_HOME = DORK_HOME;
|
|
@@ -176804,7 +176963,7 @@ if (process.argv[2] === "agent" || process.argv[2] === "task" || process.argv[2]
|
|
|
176804
176963
|
}
|
|
176805
176964
|
}
|
|
176806
176965
|
const { runVersionDispatcher: runVersionDispatcher2 } = await Promise.resolve().then(() => (init_version5(), version_exports));
|
|
176807
|
-
process.exit(await runVersionDispatcher2("0.
|
|
176966
|
+
process.exit(await runVersionDispatcher2("0.123.0", DORK_HOME, subArgs));
|
|
176808
176967
|
}
|
|
176809
176968
|
var { values, positionals } = parseCliArgs();
|
|
176810
176969
|
if (positionals[0] && !knownCommands.has(positionals[0])) {
|
|
@@ -176898,14 +177057,14 @@ Examples:
|
|
|
176898
177057
|
process.exit(0);
|
|
176899
177058
|
}
|
|
176900
177059
|
if (values.version) {
|
|
176901
|
-
console.log("0.
|
|
177060
|
+
console.log("0.123.0");
|
|
176902
177061
|
process.exit(0);
|
|
176903
177062
|
}
|
|
176904
177063
|
if (values["post-install-check"]) {
|
|
176905
177064
|
const claudeFound = checkClaude();
|
|
176906
177065
|
const coreExtensionsFound = checkCoreExtensions();
|
|
176907
177066
|
const extensionsCompile = await checkExtensionCompilation();
|
|
176908
|
-
console.log(`dorkos ${"0.
|
|
177067
|
+
console.log(`dorkos ${"0.123.0"}`);
|
|
176909
177068
|
if (!coreExtensionsFound) {
|
|
176910
177069
|
console.log("Installation incomplete \u2014 bundled core extensions are missing.");
|
|
176911
177070
|
}
|
|
@@ -177053,7 +177212,7 @@ if (fs39.existsSync(envPath)) {
|
|
|
177053
177212
|
}
|
|
177054
177213
|
uninstallCliErrorHandlers?.();
|
|
177055
177214
|
process.env.DORKOS_CLI_ENTRYPOINT = fileURLToPath7(import.meta.url);
|
|
177056
|
-
process.env.DORKOS_CLI_VERSION = "0.
|
|
177215
|
+
process.env.DORKOS_CLI_VERSION = "0.123.0";
|
|
177057
177216
|
var server;
|
|
177058
177217
|
try {
|
|
177059
177218
|
server = await import("../server/index.js");
|
|
@@ -177078,7 +177237,7 @@ var ansiReset = "\x1B[0m";
|
|
|
177078
177237
|
console.log("");
|
|
177079
177238
|
console.log(`${purple}${logo}${ansiReset}`);
|
|
177080
177239
|
console.log("");
|
|
177081
|
-
console.log(` DorkOS v${"0.
|
|
177240
|
+
console.log(` DorkOS v${"0.123.0"}`);
|
|
177082
177241
|
console.log(` Local: ${link(localUrl, localUrl)}`);
|
|
177083
177242
|
var nets = networkInterfaces();
|
|
177084
177243
|
var networkUrl = null;
|
|
@@ -177104,9 +177263,9 @@ if (shouldOpenBrowser && process.stdin.isTTY) {
|
|
|
177104
177263
|
const openCmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
|
|
177105
177264
|
exec(`${openCmd} ${localUrl}`);
|
|
177106
177265
|
}
|
|
177107
|
-
checkForUpdate("0.
|
|
177266
|
+
checkForUpdate("0.123.0").then((latestVersion) => {
|
|
177108
177267
|
if (latestVersion) {
|
|
177109
|
-
const msg = `Update available: ${"0.
|
|
177268
|
+
const msg = `Update available: ${"0.123.0"} \u2192 ${latestVersion}`;
|
|
177110
177269
|
const cmd = "Run npm install -g dorkos@latest to update";
|
|
177111
177270
|
const width = Math.max(msg.length, cmd.length) + 6;
|
|
177112
177271
|
const pad2 = (s2) => `\u2502 ${s2}${" ".repeat(width - s2.length - 6)} \u2502`;
|