ryco-cli 0.1.26 → 0.1.27

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 (490) hide show
  1. package/dist/{AcpAdapter-CadxcdZV.cjs → AcpAdapter-CZc_JW7_.cjs} +5 -5
  2. package/dist/{AcpAdapter-BemMQNbj.mjs → AcpAdapter-DoRyx18Q.mjs} +5 -5
  3. package/dist/{AcpNativeLogging-BsbZRRD7.mjs → AcpNativeLogging-FscLjPYB.mjs} +2 -2
  4. package/dist/{AcpNativeLogging-DZPZNoju.cjs → AcpNativeLogging-WQZ0Jm4p.cjs} +1 -1
  5. package/dist/{AcpRegistryDriver-BpXCjh9I.mjs → AcpRegistryDriver-1FCrMtNw.mjs} +4 -4
  6. package/dist/{AcpRegistryDriver-BfCPf8FX.cjs → AcpRegistryDriver-BmdM0rgN.cjs} +5 -5
  7. package/dist/{AzureDevOpsSourceControlProvider-BcQO_CyW.mjs → AzureDevOpsSourceControlProvider-9bLYTK0M.mjs} +2 -3
  8. package/dist/{AzureDevOpsSourceControlProvider-B9N_8NJg.cjs → AzureDevOpsSourceControlProvider-DW5RKUeo.cjs} +6 -7
  9. package/dist/{BitbucketSourceControlProvider-C9WuwvY2.cjs → BitbucketSourceControlProvider-CMHRxVsd.cjs} +6 -7
  10. package/dist/{BitbucketSourceControlProvider-BTUY2ZT8.mjs → BitbucketSourceControlProvider-Cl3sSLIx.mjs} +2 -3
  11. package/dist/{BunPTY-DdnqQAdw.mjs → BunPTY-Dfgo5uCn.mjs} +1 -1
  12. package/dist/{ClaudeDriver-Csnp78qR.mjs → ClaudeDriver-B3h2ood6.mjs} +132 -30
  13. package/dist/{ClaudeDriver-BSTxNNGO.cjs → ClaudeDriver-CyPp-Fs3.cjs} +148 -45
  14. package/dist/{CodexDriver-BK4HVNV4.cjs → CodexDriver-BP3EtJ0S.cjs} +14 -14
  15. package/dist/{CodexDriver-fwcV84hX.mjs → CodexDriver-CN6idmnS.mjs} +6 -6
  16. package/dist/{CodexTextGeneration-Y2GSS7f1.cjs → CodexTextGeneration-B1kQOBKx.cjs} +8 -8
  17. package/dist/{CodexTextGeneration-_4aT5BHa.mjs → CodexTextGeneration-zuVszBVZ.mjs} +5 -5
  18. package/dist/{CopilotDriver-B12ZJ-L_.mjs → CopilotDriver-BYrkdbjf.mjs} +7 -7
  19. package/dist/{CopilotDriver-C7IyIwVW.cjs → CopilotDriver-DXAV2YFZ.cjs} +16 -16
  20. package/dist/{CursorDriver-C_p0v-ul.mjs → CursorDriver-BhxUUcPd.mjs} +7 -7
  21. package/dist/{CursorDriver-BWmCfJ-w.cjs → CursorDriver-DqFJ48VM.cjs} +15 -15
  22. package/dist/{ForgejoSourceControlProvider-DTRrllIH.cjs → ForgejoSourceControlProvider-BaX8QACC.cjs} +6 -7
  23. package/dist/{ForgejoSourceControlProvider-DmOGJEaJ.mjs → ForgejoSourceControlProvider-Dd70jIKU.mjs} +2 -3
  24. package/dist/{GitHubSourceControlProvider-sQGcwnr3.mjs → GitHubSourceControlProvider-C7BTtssl.mjs} +2 -3
  25. package/dist/{GitHubSourceControlProvider-D-YV8WP6.cjs → GitHubSourceControlProvider-bB3VvbjC.cjs} +4 -5
  26. package/dist/{GitLabSourceControlProvider-kKYYnpER.cjs → GitLabSourceControlProvider-CpPjVL2v.cjs} +6 -7
  27. package/dist/{GitLabSourceControlProvider-mIl-K-4F.mjs → GitLabSourceControlProvider-DtYBP_yY.mjs} +2 -3
  28. package/dist/{GrokDriver-BFOniP_K.cjs → GrokDriver-B66NTem3.cjs} +9 -9
  29. package/dist/{GrokDriver-CDcWkiAi.mjs → GrokDriver-DM1NdZRk.mjs} +6 -6
  30. package/dist/{NodePTY-DArvQ9bX.mjs → NodePTY-BtRL0A34.mjs} +1 -1
  31. package/dist/{OpenCodeDriver-CnWJHyDJ.mjs → OpenCodeDriver-DH41ibjc.mjs} +7 -7
  32. package/dist/{OpenCodeDriver-CckbFEQJ.cjs → OpenCodeDriver-DeSH_rjs.cjs} +17 -17
  33. package/dist/{SideQuestionIsolation-5eGFRW0t.mjs → SideQuestionIsolation-Dn-HWCtI.mjs} +1 -1
  34. package/dist/{SideQuestionIsolation-DvVKZWxi.cjs → SideQuestionIsolation-pW7UQKVD.cjs} +1 -1
  35. package/dist/bin.cjs +11516 -9316
  36. package/dist/bin.mjs +11166 -8960
  37. package/dist/client/assets/AccountSettings-CEf7oALI.js +1 -0
  38. package/dist/client/assets/AiFocusSettings-Bx0qzXZb.js +1 -0
  39. package/dist/client/assets/AnimatedHeight-BdPmCa-2.js +1 -0
  40. package/dist/client/assets/AppearanceSettings-dR9CQ8NA.js +1 -0
  41. package/dist/client/assets/BranchToolbar.logic-h0d4Ciue.js +3 -0
  42. package/dist/client/assets/BrowserPanel-D8lPv8fb.js +1 -0
  43. package/dist/client/assets/ChatRightPanel-Dn-7Xvyc.js +199 -0
  44. package/dist/client/assets/ChatThreadRouteView-DVBC81zl.js +1 -0
  45. package/dist/client/assets/CommandPaletteDialog-BNYMM9Z4.js +1 -0
  46. package/dist/client/assets/CompositeRoot-C2w3pPeh.js +1 -0
  47. package/dist/client/assets/ComputerUseSettings-Cs_Owo6-.js +1 -0
  48. package/dist/client/assets/ConnectionsSettings-DEi2p0zo.js +7 -0
  49. package/dist/client/assets/ContextHandoffEndpointLabel-DS0hRX6s.js +4 -0
  50. package/dist/client/assets/DiagnosticsSettings-YBPSnfRV.js +2 -0
  51. package/dist/client/assets/DialogHandle-4vx7sbjo.js +1 -0
  52. package/dist/client/assets/DialogPopup-B0PxwE99.js +1 -0
  53. package/dist/client/assets/DialogRoot-m4XA9S7t.js +1 -0
  54. package/dist/client/assets/DialogTitle-BYcCdrqC.js +1 -0
  55. package/dist/client/assets/DialogTrigger-DJWPHhX_.js +1 -0
  56. package/dist/client/assets/DialogViewport-UVYw-6p8.js +1 -0
  57. package/dist/client/assets/DraftChatThreadRouteView-BSqiqymo.js +1 -0
  58. package/dist/client/assets/{ExternalIdentityWeb.logic-CrcNfdHK.js → ExternalIdentityWeb.logic-BcfjLeSk.js} +1 -1
  59. package/dist/client/assets/{GlassSurface-CBIEgwt1.js → GlassSurface-YfHTds9q.js} +1 -1
  60. package/dist/client/assets/HostedConnectionControls-zCFvpOtX.js +1 -0
  61. package/dist/client/assets/HostedHubRoot-Dhp_vsh3.js +2 -0
  62. package/dist/client/assets/HostedNativeAuthorizationRoute-Dk-X6kyE.js +2 -0
  63. package/dist/client/assets/HostedNodeRenameDialog-BPmZUTA0.js +1 -0
  64. package/dist/client/assets/HostedRelayTrustNotice-9UBK7nWp.js +1 -0
  65. package/dist/client/assets/IntegrationsSettingsPanel-Dx_DA-GV.js +2 -0
  66. package/dist/client/assets/KeybindingsSettings-CXhTidkh.js +7 -0
  67. package/dist/client/assets/LazyBrowserPanel-B7krhylG.js +2 -0
  68. package/dist/client/assets/McpServersSettings-DaSVryrF.js +6 -0
  69. package/dist/client/assets/MobileSheet-CJK9LUkP.js +1 -0
  70. package/dist/client/assets/NodeSecuritySettings-D8-nbjl0.js +1 -0
  71. package/dist/client/assets/NullStore-B1qVh9r1.js +1 -0
  72. package/dist/client/assets/OnboardingDialog-BouStRFq.js +1 -0
  73. package/dist/client/assets/OpinionatedPluginsSettings-Dell0ad6.js +1 -0
  74. package/dist/client/assets/{PdfAttachmentPreview-BCMO9OHD.js → PdfAttachmentPreview-Cxmy8p4o.js} +3 -3
  75. package/dist/client/assets/PhoneGetAppInterstitial-DApTgg3Y.js +1 -0
  76. package/dist/client/assets/PhoneHome-Clzp8GJr.js +1 -0
  77. package/dist/client/assets/PhoneSettingsSurface-ByGQx_24.js +2 -0
  78. package/dist/client/assets/ProvidersSettingsPanel-BqIyPjmD.js +1 -0
  79. package/dist/client/assets/QuitShortcutFeedback-fpDQ3cUQ.js +1 -0
  80. package/dist/client/assets/RedactedSensitiveText-CcYd2px8.js +1 -0
  81. package/dist/client/assets/RootAppShell-CWZbIY7q.js +7 -0
  82. package/dist/client/assets/Separator-phTJr0Qx.js +1 -0
  83. package/dist/client/assets/SettingsDialog-TJfJzHN9.js +2 -0
  84. package/dist/client/assets/SettingsPanels-DWkzFTVO.js +3 -0
  85. package/dist/client/assets/SettingsPanels.editor-Cml3ZnL4.js +1 -0
  86. package/dist/client/assets/SourceControlSettings-C-4QtBJz.js +1 -0
  87. package/dist/client/assets/StatisticsPage-DcHPYglK.js +1 -0
  88. package/dist/client/assets/StatisticsPanel-BaobZm_7.js +1 -0
  89. package/dist/client/assets/StatisticsSettingsLink-D495bF8R.js +1 -0
  90. package/dist/client/assets/ThreadTerminalDrawer-erl6kZF6.js +18 -0
  91. package/dist/client/assets/ThreadWorkspacePanel-CdlvFu_u.js +2074 -0
  92. package/dist/client/assets/abnfDiagram-N423BO3Z-BAYNysM5.js +1 -0
  93. package/dist/client/assets/{activity-BmRcsTyL.js → activity-BdLqP9i_.js} +1 -1
  94. package/dist/client/assets/{alert-C5UiA2xk.js → alert-DPLHJUsX.js} +1 -1
  95. package/dist/client/assets/angular-html-B8mrqUL5.js +1 -0
  96. package/dist/client/assets/{angular-ts-BQK9km6-.js → angular-ts-Bzix210W.js} +1 -1
  97. package/dist/client/assets/{apl-C92MddLO.js → apl-Dhin1L29.js} +1 -1
  98. package/dist/client/assets/{appChrome-CsZ2ylc1.js → appChrome-DWDme9Dt.js} +1 -1
  99. package/dist/client/assets/arc-BbkdAXW7.js +1 -0
  100. package/dist/client/assets/architecture-7GRP2DOG-BJtkrWuJ.js +1 -0
  101. package/dist/client/assets/architectureDiagram-T3A2C74G-C8_Cvj7E.js +36 -0
  102. package/dist/client/assets/{arrow-left-CSz-z20j.js → arrow-left-BAJW4wtE.js} +1 -1
  103. package/dist/client/assets/{arrow-right-DEi91hao.js → arrow-right-Dns94Sea.js} +1 -1
  104. package/dist/client/assets/{arrow-up-right-D7SpcTV9.js → arrow-up-right-B4jqikrK.js} +1 -1
  105. package/dist/client/assets/{astro-CV97iv9o.js → astro-B-4NNgOP.js} +1 -1
  106. package/dist/client/assets/authorization-DMv-wK-V.js +1 -0
  107. package/dist/client/assets/badge-DLmSMsDm.js +1 -0
  108. package/dist/client/assets/band-DZ4Jagyz.js +1 -0
  109. package/dist/client/assets/{blade-yJCl9jZA.js → blade-C6Gedziy.js} +1 -1
  110. package/dist/client/assets/blockDiagram-VBNYF7ZC-B75XFMEV.js +132 -0
  111. package/dist/client/assets/{bot-SC4UGZyw.js → bot-Dv0XDWJs.js} +1 -1
  112. package/dist/client/assets/c-iCihek07.js +1 -0
  113. package/dist/client/assets/c4Diagram-5PPSVZJV-DwxLnQVX.js +10 -0
  114. package/dist/client/assets/capabilities-8t5cq9FQ.js +1 -0
  115. package/dist/client/assets/channel-BBNf4NuI.js +1 -0
  116. package/dist/client/assets/{chapel-B4wvmE90.js → chapel-DmtgEXO_.js} +1 -1
  117. package/dist/client/assets/{chart-column-C08MuLgY.js → chart-column-B_-qnXGB.js} +1 -1
  118. package/dist/client/assets/chevron-right-Cnb37R-Q.js +1 -0
  119. package/dist/client/assets/chunk-2GRJ4B5K-nG7WCf2t.js +1 -0
  120. package/dist/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  121. package/dist/client/assets/chunk-4I5QYGJK-D3luggpT.js +1 -0
  122. package/dist/client/assets/chunk-5RXB4S5H-nhzQkmkg.js +231 -0
  123. package/dist/client/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  124. package/dist/client/assets/chunk-6Q2QTUOP-dP86RxKA.js +88 -0
  125. package/dist/client/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
  126. package/dist/client/assets/chunk-7Z6QIM7H-DaMB-SqH.js +10 -0
  127. package/dist/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
  128. package/dist/client/assets/chunk-GF5L2VYU-asgcvCCI.js +206 -0
  129. package/dist/client/assets/chunk-I66GZJ75-CDkA1o_8.js +127 -0
  130. package/dist/client/assets/chunk-JQJVKLGR-Bw0X5Ip-.js +156 -0
  131. package/dist/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  132. package/dist/client/assets/chunk-KBJHAD2P-dO_kTnL7.js +1 -0
  133. package/dist/client/assets/chunk-NSK5VX7P-BmceTTBR.js +2 -0
  134. package/dist/client/assets/chunk-QR6OTTB3-B5kA0ffj.js +62 -0
  135. package/dist/client/assets/chunk-RYQCIY6F-DwFgeAGr.js +1 -0
  136. package/dist/client/assets/chunk-UBXNYLIW-CDedwfvO.js +1 -0
  137. package/dist/client/assets/chunk-W5SLKNZC-CYitqjQA.js +1 -0
  138. package/dist/client/assets/chunk-WRU74C26-BuyHUiY3.js +70 -0
  139. package/dist/client/assets/chunk-XXDRQBXY-DKGD__ll.js +1 -0
  140. package/dist/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  141. package/dist/client/assets/classDiagram-JCYQIIEL-CEJrTr5w.js +1 -0
  142. package/dist/client/assets/classDiagram-v2-OCEON4UE-CEJrTr5w.js +1 -0
  143. package/dist/client/assets/{clipboard-copy-D74Wvnon.js → clipboard-copy-m25MViws.js} +1 -1
  144. package/dist/client/assets/{cobol-NqUMvFU8.js → cobol-Cw2-KvLW.js} +1 -1
  145. package/dist/client/assets/{coffee-DVKhASwQ.js → coffee-CiiSLhB6.js} +1 -1
  146. package/dist/client/assets/compiler-runtime-C4g8XhC5.js +1 -0
  147. package/dist/client/assets/cose-bilkent-JH36ORCC-CQw99gYc.js +1 -0
  148. package/dist/client/assets/cpp-71xkOQct.js +1 -0
  149. package/dist/client/assets/{crystal-DTR4CTFy.js → crystal-DGPAtLeY.js} +1 -1
  150. package/dist/client/assets/css-CNuuLpMC.js +1 -0
  151. package/dist/client/assets/cynefin-OW5HDTMX-PI1jXfo9.js +1 -0
  152. package/dist/client/assets/cynefinDiagram-MW4NZA55-D9aXz2H3.js +62 -0
  153. package/dist/client/assets/cytoscape.esm-B-1iW2ft.js +321 -0
  154. package/dist/client/assets/dagre-VZM6K2ZE-DAkAWtHf.js +4 -0
  155. package/dist/client/assets/dagre-jnk0s9qx.js +1 -0
  156. package/dist/client/assets/{data-list-CZ4Utnfl.js → data-list-CzuRaMoY.js} +1 -1
  157. package/dist/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  158. package/dist/client/assets/desktopWorkspace-DCXeateK.js +1 -0
  159. package/dist/client/assets/diagram-7IWD3JNH-D9Y5DAHG.js +30 -0
  160. package/dist/client/assets/diagram-B4RE2ZJO-pcVWvD1c.js +3 -0
  161. package/dist/client/assets/diagram-LBJQPF4R-CKQHNEf3.js +24 -0
  162. package/dist/client/assets/diagram-Q27KOJAE-DpUj2dlx.js +24 -0
  163. package/dist/client/assets/diagram-UB23O5K3-D9ixM4zK.js +41 -0
  164. package/dist/client/assets/dist-v5Q1xZ2K.js +1 -0
  165. package/dist/client/assets/{download-Dio40wIJ.js → download-BLSwvpO8.js} +1 -1
  166. package/dist/client/assets/ebnfDiagram-BXEA7PRR-DtVIaCAg.js +1 -0
  167. package/dist/client/assets/{edge-CpqhDICu.js → edge-DCY0a-ow.js} +1 -1
  168. package/dist/client/assets/editorPreferences-B9oRG3Zd.js +1 -0
  169. package/dist/client/assets/{elixir--isJgL2B.js → elixir-DP304Xio.js} +1 -1
  170. package/dist/client/assets/{elm-DgHzNgm_.js → elm-o4NJxfws.js} +1 -1
  171. package/dist/client/assets/{empty-6LExKYgQ.js → empty-DOy2mOw2.js} +1 -1
  172. package/dist/client/assets/erDiagram-JOGREHBK-BLKpTkcC.js +85 -0
  173. package/dist/client/assets/{erb-CXyXxaAM.js → erb-C7MPl934.js} +1 -1
  174. package/dist/client/assets/eventmodeling-NTZA5JFV-BwvZvQqc.js +1 -0
  175. package/dist/client/assets/flowDiagram-UKHOOZJN-BQ7PEPRm.js +1 -0
  176. package/dist/client/assets/ganttDiagram-PKOTCBZU-CnqZ0jmv.js +292 -0
  177. package/dist/client/assets/{git-rebase-BqNqx552.js → git-rebase-BDPpS8w6.js} +1 -1
  178. package/dist/client/assets/gitGraph-4MIJSDKK-CwCT0-s6.js +1 -0
  179. package/dist/client/assets/gitGraphDiagram-DS77QQ5N-s8lXhp4w.js +106 -0
  180. package/dist/client/assets/{glimmer-js-yZWXr7D1.js → glimmer-js-BONyzAsu.js} +1 -1
  181. package/dist/client/assets/{glimmer-ts-BgilwNe9.js → glimmer-ts-f9c0GCOe.js} +1 -1
  182. package/dist/client/assets/glsl-D5MA2a_X.js +1 -0
  183. package/dist/client/assets/graphlib-DS17s2tU.js +1 -0
  184. package/dist/client/assets/graphql-Ctjuxyvl.js +1 -0
  185. package/dist/client/assets/{group-D_mu0Kiq.js → group-CuoO9JnL.js} +1 -1
  186. package/dist/client/assets/{hack-Bw3mo9za.js → hack-Dh_ZLRbs.js} +1 -1
  187. package/dist/client/assets/haml-CwEpbK1d.js +1 -0
  188. package/dist/client/assets/{handlebars-D71nAVX4.js → handlebars-ryMP1rBR.js} +1 -1
  189. package/dist/client/assets/hostedConnectionCoordinator-BSJ_DOFJ.js +1 -0
  190. package/dist/client/assets/hostedPairing-CqhLPQqG.js +1 -0
  191. package/dist/client/assets/html-XwrE-1r6.js +1 -0
  192. package/dist/client/assets/{html-derivative-BwDrYmK9.js → html-derivative-i4STDFnl.js} +1 -1
  193. package/dist/client/assets/{http-BSiVGmrj.js → http-kmH8AyfE.js} +1 -1
  194. package/dist/client/assets/hubRoutes-21nfUON0.js +1 -0
  195. package/dist/client/assets/{hurl-BUTu-xdf.js → hurl-DCZHXKU4.js} +1 -1
  196. package/dist/client/assets/{index-7MTgf8YI.js → index-BwKpO5H0.js} +2 -2
  197. package/dist/client/assets/info-A6RAGUB7-BEii5_a7.js +1 -0
  198. package/dist/client/assets/infoDiagram-6WML65LV-BDA4ayxB.js +2 -0
  199. package/dist/client/assets/init-ZlXS9mIS.js +1 -0
  200. package/dist/client/assets/input-C7jwjNin.js +1 -0
  201. package/dist/client/assets/ishikawaDiagram-WSZJBQD7-Dg0BzsTT.js +70 -0
  202. package/dist/client/assets/java-DdHNQ9hk.js +1 -0
  203. package/dist/client/assets/javascript-obGGvMPs.js +1 -0
  204. package/dist/client/assets/{jinja-BA7hgfzz.js → jinja-B-tLrNsM.js} +1 -1
  205. package/dist/client/assets/{jison-CUMnSUVk.js → jison-CBjhYtSs.js} +1 -1
  206. package/dist/client/assets/journeyDiagram-NVQOT4AX-C8EwxR5-.js +139 -0
  207. package/dist/client/assets/json-DAgxKhMr.js +1 -0
  208. package/dist/client/assets/jsx-gTgmArGx.js +1 -0
  209. package/dist/client/assets/{julia-C-lBeOK5.js → julia-CXJVy74_.js} +1 -1
  210. package/dist/client/assets/{just-DfEtguTY.js → just-B9Xn_Dp4.js} +1 -1
  211. package/dist/client/assets/kanban-definition-27J2QSJJ-CwWIK4hH.js +89 -0
  212. package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
  213. package/dist/client/assets/kbd-BkhO-OIB.js +1 -0
  214. package/dist/client/assets/{key-round-C-oUSjpF.js → key-round-QNi8vZ3o.js} +1 -1
  215. package/dist/client/assets/{latex-6oxeCMbP.js → latex-o9DRzaEe.js} +1 -1
  216. package/dist/client/assets/{layers-Co2a5C1k.js → layers-DxCncDg0.js} +1 -1
  217. package/dist/client/assets/linear-DCT4R0u9.js +1 -0
  218. package/dist/client/assets/{liquid-Cr73H0-U.js → liquid-G0MH4h_m.js} +1 -1
  219. package/dist/client/assets/liquidGlass-CA2o_Cq0.js +1 -0
  220. package/dist/client/assets/{log-out-pWFhbvwr.js → log-out-0cx8xYmG.js} +1 -1
  221. package/dist/client/assets/{logging-JMrwaeZh.js → logging-D0Z2ysS_.js} +1 -1
  222. package/dist/client/assets/lua-FONpmTUP.js +1 -0
  223. package/dist/client/assets/main-Bs1wRbtM.css +2 -0
  224. package/dist/client/assets/main-DRnQOdGw.js +9 -0
  225. package/dist/client/assets/map-CLsMSThe.js +1 -0
  226. package/dist/client/assets/{marko-8BhW8jZt.js → marko-DV5GrDmo.js} +1 -1
  227. package/dist/client/assets/{mdc-uTSeACfH.js → mdc-BKfPFPZw.js} +1 -1
  228. package/dist/client/assets/mermaid-parser.core-DFyHLivv.js +6 -0
  229. package/dist/client/assets/mermaidEngine-CFbqgukn.js +41 -0
  230. package/dist/client/assets/mindmap-definition-FAOFIHXS-DEUodh64.js +96 -0
  231. package/dist/client/assets/{nginx-BbzDIRDu.js → nginx-BTMw9COX.js} +1 -1
  232. package/dist/client/assets/{nim-C27DPxCt.js → nim-B6yJ_yaC.js} +1 -1
  233. package/dist/client/assets/noop-CdBy4H-p.js +1 -0
  234. package/dist/client/assets/ordinal-CPleeUAT.js +1 -0
  235. package/dist/client/assets/{org-DRYqs_wo.js → org-Ddi8Gs6E.js} +1 -1
  236. package/dist/client/assets/packet-AYTQ26CC-kDW4NC3U.js +1 -0
  237. package/dist/client/assets/{palette-B_6C4fD6.js → palette-DJP6HjoK.js} +1 -1
  238. package/dist/client/assets/pegDiagram-VL7TDLO6-DP6G624r.js +1 -0
  239. package/dist/client/assets/{perl-Dj7_nwz_.js → perl-DEgXgjuC.js} +1 -1
  240. package/dist/client/assets/{php-Xqfm-TjX.js → php-B9UPq-vz.js} +1 -1
  241. package/dist/client/assets/pie-WAS4IAKB-CkU95zMj.js +1 -0
  242. package/dist/client/assets/pieDiagram-7S7Q4E2Y-CbI-Me3X.js +39 -0
  243. package/dist/client/assets/{play-DFtc9zBy.js → play-D2dLXeYA.js} +1 -1
  244. package/dist/client/assets/primary-CTbs3K5y.js +5 -0
  245. package/dist/client/assets/providerDriverMeta-BufQsOt9.js +1 -0
  246. package/dist/client/assets/providerInstances-BsYOgLbA.js +1 -0
  247. package/dist/client/assets/providerModels-B6q2qkJn.js +1 -0
  248. package/dist/client/assets/providerStatus-DBGvvkyF.js +1 -0
  249. package/dist/client/assets/{pug-CKEc9v9y.js → pug-DkgDHZci.js} +1 -1
  250. package/dist/client/assets/{qml-C3bhdnuC.js → qml-_a-QhfPD.js} +1 -1
  251. package/dist/client/assets/qr-code-aWP2UC_0.js +1 -0
  252. package/dist/client/assets/{qr-code-DaHWf7Oq.js → qr-code-rHO2PSNK.js} +1 -1
  253. package/dist/client/assets/quadrantDiagram-CIZ2JOQS-DdT-PJym.js +7 -0
  254. package/dist/client/assets/r-BHcO8Vjq.js +1 -0
  255. package/dist/client/assets/radar-RG4KPBEZ-BCHjOI8k.js +1 -0
  256. package/dist/client/assets/radio-group-j7Aw0khh.js +2 -0
  257. package/dist/client/assets/railroad-74A4TZTK-Coyy1E7r.js +1 -0
  258. package/dist/client/assets/railroad-abnf-HS5TGJTU-vVvBZ7mV.js +1 -0
  259. package/dist/client/assets/railroad-ebnf-LZEXJU2U-DPhiX3AH.js +1 -0
  260. package/dist/client/assets/railroad-peg-WCYAUIDC-CE5r0-yf.js +1 -0
  261. package/dist/client/assets/railroadDiagram-AXF67PYL-BtotoGcb.js +1 -0
  262. package/dist/client/assets/{razor-CCBiKnb_.js → razor-BMJ0eI3p.js} +1 -1
  263. package/dist/client/assets/react-CwJFpaho.js +1 -0
  264. package/dist/client/assets/{refresh-cw-CY5BeUEr.js → refresh-cw-BvLhRgIT.js} +1 -1
  265. package/dist/client/assets/regexp-DR20uMnK.js +1 -0
  266. package/dist/client/assets/requirementDiagram-LRYGKXZP-CkRiHwnq.js +84 -0
  267. package/dist/client/assets/rolldown-runtime-hePW80VL.js +1 -0
  268. package/dist/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
  269. package/dist/client/assets/{rst-DKqX_39h.js → rst-BQCbfb9V.js} +1 -1
  270. package/dist/client/assets/{ruby-CaU3RLfE.js → ruby-B8JcIHv0.js} +1 -1
  271. package/dist/client/assets/runtime-BmkVEPVk.js +17 -0
  272. package/dist/client/assets/sankeyDiagram-W5VNT64P-CRA3QeOy.js +40 -0
  273. package/dist/client/assets/{sas-Dq8EnVfj.js → sas-CBpMWA2M.js} +1 -1
  274. package/dist/client/assets/{save-DIHMjHXd.js → save-BS49-bF8.js} +1 -1
  275. package/dist/client/assets/scroll-area-DCAX5yOi.js +1 -0
  276. package/dist/client/assets/scrollEdges-BPCo6eoJ.js +1 -0
  277. package/dist/client/assets/scss-YesllqfO.js +1 -0
  278. package/dist/client/assets/separator-BzCfJfqt.js +1 -0
  279. package/dist/client/assets/sequenceDiagram-SI44F4Z6-C1NBZD9Z.js +162 -0
  280. package/dist/client/assets/settingsLayout-DsTnu1ag.js +1 -0
  281. package/dist/client/assets/{sheet-CFvRY7T6.js → sheet-B5Bho6hg.js} +1 -1
  282. package/dist/client/assets/shellscript-Da78Ox-3.js +1 -0
  283. package/dist/client/assets/{shellsession-26dOf2m0.js → shellsession-CVsQGYfZ.js} +1 -1
  284. package/dist/client/assets/{shield-Zn2kFj5M.js → shield-D8Js3j2m.js} +1 -1
  285. package/dist/client/assets/{shield-alert-DMB5gKiC.js → shield-alert-D5KtaxAD.js} +1 -1
  286. package/dist/client/assets/{shield-check-DyNf6Bky.js → shield-check-Bw3PFmc5.js} +1 -1
  287. package/dist/client/assets/sidebar-BgdP0aPP.js +1 -0
  288. package/dist/client/assets/sidebarProjectFolders-SidXpBYm.js +4 -0
  289. package/dist/client/assets/{sidebarStatusText-DCo-whyK.js → sidebarStatusText-CGlncYed.js} +1 -1
  290. package/dist/client/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +1 -0
  291. package/dist/client/assets/{skeleton-DEuowfjY.js → skeleton-D2DLiMeL.js} +1 -1
  292. package/dist/client/assets/{smartphone-BLWJ7C9-.js → smartphone-BxLjYoMC.js} +1 -1
  293. package/dist/client/assets/{soy-Bf3k5CrX.js → soy-DEd-qcad.js} +1 -1
  294. package/dist/client/assets/sql-DdD7vxS4.js +1 -0
  295. package/dist/client/assets/src-BISxbUej.js +1 -0
  296. package/dist/client/assets/{src-DPpEXU6w.js → src-DveUJAx7.js} +1 -1
  297. package/dist/client/assets/{star-CjQxHYbD.js → star-COJFLZTR.js} +1 -1
  298. package/dist/client/assets/{stata-DYvaCWJV.js → stata-CMv7m7Gi.js} +1 -1
  299. package/dist/client/assets/stateDiagram-OKZ733FA-Ds3WpAzo.js +1 -0
  300. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-B1G6cGoL.js +1 -0
  301. package/dist/client/assets/{surrealql-CVtmRpY6.js → surrealql-BZoq2lXR.js} +1 -1
  302. package/dist/client/assets/{svelte-k_k4XYnr.js → svelte-Bj3Hmc9F.js} +1 -1
  303. package/dist/client/assets/swimlanes-SLNWSIFB-CBOT6h6D.js +1 -0
  304. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-C7dzqG68.js +8 -0
  305. package/dist/client/assets/switch-DRWMuFAB.js +48 -0
  306. package/dist/client/assets/{templ-CxD_nC0J.js → templ-TjxbArHn.js} +1 -1
  307. package/dist/client/assets/tex-BK-H2Wn4.js +1 -0
  308. package/dist/client/assets/time-DQ1f7CYz.js +1 -0
  309. package/dist/client/assets/timeline-definition-Z64GVDOM-BchFx9aU.js +120 -0
  310. package/dist/client/assets/toggle-BFimNtfd.js +1 -0
  311. package/dist/client/assets/toggle-group-DkiAyblO.js +1 -0
  312. package/dist/client/assets/{tokenModePresentation-CPUsUGY4.js → tokenModePresentation-CF3EmBbY.js} +1 -1
  313. package/dist/client/assets/tooltip-DCkohGhZ.js +1 -0
  314. package/dist/client/assets/treeView-Q6P3EWNA-CEV1Lb2d.js +1 -0
  315. package/dist/client/assets/treemap-WGGIJYW6-BmpcuJbz.js +1 -0
  316. package/dist/client/assets/{ts-tags-BriKwQve.js → ts-tags-Cc5do7zu.js} +1 -1
  317. package/dist/client/assets/tsx-CUOciP0b.js +1 -0
  318. package/dist/client/assets/{twig-DsmcR2eZ.js → twig-BVSnuTf-.js} +1 -1
  319. package/dist/client/assets/typescript-BydbNFcO.js +1 -0
  320. package/dist/client/assets/{typst-Drab9wKO.js → typst-C40W_gC6.js} +1 -1
  321. package/dist/client/assets/{unplug-Bjpxv8i0.js → unplug-8DPlQKIp.js} +1 -1
  322. package/dist/client/assets/{usage-8vQUo0mr.js → usage-C8xQ6Fzh.js} +1 -1
  323. package/dist/client/assets/useAppSidebarCollapsed-C2LlQGyO.js +1 -0
  324. package/dist/client/assets/useAppearancePreference-Dlh9P8iu.js +1 -0
  325. package/dist/client/assets/useBaseUiId-mt0hfEAe.js +1 -0
  326. package/dist/client/assets/useControlled-CgAAWIy9.js +1 -0
  327. package/dist/client/assets/useLabelableId-Cvt4WsTl.js +1 -0
  328. package/dist/client/assets/useLongPress-CUmLovQ7.js +1 -0
  329. package/dist/client/assets/useNavigate-C3GqcMfH.js +1 -0
  330. package/dist/client/assets/usePhoneThreadActions-D6vlUMhK.js +1 -0
  331. package/dist/client/assets/usePopupViewport-Do1Do_XW.js +1 -0
  332. package/dist/client/assets/usePresentationTier-hxB7Yv_Q.js +1 -0
  333. package/dist/client/assets/useScrollLock-CBkwVMhR.js +1 -0
  334. package/dist/client/assets/useStatistics-DVzBUtMo.js +55 -0
  335. package/dist/client/assets/useTheme-B441xg4F.js +1 -0
  336. package/dist/client/assets/useTriggerFocusGuards-CwCaKZe6.js +1 -0
  337. package/dist/client/assets/useValueChanged-DdYHxdoK.js +1 -0
  338. package/dist/client/assets/{user-round-DEWIPpNs.js → user-round-D4L0lVW8.js} +1 -1
  339. package/dist/client/assets/vennDiagram-T6HMQDX7-D5h4gL4M.js +34 -0
  340. package/dist/client/assets/{vscode-icons-DTH-Vj-_.js → vscode-icons-BKarOrEi.js} +1 -1
  341. package/dist/client/assets/{vue-Dt-rrFdH.js → vue-BNQF7r6F.js} +1 -1
  342. package/dist/client/assets/{vue-html-BrRsRUlP.js → vue-html-DkKkQnZL.js} +1 -1
  343. package/dist/client/assets/{vue-vine-CxnolnwP.js → vue-vine-DFaKYU4X.js} +1 -1
  344. package/dist/client/assets/wardley-WFR3VGLG-COhlspfw.js +1 -0
  345. package/dist/client/assets/wardleyDiagram-T6FBY63Y-WJNCmmcd.js +78 -0
  346. package/dist/client/assets/{workspaceMetadataProjection-BnpxBe8S.js → workspaceMetadataProjection-DGOQN5yh.js} +1 -1
  347. package/dist/client/assets/{wrench-36WYdK_a.js → wrench-B8Kn44An.js} +1 -1
  348. package/dist/client/assets/xml-BlnrEAEy.js +1 -0
  349. package/dist/client/assets/{xsl-BY-Cn9M_.js → xsl-BOPS8gLt.js} +1 -1
  350. package/dist/client/assets/xychartDiagram-ELKLHX3M-CabQ0hKy.js +7 -0
  351. package/dist/client/assets/yaml-Du_6cdrH.js +1 -0
  352. package/dist/client/index.html +1 -1
  353. package/dist/{deviceHostWorker-C-BSnmkn.mjs → deviceHostWorker-CV7GZgfH.mjs} +1 -1
  354. package/dist/{git-C4iJMbBu.mjs → git-BaEqFwDw.mjs} +1 -1
  355. package/dist/{git-irmB8_k7.cjs → git-VPCnunmz.cjs} +1 -1
  356. package/dist/{makeManagedServerProvider-BINne1KE.mjs → makeManagedServerProvider--SPw3bxe.mjs} +23 -19
  357. package/dist/{makeManagedServerProvider-DGbd8BhM.cjs → makeManagedServerProvider-A3NSgBwN.cjs} +23 -19
  358. package/dist/resource-monitor/ryco-resource-monitor +0 -0
  359. package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
  360. package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
  361. package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
  362. package/dist/{Metrics-C-3MahDy.mjs → serverSettings-C7N2cm7C.mjs} +783 -8
  363. package/dist/{Metrics-DCKbdeoH.cjs → serverSettings-_fgQZNIb.cjs} +944 -11
  364. package/dist/{src-BlzIcnVG.cjs → src-CBu69HDR.cjs} +395 -20
  365. package/dist/{src-DtEOcXdl.mjs → src-D8uCtoDZ.mjs} +342 -15
  366. package/package.json +1 -1
  367. package/dist/SourceControlProviderDiscoveryCatalog-BVvq7liJ.mjs +0 -525
  368. package/dist/SourceControlProviderDiscoveryCatalog-CyUhKJLD.cjs +0 -614
  369. package/dist/client/assets/AccountSettings-DLbcE2w-.js +0 -1
  370. package/dist/client/assets/AiFocusSettings-FKvdkl4P.js +0 -1
  371. package/dist/client/assets/AnimatedHeight-CbIEyMLg.js +0 -1
  372. package/dist/client/assets/AppearanceSettings-B2LsGKmL.js +0 -1
  373. package/dist/client/assets/BranchToolbar.logic-BqkvYNPk.js +0 -1
  374. package/dist/client/assets/BrowserPanel-C_C4zjrh.js +0 -1
  375. package/dist/client/assets/ChatRightPanel-ibiQ79jI.js +0 -195
  376. package/dist/client/assets/ChatThreadRouteView-c7AXmbSk.js +0 -1
  377. package/dist/client/assets/CommandPaletteDialog-DdPKN6rv.js +0 -1
  378. package/dist/client/assets/CompositeRoot-DKwS-ADi.js +0 -1
  379. package/dist/client/assets/ComputerUseSettings-DM17BYP5.js +0 -1
  380. package/dist/client/assets/ConnectionsSettings-D6wysIC8.js +0 -7
  381. package/dist/client/assets/ContextHandoffEndpointLabel-CsF_maM_.js +0 -4
  382. package/dist/client/assets/DiagnosticsSettings-Bq2l-C4J.js +0 -2
  383. package/dist/client/assets/DialogHandle-DuKTleCw.js +0 -1
  384. package/dist/client/assets/DialogPopup-Dt7DzTWv.js +0 -1
  385. package/dist/client/assets/DialogRoot-DRyawL6l.js +0 -1
  386. package/dist/client/assets/DialogTitle-BaxfPC6e.js +0 -1
  387. package/dist/client/assets/DialogTrigger-D0PJ8bRT.js +0 -1
  388. package/dist/client/assets/DialogViewport-C3B2JZWQ.js +0 -1
  389. package/dist/client/assets/DraftChatThreadRouteView-B8YiD5NP.js +0 -1
  390. package/dist/client/assets/HostedConnectionControls-DOpTlXzE.js +0 -1
  391. package/dist/client/assets/HostedHubRoot-C1jq8cM6.js +0 -2
  392. package/dist/client/assets/HostedNativeAuthorizationRoute-Clw1DHQW.js +0 -2
  393. package/dist/client/assets/HostedNodeRenameDialog-Bd_Qu_ek.js +0 -1
  394. package/dist/client/assets/HostedRelayTrustNotice-CGcBpT9m.js +0 -1
  395. package/dist/client/assets/IntegrationsSettingsPanel-J0qODRW-.js +0 -2
  396. package/dist/client/assets/KeybindingsSettings-CwxIHsFy.js +0 -7
  397. package/dist/client/assets/LazyBrowserPanel-VNAn6AUL.js +0 -2
  398. package/dist/client/assets/McpServersSettings-1pkIeutq.js +0 -6
  399. package/dist/client/assets/MobileSheet-DddfN8c2.js +0 -1
  400. package/dist/client/assets/NodeSecuritySettings-BOIZeFZo.js +0 -1
  401. package/dist/client/assets/OpinionatedPluginsSettings-oTIrPtIb.js +0 -1
  402. package/dist/client/assets/PhoneGetAppInterstitial-0EOj-PbW.js +0 -1
  403. package/dist/client/assets/PhoneHome-Cg7l3b1T.js +0 -1
  404. package/dist/client/assets/PhoneSettingsSurface-BXAUtZ9M.js +0 -2
  405. package/dist/client/assets/ProvidersSettingsPanel-BaJgypXu.js +0 -1
  406. package/dist/client/assets/QuitShortcutFeedback-DgJFEd6b.js +0 -1
  407. package/dist/client/assets/RedactedSensitiveText-D1VC2xa7.js +0 -1
  408. package/dist/client/assets/RootAppShell-D2RjZ9jQ.js +0 -7
  409. package/dist/client/assets/Separator-CeMncdkm.js +0 -1
  410. package/dist/client/assets/SettingsDialog-B2hEb6u8.js +0 -2
  411. package/dist/client/assets/SettingsPanels-DtWLQDne.js +0 -3
  412. package/dist/client/assets/SettingsPanels.editor-DJRckD71.js +0 -1
  413. package/dist/client/assets/SourceControlSettings-IpoZrjt5.js +0 -1
  414. package/dist/client/assets/StatisticsPage-CUpE_5Gr.js +0 -1
  415. package/dist/client/assets/StatisticsPanel-CHrAY5AP.js +0 -1
  416. package/dist/client/assets/StatisticsSettingsLink-bGWuxNG3.js +0 -1
  417. package/dist/client/assets/ThreadTerminalDrawer-BEv83xrk.js +0 -18
  418. package/dist/client/assets/ThreadWorkspacePanel-BdMdJVHJ.js +0 -2073
  419. package/dist/client/assets/angular-html-Dht9YPGR.js +0 -1
  420. package/dist/client/assets/authorization-B1YXfej3.js +0 -1
  421. package/dist/client/assets/badge-BjvTY7-E.js +0 -1
  422. package/dist/client/assets/c-Baw6W2ff.js +0 -1
  423. package/dist/client/assets/capabilities-BCkDNe83.js +0 -1
  424. package/dist/client/assets/chevron-right-DgB53U1_.js +0 -1
  425. package/dist/client/assets/compiler-runtime-qmuS0Svy.js +0 -1
  426. package/dist/client/assets/cpp-C3nXdf7H.js +0 -1
  427. package/dist/client/assets/css-tyblAV2Z.js +0 -1
  428. package/dist/client/assets/desktopWorkspace-DVfn9ZT_.js +0 -1
  429. package/dist/client/assets/editorPreferences-2dG4uloq.js +0 -1
  430. package/dist/client/assets/glsl-CiPx7o44.js +0 -1
  431. package/dist/client/assets/graphql-dVCFBcPU.js +0 -1
  432. package/dist/client/assets/haml-Bvq_b7GQ.js +0 -1
  433. package/dist/client/assets/hostedConnectionCoordinator-YkDLnATK.js +0 -1
  434. package/dist/client/assets/hostedPairing-B_ylEEDa.js +0 -1
  435. package/dist/client/assets/html-CQCljoLJ.js +0 -1
  436. package/dist/client/assets/hubRoutes-D3quWvU7.js +0 -1
  437. package/dist/client/assets/input-CfVJycb1.js +0 -1
  438. package/dist/client/assets/java-DKLhoot1.js +0 -1
  439. package/dist/client/assets/javascript-BoDf_Xaa.js +0 -1
  440. package/dist/client/assets/json-D-CzDEr3.js +0 -1
  441. package/dist/client/assets/jsx-RPKfHBaT.js +0 -1
  442. package/dist/client/assets/kbd-uFa_tY-L.js +0 -1
  443. package/dist/client/assets/liquidGlass-Dbl4k51l.js +0 -1
  444. package/dist/client/assets/lua-BNklVDJF.js +0 -1
  445. package/dist/client/assets/main-BNPtp9Z0.css +0 -2
  446. package/dist/client/assets/main-CGeD6yVE.js +0 -9
  447. package/dist/client/assets/primary-CNUdEGcv.js +0 -2
  448. package/dist/client/assets/providerDriverMeta-Cg_XLUfo.js +0 -1
  449. package/dist/client/assets/providerInstances-JaDrOWPZ.js +0 -1
  450. package/dist/client/assets/providerModels-5uOq3qPC.js +0 -1
  451. package/dist/client/assets/qr-code-BU354aLS.js +0 -1
  452. package/dist/client/assets/r-B-BYV2IP.js +0 -1
  453. package/dist/client/assets/radio-group-DKaA1eey.js +0 -2
  454. package/dist/client/assets/react-SIfiwpqq.js +0 -1
  455. package/dist/client/assets/regexp-BG8FlKR9.js +0 -1
  456. package/dist/client/assets/runtime-BKneT96Q.js +0 -17
  457. package/dist/client/assets/scroll-area-Cq4SX9P8.js +0 -1
  458. package/dist/client/assets/scrollEdges-BaWRjrac.js +0 -1
  459. package/dist/client/assets/scss-CMpBj9xp.js +0 -1
  460. package/dist/client/assets/separator-BN705fC0.js +0 -1
  461. package/dist/client/assets/settingsLayout-DQERzSce.js +0 -1
  462. package/dist/client/assets/shellscript-C5MCrJaB.js +0 -1
  463. package/dist/client/assets/sidebar-Bsh64sLK.js +0 -1
  464. package/dist/client/assets/sidebarProjectFolders-CQbpO9ZI.js +0 -4
  465. package/dist/client/assets/sparkles-DAXDXp_s.js +0 -1
  466. package/dist/client/assets/sql-DcFiju6z.js +0 -1
  467. package/dist/client/assets/switch-LahPAvrd.js +0 -48
  468. package/dist/client/assets/tex-DOBpnpUK.js +0 -1
  469. package/dist/client/assets/toggle-45lsrmyi.js +0 -1
  470. package/dist/client/assets/toggle-group-D5pl24ED.js +0 -1
  471. package/dist/client/assets/tooltip-B8-izeMo.js +0 -1
  472. package/dist/client/assets/tsx-CltjRl2u.js +0 -1
  473. package/dist/client/assets/typescript-BwOcYJx4.js +0 -1
  474. package/dist/client/assets/useAppSidebarCollapsed-uwz9Hlgc.js +0 -1
  475. package/dist/client/assets/useAppearancePreference-BteoFdGa.js +0 -1
  476. package/dist/client/assets/useBaseUiId-BtuL7q77.js +0 -1
  477. package/dist/client/assets/useControlled-DQwgzrEC.js +0 -1
  478. package/dist/client/assets/useLabelableId-N_LsKNbf.js +0 -1
  479. package/dist/client/assets/useLongPress-DG1W7YqV.js +0 -1
  480. package/dist/client/assets/useNavigate-DADLi29i.js +0 -1
  481. package/dist/client/assets/usePhoneThreadActions-B9_HK7tn.js +0 -1
  482. package/dist/client/assets/usePopupViewport-w8BEny9j.js +0 -1
  483. package/dist/client/assets/usePresentationTier-B_SCFvN7.js +0 -1
  484. package/dist/client/assets/useScrollLock-bCmUzTgK.js +0 -1
  485. package/dist/client/assets/useStatistics-DJtONxT0.js +0 -55
  486. package/dist/client/assets/useTheme-CVNauCtz.js +0 -1
  487. package/dist/client/assets/useTriggerFocusGuards-C7JWO2LT.js +0 -1
  488. package/dist/client/assets/useValueChanged-DkoUO9bY.js +0 -1
  489. package/dist/client/assets/xml-DUCOjSp4.js +0 -1
  490. package/dist/client/assets/yaml-BONObsYN.js +0 -1
@@ -1,9 +1,244 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Cause, Context, DateTime, Duration, Effect, Exit, FileSystem, Layer, Metric, Path, Schema } from "effect";
4
- import path from "node:path";
3
+ import { Do as DEFAULT_GIT_TEXT_GENERATION_OPTIONS_BY_PROVIDER, Eo as DEFAULT_GIT_TEXT_GENERATION_MODEL_BY_PROVIDER, Hr as ServerSettings, Mo as ProviderInstanceId, Po as isProviderDriverKind, Rr as DEFAULT_SERVER_SETTINGS, Ur as ServerSettingsError, jo as ProviderDriverKind, ko as MODEL_SLUG_ALIASES_BY_PROVIDER } from "./src-D8uCtoDZ.mjs";
4
+ import { r as fromLenientJson } from "./schemaJson-CaG1bOvo.mjs";
5
+ import { Cache, Cause, Context, Data, DateTime, Deferred, Duration, Effect, Equal, Exit, FileSystem, Layer, Metric, Path, Predicate, PubSub, Ref, Schema, SchemaIssue, Scope, Stream } from "effect";
6
+ import * as P from "effect/Predicate";
7
+ import path, { join } from "node:path";
8
+ import * as Crypto from "node:crypto";
5
9
  import { createHash, timingSafeEqual } from "node:crypto";
10
+ import { constants } from "node:fs";
11
+ import { homedir } from "node:os";
12
+ import { access, lstat, realpath } from "node:fs/promises";
6
13
  import { dual } from "effect/Function";
14
+ import * as Semaphore$1 from "effect/Semaphore";
15
+ import "effect/PlatformError";
16
+ //#region ../../packages/shared/src/Struct.ts
17
+ function deepMerge(current, patch) {
18
+ if (!P.isObject(current) || !P.isObject(patch)) return patch;
19
+ const next = { ...current };
20
+ for (const [key, value] of Object.entries(patch)) {
21
+ if (value === void 0) continue;
22
+ const existing = next[key];
23
+ next[key] = P.isObject(existing) && P.isObject(value) ? deepMerge(existing, value) : value;
24
+ }
25
+ return next;
26
+ }
27
+ //#endregion
28
+ //#region ../../packages/shared/src/model.ts
29
+ const DEFAULT_PROVIDER_DRIVER_KIND = ProviderDriverKind.make("codex");
30
+ /**
31
+ * Resolve the human-readable model title used by picker surfaces and durable
32
+ * handoff presentation. Provider catalogs are authoritative when they carry a
33
+ * friendly name; the routing slug remains the deterministic final fallback.
34
+ */
35
+ function getModelDisplayName(model, options) {
36
+ const shortName = trimOrNull(model.shortName);
37
+ const name = trimOrNull(model.name);
38
+ const slug = trimOrNull(model.slug) ?? model.slug;
39
+ return options?.preferShortName ? shortName ?? name ?? slug : name ?? shortName ?? slug;
40
+ }
41
+ /** Compose the optional sub-provider prefix exactly as the picker trigger does. */
42
+ function getModelDisplayLabel(model, options) {
43
+ const title = getModelDisplayName(model, options);
44
+ const subProvider = trimOrNull(model.subProvider);
45
+ return subProvider ? `${subProvider} · ${title}` : title;
46
+ }
47
+ function createModelCapabilities(input) {
48
+ return { optionDescriptors: input.optionDescriptors.map(cloneDescriptor) };
49
+ }
50
+ function getRawSelectionValueById(selections, id) {
51
+ return (selections?.find((candidate) => candidate.id === id))?.value;
52
+ }
53
+ function getProviderOptionSelectionValue(selections, id) {
54
+ return getRawSelectionValueById(selections, id);
55
+ }
56
+ function getProviderOptionStringSelectionValue(selections, id) {
57
+ const value = getProviderOptionSelectionValue(selections, id);
58
+ return typeof value === "string" ? value : void 0;
59
+ }
60
+ function getProviderOptionBooleanSelectionValue(selections, id) {
61
+ const value = getProviderOptionSelectionValue(selections, id);
62
+ return typeof value === "boolean" ? value : void 0;
63
+ }
64
+ function getModelSelectionStringOptionValue(modelSelection, id) {
65
+ return getProviderOptionStringSelectionValue(modelSelection?.options, id);
66
+ }
67
+ function getModelSelectionBooleanOptionValue(modelSelection, id) {
68
+ return getProviderOptionBooleanSelectionValue(modelSelection?.options, id);
69
+ }
70
+ function resolveDescriptorChoiceValue(descriptor, raw) {
71
+ const trimmed = trimOrNull(raw);
72
+ if (!trimmed) return descriptor.currentValue ?? descriptor.options.find((option) => option.isDefault)?.id;
73
+ if (descriptor.options.length === 0) return trimmed;
74
+ if (descriptor.promptInjectedValues?.includes(trimmed) && descriptor.options.some((option) => option.id === trimmed)) return descriptor.options.find((option) => option.isDefault)?.id;
75
+ if (descriptor.options.some((option) => option.id === trimmed)) return trimmed;
76
+ return descriptor.currentValue ?? descriptor.options.find((option) => option.isDefault)?.id;
77
+ }
78
+ function cloneDescriptor(descriptor) {
79
+ return descriptor.type === "select" ? {
80
+ ...descriptor,
81
+ options: [...descriptor.options],
82
+ ...descriptor.promptInjectedValues ? { promptInjectedValues: [...descriptor.promptInjectedValues] } : {}
83
+ } : { ...descriptor };
84
+ }
85
+ function cloneSelection(selection) {
86
+ return { ...selection };
87
+ }
88
+ function withDescriptorCurrentValue(descriptor, rawCurrentValue) {
89
+ if (descriptor.type === "boolean") {
90
+ if (typeof rawCurrentValue === "boolean") return {
91
+ ...descriptor,
92
+ currentValue: rawCurrentValue
93
+ };
94
+ return descriptor;
95
+ }
96
+ const currentValue = typeof rawCurrentValue === "string" ? resolveDescriptorChoiceValue(descriptor, rawCurrentValue) : resolveDescriptorChoiceValue(descriptor, descriptor.currentValue);
97
+ if (!currentValue) {
98
+ const { currentValue: _unusedCurrentValue, ...rest } = descriptor;
99
+ return rest;
100
+ }
101
+ return {
102
+ ...descriptor,
103
+ currentValue
104
+ };
105
+ }
106
+ function getProviderOptionDescriptors(input) {
107
+ const { caps, selections } = input;
108
+ return (caps.optionDescriptors ?? []).map(cloneDescriptor).map((descriptor) => withDescriptorCurrentValue(descriptor, getRawSelectionValueById(selections, descriptor.id) ?? descriptor.currentValue));
109
+ }
110
+ function getProviderOptionCurrentValue(descriptor) {
111
+ if (!descriptor) return;
112
+ if (descriptor.type === "boolean") return descriptor.currentValue;
113
+ if (descriptor.currentValue) return descriptor.currentValue;
114
+ return descriptor.options.find((option) => option.isDefault)?.id;
115
+ }
116
+ function normalizeModelSlug(model, provider = DEFAULT_PROVIDER_DRIVER_KIND) {
117
+ if (typeof model !== "string") return null;
118
+ const trimmed = model.trim();
119
+ if (!trimmed) return null;
120
+ const aliases = MODEL_SLUG_ALIASES_BY_PROVIDER[provider] ?? {};
121
+ const aliased = Object.prototype.hasOwnProperty.call(aliases, trimmed) ? aliases[trimmed] : void 0;
122
+ return typeof aliased === "string" ? aliased : trimmed;
123
+ }
124
+ /** Trim a string, returning null for empty/missing values. */
125
+ function trimOrNull(value) {
126
+ if (typeof value !== "string") return null;
127
+ return value.trim() || null;
128
+ }
129
+ function cloneSelections(selections) {
130
+ return selections.map(cloneSelection);
131
+ }
132
+ function createModelSelection(instanceId, model, options) {
133
+ const selections = options ? cloneSelections(options) : [];
134
+ const base = {
135
+ instanceId,
136
+ model
137
+ };
138
+ return selections.length > 0 ? {
139
+ ...base,
140
+ options: selections
141
+ } : base;
142
+ }
143
+ /**
144
+ * Context handoff is a provider-instance boundary. Model and option changes
145
+ * within one configured instance remain on that provider's normal turn path.
146
+ */
147
+ function modelSelectionRequiresContextHandoff(input) {
148
+ return input.canonicalSelection.instanceId !== input.targetSelection.instanceId;
149
+ }
150
+ /**
151
+ * Returns the effort value if it is a prompt-injected value according to
152
+ * any select descriptor in the given capabilities, or null otherwise.
153
+ *
154
+ * Unlike a single `find`, this checks every descriptor so that the
155
+ * correct descriptor's `promptInjectedValues` list is consulted even when
156
+ * multiple select descriptors exist.
157
+ */
158
+ function resolvePromptInjectedEffort(caps, rawEffort) {
159
+ const trimmed = trimOrNull(rawEffort);
160
+ if (!trimmed) return null;
161
+ const descriptors = getProviderOptionDescriptors({ caps });
162
+ for (const descriptor of descriptors) if (descriptor.type === "select" && descriptor.promptInjectedValues?.includes(trimmed)) return trimmed;
163
+ return null;
164
+ }
165
+ function applyClaudePromptEffortPrefix(text, effort) {
166
+ const trimmed = text.trim();
167
+ if (!trimmed) return trimmed;
168
+ if (effort !== "ultrathink") return trimmed;
169
+ if (trimmed.startsWith("Ultrathink:")) return trimmed;
170
+ return `Ultrathink:\n${trimmed}`;
171
+ }
172
+ //#endregion
173
+ //#region ../../packages/shared/src/serverSettings.ts
174
+ const ServerSettingsJson$1 = fromLenientJson(ServerSettings);
175
+ function normalizePersistedServerSettingString(value) {
176
+ const trimmed = value?.trim();
177
+ return trimmed && trimmed.length > 0 ? trimmed : void 0;
178
+ }
179
+ function extractPersistedServerObservabilitySettings(input) {
180
+ return {
181
+ otlpTracesUrl: normalizePersistedServerSettingString(input.observability?.otlpTracesUrl),
182
+ otlpMetricsUrl: normalizePersistedServerSettingString(input.observability?.otlpMetricsUrl)
183
+ };
184
+ }
185
+ function parsePersistedServerObservabilitySettings(raw) {
186
+ try {
187
+ return extractPersistedServerObservabilitySettings(Schema.decodeUnknownSync(ServerSettingsJson$1)(raw));
188
+ } catch {
189
+ return {
190
+ otlpTracesUrl: void 0,
191
+ otlpMetricsUrl: void 0
192
+ };
193
+ }
194
+ }
195
+ function shouldReplaceTextGenerationModelSelection(patch) {
196
+ return Boolean(patch && (patch.instanceId !== void 0 || patch.model !== void 0));
197
+ }
198
+ function mergeModelSelectionOptionsById(input) {
199
+ if (input.patch === void 0) return input.current ? [...input.current] : void 0;
200
+ if (input.patch.length === 0) return;
201
+ const merged = new Map((input.current ?? []).map((selection) => [selection.id, selection.value]));
202
+ for (const selection of input.patch) merged.set(selection.id, selection.value);
203
+ return [...merged.entries()].map(([id, value]) => ({
204
+ id,
205
+ value
206
+ }));
207
+ }
208
+ /**
209
+ * Applies a server settings patch while treating textGenerationModelSelection as
210
+ * replace-on-provider/model updates. This prevents stale nested options from
211
+ * surviving a reset patch that intentionally omits options.
212
+ */
213
+ function applyServerSettingsPatch(current, patch) {
214
+ const selectionPatch = patch.textGenerationModelSelection;
215
+ let next = deepMerge(current, patch);
216
+ if (patch.projectWorktreeRoots !== void 0) {
217
+ const roots = new Map(Object.entries(current.projectWorktreeRoots));
218
+ for (const [projectId, root] of Object.entries(patch.projectWorktreeRoots)) if (root === null || root === "") roots.delete(projectId);
219
+ else roots.set(projectId, root);
220
+ next = {
221
+ ...next,
222
+ projectWorktreeRoots: Object.fromEntries(roots)
223
+ };
224
+ }
225
+ const nextWithReplacements = patch.providerInstances !== void 0 ? {
226
+ ...next,
227
+ providerInstances: patch.providerInstances
228
+ } : next;
229
+ if (!selectionPatch) return nextWithReplacements;
230
+ const instanceId = selectionPatch.instanceId ?? current.textGenerationModelSelection.instanceId;
231
+ const model = selectionPatch.model ?? current.textGenerationModelSelection.model;
232
+ const options = shouldReplaceTextGenerationModelSelection(selectionPatch) ? selectionPatch.options : mergeModelSelectionOptionsById({
233
+ current: current.textGenerationModelSelection.options,
234
+ patch: selectionPatch.options
235
+ });
236
+ return {
237
+ ...nextWithReplacements,
238
+ textGenerationModelSelection: createModelSelection(instanceId, model, options)
239
+ };
240
+ }
241
+ //#endregion
7
242
  //#region ../../node_modules/.bun/cborg@6.1.2/node_modules/cborg/lib/is.js
8
243
  const objectTypeNames = [
9
244
  "Object",
@@ -129,7 +364,7 @@ var Token = class {
129
364
  //#endregion
130
365
  //#region ../../node_modules/.bun/cborg@6.1.2/node_modules/cborg/lib/byte-utils.js
131
366
  const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === "function";
132
- const textEncoder = new TextEncoder();
367
+ const textEncoder$1 = new TextEncoder();
133
368
  /**
134
369
  * @typedef {import('../interface.js').ByteView} ByteView
135
370
  * @typedef {import('../interface.js').AllocatedByteView} AllocatedByteView
@@ -158,7 +393,7 @@ const fromString = useBuffer ? (string) => {
158
393
  * @param {string} string
159
394
  */
160
395
  (string) => {
161
- return string.length >= FROM_STRING_THRESHOLD_TEXTENCODER ? textEncoder.encode(string) : utf8ToBytes(string);
396
+ return string.length >= FROM_STRING_THRESHOLD_TEXTENCODER ? textEncoder$1.encode(string) : utf8ToBytes(string);
162
397
  };
163
398
  /**
164
399
  * Buffer variant not fast enough for what we need
@@ -819,7 +1054,7 @@ function compareBytes(b1, b2) {
819
1054
  }
820
1055
  //#endregion
821
1056
  //#region ../../node_modules/.bun/cborg@6.1.2/node_modules/cborg/lib/3string.js
822
- const textDecoder = new TextDecoder();
1057
+ const textDecoder$1 = new TextDecoder();
823
1058
  const ASCII_THRESHOLD = 32;
824
1059
  /**
825
1060
  * @typedef {import('../interface.js').ByteWriter} ByteWriter
@@ -838,12 +1073,12 @@ function toStr(bytes, start, end) {
838
1073
  let str = "";
839
1074
  for (let i = start; i < end; i++) {
840
1075
  const c = bytes[i];
841
- if (c & 128) return textDecoder.decode(bytes.subarray(start, end));
1076
+ if (c & 128) return textDecoder$1.decode(bytes.subarray(start, end));
842
1077
  str += String.fromCharCode(c);
843
1078
  }
844
1079
  return str;
845
1080
  }
846
- return textDecoder.decode(bytes.subarray(start, end));
1081
+ return textDecoder$1.decode(bytes.subarray(start, end));
847
1082
  }
848
1083
  /**
849
1084
  * @param {Uint8Array} data
@@ -2739,6 +2974,27 @@ const resolveStaticDir = Effect.fn(function* () {
2739
2974
  if (yield* exists(join(monorepoClient, "index.html")).pipe(Effect.orElseSucceed(() => false))) return monorepoClient;
2740
2975
  });
2741
2976
  //#endregion
2977
+ //#region src/workspace/Services/WorkspaceAccessPolicy.ts
2978
+ /**
2979
+ * WorkspaceAccessPolicy - Process-wide boundary for Ryco-managed workspace paths.
2980
+ *
2981
+ * This service constrains paths accepted by Ryco RPCs. It does not sandbox child
2982
+ * processes such as terminals or coding-agent runtimes.
2983
+ *
2984
+ * @module WorkspaceAccessPolicy
2985
+ */
2986
+ var WorkspaceAccessDeniedError = class extends Schema.TaggedError()("WorkspaceAccessDeniedError", {
2987
+ operation: Schema.String,
2988
+ requestedPath: Schema.String,
2989
+ accessRoot: Schema.String,
2990
+ reason: Schema.Literals(["outsideRoot", "unresolvable"])
2991
+ }) {
2992
+ get message() {
2993
+ return `Workspace path is not available for ${this.operation}; access is restricted to '${this.accessRoot}'.`;
2994
+ }
2995
+ };
2996
+ var WorkspaceAccessPolicy = class extends Context.Service()("ryco/workspace/Services/WorkspaceAccessPolicy") {};
2997
+ //#endregion
2742
2998
  //#region src/observability/Attributes.ts
2743
2999
  function isPlainObject(value) {
2744
3000
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -3006,4 +3262,523 @@ const providerTurnMetricAttributes = (input) => {
3006
3262
  });
3007
3263
  };
3008
3264
  //#endregion
3009
- export { ensureServerDirectories as $, runtimeQueueBlockedDuration as A, startupCommandGateQueueHighWater as B, providerStartupQueueHighWater as C, providerTurnsTotal as D, providerTurnMetricAttributes as E, runtimeQueueHighWater as F, LocalDiagnosticsMetrics as G, terminalRestartsTotal as H, runtimeQueueOverflowsTotal as I, outcomeFromExit as J, LocalDiagnosticsMetricsLive as K, runtimeQueueRecoveriesTotal as L, runtimeQueueDepth as M, runtimeQueueDequeuesTotal as N, rpcRequestDuration as O, runtimeQueueEnqueuesTotal as P, deriveServerPaths as Q, startupCommandGateEnqueuesTotal as R, providerStartupQueueDepth as S, providerTurnDuration as T, terminalSessionsTotal as U, startupCommandGateQueueWaitDuration as V, withMetrics as W, RuntimeMode as X, DEFAULT_PORT as Y, ServerConfig as Z, providerRuntimeEventsTotal as _, contextHandoffsTotal as a, encodeNativeNodeClaimTranscript as at, providerStaleStopTimeoutsTotal as b, increment as c, equalNodeIdentityBytes as ct, orchestrationCommandAckDuration as d, normalizeHubNodeName as dt, resolveHubConnectorConfig as et, orchestrationCommandDuration as f, Tokeniser as ft, providerMetricAttributes as g, Type as gt, providerEventLogRecordsDroppedTotal as h, rfc8949EncodeOptions as ht, contextHandoffPreparationDuration as i, canonicalizeHubOrigin as it, runtimeQueueCoalescedTotal as j, rpcRequestsTotal as k, metricAttributes as l, fingerprintNodePublicKey as lt, orchestrationEventsProcessedTotal as m, encode as mt, contextHandoffContextEntriesTotal as n, resolveNodeE2eePolicyConfig as nt, gitCommandDuration as o, encodeNodeAuthenticationTranscript as ot, orchestrationCommandsTotal as p, decode as pt, compactTraceAttributes as q, contextHandoffDispatchDuration as r, resolveStaticDir as rt, gitCommandsTotal as s, encodeNodeKeyRotationTranscript as st, contextHandoffContextBytesTotal as t, resolveManagedWorktreesRoot as tt, metricNames as u, formatNodePublicKeyFingerprint as ut, providerRuntimeStaleEventsTotal as v, providerStartupQueueWaitDuration as w, providerStartupAdmissionTotal as x, providerSessionsTotal as y, startupCommandGateQueueDepth as z };
3265
+ //#region src/atomicWrite.ts
3266
+ const writeFileStringAtomically = (input) => Effect.scoped(Effect.gen(function* () {
3267
+ const fs = yield* FileSystem.FileSystem;
3268
+ const path = yield* Path.Path;
3269
+ const tempFileId = yield* Effect.sync(() => crypto.randomUUID());
3270
+ const targetDirectory = path.dirname(input.filePath);
3271
+ yield* fs.makeDirectory(targetDirectory, { recursive: true });
3272
+ const tempDirectory = yield* fs.makeTempDirectoryScoped({
3273
+ directory: targetDirectory,
3274
+ prefix: `${path.basename(input.filePath)}.`
3275
+ });
3276
+ const tempPath = path.join(tempDirectory, `${tempFileId}.tmp`);
3277
+ yield* fs.writeFileString(tempPath, input.contents);
3278
+ yield* fs.rename(tempPath, input.filePath);
3279
+ }));
3280
+ //#endregion
3281
+ //#region src/auth/Services/ServerSecretStore.ts
3282
+ var SecretStoreError = class extends Data.TaggedError("SecretStoreError") {};
3283
+ var ServerSecretStore = class extends Context.Service()("ryco/auth/Services/ServerSecretStore") {};
3284
+ //#endregion
3285
+ //#region src/auth/Layers/ServerSecretStore.ts
3286
+ const makeServerSecretStore = Effect.gen(function* () {
3287
+ const fileSystem = yield* FileSystem.FileSystem;
3288
+ const path = yield* Path.Path;
3289
+ const serverConfig = yield* ServerConfig;
3290
+ yield* fileSystem.makeDirectory(serverConfig.secretsDir, { recursive: true });
3291
+ yield* fileSystem.chmod(serverConfig.secretsDir, 448).pipe(Effect.mapError((cause) => new SecretStoreError({
3292
+ message: `Failed to secure secrets directory ${serverConfig.secretsDir}.`,
3293
+ cause
3294
+ })));
3295
+ const resolveSecretPath = (name) => path.join(serverConfig.secretsDir, `${name}.bin`);
3296
+ const ensureSecretDirectory = (secretPath) => {
3297
+ const directory = path.dirname(secretPath);
3298
+ return fileSystem.makeDirectory(directory, { recursive: true }).pipe(Effect.flatMap(() => fileSystem.chmod(directory, 448)));
3299
+ };
3300
+ const isPlatformError = (u) => Predicate.isTagged(u, "PlatformError");
3301
+ const get = (name) => fileSystem.readFile(resolveSecretPath(name)).pipe(Effect.map((bytes) => Uint8Array.from(bytes)), Effect.catch((cause) => cause.reason._tag === "NotFound" ? Effect.succeed(null) : Effect.fail(new SecretStoreError({
3302
+ message: `Failed to read secret ${name}.`,
3303
+ cause
3304
+ }))));
3305
+ const set = (name, value) => {
3306
+ const secretPath = resolveSecretPath(name);
3307
+ const tempPath = `${secretPath}.${Crypto.randomUUID()}.tmp`;
3308
+ return Effect.gen(function* () {
3309
+ yield* ensureSecretDirectory(secretPath);
3310
+ yield* fileSystem.writeFile(tempPath, value);
3311
+ yield* fileSystem.chmod(tempPath, 384);
3312
+ yield* fileSystem.rename(tempPath, secretPath);
3313
+ yield* fileSystem.chmod(secretPath, 384);
3314
+ }).pipe(Effect.catch((cause) => fileSystem.remove(tempPath).pipe(Effect.ignore, Effect.flatMap(() => Effect.fail(new SecretStoreError({
3315
+ message: `Failed to persist secret ${name}.`,
3316
+ cause
3317
+ }))))));
3318
+ };
3319
+ const create = (name, value) => {
3320
+ const secretPath = resolveSecretPath(name);
3321
+ return Effect.scoped(Effect.gen(function* () {
3322
+ yield* ensureSecretDirectory(secretPath);
3323
+ const file = yield* fileSystem.open(secretPath, {
3324
+ flag: "wx",
3325
+ mode: 384
3326
+ });
3327
+ yield* file.writeAll(value);
3328
+ yield* file.sync;
3329
+ yield* fileSystem.chmod(secretPath, 384);
3330
+ })).pipe(Effect.mapError((cause) => new SecretStoreError({
3331
+ message: `Failed to persist secret ${name}.`,
3332
+ cause
3333
+ })));
3334
+ };
3335
+ const getOrCreateRandom = (name, bytes) => get(name).pipe(Effect.flatMap((existing) => {
3336
+ if (existing) return Effect.succeed(existing);
3337
+ const generated = Crypto.randomBytes(bytes);
3338
+ return create(name, generated).pipe(Effect.as(Uint8Array.from(generated)), Effect.catchTag("SecretStoreError", (error) => isPlatformError(error.cause) && error.cause.reason._tag === "AlreadyExists" ? get(name).pipe(Effect.flatMap((created) => created !== null ? Effect.succeed(created) : Effect.fail(new SecretStoreError({ message: `Failed to read secret ${name} after concurrent creation.` })))) : Effect.fail(error)));
3339
+ }));
3340
+ const remove = (name) => fileSystem.remove(resolveSecretPath(name)).pipe(Effect.catch((cause) => cause.reason._tag === "NotFound" ? Effect.void : Effect.fail(new SecretStoreError({
3341
+ message: `Failed to remove secret ${name}.`,
3342
+ cause
3343
+ }))));
3344
+ return {
3345
+ get,
3346
+ set,
3347
+ getOrCreateRandom,
3348
+ remove
3349
+ };
3350
+ });
3351
+ const ServerSecretStoreLive = Layer.effect(ServerSecretStore, makeServerSecretStore);
3352
+ //#endregion
3353
+ //#region src/pathExpansion.ts
3354
+ /**
3355
+ * Expand a leading `~` (or `~/…`, `~\…`) in a user-supplied path to the
3356
+ * current user's home directory. Spawned processes don't get shell
3357
+ * expansion, so env vars like `CODEX_HOME=~/.codex-work` would be passed
3358
+ * verbatim and treated as relative paths by the receiver.
3359
+ *
3360
+ * Matches the behavior of the other `expandHomePath` helpers in the
3361
+ * workspace layers and CLI bootstrap: `~` alone and both `~/` and `~\`
3362
+ * separators are handled. Returns the input unchanged if it doesn't
3363
+ * start with `~` or is empty. Does not handle `~user` (other-user)
3364
+ * expansion.
3365
+ */
3366
+ function expandHomePath(value) {
3367
+ if (!value) return value;
3368
+ if (value === "~") return homedir();
3369
+ if (value.startsWith("~/") || value.startsWith("~\\")) return join(homedir(), value.slice(2));
3370
+ return value;
3371
+ }
3372
+ //#endregion
3373
+ //#region src/project/worktreeRoot.ts
3374
+ var WorktreeRootError = class extends Schema.TaggedError()("WorktreeRootError", { detail: Schema.String }) {
3375
+ get message() {
3376
+ return this.detail;
3377
+ }
3378
+ };
3379
+ /** Resolve missing descendants through the nearest existing directory, including symlink aliases.
3380
+ * Do not turn permission errors or dangling symlinks into nonexistent ancestors.
3381
+ * No directories are created while validating a preference.
3382
+ */
3383
+ async function canonicalizeWorktreeDirectory(candidate) {
3384
+ let ancestor = candidate;
3385
+ while (true) try {
3386
+ await lstat(ancestor);
3387
+ const canonical = await realpath(ancestor);
3388
+ if (!(await lstat(canonical)).isDirectory()) throw new Error("Worktree root must be a directory.");
3389
+ await access(canonical, constants.W_OK | constants.X_OK);
3390
+ return path.join(canonical, path.relative(ancestor, candidate));
3391
+ } catch (cause) {
3392
+ if (cause.code !== "ENOENT") throw cause;
3393
+ if (await lstat(ancestor).catch((error) => {
3394
+ if (error.code !== "ENOENT") throw error;
3395
+ return null;
3396
+ }) !== null) throw new Error("Worktree root contains a dangling symlink.", { cause });
3397
+ const parent = path.dirname(ancestor);
3398
+ if (parent === ancestor) throw cause;
3399
+ ancestor = parent;
3400
+ }
3401
+ }
3402
+ const validateWorktreeRoot = (value, policy) => Effect.gen(function* () {
3403
+ const trimmed = value.trim();
3404
+ const expanded = expandHomePath(trimmed);
3405
+ if (!trimmed || /[\x00-\x1f\x7f]/.test(trimmed) || !path.isAbsolute(expanded) || process.platform === "win32" && !/^(?:[A-Za-z]:[\\/]|\\\\[^\\]+\\[^\\]+)/.test(expanded)) return yield* new WorktreeRootError({ detail: "Worktree root must be an absolute directory on this node or start with ~/." });
3406
+ const operation = "worktree root";
3407
+ const authorized = yield* policy.assertPath({
3408
+ path: path.normalize(expanded),
3409
+ operation
3410
+ }).pipe(Effect.mapError((cause) => new WorktreeRootError({ detail: cause.message })));
3411
+ const canonical = yield* Effect.tryPromise({
3412
+ try: () => canonicalizeWorktreeDirectory(authorized),
3413
+ catch: () => new WorktreeRootError({ detail: "Worktree root must resolve to a writable directory (or have a writable existing parent), without broken symlinks." })
3414
+ });
3415
+ return yield* policy.assertPath({
3416
+ path: canonical,
3417
+ operation
3418
+ }).pipe(Effect.mapError((cause) => new WorktreeRootError({ detail: cause.message })));
3419
+ });
3420
+ /** Storage selection only: this never grants access to the selected directory's contents. */
3421
+ const selectConfiguredWorktreeRoot = (input) => (input.projectId && Object.hasOwn(input.settings.projectWorktreeRoots, input.projectId) ? input.settings.projectWorktreeRoots[input.projectId] : null) || input.settings.worktreeRoot || resolveManagedWorktreesRoot(input.config);
3422
+ const resolveConfiguredWorktreeRoot = (input) => validateWorktreeRoot(selectConfiguredWorktreeRoot(input), input.policy);
3423
+ //#endregion
3424
+ //#region src/workspace/Layers/WorkspaceAccessPolicy.ts
3425
+ function isWithinOrEqual(path, root, target) {
3426
+ const relative = path.relative(root, target);
3427
+ return relative.length === 0 || relative === "." || !relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative);
3428
+ }
3429
+ const makeWorkspaceAccessPolicy = (configuredRoot) => Effect.gen(function* () {
3430
+ const fileSystem = yield* FileSystem.FileSystem;
3431
+ const path = yield* Path.Path;
3432
+ const accessRoot = configuredRoot === void 0 ? void 0 : yield* fileSystem.realPath(configuredRoot);
3433
+ const denied = (input, reason) => new WorkspaceAccessDeniedError({
3434
+ operation: input.operation,
3435
+ requestedPath: input.path,
3436
+ accessRoot: accessRoot ?? "",
3437
+ reason
3438
+ });
3439
+ const assertInside = (input, target) => {
3440
+ if (accessRoot === void 0 || isWithinOrEqual(path, accessRoot, target)) return Effect.succeed(target);
3441
+ return Effect.fail(denied(input, "outsideRoot"));
3442
+ };
3443
+ const assertExistingPath = Effect.fn("WorkspaceAccessPolicy.assertExistingPath")(function* (input) {
3444
+ const normalized = path.resolve(input.path);
3445
+ if (accessRoot === void 0) return normalized;
3446
+ const canonical = yield* fileSystem.realPath(normalized).pipe(Effect.mapError(() => denied(input, "unresolvable")));
3447
+ return yield* assertInside(input, canonical);
3448
+ });
3449
+ const assertPath = Effect.fn("WorkspaceAccessPolicy.assertPath")(function* (input) {
3450
+ const normalized = path.resolve(input.path);
3451
+ if (accessRoot === void 0) return normalized;
3452
+ let ancestor = normalized;
3453
+ while (!(yield* fileSystem.exists(ancestor).pipe(Effect.orElseSucceed(() => false)))) {
3454
+ const parent = path.dirname(ancestor);
3455
+ if (parent === ancestor) return yield* denied(input, "unresolvable");
3456
+ ancestor = parent;
3457
+ }
3458
+ const canonicalAncestor = yield* fileSystem.realPath(ancestor).pipe(Effect.mapError(() => denied(input, "unresolvable")));
3459
+ const canonicalTarget = path.resolve(canonicalAncestor, path.relative(ancestor, normalized));
3460
+ return yield* assertInside(input, canonicalTarget);
3461
+ });
3462
+ return {
3463
+ accessRoot,
3464
+ isRestricted: accessRoot !== void 0,
3465
+ assertPath,
3466
+ assertExistingPath
3467
+ };
3468
+ });
3469
+ const WorkspaceAccessPolicyLive = Layer.effect(WorkspaceAccessPolicy, Effect.gen(function* () {
3470
+ const config = yield* ServerConfig;
3471
+ return yield* makeWorkspaceAccessPolicy(config.workspaceAccessRoot);
3472
+ }));
3473
+ //#endregion
3474
+ //#region src/serverSettings.ts
3475
+ /**
3476
+ * ServerSettings - Server-authoritative settings service.
3477
+ *
3478
+ * Owns persistence, validation, and change notification of settings that affect
3479
+ * server-side behavior (binary paths, streaming mode, env mode, custom models,
3480
+ * text generation model selection).
3481
+ *
3482
+ * Follows the same pattern as `keybindings.ts`: JSON file + Cache + PubSub +
3483
+ * Semaphore + FileSystem.watch for concurrency and external edit detection.
3484
+ *
3485
+ * @module ServerSettings
3486
+ */
3487
+ const textEncoder = new TextEncoder();
3488
+ const textDecoder = new TextDecoder();
3489
+ function providerEnvironmentSecretName(input) {
3490
+ return `provider-env-${Buffer.from(input.instanceId, "utf8").toString("base64url")}-${Buffer.from(input.name, "utf8").toString("base64url")}`;
3491
+ }
3492
+ function redactProviderEnvironmentVariable(variable) {
3493
+ if (!variable.sensitive) {
3494
+ const { valueRedacted: _omit, ...rest } = variable;
3495
+ return rest;
3496
+ }
3497
+ return {
3498
+ ...variable,
3499
+ value: "",
3500
+ ...variable.value.length > 0 || variable.valueRedacted ? { valueRedacted: true } : {}
3501
+ };
3502
+ }
3503
+ function redactServerSettingsForClient(settings) {
3504
+ const providerInstances = Object.fromEntries(Object.entries(settings.providerInstances).map(([instanceId, instance]) => [instanceId, instance.environment ? {
3505
+ ...instance,
3506
+ environment: instance.environment.map(redactProviderEnvironmentVariable)
3507
+ } : instance]));
3508
+ return {
3509
+ ...settings,
3510
+ providerInstances
3511
+ };
3512
+ }
3513
+ var ServerSettingsService = class ServerSettingsService extends Context.Service()("ryco/serverSettings/ServerSettingsService") {
3514
+ static layerTest = (overrides = {}) => Layer.effect(ServerSettingsService, Effect.gen(function* () {
3515
+ const currentSettingsRef = yield* Ref.make(deepMerge(DEFAULT_SERVER_SETTINGS, overrides));
3516
+ return {
3517
+ start: Effect.void,
3518
+ ready: Effect.void,
3519
+ getSettings: Ref.get(currentSettingsRef),
3520
+ updateSettings: (patch) => Ref.get(currentSettingsRef).pipe(Effect.flatMap((currentSettings) => Schema.decodeEffect(ServerSettings)(applyServerSettingsPatch(currentSettings, patch)).pipe(Effect.mapError((cause) => new ServerSettingsError({
3521
+ settingsPath: "<memory>",
3522
+ detail: `failed to normalize server settings: ${SchemaIssue.makeFormatterDefault()(cause.issue)}`,
3523
+ cause
3524
+ })))), Effect.tap((nextSettings) => Ref.set(currentSettingsRef, nextSettings))),
3525
+ streamChanges: Stream.empty
3526
+ };
3527
+ }));
3528
+ };
3529
+ const ServerSettingsJson = fromLenientJson(ServerSettings);
3530
+ const getLegacyProviderSettings = (settings, provider) => settings.providers[provider];
3531
+ /**
3532
+ * Ensure the `textGenerationModelSelection` points to an enabled provider.
3533
+ * If the selected provider is disabled, fall back to the first enabled
3534
+ * provider with its default model. This is applied at read-time so the
3535
+ * persisted preference is preserved for when a provider is re-enabled.
3536
+ */
3537
+ function resolveTextGenerationProvider(settings) {
3538
+ const selection = settings.textGenerationModelSelection;
3539
+ const instanceConfig = settings.providerInstances[selection.instanceId];
3540
+ if (instanceConfig !== void 0) return instanceConfig.enabled ?? true ? settings : fallbackTextGenerationProvider(settings);
3541
+ if (isProviderDriverKind(selection.instanceId) && getLegacyProviderSettings(settings, selection.instanceId)?.enabled) return settings;
3542
+ return fallbackTextGenerationProvider(settings);
3543
+ }
3544
+ function fallbackTextGenerationProvider(settings) {
3545
+ const fallbackEntry = Object.entries(settings.providers).find(([, provider]) => provider.enabled);
3546
+ const fallback = fallbackEntry ? ProviderDriverKind.make(fallbackEntry[0]) : void 0;
3547
+ if (!fallback) return settings;
3548
+ const defaultOptions = DEFAULT_GIT_TEXT_GENERATION_OPTIONS_BY_PROVIDER[fallback];
3549
+ return {
3550
+ ...settings,
3551
+ textGenerationModelSelection: {
3552
+ instanceId: ProviderInstanceId.make(fallback),
3553
+ model: DEFAULT_GIT_TEXT_GENERATION_MODEL_BY_PROVIDER[fallback] ?? "gpt-5.6-luna",
3554
+ ...defaultOptions ? { options: defaultOptions } : {}
3555
+ }
3556
+ };
3557
+ }
3558
+ const ATOMIC_SETTINGS_KEYS = /* @__PURE__ */ new Set(["textGenerationModelSelection"]);
3559
+ function stripDefaultServerSettings(current, defaults) {
3560
+ if (Array.isArray(current) || Array.isArray(defaults)) return Equal.equals(current, defaults) ? void 0 : current;
3561
+ if (current !== null && defaults !== null && typeof current === "object" && typeof defaults === "object") {
3562
+ const currentRecord = current;
3563
+ const defaultsRecord = defaults;
3564
+ const next = {};
3565
+ for (const key of Object.keys(currentRecord)) if (ATOMIC_SETTINGS_KEYS.has(key)) {
3566
+ if (!Equal.equals(currentRecord[key], defaultsRecord[key])) next[key] = currentRecord[key];
3567
+ } else {
3568
+ const stripped = stripDefaultServerSettings(currentRecord[key], defaultsRecord[key]);
3569
+ if (stripped !== void 0) next[key] = stripped;
3570
+ }
3571
+ return Object.keys(next).length > 0 ? next : void 0;
3572
+ }
3573
+ return Object.is(current, defaults) ? void 0 : current;
3574
+ }
3575
+ const makeServerSettings = Effect.gen(function* () {
3576
+ const { settingsPath, workspaceAccessRoot } = yield* ServerConfig;
3577
+ const worktreeAccessPolicy = yield* makeWorkspaceAccessPolicy(workspaceAccessRoot);
3578
+ const fs = yield* FileSystem.FileSystem;
3579
+ const pathService = yield* Path.Path;
3580
+ const secretStore = yield* ServerSecretStore;
3581
+ const writeSemaphore = yield* Semaphore$1.make(1);
3582
+ const cacheKey = "settings";
3583
+ const changesPubSub = yield* PubSub.unbounded();
3584
+ const startedRef = yield* Ref.make(false);
3585
+ const startedDeferred = yield* Deferred.make();
3586
+ const watcherScope = yield* Scope.make("sequential");
3587
+ yield* Effect.addFinalizer(() => Scope.close(watcherScope, Exit.void));
3588
+ const emitChange = (settings) => PubSub.publish(changesPubSub, settings).pipe(Effect.asVoid);
3589
+ const readConfigExists = fs.exists(settingsPath).pipe(Effect.mapError((cause) => new ServerSettingsError({
3590
+ settingsPath,
3591
+ detail: "failed to check settings file existence",
3592
+ cause
3593
+ })));
3594
+ const readRawConfig = fs.readFileString(settingsPath).pipe(Effect.mapError((cause) => new ServerSettingsError({
3595
+ settingsPath,
3596
+ detail: "failed to read settings file",
3597
+ cause
3598
+ })));
3599
+ const loadSettingsFromDisk = Effect.gen(function* () {
3600
+ if (!(yield* readConfigExists)) return DEFAULT_SERVER_SETTINGS;
3601
+ const raw = yield* readRawConfig;
3602
+ const decoded = Schema.decodeUnknownExit(ServerSettingsJson)(raw);
3603
+ if (decoded._tag === "Failure") {
3604
+ yield* Effect.logWarning("failed to parse settings.json, using defaults", {
3605
+ path: settingsPath,
3606
+ issues: Cause.pretty(decoded.cause)
3607
+ });
3608
+ return DEFAULT_SERVER_SETTINGS;
3609
+ }
3610
+ return decoded.value;
3611
+ });
3612
+ const settingsCache = yield* Cache.make({
3613
+ capacity: 1,
3614
+ lookup: () => loadSettingsFromDisk
3615
+ });
3616
+ const getSettingsFromCache = Cache.get(settingsCache, cacheKey);
3617
+ const toSettingsError = (detail, cause) => new ServerSettingsError({
3618
+ settingsPath,
3619
+ detail,
3620
+ cause
3621
+ });
3622
+ const materializeProviderEnvironmentSecrets = (settings) => Effect.gen(function* () {
3623
+ const providerInstances = { ...settings.providerInstances };
3624
+ for (const [instanceId, instance] of Object.entries(settings.providerInstances)) {
3625
+ if (!instance.environment) continue;
3626
+ const environment = [];
3627
+ for (const variable of instance.environment) {
3628
+ if (!variable.sensitive || !variable.valueRedacted) {
3629
+ environment.push(variable);
3630
+ continue;
3631
+ }
3632
+ const secret = yield* secretStore.get(providerEnvironmentSecretName({
3633
+ instanceId,
3634
+ name: variable.name
3635
+ })).pipe(Effect.mapError((cause) => toSettingsError(`failed to read sensitive environment variable ${variable.name}`, cause)));
3636
+ environment.push({
3637
+ ...variable,
3638
+ value: secret ? textDecoder.decode(secret) : ""
3639
+ });
3640
+ }
3641
+ providerInstances[instanceId] = {
3642
+ ...instance,
3643
+ environment
3644
+ };
3645
+ }
3646
+ return {
3647
+ ...settings,
3648
+ providerInstances
3649
+ };
3650
+ });
3651
+ const persistProviderEnvironmentSecrets = (current, next) => Effect.gen(function* () {
3652
+ const providerInstances = { ...next.providerInstances };
3653
+ const nextSecretKeys = /* @__PURE__ */ new Set();
3654
+ for (const [instanceId, instance] of Object.entries(next.providerInstances)) {
3655
+ if (!instance.environment) continue;
3656
+ const environment = [];
3657
+ for (const variable of instance.environment) {
3658
+ const secretName = providerEnvironmentSecretName({
3659
+ instanceId,
3660
+ name: variable.name
3661
+ });
3662
+ if (!variable.sensitive) {
3663
+ yield* secretStore.remove(secretName).pipe(Effect.mapError((cause) => toSettingsError(`failed to remove environment secret ${variable.name}`, cause)));
3664
+ environment.push(redactProviderEnvironmentVariable(variable));
3665
+ continue;
3666
+ }
3667
+ nextSecretKeys.add(secretName);
3668
+ if (!variable.valueRedacted) {
3669
+ if (variable.value.length > 0) {
3670
+ yield* secretStore.set(secretName, textEncoder.encode(variable.value)).pipe(Effect.mapError((cause) => toSettingsError(`failed to persist environment secret ${variable.name}`, cause)));
3671
+ environment.push({
3672
+ ...variable,
3673
+ value: "",
3674
+ valueRedacted: true
3675
+ });
3676
+ } else {
3677
+ yield* secretStore.remove(secretName).pipe(Effect.mapError((cause) => toSettingsError(`failed to remove environment secret ${variable.name}`, cause)));
3678
+ const { valueRedacted: _omit, ...rest } = variable;
3679
+ environment.push(rest);
3680
+ }
3681
+ continue;
3682
+ }
3683
+ environment.push(redactProviderEnvironmentVariable(variable));
3684
+ }
3685
+ providerInstances[instanceId] = {
3686
+ ...instance,
3687
+ environment
3688
+ };
3689
+ }
3690
+ for (const [instanceId, instance] of Object.entries(current.providerInstances)) for (const variable of instance.environment ?? []) {
3691
+ if (!variable.sensitive) continue;
3692
+ const secretName = providerEnvironmentSecretName({
3693
+ instanceId,
3694
+ name: variable.name
3695
+ });
3696
+ if (nextSecretKeys.has(secretName)) continue;
3697
+ yield* secretStore.remove(secretName).pipe(Effect.mapError((cause) => toSettingsError(`failed to remove stale environment secret ${variable.name}`, cause)));
3698
+ }
3699
+ return {
3700
+ ...next,
3701
+ providerInstances
3702
+ };
3703
+ });
3704
+ const writeSettingsAtomically = (settings) => {
3705
+ const sparseSettings = stripDefaultServerSettings(settings, DEFAULT_SERVER_SETTINGS) ?? {};
3706
+ return writeFileStringAtomically({
3707
+ filePath: settingsPath,
3708
+ contents: `${JSON.stringify(sparseSettings, null, 2)}\n`
3709
+ }).pipe(Effect.provideService(FileSystem.FileSystem, fs), Effect.provideService(Path.Path, pathService), Effect.mapError((cause) => new ServerSettingsError({
3710
+ settingsPath,
3711
+ detail: "failed to write settings file",
3712
+ cause
3713
+ })));
3714
+ };
3715
+ const revalidateAndEmit = writeSemaphore.withPermits(1)(Effect.gen(function* () {
3716
+ yield* Cache.invalidate(settingsCache, cacheKey);
3717
+ const settings = yield* getSettingsFromCache;
3718
+ yield* emitChange(settings);
3719
+ }));
3720
+ const startWatcher = Effect.gen(function* () {
3721
+ const settingsDir = pathService.dirname(settingsPath);
3722
+ const settingsFile = pathService.basename(settingsPath);
3723
+ const settingsPathResolved = pathService.resolve(settingsPath);
3724
+ yield* fs.makeDirectory(settingsDir, { recursive: true }).pipe(Effect.mapError((cause) => new ServerSettingsError({
3725
+ settingsPath,
3726
+ detail: "failed to prepare settings directory",
3727
+ cause
3728
+ })));
3729
+ const revalidateAndEmitSafely = revalidateAndEmit.pipe(Effect.ignoreCause({ log: true }));
3730
+ const debouncedSettingsEvents = fs.watch(settingsDir).pipe(Stream.filter((event) => {
3731
+ return event.path === settingsFile || event.path === settingsPath || pathService.resolve(settingsDir, event.path) === settingsPathResolved;
3732
+ }), Stream.debounce(Duration.millis(100)));
3733
+ yield* Stream.runForEach(debouncedSettingsEvents, () => revalidateAndEmitSafely).pipe(Effect.ignoreCause({ log: true }), Effect.forkIn(watcherScope), Effect.asVoid);
3734
+ });
3735
+ return {
3736
+ start: Effect.gen(function* () {
3737
+ if (!(yield* Ref.modify(startedRef, (started) => [!started, true]))) return yield* Deferred.await(startedDeferred);
3738
+ const startup = Effect.gen(function* () {
3739
+ yield* startWatcher;
3740
+ yield* Cache.invalidate(settingsCache, cacheKey);
3741
+ yield* getSettingsFromCache;
3742
+ });
3743
+ const startupExit = yield* Effect.exit(startup);
3744
+ if (startupExit._tag === "Failure") {
3745
+ yield* Deferred.failCause(startedDeferred, startupExit.cause).pipe(Effect.orDie);
3746
+ return yield* Effect.failCause(startupExit.cause);
3747
+ }
3748
+ yield* Deferred.succeed(startedDeferred, void 0).pipe(Effect.orDie);
3749
+ }),
3750
+ ready: Deferred.await(startedDeferred),
3751
+ getSettings: getSettingsFromCache.pipe(Effect.flatMap(materializeProviderEnvironmentSecrets), Effect.map(resolveTextGenerationProvider)),
3752
+ updateSettings: (patch) => writeSemaphore.withPermits(1)(Effect.gen(function* () {
3753
+ const current = yield* getSettingsFromCache;
3754
+ const normalizedPatch = { ...patch };
3755
+ const validateRoot = (root) => validateWorktreeRoot(root, worktreeAccessPolicy).pipe(Effect.mapError((cause) => new ServerSettingsError({
3756
+ settingsPath,
3757
+ detail: cause.message,
3758
+ cause
3759
+ })));
3760
+ if (patch.worktreeRoot) normalizedPatch.worktreeRoot = yield* validateRoot(patch.worktreeRoot);
3761
+ if (patch.projectWorktreeRoots !== void 0) {
3762
+ const roots = [];
3763
+ for (const [id, root] of Object.entries(patch.projectWorktreeRoots)) roots.push([id, root ? yield* validateRoot(root) : null]);
3764
+ normalizedPatch.projectWorktreeRoots = Object.fromEntries(roots);
3765
+ }
3766
+ const nextPersisted = yield* persistProviderEnvironmentSecrets(current, applyServerSettingsPatch(current, normalizedPatch));
3767
+ const next = yield* Schema.decodeEffect(ServerSettings)(nextPersisted).pipe(Effect.mapError((cause) => new ServerSettingsError({
3768
+ settingsPath: "<memory>",
3769
+ detail: `failed to normalize server settings: ${SchemaIssue.makeFormatterDefault()(cause.issue)}`,
3770
+ cause
3771
+ })));
3772
+ yield* writeSettingsAtomically(next);
3773
+ yield* Cache.set(settingsCache, cacheKey, next);
3774
+ yield* emitChange(next);
3775
+ return resolveTextGenerationProvider(yield* materializeProviderEnvironmentSecrets(next));
3776
+ })),
3777
+ get streamChanges() {
3778
+ return Stream.fromPubSub(changesPubSub).pipe(Stream.mapEffect((settings) => materializeProviderEnvironmentSecrets(settings).pipe(Effect.catch((error) => Effect.logWarning("failed to materialize provider environment secrets", { detail: error.detail }).pipe(Effect.as(settings))))), Stream.map(resolveTextGenerationProvider));
3779
+ }
3780
+ };
3781
+ });
3782
+ const ServerSettingsLive = Layer.effect(ServerSettingsService, makeServerSettings).pipe(Layer.provide(ServerSecretStoreLive));
3783
+ //#endregion
3784
+ export { startupCommandGateQueueWaitDuration as $, providerRuntimeStaleEventsTotal as A, parsePersistedServerObservabilitySettings as At, rpcRequestDuration as B, modelSelectionRequiresContextHandoff as Bt, orchestrationCommandAckDuration as C, formatNodePublicKeyFingerprint as Ct, providerEventLogRecordsDroppedTotal as D, encode as Dt, orchestrationEventsProcessedTotal as E, decode as Et, providerStartupQueueHighWater as F, getModelSelectionStringOptionValue as Ft, runtimeQueueDequeuesTotal as G, runtimeQueueBlockedDuration as H, resolvePromptInjectedEffort as Ht, providerStartupQueueWaitDuration as I, getProviderOptionBooleanSelectionValue as It, runtimeQueueOverflowsTotal as J, runtimeQueueEnqueuesTotal as K, providerTurnDuration as L, getProviderOptionCurrentValue as Lt, providerStaleStopTimeoutsTotal as M, createModelCapabilities as Mt, providerStartupAdmissionTotal as N, getModelDisplayLabel as Nt, providerMetricAttributes as O, rfc8949EncodeOptions as Ot, providerStartupQueueDepth as P, getModelSelectionBooleanOptionValue as Pt, startupCommandGateQueueHighWater as Q, providerTurnMetricAttributes as R, getProviderOptionDescriptors as Rt, metricNames as S, fingerprintNodePublicKey as St, orchestrationCommandsTotal as T, Tokeniser as Tt, runtimeQueueCoalescedTotal as U, rpcRequestsTotal as V, normalizeModelSlug as Vt, runtimeQueueDepth as W, startupCommandGateEnqueuesTotal as X, runtimeQueueRecoveriesTotal as Y, startupCommandGateQueueDepth as Z, contextHandoffsTotal as _, canonicalizeHubOrigin as _t, makeWorkspaceAccessPolicy as a, compactTraceAttributes as at, increment as b, encodeNodeKeyRotationTranscript as bt, validateWorktreeRoot as c, DEFAULT_PORT as ct, ServerSecretStore as d, deriveServerPaths as dt, terminalRestartsTotal as et, writeFileStringAtomically as f, ensureServerDirectories as ft, contextHandoffPreparationDuration as g, resolveStaticDir as gt, contextHandoffDispatchDuration as h, resolveNodeE2eePolicyConfig as ht, WorkspaceAccessPolicyLive as i, LocalDiagnosticsMetricsLive as it, providerSessionsTotal as j, applyClaudePromptEffortPrefix as jt, providerRuntimeEventsTotal as k, Type as kt, expandHomePath as l, RuntimeMode as lt, contextHandoffContextEntriesTotal as m, resolveManagedWorktreesRoot as mt, ServerSettingsService as n, withMetrics as nt, resolveConfiguredWorktreeRoot as o, outcomeFromExit as ot, contextHandoffContextBytesTotal as p, resolveHubConnectorConfig as pt, runtimeQueueHighWater as q, redactServerSettingsForClient as r, LocalDiagnosticsMetrics as rt, selectConfiguredWorktreeRoot as s, WorkspaceAccessPolicy as st, ServerSettingsLive as t, terminalSessionsTotal as tt, ServerSecretStoreLive as u, ServerConfig as ut, gitCommandDuration as v, encodeNativeNodeClaimTranscript as vt, orchestrationCommandDuration as w, normalizeHubNodeName as wt, metricAttributes as x, equalNodeIdentityBytes as xt, gitCommandsTotal as y, encodeNodeAuthenticationTranscript as yt, providerTurnsTotal as z, getProviderOptionStringSelectionValue as zt };