ryco-cli 0.1.24 → 0.1.26

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 (303) hide show
  1. package/dist/{GrokDriver-DSPEmiwq.mjs → AcpAdapter-BemMQNbj.mjs} +102 -604
  2. package/dist/{GrokDriver-RyyFeh_q.cjs → AcpAdapter-CadxcdZV.cjs} +129 -612
  3. package/dist/AcpNativeLogging-BsbZRRD7.mjs +312 -0
  4. package/dist/AcpNativeLogging-DZPZNoju.cjs +383 -0
  5. package/dist/AcpRegistryDriver-BfCPf8FX.cjs +222 -0
  6. package/dist/AcpRegistryDriver-BpXCjh9I.mjs +221 -0
  7. package/dist/{AzureDevOpsSourceControlProvider-CrvgKNf2.cjs → AzureDevOpsSourceControlProvider-B9N_8NJg.cjs} +14 -14
  8. package/dist/{AzureDevOpsSourceControlProvider-BNGEg1R8.mjs → AzureDevOpsSourceControlProvider-BcQO_CyW.mjs} +3 -3
  9. package/dist/{BitbucketSourceControlProvider-Bt21jw68.mjs → BitbucketSourceControlProvider-BTUY2ZT8.mjs} +3 -3
  10. package/dist/{BitbucketSourceControlProvider-BzhsQwH-.cjs → BitbucketSourceControlProvider-C9WuwvY2.cjs} +14 -14
  11. package/dist/{BunPTY-TbHbSc8S.mjs → BunPTY-DdnqQAdw.mjs} +1 -1
  12. package/dist/{ClaudeDriver-B7mbf51W.cjs → ClaudeDriver-BSTxNNGO.cjs} +162 -126
  13. package/dist/{ClaudeDriver-C4yu7Jit.mjs → ClaudeDriver-Csnp78qR.mjs} +129 -93
  14. package/dist/{CodexDriver-CR0S17Lb.cjs → CodexDriver-BK4HVNV4.cjs} +145 -60
  15. package/dist/{CodexDriver-DnnqkGoY.mjs → CodexDriver-fwcV84hX.mjs} +99 -14
  16. package/dist/{CodexTextGeneration-tlfe1S5W.cjs → CodexTextGeneration-Y2GSS7f1.cjs} +145 -99
  17. package/dist/{CodexTextGeneration-Cw-FZbSS.mjs → CodexTextGeneration-_4aT5BHa.mjs} +141 -95
  18. package/dist/{CopilotDriver-GxKLX5pL.mjs → CopilotDriver-B12ZJ-L_.mjs} +69 -7
  19. package/dist/{CopilotDriver-IBd27Ji2.cjs → CopilotDriver-C7IyIwVW.cjs} +98 -36
  20. package/dist/{CursorDriver-C4Enoe9N.cjs → CursorDriver-BWmCfJ-w.cjs} +38 -32
  21. package/dist/{CursorDriver-CNo9Uzo8.mjs → CursorDriver-C_p0v-ul.mjs} +12 -6
  22. package/dist/{ForgejoSourceControlProvider-Dh6DOoc8.cjs → ForgejoSourceControlProvider-DTRrllIH.cjs} +14 -14
  23. package/dist/{ForgejoSourceControlProvider-BGXysSX6.mjs → ForgejoSourceControlProvider-DmOGJEaJ.mjs} +3 -3
  24. package/dist/{GitHubSourceControlProvider-8hsv_kCE.cjs → GitHubSourceControlProvider-D-YV8WP6.cjs} +16 -17
  25. package/dist/{GitHubSourceControlProvider-CPCYV8Xo.mjs → GitHubSourceControlProvider-sQGcwnr3.mjs} +6 -7
  26. package/dist/{GitLabSourceControlProvider-B0ZbF9Zx.cjs → GitLabSourceControlProvider-kKYYnpER.cjs} +14 -14
  27. package/dist/{GitLabSourceControlProvider-Bvknpaon.mjs → GitLabSourceControlProvider-mIl-K-4F.mjs} +3 -3
  28. package/dist/GrokDriver-BFOniP_K.cjs +567 -0
  29. package/dist/GrokDriver-CDcWkiAi.mjs +552 -0
  30. package/dist/{Metrics-a1h4iBQi.mjs → Metrics-C-3MahDy.mjs} +1 -107
  31. package/dist/{Metrics-Bcb9vCAe.cjs → Metrics-DCKbdeoH.cjs} +0 -168
  32. package/dist/{NodePTY-B_p5tLYO.mjs → NodePTY-DArvQ9bX.mjs} +1 -1
  33. package/dist/{OpenCodeDriver-CDcvPT9v.cjs → OpenCodeDriver-CckbFEQJ.cjs} +459 -141
  34. package/dist/{OpenCodeDriver-0q44rSQX.mjs → OpenCodeDriver-CnWJHyDJ.mjs} +430 -112
  35. package/dist/SideQuestionIsolation-5eGFRW0t.mjs +26 -0
  36. package/dist/SideQuestionIsolation-DvVKZWxi.cjs +37 -0
  37. package/dist/{SourceControlProviderDiscoveryCatalog-B37RHe2u.mjs → SourceControlProviderDiscoveryCatalog-BVvq7liJ.mjs} +2 -1
  38. package/dist/{SourceControlProviderDiscoveryCatalog-DreaAH1H.cjs → SourceControlProviderDiscoveryCatalog-CyUhKJLD.cjs} +6 -5
  39. package/dist/bin.cjs +12772 -3149
  40. package/dist/bin.mjs +10669 -1075
  41. package/dist/client/assets/AccountSettings-DLbcE2w-.js +1 -0
  42. package/dist/client/assets/Adobe-CNS1-UCS2-fO900upv.bcmap +0 -0
  43. package/dist/client/assets/Adobe-GB1-UCS2-BA083yIo.bcmap +0 -0
  44. package/dist/client/assets/Adobe-Japan1-UCS2-BL-4M2vS.bcmap +0 -0
  45. package/dist/client/assets/Adobe-Korea1-UCS2-BEQZuOdo.bcmap +0 -0
  46. package/dist/client/assets/AiFocusSettings-FKvdkl4P.js +1 -0
  47. package/dist/client/assets/{AnimatedHeight-i0YhvlGD.js → AnimatedHeight-CbIEyMLg.js} +1 -1
  48. package/dist/client/assets/AppearanceSettings-B2LsGKmL.js +1 -0
  49. package/dist/client/assets/{BranchToolbar.logic-AgPy06Mx.js → BranchToolbar.logic-BqkvYNPk.js} +1 -1
  50. package/dist/client/assets/{BrowserPanel-BWztlNuL.js → BrowserPanel-C_C4zjrh.js} +1 -1
  51. package/dist/client/assets/ChatRightPanel-ibiQ79jI.js +195 -0
  52. package/dist/client/assets/{ChatThreadRouteView-CWoBLzR_.js → ChatThreadRouteView-c7AXmbSk.js} +1 -1
  53. package/dist/client/assets/CommandPaletteDialog-DdPKN6rv.js +1 -0
  54. package/dist/client/assets/CompositeRoot-DKwS-ADi.js +1 -0
  55. package/dist/client/assets/ComputerUseSettings-DM17BYP5.js +1 -0
  56. package/dist/client/assets/ConnectionsSettings-D6wysIC8.js +7 -0
  57. package/dist/client/assets/ContextHandoffEndpointLabel-CsF_maM_.js +4 -0
  58. package/dist/client/assets/{DiagnosticsSettings-DvnNz2AZ.js → DiagnosticsSettings-Bq2l-C4J.js} +2 -2
  59. package/dist/client/assets/{DialogHandle-8o3kfoiI.js → DialogHandle-DuKTleCw.js} +1 -1
  60. package/dist/client/assets/{DialogPopup-CLw6NCkW.js → DialogPopup-Dt7DzTWv.js} +1 -1
  61. package/dist/client/assets/DialogRoot-DRyawL6l.js +1 -0
  62. package/dist/client/assets/{DialogTitle-DCHX74Tz.js → DialogTitle-BaxfPC6e.js} +1 -1
  63. package/dist/client/assets/DialogTrigger-D0PJ8bRT.js +1 -0
  64. package/dist/client/assets/{DialogViewport-DVDl03yd.js → DialogViewport-C3B2JZWQ.js} +1 -1
  65. package/dist/client/assets/DraftChatThreadRouteView-B8YiD5NP.js +1 -0
  66. package/dist/client/assets/ETHK-B5-H-1MLb5v9x.bcmap +0 -0
  67. package/dist/client/assets/{ExternalIdentityWeb.logic-arHvT6AX.js → ExternalIdentityWeb.logic-CrcNfdHK.js} +1 -1
  68. package/dist/client/assets/FoxitDingbats-BaQLufoW.pfb +0 -0
  69. package/dist/client/assets/FoxitFixed-Dyd5Nipw.pfb +0 -0
  70. package/dist/client/assets/FoxitFixedBold-D5TuYRwj.pfb +0 -0
  71. package/dist/client/assets/FoxitFixedBoldItalic-BqlXQ_Yv.pfb +0 -0
  72. package/dist/client/assets/FoxitFixedItalic-DqjQkmbS.pfb +0 -0
  73. package/dist/client/assets/FoxitSerif-qbgiDIe-.pfb +0 -0
  74. package/dist/client/assets/FoxitSerifBold-DZZ4CclT.pfb +0 -0
  75. package/dist/client/assets/FoxitSerifBoldItalic-DSQtwd_X.pfb +0 -0
  76. package/dist/client/assets/FoxitSerifItalic-CQs5lx9Y.pfb +0 -0
  77. package/dist/client/assets/FoxitSymbol-BVtbc20u.pfb +0 -0
  78. package/dist/client/assets/GBK-EUC-H-CAORqCkf.bcmap +0 -0
  79. package/dist/client/assets/GBK2K-H-Cv55KPk8.bcmap +0 -0
  80. package/dist/client/assets/GBKp-EUC-H-CElrnV5g.bcmap +0 -0
  81. package/dist/client/assets/GBT-EUC-H-BTsQIL1M.bcmap +0 -0
  82. package/dist/client/assets/GBT-H-DL9h-WkS.bcmap +0 -0
  83. package/dist/client/assets/GBTpc-EUC-H-DnIh5WJ3.bcmap +0 -0
  84. package/dist/client/assets/{GlassSurface-GY6owikG.js → GlassSurface-CBIEgwt1.js} +1 -1
  85. package/dist/client/assets/HKscs-B5-H-CXbBbq6g.bcmap +0 -0
  86. package/dist/client/assets/{HostedConnectionControls-COUhSe9x.js → HostedConnectionControls-DOpTlXzE.js} +1 -1
  87. package/dist/client/assets/HostedHubRoot-C1jq8cM6.js +2 -0
  88. package/dist/client/assets/{HostedNativeAuthorizationRoute-DZhYxv--.js → HostedNativeAuthorizationRoute-Clw1DHQW.js} +2 -2
  89. package/dist/client/assets/HostedNodeRenameDialog-Bd_Qu_ek.js +1 -0
  90. package/dist/client/assets/{HostedRelayTrustNotice-Bl6On0Yi.js → HostedRelayTrustNotice-CGcBpT9m.js} +1 -1
  91. package/dist/client/assets/IntegrationsSettingsPanel-J0qODRW-.js +2 -0
  92. package/dist/client/assets/KSC-Johab-H-CGtV3MPT.bcmap +0 -0
  93. package/dist/client/assets/{KeybindingsSettings-CPtXx-W2.js → KeybindingsSettings-CwxIHsFy.js} +1 -1
  94. package/dist/client/assets/{LazyBrowserPanel-SUIBB7B4.js → LazyBrowserPanel-VNAn6AUL.js} +2 -2
  95. package/dist/client/assets/LiberationSans-Bold-BPt4bU5Z.ttf +0 -0
  96. package/dist/client/assets/LiberationSans-BoldItalic-Bj53-jFw.ttf +0 -0
  97. package/dist/client/assets/LiberationSans-Italic-5QhGB3P9.ttf +0 -0
  98. package/dist/client/assets/LiberationSans-Regular-cbskN6YR.ttf +0 -0
  99. package/dist/client/assets/McpServersSettings-1pkIeutq.js +6 -0
  100. package/dist/client/assets/MobileSheet-DddfN8c2.js +1 -0
  101. package/dist/client/assets/{NodeSecuritySettings-BFifrshE.js → NodeSecuritySettings-BOIZeFZo.js} +1 -1
  102. package/dist/client/assets/OpinionatedPluginsSettings-oTIrPtIb.js +1 -0
  103. package/dist/client/assets/PdfAttachmentPreview-BCMO9OHD.js +54 -0
  104. package/dist/client/assets/{PhoneGetAppInterstitial-R0cqI17q.js → PhoneGetAppInterstitial-0EOj-PbW.js} +1 -1
  105. package/dist/client/assets/PhoneHome-Cg7l3b1T.js +1 -0
  106. package/dist/client/assets/PhoneSettingsSurface-BXAUtZ9M.js +2 -0
  107. package/dist/client/assets/ProvidersSettingsPanel-BaJgypXu.js +1 -0
  108. package/dist/client/assets/{QuitShortcutFeedback-CklL3jMd.js → QuitShortcutFeedback-DgJFEd6b.js} +1 -1
  109. package/dist/client/assets/{RedactedSensitiveText-CLPBtvH1.js → RedactedSensitiveText-D1VC2xa7.js} +1 -1
  110. package/dist/client/assets/RootAppShell-D2RjZ9jQ.js +7 -0
  111. package/dist/client/assets/Separator-CeMncdkm.js +1 -0
  112. package/dist/client/assets/SettingsDialog-B2hEb6u8.js +2 -0
  113. package/dist/client/assets/SettingsPanels-DtWLQDne.js +3 -0
  114. package/dist/client/assets/{SettingsPanels.editor-9pSZP875.js → SettingsPanels.editor-DJRckD71.js} +1 -1
  115. package/dist/client/assets/{SourceControlSettings-C1F3Brcn.js → SourceControlSettings-IpoZrjt5.js} +1 -1
  116. package/dist/client/assets/StatisticsPage-CUpE_5Gr.js +1 -0
  117. package/dist/client/assets/StatisticsPanel-CHrAY5AP.js +1 -0
  118. package/dist/client/assets/StatisticsSettingsLink-bGWuxNG3.js +1 -0
  119. package/dist/client/assets/{ThreadTerminalDrawer-CHZ60lPI.js → ThreadTerminalDrawer-BEv83xrk.js} +11 -11
  120. package/dist/client/assets/ThreadWorkspacePanel-BdMdJVHJ.js +2073 -0
  121. package/dist/client/assets/UniCNS-UCS2-H-DWzv8UhH.bcmap +0 -0
  122. package/dist/client/assets/UniCNS-UTF16-H-Bw0JKgCq.bcmap +0 -0
  123. package/dist/client/assets/UniCNS-UTF32-H-IE_GrH2i.bcmap +0 -0
  124. package/dist/client/assets/UniCNS-UTF8-H-BbLcFh6Q.bcmap +0 -0
  125. package/dist/client/assets/UniGB-UCS2-H-D7xzRvZN.bcmap +0 -0
  126. package/dist/client/assets/UniGB-UTF16-H-DKjbEwc0.bcmap +0 -0
  127. package/dist/client/assets/UniGB-UTF32-H-Behfouj5.bcmap +0 -0
  128. package/dist/client/assets/UniGB-UTF8-H-EROft1ro.bcmap +0 -0
  129. package/dist/client/assets/UniJIS-UCS2-H-2DbZ0MaQ.bcmap +0 -0
  130. package/dist/client/assets/UniJIS-UTF16-H-BlDDPdCK.bcmap +0 -0
  131. package/dist/client/assets/UniJIS-UTF32-H-BIQPWkjv.bcmap +0 -0
  132. package/dist/client/assets/UniJIS-UTF8-H-CGusholx.bcmap +0 -0
  133. package/dist/client/assets/UniJIS2004-UTF16-H-KXixH-HI.bcmap +0 -0
  134. package/dist/client/assets/UniJIS2004-UTF32-H-CXrD-9YE.bcmap +0 -0
  135. package/dist/client/assets/UniJIS2004-UTF8-H-BkOctZjn.bcmap +0 -0
  136. package/dist/client/assets/UniJISX0213-UTF32-H-BavAhZjb.bcmap +0 -0
  137. package/dist/client/assets/UniJISX02132004-UTF32-H-DAH-AgUq.bcmap +0 -0
  138. package/dist/client/assets/UniKS-UCS2-H-YeUc7k1L.bcmap +0 -0
  139. package/dist/client/assets/UniKS-UTF16-H-B0dvB-Td.bcmap +0 -0
  140. package/dist/client/assets/UniKS-UTF32-H-olR_LtmR.bcmap +0 -0
  141. package/dist/client/assets/UniKS-UTF8-H-CbpebD-y.bcmap +0 -0
  142. package/dist/client/assets/{activity-BMBx2Fu0.js → activity-BmRcsTyL.js} +1 -1
  143. package/dist/client/assets/{alert-CXnC_RJc.js → alert-C5UiA2xk.js} +1 -1
  144. package/dist/client/assets/{appChrome-BzM66lXM.js → appChrome-CsZ2ylc1.js} +1 -1
  145. package/dist/client/assets/{arrow-left-CymyVbCi.js → arrow-left-CSz-z20j.js} +1 -1
  146. package/dist/client/assets/{arrow-right-9wyq4YVq.js → arrow-right-DEi91hao.js} +1 -1
  147. package/dist/client/assets/{arrow-up-right-mfU38K6p.js → arrow-up-right-D7SpcTV9.js} +1 -1
  148. package/dist/client/assets/authorization-B1YXfej3.js +1 -0
  149. package/dist/client/assets/badge-BjvTY7-E.js +1 -0
  150. package/dist/client/assets/{bot-BR3RyOWP.js → bot-SC4UGZyw.js} +1 -1
  151. package/dist/client/assets/{capabilities-C8sxDbKT.js → capabilities-BCkDNe83.js} +1 -1
  152. package/dist/client/assets/{chart-column-CcRi3pAd.js → chart-column-C08MuLgY.js} +1 -1
  153. package/dist/client/assets/chevron-right-DgB53U1_.js +1 -0
  154. package/dist/client/assets/{clipboard-copy-ezz8rnaT.js → clipboard-copy-D74Wvnon.js} +1 -1
  155. package/dist/client/assets/{data-list-ZLhzdlED.js → data-list-CZ4Utnfl.js} +1 -1
  156. package/dist/client/assets/{desktopWorkspace-P28r2lN2.js → desktopWorkspace-DVfn9ZT_.js} +1 -1
  157. package/dist/client/assets/{download-BA9L9tK9.js → download-Dio40wIJ.js} +1 -1
  158. package/dist/client/assets/editorPreferences-2dG4uloq.js +1 -0
  159. package/dist/client/assets/{empty-3NpXLnAM.js → empty-6LExKYgQ.js} +1 -1
  160. package/dist/client/assets/{group-D5qBdsaB.js → group-D_mu0Kiq.js} +1 -1
  161. package/dist/client/assets/{hostedConnectionCoordinator-CLV-JD1S.js → hostedConnectionCoordinator-YkDLnATK.js} +1 -1
  162. package/dist/client/assets/{hubRoutes-EWJ3Gdod.js → hubRoutes-D3quWvU7.js} +1 -1
  163. package/dist/client/assets/{index-DxCd1PgA.js → index-7MTgf8YI.js} +2 -2
  164. package/dist/client/assets/{input-DrOL1KPS.js → input-CfVJycb1.js} +1 -1
  165. package/dist/client/assets/jbig2-CNFLgX9F.wasm +0 -0
  166. package/dist/client/assets/kbd-uFa_tY-L.js +1 -0
  167. package/dist/client/assets/{key-round-D2DtQ7aS.js → key-round-C-oUSjpF.js} +1 -1
  168. package/dist/client/assets/{layers-DtSJWmwy.js → layers-Co2a5C1k.js} +1 -1
  169. package/dist/client/assets/{log-out-YAp9fsOg.js → log-out-pWFhbvwr.js} +1 -1
  170. package/dist/client/assets/{logging-BuUPX1SP.js → logging-JMrwaeZh.js} +1 -1
  171. package/dist/client/assets/main-BNPtp9Z0.css +2 -0
  172. package/dist/client/assets/main-CGeD6yVE.js +9 -0
  173. package/dist/client/assets/openjpeg-MeY6OQBn.wasm +0 -0
  174. package/dist/client/assets/{palette-D18VboLH.js → palette-B_6C4fD6.js} +1 -1
  175. package/dist/client/assets/pdf.worker.min-Dswkl-cV.mjs +29 -0
  176. package/dist/client/assets/{play-d3KUi4G6.js → play-DFtc9zBy.js} +1 -1
  177. package/dist/client/assets/primary-CNUdEGcv.js +2 -0
  178. package/dist/client/assets/providerDriverMeta-Cg_XLUfo.js +1 -0
  179. package/dist/client/assets/{ProviderModelPicker-dwWhl7Uf.js → providerInstances-JaDrOWPZ.js} +1 -1
  180. package/dist/client/assets/providerModels-5uOq3qPC.js +1 -0
  181. package/dist/client/assets/qcms_bg-3PJi_GXR.wasm +0 -0
  182. package/dist/client/assets/{qr-code-Bk1kdf_k.js → qr-code-BU354aLS.js} +1 -1
  183. package/dist/client/assets/{qr-code-MAZkoKtL.js → qr-code-DaHWf7Oq.js} +1 -1
  184. package/dist/client/assets/quickjs-eval-zJSp5SB4.wasm +0 -0
  185. package/dist/client/assets/radio-group-DKaA1eey.js +2 -0
  186. package/dist/client/assets/{refresh-cw-DY3_Ph-S.js → refresh-cw-CY5BeUEr.js} +1 -1
  187. package/dist/client/assets/runtime-BKneT96Q.js +17 -0
  188. package/dist/client/assets/{save-ugJXuJRM.js → save-DIHMjHXd.js} +1 -1
  189. package/dist/client/assets/{scroll-area-BMnGzd2a.js → scroll-area-Cq4SX9P8.js} +1 -1
  190. package/dist/client/assets/{scrollEdges-QLSFwGSQ.js → scrollEdges-BaWRjrac.js} +1 -1
  191. package/dist/client/assets/{separator-BwUYkCkX.js → separator-BN705fC0.js} +1 -1
  192. package/dist/client/assets/{settingsLayout-C6SUmJVB.js → settingsLayout-DQERzSce.js} +1 -1
  193. package/dist/client/assets/{sheet-DLy4aeVa.js → sheet-CFvRY7T6.js} +1 -1
  194. package/dist/client/assets/{shield-Zq_ygsnJ.js → shield-Zn2kFj5M.js} +1 -1
  195. package/dist/client/assets/{shield-alert-DfUhTI4-.js → shield-alert-DMB5gKiC.js} +1 -1
  196. package/dist/client/assets/{shield-check-CO4SMhAs.js → shield-check-DyNf6Bky.js} +1 -1
  197. package/dist/client/assets/{sidebar-DNnW-a2V.js → sidebar-Bsh64sLK.js} +1 -1
  198. package/dist/client/assets/sidebarProjectFolders-CQbpO9ZI.js +4 -0
  199. package/dist/client/assets/{sidebarStatusText-CawrXnx0.js → sidebarStatusText-DCo-whyK.js} +1 -1
  200. package/dist/client/assets/{skeleton-DRm4_OvB.js → skeleton-DEuowfjY.js} +1 -1
  201. package/dist/client/assets/{smartphone-O2VACDhU.js → smartphone-BLWJ7C9-.js} +1 -1
  202. package/dist/client/assets/{sparkles-isHutYWU.js → sparkles-DAXDXp_s.js} +1 -1
  203. package/dist/client/assets/src-DPpEXU6w.js +14 -0
  204. package/dist/client/assets/{star-7UHEnC3x.js → star-CjQxHYbD.js} +1 -1
  205. package/dist/client/assets/switch-LahPAvrd.js +48 -0
  206. package/dist/client/assets/{toggle-CaKBNe6W.js → toggle-45lsrmyi.js} +1 -1
  207. package/dist/client/assets/{toggle-group-UeFeTI3u.js → toggle-group-D5pl24ED.js} +1 -1
  208. package/dist/client/assets/{tokenModePresentation-DV56ekA4.js → tokenModePresentation-CPUsUGY4.js} +1 -1
  209. package/dist/client/assets/tooltip-B8-izeMo.js +1 -0
  210. package/dist/client/assets/{unplug-DisTpujT.js → unplug-Bjpxv8i0.js} +1 -1
  211. package/dist/client/assets/usage-8vQUo0mr.js +1 -0
  212. package/dist/client/assets/useAppSidebarCollapsed-uwz9Hlgc.js +1 -0
  213. package/dist/client/assets/useBaseUiId-BtuL7q77.js +1 -0
  214. package/dist/client/assets/useLabelableId-N_LsKNbf.js +1 -0
  215. package/dist/client/assets/useNavigate-DADLi29i.js +1 -0
  216. package/dist/client/assets/usePhoneThreadActions-B9_HK7tn.js +1 -0
  217. package/dist/client/assets/usePopupViewport-w8BEny9j.js +1 -0
  218. package/dist/client/assets/useScrollLock-bCmUzTgK.js +1 -0
  219. package/dist/client/assets/useStatistics-DJtONxT0.js +55 -0
  220. package/dist/client/assets/useTriggerFocusGuards-C7JWO2LT.js +1 -0
  221. package/dist/client/assets/useValueChanged-DkoUO9bY.js +1 -0
  222. package/dist/client/assets/{user-round-DctamWV6.js → user-round-DEWIPpNs.js} +1 -1
  223. package/dist/client/assets/{vscode-icons-Dw-LGJAv.js → vscode-icons-DTH-Vj-_.js} +1 -1
  224. package/dist/client/assets/workspaceMetadataProjection-BnpxBe8S.js +1 -0
  225. package/dist/client/assets/{wrench-Ds8eZerZ.js → wrench-36WYdK_a.js} +1 -1
  226. package/dist/client/index.html +1 -1
  227. package/dist/collectUint8StreamText-BAUF-vzz.mjs +37 -0
  228. package/dist/collectUint8StreamText-vagpNUMJ.cjs +42 -0
  229. package/dist/deviceHostWorker-C-BSnmkn.mjs +167 -0
  230. package/dist/deviceHostWorker-CYnrwfrv.cjs +169 -0
  231. package/dist/git-C4iJMbBu.mjs +132 -0
  232. package/dist/git-irmB8_k7.cjs +218 -0
  233. package/dist/{makeManagedServerProvider-GZcpSLrW.mjs → makeManagedServerProvider-BINne1KE.mjs} +3 -38
  234. package/dist/{makeManagedServerProvider-VzxWN-04.cjs → makeManagedServerProvider-DGbd8BhM.cjs} +1 -60
  235. package/dist/resource-monitor/ryco-resource-monitor +0 -0
  236. package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
  237. package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
  238. package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
  239. package/dist/runtimeSession-Bj0OUcNJ.cjs +63 -0
  240. package/dist/runtimeSession-CA6cLWg0.mjs +40 -0
  241. package/dist/schemaJson-CaG1bOvo.mjs +49 -0
  242. package/dist/schemaJson-CuhFxa8p.cjs +66 -0
  243. package/dist/{collectUint8StreamText-DStwNTTK.cjs → src-BlzIcnVG.cjs} +573 -117
  244. package/dist/{collectUint8StreamText-C_VNyArd.mjs → src-DtEOcXdl.mjs} +389 -95
  245. package/package.json +1 -1
  246. package/dist/AcpNativeLogging-COepku4a.cjs +0 -5130
  247. package/dist/AcpNativeLogging-D7e1dn7s.mjs +0 -5015
  248. package/dist/client/assets/AccountSettings-ApnDA1f-.js +0 -1
  249. package/dist/client/assets/AiFocusSettings-CNmGHEcA.js +0 -1
  250. package/dist/client/assets/AppearanceSettings-BG8W4DP0.js +0 -1
  251. package/dist/client/assets/ChatRightPanel-a6UOHNMm.js +0 -194
  252. package/dist/client/assets/CommandPaletteDialog-B2iKWCUi.js +0 -1
  253. package/dist/client/assets/CompositeRoot-C1G-Ejus.js +0 -1
  254. package/dist/client/assets/ComputerUseSettings-CPwWoHWj.js +0 -1
  255. package/dist/client/assets/ConnectionsSettings-CPMkuxza.js +0 -7
  256. package/dist/client/assets/ContextHandoffEndpointLabel-BildLLDY.js +0 -4
  257. package/dist/client/assets/DialogRoot-SKkIuQHA.js +0 -1
  258. package/dist/client/assets/DialogTrigger-Bl_fcIV2.js +0 -1
  259. package/dist/client/assets/DraftChatThreadRouteView-CEDYjbKq.js +0 -1
  260. package/dist/client/assets/HostedHubRoot-BTWc0XoQ.js +0 -2
  261. package/dist/client/assets/IntegrationsSettingsPanel-n9owMZf-.js +0 -2
  262. package/dist/client/assets/McpServersSettings-BWIUud0Z.js +0 -6
  263. package/dist/client/assets/MobileSheet-NTayGHF6.js +0 -1
  264. package/dist/client/assets/OpinionatedPluginsSettings-D7WuuNWZ.js +0 -1
  265. package/dist/client/assets/PhoneHome-FqWvnJP_.js +0 -1
  266. package/dist/client/assets/PhoneSettingsSurface-w5PJnoBc.js +0 -2
  267. package/dist/client/assets/ProvidersSettingsPanel-Ww1ch3xA.js +0 -1
  268. package/dist/client/assets/RootAppShell-BdQCs2XJ.js +0 -7
  269. package/dist/client/assets/Separator-CpYBhf-I.js +0 -1
  270. package/dist/client/assets/SettingsDialog-DeMzEeCP.js +0 -2
  271. package/dist/client/assets/SettingsPanels-ZxNz9ZfL.js +0 -3
  272. package/dist/client/assets/StatisticsPage-C7v-6CTr.js +0 -1
  273. package/dist/client/assets/StatisticsPanel-CeIjiBm8.js +0 -1
  274. package/dist/client/assets/StatisticsSettingsLink-5s_violW.js +0 -1
  275. package/dist/client/assets/ThreadWorkspacePanel-Ct5kMcuY.js +0 -2073
  276. package/dist/client/assets/authorization-CjOFkg7b.js +0 -1
  277. package/dist/client/assets/badge-Dg7mXiOh.js +0 -1
  278. package/dist/client/assets/chevron-right-CuUjBsQV.js +0 -1
  279. package/dist/client/assets/editorPreferences-DeKdSV3s.js +0 -1
  280. package/dist/client/assets/kbd-rWDjJnWX.js +0 -1
  281. package/dist/client/assets/main-BbtLAX7M.js +0 -9
  282. package/dist/client/assets/main-D4CtFNPY.css +0 -2
  283. package/dist/client/assets/monitor-OyD484tI.js +0 -1
  284. package/dist/client/assets/primary-D_D7eLwT.js +0 -2
  285. package/dist/client/assets/providerDriverMeta-DNTocCcU.js +0 -1
  286. package/dist/client/assets/providerModels-bFbEIfL9.js +0 -1
  287. package/dist/client/assets/radio-group-D-VCGinX.js +0 -2
  288. package/dist/client/assets/runtime-Djy96GJd.js +0 -17
  289. package/dist/client/assets/sidebarProjectFolders-ygpaKZM6.js +0 -4
  290. package/dist/client/assets/src-BSuAGqhK.js +0 -14
  291. package/dist/client/assets/switch-DD1qVLgN.js +0 -48
  292. package/dist/client/assets/tooltip-DXvXxL37.js +0 -1
  293. package/dist/client/assets/useAppSidebarCollapsed-CaAsLi1q.js +0 -1
  294. package/dist/client/assets/useBaseUiId-CJN4MvrU.js +0 -1
  295. package/dist/client/assets/useLabelableId-BsDFG9Oj.js +0 -1
  296. package/dist/client/assets/useNavigate-cLfxn_9L.js +0 -1
  297. package/dist/client/assets/usePhoneThreadActions-rekHL1Mi.js +0 -1
  298. package/dist/client/assets/usePopupViewport-kXU31P6l.js +0 -1
  299. package/dist/client/assets/useScrollLock-DjMxrUJe.js +0 -1
  300. package/dist/client/assets/useStatistics-BYP-9CmW.js +0 -55
  301. package/dist/client/assets/useTriggerFocusGuards-DuAm2B8C.js +0 -1
  302. package/dist/client/assets/useValueChanged-DreFjrMK.js +0 -1
  303. package/dist/client/assets/workspaceMetadataProjection-BL4sEIL2.js +0 -1
@@ -1,32 +1,36 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { $a as ProviderInstanceId, Ln as TextGenerationError, Qa as ProviderDriverKind, Yo as ApprovalRequestId, _s as TurnId, ds as RuntimeRequestId, rs as EventId, sr as GrokSettings } from "./collectUint8StreamText-C_VNyArd.mjs";
4
- import { nt as sanitizeFeatureBranchName, st as ServerConfig, tt as sanitizeBranchFragment } from "./Metrics-a1h4iBQi.mjs";
5
- import { $ as mergeProviderInstanceEnvironment, $n as resolveAttachmentPath, B as buildPrContentPrompt, Ct as ProviderAdapterSessionNotFoundError, F as validateRankInboxThreadsResult, G as sanitizeCommitSubject, H as buildThreadTitlePrompt, Hn as enrichProviderSnapshotWithVersionAdvisory, I as buildBranchNamePrompt, Jn as resolveProviderMaintenanceCapabilitiesEffect, K as sanitizePrTitle, Kn as makeStaticProviderMaintenanceResolver, L as buildCommitMessagePrompt, M as makeEventNdjsonLogger, R as buildIssueContentPolishPrompt, Tt as ProviderDriverError, U as extractJsonObject, Un as makeManualOnlyProviderMaintenanceCapabilities, V as buildThreadPriorityPrompt, Xn as ServerSettingsService, Zn as isPersistableChatAttachment, bt as ProviderAdapterProcessError, dt as parseGenericCliVersion, ft as providerModelsFromSettings, j as ProviderEventLoggers, lr as normalizeModelSlug, lt as isCommandMissingCause, nr as createModelCapabilities, ot as buildServerProvider, pt as spawnAndCollect, q as sanitizeThreadTitle, wt as ProviderAdapterValidationError, xt as ProviderAdapterRequestError, yt as createProcessDeviceToolBinding, z as buildIssueContentTitlePrompt } from "./bin.mjs";
6
- import { a as formatAttachmentPathLines, i as appendAttachmentPathLines, n as requireRuntimeSessionId, r as stampRuntimeEvent, t as makeManagedServerProvider } from "./makeManagedServerProvider-GZcpSLrW.mjs";
7
- import { t as defaultProviderContinuationIdentity } from "./ProviderDriver-kCV60GKk.mjs";
8
- import { a as makeAcpRequestOpenedEvent, c as makeAcpTokenUsageEvent, d as mapAcpToAdapterError, f as makeAcpSubagentRuntimeEvents, h as AcpTransportError, i as makeAcpPlanUpdatedEvent, l as makeAcpToolCallEvent, m as parsePermissionRequest, n as makeAcpAssistantItemEvent, o as makeAcpRequestResolvedEvent, p as AcpSessionRuntime, r as makeAcpContentDeltaEvent, s as makeAcpThoughtDeltaEvent, t as makeAcpNativeLoggers } from "./AcpNativeLogging-D7e1dn7s.mjs";
3
+ import { As as EventId, Eo as ProviderInstanceId, Rs as RuntimeRequestId, Ss as ApprovalRequestId, Ws as TurnId } from "./src-DtEOcXdl.mjs";
4
+ import { Z as ServerConfig } from "./Metrics-C-3MahDy.mjs";
5
+ import { A as makeEventNdjsonLogger, Ht as ProviderAdapterValidationError, K as parsePermissionRequest, Lt as createProcessDeviceToolBinding, Rt as ProviderAdapterProcessError, Vt as ProviderAdapterSessionNotFoundError, Y as AcpTransportError, _r as resolveAttachmentPath, hr as isPersistableChatAttachment, zt as ProviderAdapterRequestError } from "./bin.mjs";
6
+ import { a as makeAcpRequestOpenedEvent, c as makeAcpTokenUsageEvent, d as mapAcpToAdapterError, f as makeAcpSubagentRuntimeEvents, i as makeAcpPlanUpdatedEvent, l as makeAcpToolCallEvent, n as makeAcpAssistantItemEvent, o as makeAcpRequestResolvedEvent, r as makeAcpContentDeltaEvent, s as makeAcpThoughtDeltaEvent, t as makeAcpNativeLoggers } from "./AcpNativeLogging-BsbZRRD7.mjs";
7
+ import { i as formatAttachmentPathLines, n as stampRuntimeEvent, r as appendAttachmentPathLines, t as requireRuntimeSessionId } from "./runtimeSession-CA6cLWg0.mjs";
9
8
  import * as Effect from "effect/Effect";
10
- import * as Layer from "effect/Layer";
11
9
  import * as Schema from "effect/Schema";
12
- import { HttpClient } from "effect/unstable/http";
13
- import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
10
+ import { ChildProcessSpawner } from "effect/unstable/process";
14
11
  import * as Semaphore from "effect/Semaphore";
15
12
  import * as Scope from "effect/Scope";
16
- import * as Cause from "effect/Cause";
17
13
  import * as Deferred from "effect/Deferred";
18
14
  import * as Exit from "effect/Exit";
19
15
  import * as Option from "effect/Option";
20
16
  import * as Ref from "effect/Ref";
21
17
  import * as Stream from "effect/Stream";
22
- import * as Duration from "effect/Duration";
23
18
  import * as Fiber from "effect/Fiber";
19
+ import * as DateTime from "effect/DateTime";
24
20
  import * as FileSystem from "effect/FileSystem";
25
21
  import * as Path from "effect/Path";
26
- import * as DateTime from "effect/DateTime";
27
22
  import * as PubSub from "effect/PubSub";
28
23
  import * as SynchronizedRef from "effect/SynchronizedRef";
29
- import * as Result from "effect/Result";
24
+ //#region src/provider/acp/AcpModelSelection.ts
25
+ function currentAcpModelIdFromSessionSetup(sessionSetupResult) {
26
+ const option = sessionSetupResult.configOptions?.find((entry) => entry.category === "model" && entry.type === "select");
27
+ return sessionSetupResult.models?.currentModelId?.trim() || (typeof option?.currentValue === "string" ? option.currentValue : void 0);
28
+ }
29
+ function applyAcpModelSelection(input) {
30
+ if (!(input.requestedModelId !== void 0 && input.requestedModelId !== input.currentModelId)) return Effect.succeed(input.currentModelId);
31
+ return input.runtime.setSessionModel(input.requestedModelId).pipe(Effect.mapError(input.mapError), Effect.as(input.requestedModelId));
32
+ }
33
+ //#endregion
30
34
  //#region src/provider/acp/XAiAcpExtension.ts
31
35
  const XAiPromptCompleteNotification = Schema.Struct({
32
36
  sessionId: Schema.String,
@@ -300,228 +304,9 @@ function normalizeXAiStopReason(value) {
300
304
  }
301
305
  }
302
306
  //#endregion
303
- //#region src/provider/acp/GrokAcpSupport.ts
304
- const GROK_API_KEY_ENV = "XAI_API_KEY";
305
- const GROK_OAUTH2_REFERRER_ENV = "GROK_OAUTH2_REFERRER";
306
- const RYCO_OAUTH_REFERRER = "ryco";
307
- const GROK_AUTH_METHOD_API_KEY = "xai.api_key";
308
- const GROK_AUTH_METHOD_CACHED_TOKEN = "cached_token";
309
- const GROK_DRIVER_KIND = ProviderDriverKind.make("grok");
310
- function buildGrokAcpSpawnInput(grokSettings, cwd, environment) {
311
- return {
312
- command: grokSettings?.binaryPath || "grok",
313
- args: ["agent", "stdio"],
314
- cwd,
315
- env: {
316
- ...environment,
317
- [GROK_OAUTH2_REFERRER_ENV]: RYCO_OAUTH_REFERRER
318
- }
319
- };
320
- }
321
- function resolveGrokAuthMethodId(environment) {
322
- return environment?.[GROK_API_KEY_ENV]?.trim() ? GROK_AUTH_METHOD_API_KEY : GROK_AUTH_METHOD_CACHED_TOKEN;
323
- }
324
- const makeGrokAcpRuntime = (input) => Effect.gen(function* () {
325
- const acpContext = yield* Layer.build(AcpSessionRuntime.layer({
326
- ...input,
327
- spawn: buildGrokAcpSpawnInput(input.grokSettings, input.cwd, input.environment),
328
- authMethodId: resolveGrokAuthMethodId(input.environment)
329
- }).pipe(Layer.provide(Layer.succeed(ChildProcessSpawner.ChildProcessSpawner, input.childProcessSpawner))));
330
- const runtime = yield* Effect.service(AcpSessionRuntime).pipe(Effect.provide(acpContext));
331
- return yield* makeXAiPromptCompletionRuntime(runtime);
332
- });
333
- function resolveGrokAcpBaseModelId(model) {
334
- const trimmed = model?.trim();
335
- const base = trimmed && trimmed.length > 0 ? trimmed : "grok-build";
336
- return normalizeModelSlug(base, GROK_DRIVER_KIND) ?? "grok-build";
337
- }
338
- function currentGrokModelIdFromSessionSetup(sessionSetupResult) {
339
- return sessionSetupResult.models?.currentModelId?.trim() || void 0;
340
- }
341
- function applyGrokAcpModelSelection(input) {
342
- if (!(input.requestedModelId !== void 0 && input.requestedModelId !== input.currentModelId)) return Effect.succeed(input.currentModelId);
343
- return input.runtime.setSessionModel(input.requestedModelId).pipe(Effect.mapError(input.mapError), Effect.as(input.requestedModelId));
344
- }
345
- //#endregion
346
- //#region src/textGeneration/GrokTextGeneration.ts
347
- const GROK_TIMEOUT_MS = 18e4;
348
- function mapGrokAcpError(operation, detail, cause) {
349
- return new TextGenerationError({
350
- operation,
351
- detail,
352
- ...cause !== void 0 ? { cause } : {}
353
- });
354
- }
355
- function isTextGenerationError(error) {
356
- return typeof error === "object" && error !== null && "_tag" in error && error._tag === "TextGenerationError";
357
- }
358
- const makeGrokTextGeneration = Effect.fn("makeGrokTextGeneration")(function* (grokSettings, environment = process.env) {
359
- const commandSpawner = yield* ChildProcessSpawner.ChildProcessSpawner;
360
- const runGrokJson = ({ operation, cwd, prompt, outputSchemaJson, modelSelection }) => Effect.gen(function* () {
361
- const resolvedModel = resolveGrokAcpBaseModelId(modelSelection.model);
362
- const outputRef = yield* Ref.make("");
363
- const runtime = yield* makeGrokAcpRuntime({
364
- grokSettings,
365
- environment,
366
- childProcessSpawner: commandSpawner,
367
- cwd,
368
- clientInfo: {
369
- name: "ryco-git-text",
370
- version: "0.0.0"
371
- }
372
- });
373
- yield* runtime.handleSessionUpdate((notification) => {
374
- const update = notification.update;
375
- if (update.sessionUpdate !== "agent_message_chunk") return Effect.void;
376
- const content = update.content;
377
- if (content.type !== "text") return Effect.void;
378
- return Ref.update(outputRef, (current) => current + content.text);
379
- });
380
- const promptResult = yield* Effect.gen(function* () {
381
- const started = yield* runtime.start();
382
- yield* applyGrokAcpModelSelection({
383
- runtime,
384
- currentModelId: currentGrokModelIdFromSessionSetup(started.sessionSetupResult),
385
- requestedModelId: resolvedModel,
386
- mapError: (cause) => mapGrokAcpError(operation, "Failed to set Grok ACP base model for text generation.", cause)
387
- });
388
- return yield* runtime.prompt({ prompt: [{
389
- type: "text",
390
- text: prompt
391
- }] });
392
- }).pipe(Effect.timeoutOption(GROK_TIMEOUT_MS), Effect.flatMap(Option.match({
393
- onNone: () => Effect.fail(new TextGenerationError({
394
- operation,
395
- detail: "Grok ACP request timed out."
396
- })),
397
- onSome: (value) => Effect.succeed(value)
398
- })), Effect.mapError((cause) => isTextGenerationError(cause) ? cause : mapGrokAcpError(operation, "Grok ACP request failed.", cause)));
399
- const trimmed = (yield* Ref.get(outputRef)).trim();
400
- if (!trimmed) return yield* new TextGenerationError({
401
- operation,
402
- detail: promptResult.stopReason === "cancelled" ? "Grok ACP request was cancelled." : "Grok Agent returned empty output."
403
- });
404
- return yield* Schema.decodeEffect(Schema.fromJsonString(outputSchemaJson))(extractJsonObject(trimmed)).pipe(Effect.catchTag("SchemaError", (cause) => Effect.fail(new TextGenerationError({
405
- operation,
406
- detail: "Grok Agent returned invalid structured output.",
407
- cause
408
- }))));
409
- }).pipe(Effect.mapError((cause) => isTextGenerationError(cause) ? cause : mapGrokAcpError(operation, "Grok ACP text generation failed.", cause)), Effect.scoped);
410
- return {
411
- generateCommitMessage: Effect.fn("GrokTextGeneration.generateCommitMessage")(function* (input) {
412
- const { prompt, outputSchema } = buildCommitMessagePrompt({
413
- branch: input.branch,
414
- stagedSummary: input.stagedSummary,
415
- stagedPatch: input.stagedPatch,
416
- includeBranch: input.includeBranch === true
417
- });
418
- const generated = yield* runGrokJson({
419
- operation: "generateCommitMessage",
420
- cwd: input.cwd,
421
- prompt,
422
- outputSchemaJson: outputSchema,
423
- modelSelection: input.modelSelection
424
- });
425
- return {
426
- subject: sanitizeCommitSubject(generated.subject),
427
- body: generated.body.trim(),
428
- ..."branch" in generated && typeof generated.branch === "string" ? { branch: sanitizeFeatureBranchName(generated.branch) } : {}
429
- };
430
- }),
431
- generatePrContent: Effect.fn("GrokTextGeneration.generatePrContent")(function* (input) {
432
- const { prompt, outputSchema } = buildPrContentPrompt({
433
- baseBranch: input.baseBranch,
434
- headBranch: input.headBranch,
435
- commitSummary: input.commitSummary,
436
- diffSummary: input.diffSummary,
437
- diffPatch: input.diffPatch
438
- });
439
- const generated = yield* runGrokJson({
440
- operation: "generatePrContent",
441
- cwd: input.cwd,
442
- prompt,
443
- outputSchemaJson: outputSchema,
444
- modelSelection: input.modelSelection
445
- });
446
- return {
447
- title: sanitizePrTitle(generated.title),
448
- body: generated.body.trim()
449
- };
450
- }),
451
- generateBranchName: Effect.fn("GrokTextGeneration.generateBranchName")(function* (input) {
452
- const { prompt, outputSchema } = buildBranchNamePrompt({
453
- message: input.message,
454
- attachments: input.attachments
455
- });
456
- const generated = yield* runGrokJson({
457
- operation: "generateBranchName",
458
- cwd: input.cwd,
459
- prompt,
460
- outputSchemaJson: outputSchema,
461
- modelSelection: input.modelSelection
462
- });
463
- return { branch: sanitizeBranchFragment(generated.branch) };
464
- }),
465
- generateThreadTitle: Effect.fn("GrokTextGeneration.generateThreadTitle")(function* (input) {
466
- const { prompt, outputSchema } = buildThreadTitlePrompt({
467
- message: input.message,
468
- attachments: input.attachments
469
- });
470
- const generated = yield* runGrokJson({
471
- operation: "generateThreadTitle",
472
- cwd: input.cwd,
473
- prompt,
474
- outputSchemaJson: outputSchema,
475
- modelSelection: input.modelSelection
476
- });
477
- return { title: sanitizeThreadTitle(generated.title) };
478
- }),
479
- generateIssueContent: Effect.fn("GrokTextGeneration.generateIssueContent")(function* (input) {
480
- if (input.mode === "polish") {
481
- const { prompt, outputSchema } = buildIssueContentPolishPrompt({
482
- rough: input.rough,
483
- ...input.currentTitle ? { currentTitle: input.currentTitle } : {},
484
- ...input.customInstructions ? { customInstructions: input.customInstructions } : {}
485
- });
486
- const decoded = yield* runGrokJson({
487
- operation: "generateIssueContent",
488
- cwd: input.cwd,
489
- prompt,
490
- outputSchemaJson: outputSchema,
491
- modelSelection: input.modelSelection
492
- });
493
- return {
494
- title: decoded.title.trim(),
495
- body: decoded.body.trim()
496
- };
497
- }
498
- const { prompt, outputSchema } = buildIssueContentTitlePrompt({ body: input.body });
499
- return { title: (yield* runGrokJson({
500
- operation: "generateIssueContent",
501
- cwd: input.cwd,
502
- prompt,
503
- outputSchemaJson: outputSchema,
504
- modelSelection: input.modelSelection
505
- })).title.trim() };
506
- }),
507
- rankInboxThreads: Effect.fn("GrokTextGeneration.rankInboxThreads")(function* (input) {
508
- const { prompt, outputSchema } = buildThreadPriorityPrompt({ serializedCandidates: input.chunk.serializedCandidates });
509
- const generated = yield* runGrokJson({
510
- operation: "rankInboxThreads",
511
- cwd: input.cwd,
512
- prompt,
513
- outputSchemaJson: outputSchema,
514
- modelSelection: input.modelSelection
515
- });
516
- return yield* validateRankInboxThreadsResult(input, generated.rankings);
517
- })
518
- };
519
- });
520
- //#endregion
521
- //#region src/provider/Layers/GrokAdapter.ts
307
+ //#region src/provider/Layers/AcpAdapter.ts
522
308
  const encodeUnknownJsonStringExit = Schema.encodeUnknownExit(Schema.fromJsonString(Schema.Unknown));
523
- const PROVIDER$1 = ProviderDriverKind.make("grok");
524
- const GROK_RESUME_VERSION = 1;
309
+ const ACP_RESUME_VERSION = 1;
525
310
  function encodeJsonStringForDiagnostics(input) {
526
311
  const result = encodeUnknownJsonStringExit(input);
527
312
  return Exit.isSuccess(result) ? result.value : void 0;
@@ -535,9 +320,9 @@ function settlePendingUserInputsAsCancelled(pendingUserInputs) {
535
320
  function isRecord(value) {
536
321
  return typeof value === "object" && value !== null && !Array.isArray(value);
537
322
  }
538
- function parseGrokResume(raw) {
323
+ function parseAcpResume(raw) {
539
324
  if (!isRecord(raw)) return void 0;
540
- if (raw.schemaVersion !== GROK_RESUME_VERSION) return void 0;
325
+ if (raw.schemaVersion !== ACP_RESUME_VERSION) return void 0;
541
326
  if (typeof raw.sessionId !== "string" || !raw.sessionId.trim()) return void 0;
542
327
  return { sessionId: raw.sessionId.trim() };
543
328
  }
@@ -548,9 +333,11 @@ function selectPermissionOptionId(request, decision) {
548
333
  function selectAutoApprovedPermissionOption(request) {
549
334
  return selectPermissionOptionId(request, "acceptForSession") ?? selectPermissionOptionId(request, "accept");
550
335
  }
551
- function makeGrokAdapter(grokSettings, options) {
336
+ function makeAcpAdapter(options) {
337
+ const PROVIDER = options.provider;
338
+ const normalizeModel = options.normalizeModel;
552
339
  return Effect.gen(function* () {
553
- const boundInstanceId = options?.instanceId ?? ProviderInstanceId.make("grok");
340
+ const boundInstanceId = options?.instanceId ?? ProviderInstanceId.make(PROVIDER);
554
341
  const fileSystem = yield* FileSystem.FileSystem;
555
342
  const path = yield* Path.Path;
556
343
  const childProcessSpawner = yield* ChildProcessSpawner.ChildProcessSpawner;
@@ -568,7 +355,7 @@ function makeGrokAdapter(grokSettings, options) {
568
355
  createdAt: nowIso
569
356
  });
570
357
  const mapAcpCallbackFailure = (effect) => effect.pipe(Effect.mapError((cause) => new AcpTransportError({
571
- detail: "Failed to process Grok ACP callback.",
358
+ detail: "Failed to process ACP callback.",
572
359
  cause
573
360
  })));
574
361
  const offerRuntimeEventForRuntime = (runtimeSessionId, event) => {
@@ -597,14 +384,14 @@ function makeGrokAdapter(grokSettings, options) {
597
384
  event: {
598
385
  id: yield* randomUUIDv4,
599
386
  kind: "notification",
600
- provider: PROVIDER$1,
387
+ provider: PROVIDER,
601
388
  createdAt: observedAt,
602
389
  method,
603
390
  threadId,
604
391
  payload
605
392
  }
606
393
  }, threadId);
607
- }).pipe(Effect.catchCause((cause) => Effect.logWarning("Failed to write native Grok notification log.", {
394
+ }).pipe(Effect.catchCause((cause) => Effect.logWarning("Failed to write native ACP notification log.", {
608
395
  cause,
609
396
  threadId,
610
397
  method
@@ -615,7 +402,7 @@ function makeGrokAdapter(grokSettings, options) {
615
402
  ctx.lastPlanFingerprint = fingerprint;
616
403
  yield* offerRuntimeEventForRuntime(ctx.session.runtimeSessionId, makeAcpPlanUpdatedEvent({
617
404
  stamp: yield* makeEventStamp(),
618
- provider: PROVIDER$1,
405
+ provider: PROVIDER,
619
406
  threadId: ctx.threadId,
620
407
  turnId: ctx.activeTurnId,
621
408
  payload,
@@ -627,7 +414,7 @@ function makeGrokAdapter(grokSettings, options) {
627
414
  const requireSession = (threadId) => {
628
415
  const ctx = sessions.get(threadId);
629
416
  if (!ctx || ctx.stopped) return Effect.fail(new ProviderAdapterSessionNotFoundError({
630
- provider: PROVIDER$1,
417
+ provider: PROVIDER,
631
418
  threadId
632
419
  }));
633
420
  return Effect.succeed(ctx);
@@ -643,42 +430,42 @@ function makeGrokAdapter(grokSettings, options) {
643
430
  yield* offerRuntimeEventForRuntime(ctx.session.runtimeSessionId, {
644
431
  type: "session.exited",
645
432
  ...yield* makeEventStamp(),
646
- provider: PROVIDER$1,
433
+ provider: PROVIDER,
647
434
  threadId: ctx.threadId,
648
435
  payload: { exitKind: "graceful" }
649
436
  });
650
437
  });
651
438
  const startSession = (input) => withThreadLock(input.threadId, Effect.gen(function* () {
652
- if (input.provider !== void 0 && input.provider !== PROVIDER$1) return yield* new ProviderAdapterValidationError({
653
- provider: PROVIDER$1,
439
+ if (input.provider !== void 0 && input.provider !== PROVIDER) return yield* new ProviderAdapterValidationError({
440
+ provider: PROVIDER,
654
441
  operation: "startSession",
655
- issue: `Expected provider '${PROVIDER$1}' but received '${input.provider}'.`
442
+ issue: `Expected provider '${PROVIDER}' but received '${input.provider}'.`
656
443
  });
657
444
  if (input.providerInstanceId !== void 0 && input.providerInstanceId !== boundInstanceId) return yield* new ProviderAdapterValidationError({
658
- provider: PROVIDER$1,
445
+ provider: PROVIDER,
659
446
  operation: "startSession",
660
447
  issue: `Expected provider instance '${boundInstanceId}' but received '${input.providerInstanceId}'.`
661
448
  });
662
- const runtimeSessionId = yield* requireRuntimeSessionId(PROVIDER$1, input);
449
+ const runtimeSessionId = yield* requireRuntimeSessionId(PROVIDER, input);
663
450
  if (!input.cwd?.trim()) return yield* new ProviderAdapterValidationError({
664
- provider: PROVIDER$1,
451
+ provider: PROVIDER,
665
452
  operation: "startSession",
666
453
  issue: "cwd is required and must be non-empty."
667
454
  });
668
455
  const effectiveResumeCursor = input.resumePolicy === "fresh" ? void 0 : input.resumeCursor;
669
- const grokResume = effectiveResumeCursor === void 0 ? void 0 : parseGrokResume(effectiveResumeCursor);
670
- if (effectiveResumeCursor !== void 0 && grokResume === void 0) return yield* new ProviderAdapterValidationError({
671
- provider: PROVIDER$1,
456
+ const acpResume = effectiveResumeCursor === void 0 ? void 0 : parseAcpResume(effectiveResumeCursor);
457
+ if (effectiveResumeCursor !== void 0 && acpResume === void 0) return yield* new ProviderAdapterValidationError({
458
+ provider: PROVIDER,
672
459
  operation: "startSession",
673
460
  issue: "resumeCursor must use schema version 1 and contain a non-empty sessionId."
674
461
  });
675
462
  const cwd = path.resolve(input.cwd.trim());
676
- const grokModelSelection = input.modelSelection?.instanceId === boundInstanceId ? input.modelSelection : void 0;
463
+ const acpModelSelection = input.modelSelection?.instanceId === boundInstanceId ? input.modelSelection : void 0;
677
464
  const existing = sessions.get(input.threadId);
678
465
  if (existing && !existing.stopped) {
679
466
  if (existing.session.runtimeSessionId === runtimeSessionId) return existing.session;
680
467
  return yield* new ProviderAdapterValidationError({
681
- provider: PROVIDER$1,
468
+ provider: PROVIDER,
682
469
  operation: "startSession",
683
470
  issue: `Thread '${input.threadId}' still has runtime '${existing.session.runtimeSessionId ?? "legacy"}'; stop it before starting '${runtimeSessionId}'.`
684
471
  });
@@ -694,14 +481,13 @@ function makeGrokAdapter(grokSettings, options) {
694
481
  isTurnActive: () => ctx !== void 0 && ctx.activeTurnId !== void 0 && !ctx.stopped
695
482
  });
696
483
  if (deviceToolBinding) yield* Scope.addFinalizer(sessionScope, Effect.sync(() => deviceToolBinding.dispose()));
697
- const resumeSessionId = grokResume?.sessionId;
484
+ const resumeSessionId = acpResume?.sessionId;
698
485
  const acpNativeLoggers = makeAcpNativeLoggers({
699
486
  nativeEventLogger,
700
- provider: PROVIDER$1,
487
+ provider: PROVIDER,
701
488
  threadId: input.threadId
702
489
  });
703
- const acp = yield* makeGrokAcpRuntime({
704
- grokSettings,
490
+ const acp = yield* options.makeRuntime({
705
491
  ...options?.environment ? { environment: options.environment } : {},
706
492
  childProcessSpawner,
707
493
  cwd,
@@ -721,13 +507,13 @@ function makeGrokAdapter(grokSettings, options) {
721
507
  }] } : {},
722
508
  ...acpNativeLoggers
723
509
  }).pipe(Effect.provideService(Scope.Scope, sessionScope), Effect.mapError((cause) => new ProviderAdapterProcessError({
724
- provider: PROVIDER$1,
510
+ provider: PROVIDER,
725
511
  threadId: input.threadId,
726
512
  detail: cause.message,
727
513
  cause
728
514
  })));
729
515
  const started = yield* Effect.gen(function* () {
730
- yield* Effect.forEach(["x.ai/ask_user_question", "_x.ai/ask_user_question"], (method) => acp.handleExtRequest(method, XAiAskUserQuestionRequest, (params) => mapAcpCallbackFailure(Effect.gen(function* () {
516
+ yield* Effect.forEach(options.xaiExtensions ? ["x.ai/ask_user_question", "_x.ai/ask_user_question"] : [], (method) => acp.handleExtRequest(method, XAiAskUserQuestionRequest, (params) => mapAcpCallbackFailure(Effect.gen(function* () {
731
517
  yield* logNative(input.threadId, method, params);
732
518
  const requestId = ApprovalRequestId.make(yield* randomUUIDv4);
733
519
  const runtimeRequestId = RuntimeRequestId.make(requestId);
@@ -736,7 +522,7 @@ function makeGrokAdapter(grokSettings, options) {
736
522
  yield* offerRuntimeEventForRuntime(runtimeSessionId, {
737
523
  type: "user-input.requested",
738
524
  ...yield* makeEventStamp(),
739
- provider: PROVIDER$1,
525
+ provider: PROVIDER,
740
526
  threadId: input.threadId,
741
527
  turnId: sessions.get(input.threadId)?.activeTurnId,
742
528
  requestId: runtimeRequestId,
@@ -753,7 +539,7 @@ function makeGrokAdapter(grokSettings, options) {
753
539
  yield* offerRuntimeEventForRuntime(runtimeSessionId, {
754
540
  type: "user-input.resolved",
755
541
  ...yield* makeEventStamp(),
756
- provider: PROVIDER$1,
542
+ provider: PROVIDER,
757
543
  threadId: input.threadId,
758
544
  turnId: sessions.get(input.threadId)?.activeTurnId,
759
545
  requestId: runtimeRequestId,
@@ -785,7 +571,7 @@ function makeGrokAdapter(grokSettings, options) {
785
571
  pendingApprovals.set(requestId, { decision });
786
572
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpRequestOpenedEvent({
787
573
  stamp: yield* makeEventStamp(),
788
- provider: PROVIDER$1,
574
+ provider: PROVIDER,
789
575
  threadId: input.threadId,
790
576
  turnId: sessions.get(input.threadId)?.activeTurnId,
791
577
  requestId: runtimeRequestId,
@@ -800,7 +586,7 @@ function makeGrokAdapter(grokSettings, options) {
800
586
  pendingApprovals.delete(requestId);
801
587
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpRequestResolvedEvent({
802
588
  stamp: yield* makeEventStamp(),
803
- provider: PROVIDER$1,
589
+ provider: PROVIDER,
804
590
  threadId: input.threadId,
805
591
  turnId: sessions.get(input.threadId)?.activeTurnId,
806
592
  requestId: runtimeRequestId,
@@ -814,27 +600,28 @@ function makeGrokAdapter(grokSettings, options) {
814
600
  } : { outcome: "cancelled" } };
815
601
  })));
816
602
  return yield* acp.start();
817
- }).pipe(Effect.mapError((error) => mapAcpToAdapterError(PROVIDER$1, input.threadId, "session/start", error)));
818
- const requestedStartModelId = grokModelSelection?.model ? resolveGrokAcpBaseModelId(grokModelSelection.model) : void 0;
819
- const boundModelId = yield* applyGrokAcpModelSelection({
603
+ }).pipe(Effect.mapError((error) => mapAcpToAdapterError(PROVIDER, input.threadId, "session/start", error)));
604
+ if (options.onStarted) yield* options.onStarted(started);
605
+ const requestedStartModelId = acpModelSelection?.model ? normalizeModel(acpModelSelection.model) : void 0;
606
+ const boundModelId = yield* applyAcpModelSelection({
820
607
  runtime: acp,
821
- currentModelId: currentGrokModelIdFromSessionSetup(started.sessionSetupResult),
822
- requestedModelId: requestedStartModelId,
823
- mapError: (cause) => mapAcpToAdapterError(PROVIDER$1, input.threadId, "session/set_model", cause)
608
+ currentModelId: currentAcpModelIdFromSessionSetup(started.sessionSetupResult),
609
+ requestedModelId: requestedStartModelId || void 0,
610
+ mapError: (cause) => mapAcpToAdapterError(PROVIDER, input.threadId, "session/set_model", cause)
824
611
  });
825
612
  const now = yield* nowIso;
826
613
  const session = {
827
- provider: PROVIDER$1,
614
+ provider: PROVIDER,
828
615
  providerInstanceId: boundInstanceId,
829
616
  runtimeSessionId,
830
617
  status: "ready",
831
618
  runtimeMode: input.runtimeMode,
832
619
  tokenMode: input.tokenMode ?? "balanced",
833
620
  cwd,
834
- ...boundModelId ? { model: resolveGrokAcpBaseModelId(boundModelId) } : {},
621
+ ...boundModelId ? { model: normalizeModel(boundModelId) } : {},
835
622
  threadId: input.threadId,
836
623
  resumeCursor: {
837
- schemaVersion: GROK_RESUME_VERSION,
624
+ schemaVersion: ACP_RESUME_VERSION,
838
625
  sessionId: started.sessionId
839
626
  },
840
627
  createdAt: now,
@@ -854,14 +641,18 @@ function makeGrokAdapter(grokSettings, options) {
854
641
  lastPlanFingerprint: void 0,
855
642
  activeTurnId: void 0,
856
643
  currentModelId: boundModelId,
644
+ promptImages: started.initializeResult.agentCapabilities?.promptCapabilities?.image === true,
857
645
  stopped: false
858
646
  };
859
647
  const nf = yield* Stream.runDrain(Stream.mapEffect(acp.getEvents(), (event) => Effect.gen(function* () {
860
648
  switch (event._tag) {
649
+ case "CommandsUpdated":
650
+ if (options.onCommands) yield* options.onCommands(event.commands);
651
+ return;
861
652
  case "AssistantItemStarted":
862
653
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpAssistantItemEvent({
863
654
  stamp: yield* makeEventStamp(),
864
- provider: PROVIDER$1,
655
+ provider: PROVIDER,
865
656
  threadId: ctx.threadId,
866
657
  turnId: ctx.activeTurnId,
867
658
  itemId: event.itemId,
@@ -871,7 +662,7 @@ function makeGrokAdapter(grokSettings, options) {
871
662
  case "AssistantItemCompleted":
872
663
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpAssistantItemEvent({
873
664
  stamp: yield* makeEventStamp(),
874
- provider: PROVIDER$1,
665
+ provider: PROVIDER,
875
666
  threadId: ctx.threadId,
876
667
  turnId: ctx.activeTurnId,
877
668
  itemId: event.itemId,
@@ -886,14 +677,14 @@ function makeGrokAdapter(grokSettings, options) {
886
677
  yield* logNative(ctx.threadId, "session/update", event.rawPayload);
887
678
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpToolCallEvent({
888
679
  stamp: yield* makeEventStamp(),
889
- provider: PROVIDER$1,
680
+ provider: PROVIDER,
890
681
  threadId: ctx.threadId,
891
682
  turnId: ctx.activeTurnId,
892
683
  toolCall: event.toolCall,
893
684
  rawPayload: event.rawPayload
894
685
  }));
895
686
  for (const subagentEvent of yield* ctx.subagentEvents({
896
- provider: PROVIDER$1,
687
+ provider: PROVIDER,
897
688
  threadId: ctx.threadId,
898
689
  turnId: ctx.activeTurnId,
899
690
  state: event.toolCall.subagent,
@@ -905,7 +696,7 @@ function makeGrokAdapter(grokSettings, options) {
905
696
  yield* logNative(ctx.threadId, "session/update", event.rawPayload);
906
697
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpContentDeltaEvent({
907
698
  stamp: yield* makeEventStamp(),
908
- provider: PROVIDER$1,
699
+ provider: PROVIDER,
909
700
  threadId: ctx.threadId,
910
701
  turnId: ctx.activeTurnId,
911
702
  ...event.itemId ? { itemId: event.itemId } : {},
@@ -917,7 +708,7 @@ function makeGrokAdapter(grokSettings, options) {
917
708
  yield* logNative(ctx.threadId, "session/update", event.rawPayload);
918
709
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpThoughtDeltaEvent({
919
710
  stamp: yield* makeEventStamp(),
920
- provider: PROVIDER$1,
711
+ provider: PROVIDER,
921
712
  threadId: ctx.threadId,
922
713
  turnId: ctx.activeTurnId,
923
714
  text: event.text,
@@ -925,10 +716,11 @@ function makeGrokAdapter(grokSettings, options) {
925
716
  }));
926
717
  return;
927
718
  case "UsageUpdated":
719
+ if (options.onUsage) yield* options.onUsage();
928
720
  yield* logNative(ctx.threadId, "session/update", event.rawPayload);
929
721
  yield* offerRuntimeEventForRuntime(runtimeSessionId, makeAcpTokenUsageEvent({
930
722
  stamp: yield* makeEventStamp(),
931
- provider: PROVIDER$1,
723
+ provider: PROVIDER,
932
724
  threadId: ctx.threadId,
933
725
  turnId: ctx.activeTurnId,
934
726
  usage: event.usage,
@@ -943,24 +735,24 @@ function makeGrokAdapter(grokSettings, options) {
943
735
  yield* offerRuntimeEventForRuntime(runtimeSessionId, {
944
736
  type: "session.started",
945
737
  ...yield* makeEventStamp(),
946
- provider: PROVIDER$1,
738
+ provider: PROVIDER,
947
739
  threadId: input.threadId,
948
740
  payload: { resume: started.initializeResult }
949
741
  });
950
742
  yield* offerRuntimeEventForRuntime(runtimeSessionId, {
951
743
  type: "session.state.changed",
952
744
  ...yield* makeEventStamp(),
953
- provider: PROVIDER$1,
745
+ provider: PROVIDER,
954
746
  threadId: input.threadId,
955
747
  payload: {
956
748
  state: "ready",
957
- reason: "Grok ACP session ready"
749
+ reason: "ACP session ready"
958
750
  }
959
751
  });
960
752
  yield* offerRuntimeEventForRuntime(runtimeSessionId, {
961
753
  type: "thread.started",
962
754
  ...yield* makeEventStamp(),
963
- provider: PROVIDER$1,
755
+ provider: PROVIDER,
964
756
  threadId: input.threadId,
965
757
  payload: { providerThreadId: started.sessionId }
966
758
  });
@@ -971,16 +763,16 @@ function makeGrokAdapter(grokSettings, options) {
971
763
  const ctx = yield* requireSession(input.threadId);
972
764
  const turnId = TurnId.make(yield* randomUUIDv4);
973
765
  const turnModelSelection = input.modelSelection?.instanceId === boundInstanceId ? input.modelSelection : void 0;
974
- const requestedTurnModelId = turnModelSelection?.model ? resolveGrokAcpBaseModelId(turnModelSelection.model) : void 0;
975
- const currentModelId = yield* applyGrokAcpModelSelection({
766
+ const requestedTurnModelId = turnModelSelection?.model ? normalizeModel(turnModelSelection.model) : void 0;
767
+ const currentModelId = yield* applyAcpModelSelection({
976
768
  runtime: ctx.acp,
977
769
  currentModelId: ctx.currentModelId,
978
- requestedModelId: requestedTurnModelId,
979
- mapError: (cause) => mapAcpToAdapterError(PROVIDER$1, input.threadId, "session/set_model", cause)
770
+ requestedModelId: requestedTurnModelId || void 0,
771
+ mapError: (cause) => mapAcpToAdapterError(PROVIDER, input.threadId, "session/set_model", cause)
980
772
  });
981
773
  const pathLineEntries = [];
982
774
  const imagePromptParts = yield* Effect.forEach(input.attachments ?? [], (attachment) => Effect.gen(function* () {
983
- if (!isPersistableChatAttachment(attachment) || attachment.type !== "image") {
775
+ if (!isPersistableChatAttachment(attachment) || attachment.type !== "image" || options.respectPromptCapabilities && !ctx.promptImages) {
984
776
  pathLineEntries.push({
985
777
  attachment,
986
778
  ...attachment.id === void 0 ? {} : { resolvedPath: resolveAttachmentPath({
@@ -995,12 +787,12 @@ function makeGrokAdapter(grokSettings, options) {
995
787
  attachment
996
788
  });
997
789
  if (!attachmentPath) return yield* new ProviderAdapterRequestError({
998
- provider: PROVIDER$1,
790
+ provider: PROVIDER,
999
791
  method: "session/prompt",
1000
792
  detail: `Invalid attachment id '${attachment.id}'.`
1001
793
  });
1002
794
  const bytes = yield* fileSystem.readFile(attachmentPath).pipe(Effect.mapError((cause) => new ProviderAdapterRequestError({
1003
- provider: PROVIDER$1,
795
+ provider: PROVIDER,
1004
796
  method: "session/prompt",
1005
797
  detail: cause.message,
1006
798
  cause
@@ -1017,12 +809,12 @@ function makeGrokAdapter(grokSettings, options) {
1017
809
  text: promptText
1018
810
  }] : [], ...imagePromptParts.filter((part) => part !== null)];
1019
811
  if (promptParts.length === 0) return yield* new ProviderAdapterValidationError({
1020
- provider: PROVIDER$1,
812
+ provider: PROVIDER,
1021
813
  operation: "sendTurn",
1022
814
  issue: "Turn requires non-empty text or attachments."
1023
815
  });
1024
816
  ctx.currentModelId = currentModelId;
1025
- const displayModel = currentModelId ? resolveGrokAcpBaseModelId(currentModelId) : void 0;
817
+ const displayModel = currentModelId ? normalizeModel(currentModelId) : void 0;
1026
818
  ctx.activeTurnId = turnId;
1027
819
  ctx.lastPlanFingerprint = void 0;
1028
820
  ctx.session = {
@@ -1034,7 +826,7 @@ function makeGrokAdapter(grokSettings, options) {
1034
826
  yield* offerRuntimeEventForRuntime(ctx.session.runtimeSessionId, {
1035
827
  type: "turn.started",
1036
828
  ...yield* makeEventStamp(),
1037
- provider: PROVIDER$1,
829
+ provider: PROVIDER,
1038
830
  threadId: input.threadId,
1039
831
  turnId,
1040
832
  payload: displayModel ? { model: displayModel } : {}
@@ -1047,13 +839,13 @@ function makeGrokAdapter(grokSettings, options) {
1047
839
  turnId
1048
840
  };
1049
841
  }));
1050
- const result = yield* prepared.acp.prompt({ prompt: prepared.promptParts }).pipe(Effect.mapError((error) => mapAcpToAdapterError(PROVIDER$1, input.threadId, "session/prompt", error)));
842
+ const result = yield* prepared.acp.prompt({ prompt: prepared.promptParts }).pipe(Effect.mapError((error) => mapAcpToAdapterError(PROVIDER, input.threadId, "session/prompt", error)));
1051
843
  return yield* withThreadLock(input.threadId, Effect.gen(function* () {
1052
844
  const ctx = yield* requireSession(input.threadId);
1053
845
  if (ctx.acpSessionId !== prepared.acpSessionId) return yield* new ProviderAdapterRequestError({
1054
- provider: PROVIDER$1,
846
+ provider: PROVIDER,
1055
847
  method: "session/prompt",
1056
- detail: "Grok session changed before the turn completed."
848
+ detail: "ACP session changed before the turn completed."
1057
849
  });
1058
850
  ctx.turns = [...ctx.turns, {
1059
851
  id: prepared.turnId,
@@ -1071,7 +863,7 @@ function makeGrokAdapter(grokSettings, options) {
1071
863
  yield* offerRuntimeEventForRuntime(ctx.session.runtimeSessionId, {
1072
864
  type: "turn.completed",
1073
865
  ...yield* makeEventStamp(),
1074
- provider: PROVIDER$1,
866
+ provider: PROVIDER,
1075
867
  threadId: input.threadId,
1076
868
  turnId: prepared.turnId,
1077
869
  payload: {
@@ -1090,12 +882,12 @@ function makeGrokAdapter(grokSettings, options) {
1090
882
  const ctx = yield* requireSession(threadId);
1091
883
  yield* settlePendingApprovalsAsCancelled(ctx.pendingApprovals);
1092
884
  yield* settlePendingUserInputsAsCancelled(ctx.pendingUserInputs);
1093
- yield* Effect.ignore(ctx.acp.cancel.pipe(Effect.mapError((error) => mapAcpToAdapterError(PROVIDER$1, threadId, "session/cancel", error))));
885
+ yield* Effect.ignore(ctx.acp.cancel.pipe(Effect.mapError((error) => mapAcpToAdapterError(PROVIDER, threadId, "session/cancel", error))));
1094
886
  });
1095
887
  const respondToRequest = (threadId, requestId, decision) => Effect.gen(function* () {
1096
888
  const pending = (yield* requireSession(threadId)).pendingApprovals.get(requestId);
1097
889
  if (!pending) return yield* new ProviderAdapterRequestError({
1098
- provider: PROVIDER$1,
890
+ provider: PROVIDER,
1099
891
  method: "session/request_permission",
1100
892
  detail: `Unknown pending approval request: ${requestId}`
1101
893
  });
@@ -1104,7 +896,7 @@ function makeGrokAdapter(grokSettings, options) {
1104
896
  const respondToUserInput = (threadId, requestId, answers) => Effect.gen(function* () {
1105
897
  const pending = (yield* requireSession(threadId)).pendingUserInputs.get(requestId);
1106
898
  if (!pending) return yield* new ProviderAdapterRequestError({
1107
- provider: PROVIDER$1,
899
+ provider: PROVIDER,
1108
900
  method: "_x.ai/ask_user_question",
1109
901
  detail: `Unknown pending user-input request: ${requestId}`
1110
902
  });
@@ -1122,14 +914,14 @@ function makeGrokAdapter(grokSettings, options) {
1122
914
  const rollbackThread = (threadId, numTurns) => Effect.gen(function* () {
1123
915
  yield* requireSession(threadId);
1124
916
  if (!Number.isInteger(numTurns) || numTurns < 1) return yield* new ProviderAdapterValidationError({
1125
- provider: PROVIDER$1,
917
+ provider: PROVIDER,
1126
918
  operation: "rollbackThread",
1127
919
  issue: "numTurns must be an integer >= 1."
1128
920
  });
1129
921
  return yield* new ProviderAdapterRequestError({
1130
- provider: PROVIDER$1,
922
+ provider: PROVIDER,
1131
923
  method: "thread/rollback",
1132
- detail: "Grok ACP sessions do not support provider-side rollback yet."
924
+ detail: "ACP sessions do not support provider-side rollback yet."
1133
925
  });
1134
926
  });
1135
927
  const stopSession = (threadId) => withThreadLock(threadId, Effect.gen(function* () {
@@ -1145,8 +937,10 @@ function makeGrokAdapter(grokSettings, options) {
1145
937
  yield* Effect.addFinalizer(() => Effect.ignore(stopAll()).pipe(Effect.tap(() => PubSub.shutdown(runtimeEventPubSub)), Effect.tap(() => managedNativeEventLogger?.close() ?? Effect.void)));
1146
938
  const streamEvents = Stream.fromPubSub(runtimeEventPubSub);
1147
939
  return {
1148
- provider: PROVIDER$1,
1149
- capabilities: { sessionModelSwitch: "unsupported" },
940
+ provider: PROVIDER,
941
+ capabilities: { get sessionModelSwitch() {
942
+ return options.getSessionModelSwitch?.() ?? "unsupported";
943
+ } },
1150
944
  startSession,
1151
945
  sendTurn,
1152
946
  interruptTurn,
@@ -1163,300 +957,4 @@ function makeGrokAdapter(grokSettings, options) {
1163
957
  });
1164
958
  }
1165
959
  //#endregion
1166
- //#region src/provider/Layers/GrokProvider.ts
1167
- const GROK_PRESENTATION = {
1168
- displayName: "Grok",
1169
- badgeLabel: "Early Access",
1170
- showInteractionModeToggle: false
1171
- };
1172
- const PROVIDER = ProviderDriverKind.make("grok");
1173
- const EMPTY_CAPABILITIES = createModelCapabilities({ optionDescriptors: [] });
1174
- const VERSION_PROBE_TIMEOUT_MS = 4e3;
1175
- const GROK_ACP_MODEL_DISCOVERY_TIMEOUT_MS = 15e3;
1176
- const GROK_BUILT_IN_MODELS = [{
1177
- slug: "grok-build",
1178
- name: "Grok Build",
1179
- isCustom: false,
1180
- capabilities: EMPTY_CAPABILITIES
1181
- }];
1182
- function buildInitialGrokProviderSnapshot(grokSettings) {
1183
- const checkedAt = (/* @__PURE__ */ new Date()).toISOString();
1184
- const models = grokModelsFromSettings(grokSettings.customModels);
1185
- if (!grokSettings.enabled) return buildServerProvider({
1186
- presentation: GROK_PRESENTATION,
1187
- enabled: false,
1188
- checkedAt,
1189
- models,
1190
- probe: {
1191
- installed: false,
1192
- version: null,
1193
- status: "warning",
1194
- auth: { status: "unknown" },
1195
- message: "Grok is disabled in Ryco settings."
1196
- }
1197
- });
1198
- return buildServerProvider({
1199
- presentation: GROK_PRESENTATION,
1200
- enabled: true,
1201
- checkedAt,
1202
- models,
1203
- probe: {
1204
- installed: true,
1205
- version: null,
1206
- status: "warning",
1207
- auth: { status: "unknown" },
1208
- message: "Checking Grok CLI availability..."
1209
- }
1210
- });
1211
- }
1212
- function grokModelsFromSettings(customModels, builtInModels = GROK_BUILT_IN_MODELS) {
1213
- return providerModelsFromSettings(builtInModels, PROVIDER, customModels ?? [], EMPTY_CAPABILITIES);
1214
- }
1215
- function buildGrokDiscoveredModelsFromSessionModelState(modelState) {
1216
- if (!modelState || modelState.availableModels.length === 0) return [];
1217
- const seen = /* @__PURE__ */ new Set();
1218
- return modelState.availableModels.map((model) => {
1219
- const slug = resolveGrokAcpBaseModelId(model.modelId);
1220
- if (!slug || seen.has(slug)) return;
1221
- seen.add(slug);
1222
- return {
1223
- slug,
1224
- name: model.name.trim() || slug,
1225
- isCustom: false,
1226
- capabilities: EMPTY_CAPABILITIES
1227
- };
1228
- }).filter((model) => model !== void 0);
1229
- }
1230
- const discoverGrokModelsViaAcp = (grokSettings, environment = process.env) => Effect.gen(function* () {
1231
- const childProcessSpawner = yield* ChildProcessSpawner.ChildProcessSpawner;
1232
- return buildGrokDiscoveredModelsFromSessionModelState((yield* (yield* makeGrokAcpRuntime({
1233
- grokSettings,
1234
- environment,
1235
- childProcessSpawner,
1236
- cwd: process.cwd(),
1237
- clientInfo: {
1238
- name: "ryco-provider-probe",
1239
- version: "0.0.0"
1240
- }
1241
- })).start()).sessionSetupResult.models);
1242
- }).pipe(Effect.scoped);
1243
- const runGrokVersionCommand = (grokSettings, environment = process.env) => {
1244
- const command = grokSettings.binaryPath || "grok";
1245
- return spawnAndCollect(command, ChildProcess.make(command, ["--version"], {
1246
- env: environment,
1247
- shell: process.platform === "win32"
1248
- }));
1249
- };
1250
- const checkGrokProviderStatus = Effect.fn("checkGrokProviderStatus")(function* (grokSettings, environment = process.env) {
1251
- const checkedAt = DateTime.formatIso(yield* DateTime.now);
1252
- const fallbackModels = grokModelsFromSettings(grokSettings.customModels);
1253
- if (!grokSettings.enabled) return buildServerProvider({
1254
- presentation: GROK_PRESENTATION,
1255
- enabled: false,
1256
- checkedAt,
1257
- models: fallbackModels,
1258
- probe: {
1259
- installed: false,
1260
- version: null,
1261
- status: "warning",
1262
- auth: { status: "unknown" },
1263
- message: "Grok is disabled in Ryco settings."
1264
- }
1265
- });
1266
- const versionResult = yield* runGrokVersionCommand(grokSettings, environment).pipe(Effect.timeoutOption(VERSION_PROBE_TIMEOUT_MS), Effect.result);
1267
- if (Result.isFailure(versionResult)) {
1268
- const error = versionResult.failure;
1269
- yield* Effect.logWarning("Grok CLI health check failed.", { errorTag: error.name });
1270
- return buildServerProvider({
1271
- presentation: GROK_PRESENTATION,
1272
- enabled: grokSettings.enabled,
1273
- checkedAt,
1274
- models: fallbackModels,
1275
- probe: {
1276
- installed: !isCommandMissingCause(error),
1277
- version: null,
1278
- status: "error",
1279
- auth: { status: "unknown" },
1280
- message: isCommandMissingCause(error) ? "Grok CLI (`grok`) is not installed or not on PATH." : "Failed to execute Grok CLI health check."
1281
- }
1282
- });
1283
- }
1284
- if (Option.isNone(versionResult.success)) return buildServerProvider({
1285
- presentation: GROK_PRESENTATION,
1286
- enabled: grokSettings.enabled,
1287
- checkedAt,
1288
- models: fallbackModels,
1289
- probe: {
1290
- installed: true,
1291
- version: null,
1292
- status: "error",
1293
- auth: { status: "unknown" },
1294
- message: "Grok CLI is installed but timed out while running `grok --version`."
1295
- }
1296
- });
1297
- const versionOutput = versionResult.success.value;
1298
- const version = parseGenericCliVersion(`${versionOutput.stdout}\n${versionOutput.stderr}`);
1299
- if (versionOutput.code !== 0) {
1300
- yield* Effect.logWarning("Grok CLI version probe exited with a non-zero status.", {
1301
- exitCode: versionOutput.code,
1302
- stdoutLength: versionOutput.stdout.length,
1303
- stderrLength: versionOutput.stderr.length
1304
- });
1305
- return buildServerProvider({
1306
- presentation: GROK_PRESENTATION,
1307
- enabled: grokSettings.enabled,
1308
- checkedAt,
1309
- models: fallbackModels,
1310
- probe: {
1311
- installed: true,
1312
- version,
1313
- status: "error",
1314
- auth: { status: "unknown" },
1315
- message: "Grok CLI is installed but failed to run."
1316
- }
1317
- });
1318
- }
1319
- const discoveryExit = yield* discoverGrokModelsViaAcp(grokSettings, environment).pipe(Effect.timeoutOption(GROK_ACP_MODEL_DISCOVERY_TIMEOUT_MS), Effect.exit);
1320
- if (Exit.isFailure(discoveryExit)) {
1321
- yield* Effect.logWarning("Grok ACP model discovery failed", { cause: Cause.pretty(discoveryExit.cause) });
1322
- return buildServerProvider({
1323
- presentation: GROK_PRESENTATION,
1324
- enabled: grokSettings.enabled,
1325
- checkedAt,
1326
- models: fallbackModels,
1327
- probe: {
1328
- installed: true,
1329
- version,
1330
- status: "error",
1331
- auth: { status: "unknown" },
1332
- message: "Grok CLI is installed but ACP startup failed. Check server logs for details."
1333
- }
1334
- });
1335
- }
1336
- if (Option.isNone(discoveryExit.value)) {
1337
- yield* Effect.logWarning(`Grok ACP model discovery timed out after ${GROK_ACP_MODEL_DISCOVERY_TIMEOUT_MS}ms.`);
1338
- return buildServerProvider({
1339
- presentation: GROK_PRESENTATION,
1340
- enabled: grokSettings.enabled,
1341
- checkedAt,
1342
- models: fallbackModels,
1343
- probe: {
1344
- installed: true,
1345
- version,
1346
- status: "error",
1347
- auth: { status: "unknown" },
1348
- message: `Grok CLI is installed but ACP startup timed out after ${GROK_ACP_MODEL_DISCOVERY_TIMEOUT_MS}ms.`
1349
- }
1350
- });
1351
- }
1352
- const discoveredModels = discoveryExit.value.value;
1353
- const models = discoveredModels.length > 0 ? grokModelsFromSettings(grokSettings.customModels, discoveredModels) : fallbackModels;
1354
- return buildServerProvider({
1355
- presentation: GROK_PRESENTATION,
1356
- enabled: grokSettings.enabled,
1357
- checkedAt,
1358
- models,
1359
- probe: {
1360
- installed: true,
1361
- version,
1362
- status: "ready",
1363
- auth: { status: "unknown" }
1364
- }
1365
- });
1366
- });
1367
- const enrichGrokSnapshot = (input) => {
1368
- const { snapshot, publishSnapshot } = input;
1369
- return enrichProviderSnapshotWithVersionAdvisory(snapshot, input.maintenanceCapabilities).pipe(Effect.provideService(HttpClient.HttpClient, input.httpClient), Effect.provideService(ServerSettingsService, input.serverSettings), Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot)), Effect.catchCause((cause) => Effect.logWarning("Grok version advisory enrichment failed", { cause: Cause.pretty(cause) })), Effect.asVoid);
1370
- };
1371
- //#endregion
1372
- //#region src/provider/Drivers/GrokDriver.ts
1373
- const decodeGrokSettings = Schema.decodeSync(GrokSettings);
1374
- const DRIVER_KIND = ProviderDriverKind.make("grok");
1375
- const SNAPSHOT_REFRESH_INTERVAL = Duration.minutes(5);
1376
- const UPDATE = makeStaticProviderMaintenanceResolver(makeManualOnlyProviderMaintenanceCapabilities({
1377
- provider: DRIVER_KIND,
1378
- packageName: null
1379
- }));
1380
- const withInstanceIdentity = (input) => (snapshot) => ({
1381
- ...snapshot,
1382
- instanceId: input.instanceId,
1383
- driver: DRIVER_KIND,
1384
- ...input.displayName ? { displayName: input.displayName } : {},
1385
- ...input.accentColor ? { accentColor: input.accentColor } : {},
1386
- continuation: { groupKey: input.continuationGroupKey }
1387
- });
1388
- const GrokDriver = {
1389
- driverKind: DRIVER_KIND,
1390
- metadata: {
1391
- displayName: "Grok",
1392
- supportsMultipleInstances: true
1393
- },
1394
- configSchema: GrokSettings,
1395
- defaultConfig: () => decodeGrokSettings({}),
1396
- create: ({ instanceId, displayName, accentColor, environment, enabled, config }) => Effect.gen(function* () {
1397
- const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
1398
- const httpClient = yield* HttpClient.HttpClient;
1399
- const serverSettings = yield* ServerSettingsService;
1400
- const eventLoggers = yield* ProviderEventLoggers;
1401
- const processEnv = mergeProviderInstanceEnvironment(environment);
1402
- const continuationIdentity = defaultProviderContinuationIdentity({
1403
- driverKind: DRIVER_KIND,
1404
- instanceId
1405
- });
1406
- const stampIdentity = withInstanceIdentity({
1407
- instanceId,
1408
- displayName,
1409
- accentColor,
1410
- continuationGroupKey: continuationIdentity.continuationKey
1411
- });
1412
- const effectiveConfig = {
1413
- ...config,
1414
- enabled
1415
- };
1416
- const maintenanceCapabilities = yield* resolveProviderMaintenanceCapabilitiesEffect(UPDATE, {
1417
- binaryPath: effectiveConfig.binaryPath,
1418
- env: processEnv
1419
- });
1420
- const adapter = yield* makeGrokAdapter(effectiveConfig, {
1421
- environment: processEnv,
1422
- ...eventLoggers.native ? { nativeEventLogger: eventLoggers.native } : {},
1423
- instanceId
1424
- });
1425
- const textGeneration = yield* makeGrokTextGeneration(effectiveConfig, processEnv);
1426
- const checkProvider = checkGrokProviderStatus(effectiveConfig, processEnv).pipe(Effect.map(stampIdentity), Effect.provideService(ChildProcessSpawner.ChildProcessSpawner, spawner));
1427
- const snapshot = yield* makeManagedServerProvider({
1428
- maintenanceCapabilities,
1429
- getSettings: Effect.succeed(effectiveConfig),
1430
- streamSettings: Stream.never,
1431
- haveSettingsChanged: () => false,
1432
- initialSnapshot: (settings) => stampIdentity(buildInitialGrokProviderSnapshot(settings)),
1433
- checkProvider,
1434
- enrichSnapshot: ({ snapshot: currentSnapshot, publishSnapshot }) => enrichGrokSnapshot({
1435
- snapshot: currentSnapshot,
1436
- maintenanceCapabilities,
1437
- publishSnapshot,
1438
- httpClient,
1439
- serverSettings
1440
- }),
1441
- refreshInterval: SNAPSHOT_REFRESH_INTERVAL
1442
- }).pipe(Effect.mapError((cause) => new ProviderDriverError({
1443
- driver: DRIVER_KIND,
1444
- instanceId,
1445
- detail: `Failed to build Grok snapshot: ${cause.message ?? String(cause)}`,
1446
- cause
1447
- })));
1448
- return {
1449
- instanceId,
1450
- driverKind: DRIVER_KIND,
1451
- continuationIdentity,
1452
- displayName,
1453
- accentColor,
1454
- enabled,
1455
- snapshot,
1456
- adapter,
1457
- textGeneration
1458
- };
1459
- })
1460
- };
1461
- //#endregion
1462
- export { GrokDriver };
960
+ export { currentAcpModelIdFromSessionSetup as i, makeXAiPromptCompletionRuntime as n, applyAcpModelSelection as r, makeAcpAdapter as t };