ryco-cli 0.1.12 → 0.1.14

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 (215) hide show
  1. package/dist/{AcpNativeLogging-Ba9Nn9Re.mjs → AcpNativeLogging-D3fe64a6.mjs} +1 -1
  2. package/dist/{AcpNativeLogging-Be1KGJfF.cjs → AcpNativeLogging-vLtnq5f1.cjs} +1 -1
  3. package/dist/{AzureDevOpsSourceControlProvider-CVj-F-pW.cjs → AzureDevOpsSourceControlProvider-BtezW57t.cjs} +2 -2
  4. package/dist/{AzureDevOpsSourceControlProvider-CGlK6M0b.mjs → AzureDevOpsSourceControlProvider-WNUDtsur.mjs} +2 -2
  5. package/dist/{BitbucketSourceControlProvider-CEZEd4PX.cjs → BitbucketSourceControlProvider-BWzNM0jW.cjs} +2 -2
  6. package/dist/{BitbucketSourceControlProvider-BV6iRDi7.mjs → BitbucketSourceControlProvider-tbbUFKz3.mjs} +2 -2
  7. package/dist/{ClaudeDriver-lBU7EyUX.cjs → ClaudeDriver-BTvdJvam.cjs} +170 -7
  8. package/dist/{ClaudeDriver-rooMNrJz.mjs → ClaudeDriver-CG5ngU5z.mjs} +171 -8
  9. package/dist/{CodexDriver-DBz2rPXb.mjs → CodexDriver-49o7TA-C.mjs} +4 -4
  10. package/dist/{CodexDriver-CZCIJSLV.cjs → CodexDriver-CFxwJNXx.cjs} +3 -3
  11. package/dist/{CodexTextGeneration-BeG7ymPC.mjs → CodexTextGeneration-C0t4xcPO.mjs} +2 -2
  12. package/dist/{CodexTextGeneration-BvIcyD1P.cjs → CodexTextGeneration-CedcXf9a.cjs} +1 -1
  13. package/dist/{CopilotDriver-CX5zhEdZ.cjs → CopilotDriver-B8J_ovCX.cjs} +20 -16
  14. package/dist/{CopilotDriver-D36vbGbn.mjs → CopilotDriver-Cu1B1skB.mjs} +21 -17
  15. package/dist/{CursorDriver-DWuuOSkJ.mjs → CursorDriver-P_A8uQki.mjs} +4 -4
  16. package/dist/{CursorDriver-CPBVeesr.cjs → CursorDriver-zlKHPy1_.cjs} +3 -3
  17. package/dist/{ForgejoSourceControlProvider-CeN7Snfr.mjs → ForgejoSourceControlProvider-DLhJZtq9.mjs} +2 -2
  18. package/dist/{ForgejoSourceControlProvider-CzmmcAZO.cjs → ForgejoSourceControlProvider-szJ-dvsD.cjs} +2 -2
  19. package/dist/{GitHubSourceControlProvider-DfFR9O2o.cjs → GitHubSourceControlProvider-3ofb6HsF.cjs} +2 -2
  20. package/dist/{GitHubSourceControlProvider-Dmz1LJct.mjs → GitHubSourceControlProvider-D5MQQPCJ.mjs} +2 -2
  21. package/dist/{GitLabSourceControlProvider-C21lwphV.mjs → GitLabSourceControlProvider-DLkxeob5.mjs} +2 -2
  22. package/dist/{GitLabSourceControlProvider-DGoelNmL.cjs → GitLabSourceControlProvider-DkupZH5G.cjs} +2 -2
  23. package/dist/{GrokDriver-CIXj_4ry.cjs → GrokDriver-CTUNclwp.cjs} +3 -3
  24. package/dist/{GrokDriver-qKX1a63G.mjs → GrokDriver-D8KoMY76.mjs} +4 -4
  25. package/dist/{OpenCodeDriver-CbdswhqU.mjs → OpenCodeDriver-B7htxutj.mjs} +92 -27
  26. package/dist/{OpenCodeDriver-DDEuwtXl.cjs → OpenCodeDriver-pXM8bSct.cjs} +91 -26
  27. package/dist/{SourceControlProviderDiscoveryCatalog-DJWDCoup.cjs → SourceControlProviderDiscoveryCatalog-Bj_sZfmB.cjs} +1 -1
  28. package/dist/{SourceControlProviderDiscoveryCatalog-4_4yahsa.mjs → SourceControlProviderDiscoveryCatalog-C6Fn7rZE.mjs} +1 -1
  29. package/dist/bin.cjs +1113 -312
  30. package/dist/bin.mjs +1115 -315
  31. package/dist/client/assets/{AccountSettings-C3v2klAG.js → AccountSettings-CinnQaX-.js} +1 -1
  32. package/dist/client/assets/{AiFocusSettings-BquKjnWf.js → AiFocusSettings-UbXOywZg.js} +1 -1
  33. package/dist/client/assets/{AnimatedHeight-BIsV_Z3J.js → AnimatedHeight-DCad8EQ2.js} +1 -1
  34. package/dist/client/assets/AppearanceSettings-CTh8Z8nz.js +1 -0
  35. package/dist/client/assets/{BranchToolbar.logic-CmvD76Cw.js → BranchToolbar.logic-37EnknDD.js} +1 -1
  36. package/dist/client/assets/ChatRightPanel-DUwLYKbp.js +27 -0
  37. package/dist/client/assets/{ChatThreadRouteView-DlgAAOCp.js → ChatThreadRouteView-C43W0PEz.js} +1 -1
  38. package/dist/client/assets/CommandPaletteDialog-IHOe0hOG.js +1 -0
  39. package/dist/client/assets/{CompositeItem-F3NGn6aG.js → CompositeItem-ClLCuzeJ.js} +1 -1
  40. package/dist/client/assets/{CompositeRoot-CmJGfRtc.js → CompositeRoot-Bdsr9eHn.js} +1 -1
  41. package/dist/client/assets/{ConnectionsSettings-Ccn8q4fG.js → ConnectionsSettings-tmBjGOPj.js} +2 -2
  42. package/dist/client/assets/{DiagnosticsSettings-QXpjXOrH.js → DiagnosticsSettings-CbCEgaau.js} +1 -1
  43. package/dist/client/assets/{DialogHandle-C4uSr9wX.js → DialogHandle-CitVLvYq.js} +1 -1
  44. package/dist/client/assets/{DialogPopup-Dck8r8Hn.js → DialogPopup-CfaEr9jv.js} +1 -1
  45. package/dist/client/assets/DialogRoot-CyEOjgGH.js +1 -0
  46. package/dist/client/assets/{DialogTitle-CCedPAjV.js → DialogTitle-BUkU0qXf.js} +1 -1
  47. package/dist/client/assets/{DialogTrigger-CYJ7_YcV.js → DialogTrigger-CEjWue7M.js} +1 -1
  48. package/dist/client/assets/{DialogViewport-D-CrTM-P.js → DialogViewport-Cyc_ye5w.js} +1 -1
  49. package/dist/client/assets/{DraftChatThreadRouteView-DFMY6O91.js → DraftChatThreadRouteView-BSA67nKa.js} +1 -1
  50. package/dist/client/assets/{ExternalIdentityWeb.logic-D64j70NH.js → ExternalIdentityWeb.logic-BqdBjAua.js} +1 -1
  51. package/dist/client/assets/GlassSurface-B3cq28tB.js +1 -0
  52. package/dist/client/assets/{HostedConnectionControls-BC4kVWTa.js → HostedConnectionControls-S2Wr9fiZ.js} +1 -1
  53. package/dist/client/assets/HostedHubRoot-DK9zP4tJ.js +1 -0
  54. package/dist/client/assets/{HostedNativeAuthorizationRoute-Df0oSrLR.js → HostedNativeAuthorizationRoute-CKnLbCOH.js} +1 -1
  55. package/dist/client/assets/{HostedRelayTrustNotice-ffS_O2AX.js → HostedRelayTrustNotice-CbF_SOpf.js} +1 -1
  56. package/dist/client/assets/{Icons-CT3nd2MA.js → Icons-DZpTOLIb.js} +1 -1
  57. package/dist/client/assets/{IntegrationsSettingsPanel-BHyy-VM0.js → IntegrationsSettingsPanel-BdBEGIyL.js} +1 -1
  58. package/dist/client/assets/KeybindingsSettings-Bye1H9Sx.js +7 -0
  59. package/dist/client/assets/{McpServersSettings-UthT1T80.js → McpServersSettings-D0U0g2q7.js} +1 -1
  60. package/dist/client/assets/{MobileSheet-CkeG6_SP.js → MobileSheet-BPvuTPR6.js} +1 -1
  61. package/dist/client/assets/{NewWorktreeDialog-DTZnArOC.js → NewWorktreeDialog-C_xJCZWF.js} +1 -1
  62. package/dist/client/assets/{NoActiveThreadState-jcEAWu7N.js → NoActiveThreadState-Cfn_Wwnf.js} +1 -1
  63. package/dist/client/assets/{NodeSecuritySettings-DPqjRphc.js → NodeSecuritySettings-DUQNZJqJ.js} +1 -1
  64. package/dist/client/assets/{OpinionatedPluginsSettings-BSy3F4v6.js → OpinionatedPluginsSettings-D44efcv7.js} +1 -1
  65. package/dist/client/assets/{PhoneGetAppInterstitial-B2mrJtgM.js → PhoneGetAppInterstitial-CzduFI4-.js} +1 -1
  66. package/dist/client/assets/{PhoneGetAppInterstitialBackdrop-B8vfJdZd.js → PhoneGetAppInterstitialBackdrop-CJ44QRCp.js} +1 -1
  67. package/dist/client/assets/PhoneHome-BLEJm5TG.js +1 -0
  68. package/dist/client/assets/PhoneSettingsSurface-CqetLTIm.js +1 -0
  69. package/dist/client/assets/{ProjectFavicon-BhQnkxbx.js → ProjectFavicon-DrBXI2cH.js} +1 -1
  70. package/dist/client/assets/{ProviderModelPicker-COg6CGM4.js → ProviderModelPicker-CyID3P1C.js} +1 -1
  71. package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-BkoRegCn.js → ProviderUpdateLaunchNotification.logic-C6VoLD-w.js} +1 -1
  72. package/dist/client/assets/ProvidersSettingsPanel-BHmpXUIM.js +1 -0
  73. package/dist/client/assets/{RedactedSensitiveText-CxtaUiKH.js → RedactedSensitiveText-CZwFEoNn.js} +1 -1
  74. package/dist/client/assets/RootAppShell-BVXRShhe.js +6 -0
  75. package/dist/client/assets/{RycoLetterMark-Bk0kvGJ_.js → RycoLetterMark-C-fvI9UB.js} +1 -1
  76. package/dist/client/assets/SettingsDialog-CnETTu23.js +1 -0
  77. package/dist/client/assets/{SettingsPanels-D8Xy3pPC.js → SettingsPanels-C3HDrmQq.js} +3 -3
  78. package/dist/client/assets/{SettingsPanels.editor-B2x4U4rW.js → SettingsPanels.editor-DI8Z5rsl.js} +1 -1
  79. package/dist/client/assets/SourceControlSettings-BG4tsvql.js +1 -0
  80. package/dist/client/assets/{StatisticsPage-C38pI2_b.js → StatisticsPage-dy_aYqvS.js} +1 -1
  81. package/dist/client/assets/{StatisticsPanel-6sINT28-.js → StatisticsPanel-CeRJBu65.js} +1 -1
  82. package/dist/client/assets/{StatisticsSettingsLink-Cx43bOeo.js → StatisticsSettingsLink-ChlwCDG0.js} +1 -1
  83. package/dist/client/assets/ThreadStatusIndicators-D-ioX09X.js +0 -0
  84. package/dist/client/assets/{ThreadTerminalDrawer-C4NJu8Qs.js → ThreadTerminalDrawer-BvGaRxBP.js} +1 -1
  85. package/dist/client/assets/{ThreadWorkspacePanel-D9qlHXCA.js → ThreadWorkspacePanel-BAWm7mGl.js} +2 -2
  86. package/dist/client/assets/{ToolbarRootContext-BgqqXVly.js → ToolbarRootContext-k-_m5nCN.js} +1 -1
  87. package/dist/client/assets/{WorkItemsTab-BDAeQe4D.js → WorkItemsTab-Q2V2EuvK.js} +12 -12
  88. package/dist/client/assets/{alert-LqMhbdE9.js → alert-BymbRVPf.js} +1 -1
  89. package/dist/client/assets/{alert-dialog-DxoA6ky8.js → alert-dialog-Gym8_p4Q.js} +1 -1
  90. package/dist/client/assets/appearancePreferences-BhNRCg6W.js +1 -0
  91. package/dist/client/assets/authorization-BwQZHweJ.js +1 -0
  92. package/dist/client/assets/{badge-CXw6fWrB.js → badge-BQI7J3Sg.js} +1 -1
  93. package/dist/client/assets/{branding-DeKsIp6g.js → branding-DqHDcyzW.js} +1 -1
  94. package/dist/client/assets/{button-BAbJxRzt.js → button-Wf_1nfeu.js} +1 -1
  95. package/dist/client/assets/{capabilities-BkVqeGLQ.js → capabilities-BrllgEYz.js} +1 -1
  96. package/dist/client/assets/{chatThreadActions-DQ8aOQ1g.js → chatThreadActions-BGkJmj6T.js} +1 -1
  97. package/dist/client/assets/{collapsible-dxy6kc2k.js → collapsible-GOpRckDq.js} +1 -1
  98. package/dist/client/assets/{command-CGNKG_Oe.js → command-Dx5YM54H.js} +1 -1
  99. package/dist/client/assets/composerDraftStore-DC2r8dcu.js +11 -0
  100. package/dist/client/assets/{data-list-CYKBxN62.js → data-list-BSiCZBKn.js} +1 -1
  101. package/dist/client/assets/{desktopUpdateAtoms-B9iJXSdW.js → desktopUpdateAtoms-DkmoIGr0.js} +1 -1
  102. package/dist/client/assets/{desktopWorkspace-B-cSBe8H.js → desktopWorkspace-Ddm531g5.js} +1 -1
  103. package/dist/client/assets/{device-DfIh5pQV.js → device-B0aqBYM1.js} +1 -1
  104. package/dist/client/assets/{dialog-DQsYchqu.js → dialog-CUxw5AxI.js} +1 -1
  105. package/dist/client/assets/{draft-input-CkzOk8BY.js → draft-input-CpfrGQ1h.js} +1 -1
  106. package/dist/client/assets/editorPreferences-SOMXdQpi.js +1 -0
  107. package/dist/client/assets/{empty-DwzqNgCP.js → empty-D420OZA9.js} +1 -1
  108. package/dist/client/assets/{env-B4arEvJg.js → env-Bf33qXdb.js} +1 -1
  109. package/dist/client/assets/{getPseudoElementBounds-X62ElHN8.js → getPseudoElementBounds-nDGTWECG.js} +1 -1
  110. package/dist/client/assets/{group-D9ER9giz.js → group-Cq4Llttm.js} +1 -1
  111. package/dist/client/assets/{index-Bntnmu6O.js → index-BL8_ra0g.js} +2 -2
  112. package/dist/client/assets/{input-CHEwW3oH.js → input-Dl4N9ZfE.js} +1 -1
  113. package/dist/client/assets/{kbd-DCGQZk18.js → kbd-CqoZVQfv.js} +1 -1
  114. package/dist/client/assets/{keybindings-CWJ7E9ZI.js → keybindings-DQzcPjMv.js} +1 -1
  115. package/dist/client/assets/{label-CVFHsLFO.js → label-x5DgpBI_.js} +1 -1
  116. package/dist/client/assets/{lib-qiiNMGgU.js → lib-BXIqHSZx.js} +1 -1
  117. package/dist/client/assets/{liquidGlass-CPsvmaF0.js → liquidGlass-yFkZrRk5.js} +1 -1
  118. package/dist/client/assets/{logging-M8H3z7rQ.js → logging-CZlHfeu2.js} +1 -1
  119. package/dist/client/assets/main-B7T7on1T.css +2 -0
  120. package/dist/client/assets/main-J4YlUJad.js +9 -0
  121. package/dist/client/assets/{menu-Dvxh8sD5.js → menu-BuDpxm_Q.js} +1 -1
  122. package/dist/client/assets/{popover-CuH9Yrj3.js → popover-DuprDUaB.js} +1 -1
  123. package/dist/client/assets/primary-CJx2nSkc.js +2 -0
  124. package/dist/client/assets/projectPaths-DrelgodZ.js +1 -0
  125. package/dist/client/assets/{providerDriverMeta-I0TSo-QI.js → providerDriverMeta-D27Koh7Q.js} +1 -1
  126. package/dist/client/assets/{providerIconUtils-CzSa_16f.js → providerIconUtils-CtOHwjWL.js} +1 -1
  127. package/dist/client/assets/providerInstances-BPwEwwpF.js +1 -0
  128. package/dist/client/assets/providerModels-BPwEwwpF.js +1 -0
  129. package/dist/client/assets/{qr-code-Bddq6K7S.js → qr-code-BVfzPOP3.js} +1 -1
  130. package/dist/client/assets/{radio-group-CBZFr4C8.js → radio-group-rgmJqPI7.js} +1 -1
  131. package/dist/client/assets/{resolveAriaLabelledBy-CD_ugzhJ.js → resolveAriaLabelledBy-l4SuqStl.js} +1 -1
  132. package/dist/client/assets/{rightPanelRouteSearch-DB5gQGHK.js → rightPanelRouteSearch-DmpObL1z.js} +1 -1
  133. package/dist/client/assets/runtime-DYzjhL5M.js +1 -0
  134. package/dist/client/assets/{scroll-area-Drsa8bNB.js → scroll-area-DMs8l4bb.js} +1 -1
  135. package/dist/client/assets/{scrollEdges-B-cqxY4l.js → scrollEdges-DWTOweRb.js} +1 -1
  136. package/dist/client/assets/{select-BYbVr-yg.js → select-Djwp8HDm.js} +1 -1
  137. package/dist/client/assets/{separator-CdS5bi4Z.js → separator-rjtf5Q3V.js} +1 -1
  138. package/dist/client/assets/{session-logic-wxhvMgEN.js → session-logic-DLEAZb3K.js} +2 -2
  139. package/dist/client/assets/{settingsDialogStore-ygYoScKe.js → settingsDialogStore-Dbykwvfs.js} +1 -1
  140. package/dist/client/assets/{settingsLayout-D8glO7f1.js → settingsLayout-C7bl9Xi4.js} +1 -1
  141. package/dist/client/assets/{sheet-BO78gIKZ.js → sheet-CQIQYfOM.js} +1 -1
  142. package/dist/client/assets/{sidebar-Dm6l2GA6.js → sidebar-BdDOvXe8.js} +1 -1
  143. package/dist/client/assets/sidebarProjectFolders-D_Me0oJ8.js +4 -0
  144. package/dist/client/assets/{sidebarStatusText-D0HT0fek.js → sidebarStatusText-BF6odB03.js} +1 -1
  145. package/dist/client/assets/{skeleton-CvQSeJbw.js → skeleton-Mgh4Gx9x.js} +1 -1
  146. package/dist/client/assets/{spinner-ClF0jOcX.js → spinner-CzzUdFeE.js} +1 -1
  147. package/dist/client/assets/{src-Vf4LVnMX.js → src-Ca7Gag3m.js} +1 -1
  148. package/dist/client/assets/storeSelectors-D7HbqO4E.js +1 -0
  149. package/dist/client/assets/{switch-BTGo9Yip.js → switch-CntUxI1A.js} +1 -1
  150. package/dist/client/assets/{terminal-links-CZ3c9AbA.js → terminal-links-CUFISn8U.js} +1 -1
  151. package/dist/client/assets/{textarea-RFPODxWW.js → textarea-C8QxddDb.js} +1 -1
  152. package/dist/client/assets/threadPinning-BIV4KXZU.js +1 -0
  153. package/dist/client/assets/{threadPriorityRefreshRuntime-tRDgvBzr.js → threadPriorityRefreshRuntime-B-pVYK_y.js} +1 -1
  154. package/dist/client/assets/{toast-CcSCAm4B.js → toast-Cw7bXJzg.js} +1 -1
  155. package/dist/client/assets/{toggle-I6h33Cu5.js → toggle-Bi9uP4Hb.js} +1 -1
  156. package/dist/client/assets/{toggle-group-mLIkiJtU.js → toggle-group-LcgyMgj5.js} +1 -1
  157. package/dist/client/assets/{tooltip-C8sAONBj.js → tooltip-t3Nrleyq.js} +1 -1
  158. package/dist/client/assets/types-D7HbqO4E.js +1 -0
  159. package/dist/client/assets/{uiStateStore-B6pjzSjj.js → uiStateStore-BW2WnK4k.js} +1 -1
  160. package/dist/client/assets/useAtlassian-a-MaAd0k.js +0 -0
  161. package/dist/client/assets/{useButton-D__1LqCF.js → useButton-DUuWgIMw.js} +1 -1
  162. package/dist/client/assets/{useCompositeListItem-Cmr_nuuG.js → useCompositeListItem-CL5mJqCb.js} +1 -1
  163. package/dist/client/assets/{useDebouncedValue-DHjoudTq.js → useDebouncedValue-jDDWNjgt.js} +1 -1
  164. package/dist/client/assets/{useFloatingRootContext-D5EZmrCa.js → useFloatingRootContext-C4I8IxtL.js} +1 -1
  165. package/dist/client/assets/{useHandleNewThread-Bvz-DKgn.js → useHandleNewThread-820pBJCC.js} +1 -1
  166. package/dist/client/assets/{useLabelableId-DnQJ7amm.js → useLabelableId-KX33mhBC.js} +1 -1
  167. package/dist/client/assets/{useLocation-CDeYzWW6.js → useLocation-B4QlXdMt.js} +1 -1
  168. package/dist/client/assets/{useOpenInteractionType-CjtpACKR.js → useOpenInteractionType-DjM9MBY7.js} +1 -1
  169. package/dist/client/assets/{usePhoneThreadActions-CAgIq9aZ.js → usePhoneThreadActions-DxxWMYgC.js} +1 -1
  170. package/dist/client/assets/{usePopupViewport-BuhsNdVy.js → usePopupViewport-CAMlnyaP.js} +1 -1
  171. package/dist/client/assets/{useScrollLock-D3tMGsRk.js → useScrollLock-CAPfesBT.js} +1 -1
  172. package/dist/client/assets/{useStatistics-CiLROMJP.js → useStatistics-CWasDzsV.js} +2 -2
  173. package/dist/client/assets/{useSwipeDismiss-CbgDJvw1.js → useSwipeDismiss-BZsYSBgq.js} +1 -1
  174. package/dist/client/assets/{useTheme-DiC-5xCb.js → useTheme-By1kfyiU.js} +1 -1
  175. package/dist/client/assets/{useThreadActions-Vew3ScxG.js → useThreadActions-MOjDrEnS.js} +1 -1
  176. package/dist/client/assets/{useTriggerFocusGuards-CrugmkhX.js → useTriggerFocusGuards-D5z439rn.js} +1 -1
  177. package/dist/client/assets/{useValueChanged-MQtIzPIU.js → useValueChanged-D0CHQQwP.js} +1 -1
  178. package/dist/client/assets/{utils-BofFIn5Y.js → utils-B76_2Yk7.js} +1 -1
  179. package/dist/client/index.html +1 -1
  180. package/dist/{collectUint8StreamText-Bb52hlpd.cjs → collectUint8StreamText-B9B7bGv9.cjs} +46 -10
  181. package/dist/{collectUint8StreamText-EDg4F0TU.mjs → collectUint8StreamText-RzKEq2NY.mjs} +35 -11
  182. package/dist/{makeManagedServerProvider-itynW7xv.cjs → makeManagedServerProvider-BF1eBatf.cjs} +1 -1
  183. package/dist/{makeManagedServerProvider-Cf8bNWwc.mjs → makeManagedServerProvider-BuG2fLP8.mjs} +1 -1
  184. package/package.json +1 -1
  185. package/dist/client/assets/AppearanceSettings-CYbSApl4.js +0 -1
  186. package/dist/client/assets/ChatRightPanel-DVxRdZWT.js +0 -27
  187. package/dist/client/assets/CommandPaletteDialog-BnJURcy7.js +0 -1
  188. package/dist/client/assets/DialogRoot-BpIvUdm7.js +0 -1
  189. package/dist/client/assets/GlassSurface-C3IIWMu9.js +0 -1
  190. package/dist/client/assets/HostedHubRoot-pBGVub10.js +0 -1
  191. package/dist/client/assets/KeybindingsSettings-BfkONqmZ.js +0 -7
  192. package/dist/client/assets/PhoneHome-C-ttaKuE.js +0 -1
  193. package/dist/client/assets/PhoneSettingsSurface-CJddundi.js +0 -1
  194. package/dist/client/assets/ProvidersSettingsPanel-C3aPyCrN.js +0 -1
  195. package/dist/client/assets/RootAppShell-3T2sBtpP.js +0 -6
  196. package/dist/client/assets/SettingsDialog-krsStFrf.js +0 -1
  197. package/dist/client/assets/SourceControlSettings-KIx9EfEZ.js +0 -1
  198. package/dist/client/assets/ThreadStatusIndicators-CL0KGLlj.js +0 -0
  199. package/dist/client/assets/appearancePreferences-COvj0WMT.js +0 -1
  200. package/dist/client/assets/authorization-mIJKV2yp.js +0 -1
  201. package/dist/client/assets/composerDraftStore-CdJJZe42.js +0 -11
  202. package/dist/client/assets/editorPreferences-0DWMgcci.js +0 -1
  203. package/dist/client/assets/main-BjVnVob0.js +0 -9
  204. package/dist/client/assets/main-DaYHZt-J.css +0 -2
  205. package/dist/client/assets/panel-right-BodNpkM9.js +0 -1
  206. package/dist/client/assets/primary-OskAInOO.js +0 -2
  207. package/dist/client/assets/projectPaths-SSsIvt0g.js +0 -1
  208. package/dist/client/assets/providerInstances-BJcfB_9E.js +0 -1
  209. package/dist/client/assets/providerModels-BJcfB_9E.js +0 -1
  210. package/dist/client/assets/runtime-DfGHeCnR.js +0 -1
  211. package/dist/client/assets/sidebarProjectFolders-CGVDJ0ZT.js +0 -4
  212. package/dist/client/assets/storeSelectors-Bpr2pdhU.js +0 -1
  213. package/dist/client/assets/types-Bpr2pdhU.js +0 -1
  214. package/dist/client/assets/useAppearancePreference-BlLlxQl7.js +0 -1
  215. package/dist/client/assets/useAtlassian-DC0XOw4u.js +0 -0
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const require_collectUint8StreamText = require("./collectUint8StreamText-Bb52hlpd.cjs");
4
- const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-DJWDCoup.cjs");
3
+ const require_collectUint8StreamText = require("./collectUint8StreamText-B9B7bGv9.cjs");
4
+ const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-Bj_sZfmB.cjs");
5
5
  const require_bin = require("./bin.cjs");
6
6
  let effect = require("effect");
7
7
  //#region src/sourceControl/GitLabSourceControlProvider.ts
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  const require_rolldown_runtime = require("./rolldown-runtime-LGfotAqq.cjs");
4
- const require_collectUint8StreamText = require("./collectUint8StreamText-Bb52hlpd.cjs");
4
+ const require_collectUint8StreamText = require("./collectUint8StreamText-B9B7bGv9.cjs");
5
5
  const require_Metrics = require("./Metrics-DIjMQ5pa.cjs");
6
6
  const require_bin = require("./bin.cjs");
7
- const require_makeManagedServerProvider = require("./makeManagedServerProvider-itynW7xv.cjs");
7
+ const require_makeManagedServerProvider = require("./makeManagedServerProvider-BF1eBatf.cjs");
8
8
  const require_ProviderDriver = require("./ProviderDriver--rNeAi3B.cjs");
9
- const require_AcpNativeLogging = require("./AcpNativeLogging-Be1KGJfF.cjs");
9
+ const require_AcpNativeLogging = require("./AcpNativeLogging-vLtnq5f1.cjs");
10
10
  let effect_Effect = require("effect/Effect");
11
11
  effect_Effect = require_rolldown_runtime.__toESM(effect_Effect, 1);
12
12
  let effect_Layer = require("effect/Layer");
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Ao as ApprovalRequestId, Ko as RuntimeRequestId, Pn as TextGenerationError, Qo as TurnId, Ra as ProviderDriverKind, Ro as EventId, ir as GrokSettings, za as ProviderInstanceId } from "./collectUint8StreamText-EDg4F0TU.mjs";
3
+ import { Ba as ProviderDriverKind, Bo as EventId, Jo as RuntimeRequestId, Mo as ApprovalRequestId, Pn as TextGenerationError, Va as ProviderInstanceId, es as TurnId, ir as GrokSettings } from "./collectUint8StreamText-RzKEq2NY.mjs";
4
4
  import { nt as sanitizeFeatureBranchName, st as ServerConfig, tt as sanitizeBranchFragment } from "./Metrics-BP9YjxZB.mjs";
5
- import { $ as spawnAndCollect, C as buildCommitMessagePrompt, D as buildThreadPriorityPrompt, Dn as enrichProviderSnapshotWithVersionAdvisory, E as buildPrContentPrompt, Fn as ServerSettingsService, In as resolveAttachmentPath, K as buildServerProvider, Kn as normalizeModelSlug, M as sanitizePrTitle, N as sanitizeThreadTitle, Nn as resolveProviderMaintenanceCapabilitiesEffect, O as buildThreadTitlePrompt, On as makeManualOnlyProviderMaintenanceCapabilities, Q as providerModelsFromSettings, S as buildBranchNamePrompt, T as buildIssueContentTitlePrompt, Y as isCommandMissingCause, Z as parseGenericCliVersion, _ as ProviderEventLoggers, at as createProcessDeviceToolBinding, dt as ProviderDriverError, j as sanitizeCommitSubject, jn as makeStaticProviderMaintenanceResolver, k as extractJsonObject, lt as ProviderAdapterSessionNotFoundError, ot as ProviderAdapterProcessError, st as ProviderAdapterRequestError, ut as ProviderAdapterValidationError, v as makeEventNdjsonLogger, w as buildIssueContentPolishPrompt, x as validateRankInboxThreadsResult, z as mergeProviderInstanceEnvironment, zn as createModelCapabilities } from "./bin.mjs";
6
- import { n as requireRuntimeSessionId, r as stampRuntimeEvent, t as makeManagedServerProvider } from "./makeManagedServerProvider-Cf8bNWwc.mjs";
5
+ import { $ as spawnAndCollect, Bn as createModelCapabilities, C as buildCommitMessagePrompt, D as buildThreadPriorityPrompt, Dn as enrichProviderSnapshotWithVersionAdvisory, E as buildPrContentPrompt, Fn as ServerSettingsService, K as buildServerProvider, Ln as resolveAttachmentPath, M as sanitizePrTitle, N as sanitizeThreadTitle, Nn as resolveProviderMaintenanceCapabilitiesEffect, O as buildThreadTitlePrompt, On as makeManualOnlyProviderMaintenanceCapabilities, Q as providerModelsFromSettings, S as buildBranchNamePrompt, T as buildIssueContentTitlePrompt, Y as isCommandMissingCause, Z as parseGenericCliVersion, _ as ProviderEventLoggers, at as createProcessDeviceToolBinding, dt as ProviderDriverError, j as sanitizeCommitSubject, jn as makeStaticProviderMaintenanceResolver, k as extractJsonObject, lt as ProviderAdapterSessionNotFoundError, ot as ProviderAdapterProcessError, qn as normalizeModelSlug, st as ProviderAdapterRequestError, ut as ProviderAdapterValidationError, v as makeEventNdjsonLogger, w as buildIssueContentPolishPrompt, x as validateRankInboxThreadsResult, z as mergeProviderInstanceEnvironment } from "./bin.mjs";
6
+ import { n as requireRuntimeSessionId, r as stampRuntimeEvent, t as makeManagedServerProvider } from "./makeManagedServerProvider-BuG2fLP8.mjs";
7
7
  import { t as defaultProviderContinuationIdentity } from "./ProviderDriver-kCV60GKk.mjs";
8
- import { a as makeAcpRequestOpenedEvent, c as makeAcpToolCallEvent, d as AcpSessionRuntime, f as parsePermissionRequest, i as makeAcpPlanUpdatedEvent, n as makeAcpAssistantItemEvent, o as makeAcpRequestResolvedEvent, p as AcpTransportError, r as makeAcpContentDeltaEvent, s as makeAcpTokenUsageEvent, t as makeAcpNativeLoggers, u as mapAcpToAdapterError } from "./AcpNativeLogging-Ba9Nn9Re.mjs";
8
+ import { a as makeAcpRequestOpenedEvent, c as makeAcpToolCallEvent, d as AcpSessionRuntime, f as parsePermissionRequest, i as makeAcpPlanUpdatedEvent, n as makeAcpAssistantItemEvent, o as makeAcpRequestResolvedEvent, p as AcpTransportError, r as makeAcpContentDeltaEvent, s as makeAcpTokenUsageEvent, t as makeAcpNativeLoggers, u as mapAcpToAdapterError } from "./AcpNativeLogging-D3fe64a6.mjs";
9
9
  import * as Effect from "effect/Effect";
10
10
  import * as Layer from "effect/Layer";
11
11
  import * as Schema from "effect/Schema";
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Go as RuntimeItemId, Jo as RuntimeSubagentId, Ko as RuntimeRequestId, Pn as TextGenerationError, Qo as TurnId, Ra as ProviderDriverKind, Ro as EventId, Wo as ProviderItemId, ar as OpenCodeSettings, za as ProviderInstanceId } from "./collectUint8StreamText-EDg4F0TU.mjs";
3
+ import { Ba as ProviderDriverKind, Bo as EventId, Jo as RuntimeRequestId, Ko as ProviderItemId, Pn as TextGenerationError, Va as ProviderInstanceId, Xo as RuntimeSubagentId, ar as OpenCodeSettings, bi as PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES, es as TurnId, qo as RuntimeItemId } from "./collectUint8StreamText-RzKEq2NY.mjs";
4
4
  import { nt as sanitizeFeatureBranchName, st as ServerConfig, tt as sanitizeBranchFragment } from "./Metrics-BP9YjxZB.mjs";
5
- import { C as buildCommitMessagePrompt, D as buildThreadPriorityPrompt, Dn as enrichProviderSnapshotWithVersionAdvisory, E as buildPrContentPrompt, Fn as ServerSettingsService, In as resolveAttachmentPath, K as buildServerProvider, M as sanitizePrTitle, Mn as normalizeCommandPath, N as sanitizeThreadTitle, Nn as resolveProviderMaintenanceCapabilitiesEffect, O as buildThreadTitlePrompt, Pn as compareCliVersions, Q as providerModelsFromSettings, S as buildBranchNamePrompt, T as buildIssueContentTitlePrompt, Vn as getModelSelectionStringOptionValue, X as nonEmptyTrimmed, Z as parseGenericCliVersion, _ as ProviderEventLoggers, at as createProcessDeviceToolBinding, c as OpenCodeRuntimeError, ct as ProviderAdapterSessionClosedError, d as openCodeRuntimeErrorDetail, dt as ProviderDriverError, f as parseOpenCodeModelSlug, g as toOpenCodeQuestionAnswers, h as toOpenCodePermissionReply, j as sanitizeCommitSubject, k as extractJsonObject, kn as makePackageManagedProviderMaintenanceResolver, l as buildOpenCodePermissionRules, lt as ProviderAdapterSessionNotFoundError, m as toOpenCodeFileParts, ot as ProviderAdapterProcessError, p as runOpenCodeSdk, s as OpenCodeRuntime, st as ProviderAdapterRequestError, t as makeServerQueueMetrics, tt as agentControlHostContext, u as openCodeQuestionId, ut as ProviderAdapterValidationError, v as makeEventNdjsonLogger, w as buildIssueContentPolishPrompt, x as validateRankInboxThreadsResult, z as mergeProviderInstanceEnvironment, zn as createModelCapabilities } from "./bin.mjs";
5
+ import { Bn as createModelCapabilities, C as buildCommitMessagePrompt, D as buildThreadPriorityPrompt, Dn as enrichProviderSnapshotWithVersionAdvisory, E as buildPrContentPrompt, Fn as ServerSettingsService, Hn as getModelSelectionStringOptionValue, In as readPersistedAttachment, K as buildServerProvider, M as sanitizePrTitle, Mn as normalizeCommandPath, N as sanitizeThreadTitle, Nn as resolveProviderMaintenanceCapabilitiesEffect, O as buildThreadTitlePrompt, Pn as compareCliVersions, Q as providerModelsFromSettings, S as buildBranchNamePrompt, T as buildIssueContentTitlePrompt, X as nonEmptyTrimmed, Z as parseGenericCliVersion, _ as ProviderEventLoggers, at as createProcessDeviceToolBinding, c as OpenCodeRuntimeError, ct as ProviderAdapterSessionClosedError, d as openCodeRuntimeErrorDetail, dt as ProviderDriverError, f as parseOpenCodeModelSlug, g as toOpenCodeQuestionAnswers, h as toOpenCodePermissionReply, j as sanitizeCommitSubject, k as extractJsonObject, kn as makePackageManagedProviderMaintenanceResolver, l as buildOpenCodePermissionRules, lt as ProviderAdapterSessionNotFoundError, m as toOpenCodeFileParts, ot as ProviderAdapterProcessError, p as runOpenCodeSdk, s as OpenCodeRuntime, st as ProviderAdapterRequestError, t as makeServerQueueMetrics, tt as agentControlHostContext, u as openCodeQuestionId, ut as ProviderAdapterValidationError, v as makeEventNdjsonLogger, w as buildIssueContentPolishPrompt, x as validateRankInboxThreadsResult, z as mergeProviderInstanceEnvironment } from "./bin.mjs";
6
6
  import { t as formatSourceControlContextsForAgent } from "./sourceControlContextFormatter-DEwpnVAH.mjs";
7
- import { n as requireRuntimeSessionId, r as stampRuntimeEvent, t as makeManagedServerProvider } from "./makeManagedServerProvider-Cf8bNWwc.mjs";
7
+ import { n as requireRuntimeSessionId, r as stampRuntimeEvent, t as makeManagedServerProvider } from "./makeManagedServerProvider-BuG2fLP8.mjs";
8
8
  import { t as defaultProviderContinuationIdentity } from "./ProviderDriver-kCV60GKk.mjs";
9
9
  import { Cause, Data, Effect, Exit, Fiber, Queue, Ref, Schema, Scope, Stream } from "effect";
10
10
  import { HttpClient } from "effect/unstable/http";
@@ -112,12 +112,32 @@ const makeOpenCodeTextGeneration = Effect.fn("makeOpenCodeTextGeneration")(funct
112
112
  operation: input.operation,
113
113
  detail: "OpenCode model selection must use the 'provider/model' format."
114
114
  });
115
- const fileParts = toOpenCodeFileParts({
116
- attachments: input.attachments,
117
- resolveAttachmentPath: (attachment) => resolveAttachmentPath({
115
+ const declaredAttachmentBytes = (input.attachments ?? []).reduce((total, attachment) => total + attachment.sizeBytes, 0);
116
+ if (declaredAttachmentBytes > 52428800) return yield* new TextGenerationError({
117
+ operation: input.operation,
118
+ detail: `Attachments total ${declaredAttachmentBytes} bytes; limit is ${PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
119
+ });
120
+ const attachmentUrlById = /* @__PURE__ */ new Map();
121
+ let attachmentTotalBytes = 0;
122
+ for (const attachment of input.attachments ?? []) {
123
+ const persisted = readPersistedAttachment({
118
124
  attachmentsDir: serverConfig.attachmentsDir,
119
125
  attachment
120
- })
126
+ });
127
+ if (!persisted.ok) return yield* new TextGenerationError({
128
+ operation: input.operation,
129
+ detail: persisted.reason
130
+ });
131
+ attachmentTotalBytes += persisted.sizeBytes;
132
+ if (attachmentTotalBytes > 52428800) return yield* new TextGenerationError({
133
+ operation: input.operation,
134
+ detail: `Attachments total ${attachmentTotalBytes} bytes; limit is ${PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
135
+ });
136
+ attachmentUrlById.set(attachment.id, `data:${attachment.mimeType};base64,${persisted.bytes.toString("base64")}`);
137
+ }
138
+ const fileParts = toOpenCodeFileParts({
139
+ attachments: input.attachments,
140
+ resolveAttachmentUrl: (attachment) => attachmentUrlById.get(attachment.id) ?? null
121
141
  });
122
142
  const runAgainstServer = (server) => Effect.gen(function* () {
123
143
  const client = yield* openCodeRuntime.createOpenCodeSdkClient({
@@ -540,7 +560,7 @@ function updateProviderSession(context, patch, options) {
540
560
  }
541
561
  const stopOpenCodeContext = Effect.fn("stopOpenCodeContext")(function* (context) {
542
562
  if (yield* Ref.getAndSet(context.stopped, true)) return false;
543
- yield* runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(Effect.ignore({ log: true }));
563
+ yield* Effect.forEach([context.openCodeSessionId, ...context.childSessionIds], (sessionID) => runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID })).pipe(Effect.ignore({ log: true })), { discard: true });
544
564
  yield* Scope.close(context.sessionScope, Exit.void);
545
565
  return true;
546
566
  });
@@ -627,6 +647,13 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
627
647
  }
628
648
  });
629
649
  });
650
+ const emitStoppedOpenCodeChildren = Effect.fn("emitStoppedOpenCodeChildren")(function* (context, raw) {
651
+ for (const subagent of context.subagentBySessionId.values()) yield* emitOpenCodeSubagentCompleted(context, {
652
+ subagent,
653
+ status: subagentCompletionStatus("stopped"),
654
+ raw
655
+ });
656
+ });
630
657
  const bindOpenCodeSubtaskPart = Effect.fn("bindOpenCodeSubtaskPart")(function* (context, part, raw) {
631
658
  const partKey = scopedOpenCodeId(part.sessionID, part.id);
632
659
  const existing = context.subagentBySubtaskPartId.get(partKey);
@@ -720,7 +747,7 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
720
747
  }
721
748
  }).pipe(Effect.ignore);
722
749
  sessions.delete(context.session.threadId);
723
- yield* runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(Effect.ignore({ log: true }));
750
+ yield* Effect.forEach([context.openCodeSessionId, ...context.childSessionIds], (sessionID) => runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID })).pipe(Effect.ignore({ log: true })), { discard: true });
724
751
  yield* Scope.close(context.sessionScope, Exit.void);
725
752
  });
726
753
  /** Emit content.delta and item.completed events for an assistant text part. */
@@ -1276,12 +1303,35 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1276
1303
  });
1277
1304
  const formatted = formatSourceControlContextsForAgent(input.sourceControlContexts ?? []);
1278
1305
  let text = formatted ? formatted + "\n\n" + (input.input?.trim() ?? "") : input.input?.trim();
1279
- const fileParts = toOpenCodeFileParts({
1280
- attachments: input.attachments,
1281
- resolveAttachmentPath: (attachment) => resolveAttachmentPath({
1306
+ const attachmentUrlById = /* @__PURE__ */ new Map();
1307
+ const declaredAttachmentBytes = (input.attachments ?? []).reduce((total, attachment) => total + attachment.sizeBytes, 0);
1308
+ if (declaredAttachmentBytes > 52428800) return yield* new ProviderAdapterRequestError({
1309
+ provider: PROVIDER$1,
1310
+ method: "session.prompt",
1311
+ detail: `Attachments total ${declaredAttachmentBytes} bytes; limit is ${PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
1312
+ });
1313
+ let attachmentTotalBytes = 0;
1314
+ for (const attachment of input.attachments ?? []) {
1315
+ const persisted = readPersistedAttachment({
1282
1316
  attachmentsDir: serverConfig.attachmentsDir,
1283
1317
  attachment
1284
- })
1318
+ });
1319
+ if (!persisted.ok) return yield* new ProviderAdapterRequestError({
1320
+ provider: PROVIDER$1,
1321
+ method: "session.prompt",
1322
+ detail: persisted.reason
1323
+ });
1324
+ attachmentUrlById.set(attachment.id, `data:${attachment.mimeType};base64,${persisted.bytes.toString("base64")}`);
1325
+ attachmentTotalBytes += persisted.sizeBytes;
1326
+ if (attachmentTotalBytes > 52428800) return yield* new ProviderAdapterRequestError({
1327
+ provider: PROVIDER$1,
1328
+ method: "session.prompt",
1329
+ detail: `Attachments total ${attachmentTotalBytes} bytes; limit is ${PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
1330
+ });
1331
+ }
1332
+ const fileParts = toOpenCodeFileParts({
1333
+ attachments: input.attachments,
1334
+ resolveAttachmentUrl: (attachment) => attachmentUrlById.get(attachment.id) ?? null
1285
1335
  });
1286
1336
  if ((!text || text.length === 0) && fileParts.length === 0) return yield* new ProviderAdapterValidationError({
1287
1337
  provider: PROVIDER$1,
@@ -1347,7 +1397,13 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1347
1397
  });
1348
1398
  const interruptTurn = Effect.fn("interruptTurn")(function* (threadId, turnId) {
1349
1399
  const context = ensureSessionContext(sessions, threadId);
1350
- yield* runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(Effect.mapError(toRequestError));
1400
+ const rootAbortExit = yield* runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(Effect.mapError(toRequestError), Effect.exit);
1401
+ yield* Effect.forEach(context.childSessionIds, (sessionID) => runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID })).pipe(Effect.ignore({ log: true })), { discard: true });
1402
+ yield* emitStoppedOpenCodeChildren(context, {
1403
+ method: "session.abort",
1404
+ reason: "turn-interrupted"
1405
+ });
1406
+ if (Exit.isFailure(rootAbortExit)) return yield* Effect.failCause(rootAbortExit.cause);
1351
1407
  if (turnId ?? context.activeTurnId) yield* emitForContext(context, {
1352
1408
  ...yield* buildEventBase({
1353
1409
  threadId,
@@ -1359,14 +1415,16 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1359
1415
  });
1360
1416
  const respondToRequest = Effect.fn("respondToRequest")(function* (threadId, requestId, decision) {
1361
1417
  const context = ensureSessionContext(sessions, threadId);
1362
- if (!context.pendingPermissions.has(requestId)) return yield* new ProviderAdapterRequestError({
1418
+ const request = context.pendingPermissions.get(requestId);
1419
+ if (!request) return yield* new ProviderAdapterRequestError({
1363
1420
  provider: PROVIDER$1,
1364
- method: "permission.reply",
1421
+ method: "permission.respond",
1365
1422
  detail: `Unknown pending permission request: ${requestId}`
1366
1423
  });
1367
- yield* runOpenCodeSdk("permission.reply", () => context.client.permission.reply({
1368
- requestID: requestId,
1369
- reply: toOpenCodePermissionReply(decision)
1424
+ yield* runOpenCodeSdk("permission.respond", () => context.client.permission.respond({
1425
+ sessionID: request.sessionID,
1426
+ permissionID: requestId,
1427
+ response: toOpenCodePermissionReply(decision)
1370
1428
  })).pipe(Effect.mapError(toRequestError));
1371
1429
  });
1372
1430
  const respondToUserInput = Effect.fn("respondToUserInput")(function* (threadId, requestId, answers) {
@@ -1389,6 +1447,10 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1389
1447
  threadId
1390
1448
  });
1391
1449
  if (!(yield* stopOpenCodeContext(context))) return;
1450
+ yield* emitStoppedOpenCodeChildren(context, {
1451
+ method: "session.abort",
1452
+ reason: "session-stopped"
1453
+ });
1392
1454
  yield* emitForContext(context, {
1393
1455
  ...yield* buildEventBase({ threadId }),
1394
1456
  type: "session.exited",
@@ -1518,7 +1580,7 @@ function inferDefaultAgent(agents) {
1518
1580
  }
1519
1581
  const DEFAULT_OPENCODE_MODEL_CAPABILITIES = createModelCapabilities({ optionDescriptors: [] });
1520
1582
  function openCodeCapabilitiesForModel(input) {
1521
- const variantValues = Object.keys(input.model.variants ?? {});
1583
+ const variantValues = Object.entries(input.model.variants ?? {}).filter(([, configuration]) => configuration.disabled !== true).map(([variant]) => variant).toSorted((left, right) => left.localeCompare(right));
1522
1584
  const defaultVariant = inferDefaultVariant(input.providerID, variantValues);
1523
1585
  const variantOptions = variantValues.map((value) => defaultVariant === value ? {
1524
1586
  id: value,
@@ -1528,7 +1590,7 @@ function openCodeCapabilitiesForModel(input) {
1528
1590
  id: value,
1529
1591
  label: titleCaseSlug(value)
1530
1592
  });
1531
- const primaryAgents = input.agents.filter((agent) => !agent.hidden && (agent.mode === "primary" || agent.mode === "all"));
1593
+ const primaryAgents = [...new Map(input.agents.filter((agent) => !agent.hidden && (agent.mode === "primary" || agent.mode === "all")).map((agent) => [agent.name, agent])).values()].toSorted((left, right) => left.name.localeCompare(right.name));
1532
1594
  const defaultAgent = inferDefaultAgent(primaryAgents);
1533
1595
  const agentOptions = primaryAgents.map((agent) => defaultAgent === agent.name ? {
1534
1596
  id: agent.name,
@@ -1554,16 +1616,19 @@ function openCodeCapabilitiesForModel(input) {
1554
1616
  }
1555
1617
  function flattenOpenCodeModels(input) {
1556
1618
  const connected = new Set(input.providerList.connected);
1557
- const models = [];
1619
+ const models = /* @__PURE__ */ new Map();
1558
1620
  for (const provider of input.providerList.all) {
1559
1621
  if (!connected.has(provider.id)) continue;
1560
1622
  for (const model of Object.values(provider.models)) {
1623
+ const modelId = nonEmptyTrimmed(model.id);
1561
1624
  const name = nonEmptyTrimmed(model.name);
1562
- if (!name) continue;
1625
+ if (!modelId || !name) continue;
1563
1626
  const subProvider = nonEmptyTrimmed(provider.name);
1564
1627
  const shortName = subProvider ? deriveShortNameByStrippingPrefix(name, subProvider) : void 0;
1565
- models.push({
1566
- slug: `${provider.id}/${model.id}`,
1628
+ const slug = `${provider.id}/${modelId}`;
1629
+ if (models.has(slug)) continue;
1630
+ models.set(slug, {
1631
+ slug,
1567
1632
  name,
1568
1633
  ...subProvider ? { subProvider } : {},
1569
1634
  ...shortName ? { shortName } : {},
@@ -1576,7 +1641,7 @@ function flattenOpenCodeModels(input) {
1576
1641
  });
1577
1642
  }
1578
1643
  }
1579
- return models.toSorted((left, right) => left.name.localeCompare(right.name));
1644
+ return [...models.values()].toSorted((left, right) => left.name.localeCompare(right.name) || left.slug.localeCompare(right.slug));
1580
1645
  }
1581
1646
  /**
1582
1647
  * Strip a leading provider prefix from `name` so the chat-box trigger doesn't
@@ -1709,7 +1774,7 @@ const checkOpenCodeProviderStatus = Effect.fn("checkOpenCodeProviderStatus")(fun
1709
1774
  })));
1710
1775
  if (inventoryExit._tag === "Failure") return fallback(Cause.squash(inventoryExit.cause), version);
1711
1776
  const models = providerModelsFromSettings(flattenOpenCodeModels(inventoryExit.value), PROVIDER, customModels, DEFAULT_OPENCODE_MODEL_CAPABILITIES);
1712
- const connectedCount = inventoryExit.value.providerList.connected.length;
1777
+ const connectedCount = new Set(inventoryExit.value.providerList.connected).size;
1713
1778
  return buildServerProvider({
1714
1779
  presentation: OPENCODE_PRESENTATION,
1715
1780
  enabled: true,
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  const require_rolldown_runtime = require("./rolldown-runtime-LGfotAqq.cjs");
4
- const require_collectUint8StreamText = require("./collectUint8StreamText-Bb52hlpd.cjs");
4
+ const require_collectUint8StreamText = require("./collectUint8StreamText-B9B7bGv9.cjs");
5
5
  const require_Metrics = require("./Metrics-DIjMQ5pa.cjs");
6
6
  const require_bin = require("./bin.cjs");
7
7
  const require_sourceControlContextFormatter = require("./sourceControlContextFormatter-BDZqn-4T.cjs");
8
- const require_makeManagedServerProvider = require("./makeManagedServerProvider-itynW7xv.cjs");
8
+ const require_makeManagedServerProvider = require("./makeManagedServerProvider-BF1eBatf.cjs");
9
9
  const require_ProviderDriver = require("./ProviderDriver--rNeAi3B.cjs");
10
10
  let effect = require("effect");
11
11
  let effect_unstable_http = require("effect/unstable/http");
@@ -114,12 +114,32 @@ const makeOpenCodeTextGeneration = effect.Effect.fn("makeOpenCodeTextGeneration"
114
114
  operation: input.operation,
115
115
  detail: "OpenCode model selection must use the 'provider/model' format."
116
116
  });
117
- const fileParts = require_bin.toOpenCodeFileParts({
118
- attachments: input.attachments,
119
- resolveAttachmentPath: (attachment) => require_bin.resolveAttachmentPath({
117
+ const declaredAttachmentBytes = (input.attachments ?? []).reduce((total, attachment) => total + attachment.sizeBytes, 0);
118
+ if (declaredAttachmentBytes > 52428800) return yield* new require_collectUint8StreamText.TextGenerationError({
119
+ operation: input.operation,
120
+ detail: `Attachments total ${declaredAttachmentBytes} bytes; limit is ${require_collectUint8StreamText.PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
121
+ });
122
+ const attachmentUrlById = /* @__PURE__ */ new Map();
123
+ let attachmentTotalBytes = 0;
124
+ for (const attachment of input.attachments ?? []) {
125
+ const persisted = require_bin.readPersistedAttachment({
120
126
  attachmentsDir: serverConfig.attachmentsDir,
121
127
  attachment
122
- })
128
+ });
129
+ if (!persisted.ok) return yield* new require_collectUint8StreamText.TextGenerationError({
130
+ operation: input.operation,
131
+ detail: persisted.reason
132
+ });
133
+ attachmentTotalBytes += persisted.sizeBytes;
134
+ if (attachmentTotalBytes > 52428800) return yield* new require_collectUint8StreamText.TextGenerationError({
135
+ operation: input.operation,
136
+ detail: `Attachments total ${attachmentTotalBytes} bytes; limit is ${require_collectUint8StreamText.PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
137
+ });
138
+ attachmentUrlById.set(attachment.id, `data:${attachment.mimeType};base64,${persisted.bytes.toString("base64")}`);
139
+ }
140
+ const fileParts = require_bin.toOpenCodeFileParts({
141
+ attachments: input.attachments,
142
+ resolveAttachmentUrl: (attachment) => attachmentUrlById.get(attachment.id) ?? null
123
143
  });
124
144
  const runAgainstServer = (server) => effect.Effect.gen(function* () {
125
145
  const client = yield* openCodeRuntime.createOpenCodeSdkClient({
@@ -542,7 +562,7 @@ function updateProviderSession(context, patch, options) {
542
562
  }
543
563
  const stopOpenCodeContext = effect.Effect.fn("stopOpenCodeContext")(function* (context) {
544
564
  if (yield* effect.Ref.getAndSet(context.stopped, true)) return false;
545
- yield* require_bin.runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(effect.Effect.ignore({ log: true }));
565
+ yield* effect.Effect.forEach([context.openCodeSessionId, ...context.childSessionIds], (sessionID) => require_bin.runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID })).pipe(effect.Effect.ignore({ log: true })), { discard: true });
546
566
  yield* effect.Scope.close(context.sessionScope, effect.Exit.void);
547
567
  return true;
548
568
  });
@@ -629,6 +649,13 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
629
649
  }
630
650
  });
631
651
  });
652
+ const emitStoppedOpenCodeChildren = effect.Effect.fn("emitStoppedOpenCodeChildren")(function* (context, raw) {
653
+ for (const subagent of context.subagentBySessionId.values()) yield* emitOpenCodeSubagentCompleted(context, {
654
+ subagent,
655
+ status: subagentCompletionStatus("stopped"),
656
+ raw
657
+ });
658
+ });
632
659
  const bindOpenCodeSubtaskPart = effect.Effect.fn("bindOpenCodeSubtaskPart")(function* (context, part, raw) {
633
660
  const partKey = scopedOpenCodeId(part.sessionID, part.id);
634
661
  const existing = context.subagentBySubtaskPartId.get(partKey);
@@ -722,7 +749,7 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
722
749
  }
723
750
  }).pipe(effect.Effect.ignore);
724
751
  sessions.delete(context.session.threadId);
725
- yield* require_bin.runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(effect.Effect.ignore({ log: true }));
752
+ yield* effect.Effect.forEach([context.openCodeSessionId, ...context.childSessionIds], (sessionID) => require_bin.runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID })).pipe(effect.Effect.ignore({ log: true })), { discard: true });
726
753
  yield* effect.Scope.close(context.sessionScope, effect.Exit.void);
727
754
  });
728
755
  /** Emit content.delta and item.completed events for an assistant text part. */
@@ -1278,12 +1305,35 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1278
1305
  });
1279
1306
  const formatted = require_sourceControlContextFormatter.formatSourceControlContextsForAgent(input.sourceControlContexts ?? []);
1280
1307
  let text = formatted ? formatted + "\n\n" + (input.input?.trim() ?? "") : input.input?.trim();
1281
- const fileParts = require_bin.toOpenCodeFileParts({
1282
- attachments: input.attachments,
1283
- resolveAttachmentPath: (attachment) => require_bin.resolveAttachmentPath({
1308
+ const attachmentUrlById = /* @__PURE__ */ new Map();
1309
+ const declaredAttachmentBytes = (input.attachments ?? []).reduce((total, attachment) => total + attachment.sizeBytes, 0);
1310
+ if (declaredAttachmentBytes > 52428800) return yield* new require_bin.ProviderAdapterRequestError({
1311
+ provider: PROVIDER$1,
1312
+ method: "session.prompt",
1313
+ detail: `Attachments total ${declaredAttachmentBytes} bytes; limit is ${require_collectUint8StreamText.PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
1314
+ });
1315
+ let attachmentTotalBytes = 0;
1316
+ for (const attachment of input.attachments ?? []) {
1317
+ const persisted = require_bin.readPersistedAttachment({
1284
1318
  attachmentsDir: serverConfig.attachmentsDir,
1285
1319
  attachment
1286
- })
1320
+ });
1321
+ if (!persisted.ok) return yield* new require_bin.ProviderAdapterRequestError({
1322
+ provider: PROVIDER$1,
1323
+ method: "session.prompt",
1324
+ detail: persisted.reason
1325
+ });
1326
+ attachmentUrlById.set(attachment.id, `data:${attachment.mimeType};base64,${persisted.bytes.toString("base64")}`);
1327
+ attachmentTotalBytes += persisted.sizeBytes;
1328
+ if (attachmentTotalBytes > 52428800) return yield* new require_bin.ProviderAdapterRequestError({
1329
+ provider: PROVIDER$1,
1330
+ method: "session.prompt",
1331
+ detail: `Attachments total ${attachmentTotalBytes} bytes; limit is ${require_collectUint8StreamText.PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES} bytes.`
1332
+ });
1333
+ }
1334
+ const fileParts = require_bin.toOpenCodeFileParts({
1335
+ attachments: input.attachments,
1336
+ resolveAttachmentUrl: (attachment) => attachmentUrlById.get(attachment.id) ?? null
1287
1337
  });
1288
1338
  if ((!text || text.length === 0) && fileParts.length === 0) return yield* new require_bin.ProviderAdapterValidationError({
1289
1339
  provider: PROVIDER$1,
@@ -1349,7 +1399,13 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1349
1399
  });
1350
1400
  const interruptTurn = effect.Effect.fn("interruptTurn")(function* (threadId, turnId) {
1351
1401
  const context = ensureSessionContext(sessions, threadId);
1352
- yield* require_bin.runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(effect.Effect.mapError(toRequestError));
1402
+ const rootAbortExit = yield* require_bin.runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID: context.openCodeSessionId })).pipe(effect.Effect.mapError(toRequestError), effect.Effect.exit);
1403
+ yield* effect.Effect.forEach(context.childSessionIds, (sessionID) => require_bin.runOpenCodeSdk("session.abort", () => context.client.session.abort({ sessionID })).pipe(effect.Effect.ignore({ log: true })), { discard: true });
1404
+ yield* emitStoppedOpenCodeChildren(context, {
1405
+ method: "session.abort",
1406
+ reason: "turn-interrupted"
1407
+ });
1408
+ if (effect.Exit.isFailure(rootAbortExit)) return yield* effect.Effect.failCause(rootAbortExit.cause);
1353
1409
  if (turnId ?? context.activeTurnId) yield* emitForContext(context, {
1354
1410
  ...yield* buildEventBase({
1355
1411
  threadId,
@@ -1361,14 +1417,16 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1361
1417
  });
1362
1418
  const respondToRequest = effect.Effect.fn("respondToRequest")(function* (threadId, requestId, decision) {
1363
1419
  const context = ensureSessionContext(sessions, threadId);
1364
- if (!context.pendingPermissions.has(requestId)) return yield* new require_bin.ProviderAdapterRequestError({
1420
+ const request = context.pendingPermissions.get(requestId);
1421
+ if (!request) return yield* new require_bin.ProviderAdapterRequestError({
1365
1422
  provider: PROVIDER$1,
1366
- method: "permission.reply",
1423
+ method: "permission.respond",
1367
1424
  detail: `Unknown pending permission request: ${requestId}`
1368
1425
  });
1369
- yield* require_bin.runOpenCodeSdk("permission.reply", () => context.client.permission.reply({
1370
- requestID: requestId,
1371
- reply: require_bin.toOpenCodePermissionReply(decision)
1426
+ yield* require_bin.runOpenCodeSdk("permission.respond", () => context.client.permission.respond({
1427
+ sessionID: request.sessionID,
1428
+ permissionID: requestId,
1429
+ response: require_bin.toOpenCodePermissionReply(decision)
1372
1430
  })).pipe(effect.Effect.mapError(toRequestError));
1373
1431
  });
1374
1432
  const respondToUserInput = effect.Effect.fn("respondToUserInput")(function* (threadId, requestId, answers) {
@@ -1391,6 +1449,10 @@ function makeOpenCodeAdapter(openCodeSettings, options) {
1391
1449
  threadId
1392
1450
  });
1393
1451
  if (!(yield* stopOpenCodeContext(context))) return;
1452
+ yield* emitStoppedOpenCodeChildren(context, {
1453
+ method: "session.abort",
1454
+ reason: "session-stopped"
1455
+ });
1394
1456
  yield* emitForContext(context, {
1395
1457
  ...yield* buildEventBase({ threadId }),
1396
1458
  type: "session.exited",
@@ -1520,7 +1582,7 @@ function inferDefaultAgent(agents) {
1520
1582
  }
1521
1583
  const DEFAULT_OPENCODE_MODEL_CAPABILITIES = require_bin.createModelCapabilities({ optionDescriptors: [] });
1522
1584
  function openCodeCapabilitiesForModel(input) {
1523
- const variantValues = Object.keys(input.model.variants ?? {});
1585
+ const variantValues = Object.entries(input.model.variants ?? {}).filter(([, configuration]) => configuration.disabled !== true).map(([variant]) => variant).toSorted((left, right) => left.localeCompare(right));
1524
1586
  const defaultVariant = inferDefaultVariant(input.providerID, variantValues);
1525
1587
  const variantOptions = variantValues.map((value) => defaultVariant === value ? {
1526
1588
  id: value,
@@ -1530,7 +1592,7 @@ function openCodeCapabilitiesForModel(input) {
1530
1592
  id: value,
1531
1593
  label: titleCaseSlug(value)
1532
1594
  });
1533
- const primaryAgents = input.agents.filter((agent) => !agent.hidden && (agent.mode === "primary" || agent.mode === "all"));
1595
+ const primaryAgents = [...new Map(input.agents.filter((agent) => !agent.hidden && (agent.mode === "primary" || agent.mode === "all")).map((agent) => [agent.name, agent])).values()].toSorted((left, right) => left.name.localeCompare(right.name));
1534
1596
  const defaultAgent = inferDefaultAgent(primaryAgents);
1535
1597
  const agentOptions = primaryAgents.map((agent) => defaultAgent === agent.name ? {
1536
1598
  id: agent.name,
@@ -1556,16 +1618,19 @@ function openCodeCapabilitiesForModel(input) {
1556
1618
  }
1557
1619
  function flattenOpenCodeModels(input) {
1558
1620
  const connected = new Set(input.providerList.connected);
1559
- const models = [];
1621
+ const models = /* @__PURE__ */ new Map();
1560
1622
  for (const provider of input.providerList.all) {
1561
1623
  if (!connected.has(provider.id)) continue;
1562
1624
  for (const model of Object.values(provider.models)) {
1625
+ const modelId = require_bin.nonEmptyTrimmed(model.id);
1563
1626
  const name = require_bin.nonEmptyTrimmed(model.name);
1564
- if (!name) continue;
1627
+ if (!modelId || !name) continue;
1565
1628
  const subProvider = require_bin.nonEmptyTrimmed(provider.name);
1566
1629
  const shortName = subProvider ? deriveShortNameByStrippingPrefix(name, subProvider) : void 0;
1567
- models.push({
1568
- slug: `${provider.id}/${model.id}`,
1630
+ const slug = `${provider.id}/${modelId}`;
1631
+ if (models.has(slug)) continue;
1632
+ models.set(slug, {
1633
+ slug,
1569
1634
  name,
1570
1635
  ...subProvider ? { subProvider } : {},
1571
1636
  ...shortName ? { shortName } : {},
@@ -1578,7 +1643,7 @@ function flattenOpenCodeModels(input) {
1578
1643
  });
1579
1644
  }
1580
1645
  }
1581
- return models.toSorted((left, right) => left.name.localeCompare(right.name));
1646
+ return [...models.values()].toSorted((left, right) => left.name.localeCompare(right.name) || left.slug.localeCompare(right.slug));
1582
1647
  }
1583
1648
  /**
1584
1649
  * Strip a leading provider prefix from `name` so the chat-box trigger doesn't
@@ -1711,7 +1776,7 @@ const checkOpenCodeProviderStatus = effect.Effect.fn("checkOpenCodeProviderStatu
1711
1776
  })));
1712
1777
  if (inventoryExit._tag === "Failure") return fallback(effect.Cause.squash(inventoryExit.cause), version);
1713
1778
  const models = require_bin.providerModelsFromSettings(flattenOpenCodeModels(inventoryExit.value), PROVIDER, customModels, DEFAULT_OPENCODE_MODEL_CAPABILITIES);
1714
- const connectedCount = inventoryExit.value.providerList.connected.length;
1779
+ const connectedCount = new Set(inventoryExit.value.providerList.connected).size;
1715
1780
  return require_bin.buildServerProvider({
1716
1781
  presentation: OPENCODE_PRESENTATION,
1717
1782
  enabled: true,
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const require_collectUint8StreamText = require("./collectUint8StreamText-Bb52hlpd.cjs");
3
+ const require_collectUint8StreamText = require("./collectUint8StreamText-B9B7bGv9.cjs");
4
4
  let effect = require("effect");
5
5
  let effect_unstable_process = require("effect/unstable/process");
6
6
  //#region src/vcs/VcsProcess.ts
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Da as VcsProcessSpawnError, Ea as VcsProcessExitError, Oa as VcsProcessTimeoutError, Ta as VcsOutputDecodeError, t as collectUint8StreamText } from "./collectUint8StreamText-EDg4F0TU.mjs";
3
+ import { Aa as VcsProcessTimeoutError, Da as VcsOutputDecodeError, Oa as VcsProcessExitError, ka as VcsProcessSpawnError, t as collectUint8StreamText } from "./collectUint8StreamText-RzKEq2NY.mjs";
4
4
  import { Context, Duration, Effect, Layer, Option, Schema, Sink, Stream } from "effect";
5
5
  import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
6
6
  //#region src/vcs/VcsProcess.ts