ryco-cli 0.1.29 → 0.1.31

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 (500) hide show
  1. package/README.md +37 -0
  2. package/dist/{AcpAdapter-8CSe4HK7.cjs → AcpAdapter-ByUp9-wk.cjs} +74 -54
  3. package/dist/{AcpAdapter-CG1wRWcf.mjs → AcpAdapter-CY_ANTKu.mjs} +74 -54
  4. package/dist/{AcpNativeLogging-B6TtnnKL.mjs → AcpNativeLogging-C7PC6imv.mjs} +30 -4
  5. package/dist/{AcpNativeLogging-DbjnRnTf.cjs → AcpNativeLogging-OQeAya9d.cjs} +33 -1
  6. package/dist/{AcpRegistryDriver-16ZTxUs3.cjs → AcpRegistryDriver-CD9GN7rI.cjs} +3 -3
  7. package/dist/{AcpRegistryDriver-DZFasKaz.mjs → AcpRegistryDriver-DMZ5VBWJ.mjs} +4 -4
  8. package/dist/AzureDevOpsSourceControlProvider-5giVYoNi.mjs +2053 -0
  9. package/dist/AzureDevOpsSourceControlProvider-BKMXEUaN.cjs +2055 -0
  10. package/dist/{BitbucketSourceControlProvider-DplKc8Wo.mjs → BitbucketSourceControlProvider-BVUBsEUF.mjs} +63 -23
  11. package/dist/{BitbucketSourceControlProvider-B-ZwKj72.cjs → BitbucketSourceControlProvider-BWnnrbch.cjs} +62 -22
  12. package/dist/{BunPTY-Dcl1Lp62.mjs → BunPTY-CMbDQ1Xb.mjs} +1 -1
  13. package/dist/{ClaudeDriver-r0lJ9vmE.cjs → ClaudeDriver-DCrqouOR.cjs} +1376 -194
  14. package/dist/{ClaudeDriver-0gGVop27.mjs → ClaudeDriver-DVOss8cC.mjs} +1377 -195
  15. package/dist/{CodexDriver-bJAbhSwY.cjs → CodexDriver-CBQPHJqU.cjs} +259 -29
  16. package/dist/{CodexDriver-baT02xVb.mjs → CodexDriver-DJoTky7Z.mjs} +261 -31
  17. package/dist/{CodexTextGeneration-Dwp6X3dq.mjs → CodexTextGeneration-BSgNgfZv.mjs} +6 -6
  18. package/dist/{CodexTextGeneration-DFZ5y4gj.cjs → CodexTextGeneration-C9MDQmZm.cjs} +7 -7
  19. package/dist/{CopilotDriver-C0OhnSB1.mjs → CopilotDriver-CUkdPXcH.mjs} +78 -20
  20. package/dist/{CopilotDriver-B_jEqfYQ.cjs → CopilotDriver-DbaMDH16.cjs} +76 -18
  21. package/dist/{CursorDriver-DinXkGP9.mjs → CursorDriver-B-ZilXJB.mjs} +115 -98
  22. package/dist/{CursorDriver-BBFEW7ZI.cjs → CursorDriver-DKQqPbKH.cjs} +116 -99
  23. package/dist/{ForgejoSourceControlProvider-iG9o7aZB.cjs → ForgejoSourceControlProvider-CgpjFECj.cjs} +94 -60
  24. package/dist/{ForgejoSourceControlProvider-Dr0fxfud.mjs → ForgejoSourceControlProvider-DemMYUye.mjs} +95 -61
  25. package/dist/{GitHubSourceControlProvider-L1yFpep4.cjs → GitHubSourceControlProvider-C4un6hOK.cjs} +218 -119
  26. package/dist/{GitHubSourceControlProvider-CnIu0n2Y.mjs → GitHubSourceControlProvider-CRSDYcjc.mjs} +206 -108
  27. package/dist/GitLabSourceControlProvider-D8W1ZLPh.cjs +2260 -0
  28. package/dist/GitLabSourceControlProvider-DpWkJ0M3.mjs +2258 -0
  29. package/dist/{GrokDriver-D_Ylzh5z.cjs → GrokDriver-BQ6G_7ZZ.cjs} +11 -12
  30. package/dist/{GrokDriver-pX-N6HGS.mjs → GrokDriver-Buvas9-q.mjs} +7 -8
  31. package/dist/{Metrics-BjqGlIP4.mjs → Metrics-C3vLS9rz.mjs} +1264 -1151
  32. package/dist/{Metrics-Bf96NJ4j.cjs → Metrics-DjRPLE98.cjs} +1295 -1134
  33. package/dist/{NodePTY-D7tFWuQe.mjs → NodePTY-DgnuBruq.mjs} +1 -1
  34. package/dist/{NodeSqliteClient-BGg70C7Q.cjs → NodeSqliteClient-D8bzGgPN.cjs} +1 -1
  35. package/dist/{OpenCodeDriver-Byu1pf_i.mjs → OpenCodeDriver-BWEZD841.mjs} +184 -50
  36. package/dist/{OpenCodeDriver-BFEw5t09.cjs → OpenCodeDriver-qUiX0RLH.cjs} +185 -51
  37. package/dist/{SideQuestionIsolation-81IoAuoi.mjs → SideQuestionIsolation-B1T-DsR0.mjs} +1 -1
  38. package/dist/{SideQuestionIsolation-CMPkCUP0.cjs → SideQuestionIsolation-BPC-Bxsz.cjs} +1 -1
  39. package/dist/bin.cjs +50689 -15659
  40. package/dist/bin.mjs +50578 -15585
  41. package/dist/client/assets/AccountSettings-B88Q_w9Y.js +1 -0
  42. package/dist/client/assets/AiFocusSettings-Bb0TrCPn.js +1 -0
  43. package/dist/client/assets/{AnimatedHeight-BNg7wnTK.js → AnimatedHeight-epXOsgdm.js} +1 -1
  44. package/dist/client/assets/AppearanceSettings-XS9WRVPU.js +1 -0
  45. package/dist/client/assets/AutomationsDialog-bZckh4Y3.js +1 -0
  46. package/dist/client/assets/AutomationsSummary-wPFZCF49.js +1 -0
  47. package/dist/client/assets/BranchToolbar.logic-DjzLKbbB.js +3 -0
  48. package/dist/client/assets/BrowserPanel-CdBLnnfz.js +1 -0
  49. package/dist/client/assets/ChatRightPanel-BCINd0vP.js +34 -0
  50. package/dist/client/assets/ChatThreadRouteView-BFZ0Si-l.js +1 -0
  51. package/dist/client/assets/ColorSwatchPicker-CGyo99o0.js +1 -0
  52. package/dist/client/assets/CommandPalette.logic-BIOMtnEQ.js +1 -0
  53. package/dist/client/assets/CommandPaletteDialog-Db4LH--z.js +2 -0
  54. package/dist/client/assets/CompositeRoot-DtnwMJKj.js +1 -0
  55. package/dist/client/assets/ComputerUseSettings-CkqCqDsU.js +1 -0
  56. package/dist/client/assets/ConnectionsSettings-B9mxExdG.js +7 -0
  57. package/dist/client/assets/CreatePullRequestDialog-CJ7pNCue.js +1 -0
  58. package/dist/client/assets/CreatePullRequestDialogHost-n4ZjdSr4.js +1 -0
  59. package/dist/client/assets/DiagnosticsSettings-f9rFG9re.js +2 -0
  60. package/dist/client/assets/DiagnosticsSettings.logic-Byf-Bu4S.js +1 -0
  61. package/dist/client/assets/DialogHandle-C0c_rK3I.js +1 -0
  62. package/dist/client/assets/{DialogPopup-DdZlhHuQ.js → DialogPopup-BKW1PEEa.js} +1 -1
  63. package/dist/client/assets/DialogRoot-BIubqrv0.js +1 -0
  64. package/dist/client/assets/DialogTitle-BAX_FLoG.js +1 -0
  65. package/dist/client/assets/{DialogViewport-BwuqbGLY.js → DialogViewport-C2iOUx0O.js} +1 -1
  66. package/dist/client/assets/DiffPanel-BkqDt_SS.js +25 -0
  67. package/dist/client/assets/DisclosureRegion-B8556yU0.js +1 -0
  68. package/dist/client/assets/DraftChatThreadRouteView-BKgRKJ2w.js +1 -0
  69. package/dist/client/assets/{ExternalIdentityWeb.logic-DsTJQkg-.js → ExternalIdentityWeb.logic-Cu6suNrN.js} +1 -1
  70. package/dist/client/assets/GlassSurface-DLYYzRdP.js +1 -0
  71. package/dist/client/assets/HostedConnectionControls-CoVqtnrK.js +1 -0
  72. package/dist/client/assets/HostedHubRoot-CM2CwPUr.js +2 -0
  73. package/dist/client/assets/{HostedNativeAuthorizationRoute-BSq_AlY2.js → HostedNativeAuthorizationRoute-Bizmqrh_.js} +2 -2
  74. package/dist/client/assets/HostedNodeRenameDialog-SXWMsTO0.js +1 -0
  75. package/dist/client/assets/HostedRelayTrustNotice-BfTyrBi5.js +1 -0
  76. package/dist/client/assets/InboxStatusGlyph-BPTqzp7l.js +1 -0
  77. package/dist/client/assets/IntegrationsSettingsPanel-DAPvkV4i.js +1 -0
  78. package/dist/client/assets/KeybindingsSettings-B8g-YI2O.js +1 -0
  79. package/dist/client/assets/LazyBrowserPanel-Ds9cdOC_.js +2 -0
  80. package/dist/client/assets/McpServersSettings-Dw6G3ff3.js +6 -0
  81. package/dist/client/assets/MobileSheet-DfgXNWbd.js +1 -0
  82. package/dist/client/assets/ModelTuningDial-DQBAbuNL.js +1 -0
  83. package/dist/client/assets/NewWorktreeDialog-CDZAJmK6.js +4 -0
  84. package/dist/client/assets/NodeSecuritySettings-3MELA9ru.js +1 -0
  85. package/dist/client/assets/NullStore-gT_6_xZE.js +1 -0
  86. package/dist/client/assets/OnboardingDialog-CAAtNnJf.js +1 -0
  87. package/dist/client/assets/OpinionatedPluginsSettings-AiDB0Vl4.js +1 -0
  88. package/dist/client/assets/{PdfAttachmentPreview-CTo1AyZs.js → PdfAttachmentPreview-BFNW2wjN.js} +2 -2
  89. package/dist/client/assets/{PhoneGetAppInterstitial-DwopOWnQ.js → PhoneGetAppInterstitial-D8fwZ8E9.js} +1 -1
  90. package/dist/client/assets/PhoneHome-YHgHljA0.js +1 -0
  91. package/dist/client/assets/PhoneSettingsSurface-BVxJppvK.js +2 -0
  92. package/dist/client/assets/PreviewPanel-BYcEnkv9.js +643 -0
  93. package/dist/client/assets/ProjectScriptDialog-K34K2Kzm.js +1 -0
  94. package/dist/client/assets/ProjectsPage-DXnMYLjb.js +1 -0
  95. package/dist/client/assets/PromoteChatDialog-CAY7_wJ-.js +1 -0
  96. package/dist/client/assets/ProviderLimitWindow-CK04BSkM.js +1 -0
  97. package/dist/client/assets/ProviderUpdateLaunchNotification.logic-BMBrDDOC.js +1 -0
  98. package/dist/client/assets/ProvidersSettingsPanel-C85PX9Es.js +1 -0
  99. package/dist/client/assets/PullRequestsPage-C0rgfGwB.js +1 -0
  100. package/dist/client/assets/{QuitShortcutFeedback-eCvP_MNj.js → QuitShortcutFeedback-DSkKqETs.js} +1 -1
  101. package/dist/client/assets/RedactedSensitiveText-DQ0YveQd.js +1 -0
  102. package/dist/client/assets/RollingText-BzvpP5fa.js +1 -0
  103. package/dist/client/assets/RootAppShell-BYQ-eGNT.js +6 -0
  104. package/dist/client/assets/{Separator-BiINUUQl.js → Separator-DpiW19Vw.js} +1 -1
  105. package/dist/client/assets/SettingsPage-BCFN7Ju2.js +2 -0
  106. package/dist/client/assets/SettingsPanels-CP6z2b1x.js +3 -0
  107. package/dist/client/assets/SettingsPanels.editor-D8U-TWWG.js +1 -0
  108. package/dist/client/assets/SettingsSelect-DEhNaz3E.js +1 -0
  109. package/dist/client/assets/Sidebar.logic-D_ODfSpl.js +1 -0
  110. package/dist/client/assets/SimulatorPanel-DCT6fZ0X.js +1 -0
  111. package/dist/client/assets/SourceControlSettings-DxUtvPMK.js +1 -0
  112. package/dist/client/assets/StatisticsPage-C9SrwtM4.js +1 -0
  113. package/dist/client/assets/StatisticsPanel-BMYLETs0.js +1 -0
  114. package/dist/client/assets/ThreadLinkList-BN5z5EpS.js +169 -0
  115. package/dist/client/assets/ThreadTerminalDrawer-CgIFOlR-.js +18 -0
  116. package/dist/client/assets/ThreadWorkspacePanel-DvXoqQPF.js +3 -0
  117. package/dist/client/assets/ToolbarRootContext-8FsV9Cpj.js +1 -0
  118. package/dist/client/assets/TraitsPicker-DcrpJahy.js +1 -0
  119. package/dist/client/assets/Virtualizer-CwXeUPla.js +1345 -0
  120. package/dist/client/assets/WorkspacePullRequestPanel-3mlcJn9G.js +1 -0
  121. package/dist/client/assets/WorkspaceReview-UGbCgXeK.js +2 -0
  122. package/dist/client/assets/{abnfDiagram-N423BO3Z-DAmGykdr.js → abnfDiagram-N423BO3Z-DVEM6Scc.js} +1 -1
  123. package/dist/client/assets/{activity-DRZlu-MC.js → activity-DVCuAejY.js} +1 -1
  124. package/dist/client/assets/{alert-CwrDisFU.js → alert-FV7ZIit_.js} +1 -1
  125. package/dist/client/assets/alert-dialog-CgXR9tED.js +1 -0
  126. package/dist/client/assets/app-window-3xtwqZgI.js +1 -0
  127. package/dist/client/assets/appChrome-COCz-T7w.js +1 -0
  128. package/dist/client/assets/{appearancePreferences-nFx4MHoI.js → appearancePreferences-NnsvXwBe.js} +1 -1
  129. package/dist/client/assets/architecture-7GRP2DOG-DXXb_0_g.js +1 -0
  130. package/dist/client/assets/{architectureDiagram-T3A2C74G-DypU2ERW.js → architectureDiagram-T3A2C74G-B6pcKiCj.js} +1 -1
  131. package/dist/client/assets/{arrow-left-XhcJWpRy.js → arrow-left-Blu3LSE2.js} +1 -1
  132. package/dist/client/assets/{arrow-right-BBs6iTUL.js → arrow-right-CO3CH0ne.js} +1 -1
  133. package/dist/client/assets/arrow-up-B69gV2Bq.js +1 -0
  134. package/dist/client/assets/{arrow-up-right-CJ9Vq7nK.js → arrow-up-right-BbPGFOLA.js} +1 -1
  135. package/dist/client/assets/authorization-Ob6YwWiI.js +1 -0
  136. package/dist/client/assets/autocomplete-RVpjsrDv.js +1 -0
  137. package/dist/client/assets/ban-BIm2PVkE.js +1 -0
  138. package/dist/client/assets/{blockDiagram-VBNYF7ZC-B9MhR9hY.js → blockDiagram-VBNYF7ZC-WNerGp9V.js} +1 -1
  139. package/dist/client/assets/{bot-D5wgL7pu.js → bot-C9nWtaWq.js} +1 -1
  140. package/dist/client/assets/browserState-jt47YsqD.js +1 -0
  141. package/dist/client/assets/{c4Diagram-5PPSVZJV-C22FWSoE.js → c4Diagram-5PPSVZJV-wp1ioOoM.js} +1 -1
  142. package/dist/client/assets/camera-C13VoW3c.js +1 -0
  143. package/dist/client/assets/capabilities-CfOhq009.js +1 -0
  144. package/dist/client/assets/channel-56r2qL2v.js +1 -0
  145. package/dist/client/assets/{chart-column-D6Lnkklk.js → chart-column-DRv0YtL_.js} +1 -1
  146. package/dist/client/assets/checkbox-CIIIY9FA.js +1 -0
  147. package/dist/client/assets/checks-Dw022Bvy.js +1 -0
  148. package/dist/client/assets/{chunk-2GRJ4B5K-D1tZuCzA.js → chunk-2GRJ4B5K-DRl3ILpc.js} +1 -1
  149. package/dist/client/assets/{chunk-4I5QYGJK-Clf86zK0.js → chunk-4I5QYGJK-CYTRl4bo.js} +1 -1
  150. package/dist/client/assets/{chunk-5RXB4S5H-B36N5RYZ.js → chunk-5RXB4S5H-VCNwRsOa.js} +1 -1
  151. package/dist/client/assets/{chunk-6Q2QTUOP-IAxdzsQJ.js → chunk-6Q2QTUOP-DnSeKGPG.js} +1 -1
  152. package/dist/client/assets/{chunk-7Z6QIM7H-Ctqebv_4.js → chunk-7Z6QIM7H-Cjilh9TF.js} +1 -1
  153. package/dist/client/assets/{chunk-GF5L2VYU-CAfciJae.js → chunk-GF5L2VYU-CGR7AW0t.js} +1 -1
  154. package/dist/client/assets/{chunk-I66GZJ75-BZ7XtZf4.js → chunk-I66GZJ75-CXSn8dDu.js} +1 -1
  155. package/dist/client/assets/{chunk-JQJVKLGR-DVuZCWnv.js → chunk-JQJVKLGR-Dro-75lU.js} +1 -1
  156. package/dist/client/assets/{chunk-KBJHAD2P-DtWbzsRm.js → chunk-KBJHAD2P-BDqN2kVf.js} +1 -1
  157. package/dist/client/assets/{chunk-NSK5VX7P-BVMz_Hc4.js → chunk-NSK5VX7P-DGo5UczH.js} +1 -1
  158. package/dist/client/assets/{chunk-QR6OTTB3-DWitTCy-.js → chunk-QR6OTTB3-RWuyWnBI.js} +1 -1
  159. package/dist/client/assets/{chunk-UBXNYLIW-BuxXXP2s.js → chunk-UBXNYLIW-BPRzeB0w.js} +1 -1
  160. package/dist/client/assets/{chunk-W5SLKNZC-Bnf3sQl4.js → chunk-W5SLKNZC-DYWocTFi.js} +1 -1
  161. package/dist/client/assets/{chunk-WRU74C26-xu-KDOon.js → chunk-WRU74C26-ChbB1jY3.js} +1 -1
  162. package/dist/client/assets/circle-stop-D8B4hRpY.js +1 -0
  163. package/dist/client/assets/circle-x-CNLfrTqR.js +1 -0
  164. package/dist/client/assets/classDiagram-JCYQIIEL-DGvmFev3.js +1 -0
  165. package/dist/client/assets/classDiagram-v2-OCEON4UE-DGvmFev3.js +1 -0
  166. package/dist/client/assets/{clipboard-copy-oDSkUUg4.js → clipboard-copy-DGi8FKNO.js} +1 -1
  167. package/dist/client/assets/clock-3-DmJ4_XPI.js +1 -0
  168. package/dist/client/assets/clock-DZIuPtNG.js +1 -0
  169. package/dist/client/assets/color-picker-BdBXje-a.js +1 -0
  170. package/dist/client/assets/columns-2-CWlMOClK.js +1 -0
  171. package/dist/client/assets/combobox-Dtjtf7AB.js +1 -0
  172. package/dist/client/assets/{cynefin-OW5HDTMX-DGNyiNSf.js → cynefin-OW5HDTMX-TuShvMuM.js} +1 -1
  173. package/dist/client/assets/{cynefinDiagram-MW4NZA55-_ctibv4i.js → cynefinDiagram-MW4NZA55-B0Edt2Em.js} +1 -1
  174. package/dist/client/assets/{dagre-VZM6K2ZE-Bo-bS1Y0.js → dagre-VZM6K2ZE-D-eiuqHx.js} +1 -1
  175. package/dist/client/assets/{data-list-DLsM39Hp.js → data-list-BAx6jBY1.js} +1 -1
  176. package/dist/client/assets/desktopUpdateAtoms-BjrLa3tl.js +1 -0
  177. package/dist/client/assets/desktopWorkspace-C2wXVBhc.js +1 -0
  178. package/dist/client/assets/{deviceName-z0ZWSq0z.js → deviceName-B4youG0v.js} +1 -1
  179. package/dist/client/assets/{diagram-7IWD3JNH-DSjtw1SY.js → diagram-7IWD3JNH-DgM6lMlR.js} +1 -1
  180. package/dist/client/assets/{diagram-B4RE2ZJO-B7fWEvIa.js → diagram-B4RE2ZJO-CyHNDjzV.js} +1 -1
  181. package/dist/client/assets/{diagram-LBJQPF4R-trRYCE5d.js → diagram-LBJQPF4R-DDzuLIN5.js} +1 -1
  182. package/dist/client/assets/{diagram-Q27KOJAE-_DYcRggk.js → diagram-Q27KOJAE-BaBvK9QB.js} +1 -1
  183. package/dist/client/assets/{diagram-UB23O5K3-BkMzOHX8.js → diagram-UB23O5K3-CzZ2ewuZ.js} +1 -1
  184. package/dist/client/assets/dialogWords-Cg0YkJVg.js +1 -0
  185. package/dist/client/assets/diffRouteSearch-D2MKN_ah.js +1 -0
  186. package/dist/client/assets/disclosureMotion-cbMJn5-z.js +1 -0
  187. package/dist/client/assets/{download-CHdS3R_v.js → download-TvtXS4hE.js} +1 -1
  188. package/dist/client/assets/{ebnfDiagram-BXEA7PRR-DubiOMCG.js → ebnfDiagram-BXEA7PRR-CL1vdOKi.js} +1 -1
  189. package/dist/client/assets/editorPreferences-DqKyA-2Z.js +1 -0
  190. package/dist/client/assets/ellipsis-CDK1dNFZ.js +1 -0
  191. package/dist/client/assets/ellipsis-vertical-CwzEUTwV.js +1 -0
  192. package/dist/client/assets/{empty-BlBl_Vvw.js → empty-BovKoxbn.js} +1 -1
  193. package/dist/client/assets/{erDiagram-JOGREHBK-CFDiNfSJ.js → erDiagram-JOGREHBK-DmQR2if6.js} +1 -1
  194. package/dist/client/assets/eventmodeling-NTZA5JFV-D272GIcY.js +1 -0
  195. package/dist/client/assets/external-link-CJeVJZ7s.js +1 -0
  196. package/dist/client/assets/eye-BUmrXqzg.js +1 -0
  197. package/dist/client/assets/file-diff-BWc3mYsz.js +1 -0
  198. package/dist/client/assets/flowDiagram-UKHOOZJN-DLyS38Mm.js +1 -0
  199. package/dist/client/assets/folder-git-2-CPxg5wKP.js +1 -0
  200. package/dist/client/assets/folder-open-DcMymvp1.js +1 -0
  201. package/dist/client/assets/formatCount-B4KLI651.js +1 -0
  202. package/dist/client/assets/{ganttDiagram-PKOTCBZU-DT2XhE-m.js → ganttDiagram-PKOTCBZU-1q2nUL92.js} +1 -1
  203. package/dist/client/assets/git-pull-request-BFPwpm3c.js +1 -0
  204. package/dist/client/assets/{gitGraph-4MIJSDKK-BI5UGiqb.js → gitGraph-4MIJSDKK-COtwmv2S.js} +1 -1
  205. package/dist/client/assets/{gitGraphDiagram-DS77QQ5N-CzAB97Rd.js → gitGraphDiagram-DS77QQ5N-ChsvaxX4.js} +1 -1
  206. package/dist/client/assets/{group-DZJuSiJL.js → group-DWWn0dTx.js} +1 -1
  207. package/dist/client/assets/hammer-BXo-EU88.js +1 -0
  208. package/dist/client/assets/hostedConnectionCoordinator-BkAE-RhA.js +1 -0
  209. package/dist/client/assets/hostedPairing-5n5srRC9.js +1 -0
  210. package/dist/client/assets/{index-BAJdq3TK.js → index-DARIYokI.js} +2 -2
  211. package/dist/client/assets/{info-A6RAGUB7-DdGYYgLX.js → info-A6RAGUB7-CI2qZ9wW.js} +1 -1
  212. package/dist/client/assets/{infoDiagram-6WML65LV-zhUpER6a.js → infoDiagram-6WML65LV-BPmgcTPH.js} +1 -1
  213. package/dist/client/assets/{input-CzU08wbL.js → input-CCie4mm1.js} +1 -1
  214. package/dist/client/assets/{ishikawaDiagram-WSZJBQD7-BQLkqykE.js → ishikawaDiagram-WSZJBQD7-LyS9p3Yg.js} +1 -1
  215. package/dist/client/assets/{journeyDiagram-NVQOT4AX-DBgsbKOF.js → journeyDiagram-NVQOT4AX-BYaAmN65.js} +1 -1
  216. package/dist/client/assets/{kanban-definition-27J2QSJJ-DF-Rr-xs.js → kanban-definition-27J2QSJJ-D-pwzqFt.js} +1 -1
  217. package/dist/client/assets/{key-round-CvyrSjb2.js → key-round-BlrUTfxB.js} +1 -1
  218. package/dist/client/assets/keyboard-DlBdq6sz.js +1 -0
  219. package/dist/client/assets/label-ChtVI9lp.js +1 -0
  220. package/dist/client/assets/layers-BB-ruGvd.js +1 -0
  221. package/dist/client/assets/lifecycleSuggestionPolicy-0ERe_O53.js +1 -0
  222. package/dist/client/assets/list-checks-BkM_ZRsj.js +1 -0
  223. package/dist/client/assets/loader-3vQnfqIT.js +1 -0
  224. package/dist/client/assets/{log-out-D3rICSt5.js → log-out-CKq9YiLY.js} +1 -1
  225. package/dist/client/assets/{logging-C6tXZlGQ.js → logging-CCg76rgn.js} +1 -1
  226. package/dist/client/assets/main-Ch0bwS-M.js +9 -0
  227. package/dist/client/assets/main-Di0isH9D.css +2 -0
  228. package/dist/client/assets/{mermaid-parser.core-BiGKtilP.js → mermaid-parser.core-RK9ah5RM.js} +2 -2
  229. package/dist/client/assets/{mermaidEngine-Cjfgf3Bg.js → mermaidEngine-Dr8UsPhH.js} +3 -3
  230. package/dist/client/assets/message-circle-dashed-BrjwqS7-.js +1 -0
  231. package/dist/client/assets/messageQueueDrain-B7R7Qmq6.js +1 -0
  232. package/dist/client/assets/messages-square-cDTkDJv_.js +1 -0
  233. package/dist/client/assets/{mindmap-definition-FAOFIHXS-SiU9JwWJ.js → mindmap-definition-FAOFIHXS-DVudWasx.js} +1 -1
  234. package/dist/client/assets/{packet-AYTQ26CC-F-HuW5Dr.js → packet-AYTQ26CC-DnkTsVhD.js} +1 -1
  235. package/dist/client/assets/{pairingUrl-rQM9kSGT.js → pairingUrl-Dn1e2CVw.js} +1 -1
  236. package/dist/client/assets/panels-top-left-B7jZiLth.js +1 -0
  237. package/dist/client/assets/path-text-3Rfu6lt8.js +1 -0
  238. package/dist/client/assets/{pegDiagram-VL7TDLO6-cC-QUd7I.js → pegDiagram-VL7TDLO6-Do5PIp8B.js} +1 -1
  239. package/dist/client/assets/pencil-Bzg-nc6d.js +1 -0
  240. package/dist/client/assets/{pie-WAS4IAKB-BI3XUcLN.js → pie-WAS4IAKB-B_nNQOzn.js} +1 -1
  241. package/dist/client/assets/{pieDiagram-7S7Q4E2Y-BP4gJ4ZK.js → pieDiagram-7S7Q4E2Y-D_IG4xwA.js} +1 -1
  242. package/dist/client/assets/{play-BJZrOx6T.js → play-DpXXQ1qB.js} +1 -1
  243. package/dist/client/assets/popover-OWEv6cQz.js +48 -0
  244. package/dist/client/assets/presentationTier-DPVAxTK4.js +1 -0
  245. package/dist/client/assets/previewRouteSearch-BjZdTuSf.js +1 -0
  246. package/dist/client/assets/primary-Cf-xJExj.js +4 -0
  247. package/dist/client/assets/primitives-CxTBN7D4.js +1 -0
  248. package/dist/client/assets/projectCheckouts.logic-DUT4AxXr.js +1 -0
  249. package/dist/client/assets/projectPaths-B8aVmOZX.js +1 -0
  250. package/dist/client/assets/projectPreferences-CzWBItFj.js +1 -0
  251. package/dist/client/assets/providerCapabilities-B2YOPsLN.js +1 -0
  252. package/dist/client/assets/providerDriverMeta-BHHL9uw0.js +1 -0
  253. package/dist/client/assets/providerModels-v9PYbzRE.js +1 -0
  254. package/dist/client/assets/providerStatus-CDPaqb0S.js +1 -0
  255. package/dist/client/assets/pullRequestsModel.logic-Dv_om_C4.js +1 -0
  256. package/dist/client/assets/{qr-code-BFO8lV1M.js → qr-code-BlbiBIwH.js} +1 -1
  257. package/dist/client/assets/{qr-code-Cmfz5JKf.js → qr-code-DywzVgQC.js} +1 -1
  258. package/dist/client/assets/{quadrantDiagram-CIZ2JOQS-DO-N1m-q.js → quadrantDiagram-CIZ2JOQS-DY6fJyrM.js} +1 -1
  259. package/dist/client/assets/{radar-RG4KPBEZ-CfayXQ5F.js → radar-RG4KPBEZ-D9689I5m.js} +1 -1
  260. package/dist/client/assets/radio-group-DVwD6Cuy.js +1 -0
  261. package/dist/client/assets/{railroad-74A4TZTK-CT6f-etT.js → railroad-74A4TZTK-DVzWbQnl.js} +1 -1
  262. package/dist/client/assets/railroad-abnf-HS5TGJTU-C_2P6umA.js +1 -0
  263. package/dist/client/assets/railroad-ebnf-LZEXJU2U-aGlR3R3z.js +1 -0
  264. package/dist/client/assets/railroad-peg-WCYAUIDC-DCB9oE8y.js +1 -0
  265. package/dist/client/assets/{railroadDiagram-AXF67PYL-DC8egbob.js → railroadDiagram-AXF67PYL-D1oJ6Jtl.js} +1 -1
  266. package/dist/client/assets/readCache-B7cDPz2O.js +1 -0
  267. package/dist/client/assets/{refresh-cw-K_hU8_ld.js → refresh-cw-CRUTivd6.js} +1 -1
  268. package/dist/client/assets/{requirementDiagram-LRYGKXZP-DJMzcLk_.js → requirementDiagram-LRYGKXZP-7RM8iREp.js} +1 -1
  269. package/dist/client/assets/rotate-ccw-BE2ZCwL6.js +1 -0
  270. package/dist/client/assets/roving-radio-group-NMPWrDqe.js +1 -0
  271. package/dist/client/assets/rows-2-DDS4dGTX.js +1 -0
  272. package/dist/client/assets/runtime-DjjjAcTE.js +18 -0
  273. package/dist/client/assets/safePolygon-C1AzMRS4.js +1 -0
  274. package/dist/client/assets/{sankeyDiagram-W5VNT64P-YR6aIYLj.js → sankeyDiagram-W5VNT64P-C1tKAPGN.js} +1 -1
  275. package/dist/client/assets/{save-Mh-PA_2P.js → save-OZdkPs_y.js} +1 -1
  276. package/dist/client/assets/scroll-area-80P7vbjw.js +1 -0
  277. package/dist/client/assets/{scrollEdges-Zcpuz3un.js → scrollEdges-C0Oc-5qi.js} +1 -1
  278. package/dist/client/assets/select-Cb9FUPHD.js +1 -0
  279. package/dist/client/assets/separator-CO8bC7Wc.js +1 -0
  280. package/dist/client/assets/{sequenceDiagram-SI44F4Z6-BVeSqWDA.js → sequenceDiagram-SI44F4Z6-DGVpb7jL.js} +1 -1
  281. package/dist/client/assets/settings-2-PrRDu6Lc.js +1 -0
  282. package/dist/client/assets/settingsLayout-CRFNCk_D.js +1 -0
  283. package/dist/client/assets/sheet-C5DW7qVO.js +1 -0
  284. package/dist/client/assets/{shield-i098Bm_B.js → shield-CBHYqlkR.js} +1 -1
  285. package/dist/client/assets/{shield-alert-CXmR7fM9.js → shield-alert-Dc2cGwyR.js} +1 -1
  286. package/dist/client/assets/{shield-check-CdFhWT_o.js → shield-check-_wl7R4Js.js} +1 -1
  287. package/dist/client/assets/sidebar-0BBaFNm3.js +1 -0
  288. package/dist/client/assets/sidebarProjectFolders-BjWzbt8C.js +3 -0
  289. package/dist/client/assets/sidebarProjectGrouping-nQRStWrZ.js +1 -0
  290. package/dist/client/assets/sidebarStatusText-BBKuNies.js +1 -0
  291. package/dist/client/assets/sidebarUndo-Dfq1lvyF.js +1 -0
  292. package/dist/client/assets/{skeleton-BwFgUtuE.js → skeleton-DfUe6VV_.js} +1 -1
  293. package/dist/client/assets/sliders-horizontal-BGXkwvKv.js +1 -0
  294. package/dist/client/assets/sliding-tabs-BnDSjRU3.js +39 -0
  295. package/dist/client/assets/{smartphone-DGfizz51.js → smartphone-OEAQOTdv.js} +1 -1
  296. package/dist/client/assets/spinner-lHRJWsym.js +1 -0
  297. package/dist/client/assets/square-B05NKv3e.js +1 -0
  298. package/dist/client/assets/{star-J3x3fktG.js → star-C8mHmfZu.js} +1 -1
  299. package/dist/client/assets/{stateDiagram-OKZ733FA-DoIZN669.js → stateDiagram-OKZ733FA-CCOAegCG.js} +1 -1
  300. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-D60qqBed.js +1 -0
  301. package/dist/client/assets/storeSelectors-BichCKDC.js +1 -0
  302. package/dist/client/assets/surfaceMorph-BTRijmlU.js +1 -0
  303. package/dist/client/assets/{swimlanes-SLNWSIFB-BoFLigyK.js → swimlanes-SLNWSIFB-CFsLYT4h.js} +1 -1
  304. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-D0SaJgSn.js +8 -0
  305. package/dist/client/assets/switch-oQc7Ifbl.js +1 -0
  306. package/dist/client/assets/text-wrap-DSRdSfDm.js +1 -0
  307. package/dist/client/assets/textarea-VyiIZ0wQ.js +1 -0
  308. package/dist/client/assets/threadPriorityRefreshRuntime-H656C1J_.js +1 -0
  309. package/dist/client/assets/ticker-CPutfhZ4.js +1 -0
  310. package/dist/client/assets/{timeline-definition-Z64GVDOM-D65EmNWc.js → timeline-definition-Z64GVDOM-B4agmO7R.js} +1 -1
  311. package/dist/client/assets/toggle-DFqtCPt-.js +1 -0
  312. package/dist/client/assets/toggle-group-C5ICmqkI.js +1 -0
  313. package/dist/client/assets/{tokenModePresentation-C0-NgmX5.js → tokenModePresentation-umDRm4k1.js} +1 -1
  314. package/dist/client/assets/tooltip-DbqhseXd.js +1 -0
  315. package/dist/client/assets/{treeView-Q6P3EWNA-C2S-OPgI.js → treeView-Q6P3EWNA-C_S3udFB.js} +1 -1
  316. package/dist/client/assets/{treemap-WGGIJYW6-6Ovsu9iH.js → treemap-WGGIJYW6-B-kUSAkE.js} +1 -1
  317. package/dist/client/assets/undo-2-lyluTGMW.js +1 -0
  318. package/dist/client/assets/{unplug-BEfcl9Ht.js → unplug-D6iu-qlh.js} +1 -1
  319. package/dist/client/assets/usage-ClF-eUmy.js +1 -0
  320. package/dist/client/assets/useActiveIndicator-R5NWu8Fg.js +1 -0
  321. package/dist/client/assets/useAppSidebarCollapsed-BbMxfio5.js +1 -0
  322. package/dist/client/assets/useAppearancePreference-Ix13pMKy.js +1 -0
  323. package/dist/client/assets/useAtlassian-BYDCc9lv.js +0 -0
  324. package/dist/client/assets/useCheckoutResolution-CR-oOp5-.js +1 -0
  325. package/dist/client/assets/useDesktopRelaunchGuard-Jmh615iZ.js +1 -0
  326. package/dist/client/assets/useDiffFileNavigation-DeuzdD5E.js +15 -0
  327. package/dist/client/assets/useDiffLayout-DhcXwhBL.js +1 -0
  328. package/dist/client/assets/useEnvironmentSettingsTarget-DM6BRDT7.js +1 -0
  329. package/dist/client/assets/useFocus-CV0KIZwg.js +1 -0
  330. package/dist/client/assets/useGit-CUcs7h5_.js +1 -0
  331. package/dist/client/assets/useGitBranchSearch-CeKFtnCL.js +1 -0
  332. package/dist/client/assets/useHostedDraftExecutionTarget-DvQU5UOq.js +1 -0
  333. package/dist/client/assets/useLabelableId-CEgCRi6q.js +1 -0
  334. package/dist/client/assets/useLandingFlash-BfOOlFtW.js +1 -0
  335. package/dist/client/assets/useLogicalProjectSnapshots-CRNZke74.js +1 -0
  336. package/dist/client/assets/useNavigate-sQZthdyT.js +1 -0
  337. package/dist/client/assets/usePageLeadingInsetClass-Bf4nUvx4.js +1 -0
  338. package/dist/client/assets/usePhoneThreadActions-VaQ-mZex.js +1 -0
  339. package/dist/client/assets/usePopupHandleStore-DimKo2Yy.js +1 -0
  340. package/dist/client/assets/usePopupViewport-YeqX_UM3.js +1 -0
  341. package/dist/client/assets/usePresentationTier-B9kCQ4YH.js +1 -0
  342. package/dist/client/assets/useProject-Kt74Z12J.js +1 -0
  343. package/dist/client/assets/useProviderOptionsUpdater-CTzNh2B7.js +2 -0
  344. package/dist/client/assets/usePullRequestFilesViewed-D5Snmzys.js +1 -0
  345. package/dist/client/assets/usePullRequestsModel-DJL5HHbP.js +40 -0
  346. package/dist/client/assets/useScrollLock-CLZ31xsK.js +1 -0
  347. package/dist/client/assets/useSidebarThreadActions-n6EkLATf.js +6 -0
  348. package/dist/client/assets/{useStatistics-D55-xLMz.js → useStatistics-DD0mYS4J.js} +14 -14
  349. package/dist/client/assets/{useTheme-B441xg4F.js → useTheme-Bdy-BDs-.js} +1 -1
  350. package/dist/client/assets/useValueChanged-DoumqMnV.js +1 -0
  351. package/dist/client/assets/{user-round-C-U7TZKG.js → user-round-BPDXr8Gq.js} +1 -1
  352. package/dist/client/assets/{vennDiagram-T6HMQDX7-fZAexcYr.js → vennDiagram-T6HMQDX7-B1UEn_j_.js} +1 -1
  353. package/dist/client/assets/{vscode-icons-BYX6fBsM.js → vscode-icons-Ccy-gzFN.js} +1 -1
  354. package/dist/client/assets/{wardley-WFR3VGLG-gdYWSMxK.js → wardley-WFR3VGLG-gPdyDc-7.js} +1 -1
  355. package/dist/client/assets/{wardleyDiagram-T6FBY63Y-iDJxQb70.js → wardleyDiagram-T6FBY63Y-2aDcwOA4.js} +1 -1
  356. package/dist/client/assets/workspaceLifecycle-OJ1aKksw.js +3 -0
  357. package/dist/client/assets/workspaceMetadataProjection-CyEyJhUa.js +1 -0
  358. package/dist/client/assets/workspaceRouteSearch-CCavUdbH.js +1 -0
  359. package/dist/client/assets/{wrench-D79uBUSl.js → wrench-CPUCA_rn.js} +1 -1
  360. package/dist/client/assets/wsTransport-C88seBPA.js +15 -0
  361. package/dist/client/assets/{xychartDiagram-ELKLHX3M-B4cfMwpJ.js → xychartDiagram-ELKLHX3M-C1_7Q-1i.js} +1 -1
  362. package/dist/client/favicon.svg +1 -1
  363. package/dist/client/index.html +1 -1
  364. package/dist/collectUint8StreamText-BsLSgI8i.mjs +710 -0
  365. package/dist/collectUint8StreamText-D5olwfpM.cjs +757 -0
  366. package/dist/{deviceHostWorker-L8C9wy38.mjs → deviceHostWorker-B-Dn-6An.mjs} +1 -1
  367. package/dist/{deviceHostWorker-CYnrwfrv.cjs → deviceHostWorker-D4HauWIV.cjs} +1 -1
  368. package/dist/{makeManagedServerProvider-CUwxc0Pn.cjs → makeManagedServerProvider-B5tP7tvg.cjs} +2 -2
  369. package/dist/{makeManagedServerProvider-B_lPFNpL.mjs → makeManagedServerProvider-B65ipCxM.mjs} +2 -2
  370. package/dist/resource-monitor/linux-arm64/ryco-resource-monitor +0 -0
  371. package/dist/resource-monitor/ryco-resource-monitor +0 -0
  372. package/dist/resource-monitor/ryco-resource-monitor.exe +0 -0
  373. package/dist/resource-monitor/win32-arm64/ryco-resource-monitor.exe +0 -0
  374. package/dist/resource-monitor/win32-x64/ryco-resource-monitor.exe +0 -0
  375. package/dist/{rolldown-runtime-LGfotAqq.cjs → rolldown-runtime-HbSU0i7K.cjs} +7 -0
  376. package/dist/{runtimeSession-V3RIy8Ao.mjs → runtimeSession-D_BZ-wRH.mjs} +1 -1
  377. package/dist/{src-BzVJd3Me.cjs → src-FmeCeBJ9.cjs} +3408 -308
  378. package/dist/{src-7E1M4gTQ.mjs → src-VTj60bUm.mjs} +2154 -140
  379. package/package.json +1 -1
  380. package/dist/AzureDevOpsSourceControlProvider-DmJD1-WL.cjs +0 -190
  381. package/dist/AzureDevOpsSourceControlProvider-d5Ogsspk.mjs +0 -188
  382. package/dist/GitLabSourceControlProvider-BZdwXdJl.mjs +0 -186
  383. package/dist/GitLabSourceControlProvider-CrcBR6KQ.cjs +0 -188
  384. package/dist/client/assets/AccountSettings-FN7pwqYA.js +0 -1
  385. package/dist/client/assets/AiFocusSettings-xcDAMaqH.js +0 -1
  386. package/dist/client/assets/AppearanceSettings-BvsvAOsG.js +0 -1
  387. package/dist/client/assets/BranchToolbar.logic-DFsXV3Qs.js +0 -3
  388. package/dist/client/assets/BrowserPanel-D-g_xDZs.js +0 -1
  389. package/dist/client/assets/ChatRightPanel-Bm906qNi.js +0 -201
  390. package/dist/client/assets/ChatThreadRouteView-CATwakjI.js +0 -1
  391. package/dist/client/assets/CommandPaletteDialog-Obv1bvxj.js +0 -1
  392. package/dist/client/assets/CompositeRoot-CfkIdky8.js +0 -1
  393. package/dist/client/assets/ComputerUseSettings-ljYmTHea.js +0 -1
  394. package/dist/client/assets/ConnectionsSettings-CIXs7x_E.js +0 -7
  395. package/dist/client/assets/ContextHandoffEndpointLabel-BzI4Wi1i.js +0 -4
  396. package/dist/client/assets/DiagnosticsSettings-DGX_2T2M.js +0 -2
  397. package/dist/client/assets/DialogHandle-CTtSYpsC.js +0 -1
  398. package/dist/client/assets/DialogRoot-k2_0SNKA.js +0 -1
  399. package/dist/client/assets/DialogTitle-Du7CAbaO.js +0 -1
  400. package/dist/client/assets/DialogTrigger-VpFh8Xza.js +0 -1
  401. package/dist/client/assets/DraftChatThreadRouteView-Cmc5HpWf.js +0 -1
  402. package/dist/client/assets/GlassSurface-BlWIlQ0s.js +0 -1
  403. package/dist/client/assets/HostedConnectionControls-ySHqwr4K.js +0 -1
  404. package/dist/client/assets/HostedHubRoot-Caz8PElK.js +0 -2
  405. package/dist/client/assets/HostedNodeRenameDialog-ChxJdr-Z.js +0 -1
  406. package/dist/client/assets/HostedRelayTrustNotice-DPVrIfj_.js +0 -1
  407. package/dist/client/assets/IntegrationsSettingsPanel-eAq5h-D5.js +0 -2
  408. package/dist/client/assets/KeybindingsSettings-D1XaEVGH.js +0 -7
  409. package/dist/client/assets/LazyBrowserPanel-B6POLJh3.js +0 -2
  410. package/dist/client/assets/McpServersSettings-DqLA6n5v.js +0 -6
  411. package/dist/client/assets/MobileSheet-CtQIYRlY.js +0 -1
  412. package/dist/client/assets/NodeSecuritySettings-Skm7GQDl.js +0 -1
  413. package/dist/client/assets/NullStore-b8PhjwPZ.js +0 -1
  414. package/dist/client/assets/OnboardingDialog-8-fKvY5H.js +0 -1
  415. package/dist/client/assets/OpinionatedPluginsSettings-BIJfJ34L.js +0 -1
  416. package/dist/client/assets/PhoneHome-CUzxhhR4.js +0 -1
  417. package/dist/client/assets/PhoneSettingsSurface-BK2RHmYJ.js +0 -2
  418. package/dist/client/assets/ProvidersSettingsPanel-DPxL7AsR.js +0 -1
  419. package/dist/client/assets/RedactedSensitiveText-DH4mWpB6.js +0 -1
  420. package/dist/client/assets/RootAppShell-DwiWD4Cy.js +0 -7
  421. package/dist/client/assets/SettingsDialog-CE8qy0qL.js +0 -2
  422. package/dist/client/assets/SettingsPanels-BYknk6GO.js +0 -3
  423. package/dist/client/assets/SettingsPanels.editor-64bM0lhg.js +0 -2
  424. package/dist/client/assets/SourceControlSettings-BbveiAj3.js +0 -1
  425. package/dist/client/assets/StatisticsPage-CAO_tCeC.js +0 -1
  426. package/dist/client/assets/StatisticsPanel-SNlgMv2o.js +0 -1
  427. package/dist/client/assets/StatisticsSettingsLink-BpkNubL2.js +0 -1
  428. package/dist/client/assets/ThreadTerminalDrawer-9x_kqQPy.js +0 -18
  429. package/dist/client/assets/ThreadWorkspacePanel-BXE17C4x.js +0 -2073
  430. package/dist/client/assets/appChrome-B_VWWDFj.js +0 -1
  431. package/dist/client/assets/architecture-7GRP2DOG-CQNNG5gU.js +0 -1
  432. package/dist/client/assets/authorization-BugIGt5e.js +0 -1
  433. package/dist/client/assets/badge-BswOCwph.js +0 -1
  434. package/dist/client/assets/capabilities-Bj_X9FZ-.js +0 -1
  435. package/dist/client/assets/channel-BtX-w3CK.js +0 -1
  436. package/dist/client/assets/chevron-right-Ddq5gL-L.js +0 -1
  437. package/dist/client/assets/classDiagram-JCYQIIEL-BgDa3HFl.js +0 -1
  438. package/dist/client/assets/classDiagram-v2-OCEON4UE-BgDa3HFl.js +0 -1
  439. package/dist/client/assets/compiler-runtime-C4g8XhC5.js +0 -1
  440. package/dist/client/assets/desktopWorkspace-Ocqt625W.js +0 -1
  441. package/dist/client/assets/editorPreferences-DVhg0CXd.js +0 -1
  442. package/dist/client/assets/eventmodeling-NTZA5JFV-DpzGHjmu.js +0 -1
  443. package/dist/client/assets/flowDiagram-UKHOOZJN-CaDVMm72.js +0 -1
  444. package/dist/client/assets/hostedConnectionCoordinator-BztHfGNt.js +0 -1
  445. package/dist/client/assets/hostedPairing-CqhLPQqG.js +0 -1
  446. package/dist/client/assets/hubRoutes-DExWSvVE.js +0 -1
  447. package/dist/client/assets/kbd-DKuvGqFP.js +0 -1
  448. package/dist/client/assets/layers-CwP65mnC.js +0 -1
  449. package/dist/client/assets/liquidGlass-CA2o_Cq0.js +0 -1
  450. package/dist/client/assets/liquidGlass.worker-icvLJKHf.js +0 -1
  451. package/dist/client/assets/main-BqSANuAs.css +0 -2
  452. package/dist/client/assets/main-RFllWEko.js +0 -9
  453. package/dist/client/assets/motion-C9rN_t9p.js +0 -1
  454. package/dist/client/assets/palette-gaqgtube.js +0 -1
  455. package/dist/client/assets/perfInstrumentation-BT27w4tn.js +0 -1
  456. package/dist/client/assets/presentationTier-xlIjcFab.js +0 -1
  457. package/dist/client/assets/primary-CQh_KHGG.js +0 -5
  458. package/dist/client/assets/providerDriverMeta-LJ2vJxm-.js +0 -1
  459. package/dist/client/assets/providerStatus-DBGvvkyF.js +0 -1
  460. package/dist/client/assets/radio-group-BueX1AVO.js +0 -1
  461. package/dist/client/assets/railroad-abnf-HS5TGJTU-B890iayj.js +0 -1
  462. package/dist/client/assets/railroad-ebnf-LZEXJU2U-C079Tzw6.js +0 -1
  463. package/dist/client/assets/railroad-peg-WCYAUIDC-DxvOX5Rh.js +0 -1
  464. package/dist/client/assets/runtime-OM-uAtaj.js +0 -18
  465. package/dist/client/assets/scroll-area-BC-LB_zE.js +0 -1
  466. package/dist/client/assets/separator-yx1r9ZDw.js +0 -1
  467. package/dist/client/assets/settingsLayout-BbjDM-p0.js +0 -1
  468. package/dist/client/assets/sheet-CpEwjOWn.js +0 -1
  469. package/dist/client/assets/sidebar-DayQTDZp.js +0 -1
  470. package/dist/client/assets/sidebarProjectFolders-DXqx3OlZ.js +0 -4
  471. package/dist/client/assets/sidebarStatusText-kdA6QMZS.js +0 -1
  472. package/dist/client/assets/sidebarUndo-BHFfJj0k.js +0 -1
  473. package/dist/client/assets/square-Cd2WS1gv.js +0 -1
  474. package/dist/client/assets/src-DHNjfMxR.js +0 -14
  475. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-BnzsGHaN.js +0 -1
  476. package/dist/client/assets/storeSelectors-D60AAN01.js +0 -1
  477. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-BnA-oDvU.js +0 -8
  478. package/dist/client/assets/switch-D9inWKdd.js +0 -48
  479. package/dist/client/assets/toggle-group-YNqzWsK0.js +0 -1
  480. package/dist/client/assets/toggle-wMq3LLn1.js +0 -1
  481. package/dist/client/assets/tooltip-mwOCSCXF.js +0 -1
  482. package/dist/client/assets/usage-DF8oQrsy.js +0 -1
  483. package/dist/client/assets/useAppSidebarCollapsed-C0jpPtER.js +0 -1
  484. package/dist/client/assets/useAppearancePreference-Dlh9P8iu.js +0 -1
  485. package/dist/client/assets/useBaseUiId-Bz8dcyjd.js +0 -1
  486. package/dist/client/assets/useLabelableId-C8bc9a0F.js +0 -1
  487. package/dist/client/assets/useNavigate-01O5dMQe.js +0 -1
  488. package/dist/client/assets/usePhoneThreadActions-BIdh81kF.js +0 -1
  489. package/dist/client/assets/usePopupViewport-DYYZwfTW.js +0 -1
  490. package/dist/client/assets/usePresentationTier-hxB7Yv_Q.js +0 -1
  491. package/dist/client/assets/useScrollLock-BO185DkJ.js +0 -1
  492. package/dist/client/assets/useTriggerFocusGuards-CMLVr18J.js +0 -1
  493. package/dist/client/assets/useValueChanged-DSyRHPje.js +0 -1
  494. package/dist/client/assets/workspaceMetadataProjection-So9-wSEZ.js +0 -1
  495. package/dist/collectUint8StreamText-BAUF-vzz.mjs +0 -37
  496. package/dist/collectUint8StreamText-vagpNUMJ.cjs +0 -42
  497. package/dist/git-BKwGfw8A.mjs +0 -132
  498. package/dist/git-Dn5wrgFY.cjs +0 -218
  499. package/dist/sourceControl-B0D1Op29.cjs +0 -253
  500. package/dist/sourceControl-BiEBxN01.mjs +0 -224
@@ -280,6 +280,10 @@ const ExecutionEnvironmentCapabilities = Schema.Struct({
280
280
  threadSettlement: Schema.Boolean.pipe(Schema.withDecodingDefault(Effect.succeed(false))),
281
281
  threadPriorityRanking: Schema.Boolean.pipe(Schema.withDecodingDefault(Effect.succeed(false))),
282
282
  worktreeSubmoduleSettings: Schema.optionalKey(Schema.Boolean),
283
+ /** Usage-limit settings and the resume/snooze worker; absent on older servers. */
284
+ usageLimitRecovery: Schema.optionalKey(Schema.Boolean),
285
+ /** Server-owned worktree notes (`notes.list` / `notes.command`); absent on older servers. */
286
+ worktreeNotes: Schema.optionalKey(Schema.Boolean),
283
287
  fileAttachments: Schema.optional(Schema.Struct({ maxUploadBytes: NonNegativeInt }))
284
288
  });
285
289
  const ExecutionEnvironmentDescriptor = Schema.Struct({
@@ -809,6 +813,41 @@ const HubEnrollmentStartResult = Schema.Struct({
809
813
  status: HubConnectorStatus,
810
814
  ...HubEnrollmentCeremonyDetail.fields
811
815
  });
816
+ //#endregion
817
+ //#region ../../packages/contracts/src/hostedIdentity.ts
818
+ const PUBLIC_SIGNUP_START_PATH = "/api/public-signup/start";
819
+ const PUBLIC_SIGNUP_CONFIG_PATH = "/api/public-signup/config";
820
+ const PUBLIC_SIGNUP_VERIFY_PATH = "/api/public-signup/verify";
821
+ const PUBLIC_SIGNUP_PASSKEY_OPTIONS_PATH = "/api/public-signup/passkey/options";
822
+ const PUBLIC_SIGNUP_PASSKEY_FINISH_PATH = "/api/public-signup/passkey/finish";
823
+ const PUBLIC_SIGNUP_PASSWORD_FINISH_PATH = "/api/public-signup/password/finish";
824
+ const PASSWORD_LOGIN_START_PATH = "/api/auth/password/start";
825
+ const PASSWORD_LOGIN_FINISH_PATH = "/api/auth/password/finish";
826
+ const PASSWORD_RESET_REQUEST_PATH = "/api/auth/password-reset/request";
827
+ const PASSWORD_RESET_VERIFY_PATH = "/api/auth/password-reset/verify";
828
+ const PASSWORD_RESET_FINISH_PATH = "/api/auth/password-reset/finish";
829
+ const ACTIVE_SPACE_SWITCH_PATH = "/api/auth/spaces/active";
830
+ const NATIVE_NODE_CLAIM_START_PATH = "/api/native/node-claims/start";
831
+ const NATIVE_NODE_CLAIM_FINISH_PATH = "/api/native/node-claims/finish";
832
+ const NATIVE_IDENTITY_EMAIL_START_PATH = "/api/auth/native/identity/email/start";
833
+ const NATIVE_IDENTITY_EMAIL_VERIFY_PATH = "/api/auth/native/identity/email/verify";
834
+ const NATIVE_IDENTITY_SIGNUP_USERNAME_PATH = "/api/auth/native/identity/signup/username";
835
+ const NATIVE_IDENTITY_SIGNUP_PASSKEY_OPTIONS_PATH = "/api/auth/native/identity/signup/passkey/options";
836
+ const NATIVE_IDENTITY_SIGNUP_PASSKEY_FINISH_PATH = "/api/auth/native/identity/signup/passkey/finish";
837
+ const NATIVE_IDENTITY_SIGNUP_PASSWORD_FINISH_PATH = "/api/auth/native/identity/signup/password/finish";
838
+ const NATIVE_IDENTITY_PASSWORD_START_PATH = "/api/auth/native/identity/password/start";
839
+ const NATIVE_IDENTITY_PASSWORD_FINISH_PATH = "/api/auth/native/identity/password/finish";
840
+ const NATIVE_IDENTITY_RECOVERY_CODE_PATH = "/api/auth/native/identity/recovery-code";
841
+ const NATIVE_IDENTITY_PASSWORD_RESET_REQUEST_PATH = "/api/auth/native/identity/password-reset/request";
842
+ const NATIVE_IDENTITY_PASSWORD_RESET_VERIFY_PATH = "/api/auth/native/identity/password-reset/verify";
843
+ const NATIVE_IDENTITY_PASSWORD_RESET_FINISH_PATH = "/api/auth/native/identity/password-reset/finish";
844
+ const NATIVE_IDENTITY_ATTEMPT_CANCEL_PATH = "/api/auth/native/identity/attempt/cancel";
845
+ const EXTERNAL_IDENTITY_CONFIG_PATH = "/api/auth/external/config";
846
+ const EXTERNAL_IDENTITY_START_PATH = "/api/auth/external/start";
847
+ const EXTERNAL_IDENTITY_PENDING_PATH = "/api/auth/external/pending";
848
+ const EXTERNAL_IDENTITY_SIGNUP_FINISH_PATH = "/api/auth/external/signup/finish";
849
+ const GITHUB_EXTERNAL_IDENTITY_CONNECT_PATH = "/api/account/external-identities/github/connect";
850
+ const GITHUB_EXTERNAL_IDENTITY_DISCONNECT_PATH = "/api/account/external-identities/github/disconnect";
812
851
  const HOSTED_IDENTITY_MAX_ANTI_BOT_ASSERTION_CHARS = 8192;
813
852
  const strict$4 = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
814
853
  const EpochMs$2 = Schema.Int.check(Schema.isGreaterThanOrEqualTo(0));
@@ -852,7 +891,15 @@ const HubUsername = Schema.String.check(Schema.isMinLength(3), Schema.isMaxLengt
852
891
  const HubNormalizedEmail = Schema.String.check(Schema.isMinLength(3), Schema.isMaxLength(254), Schema.isPattern(/^[^\s@]+@[^\s@]+\.[^\s@]+$/), Schema.makeFilter((value) => value === value.trim() && value === value.toLowerCase() ? void 0 : "email must be trimmed lowercase")).pipe(Schema.brand("HubNormalizedEmail"));
853
892
  const HubLoginIdentifier = Schema.Union([HubUsername, HubNormalizedEmail]).pipe(Schema.brand("HubLoginIdentifier"));
854
893
  const PublicSignupTurnstileSiteKey = Schema.String.check(Schema.isMinLength(10), Schema.isMaxLength(128), Schema.isPattern(/^[A-Za-z0-9_-]+$/));
855
- Schema.Union([
894
+ /**
895
+ * Public, cache-bypassed configuration for the signed-out account surface.
896
+ *
897
+ * The Turnstile site key is intentionally public. The secret verification key
898
+ * remains server-only. `bypass` exists solely so the exact browser flow can be
899
+ * qualified against a development Hub without pretending an anti-bot token was
900
+ * produced by Turnstile.
901
+ */
902
+ const PublicSignupConfigResponse = Schema.Union([
856
903
  strict$4(Schema.Struct({ status: Schema.Literal("disabled") })),
857
904
  strict$4(Schema.Struct({
858
905
  status: Schema.Literal("enabled"),
@@ -882,7 +929,7 @@ const ExternalIdentityProviderPolicy = strict$4(Schema.Struct({
882
929
  link: Schema.Literal(true)
883
930
  }));
884
931
  const ExternalIdentityProviders = Schema.Array(ExternalIdentityProviderPolicy).check(Schema.isMaxLength(1), Schema.makeFilter((providers) => new Set(providers.map((provider) => provider.provider)).size === providers.length ? void 0 : "external identity providers must be unique"));
885
- strict$4(Schema.Struct({
932
+ const ExternalIdentityConfigResponse = strict$4(Schema.Struct({
886
933
  version: Schema.Literal(1),
887
934
  providers: ExternalIdentityProviders
888
935
  }));
@@ -902,12 +949,12 @@ const GitHubAuthorizationUrl = Schema.String.check(Schema.isNonEmpty(), Schema.i
902
949
  return "authorization URL must be absolute";
903
950
  }
904
951
  }));
905
- strict$4(Schema.Struct({
952
+ const ExternalIdentityAuthorizationStartRequest = strict$4(Schema.Struct({
906
953
  provider: ExternalIdentityProvider,
907
954
  intent: Schema.Literals(["authenticate", "link"]),
908
955
  returnTo: Schema.optionalKey(ExternalIdentityReturnPath)
909
956
  }));
910
- strict$4(Schema.Struct({
957
+ const ExternalIdentityAuthorizationStartResponse = strict$4(Schema.Struct({
911
958
  authorizationUrl: GitHubAuthorizationUrl,
912
959
  expiresAt: EpochMs$2
913
960
  }));
@@ -921,7 +968,7 @@ const ExternalIdentityPendingErrorCode = Schema.Literals([
921
968
  "signup_disabled",
922
969
  "username_unavailable"
923
970
  ]);
924
- Schema.Union([
971
+ const ExternalIdentityPendingResponse = Schema.Union([
925
972
  strict$4(Schema.Struct({ status: Schema.Literal("none") })),
926
973
  strict$4(Schema.Struct({
927
974
  status: Schema.Literal("signup"),
@@ -941,24 +988,24 @@ Schema.Union([
941
988
  code: ExternalIdentityPendingErrorCode
942
989
  }))
943
990
  ]);
944
- strict$4(Schema.Struct({
991
+ const ExternalIdentitySignupFinishRequest = strict$4(Schema.Struct({
945
992
  provider: ExternalIdentityProvider,
946
993
  username: HubUsername,
947
994
  antiBotAssertion: AntiBotAssertion,
948
995
  idempotencyKey: IdempotencyKey$1
949
996
  }));
950
- strict$4(Schema.Struct({ totpCode: Schema.optionalKey(TotpCode) }));
951
- strict$4(Schema.Struct({
997
+ const BrowserExternalIdentityConnectRequest = strict$4(Schema.Struct({ totpCode: Schema.optionalKey(TotpCode) }));
998
+ const BrowserExternalIdentityConnectResponse = strict$4(Schema.Struct({
952
999
  status: Schema.Literal("connected"),
953
1000
  externalIdentity: ExternalIdentitySummary
954
1001
  }));
955
- strict$4(Schema.Struct({ totpCode: Schema.optionalKey(TotpCode) }));
956
- strict$4(Schema.Struct({
1002
+ const ExternalIdentityDisconnectRequest = strict$4(Schema.Struct({ totpCode: Schema.optionalKey(TotpCode) }));
1003
+ const ExternalIdentityDisconnectResponse = strict$4(Schema.Struct({
957
1004
  status: Schema.Literal("disconnected"),
958
1005
  signedOut: Schema.Boolean
959
1006
  }));
960
1007
  const ExternalIdentitySummaries = Schema.Array(ExternalIdentitySummary).check(Schema.isMaxLength(1), Schema.makeFilter((identities) => new Set(identities.map((identity) => identity.provider)).size === identities.length ? void 0 : "external identity providers must be unique"));
961
- strict$4(Schema.Struct({
1008
+ const HostedAccountSecurityResponse = strict$4(Schema.Struct({
962
1009
  passwordConfigured: Schema.Boolean,
963
1010
  totpEnrolled: Schema.Boolean,
964
1011
  emailDeliveryConfigured: Schema.Boolean,
@@ -1018,11 +1065,11 @@ const NativeIdentityTimedAttempt = {
1018
1065
  attemptSecret: NativeIdentityAttemptSecret,
1019
1066
  resendAfterMs: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(9e5))
1020
1067
  };
1021
- strict$4(Schema.Struct({
1068
+ const NativeIdentityEmailStartRequest = strict$4(Schema.Struct({
1022
1069
  email: HubNormalizedEmail,
1023
1070
  antiBotAssertion: AntiBotAssertion
1024
1071
  }));
1025
- strictTimed({
1072
+ const NativeIdentityEmailStartResponse = strictTimed({
1026
1073
  status: Schema.Literal("accepted"),
1027
1074
  ...NativeIdentityTimedAttempt
1028
1075
  });
@@ -1033,12 +1080,12 @@ const NativeIdentityMailboxProof = Schema.Union([strict$4(Schema.Struct({
1033
1080
  kind: Schema.Literal("email_code"),
1034
1081
  code: EmailCode
1035
1082
  }))]);
1036
- strict$4(Schema.Struct({
1083
+ const NativeIdentityEmailVerifyRequest = strict$4(Schema.Struct({
1037
1084
  attemptId: NativeIdentityAttemptId,
1038
1085
  attemptSecret: NativeIdentityAttemptSecret,
1039
1086
  proof: NativeIdentityMailboxProof
1040
1087
  }));
1041
- Schema.Union([strictTimed({
1088
+ const NativeIdentityEmailVerifyResponse = Schema.Union([strictTimed({
1042
1089
  status: Schema.Literal("existing_account"),
1043
1090
  attemptId: NativeIdentityAttemptId,
1044
1091
  activationSecret: NativeIdentityActivationSecret
@@ -1051,36 +1098,36 @@ const NativeIdentityActivation = {
1051
1098
  attemptId: NativeIdentityAttemptId,
1052
1099
  activationSecret: NativeIdentityActivationSecret
1053
1100
  };
1054
- strict$4(Schema.Struct({
1101
+ const NativeIdentitySignupUsernameRequest = strict$4(Schema.Struct({
1055
1102
  ...NativeIdentityActivation,
1056
1103
  username: HubUsername
1057
1104
  }));
1058
- strict$4(Schema.Struct({ status: Schema.Literal("claimed") }));
1059
- strict$4(Schema.Struct(NativeIdentityActivation));
1060
- strict$4(Schema.Struct({ options: JsonObject }));
1061
- strict$4(Schema.Struct({
1105
+ const NativeIdentitySignupUsernameResponse = strict$4(Schema.Struct({ status: Schema.Literal("claimed") }));
1106
+ const NativeIdentitySignupPasskeyOptionsRequest = strict$4(Schema.Struct(NativeIdentityActivation));
1107
+ const NativeIdentitySignupPasskeyOptionsResponse = strict$4(Schema.Struct({ options: JsonObject }));
1108
+ const NativeIdentitySignupPasskeyFinishRequest = strict$4(Schema.Struct({
1062
1109
  ...NativeIdentityActivation,
1063
1110
  response: JsonObject,
1064
1111
  idempotencyKey: IdempotencyKey$1
1065
1112
  }));
1066
- strict$4(Schema.Struct({
1113
+ const NativeIdentitySignupPasswordFinishRequest = strict$4(Schema.Struct({
1067
1114
  ...NativeIdentityActivation,
1068
1115
  password: BoundedPassword,
1069
1116
  idempotencyKey: IdempotencyKey$1
1070
1117
  }));
1071
- strict$4(Schema.Struct({
1118
+ const NativeIdentitySessionResponse = strict$4(Schema.Struct({
1072
1119
  status: Schema.Literal("complete"),
1073
1120
  identity: HubSessionIdentity,
1074
1121
  token: NativeIdentitySessionToken
1075
1122
  }));
1076
1123
  const NativeIdentityRecoveryCodes = Schema.Array(Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(512))).check(Schema.isMinLength(1), Schema.isMaxLength(256));
1077
- strict$4(Schema.Struct({
1124
+ const NativeIdentitySignupFinishResponse = strict$4(Schema.Struct({
1078
1125
  status: Schema.Literal("complete"),
1079
1126
  identity: HubSessionIdentity,
1080
1127
  token: NativeIdentitySessionToken,
1081
1128
  recoveryCodes: NativeIdentityRecoveryCodes
1082
1129
  }));
1083
- Schema.Union([strict$4(Schema.Struct({
1130
+ const NativeIdentityPasswordStartRequest = Schema.Union([strict$4(Schema.Struct({
1084
1131
  kind: Schema.Literal("username"),
1085
1132
  username: HubUsername,
1086
1133
  password: BoundedPassword,
@@ -1090,13 +1137,13 @@ Schema.Union([strict$4(Schema.Struct({
1090
1137
  ...NativeIdentityActivation,
1091
1138
  password: BoundedPassword
1092
1139
  }))]);
1093
- strictTimed({
1140
+ const NativeIdentityPasswordStartResponse = strictTimed({
1094
1141
  status: Schema.Literal("factor_required"),
1095
1142
  attemptId: NativeIdentityLoginAttemptId,
1096
1143
  attemptSecret: NativeIdentityAttemptSecret,
1097
1144
  factor: Schema.Literals(["totp", "email_code"])
1098
1145
  });
1099
- Schema.Union([strict$4(Schema.Struct({
1146
+ const NativeIdentityPasswordFinishRequest = Schema.Union([strict$4(Schema.Struct({
1100
1147
  attemptId: NativeIdentityLoginAttemptId,
1101
1148
  attemptSecret: NativeIdentityAttemptSecret,
1102
1149
  factor: Schema.Literal("totp"),
@@ -1107,32 +1154,33 @@ Schema.Union([strict$4(Schema.Struct({
1107
1154
  factor: Schema.Literal("email_code"),
1108
1155
  code: EmailCode
1109
1156
  }))]);
1110
- strict$4(Schema.Struct({
1157
+ const NativeIdentityRecoveryCodeRequest = strict$4(Schema.Struct({
1111
1158
  code: Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(512)),
1112
1159
  idempotencyKey: IdempotencyKey$1
1113
1160
  }));
1114
- strict$4(Schema.Struct({
1161
+ const NativeIdentityRecoveryResponse = NativeIdentitySignupFinishResponse;
1162
+ const NativeIdentityPasswordResetRequest = strict$4(Schema.Struct({
1115
1163
  identifier: HubLoginIdentifier,
1116
1164
  antiBotAssertion: Schema.optionalKey(AntiBotAssertion)
1117
1165
  }));
1118
- strictTimed({
1166
+ const NativeIdentityPasswordResetResponse = strictTimed({
1119
1167
  status: Schema.Literal("accepted"),
1120
1168
  attemptId: NativeIdentityResetAttemptId,
1121
1169
  attemptSecret: NativeIdentityAttemptSecret,
1122
1170
  resendAfterMs: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(9e5))
1123
1171
  });
1124
- strict$4(Schema.Struct({
1172
+ const NativeIdentityPasswordResetVerifyRequest = strict$4(Schema.Struct({
1125
1173
  attemptId: NativeIdentityResetAttemptId,
1126
1174
  attemptSecret: NativeIdentityAttemptSecret,
1127
1175
  proof: NativeIdentityMailboxProof
1128
1176
  }));
1129
- strictTimed({
1177
+ const NativeIdentityPasswordResetVerifyResponse = strictTimed({
1130
1178
  status: Schema.Literal("verified"),
1131
1179
  attemptId: NativeIdentityResetAttemptId,
1132
1180
  resetSecret: NativeIdentityResetSecret,
1133
1181
  requiresTotp: Schema.Boolean
1134
1182
  });
1135
- strict$4(Schema.Struct({
1183
+ const NativeIdentityPasswordResetFinishRequest = strict$4(Schema.Struct({
1136
1184
  attemptId: NativeIdentityResetAttemptId,
1137
1185
  resetSecret: NativeIdentityResetSecret,
1138
1186
  password: BoundedPassword,
@@ -1141,8 +1189,8 @@ strict$4(Schema.Struct({
1141
1189
  code: TotpCode
1142
1190
  }))])
1143
1191
  }));
1144
- strict$4(Schema.Struct({ status: Schema.Literal("complete") }));
1145
- strict$4(Schema.Struct({
1192
+ const NativeIdentityPasswordResetFinishResponse = strict$4(Schema.Struct({ status: Schema.Literal("complete") }));
1193
+ const NativeIdentityAttemptCancelRequest = strict$4(Schema.Struct({
1146
1194
  attemptId: Schema.Union([
1147
1195
  NativeIdentityAttemptId,
1148
1196
  NativeIdentityLoginAttemptId,
@@ -1150,15 +1198,15 @@ strict$4(Schema.Struct({
1150
1198
  ]),
1151
1199
  attemptSecret: Schema.Union([NativeIdentityAttemptSecret, NativeIdentityActivationSecret])
1152
1200
  }));
1153
- strict$4(Schema.Struct({ status: Schema.Literal("cancelled") }));
1201
+ const NativeIdentityAttemptCancelResponse = strict$4(Schema.Struct({ status: Schema.Literal("cancelled") }));
1154
1202
  const PublicSignupAttemptId = Schema.String.check(Schema.isPattern(/^signup_[A-Za-z0-9_-]{22,43}$/), Schema.isMaxLength(50)).pipe(Schema.brand("PublicSignupAttemptId"));
1155
- strict$4(Schema.Struct({
1203
+ const PublicSignupStartRequest = strict$4(Schema.Struct({
1156
1204
  username: HubUsername,
1157
1205
  email: HubNormalizedEmail,
1158
1206
  antiBotAssertion: AntiBotAssertion,
1159
1207
  invitationToken: Schema.optional(MailToken)
1160
1208
  }));
1161
- strictTimed({
1209
+ const PublicSignupStartResponse = strictTimed({
1162
1210
  status: Schema.Literal("accepted"),
1163
1211
  attemptId: PublicSignupAttemptId,
1164
1212
  attemptSecret: SignupAttemptSecret,
@@ -1171,12 +1219,12 @@ const PublicSignupMailboxProof = Schema.Union([strict$4(Schema.Struct({
1171
1219
  kind: Schema.Literal("email_code"),
1172
1220
  code: EmailCode
1173
1221
  }))]);
1174
- strict$4(Schema.Struct({
1222
+ const PublicSignupVerifyRequest = strict$4(Schema.Struct({
1175
1223
  attemptId: PublicSignupAttemptId,
1176
1224
  attemptSecret: SignupAttemptSecret,
1177
1225
  proof: PublicSignupMailboxProof
1178
1226
  }));
1179
- strictTimed({
1227
+ const PublicSignupVerifyResponse = strictTimed({
1180
1228
  status: Schema.Literal("verified"),
1181
1229
  attemptId: PublicSignupAttemptId,
1182
1230
  activationSecret: SignupActivationSecret
@@ -1185,37 +1233,38 @@ const PublicSignupActivation = {
1185
1233
  attemptId: PublicSignupAttemptId,
1186
1234
  activationSecret: SignupActivationSecret
1187
1235
  };
1188
- strict$4(Schema.Struct(PublicSignupActivation));
1189
- strict$4(Schema.Struct({ options: JsonObject }));
1190
- strict$4(Schema.Struct({
1236
+ const PublicSignupPasskeyOptionsRequest = strict$4(Schema.Struct(PublicSignupActivation));
1237
+ const PublicSignupPasskeyOptionsResponse = strict$4(Schema.Struct({ options: JsonObject }));
1238
+ const PublicSignupPasskeyFinishRequest = strict$4(Schema.Struct({
1191
1239
  ...PublicSignupActivation,
1192
1240
  response: JsonObject,
1193
1241
  idempotencyKey: IdempotencyKey$1
1194
1242
  }));
1195
- strict$4(Schema.Struct({
1243
+ const PublicSignupPasswordFinishRequest = strict$4(Schema.Struct({
1196
1244
  ...PublicSignupActivation,
1197
1245
  password: BoundedPassword,
1198
1246
  idempotencyKey: IdempotencyKey$1
1199
1247
  }));
1200
- strict$4(Schema.Struct({
1248
+ const PublicSignupFinishResponse = strict$4(Schema.Struct({
1201
1249
  status: Schema.Literal("complete"),
1202
1250
  identity: HubBrowserSessionResponse,
1203
1251
  recoveryCodes: Schema.Array(Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(512))).check(Schema.isMinLength(1), Schema.isMaxLength(256))
1204
1252
  }));
1253
+ const ExternalIdentitySignupFinishResponse = PublicSignupFinishResponse;
1205
1254
  const PasswordLoginAttemptId = Schema.String.check(Schema.isPattern(/^login_[A-Za-z0-9_-]{22,43}$/), Schema.isMaxLength(49)).pipe(Schema.brand("PasswordLoginAttemptId"));
1206
1255
  const PasswordLoginFactor = Schema.Literals(["totp", "email_code"]);
1207
- strict$4(Schema.Struct({
1256
+ const PasswordLoginStartRequest = strict$4(Schema.Struct({
1208
1257
  identifier: HubLoginIdentifier,
1209
1258
  password: BoundedPassword,
1210
1259
  antiBotAssertion: Schema.optional(AntiBotAssertion)
1211
1260
  }));
1212
- strictTimed({
1261
+ const PasswordLoginStartResponse = strictTimed({
1213
1262
  status: Schema.Literal("factor_required"),
1214
1263
  attemptId: PasswordLoginAttemptId,
1215
1264
  attemptSecret: PasswordLoginAttemptSecret,
1216
1265
  factor: PasswordLoginFactor
1217
1266
  });
1218
- Schema.Union([strict$4(Schema.Struct({
1267
+ const PasswordLoginFinishRequest = Schema.Union([strict$4(Schema.Struct({
1219
1268
  attemptId: PasswordLoginAttemptId,
1220
1269
  attemptSecret: PasswordLoginAttemptSecret,
1221
1270
  factor: Schema.Literal("totp"),
@@ -1226,14 +1275,14 @@ Schema.Union([strict$4(Schema.Struct({
1226
1275
  factor: Schema.Literal("email_code"),
1227
1276
  code: EmailCode
1228
1277
  }))]);
1229
- strict$4(Schema.Struct({
1278
+ const PasswordResetRequest = strict$4(Schema.Struct({
1230
1279
  identifier: HubLoginIdentifier,
1231
1280
  antiBotAssertion: Schema.optional(AntiBotAssertion)
1232
1281
  }));
1233
- strict$4(Schema.Struct({ status: Schema.Literal("accepted") }));
1282
+ const PasswordResetRequestResponse = strict$4(Schema.Struct({ status: Schema.Literal("accepted") }));
1234
1283
  const PasswordResetAttemptId = Schema.String.check(Schema.isPattern(/^reset_[A-Za-z0-9_-]{22,43}$/), Schema.isMaxLength(49)).pipe(Schema.brand("PasswordResetAttemptId"));
1235
- strict$4(Schema.Struct({ token: MailToken }));
1236
- strictTimed({
1284
+ const PasswordResetVerifyRequest = strict$4(Schema.Struct({ token: MailToken }));
1285
+ const PasswordResetVerifyResponse = strictTimed({
1237
1286
  status: Schema.Literal("verified"),
1238
1287
  attemptId: PasswordResetAttemptId,
1239
1288
  attemptSecret: PasswordResetAttemptSecret,
@@ -1243,15 +1292,15 @@ const PasswordResetFactor = Schema.Union([strict$4(Schema.Struct({ kind: Schema.
1243
1292
  kind: Schema.Literal("totp"),
1244
1293
  code: TotpCode
1245
1294
  }))]);
1246
- strict$4(Schema.Struct({
1295
+ const PasswordResetFinishRequest = strict$4(Schema.Struct({
1247
1296
  attemptId: PasswordResetAttemptId,
1248
1297
  attemptSecret: PasswordResetAttemptSecret,
1249
1298
  password: BoundedPassword,
1250
1299
  factor: PasswordResetFactor
1251
1300
  }));
1252
- strict$4(Schema.Struct({ status: Schema.Literal("complete") }));
1253
- strict$4(Schema.Struct({ spaceId: HubSpaceId }));
1254
- strict$4(Schema.Struct({
1301
+ const PasswordResetFinishResponse = strict$4(Schema.Struct({ status: Schema.Literal("complete") }));
1302
+ const ActiveSpaceSwitchRequest = strict$4(Schema.Struct({ spaceId: HubSpaceId }));
1303
+ const ActiveSpaceSwitchResponse = strict$4(Schema.Struct({
1255
1304
  activeSpace: HubActiveSpaceSummary,
1256
1305
  spaces: HubSpaces
1257
1306
  }).check(Schema.makeFilter((value) => {
@@ -1282,7 +1331,7 @@ const NativeNodeClaimMetadata = strict$4(Schema.Struct({
1282
1331
  publicKey: NativeNodeClaimPublicKey,
1283
1332
  fingerprint: HubNodePublicKeyFingerprint
1284
1333
  }));
1285
- strict$4(Schema.Struct({
1334
+ const NativeNodeClaimStartRequest = strict$4(Schema.Struct({
1286
1335
  installationId: DesktopInstallationId,
1287
1336
  node: NativeNodeClaimMetadata
1288
1337
  }));
@@ -1299,7 +1348,7 @@ const NativeNodeClaimStartResponse = strictTimed({
1299
1348
  environmentId: NativeNodeClaimEnvironmentId,
1300
1349
  nodeFingerprint: HubNodePublicKeyFingerprint
1301
1350
  });
1302
- strict$4(Schema.Struct({
1351
+ const NativeNodeClaimFinishRequest = strict$4(Schema.Struct({
1303
1352
  claimId: NativeNodeClaimId,
1304
1353
  challenge: Opaque256,
1305
1354
  signature: Schema.String.check(Schema.isMinLength(86), Schema.isMaxLength(86), Schema.isPattern(/^[A-Za-z0-9_-]{85}[AQgw]$/)),
@@ -1326,11 +1375,18 @@ Schema.Union([strict$4(Schema.Struct({
1326
1375
  retryAfterMs: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(3e5)))
1327
1376
  }))]);
1328
1377
  const NATIVE_HANDOFF_MODE = "system-browser";
1378
+ const NATIVE_HANDOFF_START_PATH = "/api/auth/native/handoff/start";
1379
+ const NATIVE_HANDOFF_REDEEM_PATH = "/api/auth/native/handoff/redeem";
1380
+ const NATIVE_HANDOFF_PRESENTATION_PATH_PREFIX = "/api/auth/native/handoff/";
1381
+ const NATIVE_HANDOFF_APPROVE_PATH_SUFFIX = "/approve";
1382
+ const NATIVE_HANDOFF_CANCEL_PATH_SUFFIX = "/cancel";
1329
1383
  const NATIVE_HANDOFF_CALLBACK_URIS = [
1330
1384
  "ryco-dev://hosted/complete",
1331
1385
  "ryco-preview://hosted/complete",
1332
1386
  "ryco://hosted/complete"
1333
1387
  ];
1388
+ const NATIVE_HANDOFF_TRANSACTION_LIFETIME_MS = 3e5;
1389
+ const NATIVE_HANDOFF_CODE_LIFETIME_MS = 6e4;
1334
1390
  const NATIVE_HANDOFF_MAX_URL_CHARS = 2048;
1335
1391
  const strict$3 = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
1336
1392
  const Base64Url256$1 = Schema.String.check(Schema.isMinLength(43), Schema.isMaxLength(43), Schema.isPattern(/^[A-Za-z0-9_-]{43}$/));
@@ -1445,7 +1501,7 @@ const NativeHandoffConnectExternalIdentityPurpose = strict$3(Schema.Struct({
1445
1501
  provider: ExternalIdentityProvider
1446
1502
  }));
1447
1503
  const NativeHandoffPurpose = Schema.Union([NativeHandoffSignInPurpose, NativeHandoffConnectExternalIdentityPurpose]);
1448
- strict$3(Schema.Struct({
1504
+ const NativeHandoffStartRequest = strict$3(Schema.Struct({
1449
1505
  redirectUri: NativeHandoffCallbackUri,
1450
1506
  codeChallenge: NativeHandoffCodeChallenge,
1451
1507
  codeChallengeMethod: Schema.Literal("S256"),
@@ -1453,25 +1509,25 @@ strict$3(Schema.Struct({
1453
1509
  deviceLabel: BoundedDeviceLabel,
1454
1510
  purpose: Schema.optionalKey(NativeHandoffPurpose)
1455
1511
  }));
1456
- strict$3(Schema.Struct({
1512
+ const NativeHandoffStartResponse = strict$3(Schema.Struct({
1457
1513
  handoffId: NativeHandoffId,
1458
1514
  authorizationUrl: AuthorizationUrl,
1459
1515
  expiresAt: EpochMs$1
1460
1516
  }));
1461
- strict$3(Schema.Struct({
1517
+ const NativeHandoffPresentation = strict$3(Schema.Struct({
1462
1518
  status: Schema.Literal("pending"),
1463
1519
  deviceLabel: BoundedDeviceLabel,
1464
1520
  expiresAt: EpochMs$1,
1465
1521
  providerHint: Schema.optionalKey(ExternalIdentityProvider)
1466
1522
  }));
1467
- strict$3(Schema.Struct({ redirectUri: ApprovedCallbackUrl }));
1468
- strict$3(Schema.Struct({ redirectUri: CancelledCallbackUrl }));
1469
- strict$3(Schema.Struct({
1523
+ const NativeHandoffApproveResponse = strict$3(Schema.Struct({ redirectUri: ApprovedCallbackUrl }));
1524
+ const NativeHandoffCancelResponse = strict$3(Schema.Struct({ redirectUri: CancelledCallbackUrl }));
1525
+ const NativeHandoffRedeemRequest = strict$3(Schema.Struct({
1470
1526
  handoffId: NativeHandoffId,
1471
1527
  code: NativeHandoffCode,
1472
1528
  codeVerifier: NativeHandoffCodeVerifier
1473
1529
  }));
1474
- strict$3(Schema.Struct({
1530
+ const NativeHandoffConnectRedeemRequest = strict$3(Schema.Struct({
1475
1531
  handoffId: NativeHandoffId,
1476
1532
  code: NativeHandoffCode,
1477
1533
  codeVerifier: NativeHandoffCodeVerifier,
@@ -1506,16 +1562,21 @@ const NativeHandoffSession = strict$3(Schema.Struct({
1506
1562
  revokedAt: Schema.Null,
1507
1563
  revocationReasonCode: Schema.Null
1508
1564
  }).check(Schema.makeFilter((session) => session.expiresAt > session.createdAt && session.lastSeenAt >= session.createdAt && session.lastSeenAt <= session.expiresAt ? void 0 : "native session timestamps are inconsistent")));
1509
- strict$3(Schema.Struct({
1565
+ const NativeHandoffRedeemResponse = strict$3(Schema.Struct({
1510
1566
  account: NativeHandoffAccount,
1511
1567
  session: NativeHandoffSession,
1512
1568
  token: Base64Url256$1
1513
1569
  }).check(Schema.makeFilter((value) => value.session.accountId === value.account.id ? void 0 : "native session account does not match")));
1514
- strict$3(Schema.Struct({
1570
+ const NativeHandoffConnectRedeemResponse = strict$3(Schema.Struct({
1515
1571
  status: Schema.Literal("connected"),
1516
1572
  purpose: NativeHandoffConnectExternalIdentityPurpose,
1517
1573
  externalIdentity: ExternalIdentitySummary
1518
1574
  }));
1575
+ const NATIVE_E2EE_CURRENT_DEVICE_PATH = "/api/native/e2ee/devices/current";
1576
+ const NATIVE_E2EE_GRANT_KEYS_PATH = "/api/native/e2ee/grant-keys";
1577
+ const NATIVE_ACCOUNT_GRANT_RELAY_TICKET_PATH = "/api/native/relay/tickets/account-grant";
1578
+ const ACCOUNT_E2EE_DEVICES_PATH = "/api/account/e2ee/devices";
1579
+ const ACCOUNT_E2EE_DEVICE_PATH_PREFIX = "/api/account/e2ee/devices";
1519
1580
  const NATIVE_E2EE_MAX_GRANT_KEYS = 4;
1520
1581
  const HUB_DEVICE_GRANT_MAX_BYTES = 2048;
1521
1582
  const HUB_DEVICE_GRANT_BASE64URL_MAX_CHARS = 2731;
@@ -1612,7 +1673,7 @@ const HubDeviceGrantClaims = strict$2(Schema.Struct({
1612
1673
  expiresAt: EpochMs,
1613
1674
  nonce: ExactBytes(32)
1614
1675
  }).check(Schema.makeFilter((claims) => claims.notBefore <= claims.issuedAt && claims.issuedAt < claims.expiresAt && claims.expiresAt - claims.issuedAt <= 12e4 ? void 0 : "invalid grant validity interval")));
1615
- strict$2(Schema.Struct({
1676
+ const NativeE2eeEnrollmentUpsertRequest = strict$2(Schema.Struct({
1616
1677
  protocolVersion: Schema.Literal(1),
1617
1678
  hubOrigin: HubOrigin,
1618
1679
  accountId: HubAccountId,
@@ -1659,23 +1720,23 @@ const AccountE2eeDeviceSummary = strict$2(Schema.Struct({
1659
1720
  if (device.status === "active" && device.revokedAt !== null) return "active enrollment cannot have revokedAt";
1660
1721
  if (device.status !== "active" && device.revokedAt === null) return "inactive enrollment requires revokedAt";
1661
1722
  })));
1662
- strict$2(Schema.Struct({
1723
+ const NativeE2eeEnrollmentUpsertResponse = strict$2(Schema.Struct({
1663
1724
  protocolVersion: Schema.Literal(1),
1664
1725
  enrollment: AccountE2eeDeviceSummary
1665
1726
  }));
1666
- strict$2(Schema.Struct({
1727
+ const AccountE2eeDeviceListResponse = strict$2(Schema.Struct({
1667
1728
  protocolVersion: Schema.Literal(1),
1668
1729
  devices: Schema.Array(AccountE2eeDeviceSummary).check(Schema.isMaxLength(128), Schema.makeFilter((devices) => new Set(devices.map((device) => `${device.enrollmentId}:${device.enrollmentRevision}`)).size === devices.length ? void 0 : "device enrollment revisions must be distinct"))
1669
1730
  }));
1670
- strict$2(Schema.Struct({
1731
+ const AccountE2eeDeviceRenameRequest = strict$2(Schema.Struct({
1671
1732
  expectedEnrollmentRevision: NativeE2eeEnrollmentRevision,
1672
1733
  deviceLabel: DeviceLabel
1673
1734
  }));
1674
- strict$2(Schema.Struct({
1735
+ const AccountE2eeDeviceRevokeRequest = strict$2(Schema.Struct({
1675
1736
  expectedEnrollmentRevision: NativeE2eeEnrollmentRevision,
1676
1737
  reasonCode: ReasonCode
1677
1738
  }));
1678
- strict$2(Schema.Struct({
1739
+ const AccountE2eeDeviceMutationResponse = strict$2(Schema.Struct({
1679
1740
  protocolVersion: Schema.Literal(1),
1680
1741
  enrollment: AccountE2eeDeviceSummary
1681
1742
  }));
@@ -1686,12 +1747,12 @@ const HubGrantVerificationKey = strict$2(Schema.Struct({
1686
1747
  notAfter: EpochMs
1687
1748
  }).check(Schema.makeFilter((key) => key.notAfter > key.notBefore ? void 0 : "notAfter must be after notBefore")));
1688
1749
  const HubGrantVerificationKeys = Schema.Array(HubGrantVerificationKey).check(Schema.isMinLength(1), Schema.isMaxLength(NATIVE_E2EE_MAX_GRANT_KEYS), Schema.makeFilter((keys) => new Set(keys.map((key) => key.keyId)).size === keys.length ? void 0 : "grant verification key ids must be distinct"));
1689
- strict$2(Schema.Struct({
1750
+ const HubGrantVerificationKeysetResponse = strict$2(Schema.Struct({
1690
1751
  protocolVersion: Schema.Literal(1),
1691
1752
  generation: E2eeKeysetGeneration,
1692
1753
  keys: HubGrantVerificationKeys
1693
1754
  }));
1694
- strict$2(Schema.Struct({
1755
+ const NativeAccountGrantRelayTicketRequest = strict$2(Schema.Struct({
1695
1756
  protocolVersion: Schema.Literal(1),
1696
1757
  nodeId: RelayNodeId,
1697
1758
  capability: RelayCapability,
@@ -1702,7 +1763,7 @@ strict$2(Schema.Struct({
1702
1763
  enrollmentRevision: NativeE2eeEnrollmentRevision,
1703
1764
  clientPrekeyCertificateDigest: Base64Url32
1704
1765
  }));
1705
- strict$2(Schema.Struct({
1766
+ const NativeAccountGrantRelayTicketResponse = strict$2(Schema.Struct({
1706
1767
  protocolVersion: Schema.Literal(1),
1707
1768
  ticket: Base64Url(43, 86),
1708
1769
  ticketId: RelayTicketId,
@@ -1770,6 +1831,12 @@ const DESKTOP_NATIVE_NODE_CLAIM_DESCRIPTOR_PATH = "/api/desktop/hub/native-node-
1770
1831
  const DESKTOP_NATIVE_NODE_CLAIM_SIGN_PATH = "/api/desktop/hub/native-node-claim/sign";
1771
1832
  const DESKTOP_NATIVE_NODE_CLAIM_COMMIT_PATH = "/api/desktop/hub/native-node-claim/commit";
1772
1833
  const DESKTOP_NATIVE_NODE_CLAIM_MAX_BODY_BYTES = 16384;
1834
+ /**
1835
+ * Desktop main asks its own backend, over the same per-child local control
1836
+ * channel, whether other devices can reach this node through the Hub, to keep
1837
+ * the machine awake only while they can.
1838
+ */
1839
+ const DESKTOP_HUB_REACHABILITY_PATH = "/api/desktop/hub/reachability";
1773
1840
  const strict = (schema) => schema.annotate({ parseOptions: { onExcessProperty: "error" } });
1774
1841
  strict(Schema.Struct({
1775
1842
  protocolVersion: Schema.Literal(1),
@@ -1807,6 +1874,15 @@ strict(Schema.Struct({
1807
1874
  status: Schema.Literal("active"),
1808
1875
  result: NativeNodeClaimFinishResponse
1809
1876
  }));
1877
+ strict(Schema.Struct({
1878
+ protocolVersion: Schema.Literal(1),
1879
+ reachable: Schema.Boolean,
1880
+ /**
1881
+ * Whether the backend runs its connector at all. A standby launch can
1882
+ * resolve to off, which only a relaunch with an explicit enable changes.
1883
+ */
1884
+ connectorEnabled: Schema.Boolean
1885
+ }));
1810
1886
  strict(Schema.Struct({ error: Schema.Literals([
1811
1887
  "native_node_claim_unavailable",
1812
1888
  "native_node_claim_rejected",
@@ -2494,6 +2570,14 @@ const MODEL_SLUG_ALIASES_BY_PROVIDER = {
2494
2570
  [GROK_DRIVER_KIND]: {},
2495
2571
  [OPENCODE_DRIVER_KIND]: {}
2496
2572
  };
2573
+ const PROVIDER_DISPLAY_NAMES = {
2574
+ [CODEX_DRIVER_KIND]: "Codex",
2575
+ [CLAUDE_DRIVER_KIND]: "Claude",
2576
+ [COPILOT_DRIVER_KIND]: "GitHub Copilot",
2577
+ [CURSOR_DRIVER_KIND]: "Cursor",
2578
+ [GROK_DRIVER_KIND]: "Grok",
2579
+ [OPENCODE_DRIVER_KIND]: "OpenCode"
2580
+ };
2497
2581
  const ThreadPriorityTier = Schema.Literals([
2498
2582
  "now",
2499
2583
  "soon",
@@ -2700,13 +2784,67 @@ const SourceControlCheckRollupItem = Schema.Struct({
2700
2784
  conclusion: Schema.Option(TrimmedNonEmptyString),
2701
2785
  url: Schema.Option(TrimmedNonEmptyString),
2702
2786
  startedAt: Schema.Option(Schema.DateTimeUtc),
2703
- completedAt: Schema.Option(Schema.DateTimeUtc)
2787
+ completedAt: Schema.Option(Schema.DateTimeUtc),
2788
+ /**
2789
+ * The base branch's protection requires this check to pass before merging.
2790
+ * Absent when the host did not say (list rows, hosts without the concept,
2791
+ * or a failed lookup), which is not the same as `false`.
2792
+ */
2793
+ isRequired: Schema.optional(Schema.Boolean)
2704
2794
  });
2705
2795
  const SourceControlLabel = Schema.Struct({
2706
2796
  name: TrimmedNonEmptyString,
2707
2797
  color: Schema.optional(TrimmedNonEmptyString),
2708
2798
  description: Schema.optional(TrimmedNonEmptyString)
2709
2799
  });
2800
+ /** Aggregate review verdict as reported by the host (GitHub `reviewDecision`). */
2801
+ const SourceControlChangeRequestReviewDecision = Schema.Literals([
2802
+ "approved",
2803
+ "changes_requested",
2804
+ "review_required"
2805
+ ]);
2806
+ /**
2807
+ * Why a change request can or cannot merge right now (GitHub `mergeStateStatus`,
2808
+ * lower-cased). `behind` means the head needs the base merged in; `blocked`
2809
+ * means required reviews or checks are missing; `dirty` means conflicts.
2810
+ */
2811
+ const SourceControlChangeRequestMergeStateStatus = Schema.Literals([
2812
+ "behind",
2813
+ "blocked",
2814
+ "clean",
2815
+ "dirty",
2816
+ "draft",
2817
+ "has_hooks",
2818
+ "unknown",
2819
+ "unstable"
2820
+ ]);
2821
+ /** One reviewer's latest standing on a change request. `requested` = asked, not yet reviewed. */
2822
+ const SourceControlChangeRequestReviewerState = Schema.Literals([
2823
+ "approved",
2824
+ "changes_requested",
2825
+ "commented",
2826
+ "dismissed",
2827
+ "requested"
2828
+ ]);
2829
+ const SourceControlChangeRequestReviewer = Schema.Struct({
2830
+ /** User login, or `org/team-slug` for team review requests. */
2831
+ login: TrimmedNonEmptyString,
2832
+ kind: Schema.Literals([
2833
+ "user",
2834
+ "team",
2835
+ "bot"
2836
+ ]),
2837
+ state: SourceControlChangeRequestReviewerState,
2838
+ avatarUrl: Schema.optional(Schema.String),
2839
+ submittedAt: Schema.optional(Schema.DateTimeUtc),
2840
+ /** True when the request came from CODEOWNERS. */
2841
+ isCodeOwner: Schema.optional(Schema.Boolean)
2842
+ });
2843
+ const SourceControlChangeRequestAutoMerge = Schema.Struct({
2844
+ mergeMethod: SourceControlChangeRequestMergeMethod,
2845
+ enabledBy: Schema.optional(TrimmedNonEmptyString),
2846
+ enabledAt: Schema.optional(Schema.DateTimeUtc)
2847
+ });
2710
2848
  const ChangeRequest = Schema.Struct({
2711
2849
  provider: SourceControlProviderKind,
2712
2850
  number: PositiveInt,
@@ -2726,8 +2864,20 @@ const ChangeRequest = Schema.Struct({
2726
2864
  headRepositoryOwnerLogin: Schema.optional(Schema.NullOr(TrimmedNonEmptyString)),
2727
2865
  headSha: Schema.optional(TrimmedNonEmptyString),
2728
2866
  mergeability: Schema.optional(SourceControlChangeRequestMergeability),
2867
+ /**
2868
+ * Why it can or cannot merge right now. Always on the detail where the host
2869
+ * reports readiness; on list rows only where the list payload carries it
2870
+ * (GitLab's `detailed_merge_status`).
2871
+ */
2872
+ mergeStateStatus: Schema.optional(SourceControlChangeRequestMergeStateStatus),
2729
2873
  checkRollup: Schema.optional(Schema.Array(SourceControlCheckRollupItem)),
2730
- stackSummary: Schema.optional(SourceControlChangeRequestStackSummary)
2874
+ stackSummary: Schema.optional(SourceControlChangeRequestStackSummary),
2875
+ createdAt: Schema.optional(Schema.DateTimeUtc),
2876
+ reviewDecision: Schema.optional(Schema.NullOr(SourceControlChangeRequestReviewDecision)),
2877
+ additions: Schema.optional(NonNegativeInt),
2878
+ deletions: Schema.optional(NonNegativeInt),
2879
+ /** Files touched (list rows waiting on the viewer's review show it). */
2880
+ changedFiles: Schema.optional(NonNegativeInt)
2731
2881
  });
2732
2882
  const SOURCE_CONTROL_DETAIL_BODY_MAX_BYTES = 8192;
2733
2883
  const SOURCE_CONTROL_DETAIL_COMMENT_BODY_MAX_BYTES = 2048;
@@ -2812,11 +2962,11 @@ const SourceControlCreateIssueInput = Schema.Struct({
2812
2962
  assignees: Schema.optional(Schema.Array(TrimmedNonEmptyString)),
2813
2963
  worktree: Schema.optional(SourceControlCreateIssueWorktree)
2814
2964
  });
2815
- const NonBlankMarkdownBody = Schema.String.check(Schema.makeFilter((body) => body.trim().length > 0 ? void 0 : "Expected a non-blank Markdown body"));
2965
+ const NonBlankMarkdownBody$1 = Schema.String.check(Schema.makeFilter((body) => body.trim().length > 0 ? void 0 : "Expected a non-blank Markdown body"));
2816
2966
  const SourceControlAddIssueCommentInput = Schema.Struct({
2817
2967
  cwd: TrimmedNonEmptyString,
2818
2968
  reference: TrimmedNonEmptyString,
2819
- body: NonBlankMarkdownBody,
2969
+ body: NonBlankMarkdownBody$1,
2820
2970
  clientMutationId: Schema.optional(TrimmedNonEmptyString)
2821
2971
  });
2822
2972
  const SourceControlAddIssueCommentResult = Schema.Struct({ detail: SourceControlIssueDetail });
@@ -2862,12 +3012,24 @@ const SourceControlChangeRequestDetail = Schema.Struct({
2862
3012
  files: Schema.optional(Schema.Array(SourceControlChangeRequestFile)),
2863
3013
  stack: Schema.optional(SourceControlChangeRequestStack),
2864
3014
  stackMetadataIncomplete: Schema.optional(Schema.Boolean),
2865
- mergeCapabilities: Schema.optional(SourceControlChangeRequestMergeCapabilities)
3015
+ mergeCapabilities: Schema.optional(SourceControlChangeRequestMergeCapabilities),
3016
+ /** Per-reviewer latest state, including pending (requested) reviewers. */
3017
+ reviewerStates: Schema.optional(Schema.Array(SourceControlChangeRequestReviewer)),
3018
+ autoMerge: Schema.optional(Schema.NullOr(SourceControlChangeRequestAutoMerge)),
3019
+ closedAt: Schema.optional(Schema.DateTimeUtc),
3020
+ mergedAt: Schema.optional(Schema.DateTimeUtc),
3021
+ mergedBy: Schema.optional(TrimmedNonEmptyString),
3022
+ /** True when the host deletes the head branch automatically after merge. */
3023
+ deleteBranchOnMerge: Schema.optional(Schema.Boolean)
2866
3024
  });
2867
3025
  const SourceControlMergeChangeRequestInput = Schema.Struct({
2868
3026
  cwd: TrimmedNonEmptyString,
2869
3027
  reference: TrimmedNonEmptyString,
2870
- mergeMethod: SourceControlChangeRequestMergeMethod
3028
+ mergeMethod: SourceControlChangeRequestMergeMethod,
3029
+ /** Delete the head branch after a successful (non-queued) merge. */
3030
+ deleteBranch: Schema.optional(Schema.Boolean),
3031
+ /** Refuse to merge when the head moved since the user looked. */
3032
+ expectedHeadSha: Schema.optional(TrimmedNonEmptyString)
2871
3033
  });
2872
3034
  const SourceControlMergeChangeRequestResult = Schema.Struct({ outcome: Schema.Literals(["merged", "enqueued"]) });
2873
3035
  const SOURCE_CONTROL_WORKFLOW_LOG_MAX_BYTES = 204800;
@@ -2884,6 +3046,12 @@ const SourceControlWorkflowRun = Schema.Struct({
2884
3046
  branch: Schema.Option(TrimmedNonEmptyString),
2885
3047
  event: Schema.optional(TrimmedNonEmptyString),
2886
3048
  commit: SourceControlWorkflowRunCommit,
3049
+ /**
3050
+ * The change request head this run verifies when `commit` is not the head
3051
+ * itself but a merge of it into the target (GitLab merged-results and
3052
+ * merge-train pipelines). Absent when the run is on the head commit.
3053
+ */
3054
+ sourceHeadOid: Schema.optional(TrimmedNonEmptyString),
2887
3055
  actor: Schema.Option(TrimmedNonEmptyString),
2888
3056
  status: TrimmedNonEmptyString,
2889
3057
  conclusion: Schema.Option(TrimmedNonEmptyString),
@@ -2972,7 +3140,7 @@ const SourceControlWorkflowRerunResult = Schema.Struct({
2972
3140
  const SourceControlAddChangeRequestCommentInput = Schema.Struct({
2973
3141
  cwd: TrimmedNonEmptyString,
2974
3142
  reference: TrimmedNonEmptyString,
2975
- body: NonBlankMarkdownBody,
3143
+ body: NonBlankMarkdownBody$1,
2976
3144
  clientMutationId: Schema.optional(TrimmedNonEmptyString)
2977
3145
  });
2978
3146
  const SourceControlAddChangeRequestCommentResult = Schema.Struct({ detail: SourceControlChangeRequestDetail });
@@ -3449,6 +3617,8 @@ const StatusBucket = Schema.Literals([
3449
3617
  "done"
3450
3618
  ]);
3451
3619
  const WorktreeCheckoutLocation = Schema.Literals(["appManaged", "projectMetadata"]);
3620
+ /** Why a workspace record no longer has a checkout: removed by Ryco, or found missing. */
3621
+ const WorktreeCheckoutRemovalReason = Schema.Literals(["removed", "missing"]);
3452
3622
  const Worktree = Schema.Struct({
3453
3623
  worktreeId: WorktreeId,
3454
3624
  projectId: ProjectId,
@@ -3463,6 +3633,12 @@ const Worktree = Schema.Struct({
3463
3633
  prState: Schema.optional(Schema.NullOr(PullRequestState)).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
3464
3634
  prIsDraft: Schema.optional(Schema.NullOr(Schema.Boolean)).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
3465
3635
  issueState: Schema.optional(Schema.NullOr(IssueState)).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
3636
+ /**
3637
+ * When the PR reached its current merged/closed state (forge time, else first
3638
+ * observation). `null` while open, unknown, or absent. No decoding default:
3639
+ * an absent key means the server predates the field (legacy settlement rule).
3640
+ */
3641
+ prTerminalAt: Schema.optional(Schema.NullOr(IsoDateTime)),
3466
3642
  workItemProvider: Schema.optional(Schema.NullOr(WorkItemProviderKind)).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
3467
3643
  workItemKey: Schema.optional(Schema.NullOr(TrimmedNonEmptyString)).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
3468
3644
  workItemTitle: Schema.optional(Schema.NullOr(TrimmedNonEmptyString)).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
@@ -3472,6 +3648,12 @@ const Worktree = Schema.Struct({
3472
3648
  createdAt: IsoDateTime,
3473
3649
  updatedAt: IsoDateTime,
3474
3650
  archivedAt: Schema.NullOr(IsoDateTime),
3651
+ /**
3652
+ * Set once the physical checkout is gone (removed or found missing). The record,
3653
+ * `worktreePath` and `branch` stay as provenance. Optional so older peers decode.
3654
+ */
3655
+ checkoutRemovedAt: Schema.optional(Schema.NullOr(IsoDateTime)),
3656
+ checkoutRemovalReason: Schema.optional(Schema.NullOr(WorktreeCheckoutRemovalReason)),
3475
3657
  manualPosition: Schema.Number
3476
3658
  });
3477
3659
  const CreateWorktreeIntent = Schema.Union([
@@ -3593,6 +3775,13 @@ const CONTEXT_HANDOFF_ERROR_MAX_CHARS = 2e3;
3593
3775
  const CONTEXT_HANDOFF_INSPECTION_MAX_RESPONSE_BYTES = 131072;
3594
3776
  const CONTEXT_HANDOFF_INSPECTION_CHUNK_MAX_BYTES = 98304;
3595
3777
  const ContextHandoffMode = Schema.Literal("full-context-fresh-session");
3778
+ /**
3779
+ * Why a thread handed its context to a fresh session:
3780
+ * - `model-change`: the user switched to another provider instance.
3781
+ * - `cwd-relocation`: the thread's working directory moved (for example, a chat became a project)
3782
+ * and the provider cannot resume its conversation there.
3783
+ */
3784
+ const ContextHandoffReason = Schema.Literals(["model-change", "cwd-relocation"]);
3596
3785
  const ContextHandoffEndpointSnapshot = Schema.Struct({
3597
3786
  providerInstanceId: ProviderInstanceId,
3598
3787
  driverKind: ProviderDriverKind,
@@ -3618,6 +3807,8 @@ const ContextHandoffActivityBaseFields = {
3618
3807
  schemaVersion: Schema.Literal(1),
3619
3808
  handoffId: ContextHandoffId,
3620
3809
  mode: ContextHandoffMode,
3810
+ /** Absent on records written before reasons existed: those are model changes. */
3811
+ reason: Schema.optional(ContextHandoffReason),
3621
3812
  targetMessageId: MessageId,
3622
3813
  targetTurnId: Schema.optional(TurnId),
3623
3814
  sourceSelection: ModelSelection,
@@ -3673,6 +3864,44 @@ const ContextHandoffActivityPayload = Schema.Union([
3673
3864
  inspection: Schema.optional(ContextHandoffInspectionSummaryMetadata)
3674
3865
  })
3675
3866
  ]);
3867
+ /**
3868
+ * Lifecycle activity journaling one checkpoint revert. Its id is
3869
+ * `checkpoint-revert:<revertRequestId>`; every phase replaces the same row.
3870
+ */
3871
+ const CHECKPOINT_REVERT_ACTIVITY_KIND = "checkpoint.revert";
3872
+ const CheckpointRevertStatus = Schema.Literals([
3873
+ "requested",
3874
+ "rolling-back",
3875
+ "restoring-files",
3876
+ "completed",
3877
+ "files-not-restored",
3878
+ "failed",
3879
+ "interrupted"
3880
+ ]);
3881
+ const CheckpointRevertFailureReason = Schema.Literals([
3882
+ "thread-busy",
3883
+ "target-unavailable",
3884
+ "handoff-boundary",
3885
+ "not-git",
3886
+ "shared-checkout",
3887
+ "provider-unsupported",
3888
+ "provider-failed",
3889
+ "files-failed",
3890
+ "restart",
3891
+ "internal-error"
3892
+ ]);
3893
+ const CheckpointRevertActivityPayload = Schema.Struct({
3894
+ schemaVersion: Schema.Literal(1),
3895
+ revertRequestId: CommandId,
3896
+ /** Target checkpoint K. */
3897
+ turnCount: NonNegativeInt,
3898
+ fromTurnCount: Schema.optional(NonNegativeInt),
3899
+ status: CheckpointRevertStatus,
3900
+ reason: Schema.optional(CheckpointRevertFailureReason),
3901
+ detail: Schema.optional(TrimmedNonEmptyString),
3902
+ /** Restore cwd, recorded from "rolling-back" on so startup recovery can finish. */
3903
+ cwd: Schema.optional(TrimmedNonEmptyString)
3904
+ });
3676
3905
  const ContextHandoffInspectionScope = Schema.Literals(["sent", "complete"]);
3677
3906
  const ContextHandoffInspectionSection = Schema.Literals([
3678
3907
  "messages",
@@ -3884,6 +4113,25 @@ const UploadChatImageAttachment = Schema.Struct({
3884
4113
  sizeBytes: NonNegativeInt.check(Schema.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_IMAGE_BYTES)),
3885
4114
  dataUrl: TrimmedNonEmptyString.check(Schema.isMaxLength(PROVIDER_SEND_TURN_MAX_IMAGE_DATA_URL_CHARS))
3886
4115
  });
4116
+ /**
4117
+ * Marks a `text/html` file attachment as an agent HTML render: a page the agent
4118
+ * published with `ryco_html_render` for clients to show inline in the thread.
4119
+ * Deliberately loose (any finite numbers, no length caps) so a newer server's
4120
+ * metadata can never fail an older client's decode; `@ryco/shared/htmlRender`
4121
+ * `readHtmlRenderMetadata` clamps it before use.
4122
+ */
4123
+ const ChatHtmlRenderMetadata = Schema.Struct({
4124
+ title: Schema.String,
4125
+ /** The agent's frame height in CSS pixels, and the cap on any measured height. */
4126
+ height: Schema.Finite,
4127
+ /** `[width, contentHeight]` pairs measured at publish; absent when not measured. */
4128
+ heights: Schema.optional(Schema.Array(Schema.Tuple([Schema.Finite, Schema.Finite]))),
4129
+ /** Small `data:image/...` screenshots of the page's top per appearance; absent when not captured. */
4130
+ thumbnails: Schema.optional(Schema.Struct({
4131
+ dark: Schema.optional(Schema.String),
4132
+ light: Schema.optional(Schema.String)
4133
+ }))
4134
+ });
3887
4135
  const ChatFileAttachment = Schema.Struct({
3888
4136
  type: Schema.Literal("file"),
3889
4137
  id: ChatAttachmentId,
@@ -3891,7 +4139,8 @@ const ChatFileAttachment = Schema.Struct({
3891
4139
  mimeType: ChatAttachmentMimeType,
3892
4140
  sizeBytes: NonNegativeInt.check(Schema.isLessThanOrEqualTo(PROVIDER_SEND_TURN_MAX_FILE_BYTES)),
3893
4141
  width: Schema.optional(NonNegativeInt),
3894
- height: Schema.optional(NonNegativeInt)
4142
+ height: Schema.optional(NonNegativeInt),
4143
+ htmlRender: Schema.optional(ChatHtmlRenderMetadata)
3895
4144
  });
3896
4145
  const CHAT_ATTACHMENT_READ_CHUNK_BYTES = 262144;
3897
4146
  const ChatAttachmentReadChunkInput = Schema.Struct({
@@ -3969,8 +4218,18 @@ const ProjectScript = Schema.Struct({
3969
4218
  const ProjectCustomSystemPrompt = TrimmedNonEmptyString.check(Schema.isMaxLength(2e4));
3970
4219
  const DEFAULT_PROJECT_METADATA_DIR = ".ryco";
3971
4220
  const ProjectMetadataDir = TrimmedNonEmptyString.check(Schema.isMaxLength(256), Schema.isPattern(/^(?![\\/])(?!~)(?![A-Za-z]:[\\/])(?!.*(?:^|[\\/])\.\.(?:[\\/]|$)).+$/));
4221
+ /**
4222
+ * `chat` backs a "No project" chat: one project record per chat, rooted in a Ryco-managed
4223
+ * plain folder under the chats root. Promotion turns it into a regular `project`, never back.
4224
+ * Read it through `@ryco/shared/projectKind`, which treats an absent kind as `project`.
4225
+ */
4226
+ const ProjectKind = Schema.Literals(["project", "chat"]);
4227
+ const DEFAULT_PROJECT_KIND = "project";
4228
+ /** Absent on snapshots, events and nodes that predate chats; those only had regular projects. */
4229
+ const OptionalProjectKind = Schema.optional(ProjectKind).pipe(Schema.withDecodingDefault(Effect.succeed(DEFAULT_PROJECT_KIND)));
3972
4230
  const OrchestrationProject = Schema.Struct({
3973
4231
  id: ProjectId,
4232
+ kind: OptionalProjectKind,
3974
4233
  title: TrimmedNonEmptyString,
3975
4234
  workspaceRoot: TrimmedNonEmptyString,
3976
4235
  projectMetadataDir: Schema.optional(ProjectMetadataDir).pipe(Schema.withDecodingDefault(Effect.succeed(DEFAULT_PROJECT_METADATA_DIR))),
@@ -3990,6 +4249,19 @@ const OrchestrationMessageRole = Schema.Literals([
3990
4249
  "system"
3991
4250
  ]);
3992
4251
  const TurnDispatchMode = Schema.Literals(["queue", "steer"]);
4252
+ /**
4253
+ * Why a steer was not applied. `deferred`: the message stays queued and is sent as the next turn
4254
+ * (the turn ended, or the provider could not take it right now). `failed`: a real provider error.
4255
+ * Absent on older events, which read as `failed`.
4256
+ */
4257
+ const TurnSteerRejectionReason = Schema.Literals(["deferred", "failed"]);
4258
+ /**
4259
+ * Set on a `failed` steer rejection the provider may still have received (a restart cut off its
4260
+ * delivery). Clients hold such a message for an explicit retry or removal instead of sending it
4261
+ * again as the next turn. An optional flag rather than a third reason, so older clients that
4262
+ * decode the event keep working and read it as a plain failure.
4263
+ */
4264
+ const TurnSteerDeliveryUncertain = Schema.optionalKey(Schema.Boolean);
3993
4265
  const OrchestrationMessage = Schema.Struct({
3994
4266
  id: MessageId,
3995
4267
  role: OrchestrationMessageRole,
@@ -4080,6 +4352,31 @@ const OrchestrationLatestTurnState = Schema.Literals([
4080
4352
  "completed",
4081
4353
  "error"
4082
4354
  ]);
4355
+ /**
4356
+ * Frozen set of states a turn can end in. New outcomes (for example usage limits)
4357
+ * go into `reason` or a separate field, never into this literal set.
4358
+ */
4359
+ const OrchestrationTerminalTurnState = Schema.Literals([
4360
+ "completed",
4361
+ "error",
4362
+ "interrupted"
4363
+ ]);
4364
+ /** Server-internal: what the caller knows about how the active turn ended. */
4365
+ const OrchestrationTurnOutcome = Schema.Struct({
4366
+ /** Omitted = "the turn this release ends", whichever it is. */
4367
+ turnId: Schema.optional(TurnId),
4368
+ state: OrchestrationTerminalTurnState,
4369
+ /** Open diagnostic string (see TURN_FINALIZATION_REASON). Never a closed literal set. */
4370
+ reason: TrimmedNonEmptyString,
4371
+ completedAt: Schema.optional(IsoDateTime)
4372
+ });
4373
+ /** Decided by the server: the turn this session-set releases, and how it ended. */
4374
+ const OrchestrationReleasedTurn = Schema.Struct({
4375
+ turnId: TurnId,
4376
+ state: OrchestrationTerminalTurnState,
4377
+ completedAt: IsoDateTime,
4378
+ reason: TrimmedNonEmptyString
4379
+ });
4083
4380
  const OrchestrationLatestTurn = Schema.Struct({
4084
4381
  userMessageId: Schema.optional(MessageId),
4085
4382
  turnId: TurnId,
@@ -4090,6 +4387,42 @@ const OrchestrationLatestTurn = Schema.Struct({
4090
4387
  assistantMessageId: Schema.NullOr(MessageId),
4091
4388
  sourceProposedPlan: Schema.optional(SourceProposedPlanReference)
4092
4389
  });
4390
+ const ThreadUsageLimitId = TrimmedNonEmptyString.check(Schema.isMaxLength(512));
4391
+ /**
4392
+ * A provider usage limit stopped this thread's turn. Durable until a turn starts, the
4393
+ * thread is archived or reverted; it only gates the thread while
4394
+ * `modelSelection.instanceId === providerInstanceId`.
4395
+ */
4396
+ const ThreadUsageLimit = Schema.Struct({
4397
+ /** "usage-limit:<threadId>:<turnId>" */
4398
+ limitId: ThreadUsageLimitId,
4399
+ provider: ProviderDriverKind,
4400
+ providerInstanceId: ProviderInstanceId,
4401
+ turnId: TurnId,
4402
+ message: TrimmedNonEmptyString.check(Schema.isMaxLength(1e3)),
4403
+ limitedAt: IsoDateTime,
4404
+ resetAt: Schema.NullOr(IsoDateTime),
4405
+ /** null follows ServerSettings.autoResumeLimitedThreads; a boolean is an explicit per-thread override. */
4406
+ autoResume: Schema.NullOr(Schema.Boolean),
4407
+ updatedAt: IsoDateTime
4408
+ });
4409
+ /** Accepts the resume turn only while this exact limit is still recorded and idle. */
4410
+ const UsageLimitResumeGuard = Schema.Struct({
4411
+ limitId: ThreadUsageLimitId,
4412
+ origin: Schema.Literals(["auto", "manual"])
4413
+ });
4414
+ /**
4415
+ * Server-owned provenance of a thread created on behalf of another thread.
4416
+ * Absent on root threads. Immutable for a thread incarnation. Never authority.
4417
+ * `relationship` is deliberately an open string: a newer server may add kinds
4418
+ * without failing older clients' shell decode. Clients must treat values they
4419
+ * do not know as "no known relationship". Known values: "delegated".
4420
+ */
4421
+ const ThreadLineage = Schema.Struct({
4422
+ parentThreadId: ThreadId,
4423
+ rootThreadId: ThreadId,
4424
+ relationship: TrimmedNonEmptyString.check(Schema.isMaxLength(64))
4425
+ });
4093
4426
  const OrchestrationThread = Schema.Struct({
4094
4427
  id: ThreadId,
4095
4428
  projectId: ProjectId,
@@ -4105,6 +4438,8 @@ const OrchestrationThread = Schema.Struct({
4105
4438
  manualPosition: Schema.optional(Schema.Number),
4106
4439
  latestTurn: Schema.NullOr(OrchestrationLatestTurn),
4107
4440
  goal: Schema.optional(Schema.NullOr(ThreadGoal)).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
4441
+ /** Server-owned provenance; absent on root threads and from older servers. */
4442
+ lineage: Schema.optional(Schema.NullOr(ThreadLineage)),
4108
4443
  createdAt: IsoDateTime,
4109
4444
  updatedAt: IsoDateTime,
4110
4445
  archivedAt: Schema.NullOr(IsoDateTime).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
@@ -4112,14 +4447,25 @@ const OrchestrationThread = Schema.Struct({
4112
4447
  settledAt: Schema.NullOr(IsoDateTime).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
4113
4448
  snoozedUntil: Schema.optional(Schema.NullOr(IsoDateTime)),
4114
4449
  snoozedAt: Schema.optional(Schema.NullOr(IsoDateTime)),
4450
+ /** Optional so mixed-version snapshots decode; older clients strip it. */
4451
+ usageLimit: Schema.optional(Schema.NullOr(ThreadUsageLimit)),
4452
+ /**
4453
+ * Hidden from every live view. A trashed thread also carries `trashedAt` and keeps
4454
+ * its history and assets; without `trashedAt` the deletion is permanent.
4455
+ */
4115
4456
  deletedAt: Schema.NullOr(IsoDateTime),
4457
+ trashedAt: Schema.optional(Schema.NullOr(IsoDateTime)),
4116
4458
  messages: Schema.Array(OrchestrationMessage),
4117
4459
  proposedPlans: Schema.Array(OrchestrationProposedPlan).pipe(Schema.withDecodingDefault(Effect.succeed([]))),
4118
4460
  activities: Schema.Array(OrchestrationThreadActivity),
4119
4461
  checkpoints: Schema.Array(OrchestrationCheckpointSummary),
4120
4462
  session: Schema.NullOr(OrchestrationSession)
4121
4463
  });
4122
- const OrchestrationWorktreeShell = Worktree;
4464
+ const OrchestrationWorktreeShell = Schema.Struct({
4465
+ ...Worktree.fields,
4466
+ /** Retired managed path, so persisted drafts can retarget after a cold reconnect. */
4467
+ relocatedFromPath: Schema.optional(Schema.NullOr(TrimmedNonEmptyString))
4468
+ });
4123
4469
  const OrchestrationReadModel = Schema.Struct({
4124
4470
  snapshotSequence: NonNegativeInt,
4125
4471
  projects: Schema.Array(OrchestrationProject),
@@ -4129,6 +4475,7 @@ const OrchestrationReadModel = Schema.Struct({
4129
4475
  });
4130
4476
  const OrchestrationProjectShell = Schema.Struct({
4131
4477
  id: ProjectId,
4478
+ kind: OptionalProjectKind,
4132
4479
  title: TrimmedNonEmptyString,
4133
4480
  workspaceRoot: TrimmedNonEmptyString,
4134
4481
  projectMetadataDir: Schema.optional(ProjectMetadataDir).pipe(Schema.withDecodingDefault(Effect.succeed(DEFAULT_PROJECT_METADATA_DIR))),
@@ -4174,6 +4521,8 @@ const OrchestrationThreadShell = Schema.Struct({
4174
4521
  settledAt: Schema.NullOr(IsoDateTime).pipe(Schema.withDecodingDefault(Effect.succeed(null))),
4175
4522
  snoozedUntil: Schema.optional(Schema.NullOr(IsoDateTime)),
4176
4523
  snoozedAt: Schema.optional(Schema.NullOr(IsoDateTime)),
4524
+ /** Optional so mixed-version snapshots decode; older clients strip it. */
4525
+ usageLimit: Schema.optional(Schema.NullOr(ThreadUsageLimit)),
4177
4526
  session: Schema.NullOr(OrchestrationSession),
4178
4527
  latestUserMessageAt: Schema.NullOr(IsoDateTime),
4179
4528
  /** Last successful turn that is no longer active; absent on older servers. */
@@ -4187,6 +4536,8 @@ const OrchestrationThreadShell = Schema.Struct({
4187
4536
  * live work. Optional so old servers/clients interop; absent = none.
4188
4537
  */
4189
4538
  backgroundLiveness: Schema.optional(Schema.NullOr(Schema.Literals(["working", "monitoring"]))),
4539
+ /** Server-owned provenance; absent on root threads and from older servers. */
4540
+ lineage: Schema.optional(Schema.NullOr(ThreadLineage)),
4190
4541
  priority: Schema.optional(ThreadPriorityProjectedRanking)
4191
4542
  });
4192
4543
  const OrchestrationShellSnapshot = Schema.Struct({
@@ -4217,6 +4568,13 @@ const OrchestrationShellStreamEvent = Schema.Union([
4217
4568
  sequence: NonNegativeInt,
4218
4569
  worktree: OrchestrationWorktreeShell
4219
4570
  }),
4571
+ Schema.Struct({
4572
+ kind: Schema.Literal("worktree-relocated"),
4573
+ sequence: NonNegativeInt,
4574
+ worktree: OrchestrationWorktreeShell,
4575
+ sourcePath: TrimmedNonEmptyString,
4576
+ destinationPath: TrimmedNonEmptyString
4577
+ }),
4220
4578
  Schema.Struct({
4221
4579
  kind: Schema.Literal("thread-removed"),
4222
4580
  sequence: NonNegativeInt,
@@ -4228,11 +4586,36 @@ const OrchestrationShellStreamEvent = Schema.Union([
4228
4586
  worktreeId: WorktreeId
4229
4587
  })
4230
4588
  ]);
4231
- const OrchestrationShellStreamItem = Schema.Union([Schema.Struct({
4232
- kind: Schema.Literal("snapshot"),
4233
- snapshot: OrchestrationShellSnapshot
4234
- }), OrchestrationShellStreamEvent]);
4235
- const OrchestrationSubscribeThreadInput = Schema.Struct({ threadId: ThreadId });
4589
+ const OrchestrationShellStreamItem = Schema.Union([
4590
+ Schema.Struct({
4591
+ kind: Schema.Literal("snapshot"),
4592
+ snapshot: OrchestrationShellSnapshot
4593
+ }),
4594
+ Schema.Struct({
4595
+ kind: Schema.Literal("resumed"),
4596
+ fromSequence: NonNegativeInt
4597
+ }),
4598
+ OrchestrationShellStreamEvent
4599
+ ]);
4600
+ const OrchestrationSubscribeShellInput = Schema.Struct({
4601
+ /**
4602
+ * The last shell sequence the client applied. A server that still holds every
4603
+ * event since then answers `resumed` and replays only those, sparing a full
4604
+ * snapshot on every reconnect; otherwise it sends a snapshot as usual. Older
4605
+ * servers ignore the field.
4606
+ */
4607
+ resumeFromSequence: Schema.optional(NonNegativeInt) });
4608
+ /**
4609
+ * The last orchestration sequence the client applied for this thread. A server
4610
+ * that still holds every event since then answers `resumed` and replays only
4611
+ * the thread's missed events; otherwise it sends a snapshot. Older servers
4612
+ * ignore the field.
4613
+ */
4614
+ const ThreadResumeFromSequence = Schema.optional(NonNegativeInt);
4615
+ const OrchestrationSubscribeThreadInput = Schema.Struct({
4616
+ threadId: ThreadId,
4617
+ resumeFromSequence: ThreadResumeFromSequence
4618
+ });
4236
4619
  const OrchestrationThreadDetailSnapshot = Schema.Struct({
4237
4620
  snapshotSequence: NonNegativeInt,
4238
4621
  thread: OrchestrationThread
@@ -4265,10 +4648,21 @@ const OrchestrationGetThreadWindowInput = Schema.Struct({
4265
4648
  threadId: ThreadId,
4266
4649
  limits: OrchestrationThreadHistoryLimits
4267
4650
  });
4651
+ const OrchestrationSubscribeThreadWindowInput = Schema.Struct({
4652
+ threadId: ThreadId,
4653
+ limits: OrchestrationThreadHistoryLimits,
4654
+ resumeFromSequence: ThreadResumeFromSequence
4655
+ });
4268
4656
  const OrchestrationThreadWindowSnapshot = Schema.Struct({
4269
4657
  snapshotSequence: NonNegativeInt,
4270
4658
  thread: OrchestrationThread,
4271
- history: OrchestrationThreadHistoryState
4659
+ history: OrchestrationThreadHistoryState,
4660
+ /**
4661
+ * The directory the thread's next turn runs in (its worktree, else its project root), as the
4662
+ * server resolves it when starting a provider session. Absent from older servers and when the
4663
+ * thread has no resolvable project.
4664
+ */
4665
+ workspaceCwd: Schema.optional(TrimmedNonEmptyString)
4272
4666
  });
4273
4667
  const OrchestrationThreadHistoryPageMode = Schema.Struct({
4274
4668
  kind: Schema.Literal("before"),
@@ -4332,6 +4726,8 @@ const ProjectCreateCommand = Schema.Struct({
4332
4726
  type: Schema.Literal("project.create"),
4333
4727
  commandId: CommandId,
4334
4728
  projectId: ProjectId,
4729
+ /** Absent creates a regular project. */
4730
+ kind: Schema.optional(ProjectKind),
4335
4731
  title: TrimmedNonEmptyString,
4336
4732
  workspaceRoot: TrimmedNonEmptyString,
4337
4733
  projectMetadataDir: Schema.optional(ProjectMetadataDir).pipe(Schema.withDecodingDefault(Effect.succeed(DEFAULT_PROJECT_METADATA_DIR))),
@@ -4347,6 +4743,8 @@ const ProjectMetaUpdateCommand = Schema.Struct({
4347
4743
  projectId: ProjectId,
4348
4744
  /** Optional compare-and-set guard used by governed mutation flows. */
4349
4745
  expectedUpdatedAt: Schema.optional(IsoDateTime),
4746
+ /** Only `chat` -> `project` (promotion) is accepted; the same kind is a no-op. */
4747
+ kind: Schema.optional(ProjectKind),
4350
4748
  title: Schema.optional(TrimmedNonEmptyString),
4351
4749
  workspaceRoot: Schema.optional(TrimmedNonEmptyString),
4352
4750
  projectMetadataDir: Schema.optional(ProjectMetadataDir),
@@ -4385,11 +4783,29 @@ const ThreadCreateCommand = Schema.Struct({
4385
4783
  worktreePath: Schema.NullOr(TrimmedNonEmptyString),
4386
4784
  createdAt: IsoDateTime
4387
4785
  });
4786
+ /** Server-originated only (Agent Control). Never part of ClientOrchestrationCommand. */
4787
+ const ThreadDelegatedCreateCommand = Schema.Struct({
4788
+ ...ThreadCreateCommand.fields,
4789
+ type: Schema.Literal("thread.delegated.create"),
4790
+ parentThreadId: ThreadId
4791
+ });
4792
+ /** Permanent deletion. Only a trashed (or never-used) thread can be deleted. */
4388
4793
  const ThreadDeleteCommand = Schema.Struct({
4389
4794
  type: Schema.Literal("thread.delete"),
4390
4795
  commandId: CommandId,
4391
4796
  threadId: ThreadId
4392
4797
  });
4798
+ /** Recoverable removal: hidden everywhere, history and assets preserved. */
4799
+ const ThreadTrashCommand = Schema.Struct({
4800
+ type: Schema.Literal("thread.trash"),
4801
+ commandId: CommandId,
4802
+ threadId: ThreadId
4803
+ });
4804
+ const ThreadUntrashCommand = Schema.Struct({
4805
+ type: Schema.Literal("thread.untrash"),
4806
+ commandId: CommandId,
4807
+ threadId: ThreadId
4808
+ });
4393
4809
  const ThreadArchiveCommand = Schema.Struct({
4394
4810
  type: Schema.Literal("thread.archive"),
4395
4811
  commandId: CommandId,
@@ -4417,6 +4833,15 @@ const ThreadUnsnoozeCommand = Schema.Struct({
4417
4833
  commandId: CommandId,
4418
4834
  threadId: ThreadId
4419
4835
  });
4836
+ /** Per-thread auto-resume override for the thread's current usage limit. */
4837
+ const ThreadUsageLimitConfigureCommand = Schema.Struct({
4838
+ type: Schema.Literal("thread.usage-limit.configure"),
4839
+ commandId: CommandId,
4840
+ threadId: ThreadId,
4841
+ limitId: ThreadUsageLimitId,
4842
+ autoResume: Schema.NullOr(Schema.Boolean),
4843
+ createdAt: IsoDateTime
4844
+ });
4420
4845
  const ThreadSettleCommand = Schema.Struct({
4421
4846
  type: Schema.Literal("thread.settle"),
4422
4847
  commandId: CommandId,
@@ -4489,36 +4914,81 @@ const ThreadTurnStartBootstrapPrepareWorktree = Schema.Struct({
4489
4914
  baseBranch: TrimmedNonEmptyString,
4490
4915
  branch: Schema.optional(TrimmedNonEmptyString)
4491
4916
  });
4917
+ /**
4918
+ * Shown when work (a turn, provider session, terminal or file write) is refused because the chat's
4919
+ * folder is moving into a project. The move settles in moments, so retrying shortly succeeds.
4920
+ */
4921
+ const PROJECT_RELOCATION_PENDING_MESSAGE = "This chat is being moved into a project. Try again in a moment.";
4922
+ /**
4923
+ * First send of a "No project" chat. The server, not the client, allocates the chat folder
4924
+ * under its chats root, creates a `chat` project with `projectId` there, and then continues
4925
+ * with `createThread` for that project. Mutually exclusive with `prepareWorktree` and
4926
+ * `requireWorktree`: a chat folder is a plain directory, never a Git worktree.
4927
+ */
4928
+ const ThreadTurnStartBootstrapCreateChatProject = Schema.Struct({
4929
+ projectId: ProjectId,
4930
+ /** Seeds the chat title and its folder name; the folder name never changes afterwards. */
4931
+ titleSeed: TrimmedNonEmptyString.check(Schema.isMaxLength(200))
4932
+ });
4492
4933
  const ThreadTurnStartBootstrap = Schema.Struct({
4493
4934
  /** Reject a turn unless this bootstrap creates a fresh isolated Git worktree. */
4494
4935
  requireWorktree: Schema.optional(Schema.Boolean),
4936
+ createChatProject: Schema.optional(ThreadTurnStartBootstrapCreateChatProject),
4495
4937
  createThread: Schema.optional(ThreadTurnStartBootstrapCreateThread),
4496
4938
  prepareWorktree: Schema.optional(ThreadTurnStartBootstrapPrepareWorktree),
4497
4939
  runSetupScript: Schema.optional(Schema.Boolean)
4498
- });
4499
- /** Optimistic identity fence for delayed delegated-result queue delivery. */
4940
+ }).check(Schema.makeFilter((bootstrap) => {
4941
+ if (bootstrap.createChatProject === void 0) return void 0;
4942
+ if (bootstrap.prepareWorktree !== void 0 || bootstrap.requireWorktree === true) return "A chat without a project cannot also prepare a Git worktree";
4943
+ if (bootstrap.createThread?.projectId !== bootstrap.createChatProject.projectId) return "A chat without a project must create its first thread in that chat";
4944
+ }));
4945
+ /**
4946
+ * Delegated-result wake fence. Legacy fields (`turnMessageId`, `turnId`, `runtimeSessionId`,
4947
+ * `providerInstanceId`) are decoded for stored events and ledger commands and ignored.
4948
+ */
4500
4949
  const DelegationReturnGuard = Schema.Struct({
4501
- turnMessageId: MessageId,
4502
4950
  latestUserMessageId: Schema.NullOr(MessageId),
4503
4951
  projectId: ProjectId,
4504
- turnId: TurnId,
4505
- runtimeSessionId: RuntimeSessionId,
4506
- providerInstanceId: ProviderInstanceId,
4507
4952
  runtimeMode: RuntimeMode,
4508
- worktreePath: Schema.NullOr(Schema.String)
4953
+ worktreePath: Schema.NullOr(Schema.String),
4954
+ turnMessageId: Schema.optional(MessageId),
4955
+ turnId: Schema.optional(TurnId),
4956
+ runtimeSessionId: Schema.optional(RuntimeSessionId),
4957
+ providerInstanceId: Schema.optional(ProviderInstanceId)
4509
4958
  });
4510
4959
  const ClaudeResumeGuard = Schema.Struct({
4511
4960
  requireReady: Schema.Boolean,
4512
- runtimeSessionId: RuntimeSessionId,
4961
+ /**
4962
+ * The runtime the review saw. Null when the session had none (it was stopped): the send is
4963
+ * then accepted only while still no runtime is bound, so the review stays current until the
4964
+ * next turn starts one.
4965
+ */
4966
+ runtimeSessionId: Schema.NullOr(RuntimeSessionId),
4513
4967
  latestTurnId: Schema.NullOr(TurnId),
4514
4968
  modelSelection: ModelSelection
4515
4969
  });
4970
+ /**
4971
+ * Server-only optimistic fence for an automatic continuation after a restart. Never part
4972
+ * of `ClientThreadTurnStartCommand`: client decode strips it, so it cannot be forged.
4973
+ */
4974
+ const RestartContinuationGuard = Schema.Struct({
4975
+ sourceTurnId: TurnId,
4976
+ expectedLatestTurnState: Schema.Literals(["interrupted", "completed"]),
4977
+ latestUserMessageId: Schema.NullOr(MessageId),
4978
+ modelSelection: ModelSelection,
4979
+ runtimeMode: RuntimeMode,
4980
+ interactionMode: ProviderInteractionMode,
4981
+ worktreePath: Schema.NullOr(Schema.String),
4982
+ providerInstanceId: ProviderInstanceId
4983
+ });
4516
4984
  const ThreadTurnStartCommand = Schema.Struct({
4517
4985
  claudeResumeGuard: Schema.optional(ClaudeResumeGuard),
4986
+ restartContinuationGuard: Schema.optional(RestartContinuationGuard),
4518
4987
  computerUse: Schema.optionalKey(ComputerTurnIntent),
4519
4988
  projectMemory: Schema.optional(Schema.Never),
4520
4989
  type: Schema.Literal("thread.turn.start"),
4521
4990
  delegationReturnGuard: Schema.optional(DelegationReturnGuard),
4991
+ usageLimitResumeGuard: Schema.optional(UsageLimitResumeGuard),
4522
4992
  commandId: CommandId,
4523
4993
  threadId: ThreadId,
4524
4994
  message: Schema.Struct({
@@ -4544,6 +5014,7 @@ const ClientThreadTurnStartCommand = Schema.Struct({
4544
5014
  projectMemory: Schema.optional(Schema.Never),
4545
5015
  type: Schema.Literal("thread.turn.start"),
4546
5016
  delegationReturnGuard: Schema.optional(DelegationReturnGuard),
5017
+ usageLimitResumeGuard: Schema.optional(UsageLimitResumeGuard),
4547
5018
  commandId: CommandId,
4548
5019
  threadId: ThreadId,
4549
5020
  message: Schema.Struct({
@@ -4686,6 +5157,8 @@ const WorktreeSourceControlStateUpdateCommand = Schema.Struct({
4686
5157
  prTitle: Schema.optional(Schema.NullOr(TrimmedNonEmptyString)),
4687
5158
  prState: Schema.NullOr(PullRequestState),
4688
5159
  prIsDraft: Schema.NullOr(Schema.Boolean),
5160
+ /** When the PR reached its current merged/closed state; see `Worktree.prTerminalAt`. */
5161
+ prTerminalAt: Schema.optional(Schema.NullOr(IsoDateTime)),
4689
5162
  issueState: Schema.NullOr(IssueState),
4690
5163
  updatedAt: IsoDateTime
4691
5164
  });
@@ -4697,6 +5170,11 @@ const WorktreeRestoreCommand = Schema.Struct({
4697
5170
  worktreePath: Schema.optional(Schema.NullOr(TrimmedNonEmptyString)),
4698
5171
  restoredAt: IsoDateTime
4699
5172
  });
5173
+ /**
5174
+ * Drops a workspace record. Never touches conversations: the decider refuses while
5175
+ * any conversation (active, archived or trashed) still references the record.
5176
+ * `sessions` is decoded for stored commands only; "delete" is always refused.
5177
+ */
4700
5178
  const WorktreeDeleteCommand = Schema.Struct({
4701
5179
  sessions: Schema.optional(Schema.Literals(["preserve", "delete"])),
4702
5180
  type: Schema.Literal("worktree.delete"),
@@ -4706,6 +5184,37 @@ const WorktreeDeleteCommand = Schema.Struct({
4706
5184
  deletedAt: IsoDateTime,
4707
5185
  deletedBranch: Schema.Boolean
4708
5186
  });
5187
+ /**
5188
+ * Server-only (workspace lifecycle service): records that the physical checkout is
5189
+ * gone. Archives the record when it is still active; the path and branch stay.
5190
+ */
5191
+ const WorktreeCheckoutRemoveCommand = Schema.Struct({
5192
+ type: Schema.Literal("worktree.checkout.remove"),
5193
+ commandId: CommandId,
5194
+ worktreeId: WorktreeId,
5195
+ reason: WorktreeCheckoutRemovalReason,
5196
+ lifecycleGuard: Schema.optional(WorktreeLifecycleGuard),
5197
+ removedAt: IsoDateTime
5198
+ });
5199
+ /** Server-only: the checkout was recreated at its recorded path. */
5200
+ const WorktreeCheckoutRestoreCommand = Schema.Struct({
5201
+ type: Schema.Literal("worktree.checkout.restore"),
5202
+ commandId: CommandId,
5203
+ worktreeId: WorktreeId,
5204
+ worktreePath: TrimmedNonEmptyString,
5205
+ restoredAt: IsoDateTime
5206
+ });
5207
+ /** Server-only: a verified managed checkout moved under workspace lifecycle admission. */
5208
+ const WorktreeRelocateCommand = Schema.Struct({
5209
+ type: Schema.Literal("worktree.relocate"),
5210
+ commandId: CommandId,
5211
+ worktreeId: WorktreeId,
5212
+ projectId: ProjectId,
5213
+ sourcePath: TrimmedNonEmptyString,
5214
+ destinationPath: TrimmedNonEmptyString,
5215
+ expectedUpdatedAt: IsoDateTime,
5216
+ relocatedAt: IsoDateTime
5217
+ });
4709
5218
  const ThreadAttachToWorktreeCommand = Schema.Struct({
4710
5219
  type: Schema.Literal("thread.attach-to-worktree"),
4711
5220
  commandId: CommandId,
@@ -4741,11 +5250,14 @@ const DispatchableClientOrchestrationCommand = Schema.Union([
4741
5250
  ProjectDeleteCommand,
4742
5251
  ThreadCreateCommand,
4743
5252
  ThreadDeleteCommand,
5253
+ ThreadTrashCommand,
5254
+ ThreadUntrashCommand,
4744
5255
  ThreadArchiveCommand,
4745
5256
  ThreadSidebarUndoCommand,
4746
5257
  ThreadUnarchiveCommand,
4747
5258
  ThreadSnoozeCommand,
4748
5259
  ThreadUnsnoozeCommand,
5260
+ ThreadUsageLimitConfigureCommand,
4749
5261
  ThreadSettleCommand,
4750
5262
  ThreadUnsettleCommand,
4751
5263
  ThreadMetaUpdateCommand,
@@ -4779,11 +5291,14 @@ const ClientOrchestrationCommand = Schema.Union([
4779
5291
  ProjectDeleteCommand,
4780
5292
  ThreadCreateCommand,
4781
5293
  ThreadDeleteCommand,
5294
+ ThreadTrashCommand,
5295
+ ThreadUntrashCommand,
4782
5296
  ThreadArchiveCommand,
4783
5297
  ThreadSidebarUndoCommand,
4784
5298
  ThreadUnarchiveCommand,
4785
5299
  ThreadSnoozeCommand,
4786
5300
  ThreadUnsnoozeCommand,
5301
+ ThreadUsageLimitConfigureCommand,
4787
5302
  ThreadSettleCommand,
4788
5303
  ThreadUnsettleCommand,
4789
5304
  ThreadMetaUpdateCommand,
@@ -4810,11 +5325,25 @@ const ClientOrchestrationCommand = Schema.Union([
4810
5325
  ThreadManualPositionSetCommand,
4811
5326
  WorktreeManualPositionSetCommand
4812
5327
  ]);
5328
+ /**
5329
+ * The runtime a provider-originated session update comes from. The update applies only while
5330
+ * the thread's session is still bound to exactly this provider instance and runtime (null: none),
5331
+ * so a late lifecycle event of a replaced runtime can never overwrite its successor, whatever
5332
+ * order the two writes reach the engine in.
5333
+ */
5334
+ const ThreadSessionSetExpectedRuntime = Schema.Struct({
5335
+ providerInstanceId: Schema.NullOr(ProviderInstanceId),
5336
+ runtimeSessionId: Schema.NullOr(RuntimeSessionId)
5337
+ });
4813
5338
  const ThreadSessionSetCommand = Schema.Struct({
4814
5339
  type: Schema.Literal("thread.session.set"),
4815
5340
  commandId: CommandId,
4816
5341
  threadId: ThreadId,
4817
5342
  session: OrchestrationSession,
5343
+ /** Server-internal precondition; absent for server-decided transitions (bind, stop, restart). */
5344
+ expectedRuntime: Schema.optional(ThreadSessionSetExpectedRuntime),
5345
+ /** Internal hint: how the turn this session-set releases ended, when the caller knows. */
5346
+ turnOutcome: Schema.optional(OrchestrationTurnOutcome),
4818
5347
  createdAt: IsoDateTime
4819
5348
  });
4820
5349
  const ThreadMessageAssistantDeltaCommand = Schema.Struct({
@@ -4899,6 +5428,8 @@ const ThreadTurnSteerResolveCommand = Schema.Union([Schema.Struct({
4899
5428
  resolution: Schema.Struct({
4900
5429
  status: Schema.Literal("rejected"),
4901
5430
  error: TrimmedNonEmptyString.check(Schema.isMaxLength(1e3)),
5431
+ reason: Schema.optionalKey(TurnSteerRejectionReason),
5432
+ deliveryUncertain: TurnSteerDeliveryUncertain,
4902
5433
  resolvedAt: IsoDateTime
4903
5434
  })
4904
5435
  })]);
@@ -4907,6 +5438,8 @@ const ThreadRevertCompleteCommand = Schema.Struct({
4907
5438
  commandId: CommandId,
4908
5439
  threadId: ThreadId,
4909
5440
  turnCount: NonNegativeInt,
5441
+ droppedTurnIds: Schema.optional(Schema.Array(TurnId)),
5442
+ latestTurn: Schema.optional(Schema.NullOr(OrchestrationLatestTurn)),
4910
5443
  createdAt: IsoDateTime
4911
5444
  });
4912
5445
  const ThreadGoalSyncCommand = Schema.Struct({
@@ -4917,6 +5450,19 @@ const ThreadGoalSyncCommand = Schema.Struct({
4917
5450
  expectedRequestId: Schema.optional(Schema.String),
4918
5451
  createdAt: IsoDateTime
4919
5452
  });
5453
+ /** Internal only: clients must never be able to forge a usage limit. */
5454
+ const ThreadUsageLimitRecordCommand = Schema.Struct({
5455
+ type: Schema.Literal("thread.usage-limit.record"),
5456
+ commandId: CommandId,
5457
+ threadId: ThreadId,
5458
+ limitId: ThreadUsageLimitId,
5459
+ provider: ProviderDriverKind,
5460
+ providerInstanceId: ProviderInstanceId,
5461
+ turnId: TurnId,
5462
+ message: TrimmedNonEmptyString.check(Schema.isMaxLength(1e3)),
5463
+ resetAt: Schema.NullOr(IsoDateTime),
5464
+ createdAt: IsoDateTime
5465
+ });
4920
5466
  const ThreadGoalProviderClearCommand = Schema.Struct({
4921
5467
  type: Schema.Literal("thread.goal.provider-clear"),
4922
5468
  commandId: CommandId,
@@ -4925,6 +5471,7 @@ const ThreadGoalProviderClearCommand = Schema.Struct({
4925
5471
  createdAt: IsoDateTime
4926
5472
  });
4927
5473
  const InternalOrchestrationCommand = Schema.Union([
5474
+ ThreadDelegatedCreateCommand,
4928
5475
  Schema.Struct({
4929
5476
  ...ThreadCreateCommand.fields,
4930
5477
  type: Schema.Literal("thread.history.import"),
@@ -4954,7 +5501,11 @@ const InternalOrchestrationCommand = Schema.Union([
4954
5501
  ThreadTurnSteerResolveCommand,
4955
5502
  ThreadRevertCompleteCommand,
4956
5503
  ThreadGoalSyncCommand,
4957
- ThreadGoalProviderClearCommand
5504
+ ThreadGoalProviderClearCommand,
5505
+ ThreadUsageLimitRecordCommand,
5506
+ WorktreeCheckoutRemoveCommand,
5507
+ WorktreeCheckoutRestoreCommand,
5508
+ WorktreeRelocateCommand
4958
5509
  ]);
4959
5510
  const OrchestrationCommand = Schema.Union([DispatchableClientOrchestrationCommand, InternalOrchestrationCommand]);
4960
5511
  const OrchestrationEventType = Schema.Literals([
@@ -4964,12 +5515,16 @@ const OrchestrationEventType = Schema.Literals([
4964
5515
  "project.deleted",
4965
5516
  "thread.created",
4966
5517
  "thread.deleted",
5518
+ "thread.trashed",
5519
+ "thread.untrashed",
4967
5520
  "thread.archived",
4968
5521
  "thread.unarchived",
4969
5522
  "thread.snoozed",
4970
5523
  "thread.unsnoozed",
4971
5524
  "thread.settled",
4972
5525
  "thread.unsettled",
5526
+ "thread.usage-limit-set",
5527
+ "thread.usage-limit-cleared",
4973
5528
  "thread.meta-updated",
4974
5529
  "thread.runtime-mode-set",
4975
5530
  "thread.interaction-mode-set",
@@ -4998,6 +5553,9 @@ const OrchestrationEventType = Schema.Literals([
4998
5553
  "worktree.sourceControlStateUpdated",
4999
5554
  "worktree.restored",
5000
5555
  "worktree.deleted",
5556
+ "worktree.checkoutRemoved",
5557
+ "worktree.checkoutRestored",
5558
+ "worktree.relocated",
5001
5559
  "thread.attachedToWorktree",
5002
5560
  "thread.statusBucketOverridden",
5003
5561
  "thread.manualPositionSet",
@@ -5015,6 +5573,7 @@ const OrchestrationActorKind = Schema.Literals([
5015
5573
  ]);
5016
5574
  const ProjectCreatedPayload = Schema.Struct({
5017
5575
  projectId: ProjectId,
5576
+ kind: OptionalProjectKind,
5018
5577
  title: TrimmedNonEmptyString,
5019
5578
  workspaceRoot: TrimmedNonEmptyString,
5020
5579
  projectMetadataDir: Schema.optional(ProjectMetadataDir).pipe(Schema.withDecodingDefault(Effect.succeed(DEFAULT_PROJECT_METADATA_DIR))),
@@ -5027,6 +5586,8 @@ const ProjectCreatedPayload = Schema.Struct({
5027
5586
  });
5028
5587
  const ProjectMetaUpdatedPayload = Schema.Struct({
5029
5588
  projectId: ProjectId,
5589
+ /** Present only when the kind changed, which is always `chat` -> `project`. */
5590
+ kind: Schema.optional(ProjectKind),
5030
5591
  title: Schema.optional(TrimmedNonEmptyString),
5031
5592
  workspaceRoot: Schema.optional(TrimmedNonEmptyString),
5032
5593
  projectMetadataDir: Schema.optional(ProjectMetadataDir),
@@ -5057,12 +5618,22 @@ const ThreadCreatedPayload = Schema.Struct({
5057
5618
  branch: Schema.NullOr(TrimmedNonEmptyString),
5058
5619
  worktreePath: Schema.NullOr(TrimmedNonEmptyString),
5059
5620
  createdAt: IsoDateTime,
5060
- updatedAt: IsoDateTime
5621
+ updatedAt: IsoDateTime,
5622
+ lineage: Schema.optional(ThreadLineage)
5061
5623
  });
5062
5624
  const ThreadDeletedPayload = Schema.Struct({
5063
5625
  threadId: ThreadId,
5064
5626
  deletedAt: IsoDateTime
5065
5627
  });
5628
+ const ThreadTrashedPayload = Schema.Struct({
5629
+ threadId: ThreadId,
5630
+ trashedAt: IsoDateTime,
5631
+ updatedAt: IsoDateTime
5632
+ });
5633
+ const ThreadUntrashedPayload = Schema.Struct({
5634
+ threadId: ThreadId,
5635
+ updatedAt: IsoDateTime
5636
+ });
5066
5637
  const ThreadArchivedPayload = Schema.Struct({
5067
5638
  threadId: ThreadId,
5068
5639
  archivedAt: IsoDateTime,
@@ -5100,6 +5671,20 @@ const ThreadUnsettledPayload = Schema.Struct({
5100
5671
  updatedAt: IsoDateTime,
5101
5672
  restoredSidebarState: Schema.optional(ThreadSidebarRestoreState)
5102
5673
  });
5674
+ const ThreadUsageLimitSetPayload = Schema.Struct({
5675
+ threadId: ThreadId,
5676
+ usageLimit: ThreadUsageLimit
5677
+ });
5678
+ const ThreadUsageLimitClearedPayload = Schema.Struct({
5679
+ threadId: ThreadId,
5680
+ limitId: ThreadUsageLimitId,
5681
+ reason: Schema.Literals([
5682
+ "turn-started",
5683
+ "archived",
5684
+ "reverted"
5685
+ ]),
5686
+ updatedAt: IsoDateTime
5687
+ });
5103
5688
  const ThreadMetaUpdatedPayload = Schema.Struct({
5104
5689
  threadId: ThreadId,
5105
5690
  title: Schema.optional(TrimmedNonEmptyString),
@@ -5169,6 +5754,8 @@ const ThreadTurnSteerRejectedPayload = Schema.Struct({
5169
5754
  messageId: MessageId,
5170
5755
  expectedTurnId: TurnId,
5171
5756
  error: TrimmedNonEmptyString.check(Schema.isMaxLength(1e3)),
5757
+ reason: Schema.optionalKey(TurnSteerRejectionReason),
5758
+ deliveryUncertain: TurnSteerDeliveryUncertain,
5172
5759
  resolvedAt: IsoDateTime
5173
5760
  });
5174
5761
  const ThreadContextHandoffRequestedPayload = Schema.Struct({
@@ -5223,7 +5810,13 @@ const ThreadCheckpointRevertRequestedPayload = Schema.Struct({
5223
5810
  });
5224
5811
  const ThreadRevertedPayload = Schema.Struct({
5225
5812
  threadId: ThreadId,
5226
- turnCount: NonNegativeInt
5813
+ turnCount: NonNegativeInt,
5814
+ /**
5815
+ * Authoritative revert result read from the projection. Absent on legacy
5816
+ * events, which keep the count-based projection.
5817
+ */
5818
+ droppedTurnIds: Schema.optional(Schema.Array(TurnId)),
5819
+ latestTurn: Schema.optional(Schema.NullOr(OrchestrationLatestTurn))
5227
5820
  });
5228
5821
  const ThreadSessionStopRequestedPayload = Schema.Struct({
5229
5822
  threadId: ThreadId,
@@ -5231,7 +5824,9 @@ const ThreadSessionStopRequestedPayload = Schema.Struct({
5231
5824
  });
5232
5825
  const ThreadSessionSetPayload = Schema.Struct({
5233
5826
  threadId: ThreadId,
5234
- session: OrchestrationSession
5827
+ session: OrchestrationSession,
5828
+ /** Decided by the server: the turn this session-set releases and its terminal state. */
5829
+ releasedTurn: Schema.optional(OrchestrationReleasedTurn)
5235
5830
  });
5236
5831
  const ThreadProposedPlanUpsertedPayload = Schema.Struct({
5237
5832
  threadId: ThreadId,
@@ -5287,6 +5882,8 @@ const WorktreeSourceControlStateUpdatedPayload = Schema.Struct({
5287
5882
  prTitle: Schema.optional(Schema.NullOr(TrimmedNonEmptyString)),
5288
5883
  prState: Schema.NullOr(PullRequestState),
5289
5884
  prIsDraft: Schema.NullOr(Schema.Boolean),
5885
+ /** When the PR reached its current merged/closed state; see `Worktree.prTerminalAt`. */
5886
+ prTerminalAt: Schema.optional(Schema.NullOr(IsoDateTime)),
5290
5887
  issueState: Schema.NullOr(IssueState),
5291
5888
  updatedAt: IsoDateTime
5292
5889
  });
@@ -5300,6 +5897,23 @@ const WorktreeDeletedPayload = Schema.Struct({
5300
5897
  deletedAt: IsoDateTime,
5301
5898
  deletedBranch: Schema.Boolean
5302
5899
  });
5900
+ const WorktreeCheckoutRemovedPayload = Schema.Struct({
5901
+ worktreeId: WorktreeId,
5902
+ reason: WorktreeCheckoutRemovalReason,
5903
+ removedAt: IsoDateTime
5904
+ });
5905
+ const WorktreeCheckoutRestoredPayload = Schema.Struct({
5906
+ worktreeId: WorktreeId,
5907
+ worktreePath: TrimmedNonEmptyString,
5908
+ restoredAt: IsoDateTime
5909
+ });
5910
+ const WorktreeRelocatedPayload = Schema.Struct({
5911
+ worktreeId: WorktreeId,
5912
+ projectId: ProjectId,
5913
+ sourcePath: TrimmedNonEmptyString,
5914
+ destinationPath: TrimmedNonEmptyString,
5915
+ relocatedAt: IsoDateTime
5916
+ });
5303
5917
  const ThreadAttachedToWorktreePayload = Schema.Struct({
5304
5918
  threadId: ThreadId,
5305
5919
  worktreeId: WorktreeId,
@@ -5373,6 +5987,16 @@ const OrchestrationEvent = Schema.Union([
5373
5987
  type: Schema.Literal("thread.deleted"),
5374
5988
  payload: ThreadDeletedPayload
5375
5989
  }),
5990
+ Schema.Struct({
5991
+ ...EventBaseFields,
5992
+ type: Schema.Literal("thread.trashed"),
5993
+ payload: ThreadTrashedPayload
5994
+ }),
5995
+ Schema.Struct({
5996
+ ...EventBaseFields,
5997
+ type: Schema.Literal("thread.untrashed"),
5998
+ payload: ThreadUntrashedPayload
5999
+ }),
5376
6000
  Schema.Struct({
5377
6001
  ...EventBaseFields,
5378
6002
  type: Schema.Literal("thread.archived"),
@@ -5403,6 +6027,16 @@ const OrchestrationEvent = Schema.Union([
5403
6027
  type: Schema.Literal("thread.unsettled"),
5404
6028
  payload: ThreadUnsettledPayload
5405
6029
  }),
6030
+ Schema.Struct({
6031
+ ...EventBaseFields,
6032
+ type: Schema.Literal("thread.usage-limit-set"),
6033
+ payload: ThreadUsageLimitSetPayload
6034
+ }),
6035
+ Schema.Struct({
6036
+ ...EventBaseFields,
6037
+ type: Schema.Literal("thread.usage-limit-cleared"),
6038
+ payload: ThreadUsageLimitClearedPayload
6039
+ }),
5406
6040
  Schema.Struct({
5407
6041
  ...EventBaseFields,
5408
6042
  type: Schema.Literal("thread.meta-updated"),
@@ -5543,6 +6177,21 @@ const OrchestrationEvent = Schema.Union([
5543
6177
  type: Schema.Literal("worktree.deleted"),
5544
6178
  payload: WorktreeDeletedPayload
5545
6179
  }),
6180
+ Schema.Struct({
6181
+ ...EventBaseFields,
6182
+ type: Schema.Literal("worktree.checkoutRemoved"),
6183
+ payload: WorktreeCheckoutRemovedPayload
6184
+ }),
6185
+ Schema.Struct({
6186
+ ...EventBaseFields,
6187
+ type: Schema.Literal("worktree.checkoutRestored"),
6188
+ payload: WorktreeCheckoutRestoredPayload
6189
+ }),
6190
+ Schema.Struct({
6191
+ ...EventBaseFields,
6192
+ type: Schema.Literal("worktree.relocated"),
6193
+ payload: WorktreeRelocatedPayload
6194
+ }),
5546
6195
  Schema.Struct({
5547
6196
  ...EventBaseFields,
5548
6197
  type: Schema.Literal("thread.attachedToWorktree"),
@@ -5564,20 +6213,34 @@ const OrchestrationEvent = Schema.Union([
5564
6213
  payload: WorktreeManualPositionSetPayload
5565
6214
  })
5566
6215
  ]);
5567
- const OrchestrationThreadStreamItem = Schema.Union([Schema.Struct({
5568
- kind: Schema.Literal("snapshot"),
5569
- snapshot: OrchestrationThreadDetailSnapshot
5570
- }), Schema.Struct({
5571
- kind: Schema.Literal("event"),
5572
- event: OrchestrationEvent
5573
- })]);
5574
- const OrchestrationThreadWindowStreamItem = Schema.Union([Schema.Struct({
5575
- kind: Schema.Literal("snapshot"),
5576
- snapshot: OrchestrationThreadWindowSnapshot
5577
- }), Schema.Struct({
5578
- kind: Schema.Literal("event"),
5579
- event: OrchestrationEvent
5580
- })]);
6216
+ const OrchestrationThreadStreamItem = Schema.Union([
6217
+ Schema.Struct({
6218
+ kind: Schema.Literal("snapshot"),
6219
+ snapshot: OrchestrationThreadDetailSnapshot
6220
+ }),
6221
+ Schema.Struct({
6222
+ kind: Schema.Literal("resumed"),
6223
+ fromSequence: NonNegativeInt
6224
+ }),
6225
+ Schema.Struct({
6226
+ kind: Schema.Literal("event"),
6227
+ event: OrchestrationEvent
6228
+ })
6229
+ ]);
6230
+ const OrchestrationThreadWindowStreamItem = Schema.Union([
6231
+ Schema.Struct({
6232
+ kind: Schema.Literal("snapshot"),
6233
+ snapshot: OrchestrationThreadWindowSnapshot
6234
+ }),
6235
+ Schema.Struct({
6236
+ kind: Schema.Literal("resumed"),
6237
+ fromSequence: NonNegativeInt
6238
+ }),
6239
+ Schema.Struct({
6240
+ kind: Schema.Literal("event"),
6241
+ event: OrchestrationEvent
6242
+ })
6243
+ ]);
5581
6244
  const OrchestrationCommandReceiptStatus = Schema.Literals(["accepted", "rejected"]);
5582
6245
  const TurnCountRange = Schema.Struct({
5583
6246
  fromTurnCount: NonNegativeInt,
@@ -5815,11 +6478,11 @@ const OrchestrationRpcSchemas = {
5815
6478
  output: OrchestrationThreadStreamItem
5816
6479
  },
5817
6480
  subscribeThreadWindow: {
5818
- input: OrchestrationGetThreadWindowInput,
6481
+ input: OrchestrationSubscribeThreadWindowInput,
5819
6482
  output: OrchestrationThreadWindowStreamItem
5820
6483
  },
5821
6484
  subscribeShell: {
5822
- input: Schema.Struct({}),
6485
+ input: OrchestrationSubscribeShellInput,
5823
6486
  output: OrchestrationShellStreamItem
5824
6487
  }
5825
6488
  };
@@ -5827,8 +6490,20 @@ var OrchestrationGetSnapshotError = class extends Schema.TaggedError()("Orchestr
5827
6490
  message: TrimmedNonEmptyString,
5828
6491
  cause: Schema.optional(Schema.Defect())
5829
6492
  }) {};
6493
+ /**
6494
+ * Machine-readable dispatch failures a client acts on. Absent for every other failure, which a
6495
+ * client only shows by `message`.
6496
+ *
6497
+ * - `chat-project-retired`: a `thread.turn.start` whose `bootstrap.createChatProject` names a
6498
+ * project id this node has already deleted, such as an unused chat removed by startup cleanup.
6499
+ * Nothing was created and the id can never be used again. The client gives the draft a fresh
6500
+ * project id and sends again once.
6501
+ */
6502
+ const OrchestrationDispatchCommandErrorReason = Schema.Literals(["chat-project-retired"]);
5830
6503
  var OrchestrationDispatchCommandError = class extends Schema.TaggedError()("OrchestrationDispatchCommandError", {
5831
6504
  message: TrimmedNonEmptyString,
6505
+ /** Additive: older clients ignore it and show `message`. */
6506
+ reason: Schema.optionalKey(OrchestrationDispatchCommandErrorReason),
5832
6507
  cause: Schema.optional(Schema.Defect())
5833
6508
  }) {};
5834
6509
  var OrchestrationGetTurnDiffError = class extends Schema.TaggedError()("OrchestrationGetTurnDiffError", {
@@ -5969,6 +6644,13 @@ const ClaudeCacheObservation = Schema.Struct({
5969
6644
  providerInstanceId: ProviderInstanceId,
5970
6645
  model: TrimmedNonEmptyString,
5971
6646
  modelSelection: Schema.optional(ModelSelection),
6647
+ /**
6648
+ * The working directory of the runtime that made this request. Claude keeps native
6649
+ * conversations per directory, so once the thread's working directory differs, the next
6650
+ * turn continues in a fresh session instead of resuming this conversation. Absent from
6651
+ * older servers.
6652
+ */
6653
+ cwd: Schema.optional(TrimmedNonEmptyString),
5972
6654
  messageId: TrimmedNonEmptyString,
5973
6655
  directInputTokens: NonNegativeInt,
5974
6656
  cacheReadInputTokens: NonNegativeInt,
@@ -6064,6 +6746,7 @@ const RuntimeErrorClass = Schema.Literals([
6064
6746
  "transport_error",
6065
6747
  "permission_error",
6066
6748
  "validation_error",
6749
+ "usage_limit",
6067
6750
  "unknown"
6068
6751
  ]);
6069
6752
  const TOOL_LIFECYCLE_ITEM_TYPES = [
@@ -6254,7 +6937,25 @@ const ThreadMetadataUpdatedPayload = Schema.Struct({
6254
6937
  });
6255
6938
  const ProviderThreadGoalUpdatedPayload = Schema.Struct({ goal: ThreadGoal });
6256
6939
  const ProviderThreadGoalClearedPayload = Schema.Struct({});
6940
+ /** Billing/work counters are separate from the current context-window gauge. */
6941
+ const ProcessedTokenUsage = Schema.Struct({
6942
+ scope: Schema.Literals([
6943
+ "session",
6944
+ "turn",
6945
+ "request"
6946
+ ]),
6947
+ requestId: Schema.optional(TrimmedNonEmptyStringSchema$1),
6948
+ sessionId: Schema.optional(TrimmedNonEmptyStringSchema$1),
6949
+ /** Includes cache reads and writes. */
6950
+ inputTokens: NonNegativeInt,
6951
+ cachedInputTokens: NonNegativeInt,
6952
+ /** Includes reasoning output; reasoning is not charged a second time. */
6953
+ outputTokens: NonNegativeInt,
6954
+ reasoningOutputTokens: NonNegativeInt,
6955
+ totalTokens: NonNegativeInt
6956
+ });
6257
6957
  const ThreadTokenUsageSnapshot = Schema.Struct({
6958
+ processedUsage: Schema.optional(ProcessedTokenUsage),
6258
6959
  claudeCache: Schema.optional(ClaudeCacheObservation),
6259
6960
  usedTokens: NonNegativeInt,
6260
6961
  totalProcessedTokens: Schema.optional(NonNegativeInt),
@@ -6580,7 +7281,19 @@ const AuthStatusPayload = Schema.Struct({
6580
7281
  error: Schema.optional(TrimmedNonEmptyStringSchema$1)
6581
7282
  });
6582
7283
  const AccountUpdatedPayload = Schema.Struct({ account: Schema.Unknown });
6583
- const AccountRateLimitsUpdatedPayload = Schema.Struct({ rateLimits: Schema.Unknown });
7284
+ /**
7285
+ * Provider-agnostic reading of a rate-limit update. `exhausted` means at least one
7286
+ * window is rejected or at 100%; `resetAt` is when ALL exhausted windows reset, or
7287
+ * null when any of their resets is unknown.
7288
+ */
7289
+ const UsageLimitState = Schema.Struct({
7290
+ exhausted: Schema.Boolean,
7291
+ resetAt: Schema.NullOr(IsoDateTime)
7292
+ });
7293
+ const AccountRateLimitsUpdatedPayload = Schema.Struct({
7294
+ rateLimits: Schema.Unknown,
7295
+ usageLimitState: Schema.optional(UsageLimitState)
7296
+ });
6584
7297
  const McpStatusUpdatedPayload = Schema.Struct({ status: Schema.Unknown });
6585
7298
  const McpOauthCompletedPayload = Schema.Struct({
6586
7299
  success: Schema.Boolean,
@@ -6625,7 +7338,12 @@ const RuntimeWarningPayload = Schema.Struct({
6625
7338
  const RuntimeErrorPayload = Schema.Struct({
6626
7339
  message: TrimmedNonEmptyStringSchema$1,
6627
7340
  class: Schema.optional(RuntimeErrorClass),
6628
- detail: Schema.optional(Schema.Unknown)
7341
+ detail: Schema.optional(Schema.Unknown),
7342
+ /**
7343
+ * Only meaningful for `class: "usage_limit"`: when the limit resets. null = a limit
7344
+ * with an unknown reset; absent = not applicable.
7345
+ */
7346
+ resetAt: Schema.optional(Schema.NullOr(IsoDateTime))
6629
7347
  });
6630
7348
  const ProviderRuntimeSessionStartedEvent = Schema.Struct({
6631
7349
  ...ProviderRuntimeEventBase.fields,
@@ -6995,6 +7713,11 @@ const THREAD_KEYBINDING_COMMANDS = [
6995
7713
  "thread.next",
6996
7714
  ...THREAD_JUMP_KEYBINDING_COMMANDS
6997
7715
  ];
7716
+ /**
7717
+ * Every built-in command a key can be bound to. Some ship without a default
7718
+ * key, so this — not the default keymap — is the list a keybindings editor
7719
+ * offers.
7720
+ */
6998
7721
  const STATIC_KEYBINDING_COMMANDS = [
6999
7722
  "terminal.toggle",
7000
7723
  "terminal.split",
@@ -7010,8 +7733,15 @@ const STATIC_KEYBINDING_COMMANDS = [
7010
7733
  "sidebar.showProjects",
7011
7734
  "chat.new",
7012
7735
  "chat.newLocal",
7736
+ "chat.newWithoutProject",
7013
7737
  "composer.stash",
7014
7738
  "editor.openFavorite",
7739
+ "pane.split",
7740
+ "pane.close",
7741
+ "pane.focusNext",
7742
+ "pane.focusPrevious",
7743
+ "pullRequests.open",
7744
+ "projects.open",
7015
7745
  ...["modelPicker.toggle", ...MODEL_PICKER_JUMP_KEYBINDING_COMMANDS],
7016
7746
  ...THREAD_KEYBINDING_COMMANDS
7017
7747
  ];
@@ -7020,7 +7750,13 @@ const SCRIPT_RUN_COMMAND_PATTERN = Schema.TemplateLiteral([
7020
7750
  Schema.NonEmptyString.check(Schema.isMaxLength(24), Schema.isPattern(/^[a-z0-9][a-z0-9-]*$/)),
7021
7751
  Schema.Literal(".run")
7022
7752
  ]);
7023
- const KeybindingCommand = Schema.Union([Schema.Literals(STATIC_KEYBINDING_COMMANDS), SCRIPT_RUN_COMMAND_PATTERN]);
7753
+ /** Client-owned script commands include the environment and project identity. */
7754
+ const SCOPED_SCRIPT_RUN_COMMAND = Schema.String.check(Schema.isMaxLength(2048), Schema.isPattern(/^projectScript\.[^/]+\/[^/]+\/[a-z0-9][a-z0-9-]{0,23}\.run$/));
7755
+ const KeybindingCommand = Schema.Union([
7756
+ Schema.Literals(STATIC_KEYBINDING_COMMANDS),
7757
+ SCRIPT_RUN_COMMAND_PATTERN,
7758
+ SCOPED_SCRIPT_RUN_COMMAND
7759
+ ]);
7024
7760
  const KeybindingValue = TrimmedString.check(Schema.isMinLength(1), Schema.isMaxLength(64));
7025
7761
  const KeybindingWhen = TrimmedString.check(Schema.isMinLength(1), Schema.isMaxLength(MAX_KEYBINDING_WHEN_LENGTH));
7026
7762
  const KeybindingRule = Schema.Struct({
@@ -7073,6 +7809,10 @@ var KeybindingsConfigError = class extends Schema.TaggedError()("KeybindingsConf
7073
7809
  return `Unable to parse keybindings config at ${this.configPath}: ${this.detail}`;
7074
7810
  }
7075
7811
  };
7812
+ Schema.Struct({
7813
+ rules: KeybindingsConfig,
7814
+ disabledCommands: Schema.Array(KeybindingCommand).check(Schema.isMaxLength(256))
7815
+ });
7076
7816
  //#endregion
7077
7817
  //#region ../../packages/contracts/src/codexResetCredits.ts
7078
7818
  const CodexResetCredit = Schema.Struct({
@@ -7186,6 +7926,233 @@ var StorageError = class extends Schema.TaggedError()("StorageError", { detail:
7186
7926
  }
7187
7927
  };
7188
7928
  //#endregion
7929
+ //#region ../../packages/contracts/src/workspaceLifecycle.ts
7930
+ /**
7931
+ * Workspace lifecycle is separate from conversation lifecycle. No action here ever
7932
+ * deletes a conversation; checkout removal archives the workspace's conversations
7933
+ * by default and keeps their history and the branch. Only an explicit discard
7934
+ * ("Delete workspace") throws work away, and it moves conversations to Trash.
7935
+ */
7936
+ const WorkspaceLifecycleAction = Schema.Literals([
7937
+ "archive",
7938
+ "restore",
7939
+ "remove-checkout",
7940
+ "remove-stale-record",
7941
+ "recreate-checkout"
7942
+ ]);
7943
+ /** `removed`: the record says the checkout is gone. `unavailable`: inspection failed. */
7944
+ const WorkspaceCheckoutState = Schema.Literals([
7945
+ "present",
7946
+ "missing",
7947
+ "removed",
7948
+ "unavailable"
7949
+ ]);
7950
+ const SamplePaths = Schema.Array(Schema.String).check(Schema.isMaxLength(20));
7951
+ const WorkspaceChangeSummary = Schema.Struct({
7952
+ /** Tracked files with staged, unstaged or conflicted changes. */
7953
+ modified: NonNegativeInt,
7954
+ untracked: NonNegativeInt,
7955
+ /** Ignored content that is not a known regenerable cache (credentials, databases, outputs…). */
7956
+ protectedIgnored: NonNegativeInt,
7957
+ protectedIgnoredSample: SamplePaths,
7958
+ /** Ignored caches/build outputs that `git worktree remove` may discard. */
7959
+ regenerableIgnored: NonNegativeInt,
7960
+ regenerableIgnoredSample: SamplePaths,
7961
+ /** Status output exceeded its bound; treated as blocking. */
7962
+ truncated: Schema.Boolean
7963
+ });
7964
+ const WorkspaceConversationCounts = Schema.Struct({
7965
+ active: NonNegativeInt,
7966
+ archived: NonNegativeInt,
7967
+ trashed: NonNegativeInt
7968
+ });
7969
+ const WorkspaceActionAvailability = Schema.Struct({
7970
+ action: WorkspaceLifecycleAction,
7971
+ available: Schema.Boolean,
7972
+ blockers: Schema.Array(Schema.String)
7973
+ });
7974
+ const WorkspaceLifecycleSummary = Schema.Struct({
7975
+ worktreeId: WorktreeId,
7976
+ projectId: ProjectId,
7977
+ title: Schema.String,
7978
+ branch: TrimmedNonEmptyString,
7979
+ path: Schema.NullOr(Schema.String),
7980
+ origin: WorktreeOrigin,
7981
+ /** The project root/main checkout is never a disposable workspace. */
7982
+ main: Schema.Boolean,
7983
+ archivedAt: Schema.NullOr(IsoDateTime),
7984
+ checkoutRemovedAt: Schema.NullOr(IsoDateTime),
7985
+ checkout: WorkspaceCheckoutState,
7986
+ gitRegistered: Schema.NullOr(Schema.Boolean),
7987
+ branchExists: Schema.NullOr(Schema.Boolean),
7988
+ /** Commits on the branch that the project HEAD does not contain. */
7989
+ unmerged: Schema.NullOr(Schema.Boolean),
7990
+ changes: Schema.NullOr(WorkspaceChangeSummary),
7991
+ conversations: WorkspaceConversationCounts,
7992
+ activeWork: Schema.Array(Schema.String),
7993
+ actions: Schema.Array(WorkspaceActionAvailability),
7994
+ /**
7995
+ * Why "Delete workspace" (`remove-checkout` with `discard`) cannot run; empty
7996
+ * when it can. Absent from nodes that predate it.
7997
+ */
7998
+ discardBlockers: Schema.optional(Schema.Array(Schema.String)),
7999
+ inspectedAt: IsoDateTime
8000
+ });
8001
+ const WorkspaceLifecycleListInput = Schema.Struct({ projectId: ProjectId });
8002
+ const WorkspaceLifecycleRequest = Schema.Struct({
8003
+ worktreeId: WorktreeId,
8004
+ action: WorkspaceLifecycleAction,
8005
+ /** Default true for checkout removal and stale-record cleanup; ignored otherwise. */
8006
+ archiveConversations: Schema.optional(Schema.Boolean),
8007
+ /**
8008
+ * Off by default. Only on removal; a verified merged branch, or any branch when
8009
+ * discarding.
8010
+ */
8011
+ deleteBranch: Schema.optional(Schema.Boolean),
8012
+ /**
8013
+ * Off by default; `remove-checkout` only. "Delete workspace": the checkout is
8014
+ * removed even with uncommitted, untracked or ignored files (they are lost),
8015
+ * an unmerged branch may be deleted, and the workspace's conversations move to
8016
+ * Trash instead of the archive. Also finishes a workspace whose checkout is
8017
+ * already removed. Active work still blocks it.
8018
+ */
8019
+ discard: Schema.optional(Schema.Boolean)
8020
+ });
8021
+ const WorkspaceLifecycleEffects = Schema.Struct({
8022
+ archiveWorkspace: Schema.Boolean,
8023
+ restoreWorkspace: Schema.Boolean,
8024
+ removeCheckout: Schema.Boolean,
8025
+ recreateCheckout: Schema.Boolean,
8026
+ recordCheckoutRemoval: Schema.Boolean,
8027
+ stopSessionThreadIds: Schema.Array(ThreadId),
8028
+ archiveConversationIds: Schema.Array(ThreadId),
8029
+ /** Conversations left exactly as they are (already archived, trashed or never used). */
8030
+ unchangedConversations: NonNegativeInt,
8031
+ discardedRegenerableIgnored: NonNegativeInt,
8032
+ deleteBranch: Schema.Boolean,
8033
+ branch: TrimmedNonEmptyString,
8034
+ /** The request discards ("Delete workspace"). Absent from nodes that predate it. */
8035
+ discard: Schema.optional(Schema.Boolean),
8036
+ /** Conversations moved to Trash, where they stay restorable. */
8037
+ trashConversationIds: Schema.optional(Schema.Array(ThreadId)),
8038
+ /** Work that exists nowhere else is lost: changed or untracked files, unmerged commits. */
8039
+ discardsWork: Schema.optional(Schema.Boolean)
8040
+ });
8041
+ const WorkspaceLifecyclePreview = Schema.Struct({
8042
+ request: WorkspaceLifecycleRequest,
8043
+ workspace: WorkspaceLifecycleSummary,
8044
+ effects: WorkspaceLifecycleEffects,
8045
+ /** One-line exact effect, e.g. "Remove 1 checkout, archive 4 conversations, keep history and branch." */
8046
+ summary: Schema.String,
8047
+ details: Schema.Array(Schema.String),
8048
+ blockers: Schema.Array(Schema.String),
8049
+ /** Binds an apply to exactly the state this preview inspected. */
8050
+ fingerprint: TrimmedNonEmptyString
8051
+ });
8052
+ const WorkspaceLifecycleApplyInput = Schema.Struct({
8053
+ ...WorkspaceLifecycleRequest.fields,
8054
+ expectedFingerprint: TrimmedNonEmptyString
8055
+ });
8056
+ const WorkspaceLifecycleStepId = Schema.Literals([
8057
+ "preflight",
8058
+ "stop-sessions",
8059
+ "fence-checkout",
8060
+ "revalidate",
8061
+ "remove-checkout",
8062
+ "recreate-checkout",
8063
+ "update-record",
8064
+ "archive-conversations",
8065
+ "delete-branch"
8066
+ ]);
8067
+ const WorkspaceLifecycleStep = Schema.Struct({
8068
+ id: WorkspaceLifecycleStepId,
8069
+ status: Schema.Literals([
8070
+ "done",
8071
+ "skipped",
8072
+ "failed"
8073
+ ]),
8074
+ detail: Schema.String
8075
+ });
8076
+ /**
8077
+ * `blocked`: nothing changed. `failed`: nothing durable changed. `partial`: some steps
8078
+ * completed (listed truthfully); retrying the same action resumes safely.
8079
+ */
8080
+ const WorkspaceLifecycleOutcome = Schema.Literals([
8081
+ "completed",
8082
+ "blocked",
8083
+ "partial",
8084
+ "failed"
8085
+ ]);
8086
+ const WorkspaceLifecycleResult = Schema.Struct({
8087
+ outcome: WorkspaceLifecycleOutcome,
8088
+ message: Schema.String,
8089
+ steps: Schema.Array(WorkspaceLifecycleStep)
8090
+ });
8091
+ var WorkspaceLifecycleError = class extends Schema.TaggedError()("WorkspaceLifecycleError", { detail: Schema.String }) {
8092
+ get message() {
8093
+ return this.detail;
8094
+ }
8095
+ };
8096
+ const SuggestionDays = Schema.NullOr(Schema.Int.check(Schema.isBetween({
8097
+ minimum: 1,
8098
+ maximum: 3650
8099
+ })));
8100
+ /** `null` turns a suggestion off. Suggestions never act on their own; each needs approval. */
8101
+ const LifecycleSuggestionPolicy = Schema.Struct({
8102
+ archiveInactiveThreadsDays: SuggestionDays,
8103
+ removeArchivedCheckoutsDays: SuggestionDays
8104
+ });
8105
+ const DEFAULT_LIFECYCLE_SUGGESTION_POLICY = {
8106
+ archiveInactiveThreadsDays: 30,
8107
+ removeArchivedCheckoutsDays: 7
8108
+ };
8109
+ const ThreadArchiveSuggestion = Schema.Struct({
8110
+ threadId: ThreadId,
8111
+ projectId: ProjectId,
8112
+ title: Schema.String,
8113
+ lastActivityAt: IsoDateTime
8114
+ });
8115
+ const CheckoutRemovalSuggestion = Schema.Struct({
8116
+ worktreeId: WorktreeId,
8117
+ projectId: ProjectId,
8118
+ title: Schema.String,
8119
+ branch: TrimmedNonEmptyString,
8120
+ /** When the last of its conversations was archived. */
8121
+ archivedSince: IsoDateTime,
8122
+ conversations: NonNegativeInt
8123
+ });
8124
+ const LifecycleSuggestions = Schema.Struct({
8125
+ generatedAt: IsoDateTime,
8126
+ threads: Schema.Array(ThreadArchiveSuggestion),
8127
+ checkouts: Schema.Array(CheckoutRemovalSuggestion)
8128
+ });
8129
+ const TrashedThreadSummary = Schema.Struct({
8130
+ threadId: ThreadId,
8131
+ projectId: ProjectId,
8132
+ projectTitle: Schema.NullOr(Schema.String),
8133
+ /**
8134
+ * The owning project's kind, so a chat is listed as "No project" without the client's project
8135
+ * store. Absent when the project record is gone, or from a node that predates chats; both read
8136
+ * as a regular project.
8137
+ */
8138
+ projectKind: Schema.optionalKey(ProjectKind),
8139
+ /** False when the owning project was removed; restore is unavailable. */
8140
+ projectAvailable: Schema.Boolean,
8141
+ title: Schema.String,
8142
+ branch: Schema.NullOr(Schema.String),
8143
+ worktreePath: Schema.NullOr(Schema.String),
8144
+ worktreeId: Schema.NullOr(WorktreeId),
8145
+ /** Restoring returns the conversation to this archive state. */
8146
+ archivedAt: Schema.NullOr(IsoDateTime),
8147
+ trashedAt: IsoDateTime,
8148
+ createdAt: IsoDateTime,
8149
+ updatedAt: IsoDateTime
8150
+ });
8151
+ const TrashListResult = Schema.Struct({
8152
+ threads: Schema.Array(TrashedThreadSummary),
8153
+ truncated: Schema.Boolean
8154
+ });
8155
+ //#endregion
7189
8156
  //#region ../../packages/contracts/src/settings.ts
7190
8157
  const TimestampFormat = Schema$1.Literals([
7191
8158
  "locale",
@@ -7238,6 +8205,13 @@ const AiFocusRefreshIntervalMs = Schema$1.Literals([
7238
8205
  864e5
7239
8206
  ]);
7240
8207
  const DEFAULT_AI_FOCUS_REFRESH_INTERVAL_MS = 6e5;
8208
+ /**
8209
+ * What Enter does with a message sent while a turn runs: `queue` waits for the turn to finish,
8210
+ * `steer` adds it to the running turn when the provider supports steering. Mod+Enter does the
8211
+ * opposite.
8212
+ */
8213
+ const FollowUpBehavior = Schema$1.Literals(["queue", "steer"]);
8214
+ const DEFAULT_FOLLOW_UP_BEHAVIOR = "queue";
7241
8215
  /** Missing effort is a legacy model-only preset; provider remains the stable instance id. */
7242
8216
  const ModelFavorite = Schema$1.Struct({
7243
8217
  provider: ProviderInstanceId,
@@ -7255,6 +8229,7 @@ const ClientSettingsSchema = Schema$1.Struct({
7255
8229
  dismissedProviderUpdateNotificationKeys: Schema$1.Array(TrimmedNonEmptyString).pipe(Schema$1.withDecodingDefault(Effect.succeed([]))),
7256
8230
  diffIgnoreWhitespace: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(true))),
7257
8231
  diffWordWrap: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(false))),
8232
+ followUpBehavior: FollowUpBehavior.pipe(Schema$1.withDecodingDefault(Effect.succeed(DEFAULT_FOLLOW_UP_BEHAVIOR))),
7258
8233
  favorites: Schema$1.Array(ModelFavorite).pipe(Schema$1.withDecodingDefault(Effect.succeed([]))),
7259
8234
  providerModelPreferences: Schema$1.Record(ProviderInstanceId, Schema$1.Struct({
7260
8235
  hiddenModels: Schema$1.Array(Schema$1.String).pipe(Schema$1.withDecodingDefault(Effect.succeed([]))),
@@ -7526,13 +8501,19 @@ const ServerSettings = Schema$1.Struct({
7526
8501
  environmentIcon: EnvironmentMachineHint.pipe(Schema$1.withDecodingDefault(Effect.succeed(null))),
7527
8502
  enableLegacyTokenStreaming: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(false))),
7528
8503
  enableProviderUpdateChecks: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(true))),
8504
+ continueThreadsAfterRestart: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(false))),
8505
+ autoResumeLimitedThreads: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(false))),
8506
+ snoozeLimitedThreads: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(false))),
7529
8507
  storageRetention: StorageRetentionPolicy.pipe(Schema$1.withDecodingDefault(Effect.succeed({
7530
8508
  automatic: false,
7531
8509
  completedWorktreeDays: null,
7532
8510
  temporaryDataDays: null
7533
8511
  }))),
7534
8512
  projectStorageRetention: Schema$1.Record(Schema$1.String, Schema$1.NullOr(StorageRetentionPolicy)).pipe(Schema$1.withDecodingDefault(Effect.succeed({}))),
8513
+ lifecycleSuggestions: LifecycleSuggestionPolicy.pipe(Schema$1.withDecodingDefault(Effect.succeed(DEFAULT_LIFECYCLE_SUGGESTION_POLICY))),
8514
+ projectLifecycleSuggestions: Schema$1.Record(Schema$1.String, Schema$1.NullOr(LifecycleSuggestionPolicy)).pipe(Schema$1.withDecodingDefault(Effect.succeed({}))),
7535
8515
  worktreeRoot: WorktreeRoot.pipe(Schema$1.withDecodingDefault(Effect.succeed(""))),
8516
+ chatsRoot: WorktreeRoot.pipe(Schema$1.withDecodingDefault(Effect.succeed(""))),
7536
8517
  worktreeSubmodules: WorktreeSubmodules.pipe(Schema$1.withDecodingDefault(Effect.succeed("recursive"))),
7537
8518
  projectWorktreeSubmodules: Schema$1.Record(Schema$1.String, Schema$1.NullOr(WorktreeSubmodules)).pipe(Schema$1.withDecodingDefault(Effect.succeed({}))),
7538
8519
  projectWorktreeRoots: Schema$1.Record(Schema$1.String, Schema$1.NullOr(WorktreeRoot)).pipe(Schema$1.withDecodingDefault(Effect.succeed({}))),
@@ -7627,9 +8608,15 @@ const ServerSettingsPatch = Schema$1.Struct({
7627
8608
  environmentIcon: Schema$1.optionalKey(Schema$1.NullOr(EnvironmentMachineKind)),
7628
8609
  enableLegacyTokenStreaming: Schema$1.optionalKey(Schema$1.Boolean),
7629
8610
  enableProviderUpdateChecks: Schema$1.optionalKey(Schema$1.Boolean),
8611
+ continueThreadsAfterRestart: Schema$1.optionalKey(Schema$1.Boolean),
8612
+ autoResumeLimitedThreads: Schema$1.optionalKey(Schema$1.Boolean),
8613
+ snoozeLimitedThreads: Schema$1.optionalKey(Schema$1.Boolean),
7630
8614
  storageRetention: Schema$1.optionalKey(StorageRetentionPolicy),
7631
8615
  projectStorageRetention: Schema$1.optionalKey(Schema$1.Record(Schema$1.String, Schema$1.NullOr(StorageRetentionPolicy))),
8616
+ lifecycleSuggestions: Schema$1.optionalKey(LifecycleSuggestionPolicy),
8617
+ projectLifecycleSuggestions: Schema$1.optionalKey(Schema$1.Record(Schema$1.String, Schema$1.NullOr(LifecycleSuggestionPolicy))),
7632
8618
  worktreeRoot: Schema$1.optionalKey(WorktreeRoot),
8619
+ chatsRoot: Schema$1.optionalKey(WorktreeRoot),
7633
8620
  worktreeSubmodules: Schema$1.optionalKey(WorktreeSubmodules),
7634
8621
  projectWorktreeSubmodules: Schema$1.optionalKey(Schema$1.Record(Schema$1.String, Schema$1.NullOr(WorktreeSubmodules))),
7635
8622
  projectWorktreeRoots: Schema$1.optionalKey(Schema$1.Record(Schema$1.String, Schema$1.NullOr(WorktreeRoot))),
@@ -7664,6 +8651,7 @@ Schema$1.Struct({
7664
8651
  confirmThreadUnpin: Schema$1.optionalKey(Schema$1.Boolean),
7665
8652
  diffIgnoreWhitespace: Schema$1.optionalKey(Schema$1.Boolean),
7666
8653
  diffWordWrap: Schema$1.optionalKey(Schema$1.Boolean),
8654
+ followUpBehavior: Schema$1.optionalKey(FollowUpBehavior),
7667
8655
  favorites: Schema$1.optionalKey(Schema$1.Array(ModelFavorite)),
7668
8656
  providerModelPreferences: Schema$1.optionalKey(Schema$1.Record(ProviderInstanceId, Schema$1.Struct({
7669
8657
  hiddenModels: Schema$1.Array(Schema$1.String).pipe(Schema$1.withDecodingDefault(Effect.succeed([]))),
@@ -7792,6 +8780,27 @@ const ServerProviderRateLimits = Schema.Struct({
7792
8780
  resetCredits: Schema.optional(CodexResetCredits),
7793
8781
  rateLimitReachedType: Schema.optional(TrimmedNonEmptyString)
7794
8782
  });
8783
+ /**
8784
+ * How a provider version fits this Ryco release, per the server's compatibility policy
8785
+ * (code-owned floors + bundled defaults + remote model manifest).
8786
+ * FROZEN: mobile/desktop clients ship separately and decode whole provider lists with this
8787
+ * schema, so an unknown literal would fail the entire `ServerProvider` list. Never add a member —
8788
+ * put new meanings in a new optional field.
8789
+ */
8790
+ const ServerProviderCompatibilityStatus = Schema.Literals([
8791
+ "unknown",
8792
+ "supported",
8793
+ "graceful",
8794
+ "unsupported",
8795
+ "broken"
8796
+ ]);
8797
+ const ServerProviderCompatibilityAdvisory = Schema.Struct({
8798
+ /** Rating of `ServerProvider.version`. */
8799
+ status: ServerProviderCompatibilityStatus,
8800
+ /** Rating of `versionAdvisory.latestVersion`; absent when no latest version is known. */
8801
+ latestVersionStatus: Schema.optionalKey(ServerProviderCompatibilityStatus),
8802
+ message: Schema.NullOr(TrimmedNonEmptyString)
8803
+ });
7795
8804
  const ServerProviderVersionAdvisoryStatus = Schema.Literals([
7796
8805
  "unknown",
7797
8806
  "current",
@@ -7843,6 +8852,7 @@ const ServerProvider = Schema.Struct({
7843
8852
  showInteractionModeToggle: Schema.optional(Schema.Boolean),
7844
8853
  supportsAskMode: Schema.optional(Schema.Boolean),
7845
8854
  supportsTurnSteering: Schema.optional(Schema.Boolean),
8855
+ supportsConversationRollback: Schema.optional(Schema.Boolean),
7846
8856
  enabled: Schema.Boolean,
7847
8857
  installed: Schema.Boolean,
7848
8858
  version: Schema.NullOr(TrimmedNonEmptyString),
@@ -7857,9 +8867,17 @@ const ServerProvider = Schema.Struct({
7857
8867
  skills: Schema.Array(ServerProviderSkill).pipe(Schema.withDecodingDefault(Effect.succeed([]))),
7858
8868
  rateLimits: Schema.optional(ServerProviderRateLimits),
7859
8869
  versionAdvisory: Schema.optionalKey(ServerProviderVersionAdvisory),
8870
+ compatibilityAdvisory: Schema.optionalKey(ServerProviderCompatibilityAdvisory),
7860
8871
  updateState: Schema.optionalKey(ServerProviderUpdateState)
7861
8872
  });
7862
8873
  const ServerProviders = Schema.Array(ServerProvider);
8874
+ /**
8875
+ * Treat the optional `availability` as "available" when absent. This is
8876
+ * the rule legacy producers (which omit the field) and new producers
8877
+ * (which set it explicitly) agree on so consumers never have to thread
8878
+ * `?? "available"` defaults through their code paths.
8879
+ */
8880
+ const isProviderAvailable = (snapshot) => snapshot.availability !== "unavailable";
7863
8881
  const ServerLocalDiagnosticsMetrics = Schema.Struct({
7864
8882
  turnQuiescenceAvgMs: Schema.NullOr(Schema.Number),
7865
8883
  checkpointDurationP95Ms: Schema.NullOr(Schema.Number),
@@ -7879,12 +8897,32 @@ const ServerObservability = Schema.Struct({
7879
8897
  otlpMetricsEnabled: Schema.Boolean,
7880
8898
  localMetrics: Schema.optional(ServerLocalDiagnosticsMetrics)
7881
8899
  });
8900
+ /**
8901
+ * Why "No project" chats are off on this node:
8902
+ * - `inside-git-repository`: the chats root lies in a Git working tree, so every chat would show
8903
+ * the parent repository's branch and diff.
8904
+ * - `root-unavailable`: the chats root cannot be resolved or created.
8905
+ * - `restricted`: the workspace access policy does not allow the chats root.
8906
+ */
8907
+ const ServerChatsUnavailableReason = Schema.Literals([
8908
+ "inside-git-repository",
8909
+ "root-unavailable",
8910
+ "restricted"
8911
+ ]);
8912
+ /** Absent from nodes without chat support; clients then hide every "No project" entry point. */
8913
+ const ServerChatsCapability = Schema.Struct({
8914
+ available: Schema.Boolean,
8915
+ /** Resolved chats root (symlinks resolved), present when it could be determined. */
8916
+ root: Schema.optionalKey(TrimmedNonEmptyString),
8917
+ unavailableReason: Schema.optionalKey(ServerChatsUnavailableReason)
8918
+ });
7882
8919
  const ServerConfig = Schema.Struct({
7883
8920
  usageContractVersion: Schema.optional(NonNegativeInt),
7884
8921
  environment: ExecutionEnvironmentDescriptor,
7885
8922
  auth: ServerAuthDescriptor,
7886
8923
  cwd: TrimmedNonEmptyString,
7887
8924
  workspaceAccessRoot: Schema.optional(TrimmedNonEmptyString),
8925
+ chats: Schema.optionalKey(ServerChatsCapability),
7888
8926
  keybindingsConfigPath: TrimmedNonEmptyString,
7889
8927
  keybindings: ResolvedKeybindingsConfig,
7890
8928
  issues: ServerConfigIssues,
@@ -9415,6 +10453,24 @@ const GitReadLineBlameResult = Schema.Union([Schema.Struct({
9415
10453
  kind: Schema.Literal("unavailable"),
9416
10454
  reason: Schema.String
9417
10455
  })]);
10456
+ /**
10457
+ * One stored blob named by a review patch's `index` line. Patches without
10458
+ * `--full-index` carry abbreviated IDs. No path, index or working-tree lookup.
10459
+ */
10460
+ const GitReadImageBlobInput = Schema.Struct({
10461
+ cwd: TrimmedNonEmptyStringSchema,
10462
+ oid: Schema.String.check(Schema.isPattern(/^(?:[0-9a-f]{4,40}|[0-9a-f]{64})$/))
10463
+ });
10464
+ /** The mime type is sniffed from the blob's bytes, never from a path. */
10465
+ const GitReadImageBlobResult = Schema.Union([Schema.Struct({
10466
+ kind: Schema.Literal("image"),
10467
+ dataBase64: Schema.String,
10468
+ mimeType: TrimmedNonEmptyStringSchema,
10469
+ sizeBytes: NonNegativeInt
10470
+ }), Schema.Struct({
10471
+ kind: Schema.Literal("unavailable"),
10472
+ reason: Schema.String
10473
+ })]);
9418
10474
  const GitLocalChangesInput = Schema.Struct({ cwd: TrimmedNonEmptyStringSchema });
9419
10475
  const GitLocalChangesScope = Schema.Literals(["staged", "unstaged"]);
9420
10476
  const GitLocalPatch = Schema.Struct({
@@ -9443,6 +10499,402 @@ const GitApplyIndexPatchInput = Schema.Struct({
9443
10499
  hunkIndex: Schema.optional(NonNegativeInt)
9444
10500
  });
9445
10501
  //#endregion
10502
+ //#region ../../packages/contracts/src/changeRequestReview.ts
10503
+ /**
10504
+ * Review conversation, timeline, and lifecycle contracts for the dedicated
10505
+ * pull request page. Unlike `SourceControlChangeRequestDetail`, these payloads
10506
+ * are never attached to agent prompts, so they are bounded by page size
10507
+ * rather than by the composer token budget.
10508
+ */
10509
+ const NonBlankMarkdownBody = Schema.String.check(Schema.makeFilter((body) => body.trim().length > 0 ? void 0 : "Expected a non-blank Markdown body"));
10510
+ /** `left` is the base (deleted) side of a diff, `right` the head (added) side. */
10511
+ const ChangeRequestDiffSide = Schema.Literals(["left", "right"]);
10512
+ const ChangeRequestActor = Schema.Struct({
10513
+ login: TrimmedNonEmptyString,
10514
+ avatarUrl: Schema.optional(Schema.String),
10515
+ isBot: Schema.optional(Schema.Boolean)
10516
+ });
10517
+ const ChangeRequestReviewComment = Schema.Struct({
10518
+ /** Host node id; used for replies, reactions, edits, and deletes. */
10519
+ id: TrimmedNonEmptyString,
10520
+ author: ChangeRequestActor,
10521
+ authorAssociation: Schema.optional(Schema.String),
10522
+ body: Schema.String,
10523
+ createdAt: Schema.DateTimeUtc,
10524
+ updatedAt: Schema.optional(Schema.DateTimeUtc),
10525
+ url: Schema.optional(Schema.String),
10526
+ reactions: Schema.optional(Schema.Array(SourceControlCommentReaction)),
10527
+ /** `pending` comments belong to the viewer's unsubmitted host-side review. */
10528
+ state: Schema.optional(Schema.Literals(["pending", "submitted"])),
10529
+ viewerCanUpdate: Schema.optional(Schema.Boolean),
10530
+ viewerCanDelete: Schema.optional(Schema.Boolean),
10531
+ isMinimized: Schema.optional(Schema.Boolean)
10532
+ });
10533
+ const ChangeRequestReviewThread = Schema.Struct({
10534
+ id: TrimmedNonEmptyString,
10535
+ path: TrimmedNonEmptyString,
10536
+ subjectType: Schema.Literals(["line", "file"]),
10537
+ side: ChangeRequestDiffSide,
10538
+ startSide: Schema.optional(ChangeRequestDiffSide),
10539
+ /** Current anchor line; null when the thread is outdated and no longer maps onto the diff. */
10540
+ line: Schema.NullOr(PositiveInt),
10541
+ startLine: Schema.optional(Schema.NullOr(PositiveInt)),
10542
+ originalLine: Schema.optional(Schema.NullOr(PositiveInt)),
10543
+ originalStartLine: Schema.optional(Schema.NullOr(PositiveInt)),
10544
+ /** Commit the first comment was written on; `originalLine` refers to that commit. */
10545
+ originalCommitOid: Schema.optional(TrimmedNonEmptyString),
10546
+ /** Unified diff excerpt the first comment was written against. */
10547
+ diffHunk: Schema.optional(Schema.String),
10548
+ isResolved: Schema.Boolean,
10549
+ isOutdated: Schema.Boolean,
10550
+ resolvedBy: Schema.optional(TrimmedNonEmptyString),
10551
+ viewerCanReply: Schema.Boolean,
10552
+ viewerCanResolve: Schema.Boolean,
10553
+ viewerCanUnresolve: Schema.Boolean,
10554
+ comments: Schema.Array(ChangeRequestReviewComment),
10555
+ /** Total comments on the host; larger than `comments.length` when paged. */
10556
+ totalComments: NonNegativeInt
10557
+ });
10558
+ const TimelineBase = {
10559
+ id: TrimmedNonEmptyString,
10560
+ createdAt: Schema.DateTimeUtc,
10561
+ actor: Schema.optional(ChangeRequestActor)
10562
+ };
10563
+ const ChangeRequestTimelineComment = Schema.Struct({
10564
+ ...TimelineBase,
10565
+ kind: Schema.Literal("comment"),
10566
+ body: Schema.String,
10567
+ authorAssociation: Schema.optional(Schema.String),
10568
+ updatedAt: Schema.optional(Schema.DateTimeUtc),
10569
+ url: Schema.optional(Schema.String),
10570
+ reactions: Schema.optional(Schema.Array(SourceControlCommentReaction)),
10571
+ viewerCanUpdate: Schema.optional(Schema.Boolean),
10572
+ viewerCanDelete: Schema.optional(Schema.Boolean),
10573
+ isMinimized: Schema.optional(Schema.Boolean)
10574
+ });
10575
+ const ChangeRequestTimelineReview = Schema.Struct({
10576
+ ...TimelineBase,
10577
+ kind: Schema.Literal("review"),
10578
+ state: SourceControlReviewState,
10579
+ body: Schema.String,
10580
+ authorAssociation: Schema.optional(Schema.String),
10581
+ url: Schema.optional(Schema.String),
10582
+ reactions: Schema.optional(Schema.Array(SourceControlCommentReaction)),
10583
+ /** Review threads opened by this review, so the timeline can nest them. */
10584
+ threadIds: Schema.Array(TrimmedNonEmptyString),
10585
+ viewerCanUpdate: Schema.optional(Schema.Boolean)
10586
+ });
10587
+ const ChangeRequestTimelineCommit = Schema.Struct({
10588
+ ...TimelineBase,
10589
+ kind: Schema.Literal("commit"),
10590
+ oid: TrimmedNonEmptyString,
10591
+ shortOid: TrimmedNonEmptyString,
10592
+ messageHeadline: Schema.String,
10593
+ messageBody: Schema.optional(Schema.String),
10594
+ /** Rollup of the commit's checks, when the host reports one. */
10595
+ checkState: Schema.optional(Schema.Literals([
10596
+ "success",
10597
+ "failure",
10598
+ "pending",
10599
+ "neutral"
10600
+ ]))
10601
+ });
10602
+ const ChangeRequestTimelineForcePush = Schema.Struct({
10603
+ ...TimelineBase,
10604
+ kind: Schema.Literal("force-pushed"),
10605
+ beforeOid: Schema.optional(TrimmedNonEmptyString),
10606
+ afterOid: Schema.optional(TrimmedNonEmptyString)
10607
+ });
10608
+ const ChangeRequestTimelineReviewRequest = Schema.Struct({
10609
+ ...TimelineBase,
10610
+ kind: Schema.Literals(["review-requested", "review-request-removed"]),
10611
+ reviewer: TrimmedNonEmptyString,
10612
+ reviewerKind: Schema.Literals([
10613
+ "user",
10614
+ "team",
10615
+ "bot"
10616
+ ])
10617
+ });
10618
+ const ChangeRequestTimelineLabel = Schema.Struct({
10619
+ ...TimelineBase,
10620
+ kind: Schema.Literals(["labeled", "unlabeled"]),
10621
+ label: SourceControlLabel
10622
+ });
10623
+ const ChangeRequestTimelineAssignment = Schema.Struct({
10624
+ ...TimelineBase,
10625
+ kind: Schema.Literals(["assigned", "unassigned"]),
10626
+ assignee: TrimmedNonEmptyString
10627
+ });
10628
+ const ChangeRequestTimelineRename = Schema.Struct({
10629
+ ...TimelineBase,
10630
+ kind: Schema.Literal("renamed"),
10631
+ previousTitle: Schema.String,
10632
+ currentTitle: Schema.String
10633
+ });
10634
+ const ChangeRequestTimelineMerged = Schema.Struct({
10635
+ ...TimelineBase,
10636
+ kind: Schema.Literal("merged"),
10637
+ commitOid: Schema.optional(TrimmedNonEmptyString),
10638
+ baseRefName: Schema.optional(TrimmedNonEmptyString)
10639
+ });
10640
+ const ChangeRequestTimelineLifecycle = Schema.Struct({
10641
+ ...TimelineBase,
10642
+ kind: Schema.Literals([
10643
+ "closed",
10644
+ "reopened",
10645
+ "ready-for-review",
10646
+ "converted-to-draft",
10647
+ "head-ref-deleted",
10648
+ "head-ref-restored"
10649
+ ])
10650
+ });
10651
+ const ChangeRequestTimelineBaseChanged = Schema.Struct({
10652
+ ...TimelineBase,
10653
+ kind: Schema.Literal("base-ref-changed"),
10654
+ previousRefName: Schema.optional(TrimmedNonEmptyString),
10655
+ currentRefName: Schema.optional(TrimmedNonEmptyString)
10656
+ });
10657
+ const ChangeRequestTimelineCrossReference = Schema.Struct({
10658
+ ...TimelineBase,
10659
+ kind: Schema.Literal("cross-referenced"),
10660
+ source: Schema.Struct({
10661
+ kind: Schema.Literals(["issue", "change-request"]),
10662
+ number: PositiveInt,
10663
+ title: Schema.String,
10664
+ url: Schema.String,
10665
+ repository: Schema.optional(TrimmedNonEmptyString),
10666
+ state: Schema.optional(Schema.Literals([
10667
+ "open",
10668
+ "closed",
10669
+ "merged"
10670
+ ]))
10671
+ }),
10672
+ willCloseTarget: Schema.optional(Schema.Boolean)
10673
+ });
10674
+ const ChangeRequestTimelineAutoMerge = Schema.Struct({
10675
+ ...TimelineBase,
10676
+ kind: Schema.Literals(["auto-merge-enabled", "auto-merge-disabled"]),
10677
+ mergeMethod: Schema.optional(SourceControlChangeRequestMergeMethod)
10678
+ });
10679
+ const ChangeRequestTimelineReviewDismissed = Schema.Struct({
10680
+ ...TimelineBase,
10681
+ kind: Schema.Literal("review-dismissed"),
10682
+ reviewAuthor: Schema.optional(TrimmedNonEmptyString),
10683
+ message: Schema.optional(Schema.String)
10684
+ });
10685
+ const ChangeRequestTimelineItem = Schema.Union([
10686
+ ChangeRequestTimelineComment,
10687
+ ChangeRequestTimelineReview,
10688
+ ChangeRequestTimelineCommit,
10689
+ ChangeRequestTimelineForcePush,
10690
+ ChangeRequestTimelineReviewRequest,
10691
+ ChangeRequestTimelineLabel,
10692
+ ChangeRequestTimelineAssignment,
10693
+ ChangeRequestTimelineRename,
10694
+ ChangeRequestTimelineMerged,
10695
+ ChangeRequestTimelineLifecycle,
10696
+ ChangeRequestTimelineBaseChanged,
10697
+ ChangeRequestTimelineCrossReference,
10698
+ ChangeRequestTimelineAutoMerge,
10699
+ ChangeRequestTimelineReviewDismissed
10700
+ ]);
10701
+ const ChangeRequestViewerCapabilities = Schema.Struct({
10702
+ login: TrimmedNonEmptyString,
10703
+ isAuthor: Schema.Boolean,
10704
+ /** Edit title/body/base, labels, assignees, reviewers, draft state, close/reopen. */
10705
+ canUpdate: Schema.Boolean,
10706
+ canMerge: Schema.Boolean,
10707
+ canReview: Schema.Boolean,
10708
+ canUpdateBranch: Schema.Boolean,
10709
+ canEnableAutoMerge: Schema.Boolean,
10710
+ canDisableAutoMerge: Schema.Boolean
10711
+ });
10712
+ const ChangeRequestActivityInput = Schema.Struct({
10713
+ cwd: TrimmedNonEmptyString,
10714
+ reference: TrimmedNonEmptyString
10715
+ });
10716
+ const ChangeRequestActivity = Schema.Struct({
10717
+ provider: SourceControlProviderKind,
10718
+ number: PositiveInt,
10719
+ headSha: Schema.NullOr(TrimmedNonEmptyString),
10720
+ viewer: Schema.NullOr(ChangeRequestViewerCapabilities),
10721
+ /** Chronological (oldest first). */
10722
+ timeline: Schema.Array(ChangeRequestTimelineItem),
10723
+ /** True when older timeline items were dropped to stay within the page budget. */
10724
+ timelineTruncated: Schema.Boolean,
10725
+ reviewThreads: Schema.Array(ChangeRequestReviewThread),
10726
+ reviewThreadsTruncated: Schema.Boolean,
10727
+ /** The viewer's unsubmitted host-side review (e.g. started on the web), if any. */
10728
+ pendingReview: Schema.NullOr(Schema.Struct({
10729
+ id: TrimmedNonEmptyString,
10730
+ commentsCount: NonNegativeInt
10731
+ }))
10732
+ });
10733
+ const ChangeRequestReviewEvent = Schema.Literals([
10734
+ "comment",
10735
+ "approve",
10736
+ "request_changes"
10737
+ ]);
10738
+ const ChangeRequestDraftReviewComment = Schema.Struct({
10739
+ path: TrimmedNonEmptyString,
10740
+ body: NonBlankMarkdownBody,
10741
+ /** `file` comments attach to the whole file and ignore line/side. */
10742
+ subjectType: Schema.optional(Schema.Literals(["line", "file"])),
10743
+ line: Schema.optional(PositiveInt),
10744
+ side: Schema.optional(ChangeRequestDiffSide),
10745
+ startLine: Schema.optional(PositiveInt),
10746
+ startSide: Schema.optional(ChangeRequestDiffSide)
10747
+ });
10748
+ const ChangeRequestSubmitReviewInput = Schema.Struct({
10749
+ cwd: TrimmedNonEmptyString,
10750
+ reference: TrimmedNonEmptyString,
10751
+ event: ChangeRequestReviewEvent,
10752
+ body: Schema.optional(Schema.String),
10753
+ comments: Schema.Array(ChangeRequestDraftReviewComment),
10754
+ /** The head the comments were written against; the host anchors lines to it. */
10755
+ expectedHeadSha: TrimmedNonEmptyString
10756
+ });
10757
+ const ChangeRequestSubmitReviewResult = Schema.Struct({
10758
+ reviewId: TrimmedNonEmptyString,
10759
+ state: SourceControlReviewState,
10760
+ url: Schema.optional(Schema.String)
10761
+ });
10762
+ const ChangeRequestReplyToThreadInput = Schema.Struct({
10763
+ cwd: TrimmedNonEmptyString,
10764
+ reference: TrimmedNonEmptyString,
10765
+ threadId: TrimmedNonEmptyString,
10766
+ body: NonBlankMarkdownBody,
10767
+ clientMutationId: Schema.optional(TrimmedNonEmptyString)
10768
+ });
10769
+ const ChangeRequestReplyToThreadResult = Schema.Struct({ thread: ChangeRequestReviewThread });
10770
+ const ChangeRequestSetThreadResolvedInput = Schema.Struct({
10771
+ cwd: TrimmedNonEmptyString,
10772
+ reference: TrimmedNonEmptyString,
10773
+ threadId: TrimmedNonEmptyString,
10774
+ resolved: Schema.Boolean
10775
+ });
10776
+ const ChangeRequestSetThreadResolvedResult = Schema.Struct({
10777
+ threadId: TrimmedNonEmptyString,
10778
+ isResolved: Schema.Boolean,
10779
+ resolvedBy: Schema.optional(TrimmedNonEmptyString)
10780
+ });
10781
+ const ChangeRequestCommentKind = Schema.Literals([
10782
+ "issue-comment",
10783
+ "review-comment",
10784
+ "review"
10785
+ ]);
10786
+ const ChangeRequestUpdateCommentInput = Schema.Union([Schema.Struct({
10787
+ cwd: TrimmedNonEmptyString,
10788
+ reference: TrimmedNonEmptyString,
10789
+ commentId: TrimmedNonEmptyString,
10790
+ commentKind: ChangeRequestCommentKind,
10791
+ action: Schema.Literal("edit"),
10792
+ body: NonBlankMarkdownBody
10793
+ }), Schema.Struct({
10794
+ cwd: TrimmedNonEmptyString,
10795
+ reference: TrimmedNonEmptyString,
10796
+ commentId: TrimmedNonEmptyString,
10797
+ commentKind: Schema.Literals(["issue-comment", "review-comment"]),
10798
+ action: Schema.Literal("delete")
10799
+ })]);
10800
+ const ChangeRequestUpdateCommentResult = Schema.Struct({
10801
+ commentId: TrimmedNonEmptyString,
10802
+ deleted: Schema.Boolean
10803
+ });
10804
+ const ListEdit = {
10805
+ add: Schema.Array(TrimmedNonEmptyString),
10806
+ remove: Schema.Array(TrimmedNonEmptyString)
10807
+ };
10808
+ const ChangeRequestUpdateAction = Schema.Union([
10809
+ Schema.Struct({
10810
+ kind: Schema.Literal("edit"),
10811
+ title: Schema.optional(TrimmedNonEmptyString),
10812
+ body: Schema.optional(Schema.String),
10813
+ baseRefName: Schema.optional(TrimmedNonEmptyString)
10814
+ }),
10815
+ Schema.Struct({
10816
+ kind: Schema.Literal("set-draft"),
10817
+ draft: Schema.Boolean
10818
+ }),
10819
+ Schema.Struct({
10820
+ kind: Schema.Literal("close"),
10821
+ deleteBranch: Schema.optional(Schema.Boolean)
10822
+ }),
10823
+ Schema.Struct({ kind: Schema.Literal("reopen") }),
10824
+ Schema.Struct({
10825
+ kind: Schema.Literal("reviewers"),
10826
+ ...ListEdit
10827
+ }),
10828
+ Schema.Struct({
10829
+ kind: Schema.Literal("labels"),
10830
+ ...ListEdit
10831
+ }),
10832
+ Schema.Struct({
10833
+ kind: Schema.Literal("assignees"),
10834
+ ...ListEdit
10835
+ }),
10836
+ Schema.Struct({
10837
+ kind: Schema.Literal("update-branch"),
10838
+ method: Schema.Literals(["merge", "rebase"]),
10839
+ expectedHeadSha: TrimmedNonEmptyString
10840
+ }),
10841
+ Schema.Struct({
10842
+ kind: Schema.Literal("auto-merge"),
10843
+ enabled: Schema.Boolean,
10844
+ mergeMethod: Schema.optional(SourceControlChangeRequestMergeMethod),
10845
+ /** When enabling: refuse if the head moved since the user looked (as for merges). */
10846
+ expectedHeadSha: Schema.optional(TrimmedNonEmptyString)
10847
+ }),
10848
+ Schema.Struct({ kind: Schema.Literal("delete-branch") })
10849
+ ]);
10850
+ const ChangeRequestUpdateInput = Schema.Struct({
10851
+ cwd: TrimmedNonEmptyString,
10852
+ reference: TrimmedNonEmptyString,
10853
+ action: ChangeRequestUpdateAction
10854
+ });
10855
+ const ChangeRequestUpdateResult = Schema.Struct({
10856
+ /** Fresh, uncapped (`fullContent`) detail after the action. */
10857
+ detail: SourceControlChangeRequestDetail });
10858
+ const ChangeRequestCreateInput = Schema.Struct({
10859
+ cwd: TrimmedNonEmptyString,
10860
+ baseRefName: TrimmedNonEmptyString,
10861
+ /** Branch name, or `owner:branch` for a fork head. */
10862
+ headRefName: TrimmedNonEmptyString,
10863
+ title: TrimmedNonEmptyString,
10864
+ body: Schema.String,
10865
+ draft: Schema.optional(Schema.Boolean)
10866
+ });
10867
+ const CHANGE_REQUEST_FILE_CONTENTS_MAX_BYTES = 1048576;
10868
+ const ChangeRequestFileContentsInput = Schema.Struct({
10869
+ cwd: TrimmedNonEmptyString,
10870
+ reference: TrimmedNonEmptyString,
10871
+ path: TrimmedNonEmptyString,
10872
+ /** Pre-rename path on the base side, when the file moved. */
10873
+ previousPath: Schema.optional(TrimmedNonEmptyString),
10874
+ /**
10875
+ * Old-side revision. Omit for the whole change request: the server resolves
10876
+ * the merge base of the base branch and `headSha`, matching the PR diff.
10877
+ * Pass the parent commit when the diff is scoped to a single commit.
10878
+ */
10879
+ baseSha: Schema.optional(TrimmedNonEmptyString),
10880
+ headSha: TrimmedNonEmptyString
10881
+ });
10882
+ const ChangeRequestFileContents = Schema.Struct({
10883
+ path: TrimmedNonEmptyString,
10884
+ /** Null when the file does not exist on that side (added/deleted) or is binary. */
10885
+ oldContents: Schema.NullOr(Schema.String),
10886
+ newContents: Schema.NullOr(Schema.String),
10887
+ truncated: Schema.Boolean
10888
+ });
10889
+ /** Server-side involvement filter for change request lists (relative to the viewer). */
10890
+ const ChangeRequestInvolvement = Schema.Literals([
10891
+ "authored",
10892
+ "review-requested",
10893
+ "assigned",
10894
+ "mentioned",
10895
+ "involved"
10896
+ ]);
10897
+ //#endregion
9446
10898
  //#region ../../packages/contracts/src/atlassian.ts
9447
10899
  const AtlassianConnectionKind = Schema.Literals([
9448
10900
  "oauth_3lo",
@@ -10413,6 +11865,15 @@ const AgentControlRequestId = TrimmedNonEmptyString.check(Schema.isMaxLength(128
10413
11865
  * per-provider-runtime, in-memory, thread-bound, and revoked on runtime
10414
11866
  * teardown — none of that credential material appears in this contract.
10415
11867
  */
11868
+ /** Audit-safe target thread state captured at submission and used to reject stale approved plans. */
11869
+ const AgentControlTargetThreadSnapshot = Schema.Struct({
11870
+ threadId: ThreadId,
11871
+ projectId: ProjectId,
11872
+ runtimeMode: RuntimeMode,
11873
+ envMode: ThreadEnvMode,
11874
+ archived: Schema.Boolean,
11875
+ activeTurnId: Schema.NullOr(TurnId)
11876
+ });
10416
11877
  const AgentControlProviderSessionPrincipal = Schema.Struct({
10417
11878
  kind: Schema.Literal("provider-session"),
10418
11879
  threadId: ThreadId,
@@ -10426,28 +11887,26 @@ const AgentControlProviderSessionPrincipal = Schema.Struct({
10426
11887
  originRuntimeMode: Schema.optional(RuntimeMode),
10427
11888
  originEnvMode: Schema.optional(ThreadEnvMode),
10428
11889
  /** Audit-safe target state used to reject stale approved plans. */
10429
- targetSnapshots: Schema.optional(Schema.Array(Schema.Struct({
10430
- threadId: ThreadId,
10431
- projectId: ProjectId,
10432
- runtimeMode: RuntimeMode,
10433
- envMode: ThreadEnvMode,
10434
- archived: Schema.Boolean,
10435
- activeTurnId: Schema.NullOr(TurnId)
10436
- })))
11890
+ targetSnapshots: Schema.optional(Schema.Array(AgentControlTargetThreadSnapshot))
10437
11891
  });
10438
11892
  /**
10439
- * A separately paired local MCP client. Pairing, credential issuance, and
10440
- * scope grants are owned by later PRs; the principal identity is defined
10441
- * here so proposals persist a stable, audit-safe origin from day one.
11893
+ * A separately paired local MCP client. It has no caller thread, so its
11894
+ * privilege evidence is the integration's grant ceiling at submission.
10442
11895
  */
10443
11896
  const AgentControlExternalIntegrationPrincipal = Schema.Struct({
10444
11897
  kind: Schema.Literal("external-integration"),
10445
11898
  integrationId: AgentControlIntegrationId,
10446
11899
  label: Schema.optional(TrimmedNonEmptyString.check(Schema.isMaxLength(120))),
10447
- /** Immutable execution-policy evidence captured when the proposal is created. */
11900
+ /**
11901
+ * Immutable execution-policy evidence captured when the proposal is created:
11902
+ * the task's own policy for created threads, or the integration's runtime
11903
+ * and checkout ceiling for thread control.
11904
+ */
10448
11905
  projectId: Schema.optional(ProjectId),
10449
11906
  runtimeMode: Schema.optional(RuntimeMode),
10450
- envMode: Schema.optional(ThreadEnvMode)
11907
+ envMode: Schema.optional(ThreadEnvMode),
11908
+ /** Audit-safe target state for thread control, used to reject stale approved plans. */
11909
+ targetSnapshots: Schema.optional(Schema.Array(AgentControlTargetThreadSnapshot))
10451
11910
  });
10452
11911
  /** Owner-authored automation only; never accepted from an MCP principal. */
10453
11912
  const AgentControlAutomationOwnerPrincipal = Schema.Struct({
@@ -10471,6 +11930,8 @@ const AgentControlCapability = agentControlSlug.pipe(Schema.brand("AgentControlC
10471
11930
  const AGENT_CONTROL_CAPABILITIES = {
10472
11931
  read: AgentControlCapability.make("read"),
10473
11932
  attachFile: AgentControlCapability.make("files.attach"),
11933
+ /** Preview HTML pages in Ryco's headless browser and show them inline in the caller's thread. */
11934
+ renderHtml: AgentControlCapability.make("html.render"),
10474
11935
  createThreads: AgentControlCapability.make("threads.create"),
10475
11936
  sendMessage: AgentControlCapability.make("threads.send-message"),
10476
11937
  interruptThread: AgentControlCapability.make("threads.interrupt"),
@@ -10498,7 +11959,13 @@ const AGENT_CONTROL_CAPABILITIES = {
10498
11959
  externalReadAutomations: AgentControlCapability.make("external.automations.read"),
10499
11960
  externalManageAutomations: AgentControlCapability.make("external.automations.manage"),
10500
11961
  externalReadActivity: AgentControlCapability.make("external.activity.read"),
10501
- externalReadDiagnostics: AgentControlCapability.make("external.diagnostics.read")
11962
+ externalReadDiagnostics: AgentControlCapability.make("external.diagnostics.read"),
11963
+ externalReadThreads: AgentControlCapability.make("external.threads.read"),
11964
+ externalReadReviews: AgentControlCapability.make("external.reviews.read"),
11965
+ externalReadFiles: AgentControlCapability.make("external.files.read"),
11966
+ externalReadWorkspaces: AgentControlCapability.make("external.workspaces.read"),
11967
+ externalControlThreads: AgentControlCapability.make("external.threads.control"),
11968
+ externalManageWorkspaces: AgentControlCapability.make("external.workspaces.manage")
10502
11969
  };
10503
11970
  const AgentControlActionKind = Schema.Literals([
10504
11971
  "createThreads",
@@ -11711,6 +13178,7 @@ const AgentControlMcpReadDeviceStateResult = Schema.Struct({
11711
13178
  });
11712
13179
  const AgentControlMcpProjectSummary = Schema.Struct({
11713
13180
  projectId: ProjectId,
13181
+ kind: OptionalProjectKind,
11714
13182
  title: TrimmedNonEmptyString,
11715
13183
  createdAt: IsoDateTime,
11716
13184
  updatedAt: IsoDateTime
@@ -12079,7 +13547,24 @@ const AGENT_CONTROL_EXTERNAL_MCP_TOOLS = {
12079
13547
  recentActivity: "ryco_recent_activity",
12080
13548
  orchestrationEvents: "ryco_orchestration_events",
12081
13549
  providerRuntimeEvents: "ryco_provider_runtime_events",
12082
- diagnosticsSummary: "ryco_diagnostics_summary"
13550
+ diagnosticsSummary: "ryco_diagnostics_summary",
13551
+ readControlRequest: "ryco_read_control_request",
13552
+ waitForControlRequest: "ryco_wait_for_control_request",
13553
+ listThreads: "ryco_list_threads",
13554
+ readThread: "ryco_read_thread",
13555
+ searchThreads: "ryco_search_threads",
13556
+ waitThreads: "ryco_wait_threads",
13557
+ inspectThread: "ryco_inspect_thread",
13558
+ readThreadDiff: "ryco_read_thread_diff",
13559
+ readThreadFile: "ryco_read_thread_file",
13560
+ readProject: "ryco_read_project",
13561
+ listWorkspaces: "ryco_list_workspaces",
13562
+ readWorkspace: "ryco_read_workspace",
13563
+ sendMessage: "ryco_send_message",
13564
+ interruptThread: "ryco_interrupt_thread",
13565
+ updateThread: "ryco_update_thread",
13566
+ planWorkspace: "ryco_plan_workspace_lifecycle",
13567
+ proposeWorkspace: "ryco_propose_workspace_lifecycle"
12083
13568
  };
12084
13569
  const AGENT_CONTROL_EXTERNAL_MCP_TOOL_NAMES = Object.values(AGENT_CONTROL_EXTERNAL_MCP_TOOLS);
12085
13570
  const AgentControlExternalCreateTaskInput = Schema.Struct({
@@ -12268,6 +13753,107 @@ const ProjectReadIconResult = Schema.NullOr(Schema.Struct({
12268
13753
  ])
12269
13754
  }));
12270
13755
  var ProjectReadIconError = class extends Schema.TaggedError()("ProjectReadIconError", { message: TrimmedNonEmptyString }) {};
13756
+ /** Server-local absolute directory; access and filesystem validation belong to the server. */
13757
+ const ProjectChatDestination = TrimmedNonEmptyString.check(Schema.isMaxLength(4096));
13758
+ /**
13759
+ * Where a promoted chat folder would go. Only `available` can be promoted:
13760
+ * - `exists`: something is already at the destination, or another chat is moving there.
13761
+ * - `invalid`: not an absolute path, or its parent is missing or not a writable directory.
13762
+ * - `access-denied`: the workspace access policy rejects it.
13763
+ * - `inside-chats`: it lies inside the chats root.
13764
+ * - `inside-source`: it lies inside the chat folder being moved.
13765
+ * - `retired-checkout`: it is at or inside a workspace checkout Ryco removed (or is removing or
13766
+ * moving). The server keeps new work out of such paths, so a project there could never run.
13767
+ */
13768
+ const ProjectChatDestinationStatus = Schema.Literals([
13769
+ "available",
13770
+ "exists",
13771
+ "invalid",
13772
+ "access-denied",
13773
+ "inside-chats",
13774
+ "inside-source",
13775
+ "retired-checkout"
13776
+ ]);
13777
+ const ProjectsPromoteChatPreviewInput = Schema.Struct({
13778
+ projectId: ProjectId,
13779
+ /** Absent previews the default destination. Any text is accepted and judged in the result. */
13780
+ destination: Schema.optional(Schema.String.check(Schema.isMaxLength(4096)))
13781
+ });
13782
+ /** Read-only: previewing never creates, moves or locks anything. */
13783
+ const ProjectsPromoteChatPreviewResult = Schema.Struct({
13784
+ projectId: ProjectId,
13785
+ /** The chat folder that would move. */
13786
+ source: TrimmedNonEmptyString,
13787
+ /**
13788
+ * A free folder under `addProjectBaseDirectory` (or its default): `<slug>` when nothing is there,
13789
+ * otherwise the first free `<slug>-2`, `<slug>-3`, …
13790
+ */
13791
+ defaultDestination: TrimmedNonEmptyString,
13792
+ /** The destination that was judged: the input's (normalized) or the default. */
13793
+ destination: Schema.String,
13794
+ destinationStatus: ProjectChatDestinationStatus,
13795
+ fileCount: NonNegativeInt,
13796
+ totalBytes: NonNegativeInt,
13797
+ /** The scan stopped at its bound; the counts are lower limits. */
13798
+ countTruncated: Schema.Boolean,
13799
+ /** Threads with live work (running turn, pending approval or input, queued dispatch). */
13800
+ busyThreadIds: Schema.Array(ThreadId),
13801
+ gitAvailable: Schema.Boolean,
13802
+ /** Whether `user.name` and `user.email` resolve, so an initial commit can succeed. */
13803
+ gitIdentityConfigured: Schema.Boolean,
13804
+ /** Source and destination are on different devices: the move is a copy, then a delete. */
13805
+ crossDevice: Schema.Boolean
13806
+ });
13807
+ const ProjectsPromoteChatInput = Schema.Struct({
13808
+ projectId: ProjectId,
13809
+ /** Compare-and-set guard against the project as previewed. */
13810
+ expectedUpdatedAt: Schema.optional(IsoDateTime),
13811
+ title: TrimmedNonEmptyString.check(Schema.isMaxLength(200)),
13812
+ destination: ProjectChatDestination,
13813
+ initializeGit: Schema.Boolean,
13814
+ /** Ignored unless `initializeGit`. */
13815
+ initialCommit: Schema.Boolean,
13816
+ /** Ignored unless `initializeGit`; never overwrites an existing `.gitignore`. */
13817
+ writeGitignore: Schema.Boolean
13818
+ });
13819
+ const ProjectsPromoteChatResult = Schema.Struct({
13820
+ projectId: ProjectId,
13821
+ workspaceRoot: TrimmedNonEmptyString,
13822
+ gitInitialized: Schema.Boolean,
13823
+ initialCommitCreated: Schema.Boolean,
13824
+ /** The project was promoted, but its first commit failed (for example, no Git identity). */
13825
+ commitError: Schema.optional(Schema.String)
13826
+ });
13827
+ /**
13828
+ * The explicit "Also delete files" step for a chat. Refused while the chat still has threads, and
13829
+ * never removes anything outside the chats root.
13830
+ */
13831
+ const ProjectsDeleteChatFolderInput = Schema.Struct({ projectId: ProjectId });
13832
+ const ProjectsDeleteChatFolderResult = Schema.Struct({
13833
+ /** False when the folder was already gone. */
13834
+ deleted: Schema.Boolean });
13835
+ const ProjectChatErrorReason = Schema.Literals([
13836
+ "not-found",
13837
+ "not-chat",
13838
+ "busy",
13839
+ "stale",
13840
+ "destination-exists",
13841
+ "destination-invalid",
13842
+ "destination-inside-chats",
13843
+ "destination-inside-source",
13844
+ "destination-retired-checkout",
13845
+ "access-denied",
13846
+ "move-failed",
13847
+ "git-failed",
13848
+ "chats-unavailable",
13849
+ "has-threads",
13850
+ "outside-chats-root"
13851
+ ]);
13852
+ /** One error for every chat-folder RPC; `reason` is the stable, machine-readable part. */
13853
+ var ProjectChatError = class extends Schema.TaggedError()("ProjectChatError", {
13854
+ reason: ProjectChatErrorReason,
13855
+ message: TrimmedNonEmptyString
13856
+ }) {};
12271
13857
  //#endregion
12272
13858
  //#region ../../packages/contracts/src/filesystem.ts
12273
13859
  const FILESYSTEM_PATH_MAX_LENGTH = 512;
@@ -12291,6 +13877,195 @@ var FilesystemBrowseError = class extends Schema.TaggedError()("FilesystemBrowse
12291
13877
  cause: Schema.optional(Schema.Defect())
12292
13878
  }) {};
12293
13879
  //#endregion
13880
+ //#region ../../packages/contracts/src/localTasks.ts
13881
+ const LocalTaskId = Schema.String.check(Schema.isPattern(/^[a-zA-Z0-9_-]{1,128}$/));
13882
+ const Title = Schema.String.check(Schema.isMinLength(1), Schema.isMaxLength(500));
13883
+ const Notes = Schema.String.check(Schema.isMaxLength(2e4));
13884
+ const LocalTaskPriority = Schema.Literals([
13885
+ "low",
13886
+ "normal",
13887
+ "high",
13888
+ "urgent"
13889
+ ]);
13890
+ const LocalTaskFields = {
13891
+ title: Title,
13892
+ notes: Notes,
13893
+ priority: LocalTaskPriority,
13894
+ dueAt: Schema.NullOr(IsoDateTime),
13895
+ projectId: Schema.NullOr(ProjectId)
13896
+ };
13897
+ const LocalTaskStatus = Schema.Literals([
13898
+ "todo",
13899
+ "starting",
13900
+ "running",
13901
+ "needs-you",
13902
+ "review",
13903
+ "failed",
13904
+ "unavailable",
13905
+ "done"
13906
+ ]);
13907
+ const LocalTask = Schema.Struct({
13908
+ taskId: LocalTaskId,
13909
+ revision: NonNegativeInt,
13910
+ ...LocalTaskFields,
13911
+ state: Schema.Literals(["todo", "done"]),
13912
+ status: LocalTaskStatus,
13913
+ delegation: Schema.NullOr(Schema.Struct({
13914
+ threadId: ThreadId,
13915
+ messageId: MessageId,
13916
+ commandId: CommandId,
13917
+ dispatched: Schema.Boolean
13918
+ })),
13919
+ createdAt: IsoDateTime,
13920
+ updatedAt: IsoDateTime
13921
+ });
13922
+ const LocalTaskCreateInput = Schema.Struct({
13923
+ taskId: LocalTaskId,
13924
+ ...LocalTaskFields
13925
+ });
13926
+ const LocalTaskUpdateInput = Schema.Struct({
13927
+ taskId: LocalTaskId,
13928
+ expectedRevision: NonNegativeInt,
13929
+ title: Schema.optional(Title),
13930
+ notes: Schema.optional(Notes),
13931
+ priority: Schema.optional(LocalTaskPriority),
13932
+ dueAt: Schema.optional(Schema.NullOr(IsoDateTime)),
13933
+ projectId: Schema.optional(Schema.NullOr(ProjectId)),
13934
+ state: Schema.optional(Schema.Literals(["todo", "done"]))
13935
+ });
13936
+ const LocalTaskDeleteInput = Schema.Struct({
13937
+ taskId: LocalTaskId,
13938
+ expectedRevision: NonNegativeInt
13939
+ });
13940
+ const LocalTaskListInput = Schema.Struct({
13941
+ limit: Schema.optional(Schema.Int.check(Schema.isBetween({
13942
+ minimum: 1,
13943
+ maximum: 100
13944
+ }))),
13945
+ afterId: Schema.optional(LocalTaskId)
13946
+ });
13947
+ const LocalTaskListResult = Schema.Struct({
13948
+ tasks: Schema.Array(LocalTask),
13949
+ nextCursor: Schema.NullOr(LocalTaskId)
13950
+ });
13951
+ const LocalTaskDelegateInput = Schema.Struct({
13952
+ taskId: LocalTaskId,
13953
+ expectedRevision: NonNegativeInt,
13954
+ command: ClientThreadTurnStartCommand
13955
+ });
13956
+ var LocalTaskError = class extends Schema.TaggedError()("LocalTaskError", {
13957
+ reason: Schema.Literals([
13958
+ "not-found",
13959
+ "conflict",
13960
+ "invalid",
13961
+ "persistence"
13962
+ ]),
13963
+ message: Schema.String
13964
+ }) {};
13965
+ //#endregion
13966
+ //#region ../../packages/contracts/src/notes.ts
13967
+ /** `worktree` belongs to one checkout; `project` is shared by the whole project. */
13968
+ const NoteScope = Schema.Literals(["worktree", "project"]);
13969
+ /** Free text; empty is a cleared document. */
13970
+ const NoteBody = Schema.String.check(Schema.isMaxLength(1e5));
13971
+ /**
13972
+ * One free-text notes document: a checkout's (`scope: "worktree"`, keyed by
13973
+ * its worktree, `null` for the main checkout) or the project's own
13974
+ * (`scope: "project"`, always `worktreeId: null`).
13975
+ */
13976
+ const NotesDocument = Schema.Struct({
13977
+ projectId: ProjectId,
13978
+ scope: NoteScope,
13979
+ worktreeId: Schema.NullOr(WorktreeId),
13980
+ body: NoteBody,
13981
+ /** Bumped by every save; a document never saved is revision 0 and is not listed. */
13982
+ revision: NonNegativeInt,
13983
+ updatedAt: IsoDateTime
13984
+ });
13985
+ const NotesListInput = Schema.Struct({ projectId: ProjectId });
13986
+ const NotesSnapshot = Schema.Struct({
13987
+ projectId: ProjectId,
13988
+ /** The project's document and every live checkout's, in no particular order. */
13989
+ documents: Schema.Array(NotesDocument)
13990
+ });
13991
+ /** Replaces one document's body; judged against the revision the edit started from. */
13992
+ const NotesCommand = Schema.Struct({
13993
+ kind: Schema.Literal("save"),
13994
+ projectId: ProjectId,
13995
+ scope: NoteScope,
13996
+ /** Must be `null` for the project's document. */
13997
+ worktreeId: Schema.NullOr(WorktreeId),
13998
+ body: NoteBody,
13999
+ /** The revision the edit was based on (0 for a document never saved). */
14000
+ expectedRevision: NonNegativeInt
14001
+ }).annotate({ parseOptions: { onExcessProperty: "error" } });
14002
+ var NotesError = class extends Schema.TaggedError()("NotesError", {
14003
+ reason: Schema.Literals([
14004
+ "conflict",
14005
+ "invalid",
14006
+ "persistence"
14007
+ ]),
14008
+ message: Schema.String
14009
+ }) {};
14010
+ //#endregion
14011
+ //#region ../../packages/contracts/src/dailyRecap.ts
14012
+ const DailyRecapRequest = Schema.Struct({
14013
+ date: UsageCalendarDate,
14014
+ timeZone: TrimmedNonEmptyString,
14015
+ /** Maximum threads in each section; defaults to 20. Counts remain complete. */
14016
+ limit: Schema.optional(PositiveInt.check(Schema.isLessThanOrEqualTo(50)))
14017
+ });
14018
+ const DailyRecapThread = Schema.Struct({
14019
+ threadId: ThreadId,
14020
+ threadTitle: Schema.String,
14021
+ projectId: ProjectId,
14022
+ projectTitle: Schema.String,
14023
+ lastActivityAt: IsoDateTime
14024
+ });
14025
+ const DailyRecapAttentionThread = Schema.Struct({
14026
+ ...DailyRecapThread.fields,
14027
+ pendingApprovals: NonNegativeInt,
14028
+ pendingUserInputs: NonNegativeInt,
14029
+ hasProposedPlan: Schema.Boolean,
14030
+ sessionError: Schema.Boolean
14031
+ });
14032
+ const DailyRecapThreadSection = Schema.Struct({
14033
+ totalThreads: NonNegativeInt,
14034
+ threads: Schema.Array(DailyRecapThread),
14035
+ truncated: Schema.Boolean
14036
+ });
14037
+ const DailyRecapSnapshot = Schema.Struct({
14038
+ date: UsageCalendarDate,
14039
+ timeZone: TrimmedNonEmptyString,
14040
+ generatedAt: IsoDateTime,
14041
+ /** Exact UTC interval for the selected local calendar day; end is exclusive. */
14042
+ from: IsoDateTime,
14043
+ to: IsoDateTime,
14044
+ /** Ryco turn outcomes in this day, excluding deleted threads and projects. */
14045
+ counts: Schema.Struct({
14046
+ completedTurns: NonNegativeInt,
14047
+ failedTurns: NonNegativeInt,
14048
+ interruptedTurns: NonNegativeInt
14049
+ }),
14050
+ /** Sections are independent: a thread may have both successful and failed turns. */
14051
+ completed: DailyRecapThreadSection,
14052
+ failed: DailyRecapThreadSection,
14053
+ /** Current outstanding attention, regardless of the selected day; excludes archived threads. */
14054
+ needsAttention: Schema.Struct({
14055
+ totalThreads: NonNegativeInt,
14056
+ threads: Schema.Array(DailyRecapAttentionThread),
14057
+ truncated: Schema.Boolean
14058
+ })
14059
+ });
14060
+ var DailyRecapReadError = class extends Schema.TaggedError()("DailyRecapReadError", {
14061
+ reason: Schema.Literals([
14062
+ "invalid-date",
14063
+ "invalid-time-zone",
14064
+ "query-failed"
14065
+ ]),
14066
+ detail: TrimmedNonEmptyString
14067
+ }) {};
14068
+ //#endregion
12294
14069
  //#region ../../packages/contracts/src/sessionImport.ts
12295
14070
  const SessionImportSource = Schema.Literals(["codex", "claudeAgent"]);
12296
14071
  const ImportKey = Schema.String.check(Schema.isPattern(/^[a-f0-9]{64}$/));
@@ -12478,6 +14253,7 @@ const WS_METHODS = {
12478
14253
  vcsRefreshStatus: "vcs.refreshStatus",
12479
14254
  vcsListRefs: "vcs.listRefs",
12480
14255
  vcsReadLineBlame: "vcs.readLineBlame",
14256
+ vcsReadImageBlob: "vcs.readImageBlob",
12481
14257
  vcsReadLocalChanges: "vcs.readLocalChanges",
12482
14258
  vcsApplyIndexPatch: "vcs.applyIndexPatch",
12483
14259
  vcsReadComparison: "vcs.readComparison",
@@ -12494,10 +14270,18 @@ const WS_METHODS = {
12494
14270
  gitArchiveWorktree: "git.archiveWorktree",
12495
14271
  gitRestoreWorktree: "git.restoreWorktree",
12496
14272
  gitDeleteWorktree: "git.deleteWorktree",
14273
+ lifecycleListWorkspaces: "lifecycle.listWorkspaces",
14274
+ lifecyclePreviewWorkspace: "lifecycle.previewWorkspace",
14275
+ lifecycleApplyWorkspace: "lifecycle.applyWorkspace",
14276
+ lifecycleSuggestions: "lifecycle.suggestions",
14277
+ lifecycleListTrash: "lifecycle.listTrash",
12497
14278
  threadsSetManualBucket: "threads.setManualBucket",
12498
14279
  threadsSetManualPosition: "threads.setManualPosition",
12499
14280
  worktreesSetManualPosition: "worktrees.setManualPosition",
12500
14281
  projectsInitializeGit: "projects.initializeGit",
14282
+ projectsPromoteChatPreview: "projects.promoteChatPreview",
14283
+ projectsPromoteChat: "projects.promoteChat",
14284
+ projectsDeleteChatFolder: "projects.deleteChatFolder",
12501
14285
  searchThreadMessages: "threads.searchMessages",
12502
14286
  threadPriorityEnsureCurrent: "threadPriority.ensureCurrent",
12503
14287
  terminalOpen: "terminal.open",
@@ -12515,6 +14299,15 @@ const WS_METHODS = {
12515
14299
  serverAuthenticateAcpRegistry: "server.authenticateAcpRegistry",
12516
14300
  serverReadCodexResetCredits: "server.readCodexResetCredits",
12517
14301
  serverConsumeCodexResetCredit: "server.consumeCodexResetCredit",
14302
+ serverListLocalTasks: "server.listLocalTasks",
14303
+ serverGetLocalTask: "server.getLocalTask",
14304
+ serverCreateLocalTask: "server.createLocalTask",
14305
+ serverUpdateLocalTask: "server.updateLocalTask",
14306
+ serverDeleteLocalTask: "server.deleteLocalTask",
14307
+ serverDelegateLocalTask: "server.delegateLocalTask",
14308
+ serverGetDailyRecap: "server.getDailyRecap",
14309
+ notesList: "notes.list",
14310
+ notesCommand: "notes.command",
12518
14311
  serverRefreshProviders: "server.refreshProviders",
12519
14312
  serverUpdateProvider: "server.updateProvider",
12520
14313
  serverUpsertKeybinding: "server.upsertKeybinding",
@@ -12564,6 +14357,14 @@ const WS_METHODS = {
12564
14357
  sourceControlGetWorkflowRunJobs: "sourceControl.getWorkflowRunJobs",
12565
14358
  sourceControlGetWorkflowJobLog: "sourceControl.getWorkflowJobLog",
12566
14359
  sourceControlRerunWorkflow: "sourceControl.rerunWorkflow",
14360
+ sourceControlGetChangeRequestActivity: "sourceControl.getChangeRequestActivity",
14361
+ sourceControlGetChangeRequestFileContents: "sourceControl.getChangeRequestFileContents",
14362
+ sourceControlSubmitChangeRequestReview: "sourceControl.submitChangeRequestReview",
14363
+ sourceControlReplyToReviewThread: "sourceControl.replyToReviewThread",
14364
+ sourceControlSetReviewThreadResolved: "sourceControl.setReviewThreadResolved",
14365
+ sourceControlUpdateChangeRequestComment: "sourceControl.updateChangeRequestComment",
14366
+ sourceControlUpdateChangeRequest: "sourceControl.updateChangeRequest",
14367
+ sourceControlCreateChangeRequest: "sourceControl.createChangeRequest",
12567
14368
  textGenerationGenerateIssueContent: "textGeneration.generateIssueContent",
12568
14369
  textGenerationAskSideQuestion: "textGeneration.askSideQuestion",
12569
14370
  textGenerationCancelSideQuestion: "textGeneration.cancelSideQuestion",
@@ -12767,6 +14568,55 @@ const WsServerConsumeCodexResetCreditRpc = Rpc.make(WS_METHODS.serverConsumeCode
12767
14568
  success: Schema.Struct({ outcome: CodexResetCreditOutcome }),
12768
14569
  error: Schema.Union([CodexResetCreditError, AuthRpcError])
12769
14570
  });
14571
+ const WsServerListLocalTasksRpc = Rpc.make(WS_METHODS.serverListLocalTasks, {
14572
+ payload: LocalTaskListInput,
14573
+ success: LocalTaskListResult,
14574
+ error: Schema.Union([LocalTaskError, AuthRpcError])
14575
+ });
14576
+ const WsServerGetLocalTaskRpc = Rpc.make(WS_METHODS.serverGetLocalTask, {
14577
+ payload: Schema.Struct({ taskId: LocalTaskId }),
14578
+ success: LocalTask,
14579
+ error: Schema.Union([LocalTaskError, AuthRpcError])
14580
+ });
14581
+ const WsServerCreateLocalTaskRpc = Rpc.make(WS_METHODS.serverCreateLocalTask, {
14582
+ payload: LocalTaskCreateInput,
14583
+ success: LocalTask,
14584
+ error: Schema.Union([LocalTaskError, AuthRpcError])
14585
+ });
14586
+ const WsServerUpdateLocalTaskRpc = Rpc.make(WS_METHODS.serverUpdateLocalTask, {
14587
+ payload: LocalTaskUpdateInput,
14588
+ success: LocalTask,
14589
+ error: Schema.Union([LocalTaskError, AuthRpcError])
14590
+ });
14591
+ const WsServerDeleteLocalTaskRpc = Rpc.make(WS_METHODS.serverDeleteLocalTask, {
14592
+ payload: LocalTaskDeleteInput,
14593
+ success: Schema.Struct({ deleted: Schema.Literal(true) }),
14594
+ error: Schema.Union([LocalTaskError, AuthRpcError])
14595
+ });
14596
+ const WsServerDelegateLocalTaskRpc = Rpc.make(WS_METHODS.serverDelegateLocalTask, {
14597
+ payload: LocalTaskDelegateInput,
14598
+ success: LocalTask,
14599
+ error: Schema.Union([
14600
+ LocalTaskError,
14601
+ AuthRpcError,
14602
+ OrchestrationDispatchCommandError
14603
+ ])
14604
+ });
14605
+ const WsNotesListRpc = Rpc.make(WS_METHODS.notesList, {
14606
+ payload: NotesListInput,
14607
+ success: NotesSnapshot,
14608
+ error: Schema.Union([NotesError, AuthRpcError])
14609
+ });
14610
+ const WsNotesCommandRpc = Rpc.make(WS_METHODS.notesCommand, {
14611
+ payload: NotesCommand,
14612
+ success: NotesSnapshot,
14613
+ error: Schema.Union([NotesError, AuthRpcError])
14614
+ });
14615
+ const WsServerGetDailyRecapRpc = Rpc.make(WS_METHODS.serverGetDailyRecap, {
14616
+ payload: DailyRecapRequest,
14617
+ success: DailyRecapSnapshot,
14618
+ error: Schema.Union([DailyRecapReadError, AuthRpcError])
14619
+ });
12770
14620
  const WsServerRefreshProvidersRpc = Rpc.make(WS_METHODS.serverRefreshProviders, {
12771
14621
  payload: Schema.Struct({
12772
14622
  /**
@@ -12945,7 +14795,9 @@ const WsSourceControlListChangeRequestsRpc = Rpc.make(WS_METHODS.sourceControlLi
12945
14795
  "all"
12946
14796
  ]),
12947
14797
  limit: Schema.optional(Schema.Number),
12948
- query: Schema.optional(Schema.String)
14798
+ query: Schema.optional(Schema.String),
14799
+ /** Narrow to change requests involving the authenticated viewer. */
14800
+ involvement: Schema.optional(ChangeRequestInvolvement)
12949
14801
  }),
12950
14802
  success: Schema.Array(ChangeRequest),
12951
14803
  error: Schema.Union([SourceControlProviderError, AuthRpcError])
@@ -12982,7 +14834,9 @@ const WsSourceControlGetChangeRequestDiffRpc = Rpc.make(WS_METHODS.sourceControl
12982
14834
  payload: Schema.Struct({
12983
14835
  cwd: Schema.String,
12984
14836
  reference: Schema.String,
12985
- expectedHeadSha: Schema.optional(TrimmedNonEmptyString)
14837
+ expectedHeadSha: Schema.optional(TrimmedNonEmptyString),
14838
+ /** Scope the diff to a single commit of the change request. */
14839
+ commitSha: Schema.optional(TrimmedNonEmptyString)
12986
14840
  }),
12987
14841
  success: Schema.String,
12988
14842
  error: Schema.Union([SourceControlProviderError, AuthRpcError])
@@ -13051,6 +14905,46 @@ const WsSourceControlRerunWorkflowRpc = Rpc.make(WS_METHODS.sourceControlRerunWo
13051
14905
  success: SourceControlWorkflowRerunResult,
13052
14906
  error: Schema.Union([SourceControlProviderError, AuthRpcError])
13053
14907
  });
14908
+ const WsSourceControlGetChangeRequestActivityRpc = Rpc.make(WS_METHODS.sourceControlGetChangeRequestActivity, {
14909
+ payload: ChangeRequestActivityInput,
14910
+ success: ChangeRequestActivity,
14911
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14912
+ });
14913
+ const WsSourceControlGetChangeRequestFileContentsRpc = Rpc.make(WS_METHODS.sourceControlGetChangeRequestFileContents, {
14914
+ payload: ChangeRequestFileContentsInput,
14915
+ success: ChangeRequestFileContents,
14916
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14917
+ });
14918
+ const WsSourceControlSubmitChangeRequestReviewRpc = Rpc.make(WS_METHODS.sourceControlSubmitChangeRequestReview, {
14919
+ payload: ChangeRequestSubmitReviewInput,
14920
+ success: ChangeRequestSubmitReviewResult,
14921
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14922
+ });
14923
+ const WsSourceControlReplyToReviewThreadRpc = Rpc.make(WS_METHODS.sourceControlReplyToReviewThread, {
14924
+ payload: ChangeRequestReplyToThreadInput,
14925
+ success: ChangeRequestReplyToThreadResult,
14926
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14927
+ });
14928
+ const WsSourceControlSetReviewThreadResolvedRpc = Rpc.make(WS_METHODS.sourceControlSetReviewThreadResolved, {
14929
+ payload: ChangeRequestSetThreadResolvedInput,
14930
+ success: ChangeRequestSetThreadResolvedResult,
14931
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14932
+ });
14933
+ const WsSourceControlUpdateChangeRequestCommentRpc = Rpc.make(WS_METHODS.sourceControlUpdateChangeRequestComment, {
14934
+ payload: ChangeRequestUpdateCommentInput,
14935
+ success: ChangeRequestUpdateCommentResult,
14936
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14937
+ });
14938
+ const WsSourceControlUpdateChangeRequestRpc = Rpc.make(WS_METHODS.sourceControlUpdateChangeRequest, {
14939
+ payload: ChangeRequestUpdateInput,
14940
+ success: ChangeRequestUpdateResult,
14941
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14942
+ });
14943
+ const WsSourceControlCreateChangeRequestRpc = Rpc.make(WS_METHODS.sourceControlCreateChangeRequest, {
14944
+ payload: ChangeRequestCreateInput,
14945
+ success: ChangeRequest,
14946
+ error: Schema.Union([SourceControlProviderError, AuthRpcError])
14947
+ });
13054
14948
  const WsTextGenerationAskSideQuestionRpc = Rpc.make(WS_METHODS.textGenerationAskSideQuestion, {
13055
14949
  payload: SideQuestionInput,
13056
14950
  success: SideQuestionResult,
@@ -13343,6 +15237,31 @@ const WsGitDeleteWorktreeRpc = Rpc.make(WS_METHODS.gitDeleteWorktree, {
13343
15237
  success: EmptyRpcResult,
13344
15238
  error: Schema.Union([GitManagerServiceError, AuthRpcError])
13345
15239
  });
15240
+ const WsLifecycleListWorkspacesRpc = Rpc.make(WS_METHODS.lifecycleListWorkspaces, {
15241
+ payload: WorkspaceLifecycleListInput,
15242
+ success: Schema.Array(WorkspaceLifecycleSummary),
15243
+ error: Schema.Union([WorkspaceLifecycleError, AuthRpcError])
15244
+ });
15245
+ const WsLifecyclePreviewWorkspaceRpc = Rpc.make(WS_METHODS.lifecyclePreviewWorkspace, {
15246
+ payload: WorkspaceLifecycleRequest,
15247
+ success: WorkspaceLifecyclePreview,
15248
+ error: Schema.Union([WorkspaceLifecycleError, AuthRpcError])
15249
+ });
15250
+ const WsLifecycleApplyWorkspaceRpc = Rpc.make(WS_METHODS.lifecycleApplyWorkspace, {
15251
+ payload: WorkspaceLifecycleApplyInput,
15252
+ success: WorkspaceLifecycleResult,
15253
+ error: Schema.Union([WorkspaceLifecycleError, AuthRpcError])
15254
+ });
15255
+ const WsLifecycleSuggestionsRpc = Rpc.make(WS_METHODS.lifecycleSuggestions, {
15256
+ payload: Schema.Struct({}),
15257
+ success: LifecycleSuggestions,
15258
+ error: Schema.Union([WorkspaceLifecycleError, AuthRpcError])
15259
+ });
15260
+ const WsLifecycleListTrashRpc = Rpc.make(WS_METHODS.lifecycleListTrash, {
15261
+ payload: Schema.Struct({}),
15262
+ success: TrashListResult,
15263
+ error: Schema.Union([WorkspaceLifecycleError, AuthRpcError])
15264
+ });
13346
15265
  const WsThreadsSetManualBucketRpc = Rpc.make(WS_METHODS.threadsSetManualBucket, {
13347
15266
  payload: ThreadsSetManualBucketInput,
13348
15267
  success: EmptyRpcResult,
@@ -13373,11 +15292,31 @@ const WsProjectsInitializeGitRpc = Rpc.make(WS_METHODS.projectsInitializeGit, {
13373
15292
  success: EmptyRpcResult,
13374
15293
  error: Schema.Union([GitManagerServiceError, AuthRpcError])
13375
15294
  });
15295
+ const WsProjectsPromoteChatPreviewRpc = Rpc.make(WS_METHODS.projectsPromoteChatPreview, {
15296
+ payload: ProjectsPromoteChatPreviewInput,
15297
+ success: ProjectsPromoteChatPreviewResult,
15298
+ error: Schema.Union([ProjectChatError, AuthRpcError])
15299
+ });
15300
+ const WsProjectsPromoteChatRpc = Rpc.make(WS_METHODS.projectsPromoteChat, {
15301
+ payload: ProjectsPromoteChatInput,
15302
+ success: ProjectsPromoteChatResult,
15303
+ error: Schema.Union([ProjectChatError, AuthRpcError])
15304
+ });
15305
+ const WsProjectsDeleteChatFolderRpc = Rpc.make(WS_METHODS.projectsDeleteChatFolder, {
15306
+ payload: ProjectsDeleteChatFolderInput,
15307
+ success: ProjectsDeleteChatFolderResult,
15308
+ error: Schema.Union([ProjectChatError, AuthRpcError])
15309
+ });
13376
15310
  const WsVcsReadLineBlameRpc = Rpc.make(WS_METHODS.vcsReadLineBlame, {
13377
15311
  payload: GitReadLineBlameInput,
13378
15312
  success: GitReadLineBlameResult,
13379
15313
  error: Schema.Union([GitCommandError, AuthRpcError])
13380
15314
  });
15315
+ const WsVcsReadImageBlobRpc = Rpc.make(WS_METHODS.vcsReadImageBlob, {
15316
+ payload: GitReadImageBlobInput,
15317
+ success: GitReadImageBlobResult,
15318
+ error: Schema.Union([GitCommandError, AuthRpcError])
15319
+ });
13381
15320
  const WsVcsReadLocalChangesRpc = Rpc.make(WS_METHODS.vcsReadLocalChanges, {
13382
15321
  payload: GitLocalChangesInput,
13383
15322
  success: GitLocalChangesResult,
@@ -13656,7 +15595,7 @@ const WsAgentControlDisconnectMcpInstallationRpc = Rpc.make(AGENT_CONTROL_WS_MET
13656
15595
  error: Schema.Union([AgentControlExternalRpcError, AuthRpcError])
13657
15596
  });
13658
15597
  /** Keep declaration emit bounded as shared settings and RPC schemas grow. */
13659
- const WsRpcGroup = RpcGroup.make(WsSessionImportSourcesRpc, WsSessionImportReconcileRpc, WsSessionImportAdoptRpc, WsSessionImportDiscoverRpc, WsSessionImportRunRpc, WsServerGetConfigRpc, WsServerGetAdvertisedEndpointsRpc, WsServerGetDiagnosticsMetricsRpc, WsServerGetStatisticsRpc, WsServerGetUsageSummaryRpc, WsServerSearchAcpRegistryRpc, WsServerInstallAcpRegistryRpc, WsServerGetAcpRegistryAuthMethodsRpc, WsServerAuthenticateAcpRegistryRpc, WsServerReadCodexResetCreditsRpc, WsServerConsumeCodexResetCreditRpc, WsServerRefreshProvidersRpc, WsServerUpdateProviderRpc, WsServerUpsertKeybindingRpc, WsKeybindingsReplaceCustomRpc, WsServerGetProjectPreferencesRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsServerGetDiagnosticsSnapshotRpc, WsServerSignalDiagnosticProcessRpc, WsServerGetResourceTelemetryHistoryRpc, WsServerRetryResourceTelemetryRpc, WsServerDiscoverSourceControlRpc, WsServerListOpinionatedPluginsRpc, WsServerCheckOpinionatedPluginsRpc, WsServerInstallOpinionatedPluginRpc, WsMcpListWorkspacesRpc, WsMcpListServersRpc, WsMcpUpsertServerRpc, WsMcpSetServerEnabledRpc, WsMcpRemoveServerRpc, WsMcpReloadServersRpc, WsMcpStartOauthLoginRpc, WsSourceControlLookupRepositoryRpc, WsSourceControlSearchRepositoriesRpc, WsSourceControlCloneRepositoryRpc, WsSourceControlPublishRepositoryRpc, WsSourceControlListIssuesRpc, WsSourceControlGetIssueRpc, WsSourceControlSearchIssuesRpc, WsSourceControlListChangeRequestsRpc, WsSourceControlSearchChangeRequestsRpc, WsSourceControlGetChangeRequestDetailRpc, WsSourceControlGetChangeRequestFilesViewedRpc, WsSourceControlSetChangeRequestFileViewedRpc, WsSourceControlGetChangeRequestDiffRpc, WsSourceControlMergeChangeRequestRpc, WsSourceControlCreateIssueRpc, WsSourceControlAddIssueCommentRpc, WsSourceControlAddIssueCommentReactionRpc, WsSourceControlAddChangeRequestCommentRpc, WsSourceControlAddChangeRequestCommentReactionRpc, WsSourceControlListIssueLabelsRpc, WsSourceControlListIssueAssigneesRpc, WsSourceControlListWorkflowRunsRpc, WsSourceControlGetWorkflowRunJobsRpc, WsSourceControlGetWorkflowJobLogRpc, WsSourceControlRerunWorkflowRpc, WsTextGenerationAskSideQuestionRpc, WsTextGenerationCancelSideQuestionRpc, WsTextGenerationGenerateIssueContentRpc, WsTextGenerationGenerateBranchNameRpc, WsAtlassianListConnectionsRpc, WsAtlassianStartOAuthRpc, WsAtlassianDisconnectRpc, WsAtlassianRefreshRpc, WsAtlassianListResourcesRpc, WsAtlassianGetProjectLinkRpc, WsAtlassianSaveProjectLinkRpc, WsAtlassianSaveManualBitbucketTokenRpc, WsAtlassianSaveManualJiraTokenRpc, WsWorkItemsListProjectsRpc, WsWorkItemsListRpc, WsWorkItemsSearchRpc, WsWorkItemsGetRpc, WsWorkItemsAddCommentRpc, WsWorkItemsEditCommentRpc, WsWorkItemsUpdateRpc, WsWorkItemsListTransitionsRpc, WsWorkItemsTransitionRpc, WsProjectsListEntriesRpc, WsProjectsSearchEntriesRpc, WsProjectsReadFileRpc, WsProjectsReadIconRpc, WsProjectsReadFileBinaryRpc, WsProjectsWriteFileRpc, WsProjectsStageFileReferenceRpc, WsChatAttachmentsCreateFileUploadRpc, WsChatAttachmentsReadChunkRpc, WsShellOpenInEditorRpc, WsFilesystemBrowseRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsStorageScanRpc, WsStoragePreviewRpc, WsStorageExecuteRpc, WsGitCreateWorktreeForProjectRpc, WsGitFindWorktreeForOriginRpc, WsGitArchiveWorktreeRpc, WsGitRestoreWorktreeRpc, WsGitDeleteWorktreeRpc, WsThreadsSetManualBucketRpc, WsThreadsSetManualPositionRpc, WsSearchThreadMessagesRpc, WsThreadPriorityEnsureCurrentRpc, WsWorktreesSetManualPositionRpc, WsProjectsInitializeGitRpc, WsVcsReadLineBlameRpc, WsVcsReadLocalChangesRpc, WsVcsApplyIndexPatchRpc, WsVcsReadComparisonRpc, WsVcsListRefsRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsTerminalOpenRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsSubscribeTerminalEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsAutomationCentreRpc, WsAutomationCommandRpc, WsAgentControlListProposalsRpc, WsAgentControlGetProposalRpc, WsAgentControlAcceptProposalRpc, WsAgentControlRejectProposalRpc, WsAgentControlSubscribeProposalsRpc, WsAgentControlListIntegrationsRpc, WsAgentControlCreateIntegrationRpc, WsAgentControlUpdateIntegrationRpc, WsAgentControlResumeIntegrationPairingRpc, WsAgentControlRevokeIntegrationRpc, WsAgentControlDeleteIntegrationRpc, WsAgentControlListMcpInstallationsRpc, WsAgentControlConnectMcpInstallationRpc, WsAgentControlRepairMcpInstallationRpc, WsAgentControlDisconnectMcpInstallationRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetWorkflowScriptRpc, WsOrchestrationGetTaskOutputRpc, WsOrchestrationStopBackgroundTaskRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationSearchThreadMessagesRpc, WsOrchestrationGetThreadWindowRpc, WsOrchestrationGetThreadHistoryPageRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationReplayEventsPageRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc, WsOrchestrationSubscribeThreadWindowRpc, WsContextHandoffGetInspectionSummaryRpc, WsContextHandoffListInspectionEntriesRpc, WsContextHandoffReadRawPayloadChunkRpc, WsContextHandoffReadExportChunkRpc);
15598
+ const WsRpcGroup = RpcGroup.make(WsSessionImportSourcesRpc, WsSessionImportReconcileRpc, WsSessionImportAdoptRpc, WsSessionImportDiscoverRpc, WsSessionImportRunRpc, WsServerGetConfigRpc, WsServerGetAdvertisedEndpointsRpc, WsServerGetDiagnosticsMetricsRpc, WsServerGetStatisticsRpc, WsServerGetUsageSummaryRpc, WsServerSearchAcpRegistryRpc, WsServerInstallAcpRegistryRpc, WsServerGetAcpRegistryAuthMethodsRpc, WsServerAuthenticateAcpRegistryRpc, WsServerReadCodexResetCreditsRpc, WsServerConsumeCodexResetCreditRpc, WsServerListLocalTasksRpc, WsServerGetLocalTaskRpc, WsServerCreateLocalTaskRpc, WsServerUpdateLocalTaskRpc, WsServerDeleteLocalTaskRpc, WsServerDelegateLocalTaskRpc, WsNotesListRpc, WsNotesCommandRpc, WsServerGetDailyRecapRpc, WsServerRefreshProvidersRpc, WsServerUpdateProviderRpc, WsServerUpsertKeybindingRpc, WsKeybindingsReplaceCustomRpc, WsServerGetProjectPreferencesRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsServerGetDiagnosticsSnapshotRpc, WsServerSignalDiagnosticProcessRpc, WsServerGetResourceTelemetryHistoryRpc, WsServerRetryResourceTelemetryRpc, WsServerDiscoverSourceControlRpc, WsServerListOpinionatedPluginsRpc, WsServerCheckOpinionatedPluginsRpc, WsServerInstallOpinionatedPluginRpc, WsMcpListWorkspacesRpc, WsMcpListServersRpc, WsMcpUpsertServerRpc, WsMcpSetServerEnabledRpc, WsMcpRemoveServerRpc, WsMcpReloadServersRpc, WsMcpStartOauthLoginRpc, WsSourceControlLookupRepositoryRpc, WsSourceControlSearchRepositoriesRpc, WsSourceControlCloneRepositoryRpc, WsSourceControlPublishRepositoryRpc, WsSourceControlListIssuesRpc, WsSourceControlGetIssueRpc, WsSourceControlSearchIssuesRpc, WsSourceControlListChangeRequestsRpc, WsSourceControlSearchChangeRequestsRpc, WsSourceControlGetChangeRequestDetailRpc, WsSourceControlGetChangeRequestFilesViewedRpc, WsSourceControlSetChangeRequestFileViewedRpc, WsSourceControlGetChangeRequestDiffRpc, WsSourceControlMergeChangeRequestRpc, WsSourceControlCreateIssueRpc, WsSourceControlAddIssueCommentRpc, WsSourceControlAddIssueCommentReactionRpc, WsSourceControlAddChangeRequestCommentRpc, WsSourceControlAddChangeRequestCommentReactionRpc, WsSourceControlListIssueLabelsRpc, WsSourceControlListIssueAssigneesRpc, WsSourceControlListWorkflowRunsRpc, WsSourceControlGetWorkflowRunJobsRpc, WsSourceControlGetWorkflowJobLogRpc, WsSourceControlRerunWorkflowRpc, WsSourceControlGetChangeRequestActivityRpc, WsSourceControlGetChangeRequestFileContentsRpc, WsSourceControlSubmitChangeRequestReviewRpc, WsSourceControlReplyToReviewThreadRpc, WsSourceControlSetReviewThreadResolvedRpc, WsSourceControlUpdateChangeRequestCommentRpc, WsSourceControlUpdateChangeRequestRpc, WsSourceControlCreateChangeRequestRpc, WsTextGenerationAskSideQuestionRpc, WsTextGenerationCancelSideQuestionRpc, WsTextGenerationGenerateIssueContentRpc, WsTextGenerationGenerateBranchNameRpc, WsAtlassianListConnectionsRpc, WsAtlassianStartOAuthRpc, WsAtlassianDisconnectRpc, WsAtlassianRefreshRpc, WsAtlassianListResourcesRpc, WsAtlassianGetProjectLinkRpc, WsAtlassianSaveProjectLinkRpc, WsAtlassianSaveManualBitbucketTokenRpc, WsAtlassianSaveManualJiraTokenRpc, WsWorkItemsListProjectsRpc, WsWorkItemsListRpc, WsWorkItemsSearchRpc, WsWorkItemsGetRpc, WsWorkItemsAddCommentRpc, WsWorkItemsEditCommentRpc, WsWorkItemsUpdateRpc, WsWorkItemsListTransitionsRpc, WsWorkItemsTransitionRpc, WsProjectsListEntriesRpc, WsProjectsSearchEntriesRpc, WsProjectsReadFileRpc, WsProjectsReadIconRpc, WsProjectsReadFileBinaryRpc, WsProjectsWriteFileRpc, WsProjectsStageFileReferenceRpc, WsChatAttachmentsCreateFileUploadRpc, WsChatAttachmentsReadChunkRpc, WsShellOpenInEditorRpc, WsFilesystemBrowseRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsStorageScanRpc, WsStoragePreviewRpc, WsStorageExecuteRpc, WsGitCreateWorktreeForProjectRpc, WsGitFindWorktreeForOriginRpc, WsGitArchiveWorktreeRpc, WsGitRestoreWorktreeRpc, WsGitDeleteWorktreeRpc, WsLifecycleListWorkspacesRpc, WsLifecyclePreviewWorkspaceRpc, WsLifecycleApplyWorkspaceRpc, WsLifecycleSuggestionsRpc, WsLifecycleListTrashRpc, WsThreadsSetManualBucketRpc, WsThreadsSetManualPositionRpc, WsSearchThreadMessagesRpc, WsThreadPriorityEnsureCurrentRpc, WsWorktreesSetManualPositionRpc, WsProjectsInitializeGitRpc, WsProjectsPromoteChatPreviewRpc, WsProjectsPromoteChatRpc, WsProjectsDeleteChatFolderRpc, WsVcsReadLineBlameRpc, WsVcsReadImageBlobRpc, WsVcsReadLocalChangesRpc, WsVcsApplyIndexPatchRpc, WsVcsReadComparisonRpc, WsVcsListRefsRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsTerminalOpenRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsSubscribeTerminalEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsAutomationCentreRpc, WsAutomationCommandRpc, WsAgentControlListProposalsRpc, WsAgentControlGetProposalRpc, WsAgentControlAcceptProposalRpc, WsAgentControlRejectProposalRpc, WsAgentControlSubscribeProposalsRpc, WsAgentControlListIntegrationsRpc, WsAgentControlCreateIntegrationRpc, WsAgentControlUpdateIntegrationRpc, WsAgentControlResumeIntegrationPairingRpc, WsAgentControlRevokeIntegrationRpc, WsAgentControlDeleteIntegrationRpc, WsAgentControlListMcpInstallationsRpc, WsAgentControlConnectMcpInstallationRpc, WsAgentControlRepairMcpInstallationRpc, WsAgentControlDisconnectMcpInstallationRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetWorkflowScriptRpc, WsOrchestrationGetTaskOutputRpc, WsOrchestrationStopBackgroundTaskRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationSearchThreadMessagesRpc, WsOrchestrationGetThreadWindowRpc, WsOrchestrationGetThreadHistoryPageRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationReplayEventsPageRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc, WsOrchestrationSubscribeThreadWindowRpc, WsContextHandoffGetInspectionSummaryRpc, WsContextHandoffListInspectionEntriesRpc, WsContextHandoffReadRawPayloadChunkRpc, WsContextHandoffReadExportChunkRpc);
13660
15599
  /**
13661
15600
  * Hosted relay channels carry both groups through one lifecycle-owned encrypted
13662
15601
  * channel. Direct clients keep the device group on its own low-priority socket
@@ -13839,6 +15778,81 @@ const AgentControlReadThreadFileInput = Schema.Struct({
13839
15778
  threadId: ThreadId,
13840
15779
  relativePath: TrimmedNonEmptyString.check(Schema.isMaxLength(4096))
13841
15780
  });
15781
+ //#endregion
15782
+ //#region ../../packages/contracts/src/agentControlDelegation.ts
15783
+ /**
15784
+ * Private-session tools for tasks a chat delegated with `ryco_create_threads` and
15785
+ * `returnToOrigin`. Like the inspection tools, they are not part of
15786
+ * `AGENT_CONTROL_MCP_TOOLS` and never reach the external endpoint.
15787
+ */
15788
+ const AGENT_CONTROL_DELEGATION_MCP_TOOLS = {
15789
+ taskStatus: "ryco_task_status",
15790
+ taskCancel: "ryco_task_cancel"
15791
+ };
15792
+ const AGENT_CONTROL_TASK_RESULT_MAX_CHARS = 8e3;
15793
+ const AGENT_CONTROL_TASK_NOTICE_MAX_CHARS = 4e3;
15794
+ /** Child-side terminal outcomes a task returns as a server-authored notice instead of a result. */
15795
+ const AgentControlTaskNoticeOutcome = Schema.Literals([
15796
+ "interrupted",
15797
+ "stopped",
15798
+ "start-failed",
15799
+ "advanced",
15800
+ "archived",
15801
+ "request-failed",
15802
+ "expired"
15803
+ ]);
15804
+ const AgentControlTaskStatusInput = Schema.Struct({ taskId: Schema.optional(ThreadId) }).annotate({ parseOptions: { onExcessProperty: "error" } });
15805
+ const AgentControlTaskCancelInput = Schema.Struct({
15806
+ requestId: AgentControlRequestId,
15807
+ taskId: ThreadId
15808
+ }).annotate({ parseOptions: { onExcessProperty: "error" } });
15809
+ const AgentControlTaskRunState = Schema.Literals([
15810
+ "starting",
15811
+ "running",
15812
+ "needs-you",
15813
+ "completed",
15814
+ "failed",
15815
+ "interrupted",
15816
+ "unavailable"
15817
+ ]);
15818
+ const AgentControlTaskStatusEntry = Schema.Struct({
15819
+ taskId: ThreadId,
15820
+ proposalId: AgentControlProposalId,
15821
+ title: Schema.NullOr(Schema.String),
15822
+ return: Schema.Struct({
15823
+ status: AgentControlCompletionReturn.fields.status,
15824
+ detail: AgentControlCompletionReturn.fields.detail,
15825
+ updatedAt: IsoDateTime
15826
+ }),
15827
+ run: Schema.Struct({
15828
+ state: AgentControlTaskRunState,
15829
+ sessionStatus: Schema.NullOr(OrchestrationSessionStatus),
15830
+ hasPendingApprovals: Schema.Boolean,
15831
+ hasPendingUserInput: Schema.Boolean,
15832
+ backgroundLiveness: Schema.NullOr(Schema.Literals(["working", "monitoring"])),
15833
+ advanced: Schema.Boolean
15834
+ }),
15835
+ /** Untrusted child output: reference data, never instructions or approval. */
15836
+ result: Schema.NullOr(Schema.Struct({
15837
+ untrustedChildOutput: Schema.Literal(true),
15838
+ state: Schema.Literals(["completed", "error"]),
15839
+ text: Schema.String.check(Schema.isMaxLength(AGENT_CONTROL_TASK_RESULT_MAX_CHARS)),
15840
+ truncated: Schema.Boolean
15841
+ })),
15842
+ /**
15843
+ * The notice the task returns instead of a result (the same text a wake carries). It is
15844
+ * server-authored, holds no child text and stays visible after an acknowledgement.
15845
+ */
15846
+ notice: Schema.NullOr(Schema.Struct({
15847
+ outcome: AgentControlTaskNoticeOutcome,
15848
+ text: Schema.String.check(Schema.isMaxLength(AGENT_CONTROL_TASK_NOTICE_MAX_CHARS))
15849
+ })),
15850
+ acknowledged: Schema.Boolean
15851
+ });
15852
+ const AgentControlTaskStatusResult = Schema.Struct({
15853
+ tasks: Schema.Array(AgentControlTaskStatusEntry).check(Schema.isMaxLength(20)),
15854
+ truncated: Schema.Boolean
15855
+ });
13842
15856
  /**
13843
15857
  * Exported because it bounds `ComputerActionResult.value`, and the clipboard
13844
15858
  * read path must enforce it before putting clipboard text on that field.
@@ -14889,4 +16903,4 @@ Schema.Struct({
14889
16903
  ])
14890
16904
  });
14891
16905
  //#endregion
14892
- export { AGENT_CONTROL_MCP_MESSAGE_TEXT_MAX_CHARS as $, ThreadMetaUpdatedPayload as $a, OrchestrationCheckpointStatus as $i, DeviceHardwareButton as $n, defaultInstanceIdForDriver as $o, OpenCodeSettings as $r, AtlassianResourceId as $s, AgentControlMcpProposeAutomationCreateInput as $t, PROJECT_ICON_MAX_BYTES as A, PROVIDER_SEND_TURN_MAX_IMAGE_BYTES as Aa, CONTEXT_HANDOFF_ERROR_MAX_CHARS as Ai, AgentControlOperationState as An, WorkItemProviderError as Ao, McpInventoryTool as Ar, HubIdentitySummary as As, AgentControlMcpCapabilitiesResult as At, AGENT_CONTROL_ACTION_CAPABILITIES as B, ProviderApprovalDecision as Ba, ContextHandoffDigest as Bi, AgentControlReadWorkspaceInput as Bn, VcsProcessTimeoutError as Bo, McpWorkspace as Br, RelayCapability as Bs, AgentControlMcpListAutomationRunsResult as Bt, WsHostedRpcGroup as C, OrchestrationThreadActivity as Ca, ProviderSessionStartInput as Ci, AgentControlMcpRecentActivityResult as Cn, PullRequestState as Co, GitCommandError as Cr, HUB_DEVICE_GRANT_MAX_BYTES as Cs, AgentControlExternalProjectScope as Ct, AcpRegistryVersion as D, OrchestrationWorktreeShell as Da, AgentTokenMode as Di, AgentControlMcpWaitForControlRequestInput as Dn, ThreadGoal as Do, TextGenerationError as Dr, HubConnectorStatus as Ds, AgentControlExternalWaitForTaskInput as Dt, AcpRegistrySettings as E, OrchestrationThreadHistoryError as Ea, ProviderStopSessionInput as Ei, AgentControlMcpUpdateThreadInput as En, WorktreeId as Eo, GitReadLineBlameInput as Er, NodeE2eeAdmissionPolicy as Es, AgentControlExternalTaskIdInput as Et, ProjectReadFileError as F, ProjectMetaUpdatedPayload as Fa, ChatAttachment as Fi, AgentControlPromptSummary as Fn, truncateSourceControlDetailContent as Fo, McpServer as Fr, RELAY_MAX_DATA_CHUNK_BYTES as Fs, AgentControlMcpDiagnosticsSummaryResult as Ft, AGENT_CONTROL_DEVICE_ACTION_KINDS as G, ThreadArchivedPayload as Ga, DEFAULT_PROVIDER_INTERACTION_MODE as Gi, DEVICE_CAPABILITY_LABELS as Gn, DEFAULT_GIT_TEXT_GENERATION_MODEL as Go, ServerProviderUpdateError as Gr, AuthBootstrapInput as Gs, AgentControlMcpListProjectsInput as Gt, AGENT_CONTROL_AUTOMATION_MIN_INTERVAL_MS as H, ProviderSessionRuntimeStatus as Ha, ContextHandoffInspectionError as Hi, AgentControlResultEnvelope as Hn, ThreadPriorityBatchId as Ho, OpinionatedPluginError as Hr, RelayEffectiveRole as Hs, AgentControlMcpListAutomationsResult as Ht, ProjectReadIconError as I, ProjectMetadataDir as Ia, ChatAttachmentReadError as Ii, AgentControlProposal as In, VcsDriverKind as Io, McpServerConfig as Ir, RELAY_MAX_DATA_FRAME_BYTES as Is, AgentControlMcpInstallation as It, AGENT_CONTROL_EXTERNAL_MCP_TOOLS as J, ThreadDeletedPayload as Ja, ModelSelection as Ji, DEVICE_WS_METHODS as Jn, DEFAULT_MODEL as Jo, CopilotSettings as Jr, AuthRevokeClientSessionInput as Js, AgentControlMcpListThreadsResult as Jt, AGENT_CONTROL_ERROR_CODES as K, ThreadAttachedToWorktreePayload as Ka, FileAttachmentCreateUploadUrlError as Ki, DEVICE_FRAME_MAGIC as Kn, DEFAULT_GIT_TEXT_GENERATION_MODEL_BY_PROVIDER as Ko, ClaudeSettings as Kr, AuthClientMetadataDeviceType as Ks, AgentControlMcpListProjectsResult as Kt, ProjectSearchEntriesError as L, ProjectScript as La, ClientOrchestrationCommand as Li, AgentControlProposalId as Ln, VcsOutputDecodeError as Lo, McpServerName as Lr, RELAY_MAX_RETRY_AFTER_MS as Ls, AgentControlMcpInstallationId as Lt, PROJECT_STAGE_FILE_MAX_BYTES as M, ProjectAvatarSetPayload as Ma, CONTEXT_HANDOFF_INSPECTION_MAX_RESPONSE_BYTES as Mi, AgentControlPlanDigest as Mn, SOURCE_CONTROL_WORKFLOW_LOG_MAX_BYTES as Mo, McpOauthLoginResult as Mr, RELAY_AUTHENTICATION_DEADLINE_MS as Ms, AgentControlMcpControlRequestResult as Mt, ProjectListEntriesError as N, ProjectCreatedPayload as Na, CONTEXT_HANDOFF_MAX_INPUT_CHARS as Ni, AgentControlPlanWorkspaceInput as Nn, SourceControlProviderError as No, McpProviderCapabilities as Nr, RELAY_FRAME_TYPES as Ns, AgentControlMcpCreateThreadsInput as Nt, SessionImportError as O, PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES as Oa, CHAT_ATTACHMENT_READ_CHUNK_BYTES as Oi, AgentControlOperation as On, WORK_ITEM_DETAIL_BODY_MAX_BYTES as Oo, McpInventoryResource as Or, HubEnrollmentCeremonyDetail as Os, AgentControlIntegrationId as Ot, ProjectReadFileBinaryError as P, ProjectDeletedPayload as Pa, CONTEXT_HANDOFF_WS_METHODS as Pi, AgentControlPrincipal as Pn, SourceControlRepositoryError as Po, McpProviderSupport as Pr, RELAY_MAX_CONTROL_FRAME_BYTES as Ps, AgentControlMcpDiagnosticsSummaryInput as Pt, AGENT_CONTROL_MCP_AUTOMATION_LIST_PROMPT_MAX_CHARS as Q, ThreadMessageSentPayload as Qa, OrchestrationCheckpointFile as Qi, DeviceDescriptor as Qn, ProviderInstanceId as Qo, GrokSettings as Qr, AtlassianConnectionId as Qs, AgentControlMcpProposeAutomationCancelInput as Qt, ProjectStageFileReferenceError as R, ProjectionPendingApprovalDecision as Ra, ContextHandoffActivityPayload as Ri, AgentControlProposalStatus as Rn, VcsProcessExitError as Ro, McpServerWritableConfig as Rr, RELAY_MAX_RPC_MESSAGE_BYTES as Rs, AgentControlMcpInterruptThreadInput as Rt, WsDeviceRpcGroup as S, OrchestrationThread as Sa, ProviderSendTurnInput as Si, AgentControlMcpReadThreadResult as Sn, WorktreeSourceControlStateUpdatedPayload as So, GitApplyIndexPatchInput as Sr, LocalIntroductionCompleteRequest as Ss, AgentControlExternalOverviewResult as St, AcpRegistryAgentId as T, OrchestrationThreadHistoryCursor as Ta, ProviderStopBackgroundTaskInput as Ti, AgentControlMcpSettingsSummaryResult as Tn, Worktree as To, GitReadComparisonInput as Tr, NATIVE_E2EE_MAX_GRANT_KEYS as Ts, AgentControlExternalTaskId as Tt, AGENT_CONTROL_AUTOMATION_PROPOSAL_TTL_MS as U, RuntimeMode as Ua, ContextHandoffMode as Ui, AgentControlRiskTag as Un, ThreadPriorityCandidateId as Uo, UsageReadError as Ur, RelayFrame as Us, AgentControlMcpListDevicesInput as Ut, AGENT_CONTROL_AUTOMATION_MAX_HORIZON_MS as V, ProviderInteractionMode as Va, ContextHandoffEndpointSnapshot as Vi, AgentControlRequestId as Vn, VcsUnsupportedOperationError as Vo, McpWorkspaceId as Vr, RelayChannelId as Vs, AgentControlMcpListAutomationsInput as Vt, AGENT_CONTROL_CAPABILITIES as W, ThreadActivityAppendedPayload as Wa, DEFAULT_PROJECT_METADATA_DIR as Wi, AgentControlRpcError as Wn, ThreadPriorityFingerprint as Wo, ServerProvider as Wr, RelayProtocolVersion as Ws, AgentControlMcpListDevicesResult as Wt, AGENT_CONTROL_EXTERNAL_PAIRING_CODE_TTL_MS as X, ThreadGoalUpdatedPayload as Xa, OrchestrationActorKind as Xi, DeviceBundleId as Xn, ModelCapabilities as Xo, DEFAULT_SERVER_SETTINGS as Xr, AuthRpcError as Xs, AgentControlMcpOperationalReadInput as Xt, AGENT_CONTROL_EXTERNAL_MCP_TOOL_NAMES as Y, ThreadGoalClearedPayload as Ya, ORCHESTRATION_WS_METHODS as Yi, DeviceAvailability as Yn, MODEL_SLUG_ALIASES_BY_PROVIDER as Yo, CursorSettings as Yr, AuthRevokePairingLinkInput as Ys, AgentControlMcpMutationResult as Yt, AGENT_CONTROL_EXTERNAL_PROPOSAL_TTL_MS as Z, ThreadInteractionModeSetPayload as Za, OrchestrationAggregateKind as Zi, DeviceDescribeUiResult as Zn, ProviderDriverKind as Zo, DEFAULT_WORKTREE_BRANCH_PREFIX as Zr, ApprovalRequestId as Zs, AgentControlMcpOrchestrationEventsResult as Zt, ComputerUseBridgeConfig as _, OrchestrationReplayEventsError as _a, ThreadId as _c, UserInputQuestion as _i, AgentControlMcpReadControlRequestInput as _n, WorktreeCreatedPayload as _o, AtlassianCapability as _r, DesktopNativeNodeClaimSignRequest as _s, AgentControlCapability as _t, COMPUTER_FRAME_MAGIC as a, OrchestrationEventMetadata as aa, EventId as ac, StorageCleanupResult as ai, AgentControlMcpProposeDeviceInstallInput as an, ThreadSettledPayload as ao, DeviceOpenUrlInput as ar, TerminalHistoryError as as, AGENT_CONTROL_MCP_WAIT_TIMEOUT_MS_DEFAULT as at, AcpRegistryOperationError as b, OrchestrationShellSnapshot as ba, ProviderRespondToRequestInput as bi, AgentControlMcpReadDeviceStateResult as bn, WorktreeMetaUpdatedPayload as bo, AtlassianConnectionStatus as br, LOCAL_INTRODUCTION_DESCRIPTOR_PATH as bs, AgentControlExternalCreateTaskInput as bt, COMPUTER_SELECT_TEXT_RANGE_MAX as c, OrchestrationGetSnapshotError as ca, NonNegativeInt as cc, CodexResetCreditError as ci, AgentControlMcpProposeDeviceRecordingInput as cn, ThreadStatusBucketOverriddenPayload as co, DeviceStartRecordingResult as cr, TerminalSessionLookupError as cs, AGENT_CONTROL_TERMINAL_PROPOSAL_STATUSES as ct, AgentControlInspectThreadInput as d, OrchestrationGetTurnDiffResult as da, ProviderItemId as dc, KeybindingsConfigError as di, AgentControlMcpProposeProjectRemoveInput as dn, ThreadTurnInterruptRequestedPayload as do, DeviceTestingInput as dr, OpenError as ds, AgentControlActionPlan as dt, OrchestrationCheckpointSummary as ea, AuthSessionId as ec, ServerSettings as ei, AgentControlMcpProposeAutomationUpdateInput as en, ThreadPriorityProjectedRanking as eo, DeviceInstallAppInput as er, isProviderDriverKind as es, AGENT_CONTROL_MCP_OPERATIONAL_RANGE_MAX_MS as et, AgentControlReadDiffInput as f, OrchestrationGetWorkflowScriptError as fa, RuntimeItemId as fc, MODEL_PICKER_JUMP_KEYBINDING_COMMANDS as fi, AgentControlMcpProposeProjectUpdateInput as fn, ThreadUnarchivedPayload as fo, DeviceTypeTextInput as fr, DESKTOP_NATIVE_NODE_CLAIM_COMMIT_PATH as fs, AgentControlAutomation as ft, AgentControlWaitThreadsInput as g, OrchestrationReadModel as ga, RuntimeTaskId as gc, ToolLifecycleItemType as gi, AgentControlMcpReadAutomationResult as gn, WorktreeArchivedPayload as go, ThreadPriorityRpcError as gr, DesktopNativeNodeClaimCommitRequest as gs, AgentControlAutomationRunId as gt, AgentControlSearchThreadsInput as h, OrchestrationProposedPlanId as ha, RuntimeSubagentId as hc, RuntimeSubagentStatus as hi, AgentControlMcpReadAutomationInput as hn, TurnDispatchMode as ho, ThreadPriorityCandidateRanking as hr, DESKTOP_NATIVE_NODE_CLAIM_SIGN_PATH as hs, AgentControlAutomationRun as ht, COMPUTER_DRAG_MAX_DURATION_MS as i, OrchestrationEvent as ia, EnvironmentId$1 as ic, StorageCleanupPreview as ii, AgentControlMcpProposeDeviceInputInput as in, ThreadSessionSetPayload as io, DeviceLaunchAppResult as ir, TerminalCwdError as is, AGENT_CONTROL_MCP_TOOL_NAMES as it, PROJECT_READ_FILE_BINARY_MAX_BYTES as j, PROVIDER_SEND_TURN_MAX_INPUT_CHARS as ja, CONTEXT_HANDOFF_INSPECTION_CHUNK_MAX_BYTES as ji, AgentControlOperationStatus as jn, WorkItemProviderKind as jo, McpListServersResult as jr, HubGrantVerificationKeyId as js, AgentControlMcpContextResult as jt, FilesystemBrowseError as k, PROVIDER_SEND_TURN_MAX_FILE_BYTES as ka, CONTEXT_HANDOFF_ACTIVITY_KIND as ki, AgentControlOperationId as kn, WORK_ITEM_DETAIL_COMMENT_BODY_MAX_BYTES as ko, McpInventoryResourceTemplate as kr, HubEnrollmentStartResult as ks, AgentControlListWorkspacesInput as kt, COMPUTER_TEXT_MAX_LENGTH as l, OrchestrationGetTaskOutputError as la, PositiveInt as lc, KeybindingRule as li, AgentControlMcpProposeDeviceShutdownInput as ln, ThreadTokenModeSetPayload as lo, DeviceStopRecordingResult as lr, TerminalSubscriptionResyncError as ls, AGENT_CONTROL_WS_METHODS as lt, AgentControlReadThreadFileInput as m, OrchestrationMessageRole as ma, RuntimeSessionId as mc, THREAD_JUMP_KEYBINDING_COMMANDS as mi, AgentControlMcpProviderRuntimeEventsResult as mn, ThreadUnsnoozedPayload as mo, ThreadPriorityBatchSnapshot as mr, DESKTOP_NATIVE_NODE_CLAIM_MAX_BODY_BYTES as ms, AgentControlAutomationId as mt, ComputerSpaceInventory as n, OrchestrationCommandReceiptStatus as na, CommandId as nc, ThreadEnvMode as ni, AgentControlMcpProposeDeviceBootInput as nn, ThreadRevertedPayload as no, DeviceKeyEventInput as nr, ApprovalResponseState as ns, AGENT_CONTROL_MCP_READ_THREAD_TEXT_BUDGET_CHARS as nt, COMPUTER_MESSAGE_MAX_LENGTH as o, OrchestrationEventType as oa, IsoDateTime as oc, StorageError as oi, AgentControlMcpProposeDeviceLaunchInput as on, ThreadSettlementOverride as oo, DeviceRpcError as or, TerminalInputRejectedError as os, AGENT_CONTROL_MCP_WAIT_TIMEOUT_MS_MAX as ot, AgentControlReadProjectInput as p, OrchestrationMessage as pa, RuntimeRequestId as pc, ResolvedKeybindingRule as pi, AgentControlMcpProposeSettingsChangeInput as pn, ThreadUnsettledPayload as po, DeviceUdid as pr, DESKTOP_NATIVE_NODE_CLAIM_DESCRIPTOR_PATH as ps, AgentControlAutomationDefinition as pt, AGENT_CONTROL_EXTERNAL_CREDENTIAL_AUDIENCE as q, ThreadCreatedPayload as qa, ModelContextWindowMetadata as qi, DEVICE_SWIPE_DURATION_MAX_MS as qn, DEFAULT_GIT_TEXT_GENERATION_OPTIONS_BY_PROVIDER as qo, CodexSettings as qr, AuthCreatePairingCredentialInput as qs, AgentControlMcpListThreadsInput as qt, COMPUTER_BROWSER_DRIVER_NAMES as r, OrchestrationDispatchCommandError as ra, ContextHandoffId as rc, WorktreeSubmoduleRepositoryConfig as ri, AgentControlMcpProposeDeviceDetachInput as rn, ThreadRuntimeModeSetPayload as ro, DeviceLaunchAppInput as rr, DEFAULT_TERMINAL_ID as rs, AGENT_CONTROL_MCP_TOOLS as rt, COMPUTER_PROVISION_SUMMARY_MAX_LENGTH as s, OrchestrationGetFullThreadDiffError as sa, MessageId as sc, StorageRetentionPolicy as si, AgentControlMcpProposeDeviceOpenUrlInput as sn, ThreadSnoozedPayload as so, DeviceScreenshotResult as sr, TerminalNotRunningError as ss, AGENT_CONTROL_RISK_TAGS as st, ComputerAuditEffect as t, OrchestrationCommand as ta, CheckpointRef as tc, ServerSettingsError as ti, AgentControlMcpProposeDeviceAttachInput as tn, ThreadProposedPlanUpsertedPayload as to, DeviceInstallAppResult as tr, ApprovalResponseIdentity as ts, AGENT_CONTROL_MCP_OPERATIONAL_RETENTION_MS as tt, COMPUTER_WAIT_MAX_MS as u, OrchestrationGetTurnDiffError as ua, ProjectId as uc, KeybindingsConfig as ui, AgentControlMcpProposeProjectCreateInput as un, ThreadTurnDiffCompletedPayload as uo, DeviceSwipeInput as ur, EDITORS as us, AgentControlActionKind as ut, ComputerUseRequest as v, OrchestrationSession as va, TrimmedNonEmptyString as vc, isToolLifecycleItemType as vi, AgentControlMcpReadDeviceContentInput as vn, WorktreeDeletedPayload as vo, AtlassianConnectionError as vr, LOCAL_INTRODUCTION_COMPLETE_PATH as vs, AgentControlCompletionReturn as vt, WsRpcGroup as w, OrchestrationThreadActivityTone as wa, ProviderSteerTurnInput as wi, AgentControlMcpSendMessageInput as wn, StatusBucket as wo, GitManagerError as wr, HubDeviceGrantClaims as ws, AgentControlExternalRpcError as wt, WS_METHODS as x, OrchestrationStopBackgroundTaskError as xa, ProviderRespondToUserInputInput as xi, AgentControlMcpReadThreadInput as xn, WorktreeRestoredPayload as xo, AtlassianProduct as xr, LOCAL_INTRODUCTION_MAX_BODY_BYTES as xs, AgentControlExternalIntegration as xt, ComputerUseResult as y, OrchestrationSessionStatus as ya, TurnId as yc, ProviderInterruptTurnInput as yi, AgentControlMcpReadDeviceStateInput as yn, WorktreeManualPositionSetPayload as yo, AtlassianConnectionKind as yr, LOCAL_INTRODUCTION_CONTROL_HEADER as ys, AgentControlExternalCapabilitiesResult as yt, ProjectWriteFileError as z, ProjectionPendingApprovalStatus as za, ContextHandoffAppliedBudget as zi, AgentControlProposeWorkspaceInput as zn, VcsProcessSpawnError as zo, McpSettingsError as zr, RELAY_SUPPORTED_VERSION_RANGE as zs, AgentControlMcpListAutomationRunsInput as zt };
16906
+ export { ProjectChatError as $, OrchestrationReadModel as $a, NativeHandoffStartRequest as $c, ProviderRespondToUserInputInput as $i, NativeIdentityPasswordStartResponse as $l, AgentControlPlanDigest as $n, ThreadUnsettledPayload as $o, GitReadLineBlameInput as $r, TerminalCwdError as $s, AgentControlMcpControlRequestResult as $t, RELAY_MAX_DATA_CHUNK_BYTES as $u, WsHostedRpcGroup as A, ModelContextWindowMetadata as Aa, NATIVE_E2EE_GRANT_KEYS_PATH as Ac, ProviderItemId as Ad, ServerSettingsError as Ai, NATIVE_IDENTITY_PASSWORD_RESET_VERIFY_PATH as Al, AgentControlMcpProposeDeviceShutdownInput as An, ThreadArchivedPayload as Ao, DeviceStopRecordingResult as Ar, VcsDriverKind as As, AGENT_CONTROL_WS_METHODS as At, PasswordResetRequest as Au, NotesError as B, OrchestrationDispatchCommandError as Ba, NATIVE_HANDOFF_PRESENTATION_PATH_PREFIX as Bc, KeybindingRule as Bi, NativeIdentityAttemptCancelResponse as Bl, AgentControlMcpReadDeviceStateInput as Bn, ThreadProposedPlanUpsertedPayload as Bo, AtlassianConnectionKind as Br, DEFAULT_GIT_TEXT_GENERATION_MODEL_BY_PROVIDER as Bs, AgentControlExternalCapabilitiesResult as Bt, PublicSignupStartRequest as Bu, AgentControlWaitThreadsInput as C, ContextHandoffEndpointSnapshot as Ca, AccountE2eeDeviceRenameRequest as Cc, EnvironmentId$1 as Cd, CopilotSettings as Ci, HubSpaceId as Cl, AgentControlMcpProposeDeviceBootInput as Cn, ProjectionPendingApprovalDecision as Co, DeviceKeyEventInput as Cr, WorkItemProviderError as Cs, AGENT_CONTROL_MCP_READ_THREAD_TEXT_BUDGET_CHARS as Ct, PUBLIC_SIGNUP_START_PATH as Cu, AcpRegistryOperationError as D, DEFAULT_PROJECT_METADATA_DIR as Da, HubGrantVerificationKeysetResponse as Dc, NonNegativeInt as Dd, GrokSettings as Di, NATIVE_IDENTITY_PASSWORD_FINISH_PATH as Dl, AgentControlMcpProposeDeviceLaunchInput as Dn, ProviderSessionRuntimeStatus as Do, DeviceRpcError as Dr, SourceControlProviderError as Ds, AGENT_CONTROL_MCP_WAIT_TIMEOUT_MS_MAX as Dt, PasswordLoginStartResponse as Du, ComputerUseResult as E, DEFAULT_PROJECT_KIND as Ea, HubDeviceGrantClaims as Ec, MessageId as Ed, DEFAULT_WORKTREE_BRANCH_PREFIX as Ei, NATIVE_IDENTITY_EMAIL_VERIFY_PATH as El, AgentControlMcpProposeDeviceInstallInput as En, ProviderInteractionMode as Eo, DeviceOpenUrlInput as Er, SourceControlChangeRequestReviewer as Es, AGENT_CONTROL_MCP_WAIT_TIMEOUT_MS_DEFAULT as Et, PasswordLoginStartRequest as Eu, SessionImportError as F, OrchestrationCheckpointFile as Fa, NativeE2eeEnrollmentUpsertResponse as Fc, RuntimeTaskId as Fd, StorageCleanupPreview as Fi, NATIVE_IDENTITY_SIGNUP_PASSWORD_FINISH_PATH as Fl, AgentControlMcpProviderRuntimeEventsResult as Fn, ThreadGoalUpdatedPayload as Fo, ThreadPriorityBatchSnapshot as Fr, VcsUnsupportedOperationError as Fs, AgentControlAutomationId as Ft, PublicSignupFinishResponse as Fu, LocalTaskDeleteInput as G, OrchestrationGetSnapshotError as Ga, NativeHandoffCallbackUri as Gc, THREAD_JUMP_KEYBINDING_COMMANDS as Gi, NativeIdentityPasswordFinishRequest as Gl, AgentControlMcpSendMessageInput as Gn, ThreadSettlementOverride as Go, ChangeRequestReviewThread as Gr, PROVIDER_DISPLAY_NAMES as Gs, AgentControlExternalRpcError as Gt, HubEnrollmentCeremonyDetail as Gu, LocalTask as H, OrchestrationEventMetadata as Ha, NATIVE_HANDOFF_START_PATH as Hc, KeybindingsConfigError as Hi, NativeIdentityEmailStartResponse as Hl, AgentControlMcpReadThreadInput as Hn, ThreadRuntimeModeSetPayload as Ho, AtlassianProduct as Hr, DEFAULT_MODEL as Hs, AgentControlExternalIntegration as Ht, PublicSignupVerifyRequest as Hu, DailyRecapReadError as I, OrchestrationCheckpointStatus as Ia, NodeE2eeAdmissionPolicy as Ic, ThreadId as Id, StorageCleanupResult as Ii, NATIVE_IDENTITY_SIGNUP_USERNAME_PATH as Il, AgentControlMcpReadAutomationInput as In, ThreadInteractionModeSetPayload as Io, ThreadPriorityCandidateRanking as Ir, ThreadPriorityBatchId as Is, AgentControlAutomationRun as It, PublicSignupPasskeyFinishRequest as Iu, LocalTaskUpdateInput as J, OrchestrationGetTurnDiffResult as Ja, NativeHandoffConnectRedeemResponse as Jc, UserInputQuestion as Ji, NativeIdentityPasswordResetRequest as Jl, AgentControlMcpWaitForControlRequestInput as Jn, ThreadTokenModeSetPayload as Jo, GitApplyIndexPatchInput as Jr, defaultInstanceIdForDriver as Js, AgentControlExternalWaitForTaskInput as Jt, HubGrantVerificationKeyId as Ju, LocalTaskError as K, OrchestrationGetTaskOutputError as Ka, NativeHandoffCancelResponse as Kc, RuntimeSubagentStatus as Ki, NativeIdentityPasswordResetFinishRequest as Kl, AgentControlMcpSettingsSummaryResult as Kn, ThreadSnoozedPayload as Ko, ChangeRequestTimelineItem as Kr, ProviderDriverKind as Ks, AgentControlExternalTaskId as Kt, HubEnrollmentStartResult as Ku, DailyRecapThread as L, OrchestrationCheckpointSummary as La, NATIVE_HANDOFF_APPROVE_PATH_SUFFIX as Lc, TrimmedNonEmptyString as Ld, StorageError as Li, NATIVE_NODE_CLAIM_FINISH_PATH as Ll, AgentControlMcpReadAutomationResult as Ln, ThreadMessageSentPayload as Lo, ThreadPriorityRpcError as Lr, ThreadPriorityCandidateId as Ls, AgentControlAutomationRunId as Lt, PublicSignupPasskeyOptionsRequest as Lu, AcpRegistryAgentId as M, ORCHESTRATION_WS_METHODS as Ma, NativeAccountGrantRelayTicketRequest as Mc, RuntimeRequestId as Md, WorktreeSubmoduleRepositoryConfig as Mi, NATIVE_IDENTITY_RECOVERY_CODE_PATH as Ml, AgentControlMcpProposeProjectRemoveInput as Mn, ThreadCreatedPayload as Mo, DeviceTestingInput as Mr, VcsProcessExitError as Ms, AgentControlActionPlan as Mt, PasswordResetVerifyRequest as Mu, AcpRegistrySettings as N, OrchestrationActorKind as Na, NativeAccountGrantRelayTicketResponse as Nc, RuntimeSessionId as Nd, DEFAULT_LIFECYCLE_SUGGESTION_POLICY as Ni, NATIVE_IDENTITY_SIGNUP_PASSKEY_FINISH_PATH as Nl, AgentControlMcpProposeProjectUpdateInput as Nn, ThreadDeletedPayload as No, DeviceTypeTextInput as Nr, VcsProcessSpawnError as Ns, AgentControlAutomation as Nt, PasswordResetVerifyResponse as Nu, WS_METHODS as O, DEFAULT_PROVIDER_INTERACTION_MODE as Oa, NATIVE_ACCOUNT_GRANT_RELAY_TICKET_PATH as Oc, PositiveInt as Od, OpenCodeSettings as Oi, NATIVE_IDENTITY_PASSWORD_RESET_FINISH_PATH as Ol, AgentControlMcpProposeDeviceOpenUrlInput as On, RuntimeMode as Oo, DeviceScreenshotResult as Or, SourceControlRepositoryError as Os, AGENT_CONTROL_RISK_TAGS as Ot, PasswordResetFinishRequest as Ou, AcpRegistryVersion as P, OrchestrationAggregateKind as Pa, NativeE2eeEnrollmentUpsertRequest as Pc, RuntimeSubagentId as Pd, WorkspaceLifecycleError as Pi, NATIVE_IDENTITY_SIGNUP_PASSKEY_OPTIONS_PATH as Pl, AgentControlMcpProposeSettingsChangeInput as Pn, ThreadGoalClearedPayload as Po, DeviceUdid as Pr, VcsProcessTimeoutError as Ps, AgentControlAutomationDefinition as Pt, PublicSignupConfigResponse as Pu, PROJECT_STAGE_FILE_MAX_BYTES as Q, OrchestrationProposedPlanId as Qa, NativeHandoffRedeemResponse as Qc, ProviderRespondToRequestInput as Qi, NativeIdentityPasswordStartRequest as Ql, AgentControlOperationStatus as Qn, ThreadUnarchivedPayload as Qo, GitReadImageBlobInput as Qr, DEFAULT_TERMINAL_ID as Qs, AgentControlMcpContextResult as Qt, RELAY_MAX_CONTROL_FRAME_BYTES as Qu, NotesCommand as R, OrchestrationCommand as Ra, NATIVE_HANDOFF_CANCEL_PATH_SUFFIX as Rc, TurnId as Rd, StorageRetentionPolicy as Ri, NATIVE_NODE_CLAIM_START_PATH as Rl, AgentControlMcpReadControlRequestInput as Rn, ThreadMetaUpdatedPayload as Ro, AtlassianCapability as Rr, ThreadPriorityFingerprint as Rs, AgentControlCapability as Rt, PublicSignupPasskeyOptionsResponse as Ru, AgentControlSearchThreadsInput as S, ContextHandoffDigest as Sa, AccountE2eeDeviceMutationResponse as Sc, ContextHandoffId as Sd, CodexSettings as Si, HubBrowserSessionResponse as Sl, AgentControlMcpProposeDeviceAttachInput as Sn, ProjectScript as So, DeviceInstallAppResult as Sr, WORK_ITEM_DETAIL_COMMENT_BODY_MAX_BYTES as Ss, AGENT_CONTROL_MCP_OPERATIONAL_RETENTION_MS as St, PUBLIC_SIGNUP_PASSWORD_FINISH_PATH as Su, ComputerUseRequest as T, ContextHandoffMode as Ta, HUB_DEVICE_GRANT_MAX_BYTES as Tc, IsoDateTime as Td, DEFAULT_SERVER_SETTINGS as Ti, NATIVE_IDENTITY_EMAIL_START_PATH as Tl, AgentControlMcpProposeDeviceInputInput as Tn, ProviderApprovalDecision as To, DeviceLaunchAppResult as Tr, SOURCE_CONTROL_WORKFLOW_LOG_MAX_BYTES as Ts, AGENT_CONTROL_MCP_TOOL_NAMES as Tt, PasswordLoginFinishRequest as Tu, LocalTaskCreateInput as U, OrchestrationEventType as Ua, NATIVE_HANDOFF_TRANSACTION_LIFETIME_MS as Uc, MODEL_PICKER_JUMP_KEYBINDING_COMMANDS as Ui, NativeIdentityEmailVerifyRequest as Ul, AgentControlMcpReadThreadResult as Un, ThreadSessionSetPayload as Uo, CHANGE_REQUEST_FILE_CONTENTS_MAX_BYTES as Ur, MODEL_SLUG_ALIASES_BY_PROVIDER as Us, AgentControlExternalOverviewResult as Ut, PublicSignupVerifyResponse as Uu, NotesListInput as V, OrchestrationEvent as Va, NATIVE_HANDOFF_REDEEM_PATH as Vc, KeybindingsConfig as Vi, NativeIdentityEmailStartRequest as Vl, AgentControlMcpReadDeviceStateResult as Vn, ThreadRevertedPayload as Vo, AtlassianConnectionStatus as Vr, DEFAULT_GIT_TEXT_GENERATION_OPTIONS_BY_PROVIDER as Vs, AgentControlExternalCreateTaskInput as Vt, PublicSignupStartResponse as Vu, LocalTaskDelegateInput as W, OrchestrationGetFullThreadDiffError as Wa, NativeHandoffApproveResponse as Wc, ResolvedKeybindingRule as Wi, NativeIdentityEmailVerifyResponse as Wl, AgentControlMcpRecentActivityResult as Wn, ThreadSettledPayload as Wo, ChangeRequestReviewComment as Wr, ModelCapabilities as Ws, AgentControlExternalProjectScope as Wt, HubConnectorStatus as Wu, PROJECT_ICON_MAX_BYTES as X, OrchestrationMessage as Xa, NativeHandoffPresentation as Xc, ClaudeCacheObservation as Xi, NativeIdentityPasswordResetVerifyRequest as Xl, AgentControlOperationId as Xn, ThreadTurnDiffCompletedPayload as Xo, GitManagerError as Xr, ApprovalResponseIdentity as Xs, AgentControlListWorkspacesInput as Xt, RELAY_AUTHENTICATION_DEADLINE_MS as Xu, FilesystemBrowseError as Y, OrchestrationGetWorkflowScriptError as Ya, NativeHandoffId as Yc, isToolLifecycleItemType as Yi, NativeIdentityPasswordResetResponse as Yl, AgentControlOperation as Yn, ThreadTrashedPayload as Yo, GitCommandError as Yr, isProviderDriverKind as Ys, AgentControlIntegrationId as Yt, NativeE2eeEnrollmentId as Yu, PROJECT_READ_FILE_BINARY_MAX_BYTES as Z, OrchestrationMessageRole as Za, NativeHandoffRedeemRequest as Zc, ProviderInterruptTurnInput as Zi, NativeIdentityPasswordResetVerifyResponse as Zl, AgentControlOperationState as Zn, ThreadTurnInterruptRequestedPayload as Zo, GitReadComparisonInput as Zr, ApprovalResponseState as Zs, AgentControlMcpCapabilitiesResult as Zt, RELAY_FRAME_TYPES as Zu, AgentControlTaskStatusResult as _, CheckpointRevertActivityPayload as _a, LOCAL_INTRODUCTION_MAX_BODY_BYTES as _c, AtlassianConnectionId as _d, ServerProvider as _i, ExternalIdentitySignupFinishRequest as _l, AgentControlMcpOperationalReadInput as _n, ProjectCreatedPayload as _o, DeviceBundleId as _r, StatusBucket as _s, AGENT_CONTROL_EXTERNAL_PAIRING_CODE_TTL_MS as _t, PASSWORD_RESET_REQUEST_PATH as _u, COMPUTER_FRAME_MAGIC as a, AgentTokenMode as aa, EDITORS as ac, RelayChannelId as ad, McpOauthLoginResult as ai, BrowserExternalIdentityConnectResponse as al, AgentControlMcpInterruptThreadInput as an, OrchestrationThread as ao, AgentControlProposalStatus as ar, TurnDispatchMode as as, ProjectStageFileReferenceError as at, NativeIdentitySignupPasskeyOptionsRequest as au, AgentControlReadProjectInput as b, ContextHandoffActivityPayload as ba, ACCOUNT_E2EE_DEVICE_PATH_PREFIX as bc, CheckpointRef as bd, isProviderAvailable as bi, GITHUB_EXTERNAL_IDENTITY_DISCONNECT_PATH as bl, AgentControlMcpProposeAutomationCreateInput as bn, ProjectMetaUpdatedPayload as bo, DeviceHardwareButton as br, ThreadGoal as bs, AGENT_CONTROL_MCP_MESSAGE_TEXT_MAX_CHARS as bt, PUBLIC_SIGNUP_PASSKEY_FINISH_PATH as bu, COMPUTER_SELECT_TEXT_RANGE_MAX as c, CONTEXT_HANDOFF_ACTIVITY_KIND as ca, DESKTOP_NATIVE_NODE_CLAIM_COMMIT_PATH as cc, RelayNodeId as cd, McpServer as ci, EXTERNAL_IDENTITY_SIGNUP_FINISH_PATH as cl, AgentControlMcpListAutomationsInput as cn, OrchestrationThreadHistoryCursor as co, AgentControlRequestId as cr, WorktreeCheckoutRestoredPayload as cs, AGENT_CONTROL_AUTOMATION_MAX_HORIZON_MS as ct, NativeIdentitySignupUsernameRequest as cu, AGENT_CONTROL_DELEGATION_MCP_TOOLS as d, CONTEXT_HANDOFF_INSPECTION_MAX_RESPONSE_BYTES as da, DESKTOP_NATIVE_NODE_CLAIM_SIGN_PATH as dc, AuthClientMetadataDeviceType as dd, McpServerWritableConfig as di, ExternalIdentityAuthorizationStartResponse as dl, AgentControlMcpListDevicesResult as dn, PROJECT_RELOCATION_PENDING_MESSAGE as do, AgentControlRpcError as dr, WorktreeManualPositionSetPayload as ds, AGENT_CONTROL_CAPABILITIES as dt, NativeNodeClaimFinishResponse as du, ProviderSendTurnInput as ea, TerminalHistoryError as ec, RELAY_MAX_DATA_FRAME_BYTES as ed, TextGenerationError as ei, NativeHandoffStartResponse as el, AgentControlMcpCreateThreadsInput as en, OrchestrationReplayEventsError as eo, AgentControlPlanWorkspaceInput as er, ThreadUnsnoozedPayload as es, ProjectListEntriesError as et, NativeIdentityRecoveryCodeRequest as eu, AGENT_CONTROL_TASK_NOTICE_MAX_CHARS as f, CONTEXT_HANDOFF_MAX_INPUT_CHARS as fa, DesktopNativeNodeClaimCommitRequest as fc, AuthCreatePairingCredentialInput as fd, McpSettingsError as fi, ExternalIdentityConfigResponse as fl, AgentControlMcpListProjectsInput as fn, PROVIDER_SEND_TURN_MAX_ATTACHMENT_TOTAL_BYTES as fo, DEVICE_CAPABILITY_LABELS as fr, WorktreeMetaUpdatedPayload as fs, AGENT_CONTROL_DEVICE_ACTION_KINDS as ft, NativeNodeClaimStartRequest as fu, AgentControlTaskStatusInput as g, ChatFileAttachment as ga, LOCAL_INTRODUCTION_DESCRIPTOR_PATH as gc, ApprovalRequestId as gd, UsageReadError as gi, ExternalIdentityProvider as gl, AgentControlMcpMutationResult as gn, ProjectAvatarSetPayload as go, DeviceAvailability as gr, PullRequestState as gs, AGENT_CONTROL_EXTERNAL_MCP_TOOL_NAMES as gt, PASSWORD_RESET_FINISH_PATH as gu, AgentControlTaskNoticeOutcome as h, ChatAttachmentReadError as ha, LOCAL_INTRODUCTION_CONTROL_HEADER as hc, AuthRpcError as hd, OpinionatedPluginError as hi, ExternalIdentityPendingResponse as hl, AgentControlMcpListThreadsResult as hn, PROVIDER_SEND_TURN_MAX_INPUT_CHARS as ho, DEVICE_WS_METHODS as hr, WorktreeSourceControlStateUpdatedPayload as hs, AGENT_CONTROL_EXTERNAL_MCP_TOOLS as ht, PASSWORD_LOGIN_START_PATH as hu, COMPUTER_DRAG_MAX_DURATION_MS as i, ProviderStopSessionInput as ia, TerminalSubscriptionResyncError as ic, RelayCapability as id, McpListServersResult as ii, BrowserExternalIdentityConnectRequest as il, AgentControlMcpInstallationId as in, OrchestrationStopBackgroundTaskError as io, AgentControlProposalId as ir, ThreadUsageLimitSetPayload as is, ProjectSearchEntriesError as it, NativeIdentitySignupPasskeyFinishRequest as iu, WsRpcGroup as j, ModelSelection as ja, NATIVE_E2EE_MAX_GRANT_KEYS as jc, RuntimeItemId as jd, ThreadEnvMode as ji, NATIVE_IDENTITY_PASSWORD_START_PATH as jl, AgentControlMcpProposeProjectCreateInput as jn, ThreadAttachedToWorktreePayload as jo, DeviceSwipeInput as jr, VcsOutputDecodeError as js, AgentControlActionKind as jt, PasswordResetRequestResponse as ju, WsDeviceRpcGroup as k, FileAttachmentCreateUploadUrlError as ka, NATIVE_E2EE_CURRENT_DEVICE_PATH as kc, ProjectId as kd, ServerSettings as ki, NATIVE_IDENTITY_PASSWORD_RESET_REQUEST_PATH as kl, AgentControlMcpProposeDeviceRecordingInput as kn, ThreadActivityAppendedPayload as ko, DeviceStartRecordingResult as kr, truncateSourceControlDetailContent as ks, AGENT_CONTROL_TERMINAL_PROPOSAL_STATUSES as kt, PasswordResetFinishResponse as ku, COMPUTER_TEXT_MAX_LENGTH as l, CONTEXT_HANDOFF_ERROR_MAX_CHARS as la, DESKTOP_NATIVE_NODE_CLAIM_DESCRIPTOR_PATH as lc, RelayProtocolVersion as ld, McpServerConfig as li, EXTERNAL_IDENTITY_START_PATH as ll, AgentControlMcpListAutomationsResult as ln, OrchestrationThreadHistoryError as lo, AgentControlResultEnvelope as lr, WorktreeCreatedPayload as ls, AGENT_CONTROL_AUTOMATION_MIN_INTERVAL_MS as lt, NativeIdentitySignupUsernameResponse as lu, AgentControlTaskCancelInput as m, ChatAttachment as ma, LOCAL_INTRODUCTION_COMPLETE_PATH as mc, AuthRevokePairingLinkInput as md, McpWorkspaceId as mi, ExternalIdentityDisconnectResponse as ml, AgentControlMcpListThreadsInput as mn, PROVIDER_SEND_TURN_MAX_IMAGE_BYTES as mo, DEVICE_SWIPE_DURATION_MAX_MS as mr, WorktreeRestoredPayload as ms, AGENT_CONTROL_EXTERNAL_CREDENTIAL_AUDIENCE as mt, PASSWORD_LOGIN_FINISH_PATH as mu, ComputerSpaceInventory as n, ProviderSteerTurnInput as na, TerminalNotRunningError as nc, RELAY_MAX_RPC_MESSAGE_BYTES as nd, McpInventoryResourceTemplate as ni, ActiveSpaceSwitchRequest as nl, AgentControlMcpDiagnosticsSummaryResult as nn, OrchestrationSessionStatus as no, AgentControlPromptSummary as nr, ThreadUsageLimit as ns, ProjectReadFileError as nt, NativeIdentitySessionResponse as nu, COMPUTER_MESSAGE_MAX_LENGTH as o, CHAT_ATTACHMENT_READ_CHUNK_BYTES as oa, OpenError as oc, RelayEffectiveRole as od, McpProviderCapabilities as oi, EXTERNAL_IDENTITY_CONFIG_PATH as ol, AgentControlMcpListAutomationRunsInput as on, OrchestrationThreadActivity as oo, AgentControlProposeWorkspaceInput as or, WorktreeArchivedPayload as os, ProjectWriteFileError as ot, NativeIdentitySignupPasskeyOptionsResponse as ou, AGENT_CONTROL_TASK_RESULT_MAX_CHARS as p, CONTEXT_HANDOFF_WS_METHODS as pa, DesktopNativeNodeClaimSignRequest as pc, AuthRevokeClientSessionInput as pd, McpWorkspace as pi, ExternalIdentityDisconnectRequest as pl, AgentControlMcpListProjectsResult as pn, PROVIDER_SEND_TURN_MAX_FILE_BYTES as po, DEVICE_FRAME_MAGIC as pr, WorktreeRelocatedPayload as ps, AGENT_CONTROL_ERROR_CODES as pt, NativeNodeClaimStartResponse as pu, LocalTaskListInput as q, OrchestrationGetTurnDiffError as qa, NativeHandoffConnectRedeemRequest as qc, ToolLifecycleItemType as qi, NativeIdentityPasswordResetFinishResponse as ql, AgentControlMcpUpdateThreadInput as qn, ThreadStatusBucketOverriddenPayload as qo, ChangeRequestViewerCapabilities as qr, ProviderInstanceId as qs, AgentControlExternalTaskIdInput as qt, HubIdentitySummary as qu, COMPUTER_BROWSER_DRIVER_NAMES as r, ProviderStopBackgroundTaskInput as ra, TerminalSessionLookupError as rc, RELAY_SUPPORTED_VERSION_RANGE as rd, McpInventoryTool as ri, ActiveSpaceSwitchResponse as rl, AgentControlMcpInstallation as rn, OrchestrationShellSnapshot as ro, AgentControlProposal as rr, ThreadUsageLimitClearedPayload as rs, ProjectReadIconError as rt, NativeIdentitySignupFinishResponse as ru, COMPUTER_PROVISION_SUMMARY_MAX_LENGTH as s, CHECKPOINT_REVERT_ACTIVITY_KIND as sa, DESKTOP_HUB_REACHABILITY_PATH as sc, RelayFrame as sd, McpProviderSupport as si, EXTERNAL_IDENTITY_PENDING_PATH as sl, AgentControlMcpListAutomationRunsResult as sn, OrchestrationThreadActivityTone as so, AgentControlReadWorkspaceInput as sr, WorktreeCheckoutRemovedPayload as ss, AGENT_CONTROL_ACTION_CAPABILITIES as st, NativeIdentitySignupPasswordFinishRequest as su, ComputerAuditEffect as t, ProviderSessionStartInput as ta, TerminalInputRejectedError as tc, RELAY_MAX_RETRY_AFTER_MS as td, McpInventoryResource as ti, ACTIVE_SPACE_SWITCH_PATH as tl, AgentControlMcpDiagnosticsSummaryInput as tn, OrchestrationSession as to, AgentControlPrincipal as tr, ThreadUntrashedPayload as ts, ProjectReadFileBinaryError as tt, NativeIdentityRecoveryResponse as tu, COMPUTER_WAIT_MAX_MS as u, CONTEXT_HANDOFF_INSPECTION_CHUNK_MAX_BYTES as ua, DESKTOP_NATIVE_NODE_CLAIM_MAX_BODY_BYTES as uc, AuthBootstrapInput as ud, McpServerName as ui, ExternalIdentityAuthorizationStartRequest as ul, AgentControlMcpListDevicesInput as un, OrchestrationWorktreeShell as uo, AgentControlRiskTag as ur, WorktreeDeletedPayload as us, AGENT_CONTROL_AUTOMATION_PROPOSAL_TTL_MS as ut, NativeNodeClaimFinishRequest as uu, AgentControlInspectThreadInput as v, ClientOrchestrationCommand as va, LocalIntroductionCompleteRequest as vc, AtlassianResourceId as vd, ServerProviderCompatibilityStatus as vi, ExternalIdentitySignupFinishResponse as vl, AgentControlMcpOrchestrationEventsResult as vn, ProjectDeletedPayload as vo, DeviceDescribeUiResult as vr, Worktree as vs, AGENT_CONTROL_EXTERNAL_PROPOSAL_TTL_MS as vt, PASSWORD_RESET_VERIFY_PATH as vu, ComputerUseBridgeConfig as w, ContextHandoffInspectionError as wa, AccountE2eeDeviceRevokeRequest as wc, EventId as wd, CursorSettings as wi, NATIVE_IDENTITY_ATTEMPT_CANCEL_PATH as wl, AgentControlMcpProposeDeviceDetachInput as wn, ProjectionPendingApprovalStatus as wo, DeviceLaunchAppInput as wr, WorkItemProviderKind as ws, AGENT_CONTROL_MCP_TOOLS as wt, PUBLIC_SIGNUP_VERIFY_PATH as wu, AgentControlReadThreadFileInput as x, ContextHandoffAppliedBudget as xa, AccountE2eeDeviceListResponse as xc, CommandId as xd, ClaudeSettings as xi, HostedAccountSecurityResponse as xl, AgentControlMcpProposeAutomationUpdateInput as xn, ProjectMetadataDir as xo, DeviceInstallAppInput as xr, WORK_ITEM_DETAIL_BODY_MAX_BYTES as xs, AGENT_CONTROL_MCP_OPERATIONAL_RANGE_MAX_MS as xt, PUBLIC_SIGNUP_PASSKEY_OPTIONS_PATH as xu, AgentControlReadDiffInput as y, ClientThreadTurnStartCommand as ya, ACCOUNT_E2EE_DEVICES_PATH as yc, AuthSessionId as yd, ServerProviderUpdateError as yi, GITHUB_EXTERNAL_IDENTITY_CONNECT_PATH as yl, AgentControlMcpProposeAutomationCancelInput as yn, ProjectKind as yo, DeviceDescriptor as yr, WorktreeId as ys, AGENT_CONTROL_MCP_AUTOMATION_LIST_PROMPT_MAX_CHARS as yt, PUBLIC_SIGNUP_CONFIG_PATH as yu, NotesDocument as z, OrchestrationCommandReceiptStatus as za, NATIVE_HANDOFF_CODE_LIFETIME_MS as zc, CodexResetCreditError as zi, NativeIdentityAttemptCancelRequest as zl, AgentControlMcpReadDeviceContentInput as zn, ThreadPriorityProjectedRanking as zo, AtlassianConnectionError as zr, DEFAULT_GIT_TEXT_GENERATION_MODEL as zs, AgentControlCompletionReturn as zt, PublicSignupPasswordFinishRequest as zu };