dorkos 0.120.0 → 0.122.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/dist/bin/cli.js +497 -356
  2. package/dist/browser/native/package-manifest.json +1 -1
  3. package/dist/browser/source-manifest.json +1 -1
  4. package/dist/client/assets/{AboutPage-Y8O56Cz5.js → AboutPage-ClN3P9B8.js} +1 -1
  5. package/dist/client/assets/{ActivityErrorState-DlROxqde.js → ActivityErrorState-B2lq1pyE.js} +1 -1
  6. package/dist/client/assets/{ActivityPage-BdV90CV2.js → ActivityPage-htTkSy18.js} +1 -1
  7. package/dist/client/assets/{ActivityRow-B5yiD_uD.js → ActivityRow-BqV0B1T0.js} +1 -1
  8. package/dist/client/assets/{AdapterIcon-Dyq92Eup.js → AdapterIcon-DlkN0YJo.js} +1 -1
  9. package/dist/client/assets/{AdapterSetupWizard-D9tqz7Hl.js → AdapterSetupWizard-RyNPjSmU.js} +1 -1
  10. package/dist/client/assets/{AgentOptionRow-BeRqDo7c.js → AgentOptionRow-DSievGfL.js} +1 -1
  11. package/dist/client/assets/{AgentPicker-BRyYVJZu.js → AgentPicker-BCtWrhsA.js} +1 -1
  12. package/dist/client/assets/{AgentRequestCard-xX6fAKgO.js → AgentRequestCard-BHIHWNRz.js} +4 -4
  13. package/dist/client/assets/{AppearancePage-DKF9BqRt.js → AppearancePage-B2eduuT0.js} +1 -1
  14. package/dist/client/assets/{ApplyToOverridesDialog-CPvtr_-f.js → ApplyToOverridesDialog-C7G2t3X2.js} +1 -1
  15. package/dist/client/assets/{AttentionSignalRow-vBfioH1A.js → AttentionSignalRow-_8thTHYX.js} +1 -1
  16. package/dist/client/assets/{BaseTanStackRouterDevtoolsPanel-B-iktbLX-B50zNtwB.js → BaseTanStackRouterDevtoolsPanel-B-iktbLX-WpZU5xiO.js} +1 -1
  17. package/dist/client/assets/{BindingDialog-CSNjws3F.js → BindingDialog-BAwbHFq3.js} +1 -1
  18. package/dist/client/assets/BlintzCanvas-BEtRmEbL.js +1231 -0
  19. package/dist/client/assets/{BlintzCanvas-GgiCXV7C.css → BlintzCanvas-DCXOV_yN.css} +1 -1
  20. package/dist/client/assets/{CanvasCsvContent-0Mb7uOuA.js → CanvasCsvContent--6i2ETyZ.js} +2 -2
  21. package/dist/client/assets/CanvasFileContent-C86nyLbI.js +2 -0
  22. package/dist/client/assets/CanvasModel3dContent-wYHHAovt.js +2 -0
  23. package/dist/client/assets/{ChatAppsOff-CLRB0YU5.js → ChatAppsOff-2Wvch1rr.js} +1 -1
  24. package/dist/client/assets/{CodeMirrorDiff-B4uFJD6g.js → CodeMirrorDiff-s1TWguZ8.js} +1 -1
  25. package/dist/client/assets/{CodeMirrorEditor-rYOrBAZc.js → CodeMirrorEditor-1ndoTbcZ.js} +1 -1
  26. package/dist/client/assets/{CommitmentList-i-IZ4gbr.js → CommitmentList-BK97ndab.js} +1 -1
  27. package/dist/client/assets/{CommitmentsPage-ChO1JkrE.js → CommitmentsPage-_nd37gVX.js} +1 -1
  28. package/dist/client/assets/{ComputerResourceView-pLuD2ie6.js → ComputerResourceView-C2Broer4.js} +1 -1
  29. package/dist/client/assets/{ComputerViewer-D7tPmpY5.js → ComputerViewer-DgG7t2KZ.js} +1 -1
  30. package/dist/client/assets/{ConnectionAccessLists-D6VH1vX3.js → ConnectionAccessLists-Pbo2lft8.js} +1 -1
  31. package/dist/client/assets/{ConnectionsPage-7x5olD9q.js → ConnectionsPage-Dm2d9owX.js} +2 -2
  32. package/dist/client/assets/{ConventionPage-BTYLWw6p.js → ConventionPage-BUltejHJ.js} +1 -1
  33. package/dist/client/assets/{ExtensionPageRoute-A9AdBBbw.js → ExtensionPageRoute-DAomCiMw.js} +2 -2
  34. package/dist/client/assets/{FloatingTanStackRouterDevtools-CqogiFob-ayv0yz1C.js → FloatingTanStackRouterDevtools-CqogiFob-5fT29ZEV.js} +1 -1
  35. package/dist/client/assets/HandlePage-BoBFGnUB.js +1 -0
  36. package/dist/client/assets/{HeartbeatPage-Dh6W9Qg5.js → HeartbeatPage-BW0X4YAL.js} +1 -1
  37. package/dist/client/assets/{KeyEntry-owhPGtw3.js → KeyEntry-ClqAj0dS.js} +1 -1
  38. package/dist/client/assets/{LexicalField-B1NFMLD6.js → LexicalField-CbswpPQ7.js} +1 -1
  39. package/dist/client/assets/{ManagesPage-BAnBmBdo.js → ManagesPage-Daqs8hys.js} +1 -1
  40. package/dist/client/assets/{Marketplace-67maxdwz.js → Marketplace-BNMIm8g_.js} +1 -1
  41. package/dist/client/assets/{MarketplaceSourcesView-CzPBNJJj.js → MarketplaceSourcesView-B4WpzVpr.js} +1 -1
  42. package/dist/client/assets/{McpAppFrame-CuObpQTg.js → McpAppFrame-Dbg_Ni39.js} +1 -1
  43. package/dist/client/assets/{McpSigninBody-B-ayj6bQ.js → McpSigninBody-ZmmY1BZ4.js} +1 -1
  44. package/dist/client/assets/{Model3dViewer-DRVqxazk.js → Model3dViewer-DT8x0h7T.js} +1 -1
  45. package/dist/client/assets/NamePage-bC_9FOtD.js +1 -0
  46. package/dist/client/assets/{NewDirectMessageMenu-B3DxayR2.js → NewDirectMessageMenu-BbehZd6I.js} +1 -1
  47. package/dist/client/assets/{NotificationsPage-BavEo7VZ.js → NotificationsPage-B9zEN26O.js} +1 -1
  48. package/dist/client/assets/{OpenMeshSwitch-BwkX2Toa.js → OpenMeshSwitch-D-AYDXjH.js} +1 -1
  49. package/dist/client/assets/{OperatorIdentityForm-CtWgz2yi.js → OperatorIdentityForm-BdAqzVEG.js} +1 -1
  50. package/dist/client/assets/{PermissionHistory-DvM0F2bS.js → PermissionHistory-IOgLQ7qN.js} +1 -1
  51. package/dist/client/assets/{PermissionsPage-D1DJHezV.js → PermissionsPage-CKfDf5Pj.js} +1 -1
  52. package/dist/client/assets/{PersonalityPopover-BV-9wfIl.js → PersonalityPopover-CHPTuHIH.js} +1 -1
  53. package/dist/client/assets/PhotoPage-BOe3xwyN.js +1 -0
  54. package/dist/client/assets/{PresetPicker-BOQKgYAK.js → PresetPicker-BcKF2ds8.js} +2 -2
  55. package/dist/client/assets/{PreviewRefusedNotice-BdhUln2h.js → PreviewRefusedNotice-BuVUhjq3.js} +1 -1
  56. package/dist/client/assets/{ProfileFields-DFRnRR38.js → ProfileFields-DimHNpR4.js} +1 -1
  57. package/dist/client/assets/{ProfilePanelContainer-CkxX9Dps.js → ProfilePanelContainer-FRZ5Px2L.js} +1 -1
  58. package/dist/client/assets/{ProfileRolePicker-BSYi_luB.js → ProfileRolePicker-UWhM5yuR.js} +1 -1
  59. package/dist/client/assets/{PromptSuggestionChips-r08GqBH1.js → PromptSuggestionChips-DQaDSd7Y.js} +1 -1
  60. package/dist/client/assets/{ReportsToPopover-BcsM5Eia.js → ReportsToPopover-BOuCM8il.js} +1 -1
  61. package/dist/client/assets/RoomSurface-Dhv-LkWz.js +44 -0
  62. package/dist/client/assets/{RoomsPage-CQqsdVvB.js → RoomsPage-glKYJBpq.js} +1 -1
  63. package/dist/client/assets/{RunsOnPopover-DFb4xEhP.js → RunsOnPopover-BvxoHUeo.js} +1 -1
  64. package/dist/client/assets/{RuntimeConnectFlow-pKFJlNSJ.js → RuntimeConnectFlow-CgB_X5wo.js} +1 -1
  65. package/dist/client/assets/{RuntimeSetupDialog-DvBJbrmj.js → RuntimeSetupDialog-r1Ss_YQW.js} +1 -1
  66. package/dist/client/assets/{SessionsPage-CGgnEPh7.js → SessionsPage-CFLDx-aF.js} +1 -1
  67. package/dist/client/assets/{SettingsDialog-D0cmzjrH.js → SettingsDialog-BT5rYJUm.js} +3 -3
  68. package/dist/client/assets/{SkillsPage-DDoPlsn2.js → SkillsPage-CUQZ4I_r.js} +1 -1
  69. package/dist/client/assets/{TaskDialogWrapper-DoIVzbKU.js → TaskDialogWrapper-DWpxyxBb.js} +1 -1
  70. package/dist/client/assets/{TasksEmptyState-B68O6dnT.js → TasksEmptyState-B4TjUm8G.js} +2 -2
  71. package/dist/client/assets/{TasksPage-BsBDphim.js → TasksPage-D_vFBDA1.js} +1 -1
  72. package/dist/client/assets/{TeamComputerEntry-CoQ4EsDm.js → TeamComputerEntry-EQ1fjMRb.js} +1 -1
  73. package/dist/client/assets/{ToolsPage-Cl1aOpev.js → ToolsPage-CyNXCe2l.js} +1 -1
  74. package/dist/client/assets/TopologyGraph-DsPEpDjt.js +30 -0
  75. package/dist/client/assets/{TourHost-4O6TJzc-.js → TourHost-D1z2mH5S.js} +1 -1
  76. package/dist/client/assets/{UnlinkDialog-DIMY60Fi.js → UnlinkDialog-q-6B4Ftt.js} +1 -1
  77. package/dist/client/assets/{WidgetErrorCard-CzWw_SPD.js → WidgetErrorCard-BYMiUiAf.js} +23 -23
  78. package/dist/client/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
  79. package/dist/client/assets/_shell-scIpUrVY.js +80 -0
  80. package/dist/client/assets/{_shell._home-DG3Vw7S5.js → _shell._home-D-8JcUYq.js} +1 -1
  81. package/dist/client/assets/{_shell._home.activity-COI96oAO.js → _shell._home.activity-xJKxWbtL.js} +1 -1
  82. package/dist/client/assets/{_shell._home.index-CTwsTjcQ.js → _shell._home.index-C74gh1aE.js} +1 -1
  83. package/dist/client/assets/{_shell._home.tasks-DOVoPYaf.js → _shell._home.tasks-Bh8jwRYJ.js} +1 -1
  84. package/dist/client/assets/{_shell._home.workspaces-ApZhnjwy.js → _shell._home.workspaces-BKkUl6wW.js} +1 -1
  85. package/dist/client/assets/_shell.channels-B2A1G9n8.js +10 -0
  86. package/dist/client/assets/{_shell.connections-bhAK3jnE.js → _shell.connections-eDlPXmuG.js} +1 -1
  87. package/dist/client/assets/{_shell.feedback-requests-k43R8-rW.js → _shell.feedback-requests-Cdbl3oKj.js} +1 -1
  88. package/dist/client/assets/_shell.marketplace-FHQpZxgB.js +1 -0
  89. package/dist/client/assets/_shell.marketplace_.sources-DXv90Z-v.js +1 -0
  90. package/dist/client/assets/_shell.session-BNeYm91q.js +63 -0
  91. package/dist/client/assets/{_shell.team-DHCM1QoO.js → _shell.team-Consxq97.js} +4 -4
  92. package/dist/client/assets/_shell.x._extensionId-DirEl_qN.js +1 -0
  93. package/dist/client/assets/_shell.x._extensionId_._-DirEl_qN.js +1 -0
  94. package/dist/client/assets/abnfDiagram-WEYOIA3C-DXTlLd8s.js +1 -0
  95. package/dist/client/assets/{access-copy-BVzi1REx.js → access-copy-B1SlOYEi.js} +1 -1
  96. package/dist/client/assets/arc-B3IW5TXq.js +1 -0
  97. package/dist/client/assets/architectureDiagram-ZHVYKT53-Bx-4szWe.js +36 -0
  98. package/dist/client/assets/{banner-3xXXsU5J.js → banner-RKoWGrEp.js} +1 -1
  99. package/dist/client/assets/blockDiagram-RJAE7QA3-D_B3EDQ1.js +140 -0
  100. package/dist/client/assets/c4Diagram-XDPPPE54-CSBl4ROD.js +38 -0
  101. package/dist/client/assets/{card-Bt6IU-Bh.js → card-DTMhLU7B.js} +1 -1
  102. package/dist/client/assets/channel-BlEJg4XA.js +1 -0
  103. package/dist/client/assets/chunk-2E7WHVMD-QSgLcVHQ.js +88 -0
  104. package/dist/client/assets/chunk-2Q5K7J3B-CAEYyBSj.js +1 -0
  105. package/dist/client/assets/chunk-4EMNKR2T-CQ_90aiz.js +1 -0
  106. package/dist/client/assets/chunk-55XCU76K-jsUyUA3N.js +1 -0
  107. package/dist/client/assets/chunk-5VM5RSS4-JHkf15PA.js +15 -0
  108. package/dist/client/assets/chunk-JWPE2WC7-BT-3krv8.js +1 -0
  109. package/dist/client/assets/chunk-VQ5W62QI-CJP11I5o.js +1 -0
  110. package/dist/client/assets/chunk-XXDRQBXY-BpqBecnj.js +1 -0
  111. package/dist/client/assets/chunk-ZCHMQSOR-BLb4KcT4.js +2 -0
  112. package/dist/client/assets/classDiagram-v2-4MYWR3UA-DwLyYGkw.js +217 -0
  113. package/dist/client/assets/{command-CWokzKS1.js → command-DDSiiJlP.js} +1 -1
  114. package/dist/client/assets/cose-bilkent-JH36ORCC-CxYTET88.js +1 -0
  115. package/dist/client/assets/{cpu-BzByzE9V.js → cpu--56q_Ey0.js} +1 -1
  116. package/dist/client/assets/cynefin-EF2NZ3EQ-9fHLZRHz.js +141 -0
  117. package/dist/client/assets/cynefinDiagram-WF24UDRP-DpfQecff.js +62 -0
  118. package/dist/client/assets/cytoscape.esm-BLAcgzS2.js +331 -0
  119. package/dist/client/assets/dagre-NK4GIZVX-DuV6buEQ.js +4 -0
  120. package/dist/client/assets/defaultLocale-DX6XiGOO.js +1 -0
  121. package/dist/client/assets/diagram-CBK3MWTC-B-A9Sx5n.js +24 -0
  122. package/dist/client/assets/diagram-I5XIIV2D-Ds5Hq9aV.js +24 -0
  123. package/dist/client/assets/diagram-ODIL2UCW-UUfSjM-R.js +30 -0
  124. package/dist/client/assets/diagram-PFBEJUXE-CUzSSYf9.js +3 -0
  125. package/dist/client/assets/diagram-RJA3I4VV-Cgp6U3q1.js +41 -0
  126. package/dist/client/assets/diagram-TYUNFSNR-BxVgzMNE.js +200 -0
  127. package/dist/client/assets/ebnfDiagram-V4P3TTPT-BgDiHzoi.js +1 -0
  128. package/dist/client/assets/elk-QONTBCTQ-BCCN6mFs.js +27 -0
  129. package/dist/client/assets/{empty-state-BgnQDiMZ.js → empty-state-BsA3jcrO.js} +1 -1
  130. package/dist/client/assets/erDiagram-KYQIGQAA-5RkmUbLz.js +99 -0
  131. package/dist/client/assets/{execution-config-D5-SEt2t.js → execution-config-CRkSeCj7.js} +1 -1
  132. package/dist/client/assets/{file-VHDTQub2.js → file-Bg_qGvWR.js} +1 -1
  133. package/dist/client/assets/{file-exclamation-point-DbWvGys0.js → file-exclamation-point-BWsLZQVN.js} +1 -1
  134. package/dist/client/assets/{file-text-BAhi2zct.js → file-text-DQThCdY3.js} +1 -1
  135. package/dist/client/assets/{find-latest-widget-fence-Z0HPVqeK.js → find-latest-widget-fence-DFpYPIlS.js} +1 -1
  136. package/dist/client/assets/flowDiagram-IUGLLWBU-C2FFT_4u.js +213 -0
  137. package/dist/client/assets/{form-Blrb1xBU.js → form-DjMe15QR.js} +1 -1
  138. package/dist/client/assets/{format-cron-lKWqEmle.js → format-cron-Bo3D4N9C.js} +1 -1
  139. package/dist/client/assets/ganttDiagram-R7GPNTJY-BHG-HNDj.js +292 -0
  140. package/dist/client/assets/{git-branch-BObm8Rlz.js → git-branch-CJ1NlVLY.js} +1 -1
  141. package/dist/client/assets/gitGraphDiagram-PDYL7XHY-D4bvs6_J.js +106 -0
  142. package/dist/client/assets/graph-D8MBmHRU.js +1 -0
  143. package/dist/client/assets/{heart-Du7nuefC.js → heart-Beze5rli.js} +1 -1
  144. package/dist/client/assets/{highlighted-body-KPVGNVTW-B_GO7V1P.js → highlighted-body-KPVGNVTW-B-za1R0D.js} +1 -1
  145. package/dist/client/assets/{image-lightbox-BZ1TV3mN.js → image-lightbox-a4gqhNXS.js} +1 -1
  146. package/dist/client/assets/{image-off-hnjcBIzN.js → image-off-dQCXn9D_.js} +1 -1
  147. package/dist/client/assets/{index-DoMJUxt_.js → index--vwACals.js} +1 -1
  148. package/dist/client/assets/{index-BVKXIbLh.js → index-B3VKw60l.js} +1 -1
  149. package/dist/client/assets/index-B3ybVnXe.js +23 -0
  150. package/dist/client/assets/{index-HxT_wkaZ.js → index-BJv8b9cZ.js} +1 -1
  151. package/dist/client/assets/{index-aXm0xP_2.js → index-BMhblg3s.js} +1 -1
  152. package/dist/client/assets/{index-4GC2fkeO.js → index-BMktWriw.js} +1 -1
  153. package/dist/client/assets/{index-Ci74HAFs.js → index-BPa0ZczY.js} +1 -1
  154. package/dist/client/assets/{index-1I8qHZDt.js → index-BTVsyrd0.js} +1 -1
  155. package/dist/client/assets/{index-DRea_Gi0.js → index-BTfwunle.js} +1 -1
  156. package/dist/client/assets/{index-BtbZpz4b.js → index-BaocSCDH.js} +1 -1
  157. package/dist/client/assets/{index-CCg7yRe1.js → index-Bk6YahnN.js} +1 -1
  158. package/dist/client/assets/{index-B0tAedq7.js → index-BqwfU5a7.js} +1 -1
  159. package/dist/client/assets/index-BydIKjk5.js +1 -0
  160. package/dist/client/assets/{index-Bm0z9mHt.js → index-C38pc-JE.js} +1 -1
  161. package/dist/client/assets/{index-Df7a-2P5.js → index-C9qjJR0B.js} +1 -1
  162. package/dist/client/assets/{index-CqoIjNC2.js → index-CAGOE4EU.js} +2 -2
  163. package/dist/client/assets/{index-D5TZCu8j.js → index-CDm1XkU1.js} +1 -1
  164. package/dist/client/assets/{index-CQCN6kWR.js → index-CGVRWEpN.js} +1 -1
  165. package/dist/client/assets/{index-CiQxS4Bn.js → index-CMlVfxJv.js} +1 -1
  166. package/dist/client/assets/{index-BeVbHOwX.js → index-CPxcbKL6.js} +2 -2
  167. package/dist/client/assets/{index-4PAAWURd.js → index-CU-gekzq.js} +1 -1
  168. package/dist/client/assets/{index-BnNTKsbt.js → index-Ckv0K82u.js} +1 -1
  169. package/dist/client/assets/{index-BUOcbPfv.js → index-CocSe_I3.js} +3 -3
  170. package/dist/client/assets/index-CodC2rG4.js +1 -0
  171. package/dist/client/assets/{index-BgzgdvDn.js → index-CxWJDJW7.js} +1 -1
  172. package/dist/client/assets/index-D18FqQKB.js +1 -0
  173. package/dist/client/assets/{index-BaRQVgiN.js → index-D4mYlxG0.js} +1 -1
  174. package/dist/client/assets/{index-Dc5cpBoO.js → index-DBdO-_iL.js} +240 -240
  175. package/dist/client/assets/{index-r_O6CmXY.js → index-DFN-GU8r.js} +1 -1
  176. package/dist/client/assets/{index-DkhM0fDi.js → index-DLdpa3d4.js} +1 -1
  177. package/dist/client/assets/{index-EZHlD3gf.js → index-DNlhbCX_.js} +1 -1
  178. package/dist/client/assets/{index-ox3ce99A.js → index-D_KBdkA4.js} +1 -1
  179. package/dist/client/assets/{index-WxtASL5_.js → index-Dbt6ttQb.js} +1 -1
  180. package/dist/client/assets/index-DfSOcv9s.js +74 -0
  181. package/dist/client/assets/{index-CBm3whA-.js → index-DnfhvN3q.js} +1 -1
  182. package/dist/client/assets/{index-BvjuGXcS.js → index-DpX_xwGs.js} +1 -1
  183. package/dist/client/assets/{index-C60RrnTd.js → index-DqD-Sg0W.js} +1 -1
  184. package/dist/client/assets/{index-Lh82Rz5C.js → index-Ds-LCBb6.js} +1 -1
  185. package/dist/client/assets/index-dnaC3n0i.js +17 -0
  186. package/dist/client/assets/{index-DB8TDRSm.js → index-hKY0860x.js} +1 -1
  187. package/dist/client/assets/{index-BP68J4pb.js → index-vNaWkS8Y.js} +1 -1
  188. package/dist/client/assets/{index-Ch-ON5gw.js → index-vieeLeZH.js} +1 -1
  189. package/dist/client/assets/{index-D6y4WeTi.js → index-yDf4EVDy.js} +1 -1
  190. package/dist/client/assets/{index.esm-DXsF3Bua.js → index.esm-Ruqz-OsH.js} +1 -1
  191. package/dist/client/assets/infoDiagram-MVDRKAX5-CmDlX3lx.js +2 -0
  192. package/dist/client/assets/init-Gi6I4Gst.js +1 -0
  193. package/dist/client/assets/{inline-code-DAEoWvTf.js → inline-code-plzdKGm9.js} +1 -1
  194. package/dist/client/assets/ishikawaDiagram-HPEHV2GE-DZFRAvrx.js +70 -0
  195. package/dist/client/assets/journeyDiagram-BOSHW7O7-B140KXYu.js +139 -0
  196. package/dist/client/assets/kanban-definition-FNSA4HC5-QCZgRJic.js +89 -0
  197. package/dist/client/assets/katex-DLorvT8M.js +257 -0
  198. package/dist/client/assets/{layers-CsM34LRv.js → layers-Br3LALac.js} +1 -1
  199. package/dist/client/assets/{lightbulb-B8JAixK_.js → lightbulb-CeJgUDoT.js} +1 -1
  200. package/dist/client/assets/linear-BT-xgETh.js +1 -0
  201. package/dist/client/assets/{link-2-Csc6okl3.js → link-2-BXcZwTAC.js} +1 -1
  202. package/dist/client/assets/{list-runtime-types-DQrZNB7x.js → list-runtime-types-CqKIrt9D.js} +1 -1
  203. package/dist/client/assets/{markdown-content-DPc7aD1j.js → markdown-content-BKbjOTI2.js} +1 -1
  204. package/dist/client/assets/{mention-pill-8P_w4muj.js → mention-pill-B-FgNE6o.js} +1 -1
  205. package/dist/client/assets/mermaid.core-Br9hJ7FR.js +312 -0
  206. package/dist/client/assets/{message-square-off-D5DXu2cY.js → message-square-off-Co0W--np.js} +1 -1
  207. package/dist/client/assets/mindmap-definition-6OY57UG3-BxjSZAec.js +98 -0
  208. package/dist/client/assets/{more-details-DEeu2M-p.js → more-details-BsdCkGTg.js} +1 -1
  209. package/dist/client/assets/ordinal-Cboi1Yqb.js +1 -0
  210. package/dist/client/assets/{owner-notice-BW4k1ycg.js → owner-notice-BxltHzJH.js} +1 -1
  211. package/dist/client/assets/{package-BSwwAFVm.js → package-DPgmy9lP.js} +1 -1
  212. package/dist/client/assets/{page-container-CjPUNtNw.js → page-container-HokGbFg_.js} +1 -1
  213. package/dist/client/assets/{paperclip-DQaRz34E.js → paperclip-BDnApT-_.js} +1 -1
  214. package/dist/client/assets/{path-input-CgXSYNZn.js → path-input-C22n3ghr.js} +1 -1
  215. package/dist/client/assets/pegDiagram-ECIUJNBX-utA2pUiu.js +1 -0
  216. package/dist/client/assets/pieDiagram-GNMPY74T-DjEry_VP.js +39 -0
  217. package/dist/client/assets/{plug-BaUXMfIl.js → plug-tLTAmXis.js} +1 -1
  218. package/dist/client/assets/{primer-trigger-DHB0vilf.js → primer-trigger-CfVHNFbe.js} +2 -2
  219. package/dist/client/assets/{profile-errors-JW2XTgia.js → profile-errors-Dvm4O6MR.js} +1 -1
  220. package/dist/client/assets/{progress-CErAw8zp.js → progress-BduTwXMX.js} +1 -1
  221. package/dist/client/assets/quadrantDiagram-D57K4MC3-DO9NgnEq.js +7 -0
  222. package/dist/client/assets/{query-error-state-BFWpEXsl.js → query-error-state-puwJHnzi.js} +1 -1
  223. package/dist/client/assets/query-keys-DeYqUDia.js +1 -0
  224. package/dist/client/assets/{radio-Bkx216ga.js → radio-DR4E05zZ.js} +1 -1
  225. package/dist/client/assets/railroadDiagram-Y72NRBL7-BTilAS9p.js +1 -0
  226. package/dist/client/assets/registry-B3Ss4ItQ.js +1 -0
  227. package/dist/client/assets/{relay-trace-schemas-DiZj_AFV.js → relay-trace-schemas-DwqIIDB9.js} +2 -2
  228. package/dist/client/assets/requirementDiagram-EQYSW5RA-C6rzY7GK.js +84 -0
  229. package/dist/client/assets/{room-files-source-BilZvdpf.js → room-files-source-Duo4oiqX.js} +1 -1
  230. package/dist/client/assets/{rotate-ccw-clock-D_SO1stN.js → rotate-ccw-clock-RJuoRE3k.js} +1 -1
  231. package/dist/client/assets/{rotate-cw-C68kM23F.js → rotate-cw-C0EpbK5k.js} +1 -1
  232. package/dist/client/assets/sankeyDiagram-SY24JHO5-BqpJRY1t.js +40 -0
  233. package/dist/client/assets/{scroll-area-CVWFUmJV.js → scroll-area-07T90PR6.js} +1 -1
  234. package/dist/client/assets/{search-x-BTFVvyA2.js → search-x-DQabogEL.js} +1 -1
  235. package/dist/client/assets/sequenceDiagram-BLEHNHQU-BHfzZpFt.js +169 -0
  236. package/dist/client/assets/{shield-check-Dpxi6WqO.js → shield-check-DbbCy17l.js} +1 -1
  237. package/dist/client/assets/{shield-x-CdCCgyXk.js → shield-x-Cuo1GTv4.js} +1 -1
  238. package/dist/client/assets/{signed-in-BxAnDo0S.js → signed-in-CFtA8gTK.js} +1 -1
  239. package/dist/client/assets/sizeCapture-INFHLROL-U0MO-4ua.js +1 -0
  240. package/dist/client/assets/{soul-file-CRfKVJX3.js → soul-file-wKTqbR0Y.js} +1 -1
  241. package/dist/client/assets/stateDiagram-v2-A6IESKWZ-fzo1sDsX.js +291 -0
  242. package/dist/client/assets/swimlanes-B3ENRKFQ-B7QcCUBU.js +1 -0
  243. package/dist/client/assets/swimlanesDiagram-AYQRV4AK-CgZZnzbW.js +8 -0
  244. package/dist/client/assets/{table-BL3xUC41.js → table-BjHA85BX.js} +1 -1
  245. package/dist/client/assets/{terminal-u_UCRzSM.js → terminal-qfxxVZaa.js} +1 -1
  246. package/dist/client/assets/timeline-definition-JXYKGLGB-okVlmef4.js +120 -0
  247. package/dist/client/assets/transform-BqqRT-Iy.js +1 -0
  248. package/dist/client/assets/{trust-posture-B-v4BWo7.js → trust-posture-BmW0KVP6.js} +1 -1
  249. package/dist/client/assets/{unplug-CFbC-L5W.js → unplug-BYKBdSMl.js} +1 -1
  250. package/dist/client/assets/{unverified-catalog-notice-ZUqscVFM.js → unverified-catalog-notice-CQHA4Cst.js} +1 -1
  251. package/dist/client/assets/{use-adapter-catalog-Z4MDWZAZ.js → use-adapter-catalog-rB4qQQ5D.js} +1 -1
  252. package/dist/client/assets/{use-bindings-CsTavmf-.js → use-bindings-DiFC7kWg.js} +1 -1
  253. package/dist/client/assets/{use-composer-prefs-BY2dTvep.js → use-composer-prefs-DHY5vJ0l.js} +1 -1
  254. package/dist/client/assets/{use-connector-management-L9l21yTi.js → use-connector-management-CoinXIID.js} +1 -1
  255. package/dist/client/assets/{use-deep-link-scroll-Bn2ZUtDY.js → use-deep-link-scroll-Cm8BRFAE.js} +1 -1
  256. package/dist/client/assets/{use-delete-binding-DLvdHtPD.js → use-delete-binding-FtM6qPfF.js} +1 -1
  257. package/dist/client/assets/{use-dev-links-DFvL8mIg.js → use-dev-links-TQFCV3vk.js} +1 -1
  258. package/dist/client/assets/{use-external-adapter-catalog-Be57G4tz.js → use-external-adapter-catalog-Lx8LZDAa.js} +1 -1
  259. package/dist/client/assets/{use-full-activity-feed-Cp3lYXdi.js → use-full-activity-feed-CmcBAvUM.js} +1 -1
  260. package/dist/client/assets/use-is-below-desktop-BB9kHnYm.js +1 -0
  261. package/dist/client/assets/use-is-hub-ab4UGRdN.js +1 -0
  262. package/dist/client/assets/{use-jump-back-in-ChH1FSEK.js → use-jump-back-in-V8G_6fYj.js} +3 -3
  263. package/dist/client/assets/{use-local-browser-zA8gMhcC.js → use-local-browser-CbS4typW.js} +1 -1
  264. package/dist/client/assets/{use-mesh-topology-CvoD-L1G.js → use-mesh-topology-DZ1qMT3J.js} +1 -1
  265. package/dist/client/assets/{use-mounted-ref-Ch0wqQry.js → use-mounted-ref-DUbNzP-m.js} +1 -1
  266. package/dist/client/assets/{use-notification-prefs-DeR05zhp.js → use-notification-prefs-BAsICJ96.js} +1 -1
  267. package/dist/client/assets/{use-panel-tab-placements-DdjrmaoK.js → use-panel-tab-placements-ymrpuL_s.js} +1 -1
  268. package/dist/client/assets/use-pending-read-BkCvAuX4.js +1 -0
  269. package/dist/client/assets/{use-personality-commit-qQfISO2-.js → use-personality-commit-rJOmDgC2.js} +1 -1
  270. package/dist/client/assets/{use-promo-activation-CwGoE7b-.js → use-promo-activation-BKeBloMI.js} +2 -2
  271. package/dist/client/assets/{use-promo-dismissals-BBqVN4hx.js → use-promo-dismissals-Cio8QMjL.js} +1 -1
  272. package/dist/client/assets/{use-pulse-freshness-BKW7tjvX.js → use-pulse-freshness-DZkMVbSM.js} +1 -1
  273. package/dist/client/assets/{use-relay-config-D5iieBXl.js → use-relay-config-CbZQKFhZ.js} +1 -1
  274. package/dist/client/assets/{use-room-follow-claim-BwZh2ZPH.js → use-room-follow-claim-DbJIsuWz.js} +1 -1
  275. package/dist/client/assets/{use-roving-tab-list-Ct7yDAUE.js → use-roving-tab-list-B4nZ7trj.js} +1 -1
  276. package/dist/client/assets/use-session-canvas-sAwc2L1A.js +25 -0
  277. package/dist/client/assets/{use-session-diagnostics-Dn-Wnyhh.js → use-session-diagnostics-0gcI762B.js} +2 -2
  278. package/dist/client/assets/{use-unclaimed-chats-M-c5tjXH.js → use-unclaimed-chats-BWIqOrvs.js} +1 -1
  279. package/dist/client/assets/use-update-config-DTL7WyZV.js +1 -0
  280. package/dist/client/assets/{useMutationState-Cd-VqRAv.js → useMutationState-C9Q5lRej.js} +1 -1
  281. package/dist/client/assets/usecaseDiagram-WPOLBNNX-CMjVaeX9.js +370 -0
  282. package/dist/client/assets/value-wA6veExk.js +1 -0
  283. package/dist/client/assets/vennDiagram-Q3Y3IDCW-BajZBf0H.js +34 -0
  284. package/dist/client/assets/wardleyDiagram-IVAIDKWA-BN4xF6JT.js +78 -0
  285. package/dist/client/assets/xychartDiagram-4URNHDU4-Cy0Z9a28.js +7 -0
  286. package/dist/client/index.html +1 -1
  287. package/dist/server/index.js +31467 -29078
  288. package/dist/server/index.js.map +2 -2
  289. package/package.json +5 -5
  290. package/dist/client/assets/BlintzCanvas-ClOKWzws.js +0 -1141
  291. package/dist/client/assets/CanvasFileContent-B_8zsIas.js +0 -2
  292. package/dist/client/assets/CanvasModel3dContent-UokbHY9i.js +0 -2
  293. package/dist/client/assets/HandlePage-BdRWgke2.js +0 -1
  294. package/dist/client/assets/NamePage-DyH8JAqT.js +0 -1
  295. package/dist/client/assets/PhotoPage-BHvRQnex.js +0 -1
  296. package/dist/client/assets/RoomSurface-DaRCf4og.js +0 -44
  297. package/dist/client/assets/TopologyGraph-D3CxaLGX.js +0 -30
  298. package/dist/client/assets/_shell-BRH2Y-U-.js +0 -80
  299. package/dist/client/assets/_shell.channels-CRkJHU5R.js +0 -10
  300. package/dist/client/assets/_shell.marketplace-DGN_IdZY.js +0 -1
  301. package/dist/client/assets/_shell.marketplace_.sources-2YMpLInp.js +0 -1
  302. package/dist/client/assets/_shell.session-D871zZl3.js +0 -61
  303. package/dist/client/assets/_shell.x._extensionId-D3-n5IRW.js +0 -1
  304. package/dist/client/assets/_shell.x._extensionId_._-D3-n5IRW.js +0 -1
  305. package/dist/client/assets/index-Cdyszxoa.js +0 -17
  306. package/dist/client/assets/index-DCOOlbEt.js +0 -1
  307. package/dist/client/assets/index-DHYvT3nr.js +0 -23
  308. package/dist/client/assets/index-Dain_3cO.js +0 -1
  309. package/dist/client/assets/index-_5Dn0bFm.js +0 -74
  310. package/dist/client/assets/registry-Ce1VRIS3.js +0 -1
  311. package/dist/client/assets/use-is-below-desktop-DmekpHAF.js +0 -1
  312. package/dist/client/assets/use-is-hub-el7LTkg3.js +0 -1
  313. package/dist/client/assets/use-pending-read-DBpte0GI.js +0 -1
  314. package/dist/client/assets/use-session-canvas-CJrfZrYG.js +0 -24
  315. package/dist/client/assets/use-update-config-DhlbZldm.js +0 -1
package/dist/bin/cli.js CHANGED
@@ -23009,7 +23009,7 @@ var init_config_sections = __esm({
23009
23009
  });
23010
23010
 
23011
23011
  // ../shared/src/memory-provider.ts
23012
- var AgentMemoryRefSchema, MemoryCapabilitiesSchema, BUILTIN_MEMORY_PROVIDER_ID, MemoryProviderInfoSchema, MemorySnapshotSchema, MemoryProvenanceSchema, MemoryWriteOpSchema, MemoryWriteResultSchema, MemoryQuerySchema, MemoryHitSchema, MemoryHitsSchema, MemorySelectorSchema;
23012
+ var AgentMemoryRefSchema, MemoryCapabilitiesSchema, BUILTIN_MEMORY_PROVIDER_ID, MemoryProviderInfoSchema, MemorySnapshotSchema, WINDOWS_RESERVED_NAME, MemoryNoteNameSchema, MemoryNoteDescriptionSchema, MemoryProvenanceSchema, MemoryWriteOpSchema, MemoryWriteResultSchema, MemoryQuerySchema, MemoryHitSchema, MemoryHitsSchema, MemorySelectorSchema, MemoryNoteListQuerySchema, MemoryNoteEntrySchema, MemoryNoteListSchema;
23013
23013
  var init_memory_provider = __esm({
23014
23014
  "../shared/src/memory-provider.ts"() {
23015
23015
  "use strict";
@@ -23039,7 +23039,18 @@ var init_memory_provider = __esm({
23039
23039
  * ({@link MemoryCapExceededError}), not a background rewrite of a file the
23040
23040
  * operator can open in an editor.
23041
23041
  */
23042
- consolidate: external_exports.boolean()
23042
+ consolidate: external_exports.boolean(),
23043
+ /**
23044
+ * Can this backend keep NOTES FILES beside the capped memory — the second
23045
+ * level, read on demand rather than carried in every prompt
23046
+ * ({@link MemoryProvider.listNotes}, {@link MemoryProvider.readNote}, and a
23047
+ * write or forget that names a `note`)?
23048
+ *
23049
+ * The builtin provider declares `true`: `<agentPath>/.dork/memory/<name>.md`.
23050
+ * A backend without it refuses all four loudly, so "this backend keeps no
23051
+ * notes" never arrives as "you have no notes".
23052
+ */
23053
+ notes: external_exports.boolean()
23043
23054
  });
23044
23055
  BUILTIN_MEMORY_PROVIDER_ID = "builtin";
23045
23056
  MemoryProviderInfoSchema = external_exports.object({
@@ -23135,6 +23146,12 @@ var init_memory_provider = __esm({
23135
23146
  });
23136
23147
  }
23137
23148
  });
23149
+ WINDOWS_RESERVED_NAME = /^(?:con|prn|aux|nul|com\d|lpt\d)$/;
23150
+ MemoryNoteNameSchema = external_exports.string().regex(
23151
+ /^[a-z0-9][a-z0-9_-]{0,79}$/,
23152
+ "a note name is lowercase letters, digits, - and _, starting with a letter or digit, at most 80 characters, with no extension"
23153
+ ).refine((name2) => !WINDOWS_RESERVED_NAME.test(name2), "that name is reserved on Windows");
23154
+ MemoryNoteDescriptionSchema = external_exports.string().trim().min(1).max(200).refine((value) => !/[\r\n\u0085\u2028\u2029]/.test(value), "a description is one line");
23138
23155
  MemoryProvenanceSchema = external_exports.object({
23139
23156
  /**
23140
23157
  * The room this was learned in, as a person would name it (`'#general'`), or
@@ -23150,7 +23167,14 @@ var init_memory_provider = __esm({
23150
23167
  * stamp then says so, wherever the note was written, so a later session
23151
23168
  * never reads it as the operator's own.
23152
23169
  */
23153
- outsider: external_exports.boolean().optional()
23170
+ outsider: external_exports.boolean().optional(),
23171
+ /**
23172
+ * True only for a note a migration copied in from Claude Code's own memory,
23173
+ * never for one an agent saved: the stamp then reads
23174
+ * `(migrated from Claude Code memory, <date>)` instead of naming a room.
23175
+ * Set by the migration script, which has no turn to derive a room from.
23176
+ */
23177
+ migrated: external_exports.boolean().optional()
23154
23178
  });
23155
23179
  MemoryWriteOpSchema = external_exports.discriminatedUnion("action", [
23156
23180
  external_exports.object({
@@ -23159,7 +23183,15 @@ var init_memory_provider = __esm({
23159
23183
  /** What to remember, in the agent's own words. */
23160
23184
  text: external_exports.string().min(1),
23161
23185
  /** Where it was learned. Omitted only by a caller with no turn context, e.g. a migration. */
23162
- provenance: MemoryProvenanceSchema.optional()
23186
+ provenance: MemoryProvenanceSchema.optional(),
23187
+ /** Which notes file to write, or omitted for the capped memory itself. Gated on `notes`. */
23188
+ note: MemoryNoteNameSchema.optional(),
23189
+ /**
23190
+ * What the notes file is about, in one line. REQUIRED when this `add`
23191
+ * creates the file and ignored otherwise: a list of bare names gives an
23192
+ * agent nothing to choose by.
23193
+ */
23194
+ description: MemoryNoteDescriptionSchema.optional()
23163
23195
  }),
23164
23196
  external_exports.object({
23165
23197
  /** Rewrite an existing note. */
@@ -23167,13 +23199,17 @@ var init_memory_provider = __esm({
23167
23199
  /** Text that must appear EXACTLY ONCE in the current memory. */
23168
23200
  oldText: external_exports.string().min(1),
23169
23201
  /** What replaces it. */
23170
- text: external_exports.string().min(1)
23202
+ text: external_exports.string().min(1),
23203
+ /** Which notes file to edit, or omitted for the capped memory itself. */
23204
+ note: MemoryNoteNameSchema.optional()
23171
23205
  }),
23172
23206
  external_exports.object({
23173
23207
  /** Forget an existing note. */
23174
23208
  action: external_exports.literal("remove"),
23175
23209
  /** Text that must appear EXACTLY ONCE in the current memory. */
23176
- oldText: external_exports.string().min(1)
23210
+ oldText: external_exports.string().min(1),
23211
+ /** Which notes file to edit, or omitted for the capped memory itself. */
23212
+ note: MemoryNoteNameSchema.optional()
23177
23213
  })
23178
23214
  ]);
23179
23215
  MemoryWriteResultSchema = external_exports.object({
@@ -23202,7 +23238,45 @@ var init_memory_provider = __esm({
23202
23238
  });
23203
23239
  MemorySelectorSchema = external_exports.object({
23204
23240
  /** Text that must appear EXACTLY ONCE in the current memory. */
23205
- text: external_exports.string().min(1)
23241
+ text: external_exports.string().min(1),
23242
+ /** Which notes file to forget from, or omitted for the capped memory itself. */
23243
+ note: MemoryNoteNameSchema.optional()
23244
+ });
23245
+ MemoryNoteListQuerySchema = external_exports.object({
23246
+ /** Only notes whose name or description contains this, case-insensitively. */
23247
+ query: external_exports.string().trim().min(1).max(200).optional(),
23248
+ /** Where the previous page stopped: the `nextCursor` it returned. */
23249
+ cursor: external_exports.string().min(1).max(200).optional(),
23250
+ /** How many notes at most. A backend may return fewer. */
23251
+ limit: external_exports.number().int().positive().max(200).optional()
23252
+ });
23253
+ MemoryNoteEntrySchema = external_exports.object({
23254
+ /** The file's name, which is what `readNote` and a write's `note` take. */
23255
+ name: MemoryNoteNameSchema,
23256
+ /**
23257
+ * What it is about: its `description:` frontmatter, or its first line of text
23258
+ * when it has none (a note written before descriptions were required).
23259
+ */
23260
+ description: external_exports.string(),
23261
+ /** Size on disk, in bytes. */
23262
+ bytes: external_exports.number().int().min(0),
23263
+ /** When it last changed, ISO 8601. The list is newest first. */
23264
+ updatedAt: external_exports.string().min(1),
23265
+ /** When a migration copied it in from Claude Code's memory, ISO date. Absent for the agent's own. */
23266
+ migratedAt: external_exports.string().min(1).optional()
23267
+ });
23268
+ MemoryNoteListSchema = external_exports.object({
23269
+ status: external_exports.enum(["ok", "error"]),
23270
+ /** This page of notes, newest first. */
23271
+ notes: external_exports.array(MemoryNoteEntrySchema),
23272
+ /** How many notes match, across every page. */
23273
+ total: external_exports.number().int().min(0),
23274
+ /** How many of those a migration copied in within the last week, for the tidy nudge. */
23275
+ recentlyMigrated: external_exports.number().int().min(0),
23276
+ /** Pass back as `cursor` for the next page. Absent on the last page. */
23277
+ nextCursor: external_exports.string().min(1).optional(),
23278
+ /** Why the read failed. Present iff `status === 'error'`; for the server log. */
23279
+ error: external_exports.string().min(1).optional()
23206
23280
  });
23207
23281
  }
23208
23282
  });
@@ -23615,6 +23689,20 @@ var init_config_schema = __esm({
23615
23689
  sessionRelay: external_exports.object({
23616
23690
  enabled: external_exports.boolean().default(false)
23617
23691
  }).default(() => ({ enabled: false })),
23692
+ /**
23693
+ * Docs: markdown documents people and agents write together, with embeds,
23694
+ * wiki links, comments and live editing (DOR-2981 to DOR-2984).
23695
+ *
23696
+ * An experiment, OFF by default: while it is off the `/api/documents`
23697
+ * routes answer 404 and the canvas editor gets no embed components, wiki
23698
+ * link resolution, comments or live editing (the editor still parses the
23699
+ * `::name` and `[[link]]` syntax either way). Read on every request, so a
23700
+ * change takes effect at once. It joins Settings → Experiments with the
23701
+ * first Docs feature; graduation is DOR-2993.
23702
+ */
23703
+ docs: external_exports.object({
23704
+ enabled: external_exports.boolean().default(false)
23705
+ }).default(() => ({ enabled: false })),
23618
23706
  /**
23619
23707
  * Letting agents on other systems talk to the agents on this one.
23620
23708
  *
@@ -26274,7 +26362,6 @@ function repoUrl(path66 = "") {
26274
26362
  var GITHUB_ORG, links;
26275
26363
  var init_links = __esm({
26276
26364
  "../shared/src/links.ts"() {
26277
- "use strict";
26278
26365
  GITHUB_ORG = "dork-labs";
26279
26366
  links = {
26280
26367
  /** The public origin of the marketing site, the docs and DorkOS Cloud. */
@@ -26673,7 +26760,7 @@ import path2 from "path";
26673
26760
  import { fileURLToPath } from "url";
26674
26761
  function resolveVersion() {
26675
26762
  if (env2.DORKOS_VERSION_OVERRIDE) return env2.DORKOS_VERSION_OVERRIDE;
26676
- if (true) return "0.120.0";
26763
+ if (true) return "0.122.0";
26677
26764
  const pkgPath = path2.join(path2.dirname(fileURLToPath(import.meta.url)), "../../package.json");
26678
26765
  return JSON.parse(readFileSync(pkgPath, "utf-8")).version;
26679
26766
  }
@@ -45986,6 +46073,7 @@ var init_marketplace_schemas = __esm({
45986
46073
  var SKILL_FILENAME, WIDGET_TEMPLATE_SUFFIX;
45987
46074
  var init_constants7 = __esm({
45988
46075
  "../skills/src/constants.ts"() {
46076
+ "use strict";
45989
46077
  SKILL_FILENAME = "SKILL.md";
45990
46078
  WIDGET_TEMPLATE_SUFFIX = ".widget.json";
45991
46079
  }
@@ -49168,7 +49256,6 @@ function parseFrontmatter(content) {
49168
49256
  var DATA_LANGUAGES, FRONTMATTER_LIMITS, UnsupportedFrontmatterError, OversizedFrontmatterError, NonMappingFrontmatterError, ALIAS_NODE, FRONTMATTER_PARSERS;
49169
49257
  var init_frontmatter = __esm({
49170
49258
  "../skills/src/frontmatter.ts"() {
49171
- "use strict";
49172
49259
  init_js_yaml();
49173
49260
  DATA_LANGUAGES = /* @__PURE__ */ new Map([
49174
49261
  ["yaml", "yaml"],
@@ -52299,7 +52386,6 @@ function foldLegacyPermissionFields(raw) {
52299
52386
  var AgentRuntimeSchema, AgentHealthStatusSchema, ResponseModeSchema, AgentBehaviorSchema, McpServerAuthKindSchema, McpServerTransportSchema, ManagedMcpServerSchema, McpServerAuthStatusSchema, McpClientOriginSchema, ManagedMcpServerViewSchema, TraitsSchema, ConventionsSchema, AgentModelSchema, AgentEffortSchema, AgentWorkspaceBindingSchema, WORKSPACE_BINDING_OPENAPI, UNREADABLE_BINDING_FALLBACK, AgentManifestSchema2, LEGACY_GROUP_AREAS, AgentManifestFileSchema, AgentPathEntrySchema, AgentHintsSchema, DiscoveryCandidateSchema, DenialRecordSchema, AGENT_PAUSED_CODE, AGENT_PAUSE_REASON_MAX, AgentPauseSchema, AgentPauseListSchema, AgentPauseRequestSchema, AgentPauseResultSchema, TopologyAgentSchema, NamespaceInfoSchema, OPEN_MESH_NAMESPACE, CrossNamespaceRuleSchema, TopologyViewSchema, DiscoverRequestSchema, RegisterAgentRequestSchema, DenyRequestSchema, UpdateAgentRequestSchema, UpdateAgentConventionsSchema, WILDCARD_NAMESPACE_BOTH_SIDES_MESSAGE, UpdateAccessRuleRequestSchema, ResolveAgentsRequestSchema, ResolveAgentsResponseSchema, CreateAgentOptionsSchema, CreateAgentRequestSchema, AgentListQuerySchema, AgentHealthSchema, MeshStatusSchema, MeshInspectSchema, MeshLifecycleEventSchema, HeartbeatRequestSchema, ScanProgressSchema;
52300
52387
  var init_mesh_schemas = __esm({
52301
52388
  "../shared/src/mesh-schemas.ts"() {
52302
- "use strict";
52303
52389
  init_zod();
52304
52390
  init_zod_openapi();
52305
52391
  init_validation();
@@ -52895,15 +52981,36 @@ var init_mesh_schemas = __esm({
52895
52981
  }
52896
52982
  });
52897
52983
 
52984
+ // ../shared/src/direct-notes-context.ts
52985
+ var DirectNotesDataSchema;
52986
+ var init_direct_notes_context = __esm({
52987
+ "../shared/src/direct-notes-context.ts"() {
52988
+ "use strict";
52989
+ init_zod();
52990
+ DirectNotesDataSchema = external_exports.object({
52991
+ withName: external_exports.string().min(1),
52992
+ notes: external_exports.array(
52993
+ external_exports.object({
52994
+ at: external_exports.string().min(1),
52995
+ from: external_exports.string().min(1),
52996
+ fromYou: external_exports.boolean(),
52997
+ text: external_exports.string()
52998
+ })
52999
+ ).min(1),
53000
+ omitted: external_exports.number().int().nonnegative()
53001
+ });
53002
+ }
53003
+ });
53004
+
52898
53005
  // ../shared/src/additional-context.ts
52899
53006
  var GitStatusDataSchema, EnvDataSchema, RelayContextDataSchema, RoomContextOriginSchema, RoomContextAuthorSchema, RoomContextMemberSchema, RoomContextEntrySchema, RoomContextAcknowledgmentSchema, MainMovedSchema, WorktreeRefreshOutcomeSchema, RoomContextFilesSchema, RoomContextDataSchema, SeedContextDataSchema, StagedContextDataSchema, AccountsAccessDataSchema, ContextWarningDataSchema, ApprovalVerdictDataSchema, AdditionalContextEntrySchema, AdditionalContextSchema, ClientContextSchema;
52900
53007
  var init_additional_context = __esm({
52901
53008
  "../shared/src/additional-context.ts"() {
52902
- "use strict";
52903
53009
  init_zod();
52904
53010
  init_canvas_channel_schemas();
52905
53011
  init_mesh_schemas();
52906
53012
  init_schemas4();
53013
+ init_direct_notes_context();
52907
53014
  GitStatusDataSchema = external_exports.object({
52908
53015
  isRepo: external_exports.boolean(),
52909
53016
  branch: external_exports.string().optional(),
@@ -53126,6 +53233,11 @@ var init_additional_context = __esm({
53126
53233
  scope: external_exports.literal("per-turn"),
53127
53234
  data: ApprovalVerdictDataSchema
53128
53235
  }),
53236
+ external_exports.object({
53237
+ kind: external_exports.literal("direct_notes"),
53238
+ scope: external_exports.literal("per-turn"),
53239
+ data: DirectNotesDataSchema
53240
+ }),
53129
53241
  external_exports.object({
53130
53242
  kind: external_exports.literal("context_warning"),
53131
53243
  scope: external_exports.literal("per-turn"),
@@ -53178,7 +53290,6 @@ var init_capabilities = __esm({
53178
53290
  var PROJECT_NAME_PATTERN, ProjectRefSchema, ProjectInfoSchema, ProjectListResponseSchema, ProjectResolveQuerySchema, ProjectResolveResponseSchema, AccountEligibilityRowSchema, AccountEligibilityQuerySchema, AccountEligibilityResponseSchema, ProjectAccountsRequestSchema, ProjectWithoutCreditsRequestSchema, OnlyProjectsRequestSchema, OnlyProjectsResponseSchema;
53179
53291
  var init_project_schemas = __esm({
53180
53292
  "../shared/src/project-schemas.ts"() {
53181
- "use strict";
53182
53293
  init_zod();
53183
53294
  init_zod_openapi();
53184
53295
  extendZodWithOpenApiOnce();
@@ -53974,7 +54085,6 @@ function isSafeSigninUrl(value) {
53974
54085
  var PermissionModeSchema, PermissionModeIdSchema, PermissionStopSchema2, SessionTaskStatusSchema, StreamEventTypeSchema, QuestionOptionSchema, QuestionItemSchema, EffortLevelSchema, SessionOriginSchema, SessionLifecycleSchema, LimitPlanSchema, LimitStateSchema, SessionLimitSchema, ContinueAccountOptionSchema, ContinueOptionsResponseSchema, ContinueSessionRequestSchema, ContinueSessionResponseSchema, WaitForResetRequestSchema, LimitPlanResponseSchema, TrackerItemRefSchema, SessionStartedBySchema, SessionSchema, SessionUpdateResponseSchema, SessionSettingsSchema, StoredSessionSettingsResponseSchema, UpdateSessionRequestSchema, ForkSessionRequestSchema, ReloadPluginsResultSchema, SEED_CONTEXT_MAX_LENGTH, MessageDispositionSchema, DispositionDowngradeReasonSchema, MessageDeliveryOutcomeSchema, InterruptOutcomeSchema, InterruptReasonSchema, InterruptReceiptSchema, QueuedWaitingOnSchema, QueuedMessageSchema, SendMessageRequestSchema, SendMessageResponseSchema, SessionTriggerResponseSchema, SessionQueueResponseSchema, QueueMoveTargetSchema, UpdateQueuedMessageRequestSchema, UpdateQueuedMessageResponseSchema, DENY_REASON_MAX_LENGTH, ApprovalRequestSchema, BatchApprovalRequestSchema, SubmitAnswersRequestSchema, UI_ACTION_ID_MAX_LENGTH, UI_ACTION_TITLE_MAX_LENGTH, UI_ACTION_PAYLOAD_MAX_LENGTH, UiActionRequestSchema, McpAppPermissionSchema, McpAppResourceRequestSchema, McpAppResourceResponseSchema, ElicitationModeSchema, ElicitationActionSchema, SubmitElicitationRequestSchema, ListSessionsQuerySchema, SessionListWarningSchema, SessionListResponseSchema, RecentSessionsQuerySchema, RecentSessionsResponseSchema, SessionDailyCountsQuerySchema, SessionDailyCountsResponseSchema, CommandsQuerySchema, TextDeltaSchema, ThinkingDeltaSchema, ToolCallStatusSchema, McpAppRefSchema, ToolCallEventSchema, ToolProgressEventSchema, AlwaysAllowScopeSchema, ApprovalEventSchema, QuestionPromptEventSchema, PendingInteractionDTOSchema, ErrorCategorySchema, ErrorEventSchema, ApiRetryEventSchema, DoneEventSchema, TerminalReasonSchema, UsageStateSchema, UsageStatusSchema, SessionStatusEventSchema, ContextUsageCategorySchema, ContextUsageSchema, TaskItemSchema, TaskUpdateEventSchema, RelayReceiptEventSchema, MessageDeliveredEventSchema, RelayMessageEventSchema, BackgroundTaskTypeSchema, BackgroundTaskStatusSchema, BackgroundTaskStartedEventSchema, BackgroundTaskProgressEventSchema, BackgroundTaskDoneEventSchema, SubagentTextDeltaEventSchema, SystemStatusEventSchema, OperationKindSchema, OperationStateSchema, OperationProgressEventShapeSchema, OperationProgressEventSchema, MemoryEntrySchema, MemoryRecallEventSchema, agentCompactionShape, CompactBoundaryEventSchema, sessionImageShape, SessionImageEventSchema, deniedAgentShape, PermissionDeniedEventSchema, ModelSubstitutedEventSchema, PromptSuggestionEventSchema, HookStartedEventSchema, HookProgressEventSchema, HookResponseEventSchema, SdkSessionStateSchema, SessionStateChangedEventSchema, ElicitationPromptEventSchema, ElicitationCompleteEventSchema, InteractionCancelledEventSchema, CapabilityApprovalRequiredEventSchema, CapabilityApprovalResolvedEventSchema, SigninUrlSchema, MCP_SIGNIN_OUTCOMES, McpSigninOutcomeSchema, McpSigninRequiredEventSchema, McpSigninResolvedEventSchema, StreamEventSchema, TextPartSchema, HookStatusSchema, HookPartSchema, ToolApprovalOutcomeSchema, QuestionOutcomeSchema, ToolCallPartSchema, BackgroundTaskPartSchema, ThinkingPartSchema, ErrorPartSchema, ElicitationPartSchema, CapabilityApprovalPartSchema, McpSigninPartSchema, MemoryRecallPartSchema, PermissionDeniedPartSchema, ModelSubstitutedPartSchema, CompactBoundaryPartSchema, ImagePartSchema, MessagePartSchema, MessageTypeSchema, HistoryToolCallSchema, CompactMetadataSchema, HistoryMessageSchema, HistoryReadSchema, CommandEntrySchema, CommandRegistrySchema, FileListQuerySchema, RawFileQuerySchema, FileListResponseSchema, FileEntrySchema, FileTreeQuerySchema, FileTreeResponseSchema, FileContentQuerySchema, FileContentResponseSchema, CreateEntryRequestSchema, CreateEntryResponseSchema, DeleteEntryQuerySchema, RenameEntryRequestSchema, CopyEntryRequestSchema, RevealEntryRequestSchema, DiffBaselineOriginSchema, DiffBaselineQuerySchema, DiffBaselineResponseSchema, AdvanceDiffBaselineRequestSchema, DiffPendingQuerySchema, DiffPendingResponseSchema, DiffBaselineRawQuerySchema, RevertDiffBaselineRequestSchema, FileMutationResponseSchema, WorkbenchSignRequestSchema, WorkbenchSignResponseSchema, WorkbenchProbeRequestSchema, WorkbenchProbeResponseSchema, BrowseDirectoryQuerySchema, DirectoryEntrySchema, BrowseDirectoryResponseSchema, TunnelStatusSchema, LanAccessStatusSchema, RemoteAccessStateSchema, RemoteAccessAvailabilitySchema, RemoteAccessEnrolmentSchema, RemoteAccessReportSchema, HealthResponseSchema, ExecutionDefaultsSchema, ExperimentStateSchema, ServerConfigSchema2, ModelTierSchema, ModelOptionSchema, SubagentInfoSchema, GitStatusResponseSchema, GitStatusErrorSchema, ErrorResponseSchema, SessionLockedErrorSchema, TaskStatusSchema, SettableTaskStatusSchema, TaskNameSchema, TaskRunStatusSchema, TaskRunTriggerSchema, TaskSchema, TaskRunSchema, CancelTaskRunResponseSchema, TaskTemplateSchema, TASK_DURATION_PATTERN, TASK_DURATION_MAX, TASK_DESCRIPTION_MAX, CreateTaskRequestSchema, SIDEBAR_TAB_ID_PATTERN, ShapeLiveLayoutCaptureSchema, ForkShapeRequestSchema, UpdateTaskRequestSchema, ListTaskRunsQuerySchema, ConfigPatchRequestSchema, ConfigPatchResponseSchema, UploadResultSchema, UploadResponseSchema, UploadProgressSchema, CanvasMediaSrcSchema, UiCanvasContentSchema, UiPanelIdSchema, UiToastLevelSchema, CELEBRATION_KINDS, CELEBRATION_KIND_SYNONYMS, CelebrationKindSchema, UiCommandTargetSchema, UiCommandSchema, UiCommandEventSchema, UiStateSchema, UiStateReportDocumentSchema, UiStateReportSchema, DevtoolsConsoleLevelSchema, DEVTOOLS_ARGS_MAX_CHARS, DevtoolsConsoleEntrySchema, DevtoolsNetworkEntrySchema, DEVTOOLS_CONSOLE_BATCH_MAX, DEVTOOLS_NETWORK_BATCH_MAX, DEVTOOLS_SCREENSHOT_MAX_CHARS, DevtoolsScreenshotResultSchema, DevtoolsIngestSchema, BrowserTargetSchema, BrowserActCommandSchema, BrowserPageSummarySchema, DEVTOOLS_OUTLINE_MAX_CHARS, DevtoolsActionResultSchema, DevtoolsRecordingUploadSchema, KeepAwakeUnsupportedReasonSchema, KeepAwakeStatusSchema;
53975
54086
  var init_schemas4 = __esm({
53976
54087
  "../shared/src/schemas.ts"() {
53977
- "use strict";
53978
54088
  init_canvas_channel_schemas();
53979
54089
  init_zod();
53980
54090
  init_zod_openapi();
@@ -58664,6 +58774,7 @@ function validateSlug(s2) {
58664
58774
  }
58665
58775
  var init_slug = __esm({
58666
58776
  "../skills/src/slug.ts"() {
58777
+ "use strict";
58667
58778
  }
58668
58779
  });
58669
58780
 
@@ -82927,7 +83038,7 @@ var init_factory = __esm({
82927
83038
  }
82928
83039
  return transformedData;
82929
83040
  };
82930
- const transformOutput = async (data, inputModel, select2 = [], join61) => {
83041
+ const transformOutput = async (data, inputModel, select2 = [], join62) => {
82931
83042
  const transformSingleOutput = async (data2, inputModel2, select3 = []) => {
82932
83043
  if (!data2) return null;
82933
83044
  const modelKey2 = getDefaultModelName(inputModel2);
@@ -82964,10 +83075,10 @@ var init_factory = __esm({
82964
83075
  }
82965
83076
  return transformedData2;
82966
83077
  };
82967
- if (!join61 || Object.keys(join61).length === 0) return await transformSingleOutput(data, inputModel, select2);
83078
+ if (!join62 || Object.keys(join62).length === 0) return await transformSingleOutput(data, inputModel, select2);
82968
83079
  const modelKey = getDefaultModelName(inputModel);
82969
83080
  const transformedData = await transformSingleOutput(data, modelKey, select2);
82970
- const requiredModels = Object.entries(join61).map(([model, joinConfig]) => ({
83081
+ const requiredModels = Object.entries(join62).map(([model, joinConfig]) => ({
82971
83082
  modelName: model,
82972
83083
  defaultModelName: joinConfig.modelKey ?? getDefaultModelName(model),
82973
83084
  joinConfig
@@ -83066,8 +83177,8 @@ var init_factory = __esm({
83066
83177
  if (!unsanitizedJoin) return void 0;
83067
83178
  if (Object.keys(unsanitizedJoin).length === 0) return void 0;
83068
83179
  const transformedJoin = {};
83069
- for (const [model, join61] of Object.entries(unsanitizedJoin)) {
83070
- if (!join61) continue;
83180
+ for (const [model, join62] of Object.entries(unsanitizedJoin)) {
83181
+ if (!join62) continue;
83071
83182
  const defaultModelName = getDefaultModelName(model);
83072
83183
  const defaultBaseModelName = getDefaultModelName(baseModel);
83073
83184
  let foreignKeys = Object.entries(schema3[defaultModelName].fields).filter(([field, fieldAttributes]) => fieldAttributes.references && getDefaultModelName(fieldAttributes.references.model) === defaultBaseModelName);
@@ -83108,7 +83219,7 @@ var init_factory = __esm({
83108
83219
  const isUnique = to === "id" ? true : foreignKeyAttributes.unique ?? false;
83109
83220
  let limit = options.advanced?.database?.defaultFindManyLimit ?? 100;
83110
83221
  if (isUnique) limit = 1;
83111
- else if (typeof join61 === "object" && typeof join61.limit === "number") limit = join61.limit;
83222
+ else if (typeof join62 === "object" && typeof join62.limit === "number") limit = join62.limit;
83112
83223
  transformedJoin[getModelName(model)] = {
83113
83224
  modelKey: model,
83114
83225
  on: {
@@ -83341,21 +83452,21 @@ var init_factory = __esm({
83341
83452
  where: unsafeWhere,
83342
83453
  action: "findOne"
83343
83454
  });
83344
- let join61;
83455
+ let join62;
83345
83456
  let passJoinToAdapter = true;
83346
83457
  if (!config3.disableTransformJoin) {
83347
83458
  const result2 = transformJoinClause(modelKey, unsafeJoin, select2);
83348
83459
  if (result2) {
83349
- join61 = result2.join;
83460
+ join62 = result2.join;
83350
83461
  select2 = result2.select;
83351
83462
  }
83352
- if (!options.advanced?.database?.joins && join61 && Object.keys(join61).length > 0) passJoinToAdapter = false;
83353
- } else join61 = unsafeJoin;
83463
+ if (!options.advanced?.database?.joins && join62 && Object.keys(join62).length > 0) passJoinToAdapter = false;
83464
+ } else join62 = unsafeJoin;
83354
83465
  debugLog({ method: "findOne" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 3)}`, `${formatMethod("findOne")}:`, {
83355
83466
  model,
83356
83467
  where,
83357
83468
  select: select2,
83358
- join: join61
83469
+ join: join62
83359
83470
  });
83360
83471
  const res = await withSpan3(`db findOne ${model}`, {
83361
83472
  [ATTR_DB_OPERATION_NAME]: "findOne",
@@ -83365,14 +83476,14 @@ var init_factory = __esm({
83365
83476
  modelKey,
83366
83477
  where,
83367
83478
  select: select2,
83368
- join: passJoinToAdapter ? join61 : void 0
83479
+ join: passJoinToAdapter ? join62 : void 0
83369
83480
  }));
83370
83481
  debugLog({ method: "findOne" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 3)}`, `${formatMethod("findOne")} ${formatAction("DB Result")}:`, {
83371
83482
  model,
83372
83483
  data: res
83373
83484
  });
83374
83485
  let transformed = res;
83375
- if (!config3.disableTransformOutput) transformed = await transformOutput(res, modelKey, select2, join61);
83486
+ if (!config3.disableTransformOutput) transformed = await transformOutput(res, modelKey, select2, join62);
83376
83487
  debugLog({ method: "findOne" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 3)}`, `${formatMethod("findOne")} ${formatAction("Parsed Result")}:`, {
83377
83488
  model,
83378
83489
  data: transformed
@@ -83390,23 +83501,23 @@ var init_factory = __esm({
83390
83501
  where: unsafeWhere,
83391
83502
  action: "findMany"
83392
83503
  });
83393
- let join61;
83504
+ let join62;
83394
83505
  let passJoinToAdapter = true;
83395
83506
  if (!config3.disableTransformJoin) {
83396
83507
  const result2 = transformJoinClause(modelKey, unsafeJoin, select2);
83397
83508
  if (result2) {
83398
- join61 = result2.join;
83509
+ join62 = result2.join;
83399
83510
  select2 = result2.select;
83400
83511
  }
83401
- if (!options.advanced?.database?.joins && join61 && Object.keys(join61).length > 0) passJoinToAdapter = false;
83402
- } else join61 = unsafeJoin;
83512
+ if (!options.advanced?.database?.joins && join62 && Object.keys(join62).length > 0) passJoinToAdapter = false;
83513
+ } else join62 = unsafeJoin;
83403
83514
  debugLog({ method: "findMany" }, `${formatTransactionId(thisTransactionId)} ${formatStep(1, 3)}`, `${formatMethod("findMany")}:`, {
83404
83515
  model,
83405
83516
  where,
83406
83517
  limit,
83407
83518
  sortBy,
83408
83519
  offset,
83409
- join: join61
83520
+ join: join62
83410
83521
  });
83411
83522
  const res = await withSpan3(`db findMany ${model}`, {
83412
83523
  [ATTR_DB_OPERATION_NAME]: "findMany",
@@ -83419,7 +83530,7 @@ var init_factory = __esm({
83419
83530
  select: select2,
83420
83531
  sortBy,
83421
83532
  offset,
83422
- join: passJoinToAdapter ? join61 : void 0
83533
+ join: passJoinToAdapter ? join62 : void 0
83423
83534
  }));
83424
83535
  debugLog({ method: "findMany" }, `${formatTransactionId(thisTransactionId)} ${formatStep(2, 3)}`, `${formatMethod("findMany")} ${formatAction("DB Result")}:`, {
83425
83536
  model,
@@ -83427,7 +83538,7 @@ var init_factory = __esm({
83427
83538
  });
83428
83539
  let transformed = res;
83429
83540
  if (!config3.disableTransformOutput) transformed = await Promise.all(res.map(async (r3) => {
83430
- return await transformOutput(r3, modelKey, void 0, join61);
83541
+ return await transformOutput(r3, modelKey, void 0, join62);
83431
83542
  }));
83432
83543
  debugLog({ method: "findMany" }, `${formatTransactionId(thisTransactionId)} ${formatStep(3, 3)}`, `${formatMethod("findMany")} ${formatAction("Parsed Result")}:`, {
83433
83544
  model,
@@ -83782,7 +83893,7 @@ var init_dist9 = __esm({
83782
83893
  return sortBy.direction === "asc" ? comparison : -comparison;
83783
83894
  });
83784
83895
  };
83785
- function convertWhereClause(where, model, modelKey, join61, select2) {
83896
+ function convertWhereClause(where, model, modelKey, join62, select2) {
83786
83897
  const baseRecords = (() => {
83787
83898
  const table2 = activeDb2[model];
83788
83899
  if (!table2) {
@@ -83842,14 +83953,14 @@ var init_dist9 = __esm({
83842
83953
  })))));
83843
83954
  return records;
83844
83955
  })();
83845
- if (!join61) return baseRecords;
83956
+ if (!join62) return baseRecords;
83846
83957
  const grouped = /* @__PURE__ */ new Map();
83847
83958
  const seenIds = /* @__PURE__ */ new Map();
83848
83959
  for (const baseRecord of baseRecords) {
83849
83960
  const baseId = String(baseRecord.id);
83850
83961
  if (!grouped.has(baseId)) {
83851
83962
  const nested = { ...baseRecord };
83852
- for (const [joinModel, joinAttr] of Object.entries(join61)) {
83963
+ for (const [joinModel, joinAttr] of Object.entries(join62)) {
83853
83964
  const joinModelName = joinModel;
83854
83965
  if (joinAttr.relation === "one-to-one") nested[joinModelName] = null;
83855
83966
  else {
@@ -83860,7 +83971,7 @@ var init_dist9 = __esm({
83860
83971
  grouped.set(baseId, nested);
83861
83972
  }
83862
83973
  const nestedEntry = grouped.get(baseId);
83863
- for (const [joinModel, joinAttr] of Object.entries(join61)) {
83974
+ for (const [joinModel, joinAttr] of Object.entries(join62)) {
83864
83975
  const joinModelName = joinModel;
83865
83976
  const joinTable = activeDb2[joinModelName];
83866
83977
  if (!joinTable) {
@@ -83893,18 +84004,18 @@ var init_dist9 = __esm({
83893
84004
  activeDb2[model].push(data);
83894
84005
  return data;
83895
84006
  },
83896
- findOne: async ({ model, modelKey = model, where, select: select2, join: join61 }) => {
83897
- const res = convertWhereClause(where, model, modelKey, join61, select2);
83898
- if (join61) {
84007
+ findOne: async ({ model, modelKey = model, where, select: select2, join: join62 }) => {
84008
+ const res = convertWhereClause(where, model, modelKey, join62, select2);
84009
+ if (join62) {
83899
84010
  const resArray = res;
83900
84011
  if (!resArray.length) return null;
83901
84012
  return resArray[0];
83902
84013
  }
83903
84014
  return res[0] || null;
83904
84015
  },
83905
- findMany: async ({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join: join61 }) => {
83906
- const res = convertWhereClause(where || [], model, modelKey, join61, select2);
83907
- if (join61) {
84016
+ findMany: async ({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join: join62 }) => {
84017
+ const res = convertWhereClause(where || [], model, modelKey, join62, select2);
84018
+ if (join62) {
83908
84019
  const resArray = res;
83909
84020
  if (!resArray.length) return [];
83910
84021
  applySortToRecords(resArray, sortBy, modelKey);
@@ -85902,10 +86013,10 @@ var init_query_node = __esm({
85902
86013
  where: node2.where ? WhereNode.cloneWithOperation(node2.where, "And", operation) : WhereNode.create(operation)
85903
86014
  });
85904
86015
  },
85905
- cloneWithJoin(node2, join61) {
86016
+ cloneWithJoin(node2, join62) {
85906
86017
  return freeze({
85907
86018
  ...node2,
85908
- joins: node2.joins ? freeze([...node2.joins, join61]) : freeze([join61])
86019
+ joins: node2.joins ? freeze([...node2.joins, join62]) : freeze([join62])
85909
86020
  });
85910
86021
  },
85911
86022
  cloneWithReturning(node2, selections) {
@@ -90416,8 +90527,8 @@ var init_with_schema_transformer = __esm({
90416
90527
  this.#collectSchemableIdsFromTableExpr(node2.table, schemableIds);
90417
90528
  }
90418
90529
  if ("joins" in node2 && node2.joins) {
90419
- for (const join61 of node2.joins) {
90420
- this.#collectSchemableIdsFromTableExpr(join61.table, schemableIds);
90530
+ for (const join62 of node2.joins) {
90531
+ this.#collectSchemableIdsFromTableExpr(join62.table, schemableIds);
90421
90532
  }
90422
90533
  }
90423
90534
  if ("using" in node2 && node2.using) {
@@ -102589,7 +102700,7 @@ var init_mssql_introspector = __esm({
102589
102700
  return await this.#db.selectFrom("sys.schemas").select("name").execute();
102590
102701
  }
102591
102702
  async getTables(options = { withInternalKyselyTables: false }) {
102592
- 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", (join61) => join61.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([
102703
+ 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([
102593
102704
  "tables.name as table_name",
102594
102705
  (eb) => eb.ref("tables.type").$castTo().as("table_type"),
102595
102706
  "table_schemas.name as table_schema_name",
@@ -102604,7 +102715,7 @@ var init_mssql_introspector = __esm({
102604
102715
  "types.name as type_name",
102605
102716
  "type_schemas.name as type_schema_name",
102606
102717
  "comments.value as column_comment"
102607
- ]).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", (join61) => join61.onRef("comments.major_id", "=", "views.object_id").onRef("comments.minor_id", "=", "columns.column_id").on("comments.name", "=", "MS_Description")).select([
102718
+ ]).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([
102608
102719
  "views.name as table_name",
102609
102720
  "views.type as table_type",
102610
102721
  "view_schemas.name as table_schema_name",
@@ -103831,10 +103942,10 @@ var init_dist11 = __esm({
103831
103942
  mysqlNoIdWarned = true;
103832
103943
  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.`);
103833
103944
  }
103834
- const selectAllJoins = (join61) => {
103945
+ const selectAllJoins = (join62) => {
103835
103946
  const allSelects = [];
103836
103947
  const allSelectsStr = [];
103837
- if (join61) for (const [joinModel, joinConfig] of Object.entries(join61)) {
103948
+ if (join62) for (const [joinModel, joinConfig] of Object.entries(join62)) {
103838
103949
  const fields = schema3[joinConfig.modelKey ?? getDefaultModelName(joinModel)]?.fields;
103839
103950
  const [_joinModelSchema, joinModelName] = joinModel.includes(".") ? joinModel.split(".") : [void 0, joinModel];
103840
103951
  if (!fields) continue;
@@ -104059,7 +104170,7 @@ var init_dist11 = __esm({
104059
104170
  async create({ data, model, modelKey = model }) {
104060
104171
  return await withReturning(data, db2.insertInto(model).values(data), model, modelKey, []);
104061
104172
  },
104062
- async findOne({ model, modelKey = model, where, select: select2, join: join61 }) {
104173
+ async findOne({ model, modelKey = model, where, select: select2, join: join62 }) {
104063
104174
  const { and: and2, or: or2 } = convertWhereClause(model, modelKey, where);
104064
104175
  let query = db2.selectFrom((eb) => {
104065
104176
  let b2 = eb.selectFrom(model);
@@ -104072,19 +104183,19 @@ var init_dist11 = __esm({
104072
104183
  else b2 = b2.selectAll();
104073
104184
  return b2.as("primary");
104074
104185
  }).selectAll("primary");
104075
- if (join61) for (const [joinModel, joinAttr] of Object.entries(join61)) {
104186
+ if (join62) for (const [joinModel, joinAttr] of Object.entries(join62)) {
104076
104187
  const [_joinModelSchema, joinModelName] = joinModel.includes(".") ? joinModel.split(".") : [void 0, joinModel];
104077
- query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join62) => join62.onRef(`join_${joinModelName}.${joinAttr.on.to}`, "=", `primary.${joinAttr.on.from}`));
104188
+ query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join63) => join63.onRef(`join_${joinModelName}.${joinAttr.on.to}`, "=", `primary.${joinAttr.on.from}`));
104078
104189
  }
104079
- const { allSelectsStr, allSelects } = selectAllJoins(join61);
104190
+ const { allSelectsStr, allSelects } = selectAllJoins(join62);
104080
104191
  query = query.select(allSelects);
104081
104192
  const res = await query.execute();
104082
104193
  if (!res || !Array.isArray(res) || res.length === 0) return null;
104083
104194
  const row2 = res[0];
104084
- if (join61) return processJoinedResults(res, join61, allSelectsStr)[0];
104195
+ if (join62) return processJoinedResults(res, join62, allSelectsStr)[0];
104085
104196
  return row2;
104086
104197
  },
104087
- async findMany({ model, modelKey = model, where, limit, select: select2, offset, sortBy, join: join61 }) {
104198
+ async findMany({ model, modelKey = model, where, limit, select: select2, offset, sortBy, join: join62 }) {
104088
104199
  const { and: and2, or: or2 } = convertWhereClause(model, modelKey, where);
104089
104200
  let query = db2.selectFrom((eb) => {
104090
104201
  let b2 = eb.selectFrom(model);
@@ -104113,11 +104224,11 @@ var init_dist11 = __esm({
104113
104224
  else b2 = b2.selectAll();
104114
104225
  return b2.as("primary");
104115
104226
  }).selectAll("primary");
104116
- if (join61) for (const [joinModel, joinAttr] of Object.entries(join61)) {
104227
+ if (join62) for (const [joinModel, joinAttr] of Object.entries(join62)) {
104117
104228
  const [_joinModelSchema, joinModelName] = joinModel.includes(".") ? joinModel.split(".") : [void 0, joinModel];
104118
- query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join62) => join62.onRef(`join_${joinModelName}.${joinAttr.on.to}`, "=", `primary.${joinAttr.on.from}`));
104229
+ query = query.leftJoin(`${joinModel} as join_${joinModelName}`, (join63) => join63.onRef(`join_${joinModelName}.${joinAttr.on.to}`, "=", `primary.${joinAttr.on.from}`));
104119
104230
  }
104120
- const { allSelectsStr, allSelects } = selectAllJoins(join61);
104231
+ const { allSelectsStr, allSelects } = selectAllJoins(join62);
104121
104232
  query = query.select(allSelects);
104122
104233
  if (sortBy?.field) query = query.orderBy(`${getFieldName({
104123
104234
  model: modelKey,
@@ -104125,7 +104236,7 @@ var init_dist11 = __esm({
104125
104236
  })}`, sortBy.direction);
104126
104237
  const res = await query.execute();
104127
104238
  if (!res) return [];
104128
- if (join61) return processJoinedResults(res, join61, allSelectsStr);
104239
+ if (join62) return processJoinedResults(res, join62, allSelectsStr);
104129
104240
  return res;
104130
104241
  },
104131
104242
  async update({ model, modelKey = model, where, update: values2 }) {
@@ -107058,7 +107169,7 @@ var init_sql2 = __esm({
107058
107169
  return new SQL([new StringChunk(str2)]);
107059
107170
  }
107060
107171
  sql22.raw = raw;
107061
- function join61(chunks, separator) {
107172
+ function join62(chunks, separator) {
107062
107173
  const result2 = [];
107063
107174
  for (const [i2, chunk] of chunks.entries()) {
107064
107175
  if (i2 > 0 && separator !== void 0) {
@@ -107068,7 +107179,7 @@ var init_sql2 = __esm({
107068
107179
  }
107069
107180
  return new SQL(result2);
107070
107181
  }
107071
- sql22.join = join61;
107182
+ sql22.join = join62;
107072
107183
  function identifier(value) {
107073
107184
  return new Name(value);
107074
107185
  }
@@ -108419,10 +108530,10 @@ var init_dist14 = __esm({
108419
108530
  checkMissingFields(table2, modelKey, values2);
108420
108531
  return await withReturning(model, modelKey, db2.insert(table2).values(values2), values2);
108421
108532
  },
108422
- async findOne({ model, modelKey = model, where, select: select2, join: join61 }) {
108533
+ async findOne({ model, modelKey = model, where, select: select2, join: join62 }) {
108423
108534
  const table2 = getSchema2(model);
108424
108535
  const clause = convertWhereClause(where, model, modelKey);
108425
- if (join61) {
108536
+ if (join62) {
108426
108537
  const queryModel = getQueryModel(model);
108427
108538
  if (!db2.query || !queryModel) {
108428
108539
  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".`);
@@ -108432,7 +108543,7 @@ var init_dist14 = __esm({
108432
108543
  const renamedJoinResults = [];
108433
108544
  const relationKeys = getRelationKeysByModel().get(queryModel);
108434
108545
  includes = {};
108435
- const joinEntries = Object.entries(join61);
108546
+ const joinEntries = Object.entries(join62);
108436
108547
  for (const [joinModel, joinAttr] of joinEntries) {
108437
108548
  const limit = joinAttr.limit ?? options.advanced?.database?.defaultFindManyLimit ?? 100;
108438
108549
  const isUnique = joinAttr.relation === "one-to-one";
@@ -108474,11 +108585,11 @@ var init_dist14 = __esm({
108474
108585
  if (!res.length) return null;
108475
108586
  return res[0];
108476
108587
  },
108477
- async findMany({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join: join61 }) {
108588
+ async findMany({ model, modelKey = model, where, sortBy, limit, select: select2, offset, join: join62 }) {
108478
108589
  const table2 = getSchema2(model);
108479
108590
  const clause = where ? convertWhereClause(where, model, modelKey) : [];
108480
108591
  const sortFn = sortBy?.direction === "desc" ? desc : asc;
108481
- if (join61) {
108592
+ if (join62) {
108482
108593
  const queryModel = getQueryModel(model);
108483
108594
  if (!db2.query || !queryModel) {
108484
108595
  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".`);
@@ -108488,7 +108599,7 @@ var init_dist14 = __esm({
108488
108599
  const renamedJoinResults = [];
108489
108600
  const relationKeys = getRelationKeysByModel().get(queryModel);
108490
108601
  includes = {};
108491
- const joinEntries = Object.entries(join61);
108602
+ const joinEntries = Object.entries(join62);
108492
108603
  for (const [joinModel, joinAttr] of joinEntries) {
108493
108604
  const isUnique = joinAttr.relation === "one-to-one";
108494
108605
  const limit2 = joinAttr.limit ?? options.advanced?.database?.defaultFindManyLimit ?? 100;
@@ -120095,7 +120206,7 @@ var init_select2 = __esm({
120095
120206
  const baseTableName = this.tableName;
120096
120207
  const tableName = getTableLikeName(table2);
120097
120208
  for (const item of extractUsedTable(table2)) this.usedTables.add(item);
120098
- if (typeof tableName === "string" && this.config.joins?.some((join61) => join61.alias === tableName)) {
120209
+ if (typeof tableName === "string" && this.config.joins?.some((join62) => join62.alias === tableName)) {
120099
120210
  throw new Error(`Alias "${tableName}" is already used in this query`);
120100
120211
  }
120101
120212
  if (!this.isPartialSelect) {
@@ -120981,7 +121092,7 @@ var init_update = __esm({
120981
121092
  createJoin(joinType) {
120982
121093
  return (table2, on) => {
120983
121094
  const tableName = getTableLikeName(table2);
120984
- if (typeof tableName === "string" && this.config.joins.some((join61) => join61.alias === tableName)) {
121095
+ if (typeof tableName === "string" && this.config.joins.some((join62) => join62.alias === tableName)) {
120985
121096
  throw new Error(`Alias "${tableName}" is already used in this query`);
120986
121097
  }
120987
121098
  if (typeof on === "function") {
@@ -129225,6 +129336,7 @@ function defuseSystemTags(text3, tagNames) {
129225
129336
  var IDENTITY_MAX_LENGTH, INVISIBLE_FORMAT, CONTROL_CHARS, PATTERN_CACHE;
129226
129337
  var init_untrusted_text = __esm({
129227
129338
  "../shared/src/untrusted-text.ts"() {
129339
+ "use strict";
129228
129340
  IDENTITY_MAX_LENGTH = 80;
129229
129341
  INVISIBLE_FORMAT = /[\u00ad\u200b-\u200f\u202a-\u202e\u2060-\u2064\ufeff\ufff9-\ufffb]/g;
129230
129342
  CONTROL_CHARS = /[\u0000-\u001f\u007f-\u009f]/g;
@@ -129407,6 +129519,8 @@ var init_config_disclosure = __esm({
129407
129519
  // Whether chatting from the web is on (DOR-2946): a plain boolean. The hub's
129408
129520
  // address and the relay secret live in the relay's own file, never in config.
129409
129521
  "sessionRelay.enabled": "expose",
129522
+ // Whether the Docs experiment is on (DOR-2993): a plain boolean.
129523
+ "docs.enabled": "expose",
129410
129524
  // Whether the spaces experiment is on (DOR-2740): a plain boolean, no host.
129411
129525
  "spaces.enabled": "expose",
129412
129526
  // The official space's public link (spec `official-community-space` D4): a
@@ -129994,6 +130108,9 @@ var init_config_write_policy = __esm({
129994
130108
  // (DOR-2946). A "who can reach this computer" door, so a person opens it,
129995
130109
  // never an agent.
129996
130110
  "sessionRelay.enabled": "operator-only",
130111
+ // Whether the Docs experiment is on (DOR-2993). Like every experiment, a
130112
+ // person tries it, never an agent.
130113
+ "docs.enabled": "operator-only",
129997
130114
  // Whether this DorkOS joins and talks to spaces on other servers (DOR-2740).
129998
130115
  // Another "who can this instance reach" door, so a person opens it, never an
129999
130116
  // agent.
@@ -130669,7 +130786,9 @@ var init_config_write_policy = __esm({
130669
130786
  // setting that decides whether a model turn runs at all (DOR-1046).
130670
130787
  "welcomeBack.offersEnabled",
130671
130788
  // Whether agents wake on their own at all (spec `heartbeats` §3.6).
130672
- "heartbeats.enabled"
130789
+ "heartbeats.enabled",
130790
+ // Docs: a mention in a doc comment wakes the agent it names (DOR-2983).
130791
+ "docs.enabled"
130673
130792
  ]
130674
130793
  },
130675
130794
  {
@@ -142933,11 +143052,11 @@ function globalInstallReasonOf(plugin, shared) {
142933
143052
  namedSkills(plugin.skills.map((skill) => skill.name)),
142934
143053
  shared
142935
143054
  );
142936
- const join61 = (into) => shared ? into : `${into}${into.endsWith(".") ? "" : "."} ${GLOBAL_INSTALL_SHARE_OFFER}`;
143055
+ const join62 = (into) => shared ? into : `${into}${into.endsWith(".") ? "" : "."} ${GLOBAL_INSTALL_SHARE_OFFER}`;
142937
143056
  const timed = plugin.skills.filter((skill) => skill.hasSchedule);
142938
- if (timed.length === 0) return join61(lead);
143057
+ if (timed.length === 0) return join62(lead);
142939
143058
  const allLinked = timed.every((skill) => skill.linkedInDorkHome === true);
142940
- return join61(`${lead}. ${allLinked ? GLOBAL_INSTALL_TIMERS_WORK : GLOBAL_INSTALL_TIMERS_PENDING}`);
143059
+ return join62(`${lead}. ${allLinked ? GLOBAL_INSTALL_TIMERS_WORK : GLOBAL_INSTALL_TIMERS_PENDING}`);
142941
143060
  }
142942
143061
  function planGlobalInstallDrops(input4) {
142943
143062
  const projectNames = new Set(
@@ -149506,9 +149625,57 @@ var init_settings_hooks = __esm({
149506
149625
  }
149507
149626
  });
149508
149627
 
149628
+ // ../harness/src/apply/opencode-command-orphans.ts
149629
+ import { readFileSync as readFileSync16, rmSync as rmSync6 } from "node:fs";
149630
+ import { join as join38 } from "node:path";
149631
+ function findOpencodeCommandOrphans(repoRoot, plan) {
149632
+ return removableOf(repoRoot, allOpencodeCommandOrphans(repoRoot, plan));
149633
+ }
149634
+ function allOpencodeCommandOrphans(repoRoot, plan) {
149635
+ const kept = new Set(
149636
+ plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${OPENCODE_COMMANDS_DIR}/`)).map((a2) => a2.target)
149637
+ );
149638
+ const commandsDir = join38(repoRoot, OPENCODE_COMMANDS_DIR);
149639
+ const orphans = [];
149640
+ for (const entry of listDirEntries(commandsDir)) {
149641
+ if (!entry.isFile()) continue;
149642
+ const rel = `${OPENCODE_COMMANDS_DIR}/${entry.name}`;
149643
+ const abs = join38(commandsDir, entry.name);
149644
+ if (isAtomicTempName(entry.name)) {
149645
+ if (isStaleAtomicTemp(abs)) orphans.push(rel);
149646
+ continue;
149647
+ }
149648
+ if (kept.has(rel)) continue;
149649
+ if (!isEngineGeneratedCommand(abs)) continue;
149650
+ orphans.push(rel);
149651
+ }
149652
+ return orphans;
149653
+ }
149654
+ function sweepOpencodeCommandOrphans(repoRoot, plan) {
149655
+ const orphans = findOpencodeCommandOrphans(repoRoot, plan);
149656
+ for (const rel of orphans) rmSync6(join38(repoRoot, rel), { force: true });
149657
+ return orphans;
149658
+ }
149659
+ function isEngineGeneratedCommand(abs) {
149660
+ try {
149661
+ return readFileSync16(abs, "utf8").includes(GENERATED_COMMAND_MARKER);
149662
+ } catch {
149663
+ return false;
149664
+ }
149665
+ }
149666
+ var init_opencode_command_orphans = __esm({
149667
+ "../harness/src/apply/opencode-command-orphans.ts"() {
149668
+ "use strict";
149669
+ init_installed_projector();
149670
+ init_atomic_write();
149671
+ init_link_state();
149672
+ init_sweep_warnings();
149673
+ }
149674
+ });
149675
+
149509
149676
  // ../harness/src/apply/apply.ts
149510
- import { existsSync as existsSync12, mkdirSync as mkdirSync5, readFileSync as readFileSync16, rmSync as rmSync6, symlinkSync as symlinkSync2 } from "node:fs";
149511
- import { dirname as dirname11, join as join38, relative as relative6 } from "node:path";
149677
+ import { existsSync as existsSync12, mkdirSync as mkdirSync5, rmSync as rmSync7, symlinkSync as symlinkSync2 } from "node:fs";
149678
+ import { dirname as dirname11, join as join39, relative as relative6 } from "node:path";
149512
149679
  function skillSourcesUnreadable(plan) {
149513
149680
  return (plan.unreadableSkillRoots?.length ?? 0) > 0;
149514
149681
  }
@@ -149519,13 +149686,13 @@ function scaffoldPresent(absTarget) {
149519
149686
  return pathExists(absTarget) && !isDanglingSymlink(absTarget);
149520
149687
  }
149521
149688
  function relativeLink(repoRoot, source, target) {
149522
- return relative6(dirname11(join38(repoRoot, target)), absolutePlanPath(repoRoot, source));
149689
+ return relative6(dirname11(join39(repoRoot, target)), absolutePlanPath(repoRoot, source));
149523
149690
  }
149524
149691
  function applySymlink(repoRoot, action) {
149525
149692
  if (!action.source || !action.target) {
149526
149693
  throw new Error(`symlink action for "${action.name}" is missing source/target`);
149527
149694
  }
149528
- const absTarget = join38(repoRoot, action.target);
149695
+ const absTarget = join39(repoRoot, action.target);
149529
149696
  const linkText = relativeLink(repoRoot, action.source, action.target);
149530
149697
  const absSource = absolutePlanPath(repoRoot, action.source);
149531
149698
  for (let attempt = 0, removalRetries = 0; attempt < SYMLINK_ATTEMPTS; ) {
@@ -149536,7 +149703,7 @@ function applySymlink(repoRoot, action) {
149536
149703
  return void 0;
149537
149704
  }
149538
149705
  try {
149539
- rmSync6(absTarget, { force: true });
149706
+ rmSync7(absTarget, { force: true });
149540
149707
  } catch (error63) {
149541
149708
  if (!waitForSymlinkRemoval(error63, removalRetries++)) throw error63;
149542
149709
  continue;
@@ -149555,13 +149722,13 @@ function applySymlink(repoRoot, action) {
149555
149722
  }
149556
149723
  function applyScaffold(repoRoot, action) {
149557
149724
  if (!action.target) throw new Error(`scaffold action for "${action.name}" is missing target`);
149558
- const absTarget = join38(repoRoot, action.target);
149725
+ const absTarget = join39(repoRoot, action.target);
149559
149726
  if (scaffoldPresent(absTarget)) return;
149560
149727
  writeFileAtomic(absTarget, requireActionContent(action));
149561
149728
  }
149562
149729
  function applyGenerate(repoRoot, action) {
149563
149730
  if (!action.target) throw new Error(`generate action for "${action.name}" is missing target`);
149564
- const absTarget = join38(repoRoot, action.target);
149731
+ const absTarget = join39(repoRoot, action.target);
149565
149732
  const shape = blockingGenerateOccupant(absTarget);
149566
149733
  if (shape !== void 0) return shape;
149567
149734
  const content = requireActionContent(action);
@@ -149575,7 +149742,7 @@ function applyGenerate(repoRoot, action) {
149575
149742
  function applyMerge(repoRoot, action) {
149576
149743
  if (!action.target) throw new Error(`merge action for "${action.name}" is missing target`);
149577
149744
  const managed = JSON.parse(requireActionContent(action));
149578
- return mergeManagedHooks(join38(repoRoot, action.target), managed);
149745
+ return mergeManagedHooks(join39(repoRoot, action.target), managed);
149579
149746
  }
149580
149747
  function findInstalledOrphans(repoRoot, plan) {
149581
149748
  return removableOf(repoRoot, allInstalledOrphans(repoRoot, plan));
@@ -149587,10 +149754,10 @@ function allInstalledOrphans(repoRoot, plan) {
149587
149754
  );
149588
149755
  const orphans = [];
149589
149756
  for (const dir of INSTALLED_SKILL_DIRS) {
149590
- const skillsDir = join38(repoRoot, dir);
149757
+ const skillsDir = join39(repoRoot, dir);
149591
149758
  for (const entry of listDir(skillsDir)) {
149592
149759
  if (!entry.includes(INSTALLED_PROJECTION_MARKER)) continue;
149593
- const abs = join38(skillsDir, entry);
149760
+ const abs = join39(skillsDir, entry);
149594
149761
  if (!isSymlink(abs)) continue;
149595
149762
  const rel = `${dir}/${entry}`;
149596
149763
  if (managed.has(rel)) continue;
@@ -149602,7 +149769,7 @@ function allInstalledOrphans(repoRoot, plan) {
149602
149769
  }
149603
149770
  function sweepInstalledOrphans(repoRoot, plan) {
149604
149771
  const orphans = findInstalledOrphans(repoRoot, plan);
149605
- for (const rel of orphans) rmSync6(join38(repoRoot, rel), { force: true });
149772
+ for (const rel of orphans) rmSync7(join39(repoRoot, rel), { force: true });
149606
149773
  return orphans;
149607
149774
  }
149608
149775
  function findGeneratedCommandOrphans(repoRoot, plan) {
@@ -149612,14 +149779,14 @@ function allGeneratedCommandOrphans(repoRoot, plan) {
149612
149779
  const kept = new Set(
149613
149780
  plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${CLAUDE_COMMANDS_DIR}/`)).map((a2) => a2.target)
149614
149781
  );
149615
- const commandsDir = join38(repoRoot, CLAUDE_COMMANDS_DIR);
149782
+ const commandsDir = join39(repoRoot, CLAUDE_COMMANDS_DIR);
149616
149783
  const orphans = [];
149617
149784
  for (const sub of listDirEntries(commandsDir)) {
149618
149785
  if (!sub.isDirectory()) continue;
149619
- const subAbs = join38(commandsDir, sub.name);
149786
+ const subAbs = join39(commandsDir, sub.name);
149620
149787
  for (const file2 of listDir(subAbs)) {
149621
149788
  const rel = `${CLAUDE_COMMANDS_DIR}/${sub.name}/${file2}`;
149622
- const abs = join38(subAbs, file2);
149789
+ const abs = join39(subAbs, file2);
149623
149790
  if (isAtomicTempName(file2)) {
149624
149791
  if (isStaleAtomicTemp(abs)) orphans.push(rel);
149625
149792
  continue;
@@ -149633,68 +149800,33 @@ function allGeneratedCommandOrphans(repoRoot, plan) {
149633
149800
  }
149634
149801
  function sweepGeneratedCommandOrphans(repoRoot, plan) {
149635
149802
  const orphans = findGeneratedCommandOrphans(repoRoot, plan);
149636
- for (const rel of orphans) rmSync6(join38(repoRoot, rel), { force: true });
149803
+ for (const rel of orphans) rmSync7(join39(repoRoot, rel), { force: true });
149637
149804
  for (const rel of removableOf(repoRoot, emptiedWrapperDirs(repoRoot, plan))) {
149638
- rmSync6(join38(repoRoot, rel), { recursive: true, force: true });
149805
+ rmSync7(join39(repoRoot, rel), { recursive: true, force: true });
149639
149806
  }
149640
149807
  return orphans;
149641
149808
  }
149642
149809
  function emptiedWrapperDirs(repoRoot, plan) {
149643
- const commandsDir = join38(repoRoot, CLAUDE_COMMANDS_DIR);
149810
+ const commandsDir = join39(repoRoot, CLAUDE_COMMANDS_DIR);
149644
149811
  const taking = new Set(findGeneratedCommandOrphans(repoRoot, plan));
149645
149812
  const dirs = [];
149646
149813
  for (const sub of listDirEntries(commandsDir)) {
149647
149814
  if (!sub.isDirectory()) continue;
149648
149815
  const rel = `${CLAUDE_COMMANDS_DIR}/${sub.name}`;
149649
- const listing = tryListDir(join38(commandsDir, sub.name));
149816
+ const listing = tryListDir(join39(commandsDir, sub.name));
149650
149817
  if (listing === void 0) continue;
149651
149818
  if (listing.every((entry) => taking.has(`${rel}/${entry}`))) dirs.push(rel);
149652
149819
  }
149653
149820
  return dirs.sort();
149654
149821
  }
149655
- function findOpencodeCommandOrphans(repoRoot, plan) {
149656
- return removableOf(repoRoot, allOpencodeCommandOrphans(repoRoot, plan));
149657
- }
149658
- function allOpencodeCommandOrphans(repoRoot, plan) {
149659
- const kept = new Set(
149660
- plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${OPENCODE_COMMANDS_DIR}/`)).map((a2) => a2.target)
149661
- );
149662
- const commandsDir = join38(repoRoot, OPENCODE_COMMANDS_DIR);
149663
- const orphans = [];
149664
- for (const entry of listDirEntries(commandsDir)) {
149665
- if (!entry.isFile()) continue;
149666
- const rel = `${OPENCODE_COMMANDS_DIR}/${entry.name}`;
149667
- const abs = join38(commandsDir, entry.name);
149668
- if (isAtomicTempName(entry.name)) {
149669
- if (isStaleAtomicTemp(abs)) orphans.push(rel);
149670
- continue;
149671
- }
149672
- if (kept.has(rel)) continue;
149673
- if (!isEngineGeneratedCommand(abs)) continue;
149674
- orphans.push(rel);
149675
- }
149676
- return orphans;
149677
- }
149678
- function sweepOpencodeCommandOrphans(repoRoot, plan) {
149679
- const orphans = findOpencodeCommandOrphans(repoRoot, plan);
149680
- for (const rel of orphans) rmSync6(join38(repoRoot, rel), { force: true });
149681
- return orphans;
149682
- }
149683
- function isEngineGeneratedCommand(abs) {
149684
- try {
149685
- return readFileSync16(abs, "utf8").includes(GENERATED_COMMAND_MARKER);
149686
- } catch {
149687
- return false;
149688
- }
149689
- }
149690
149822
  function findBlockedWrapperDirs(repoRoot, plan) {
149691
149823
  const wrapperDirs = new Set(
149692
149824
  plan.actions.filter((a2) => a2.kind === "generate" && a2.target?.startsWith(`${CLAUDE_COMMANDS_DIR}/`)).map((a2) => dirname11(a2.target))
149693
149825
  );
149694
149826
  const blocked = /* @__PURE__ */ new Set();
149695
149827
  for (const relDir of wrapperDirs) {
149696
- const abs = join38(repoRoot, relDir);
149697
- const hasForeignContent = listDir(abs).some((entry) => isForeign(join38(abs, entry), entry));
149828
+ const abs = join39(repoRoot, relDir);
149829
+ const hasForeignContent = listDir(abs).some((entry) => isForeign(join39(abs, entry), entry));
149698
149830
  if (hasForeignContent) blocked.add(relDir);
149699
149831
  }
149700
149832
  return blocked;
@@ -149710,7 +149842,7 @@ function findBlockedOpencodeCommandFiles(repoRoot, plan) {
149710
149842
  if (action.kind !== "generate") continue;
149711
149843
  const target = action.target;
149712
149844
  if (!target?.startsWith(`${OPENCODE_COMMANDS_DIR}/`)) continue;
149713
- const abs = join38(repoRoot, target);
149845
+ const abs = join39(repoRoot, target);
149714
149846
  if (pathExists(abs) && !isEngineGeneratedCommand(abs)) blocked.add(target);
149715
149847
  }
149716
149848
  return blocked;
@@ -149723,11 +149855,11 @@ function allSettingsHooksOrphan(repoRoot, plan) {
149723
149855
  (a2) => a2.kind === "merge" && a2.target === CLAUDE_SETTINGS_LOCAL_TARGET
149724
149856
  );
149725
149857
  if (hasMerge) return [];
149726
- return hasManagedHooks(join38(repoRoot, CLAUDE_SETTINGS_LOCAL_TARGET)) ? [CLAUDE_SETTINGS_LOCAL_TARGET] : [];
149858
+ return hasManagedHooks(join39(repoRoot, CLAUDE_SETTINGS_LOCAL_TARGET)) ? [CLAUDE_SETTINGS_LOCAL_TARGET] : [];
149727
149859
  }
149728
149860
  function sweepSettingsHooksOrphan(repoRoot, plan) {
149729
149861
  const orphans = findSettingsHooksOrphan(repoRoot, plan);
149730
- if (orphans.length > 0) sweepManagedHooks(join38(repoRoot, CLAUDE_SETTINGS_LOCAL_TARGET));
149862
+ if (orphans.length > 0) sweepManagedHooks(join39(repoRoot, CLAUDE_SETTINGS_LOCAL_TARGET));
149731
149863
  return orphans;
149732
149864
  }
149733
149865
  function applyPlan(repoRoot, plan, opts) {
@@ -149815,7 +149947,7 @@ function isDrifted(repoRoot, action) {
149815
149947
  switch (action.kind) {
149816
149948
  case "symlink": {
149817
149949
  if (!action.source || !action.target) return true;
149818
- const absTarget = join38(repoRoot, action.target);
149950
+ const absTarget = join39(repoRoot, action.target);
149819
149951
  const kind = occupantKind(absTarget);
149820
149952
  if (kind === "absent") return true;
149821
149953
  if (kind === "file" || kind === "directory") return false;
@@ -149828,10 +149960,10 @@ function isDrifted(repoRoot, action) {
149828
149960
  );
149829
149961
  }
149830
149962
  case "scaffold":
149831
- return !action.target || !scaffoldPresent(join38(repoRoot, action.target));
149963
+ return !action.target || !scaffoldPresent(join39(repoRoot, action.target));
149832
149964
  case "generate": {
149833
149965
  if (!action.target) return true;
149834
- const absTarget = join38(repoRoot, action.target);
149966
+ const absTarget = join39(repoRoot, action.target);
149835
149967
  if (blockingGenerateOccupant(absTarget) !== void 0) return false;
149836
149968
  const onDisk = readFileIfPresent(absTarget);
149837
149969
  if (onDisk === void 0) return true;
@@ -149843,7 +149975,7 @@ function isDrifted(repoRoot, action) {
149843
149975
  case "merge": {
149844
149976
  if (!action.target) return true;
149845
149977
  const managed = JSON.parse(requireActionContent(action));
149846
- return managedHooksDrift(join38(repoRoot, action.target), managed);
149978
+ return managedHooksDrift(join39(repoRoot, action.target), managed);
149847
149979
  }
149848
149980
  case "native":
149849
149981
  case "drop":
@@ -149855,7 +149987,7 @@ function findBlockedSymlinkTargets(repoRoot, plan) {
149855
149987
  for (const action of plan.actions) {
149856
149988
  if (action.kind !== "symlink" || !action.source || !action.target) continue;
149857
149989
  const reason = blockingSymlinkOccupant(
149858
- join38(repoRoot, action.target),
149990
+ join39(repoRoot, action.target),
149859
149991
  relativeLink(repoRoot, action.source, action.target)
149860
149992
  );
149861
149993
  if (reason !== void 0) blocked.push({ ...action, reason });
@@ -149961,6 +150093,7 @@ var init_apply = __esm({
149961
150093
  init_sweep_warnings();
149962
150094
  init_installed_projector();
149963
150095
  init_settings_hooks();
150096
+ init_opencode_command_orphans();
149964
150097
  INSTALLED_SKILL_DIRS = [AGENTS_SKILLS_DIR, CLAUDE_SKILLS_DIR];
149965
150098
  SYMLINK_ATTEMPTS = 3;
149966
150099
  }
@@ -149968,7 +150101,7 @@ var init_apply = __esm({
149968
150101
 
149969
150102
  // ../harness/src/adopt/apply.ts
149970
150103
  import { lstatSync as lstatSync12, mkdirSync as mkdirSync6, renameSync as renameSync3, rmdirSync } from "node:fs";
149971
- import { join as join39 } from "node:path";
150104
+ import { join as join40 } from "node:path";
149972
150105
  function applyAdopt(repoRoot, plan) {
149973
150106
  const moved = [];
149974
150107
  const declared = [];
@@ -149986,9 +150119,9 @@ function applyAdopt(repoRoot, plan) {
149986
150119
  return { moved, declared, refusals };
149987
150120
  }
149988
150121
  function applyMove(repoRoot, move) {
149989
- const absFrom = join39(repoRoot, move.from);
149990
- const absTo = join39(repoRoot, move.to);
149991
- const canonicalLayer = join39(repoRoot, ADOPT_TARGET_ROOT);
150122
+ const absFrom = join40(repoRoot, move.from);
150123
+ const absTo = join40(repoRoot, move.to);
150124
+ const canonicalLayer = join40(repoRoot, ADOPT_TARGET_ROOT);
149992
150125
  const layerExisted = somethingIsAt(canonicalLayer);
149993
150126
  mkdirSync6(canonicalLayer, { recursive: true });
149994
150127
  try {
@@ -150032,7 +150165,7 @@ function restore(input4) {
150032
150165
  if (!somethingIsAt(absFrom)) {
150033
150166
  try {
150034
150167
  renameSync3(absTo, absFrom);
150035
- if (!layerExisted) removeIfEmpty(join39(repoRoot, ADOPT_TARGET_ROOT));
150168
+ if (!layerExisted) removeIfEmpty(join40(repoRoot, ADOPT_TARGET_ROOT));
150036
150169
  return { name: move.name, source: move.from, rule: "link-blocked", reason: blocked };
150037
150170
  } catch {
150038
150171
  }
@@ -150099,10 +150232,10 @@ import {
150099
150232
  lstatSync as lstatSync13,
150100
150233
  mkdirSync as mkdirSync7,
150101
150234
  readlinkSync as readlinkSync5,
150102
- rmSync as rmSync7,
150235
+ rmSync as rmSync8,
150103
150236
  symlinkSync as symlinkSync3
150104
150237
  } from "node:fs";
150105
- import { basename as basename6, dirname as dirname12, join as join40, relative as relative7, resolve as resolve6, sep as sep8 } from "node:path";
150238
+ import { basename as basename6, dirname as dirname12, join as join41, relative as relative7, resolve as resolve6, sep as sep8 } from "node:path";
150106
150239
  function globalSweepDirs(roots) {
150107
150240
  return [
150108
150241
  ...new Set(
@@ -150158,13 +150291,13 @@ function globalOrphanCandidates(plan, roots) {
150158
150291
  if (pkg === void 0) {
150159
150292
  const extension = linkOwnerUnder(abs, extensionRoot);
150160
150293
  if (extension === void 0 || planned.has(abs)) continue;
150161
- if (!existsSync13(join40(extensionRoot, extension)) || plan.extensionLedger === "read") {
150294
+ if (!existsSync13(join41(extensionRoot, extension)) || plan.extensionLedger === "read") {
150162
150295
  orphans.set(abs, SWEEP_REASONS["global-extension-stopped"]);
150163
150296
  }
150164
150297
  continue;
150165
150298
  }
150166
150299
  if (planned.has(abs)) continue;
150167
- if (!existsSync13(join40(pluginsRoot, pkg))) {
150300
+ if (!existsSync13(join41(pluginsRoot, pkg))) {
150168
150301
  orphans.set(abs, SWEEP_REASONS["global-package-gone"]);
150169
150302
  continue;
150170
150303
  }
@@ -150191,7 +150324,7 @@ function rawGlobalOrphanPaths(plan, roots) {
150191
150324
  }
150192
150325
  function sweepGlobalOrphans(plan, roots) {
150193
150326
  const orphans = findGlobalOrphans(plan, roots);
150194
- for (const { path: path66 } of orphans) rmSync7(path66, { force: true });
150327
+ for (const { path: path66 } of orphans) rmSync8(path66, { force: true });
150195
150328
  return orphans;
150196
150329
  }
150197
150330
  function globalLinkText(action) {
@@ -150248,7 +150381,7 @@ function applyGlobalSymlink(action, memo2) {
150248
150381
  if (blocked !== void 0) return { kind: "blocked", reason: blocked };
150249
150382
  if (linkMatchesPlan(absTarget, absSource, linkText, LINK_CHECK)) return { kind: "unchanged" };
150250
150383
  try {
150251
- rmSync7(absTarget, { force: true });
150384
+ rmSync8(absTarget, { force: true });
150252
150385
  } catch (error63) {
150253
150386
  if (!waitForSymlinkRemoval(error63, removalRetries++)) throw error63;
150254
150387
  continue;
@@ -150495,7 +150628,7 @@ import {
150495
150628
  realpathSync as realpathSync10,
150496
150629
  statSync as statSync10
150497
150630
  } from "node:fs";
150498
- import { basename as basename7, isAbsolute as isAbsolute7, join as join41, relative as relative8, resolve as resolve7, sep as sep9 } from "node:path";
150631
+ import { basename as basename7, isAbsolute as isAbsolute7, join as join42, relative as relative8, resolve as resolve7, sep as sep9 } from "node:path";
150499
150632
  function statOrUndefined(path66) {
150500
150633
  try {
150501
150634
  return statSync10(path66, { throwIfNoEntry: false });
@@ -150532,7 +150665,7 @@ function ascendLevels(root, cwd, stopAtWorktree) {
150532
150665
  const levels2 = [];
150533
150666
  for (; ; ) {
150534
150667
  levels2.push(current3);
150535
- if (stopAtWorktree && existsSync14(join41(current3, ".git"))) break;
150668
+ if (stopAtWorktree && existsSync14(join42(current3, ".git"))) break;
150536
150669
  if (current3 === root) break;
150537
150670
  const parent = resolve7(current3, "..");
150538
150671
  if (parent === current3) break;
@@ -150558,7 +150691,7 @@ function descendScopes(root, facts) {
150558
150691
  if (!entry.isDirectory()) continue;
150559
150692
  if (NEVER_DESCEND.has(entry.name)) continue;
150560
150693
  if (entry.name.startsWith(".") && !listedDotDirs.has(entry.name)) continue;
150561
- visit2(join41(dir, entry.name), depth + 1);
150694
+ visit2(join42(dir, entry.name), depth + 1);
150562
150695
  }
150563
150696
  };
150564
150697
  visit2(root, 0);
@@ -150570,7 +150703,7 @@ function readDirs(facts, root, cwd) {
150570
150703
  const seen = /* @__PURE__ */ new Set();
150571
150704
  for (const scope3 of scopes) {
150572
150705
  for (const readPath2 of facts.readPaths.project) {
150573
- const abs = join41(scope3, readPath2);
150706
+ const abs = join42(scope3, readPath2);
150574
150707
  if (seen.has(abs)) continue;
150575
150708
  seen.add(abs);
150576
150709
  dirs.push({ abs, via: viaOf(root, abs) });
@@ -150654,9 +150787,9 @@ function harnessCoverage(harness, root, opts) {
150654
150787
  continue;
150655
150788
  }
150656
150789
  for (const entry of [...entries].sort((a2, b2) => a2.name.localeCompare(b2.name))) {
150657
- const dir = join41(abs, entry.name);
150790
+ const dir = join42(abs, entry.name);
150658
150791
  if (!statOrUndefined(dir)?.isDirectory()) continue;
150659
- const skillMd = join41(dir, "SKILL.md");
150792
+ const skillMd = join42(dir, "SKILL.md");
150660
150793
  if (!statOrUndefined(skillMd)?.isFile()) continue;
150661
150794
  const reachedThroughSymlink = lstatOrUndefined(dir)?.isSymbolicLink() === true;
150662
150795
  const { found, reasons, loads, droppedReason } = evaluate(
@@ -150693,21 +150826,21 @@ var init_coverage = __esm({
150693
150826
 
150694
150827
  // ../harness/src/engine.ts
150695
150828
  import { existsSync as existsSync15, lstatSync as lstatSync15, readFileSync as readFileSync18, readdirSync as readdirSync9 } from "node:fs";
150696
- import { join as join42 } from "node:path";
150829
+ import { join as join43 } from "node:path";
150697
150830
  function loadManifest(repoRoot) {
150698
150831
  const raw = JSON.parse(
150699
- readFileSync18(join42(repoRoot, ".agents", "harness.manifest.json"), "utf8")
150832
+ readFileSync18(join43(repoRoot, ".agents", "harness.manifest.json"), "utf8")
150700
150833
  );
150701
150834
  return parseHarnessManifest(raw);
150702
150835
  }
150703
150836
  function loadClaudeHooks(repoRoot) {
150704
- const settingsPath = join42(repoRoot, ".claude", "settings.json");
150837
+ const settingsPath = join43(repoRoot, ".claude", "settings.json");
150705
150838
  if (!existsSync15(settingsPath)) return void 0;
150706
150839
  const settings = JSON.parse(readFileSync18(settingsPath, "utf8"));
150707
150840
  return settings.hooks;
150708
150841
  }
150709
150842
  function agentsMdExists(repoRoot) {
150710
- return existsSync15(join42(repoRoot, "AGENTS.md"));
150843
+ return existsSync15(join43(repoRoot, "AGENTS.md"));
150711
150844
  }
150712
150845
  function claudeCommandsExist(repoRoot) {
150713
150846
  const walk = (dir) => {
@@ -150719,22 +150852,22 @@ function claudeCommandsExist(repoRoot) {
150719
150852
  }
150720
150853
  for (const entry of entries) {
150721
150854
  if (entry.isFile() && entry.name.endsWith(".md")) return true;
150722
- if (entry.isDirectory() && walk(join42(dir, entry.name))) return true;
150855
+ if (entry.isDirectory() && walk(join43(dir, entry.name))) return true;
150723
150856
  }
150724
150857
  return false;
150725
150858
  };
150726
- return walk(join42(repoRoot, CLAUDE_COMMANDS_DIR));
150859
+ return walk(join43(repoRoot, CLAUDE_COMMANDS_DIR));
150727
150860
  }
150728
150861
  function scanClaudeOnlySkills(repoRoot, manifest) {
150729
150862
  const resolved = /* @__PURE__ */ new Map();
150730
150863
  for (const entry of manifest.claudeOnlySkills) {
150731
150864
  const defaultPath = `${CLAUDE_SKILLS_DIR}/${entry.name}`;
150732
150865
  const path66 = entry.path.trim() === "" ? defaultPath : entry.path;
150733
- const abs = join42(repoRoot, path66);
150866
+ const abs = join43(repoRoot, path66);
150734
150867
  let kind = "missing";
150735
150868
  const stats2 = lstatSync15(abs, { throwIfNoEntry: false });
150736
150869
  if (stats2?.isSymbolicLink()) kind = "symlink";
150737
- else if (stats2?.isDirectory() && existsSync15(join42(abs, "SKILL.md"))) kind = "directory";
150870
+ else if (stats2?.isDirectory() && existsSync15(join43(abs, "SKILL.md"))) kind = "directory";
150738
150871
  resolved.set(entry.name, { path: path66, kind, atProjectionTarget: path66 === defaultPath });
150739
150872
  }
150740
150873
  return resolved;
@@ -151082,7 +151215,7 @@ __export(adopt_owned_workspace_exports, {
151082
151215
  autoAdoptFromDisk: () => autoAdoptFromDisk
151083
151216
  });
151084
151217
  import { readFileSync as readFileSync19 } from "node:fs";
151085
- import { join as join43 } from "node:path";
151218
+ import { join as join44 } from "node:path";
151086
151219
  function autoAdoptPermitted() {
151087
151220
  return configManager.get("harness").autoAdopt;
151088
151221
  }
@@ -151090,7 +151223,7 @@ function autoAdoptFromDisk(dorkHome) {
151090
151223
  const fallback = UserConfigSchema.shape.harness.parse(void 0).autoAdopt;
151091
151224
  let raw;
151092
151225
  try {
151093
- raw = JSON.parse(readFileSync19(join43(dorkHome, "config.json"), "utf8"));
151226
+ raw = JSON.parse(readFileSync19(join44(dorkHome, "config.json"), "utf8"));
151094
151227
  } catch {
151095
151228
  return fallback;
151096
151229
  }
@@ -151192,7 +151325,7 @@ var init_adopt_owned_workspace = __esm({
151192
151325
 
151193
151326
  // ../../apps/server/src/services/harness/project-agent-workspace.ts
151194
151327
  import { existsSync as existsSync16, realpathSync as realpathSync11 } from "node:fs";
151195
- import { join as join44, relative as relative9, resolve as resolve8, isAbsolute as isAbsolute8 } from "node:path";
151328
+ import { join as join45, relative as relative9, resolve as resolve8, isAbsolute as isAbsolute8 } from "node:path";
151196
151329
  function canonicalize(p) {
151197
151330
  const absolute = resolve8(p);
151198
151331
  try {
@@ -151202,7 +151335,7 @@ function canonicalize(p) {
151202
151335
  }
151203
151336
  }
151204
151337
  function isAgentHome(dir, dorkHome) {
151205
- const rel = relative9(canonicalize(join44(dorkHome, "agents")), canonicalize(dir));
151338
+ const rel = relative9(canonicalize(join45(dorkHome, "agents")), canonicalize(dir));
151206
151339
  return rel !== "" && !rel.startsWith("..") && !isAbsolute8(rel);
151207
151340
  }
151208
151341
  var AGENT_SKILLS_DIR;
@@ -151214,7 +151347,7 @@ var init_project_agent_workspace = __esm({
151214
151347
  init_dork_home();
151215
151348
  init_logger();
151216
151349
  init_adopt_owned_workspace();
151217
- AGENT_SKILLS_DIR = join44(".agents", "skills");
151350
+ AGENT_SKILLS_DIR = join45(".agents", "skills");
151218
151351
  }
151219
151352
  });
151220
151353
 
@@ -151223,14 +151356,14 @@ var directory_ownership_exports = {};
151223
151356
  __export(directory_ownership_exports, {
151224
151357
  resolveDirectoryOwnership: () => resolveDirectoryOwnership
151225
151358
  });
151226
- import { join as join45, relative as relative10, sep as sep10 } from "node:path";
151359
+ import { join as join46, relative as relative10, sep as sep10 } from "node:path";
151227
151360
  function resolveDirectoryOwnership(dir, dorkHome) {
151228
151361
  if (isAgentHome(dir, dorkHome)) return "agent-home";
151229
151362
  if (isRoomWorktree(dir, dorkHome)) return "room-worktree";
151230
151363
  return "plain";
151231
151364
  }
151232
151365
  function isRoomWorktree(dir, dorkHome) {
151233
- const rel = relative10(canonicalize(join45(dorkHome, "rooms")), canonicalize(dir));
151366
+ const rel = relative10(canonicalize(join46(dorkHome, "rooms")), canonicalize(dir));
151234
151367
  if (rel === "" || rel.startsWith("..")) return false;
151235
151368
  const parts = rel.split(sep10);
151236
151369
  return parts.length === 3 && parts[1] === "worktrees";
@@ -151242,9 +151375,9 @@ var init_directory_ownership = __esm({
151242
151375
  });
151243
151376
 
151244
151377
  // src/harness-consent.ts
151245
- import { join as join46 } from "node:path";
151378
+ import { join as join47 } from "node:path";
151246
151379
  function configPathFor(dorkHome) {
151247
- return join46(dorkHome, "config.json");
151380
+ return join47(dorkHome, "config.json");
151248
151381
  }
151249
151382
  async function readStoredDecisions(dorkHome) {
151250
151383
  const { readHookDecisionsFromDisk: readHookDecisionsFromDisk2 } = await Promise.resolve().then(() => (init_hook_consent(), hook_consent_exports));
@@ -151405,11 +151538,11 @@ __export(global_scope_exports, {
151405
151538
  writeGlobalSharing: () => writeGlobalSharing
151406
151539
  });
151407
151540
  import { readFileSync as readFileSync20 } from "node:fs";
151408
- import { join as join47 } from "node:path";
151541
+ import { join as join48 } from "node:path";
151409
151542
  function readGlobalSharingFromDisk(dorkHome) {
151410
151543
  let text3;
151411
151544
  try {
151412
- text3 = readFileSync20(join47(dorkHome, "config.json"), "utf8");
151545
+ text3 = readFileSync20(join48(dorkHome, "config.json"), "utf8");
151413
151546
  } catch (err) {
151414
151547
  if (err.code === "ENOENT") return NOTHING_SHARED;
151415
151548
  return { ...NOTHING_SHARED, unreadable: describeReadFailure2(err) };
@@ -151438,7 +151571,7 @@ function boundaryConfigFromDisk(dorkHome) {
151438
151571
  getDot: (key) => {
151439
151572
  if (key !== "server.boundary") return void 0;
151440
151573
  try {
151441
- const raw = JSON.parse(readFileSync20(join47(dorkHome, "config.json"), "utf8"));
151574
+ const raw = JSON.parse(readFileSync20(join48(dorkHome, "config.json"), "utf8"));
151442
151575
  const server2 = raw?.server;
151443
151576
  return server2?.boundary;
151444
151577
  } catch {
@@ -151469,7 +151602,7 @@ function resolveGlobalScopeInputs(dorkHome, env6, config3) {
151469
151602
  roots: {
151470
151603
  dorkHome,
151471
151604
  ...AGENTS_SKILLS_DIR_READERS.some((harness) => enabled3.has(harness)) ? { agentsSkillsDir: agentsUserSkillsDir() } : {},
151472
- ...enabled3.has("claude-code") ? { claudeSkillsDir: join47(inheritedClaudeRoot(), "skills") } : {}
151605
+ ...enabled3.has("claude-code") ? { claudeSkillsDir: join48(inheritedClaudeRoot(), "skills") } : {}
151473
151606
  }
151474
151607
  };
151475
151608
  }
@@ -151479,7 +151612,7 @@ function globalRootsFor(dorkHome, harnesses, env6, config3) {
151479
151612
  return {
151480
151613
  dorkHome,
151481
151614
  ...AGENTS_SKILLS_DIR_READERS.some((harness) => enabled3.has(harness)) ? { agentsSkillsDir: agentsUserSkillsDir() } : {},
151482
- ...enabled3.has("claude-code") ? { claudeSkillsDir: join47(inheritedClaudeRoot(), "skills") } : {}
151615
+ ...enabled3.has("claude-code") ? { claudeSkillsDir: join48(inheritedClaudeRoot(), "skills") } : {}
151483
151616
  };
151484
151617
  }
151485
151618
  function writeGlobalSharing(harnesses, reason, now3 = /* @__PURE__ */ new Date()) {
@@ -151958,6 +152091,109 @@ var init_harness_sync_global = __esm({
151958
152091
  }
151959
152092
  });
151960
152093
 
152094
+ // src/harness-sync-claude-only.ts
152095
+ function formatClaudeOnly(claudeOnly, repoRoot) {
152096
+ const { root, plugins, personalHookCommands: hooks } = claudeOnly;
152097
+ const HEADING = "Installed in Claude Code only";
152098
+ if (claudeOnly.unreadable !== void 0) {
152099
+ return [
152100
+ "",
152101
+ HEADING,
152102
+ ` DorkOS could not read ${root}/settings.json, so it cannot tell you what Claude Code has. (${claudeOnly.unreadable})`,
152103
+ " Nothing else in this report is affected."
152104
+ ];
152105
+ }
152106
+ const notices = claudeOnly.unreadableParts.length + (claudeOnly.skippedEntries ?? 0);
152107
+ if (plugins.length === 0 && notices === 0) return [];
152108
+ const from = (plugin) => plugin.repo === void 0 ? ` - ${plugin.name} (from a source Claude Code calls "${plugin.marketplace}")` : ` - ${plugin.name} (from ${plugin.repo})`;
152109
+ const machineWide = plugins.filter((plugin) => plugin.settingsScope === "user");
152110
+ const inGroup = (offer) => machineWide.filter((plugin) => plugin.offer === offer);
152111
+ const lines = ["", HEADING, ` Read from ${root}`];
152112
+ if (plugins.length > 0) {
152113
+ lines.push(
152114
+ "",
152115
+ ` You turned on ${plugins.length} ${plugins.length === 1 ? "plugin" : "plugins"} in Claude Code. Your other agent tools cannot see them.`
152116
+ );
152117
+ }
152118
+ for (const part of claudeOnly.unreadableParts) {
152119
+ lines.push(
152120
+ "",
152121
+ ` DorkOS could not read the ${part} part of ${root}/settings.json; the plugin list is still right.`
152122
+ );
152123
+ }
152124
+ const skipped = claudeOnly.skippedEntries ?? 0;
152125
+ if (skipped > 0) {
152126
+ lines.push(
152127
+ "",
152128
+ 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.`
152129
+ );
152130
+ }
152131
+ if (plugins.length === 0) return lines;
152132
+ if (hooks > 0) {
152133
+ lines.push(
152134
+ "",
152135
+ ` Your personal Claude Code settings run ${hooks} ${hooks === 1 ? "command" : "commands"} automatically. Only Claude Code runs ${hooks === 1 ? "it" : "them"}.`
152136
+ );
152137
+ }
152138
+ if (claudeOnly.sourcesUnreadable !== void 0) {
152139
+ lines.push(
152140
+ "",
152141
+ ` DorkOS could not read its own list of sources (${claudeOnly.sourcesUnreadable}), so it cannot offer installs right now.`,
152142
+ "",
152143
+ " Turned on in Claude Code:",
152144
+ ...plugins.map(from),
152145
+ "",
152146
+ " Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
152147
+ " not be the whole story."
152148
+ );
152149
+ return lines;
152150
+ }
152151
+ const canInstall = inGroup("install");
152152
+ if (canInstall.length > 0) {
152153
+ lines.push(
152154
+ "",
152155
+ " DorkOS can install these for this project, so every agent tool here gets them:"
152156
+ );
152157
+ for (const plugin of canInstall) {
152158
+ lines.push(from(plugin), ` Run: dorkos install ${plugin.name} --project ${repoRoot}`);
152159
+ }
152160
+ lines.push(" DorkOS has to be running, and it asks you to approve the install first.");
152161
+ }
152162
+ const needsSource = inGroup("add-source-then-install");
152163
+ if (needsSource.length > 0) {
152164
+ lines.push("", " DorkOS does not have these sources yet:");
152165
+ for (const plugin of needsSource) {
152166
+ lines.push(
152167
+ from(plugin),
152168
+ ` Add the source first: dorkos marketplace add ${plugin.sourceUrl}`
152169
+ );
152170
+ }
152171
+ }
152172
+ const noPackage = inGroup("no-package");
152173
+ if (noPackage.length > 0) {
152174
+ lines.push("", " DorkOS has that source but nothing by that name:", ...noPackage.map(from));
152175
+ }
152176
+ const unknownSource = inGroup("unknown-source");
152177
+ if (unknownSource.length > 0) {
152178
+ lines.push("", " DorkOS cannot tell where these came from:", ...unknownSource.map(from));
152179
+ }
152180
+ const projectOnly = plugins.filter((plugin) => plugin.settingsScope === "project");
152181
+ if (projectOnly.length > 0) {
152182
+ lines.push("", " On for this project only:", ...projectOnly.map(from));
152183
+ }
152184
+ lines.push(
152185
+ "",
152186
+ " Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
152187
+ " not be the whole story."
152188
+ );
152189
+ return lines;
152190
+ }
152191
+ var init_harness_sync_claude_only = __esm({
152192
+ "src/harness-sync-claude-only.ts"() {
152193
+ "use strict";
152194
+ }
152195
+ });
152196
+
151961
152197
  // ../../apps/server/src/services/harness/project-with-consent.ts
151962
152198
  var project_with_consent_exports = {};
151963
152199
  __export(project_with_consent_exports, {
@@ -152089,11 +152325,11 @@ var init_project_with_consent = __esm({
152089
152325
  import { AsyncLocalStorage as AsyncLocalStorage7 } from "node:async_hooks";
152090
152326
  import { randomUUID as randomUUID3 } from "node:crypto";
152091
152327
  import { chmod, mkdir as mkdir3, rename, rm, writeFile as writeFile3 } from "node:fs/promises";
152092
- import { basename as basename8, dirname as dirname13, join as join48, resolve as resolve10 } from "node:path";
152328
+ import { basename as basename8, dirname as dirname13, join as join49, resolve as resolve10 } from "node:path";
152093
152329
  async function writeUnlocked(filePath, data, options) {
152094
152330
  const dir = dirname13(filePath);
152095
152331
  await mkdir3(dir, { recursive: true });
152096
- const tempPath = join48(dir, `.${basename8(filePath)}.${process.pid}.${randomUUID3()}.tmp`);
152332
+ const tempPath = join49(dir, `.${basename8(filePath)}.${process.pid}.${randomUUID3()}.tmp`);
152097
152333
  try {
152098
152334
  await writeFile3(tempPath, data, {
152099
152335
  encoding: "utf-8",
@@ -152258,7 +152494,7 @@ var init_git_tree = __esm({
152258
152494
 
152259
152495
  // ../../apps/server/src/services/marketplace/lib/directory-size.ts
152260
152496
  import { lstat as lstat3, readdir as readdir3 } from "node:fs/promises";
152261
- import { join as join49 } from "node:path";
152497
+ import { join as join50 } from "node:path";
152262
152498
  async function directorySize(root) {
152263
152499
  let total = 0;
152264
152500
  const walk = async (dir, depth) => {
@@ -152270,7 +152506,7 @@ async function directorySize(root) {
152270
152506
  return;
152271
152507
  }
152272
152508
  for (const entry of entries) {
152273
- const entryPath = join49(dir, entry.name);
152509
+ const entryPath = join50(dir, entry.name);
152274
152510
  if (entry.isDirectory()) {
152275
152511
  await walk(entryPath, depth + 1);
152276
152512
  } else if (entry.isFile()) {
@@ -152306,7 +152542,7 @@ import {
152306
152542
  stat as stat2,
152307
152543
  utimes
152308
152544
  } from "node:fs/promises";
152309
- import { join as join50 } from "node:path";
152545
+ import { join as join51 } from "node:path";
152310
152546
  function isFetchStatus(value) {
152311
152547
  if (typeof value !== "object" || value === null) return false;
152312
152548
  const v2 = value;
@@ -152398,7 +152634,7 @@ var init_marketplace_cache = __esm({
152398
152634
  entryWrittenListeners = /* @__PURE__ */ new Set();
152399
152635
  /** Compute the cache root path: `${dorkHome}/cache/marketplace`. */
152400
152636
  get cacheRoot() {
152401
- return join50(this.dorkHome, "cache", "marketplace");
152637
+ return join51(this.dorkHome, "cache", "marketplace");
152402
152638
  }
152403
152639
  /**
152404
152640
  * Read a cached marketplace.json document.
@@ -152429,8 +152665,8 @@ var init_marketplace_cache = __esm({
152429
152665
  if (err instanceof PathEscapeError) return null;
152430
152666
  throw err;
152431
152667
  }
152432
- const jsonPath = join50(dir, MARKETPLACE_FILENAME);
152433
- const stampPath = join50(dir, LAST_FETCHED_FILENAME);
152668
+ const jsonPath = join51(dir, MARKETPLACE_FILENAME);
152669
+ const stampPath = join51(dir, LAST_FETCHED_FILENAME);
152434
152670
  let raw;
152435
152671
  let stamp2;
152436
152672
  try {
@@ -152465,9 +152701,9 @@ var init_marketplace_cache = __esm({
152465
152701
  async writeMarketplace(marketplaceName, json3) {
152466
152702
  const dir = this.marketplaceDir(marketplaceName);
152467
152703
  await mkdir4(dir, { recursive: true });
152468
- await writeFile4(join50(dir, MARKETPLACE_FILENAME), `${JSON.stringify(json3, null, 2)}
152704
+ await writeFile4(join51(dir, MARKETPLACE_FILENAME), `${JSON.stringify(json3, null, 2)}
152469
152705
  `);
152470
- await writeFile4(join50(dir, LAST_FETCHED_FILENAME), (/* @__PURE__ */ new Date()).toISOString());
152706
+ await writeFile4(join51(dir, LAST_FETCHED_FILENAME), (/* @__PURE__ */ new Date()).toISOString());
152471
152707
  }
152472
152708
  /**
152473
152709
  * Record how an attempt to fetch a marketplace's listing went.
@@ -152486,7 +152722,7 @@ var init_marketplace_cache = __esm({
152486
152722
  * cache. Callers treat recording as best effort.
152487
152723
  */
152488
152724
  async writeFetchStatus(marketplaceName, status) {
152489
- const file2 = join50(this.marketplaceDir(marketplaceName), LAST_CHECK_FILENAME);
152725
+ const file2 = join51(this.marketplaceDir(marketplaceName), LAST_CHECK_FILENAME);
152490
152726
  await withFileLock(file2, async (write) => {
152491
152727
  const current3 = await this.readFetchStatus(marketplaceName);
152492
152728
  if (current3 && current3.startedAt > status.startedAt) return;
@@ -152506,8 +152742,8 @@ var init_marketplace_cache = __esm({
152506
152742
  try {
152507
152743
  const dir = this.marketplaceDir(marketplaceName);
152508
152744
  const [stamp2] = await Promise.all([
152509
- readFile3(join50(dir, LAST_FETCHED_FILENAME), "utf-8"),
152510
- access(join50(dir, MARKETPLACE_FILENAME))
152745
+ readFile3(join51(dir, LAST_FETCHED_FILENAME), "utf-8"),
152746
+ access(join51(dir, MARKETPLACE_FILENAME))
152511
152747
  ]);
152512
152748
  const at = new Date(stamp2.trim());
152513
152749
  return Number.isNaN(at.getTime()) ? null : at;
@@ -152525,7 +152761,7 @@ var init_marketplace_cache = __esm({
152525
152761
  async readFetchStatus(marketplaceName) {
152526
152762
  try {
152527
152763
  const raw = await readFile3(
152528
- join50(this.marketplaceDir(marketplaceName), LAST_CHECK_FILENAME),
152764
+ join51(this.marketplaceDir(marketplaceName), LAST_CHECK_FILENAME),
152529
152765
  "utf-8"
152530
152766
  );
152531
152767
  const parsed = JSON.parse(raw);
@@ -152637,8 +152873,8 @@ var init_marketplace_cache = __esm({
152637
152873
  * Idempotent. Not safe while a fetch is running in this cache.
152638
152874
  */
152639
152875
  async removeLeftovers() {
152640
- await rm2(join50(this.cacheRoot, LEGACY_PACKAGES_DIRNAME), { recursive: true, force: true });
152641
- const treesRoot = join50(this.cacheRoot, TREES_DIRNAME);
152876
+ await rm2(join51(this.cacheRoot, LEGACY_PACKAGES_DIRNAME), { recursive: true, force: true });
152877
+ const treesRoot = join51(this.cacheRoot, TREES_DIRNAME);
152642
152878
  let entries;
152643
152879
  try {
152644
152880
  entries = await readdir4(treesRoot);
@@ -152648,7 +152884,7 @@ var init_marketplace_cache = __esm({
152648
152884
  await Promise.all(
152649
152885
  entries.filter(
152650
152886
  (entry) => entry.startsWith(TEMP_FETCH_PREFIX) || entry.startsWith(TEMP_PRUNE_PREFIX)
152651
- ).map((entry) => rm2(join50(treesRoot, entry), { recursive: true, force: true }))
152887
+ ).map((entry) => rm2(join51(treesRoot, entry), { recursive: true, force: true }))
152652
152888
  );
152653
152889
  }
152654
152890
  /**
@@ -152659,9 +152895,9 @@ var init_marketplace_cache = __esm({
152659
152895
  * @internal
152660
152896
  */
152661
152897
  async fetchAndPromote(packageName, subpath, fetch2) {
152662
- const treesRoot = join50(this.cacheRoot, TREES_DIRNAME);
152898
+ const treesRoot = join51(this.cacheRoot, TREES_DIRNAME);
152663
152899
  await mkdir4(treesRoot, { recursive: true });
152664
- const tempDir = await mkdtemp(join50(treesRoot, TEMP_FETCH_PREFIX));
152900
+ const tempDir = await mkdtemp(join51(treesRoot, TEMP_FETCH_PREFIX));
152665
152901
  let commitSha;
152666
152902
  let finalPath;
152667
152903
  try {
@@ -152725,7 +152961,7 @@ var init_marketplace_cache = __esm({
152725
152961
  * removed (the others still are).
152726
152962
  */
152727
152963
  async removeUnused(keep) {
152728
- const treesRoot = join50(this.cacheRoot, TREES_DIRNAME);
152964
+ const treesRoot = join51(this.cacheRoot, TREES_DIRNAME);
152729
152965
  const entries = await this.listPackages();
152730
152966
  const kept = keep(entries);
152731
152967
  const result2 = { removed: [], freedBytes: 0, failed: [] };
@@ -152740,7 +152976,7 @@ var init_marketplace_cache = __esm({
152740
152976
  return null;
152741
152977
  }
152742
152978
  if (Date.now() - lastUsedMs < IN_USE_GRACE_MS) return null;
152743
- const target = join50(treesRoot, `${TEMP_PRUNE_PREFIX}${randomUUID4()}`);
152979
+ const target = join51(treesRoot, `${TEMP_PRUNE_PREFIX}${randomUUID4()}`);
152744
152980
  await rename2(entry.path, target);
152745
152981
  return target;
152746
152982
  });
@@ -152789,7 +153025,7 @@ var init_marketplace_cache = __esm({
152789
153025
  * Listing is not use: it stamps nothing.
152790
153026
  */
152791
153027
  async listPackages() {
152792
- const root = join50(this.cacheRoot, TREES_DIRNAME);
153028
+ const root = join51(this.cacheRoot, TREES_DIRNAME);
152793
153029
  let entries;
152794
153030
  try {
152795
153031
  entries = await readdir4(root);
@@ -152803,7 +153039,7 @@ var init_marketplace_cache = __esm({
152803
153039
  if (!parsed) {
152804
153040
  continue;
152805
153041
  }
152806
- const path66 = join50(root, entry);
153042
+ const path66 = join51(root, entry);
152807
153043
  try {
152808
153044
  const info2 = await stat2(path66);
152809
153045
  if (!info2.isDirectory()) {
@@ -152832,8 +153068,8 @@ var init_marketplace_cache = __esm({
152832
153068
  * the cache.
152833
153069
  */
152834
153070
  marketplaceDir(marketplaceName) {
152835
- const root = join50(this.cacheRoot, "marketplaces");
152836
- return assertContainedIn(root, join50(root, marketplaceName));
153071
+ const root = join51(this.cacheRoot, "marketplaces");
153072
+ return assertContainedIn(root, join51(root, marketplaceName));
152837
153073
  }
152838
153074
  /**
152839
153075
  * Compute the directory path for a content-addressable package tree:
@@ -152853,10 +153089,10 @@ var init_marketplace_cache = __esm({
152853
153089
  * the cache.
152854
153090
  */
152855
153091
  packageDir(packageName, commitSha, subpath) {
152856
- const root = join50(this.cacheRoot, TREES_DIRNAME);
153092
+ const root = join51(this.cacheRoot, TREES_DIRNAME);
152857
153093
  const digest2 = subpathDigest(subpath);
152858
153094
  const tree = digest2 === "" ? "" : `${SUBPATH_SEPARATOR}${digest2}`;
152859
- return assertContainedIn(root, join50(root, `${packageName}@${commitSha}${tree}`));
153095
+ return assertContainedIn(root, join51(root, `${packageName}@${commitSha}${tree}`));
152860
153096
  }
152861
153097
  };
152862
153098
  }
@@ -152917,7 +153153,7 @@ var init_source_url_policy = __esm({
152917
153153
 
152918
153154
  // ../../apps/server/src/services/marketplace/sources/marketplace-source-manager.ts
152919
153155
  import { readFile as readFile4 } from "node:fs/promises";
152920
- import { join as join51 } from "node:path";
153156
+ import { join as join52 } from "node:path";
152921
153157
  function buildDefaultSources() {
152922
153158
  const now3 = (/* @__PURE__ */ new Date()).toISOString();
152923
153159
  return [
@@ -152993,7 +153229,7 @@ var init_marketplace_source_manager = __esm({
152993
153229
  */
152994
153230
  constructor(dorkHome) {
152995
153231
  this.dorkHome = dorkHome;
152996
- this.filePath = join51(dorkHome, MARKETPLACES_FILENAME);
153232
+ this.filePath = join52(dorkHome, MARKETPLACES_FILENAME);
152997
153233
  }
152998
153234
  dorkHome;
152999
153235
  filePath;
@@ -153433,7 +153669,7 @@ __export(harness_sync_command_exports, {
153433
153669
  runHarnessSync: () => runHarnessSync
153434
153670
  });
153435
153671
  import { existsSync as existsSync18, readFileSync as readFileSync21 } from "node:fs";
153436
- import { join as join52 } from "node:path";
153672
+ import { join as join53 } from "node:path";
153437
153673
  import { parseArgs as parseArgs4 } from "node:util";
153438
153674
  function parseHarnessSyncArgs(rawArgs) {
153439
153675
  let parsed;
@@ -153560,7 +153796,7 @@ function reportCodexTrust(before, after) {
153560
153796
  }
153561
153797
  function reportClaudeSkillsRestart(existedBefore, repoRoot) {
153562
153798
  if (existedBefore) return;
153563
- if (!existsSync18(join52(repoRoot, CLAUDE_SKILLS_DIR))) return;
153799
+ if (!existsSync18(join53(repoRoot, CLAUDE_SKILLS_DIR))) return;
153564
153800
  const facts = skillsFactsFor("claude-code");
153565
153801
  console.log("");
153566
153802
  console.log(`Created ${CLAUDE_SKILLS_DIR}/, which is where Claude Code reads skills.`);
@@ -153571,107 +153807,11 @@ function reportClaudeSkillsRestart(existedBefore, repoRoot) {
153571
153807
  }
153572
153808
  function readIfPresent(repoRoot, rel) {
153573
153809
  try {
153574
- return readFileSync21(join52(repoRoot, rel), "utf8");
153810
+ return readFileSync21(join53(repoRoot, rel), "utf8");
153575
153811
  } catch {
153576
153812
  return void 0;
153577
153813
  }
153578
153814
  }
153579
- function formatClaudeOnly(claudeOnly, repoRoot) {
153580
- const { root, plugins, personalHookCommands: hooks } = claudeOnly;
153581
- const HEADING = "Installed in Claude Code only";
153582
- if (claudeOnly.unreadable !== void 0) {
153583
- return [
153584
- "",
153585
- HEADING,
153586
- ` DorkOS could not read ${root}/settings.json, so it cannot tell you what Claude Code has. (${claudeOnly.unreadable})`,
153587
- " Nothing else in this report is affected."
153588
- ];
153589
- }
153590
- const notices = claudeOnly.unreadableParts.length + (claudeOnly.skippedEntries ?? 0);
153591
- if (plugins.length === 0 && notices === 0) return [];
153592
- const from = (plugin) => plugin.repo === void 0 ? ` - ${plugin.name} (from a source Claude Code calls "${plugin.marketplace}")` : ` - ${plugin.name} (from ${plugin.repo})`;
153593
- const machineWide = plugins.filter((plugin) => plugin.settingsScope === "user");
153594
- const inGroup = (offer) => machineWide.filter((plugin) => plugin.offer === offer);
153595
- const lines = ["", HEADING, ` Read from ${root}`];
153596
- if (plugins.length > 0) {
153597
- lines.push(
153598
- "",
153599
- ` You turned on ${plugins.length} ${plugins.length === 1 ? "plugin" : "plugins"} in Claude Code. Your other agent tools cannot see them.`
153600
- );
153601
- }
153602
- for (const part of claudeOnly.unreadableParts) {
153603
- lines.push(
153604
- "",
153605
- ` DorkOS could not read the ${part} part of ${root}/settings.json; the plugin list is still right.`
153606
- );
153607
- }
153608
- const skipped = claudeOnly.skippedEntries ?? 0;
153609
- if (skipped > 0) {
153610
- lines.push(
153611
- "",
153612
- 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.`
153613
- );
153614
- }
153615
- if (plugins.length === 0) return lines;
153616
- if (hooks > 0) {
153617
- lines.push(
153618
- "",
153619
- ` Your personal Claude Code settings run ${hooks} ${hooks === 1 ? "command" : "commands"} automatically. Only Claude Code runs ${hooks === 1 ? "it" : "them"}.`
153620
- );
153621
- }
153622
- if (claudeOnly.sourcesUnreadable !== void 0) {
153623
- lines.push(
153624
- "",
153625
- ` DorkOS could not read its own list of sources (${claudeOnly.sourcesUnreadable}), so it cannot offer installs right now.`,
153626
- "",
153627
- " Turned on in Claude Code:",
153628
- ...plugins.map(from),
153629
- "",
153630
- " Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
153631
- " not be the whole story."
153632
- );
153633
- return lines;
153634
- }
153635
- const canInstall = inGroup("install");
153636
- if (canInstall.length > 0) {
153637
- lines.push(
153638
- "",
153639
- " DorkOS can install these for this project, so every agent tool here gets them:"
153640
- );
153641
- for (const plugin of canInstall) {
153642
- lines.push(from(plugin), ` Run: dorkos install ${plugin.name} --project ${repoRoot}`);
153643
- }
153644
- lines.push(" DorkOS has to be running, and it asks you to approve the install first.");
153645
- }
153646
- const needsSource = inGroup("add-source-then-install");
153647
- if (needsSource.length > 0) {
153648
- lines.push("", " DorkOS does not have these sources yet:");
153649
- for (const plugin of needsSource) {
153650
- lines.push(
153651
- from(plugin),
153652
- ` Add the source first: dorkos marketplace add ${plugin.sourceUrl}`
153653
- );
153654
- }
153655
- }
153656
- const noPackage = inGroup("no-package");
153657
- if (noPackage.length > 0) {
153658
- lines.push("", " DorkOS has that source but nothing by that name:", ...noPackage.map(from));
153659
- }
153660
- const unknownSource = inGroup("unknown-source");
153661
- if (unknownSource.length > 0) {
153662
- lines.push("", " DorkOS cannot tell where these came from:", ...unknownSource.map(from));
153663
- }
153664
- const projectOnly = plugins.filter((plugin) => plugin.settingsScope === "project");
153665
- if (projectOnly.length > 0) {
153666
- lines.push("", " On for this project only:", ...projectOnly.map(from));
153667
- }
153668
- lines.push(
153669
- "",
153670
- " Your company can also turn plugins on or off, in a settings file DorkOS cannot read. So this list may",
153671
- " not be the whole story."
153672
- );
153673
- return lines;
153674
- }
153675
153815
  function formatNotEnabled(plan) {
153676
153816
  if (plan.notEnabled.length === 0) return [];
153677
153817
  const enableWith = (harness) => `add it to ${HARNESS_MANIFEST_PATH} or run dorkos harness sync --fix --enable ${harness}`;
@@ -153898,7 +154038,7 @@ async function runHarnessSync(args) {
153898
154038
  }
153899
154039
  const repoRoot = process.cwd();
153900
154040
  const ourHarness = await readDorkosHarness(resolveDorkHome2());
153901
- if (!existsSync18(join52(repoRoot, HARNESS_MANIFEST_PATH))) {
154041
+ if (!existsSync18(join53(repoRoot, HARNESS_MANIFEST_PATH))) {
153902
154042
  if (!args.fix) {
153903
154043
  console.error(`No harness manifest in ${repoRoot}`);
153904
154044
  console.error(` looked for: ${HARNESS_MANIFEST_PATH}`);
@@ -153978,7 +154118,7 @@ async function runHarnessSync(args) {
153978
154118
  return { exitCode: strictExit(exitCode2, withheld, args.strict) };
153979
154119
  }
153980
154120
  const codexHooksBefore = readIfPresent(repoRoot, CODEX_HOOKS_TARGET);
153981
- const claudeSkillsExistedBefore = existsSync18(join52(repoRoot, CLAUDE_SKILLS_DIR));
154121
+ const claudeSkillsExistedBefore = existsSync18(join53(repoRoot, CLAUDE_SKILLS_DIR));
153982
154122
  const result2 = projectWithConsent2(repoRoot, {
153983
154123
  ...consentOpts,
153984
154124
  sweepOrphans: harnessFilter === void 0
@@ -154015,6 +154155,7 @@ var init_harness_sync_command = __esm({
154015
154155
  init_harness_consent();
154016
154156
  init_harness_sync_allow_hooks();
154017
154157
  init_harness_sync_global();
154158
+ init_harness_sync_claude_only();
154018
154159
  init_src5();
154019
154160
  SUMMARY_KINDS = ["native", "symlink", "scaffold", "generate", "merge"];
154020
154161
  USAGE_LINE5 = "Usage: dorkos harness sync [--check] [--fix] [--global] [--harness <id>] [--strict] [--allow-hooks <package>] [--enable <harness>] [--write-gitignore]";
@@ -154036,7 +154177,7 @@ __export(harness_adopt_command_exports, {
154036
154177
  runHarnessAdopt: () => runHarnessAdopt
154037
154178
  });
154038
154179
  import { existsSync as existsSync19 } from "node:fs";
154039
- import { join as join53, resolve as resolve11 } from "node:path";
154180
+ import { join as join54, resolve as resolve11 } from "node:path";
154040
154181
  import { parseArgs as parseArgs5 } from "node:util";
154041
154182
  function parseHarnessAdoptArgs(rawArgs) {
154042
154183
  let parsed;
@@ -154077,7 +154218,7 @@ ${USAGE_LINE6}`
154077
154218
  }
154078
154219
  async function runHarnessAdopt(args) {
154079
154220
  const repoRoot = args.project === void 0 ? process.cwd() : resolve11(process.cwd(), args.project);
154080
- if (!existsSync19(join53(repoRoot, HARNESS_MANIFEST_PATH))) {
154221
+ if (!existsSync19(join54(repoRoot, HARNESS_MANIFEST_PATH))) {
154081
154222
  console.error(`No harness manifest in ${repoRoot}`);
154082
154223
  console.error(` looked for: ${HARNESS_MANIFEST_PATH}`);
154083
154224
  console.error("");
@@ -157045,7 +157186,7 @@ import { spawn } from "node:child_process";
157045
157186
  import { randomBytes as randomBytes5, createHash as createHash7 } from "node:crypto";
157046
157187
  import { constants as constants6 } from "node:fs";
157047
157188
  import { lstat as lstat5, open as open4, realpath as realpath4 } from "node:fs/promises";
157048
- import { join as join54, resolve as resolve12, relative as relative11, isAbsolute as isAbsolute10, dirname as dirname14 } from "node:path";
157189
+ import { join as join55, resolve as resolve12, relative as relative11, isAbsolute as isAbsolute10, dirname as dirname14 } from "node:path";
157049
157190
  function requireFact2(value, code) {
157050
157191
  if (!value) throw new InstallationFailure(code);
157051
157192
  }
@@ -157326,10 +157467,10 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
157326
157467
  sameBinding(request.attempt.binding, slot.binding) && sameBinding(request.candidate.binding, slot.binding),
157327
157468
  "BINDING_MISMATCH"
157328
157469
  );
157329
- const attempt = join54(config3.cacheRoot, "attempts", slot.binding.attemptId);
157330
- const candidate = join54(config3.cacheRoot, "candidates", slot.binding.installationId);
157470
+ const attempt = join55(config3.cacheRoot, "attempts", slot.binding.attemptId);
157471
+ const candidate = join55(config3.cacheRoot, "candidates", slot.binding.installationId);
157331
157472
  requireFact2(
157332
- request.attempt.attemptRoot === attempt && request.attempt.homeRoot === join54(attempt, "home") && request.attempt.temporaryRoot === join54(attempt, "tmp") && request.candidate.candidateRoot === candidate && request.candidate.payloadRoot === join54(candidate, "payload"),
157473
+ 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"),
157333
157474
  "BINDING_MISMATCH"
157334
157475
  );
157335
157476
  await assertDirectory(attempt, request.attempt.identity);
@@ -157338,7 +157479,7 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
157338
157479
  await assertDirectory(request.candidate.payloadRoot);
157339
157480
  await assertDirectory(config3.libraryRoot);
157340
157481
  requireFact2(
157341
- request.library.distributionSHA256 === INSTALLATION_TARGET.libraryDistributionSHA256 && request.library.cli.path === join54(config3.libraryRoot, "cli.js") && request.library.browsersManifest.path === join54(config3.libraryRoot, "browsers.json") && request.library.files.length > 0 && request.library.files.length <= INSTALLATION_LIMITS.libraryEntries,
157482
+ 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,
157342
157483
  "LIBRARY_MISMATCH"
157343
157484
  );
157344
157485
  const paths2 = /* @__PURE__ */ new Set();
@@ -157373,9 +157514,9 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
157373
157514
  PATH: dirname14(config3.nodeExecutable) + ":/usr/bin:/bin",
157374
157515
  HOME: home2,
157375
157516
  TMPDIR: temporary,
157376
- XDG_CONFIG_HOME: join54(home2, ".config"),
157377
- XDG_CACHE_HOME: join54(home2, ".cache"),
157378
- XDG_DATA_HOME: join54(home2, ".local", "share"),
157517
+ XDG_CONFIG_HOME: join55(home2, ".config"),
157518
+ XDG_CACHE_HOME: join55(home2, ".cache"),
157519
+ XDG_DATA_HOME: join55(home2, ".local", "share"),
157379
157520
  NODE_DISABLE_COMPILE_CACHE: "1",
157380
157521
  ...payload ? { PLAYWRIGHT_BROWSERS_PATH: payload } : {},
157381
157522
  LC_ALL: "C",
@@ -157708,17 +157849,17 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
157708
157849
  },
157709
157850
  async runVersionProbe(request) {
157710
157851
  const slot = register("version-probe", request.binding, request.bounds);
157711
- const attempt = join54(config3.cacheRoot, "attempts", slot.binding.attemptId);
157852
+ const attempt = join55(config3.cacheRoot, "attempts", slot.binding.attemptId);
157712
157853
  return execute(
157713
157854
  slot,
157714
157855
  request,
157715
157856
  request.executable.path,
157716
157857
  ["--version"],
157717
157858
  request.cwd,
157718
- environment(join54(attempt, "home"), join54(attempt, "tmp")),
157859
+ environment(join55(attempt, "home"), join55(attempt, "tmp")),
157719
157860
  async () => {
157720
157861
  requireFact2(
157721
- request.cwd === attempt && request.executable.path === join54(
157862
+ request.cwd === attempt && request.executable.path === join55(
157722
157863
  config3.cacheRoot,
157723
157864
  "candidates",
157724
157865
  slot.binding.installationId,
@@ -157727,8 +157868,8 @@ function createInstallationJobs(configuration, options = { ownerKind: "controlle
157727
157868
  "BINDING_MISMATCH"
157728
157869
  );
157729
157870
  await assertDirectory(attempt);
157730
- await assertDirectory(join54(attempt, "home"));
157731
- await assertDirectory(join54(attempt, "tmp"));
157871
+ await assertDirectory(join55(attempt, "home"));
157872
+ await assertDirectory(join55(attempt, "tmp"));
157732
157873
  await sourceIntake(slot);
157733
157874
  await readPinned(
157734
157875
  slot,
@@ -157791,7 +157932,7 @@ var init_status2 = __esm({
157791
157932
  });
157792
157933
 
157793
157934
  // ../browser/src/runtime/installation/transaction.ts
157794
- import { join as join55 } from "node:path";
157935
+ import { join as join56 } from "node:path";
157795
157936
  function require2(value, code) {
157796
157937
  if (!value) throw new InstallationFailure(code);
157797
157938
  }
@@ -157855,7 +157996,7 @@ function createInstallationTransaction(configuration, dependencies, generation3)
157855
157996
  require2(facts.cleanupCauses.length === 0 && !facts.stopRequested && facts.exitObserved && facts.closeObserved, "CUSTODY_UNCERTAIN");
157856
157997
  require2(facts.exitCode === 0 && facts.signal === null, role2 === "official-install" ? "INSTALLER_FAILED" : "VERIFIER_FAILED");
157857
157998
  const birth = facts.birth;
157858
- require2(birth && sameBinding(birth.binding, expected) && birth.role === role2 && birth.jobId === facts.jobId && birth.executable === config3.nodeExecutable && canonicalDigest(birth.bounds) === canonicalDigest(bounds) && birth.cwd === join55(config3.cacheRoot, "attempts", expected.attemptId) && Number.isSafeInteger(birth.pid) && birth.pid > 0 && canonicalDigest(birth.argv) === canonicalDigest(argv2), "BINDING_MISMATCH");
157999
+ 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");
157859
158000
  for (const [stream, bytes] of [
157860
158001
  [facts.stdout, run.stdout],
157861
158002
  [facts.stderr, run.stderr]
@@ -157868,11 +158009,11 @@ function createInstallationTransaction(configuration, dependencies, generation3)
157868
158009
  };
157869
158010
  const validateLibrary = (library) => {
157870
158011
  require2(library.distributionSHA256 === INSTALLATION_TARGET.libraryDistributionSHA256, "LIBRARY_MISMATCH");
157871
- require2(library.cli.path === join55(config3.libraryRoot, "cli.js") && library.browsersManifest.path === join55(config3.libraryRoot, "browsers.json"), "LIBRARY_MISMATCH");
158012
+ require2(library.cli.path === join56(config3.libraryRoot, "cli.js") && library.browsersManifest.path === join56(config3.libraryRoot, "browsers.json"), "LIBRARY_MISMATCH");
157872
158013
  require2(library.files.length > 0 && library.files.length <= INSTALLATION_LIMITS.libraryEntries, "LIBRARY_MISMATCH");
157873
158014
  };
157874
158015
  const validateCandidate = (candidate, expected) => {
157875
- require2(candidate.installationId === expected.installationId && candidate.candidateRoot === join55(config3.cacheRoot, "candidates", expected.installationId) && candidate.payloadRoot === join55(candidate.candidateRoot, "payload") && candidate.executable.path === join55(candidate.candidateRoot, INSTALLATION_TARGET.executablePath), "OWNERSHIP_UNCERTAIN");
158016
+ 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");
157876
158017
  FileIdentitySchema.parse(candidate.executable.identity);
157877
158018
  DigestSchema.parse(candidate.executable.sha256);
157878
158019
  DigestSchema.parse(candidate.inventoryDigest);
@@ -158059,7 +158200,7 @@ function createInstallationTransaction(configuration, dependencies, generation3)
158059
158200
  recordBytes(journal, INSTALLATION_LIMITS.journalBytes);
158060
158201
  check4(bounds, options.signal);
158061
158202
  const written = await fs40.writeReuseJournal(reservation, attempt, journal);
158062
- require2(written.path === join55(attempt.attemptRoot, "reuse.json") && written.sha256 === sha2562(recordBytes(journal, INSTALLATION_LIMITS.journalBytes)), "OWNERSHIP_UNCERTAIN");
158203
+ require2(written.path === join56(attempt.attemptRoot, "reuse.json") && written.sha256 === sha2562(recordBytes(journal, INSTALLATION_LIMITS.journalBytes)), "OWNERSHIP_UNCERTAIN");
158063
158204
  const unchanged = await fs40.inspectExisting({ signal: options.signal });
158064
158205
  require2(canonicalDigest(unchanged.current) === canonicalDigest(reserved.current) && canonicalDigest(unchanged.installation) === canonicalDigest(reserved.installation), "ROOT_CHANGED");
158065
158206
  journalDigest = written.sha256;
@@ -158167,7 +158308,7 @@ import { createHash as createHash8 } from "node:crypto";
158167
158308
  import { constants as constants7 } from "node:fs";
158168
158309
  import { lstat as lstat6, open as open5, realpath as realpath5 } from "node:fs/promises";
158169
158310
  import { createRequire as createRequire3 } from "node:module";
158170
- import { dirname as dirname15, join as join56, resolve as resolve13 } from "node:path";
158311
+ import { dirname as dirname15, join as join57, resolve as resolve13 } from "node:path";
158171
158312
  import { fileURLToPath as fileURLToPath6 } from "node:url";
158172
158313
  function sameFile(a2, b2) {
158173
158314
  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;
@@ -158228,7 +158369,7 @@ async function inspectFile(filename, cap, retainBytes = false) {
158228
158369
  async function packageRoot(controller) {
158229
158370
  let directory = dirname15(controller);
158230
158371
  while (true) {
158231
- const candidate = join56(directory, "package.json");
158372
+ const candidate = join57(directory, "package.json");
158232
158373
  let named3 = null;
158233
158374
  try {
158234
158375
  named3 = await lstat6(candidate, { bigint: true });
@@ -158248,10 +158389,10 @@ async function packageRoot(controller) {
158248
158389
  async function resolveInstalledRuntimeConfiguration(controllerURL, dataDirectory) {
158249
158390
  const controllerEntry = await realpath5(fileURLToPath6(controllerURL));
158250
158391
  const root = await packageRoot(controllerEntry);
158251
- if (controllerEntry !== join56(root, "dist/bin/cli.js"))
158392
+ if (controllerEntry !== join57(root, "dist/bin/cli.js"))
158252
158393
  throw new Error("The managed browser needs the packaged DorkOS command.");
158253
- const verifierEntry = join56(root, BROWSER_VERIFIER_ASSET);
158254
- const sourceManifestPath = join56(root, BROWSER_SOURCE_MANIFEST);
158394
+ const verifierEntry = join57(root, BROWSER_VERIFIER_ASSET);
158395
+ const sourceManifestPath = join57(root, BROWSER_SOURCE_MANIFEST);
158255
158396
  const nodeExecutable = await realpath5(process.execPath);
158256
158397
  const node2 = await inspectFile(nodeExecutable, 268435456);
158257
158398
  const controller = await inspectFile(controllerEntry, INSTALLATION_LIMITS.controllerBytes);
@@ -162586,7 +162727,7 @@ var init_provider_process = __esm({
162586
162727
  // src/commands/community-deploy/runtime/github-release-source.ts
162587
162728
  import { mkdtemp as mkdtemp2, rm as rm3, writeFile as writeFile5 } from "node:fs/promises";
162588
162729
  import { tmpdir as tmpdir3 } from "node:os";
162589
- import { join as join57 } from "node:path";
162730
+ import { join as join58 } from "node:path";
162590
162731
  function createGitHubCommunityReleaseSource(options) {
162591
162732
  const verify = async (subject, trusted) => {
162592
162733
  await runProviderCommand({
@@ -162632,8 +162773,8 @@ function createGitHubCommunityReleaseSource(options) {
162632
162773
  return result2.value;
162633
162774
  },
162634
162775
  verifyManifest: async (bytes, trusted) => {
162635
- const directory = await mkdtemp2(join57(tmpdir3(), "dorkos-community-manifest-"));
162636
- const path66 = join57(directory, "manifest.json");
162776
+ const directory = await mkdtemp2(join58(tmpdir3(), "dorkos-community-manifest-"));
162777
+ const path66 = join58(directory, "manifest.json");
162637
162778
  try {
162638
162779
  await writeFile5(path66, bytes, { mode: 384, flag: "wx" });
162639
162780
  return await verify(path66, trusted);
@@ -165387,7 +165528,7 @@ var init_community_release_manifest = __esm({
165387
165528
  // src/commands/community-deploy/fly-config.ts
165388
165529
  import { mkdtemp as mkdtemp3, rm as rm4, writeFile as writeFile6 } from "node:fs/promises";
165389
165530
  import { tmpdir as tmpdir4 } from "node:os";
165390
- import { join as join58 } from "node:path";
165531
+ import { join as join59 } from "node:path";
165391
165532
  function tomlString(value) {
165392
165533
  return JSON.stringify(value);
165393
165534
  }
@@ -165440,8 +165581,8 @@ kill_timeout = "30s"
165440
165581
  `;
165441
165582
  }
165442
165583
  async function withCommunityFlyConfig(plan, consumer) {
165443
- const directory = await mkdtemp3(join58(tmpdir4(), "dorkos-community-fly-"));
165444
- const path66 = join58(directory, "fly.toml");
165584
+ const directory = await mkdtemp3(join59(tmpdir4(), "dorkos-community-fly-"));
165585
+ const path66 = join59(directory, "fly.toml");
165445
165586
  try {
165446
165587
  await writeFile6(path66, renderCommunityFlyConfig(plan), { mode: 384, flag: "wx" });
165447
165588
  return await consumer(path66);
@@ -165884,7 +166025,7 @@ var init_default_deploy = __esm({
165884
166025
  // src/commands/community-deploy/runtime/default-owner.ts
165885
166026
  import { access as access2, constants as constants9, stat as stat4 } from "node:fs/promises";
165886
166027
  import { platform as platform2 } from "node:os";
165887
- import { delimiter, join as join59 } from "node:path";
166028
+ import { delimiter, join as join60 } from "node:path";
165888
166029
  import { createInterface as createInterface4 } from "node:readline/promises";
165889
166030
  import { stdin as stdin2, stdout as stdout2 } from "node:process";
165890
166031
  async function ask(question, signal) {
@@ -165917,7 +166058,7 @@ function handoffCommands(system) {
165917
166058
  async function executableOnPath(executable, path66) {
165918
166059
  for (const directory of path66.split(delimiter).filter(Boolean)) {
165919
166060
  try {
165920
- await access2(join59(directory, executable), constants9.X_OK);
166061
+ await access2(join60(directory, executable), constants9.X_OK);
165921
166062
  return true;
165922
166063
  } catch {
165923
166064
  }
@@ -165949,7 +166090,7 @@ async function assertOwnerHandoffPrerequisites(env6, system = platform2()) {
165949
166090
  `Owner handoff needs an active Wayland clipboard session before setup can create resources. See ${FLY_GUIDE_URL}`
165950
166091
  );
165951
166092
  }
165952
- const socketAvailable = await stat4(join59(runtimeDirectory, display)).then(
166093
+ const socketAvailable = await stat4(join60(runtimeDirectory, display)).then(
165953
166094
  (value) => value.isSocket(),
165954
166095
  () => false
165955
166096
  );
@@ -166134,10 +166275,10 @@ import {
166134
166275
  rm as rm5,
166135
166276
  unlink as unlink2
166136
166277
  } from "node:fs/promises";
166137
- import { basename as basename9, dirname as dirname16, join as join60 } from "node:path";
166278
+ import { basename as basename9, dirname as dirname16, join as join61 } from "node:path";
166138
166279
  function launchJournalPath(dorkHome, runId) {
166139
166280
  const safeRunId = external_exports.uuid().parse(runId);
166140
- return join60(dorkHome, "launches", "community", `${safeRunId}.json`);
166281
+ return join61(dorkHome, "launches", "community", `${safeRunId}.json`);
166141
166282
  }
166142
166283
  async function rejectSymlink(path66) {
166143
166284
  try {
@@ -166174,7 +166315,7 @@ async function exists2(path66) {
166174
166315
  }
166175
166316
  async function writeDurably(filePath, data) {
166176
166317
  const directory = dirname16(filePath);
166177
- const temporary = join60(
166318
+ const temporary = join61(
166178
166319
  directory,
166179
166320
  `.${basename9(filePath)}.${process.pid}.${randomUUID6()}.durable`
166180
166321
  );
@@ -166271,7 +166412,7 @@ async function readLaunchJournal(filePath) {
166271
166412
  }
166272
166413
  }
166273
166414
  async function listIncompleteLaunchJournals(dorkHome) {
166274
- const directory = join60(dorkHome, "launches", "community");
166415
+ const directory = join61(dorkHome, "launches", "community");
166275
166416
  await rejectSymlink(dirname16(directory));
166276
166417
  await rejectSymlink(directory);
166277
166418
  let filenames;
@@ -176581,7 +176722,7 @@ if (process.argv[2] === "community") {
176581
176722
  );
176582
176723
  Object.assign(childEnv, credentialEnv.pickCommunityCredentialEnv(rawProcessEnv));
176583
176724
  const exitCode = await dispatcher.runCommunityDispatcher(process.argv.slice(3), {
176584
- cliVersion: "0.120.0",
176725
+ cliVersion: "0.122.0",
176585
176726
  dorkHome: DORK_HOME,
176586
176727
  processEnv: childEnv,
176587
176728
  parseRelease: (bytes) => releaseContract.parseCompatibleCommunityReleaseManifest(
@@ -176599,7 +176740,7 @@ if (process.argv[2] === "community") {
176599
176740
  process.exit(1);
176600
176741
  }
176601
176742
  }
176602
- var cliErrorReporter = initCliErrorReporting({ dorkHome: DORK_HOME, version: "0.120.0" });
176743
+ var cliErrorReporter = initCliErrorReporting({ dorkHome: DORK_HOME, version: "0.122.0" });
176603
176744
  var uninstallCliErrorHandlers = cliErrorReporter ? installCliErrorHandlers(cliErrorReporter) : void 0;
176604
176745
  if (process.argv[2] === "doctor") {
176605
176746
  process.env.DORK_HOME = DORK_HOME;
@@ -176609,7 +176750,7 @@ if (process.argv[2] === "doctor") {
176609
176750
  if (process.argv[2] === "feedback") {
176610
176751
  process.env.DORK_HOME = DORK_HOME;
176611
176752
  const { runFeedback: runFeedback2 } = await Promise.resolve().then(() => (init_feedback2(), feedback_exports));
176612
- process.exit(await runFeedback2(DORK_HOME, "0.120.0", process.argv.slice(3)));
176753
+ process.exit(await runFeedback2(DORK_HOME, "0.122.0", process.argv.slice(3)));
176613
176754
  }
176614
176755
  if (process.argv[2] === "auth") {
176615
176756
  process.env.DORK_HOME = DORK_HOME;
@@ -176708,7 +176849,7 @@ if (process.argv[2] === "agent" || process.argv[2] === "task" || process.argv[2]
176708
176849
  }
176709
176850
  }
176710
176851
  const { runVersionDispatcher: runVersionDispatcher2 } = await Promise.resolve().then(() => (init_version5(), version_exports));
176711
- process.exit(await runVersionDispatcher2("0.120.0", DORK_HOME, subArgs));
176852
+ process.exit(await runVersionDispatcher2("0.122.0", DORK_HOME, subArgs));
176712
176853
  }
176713
176854
  var { values, positionals } = parseCliArgs();
176714
176855
  if (positionals[0] && !knownCommands.has(positionals[0])) {
@@ -176802,14 +176943,14 @@ Examples:
176802
176943
  process.exit(0);
176803
176944
  }
176804
176945
  if (values.version) {
176805
- console.log("0.120.0");
176946
+ console.log("0.122.0");
176806
176947
  process.exit(0);
176807
176948
  }
176808
176949
  if (values["post-install-check"]) {
176809
176950
  const claudeFound = checkClaude();
176810
176951
  const coreExtensionsFound = checkCoreExtensions();
176811
176952
  const extensionsCompile = await checkExtensionCompilation();
176812
- console.log(`dorkos ${"0.120.0"}`);
176953
+ console.log(`dorkos ${"0.122.0"}`);
176813
176954
  if (!coreExtensionsFound) {
176814
176955
  console.log("Installation incomplete \u2014 bundled core extensions are missing.");
176815
176956
  }
@@ -176957,7 +177098,7 @@ if (fs39.existsSync(envPath)) {
176957
177098
  }
176958
177099
  uninstallCliErrorHandlers?.();
176959
177100
  process.env.DORKOS_CLI_ENTRYPOINT = fileURLToPath7(import.meta.url);
176960
- process.env.DORKOS_CLI_VERSION = "0.120.0";
177101
+ process.env.DORKOS_CLI_VERSION = "0.122.0";
176961
177102
  var server;
176962
177103
  try {
176963
177104
  server = await import("../server/index.js");
@@ -176982,7 +177123,7 @@ var ansiReset = "\x1B[0m";
176982
177123
  console.log("");
176983
177124
  console.log(`${purple}${logo}${ansiReset}`);
176984
177125
  console.log("");
176985
- console.log(` DorkOS v${"0.120.0"}`);
177126
+ console.log(` DorkOS v${"0.122.0"}`);
176986
177127
  console.log(` Local: ${link(localUrl, localUrl)}`);
176987
177128
  var nets = networkInterfaces();
176988
177129
  var networkUrl = null;
@@ -177008,9 +177149,9 @@ if (shouldOpenBrowser && process.stdin.isTTY) {
177008
177149
  const openCmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
177009
177150
  exec(`${openCmd} ${localUrl}`);
177010
177151
  }
177011
- checkForUpdate("0.120.0").then((latestVersion) => {
177152
+ checkForUpdate("0.122.0").then((latestVersion) => {
177012
177153
  if (latestVersion) {
177013
- const msg = `Update available: ${"0.120.0"} \u2192 ${latestVersion}`;
177154
+ const msg = `Update available: ${"0.122.0"} \u2192 ${latestVersion}`;
177014
177155
  const cmd = "Run npm install -g dorkos@latest to update";
177015
177156
  const width = Math.max(msg.length, cmd.length) + 6;
177016
177157
  const pad2 = (s2) => `\u2502 ${s2}${" ".repeat(width - s2.length - 6)} \u2502`;