ryco-cli 0.1.6 → 0.1.7

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 (152) hide show
  1. package/dist/{AzureDevOpsSourceControlProvider-6holYS_D.cjs → AzureDevOpsSourceControlProvider-5exivY-1.cjs} +2 -2
  2. package/dist/{AzureDevOpsSourceControlProvider-CC2_COxP.mjs → AzureDevOpsSourceControlProvider-CF5LuCHp.mjs} +2 -2
  3. package/dist/{BitbucketSourceControlProvider-a0IsNFyG.cjs → BitbucketSourceControlProvider-1GWENqcl.cjs} +2 -2
  4. package/dist/{BitbucketSourceControlProvider-CYR_BD1d.mjs → BitbucketSourceControlProvider-CKH09tfT.mjs} +2 -2
  5. package/dist/{ClaudeDriver-C6tQNEWO.cjs → ClaudeDriver-BXLdjrht.cjs} +177 -4
  6. package/dist/{ClaudeDriver-D3nsxwH9.mjs → ClaudeDriver-WwWFTu61.mjs} +178 -5
  7. package/dist/{CodexDriver-BILrJG8o.mjs → CodexDriver-93-TmCrO.mjs} +6 -5
  8. package/dist/{CodexDriver-ms_YgFD7.cjs → CodexDriver-BboMT9uk.cjs} +5 -4
  9. package/dist/{CodexTextGeneration-CHEgoANm.cjs → CodexTextGeneration-0pRbJji3.cjs} +2 -2
  10. package/dist/{CodexTextGeneration-BIKHl7E3.mjs → CodexTextGeneration-BU9Myn87.mjs} +3 -3
  11. package/dist/{CopilotDriver-CmD3Ffyl.mjs → CopilotDriver-BASi8pJ0.mjs} +4 -4
  12. package/dist/{CopilotDriver-B0--ZwIK.cjs → CopilotDriver-DCsv-17W.cjs} +3 -3
  13. package/dist/{CursorDriver-DTVPXZ-R.cjs → CursorDriver-BTSiM3A8.cjs} +161 -14
  14. package/dist/{CursorDriver-CbeaIbdb.mjs → CursorDriver-D5LvIqUk.mjs} +162 -15
  15. package/dist/{ForgejoSourceControlProvider-DwAog76b.cjs → ForgejoSourceControlProvider-BTXRDCGB.cjs} +2 -2
  16. package/dist/{ForgejoSourceControlProvider-DX6d9gvz.mjs → ForgejoSourceControlProvider-e-4hvvZ_.mjs} +2 -2
  17. package/dist/{GitHubSourceControlProvider-C-LGwho3.mjs → GitHubSourceControlProvider-26IofDAO.mjs} +2 -2
  18. package/dist/{GitHubSourceControlProvider-9lJFzjsu.cjs → GitHubSourceControlProvider-DWmwkA_y.cjs} +2 -2
  19. package/dist/{GitLabSourceControlProvider-CvKA74lg.cjs → GitLabSourceControlProvider-D-YHnxRe.cjs} +2 -2
  20. package/dist/{GitLabSourceControlProvider-CkeT2aEx.mjs → GitLabSourceControlProvider-DePct78W.mjs} +2 -2
  21. package/dist/{OpenCodeDriver-ClWtCk0j.mjs → OpenCodeDriver-BhvLOmvn.mjs} +325 -38
  22. package/dist/{OpenCodeDriver-CXUsnl5o.cjs → OpenCodeDriver-CVeZ4n9-.cjs} +324 -37
  23. package/dist/{SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs → SourceControlProviderDiscoveryCatalog-DeFR5xH3.cjs} +1 -64
  24. package/dist/{SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs → SourceControlProviderDiscoveryCatalog-mJV_Xitr.mjs} +3 -48
  25. package/dist/bin.cjs +1280 -519
  26. package/dist/bin.mjs +1234 -474
  27. package/dist/client/assets/{AnimatedHeight-DgItDSis.js → AnimatedHeight-BSU0lzYs.js} +1 -1
  28. package/dist/client/assets/AppearanceSettings-D7q0ujGK.js +1 -0
  29. package/dist/client/assets/{BranchToolbar.logic-C_xHEt9C.js → BranchToolbar.logic-CZIFSvhd.js} +1 -1
  30. package/dist/client/assets/ChatRightPanel-CWHOIuiQ.js +188 -0
  31. package/dist/client/assets/{ChatThreadRouteView-CV6ETYG5.js → ChatThreadRouteView-bA7xWXzc.js} +1 -1
  32. package/dist/client/assets/{CommandPaletteDialog-C_H7R8S5.js → CommandPaletteDialog-DNYaVOZO.js} +1 -1
  33. package/dist/client/assets/CompositeRoot-B_KEfCUE.js +1 -0
  34. package/dist/client/assets/ConnectionsSettings-CLZPbx_K.js +1 -0
  35. package/dist/client/assets/{DiagnosticsSettings-B340S_mq.js → DiagnosticsSettings-DtzPCb6N.js} +1 -1
  36. package/dist/client/assets/{DialogHandle-BJY7cHCV.js → DialogHandle-DuHnmWoE.js} +1 -1
  37. package/dist/client/assets/{DialogRoot-Ej1FVk-_.js → DialogRoot-BV25qAcA.js} +1 -1
  38. package/dist/client/assets/DialogTitle-DQsi-RTa.js +1 -0
  39. package/dist/client/assets/DialogTrigger-D0fA01C6.js +1 -0
  40. package/dist/client/assets/{DialogViewport-DvjAl76K.js → DialogViewport-CMV_BePU.js} +1 -1
  41. package/dist/client/assets/{DraftChatThreadRouteView-pOkyeKPS.js → DraftChatThreadRouteView-BoiKnrii.js} +1 -1
  42. package/dist/client/assets/{JetBrainsIcons-DTTF47I0.js → JetBrainsIcons-BcPxJlMf.js} +1 -1
  43. package/dist/client/assets/{KeybindingsSettings-CW3RRi-7.js → KeybindingsSettings-LuI98pdF.js} +1 -1
  44. package/dist/client/assets/McpServersSettings-BFMuWYVV.js +6 -0
  45. package/dist/client/assets/{NoActiveThreadState-DVHwrkCp.js → NoActiveThreadState-C2q_O1kP.js} +1 -1
  46. package/dist/client/assets/{OpinionatedPluginsSettings-Cjj23Fs4.js → OpinionatedPluginsSettings-Bqwct37O.js} +1 -1
  47. package/dist/client/assets/{ProjectFavicon-TDP7HRfn.js → ProjectFavicon-D2imiJ8M.js} +1 -1
  48. package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-6TpFsmiI.js → ProviderUpdateLaunchNotification.logic-CJgA--nK.js} +1 -1
  49. package/dist/client/assets/ProvidersSettingsPanel-B97vbeu6.js +1 -0
  50. package/dist/client/assets/{RedactedSensitiveText-BfoVjPsE.js → RedactedSensitiveText-B2GFTyfq.js} +1 -1
  51. package/dist/client/assets/RootAppShell-C1xTR98P.js +12 -0
  52. package/dist/client/assets/SettingsDialog-Q0Q8O5oH.js +2 -0
  53. package/dist/client/assets/SourceControlSettings-KAvoPTNi.js +1 -0
  54. package/dist/client/assets/StatisticsPanel-BzsQ444K.js +64 -0
  55. package/dist/client/assets/{ThreadStatusIndicators-B0leIJGD.js → ThreadStatusIndicators-Cw_jLVQf.js} +1 -1
  56. package/dist/client/assets/{ThreadTerminalDrawer-COq2Fk17.js → ThreadTerminalDrawer-D1WnSemH.js} +17 -17
  57. package/dist/client/assets/ThreadWorkspacePanel-L4qCPTOA.js +166 -0
  58. package/dist/client/assets/{alert-dialog-lMfKpG2t.js → alert-dialog-CNmKa0BK.js} +1 -1
  59. package/dist/client/assets/chart-column-BWSKYZ_a.js +1 -0
  60. package/dist/client/assets/{chatThreadActions-PPyTj_x0.js → chatThreadActions-TtDsiwDC.js} +1 -1
  61. package/dist/client/assets/chevron-up-zopJ_99l.js +1 -0
  62. package/dist/client/assets/{clamp-JiD4IZ0Z.js → clamp-Ds6WJu8j.js} +1 -1
  63. package/dist/client/assets/{clipboard-copy-CYBLSG2q.js → clipboard-copy-BoJGpdmJ.js} +1 -1
  64. package/dist/client/assets/clock-CzUHThzk.js +1 -0
  65. package/dist/client/assets/{commandPaletteStore-uVfCD7zE.js → commandPaletteStore-KebG835b.js} +1 -1
  66. package/dist/client/assets/composerDraftStore-DpPEQ6BN.js +21 -0
  67. package/dist/client/assets/{desktopUpdateAtoms-X6uM5SoD.js → desktopUpdateAtoms-BQ0GGEfM.js} +1 -1
  68. package/dist/client/assets/{download-DLBlpp4h.js → download-CUiRE0N9.js} +1 -1
  69. package/dist/client/assets/{draft-input-dLlVMl5P.js → draft-input-CwpGDtoT.js} +1 -1
  70. package/dist/client/assets/editorPreferences-jN7DKbyt.js +1 -0
  71. package/dist/client/assets/{empty-DlLY-Hhj.js → empty-CBuXePtg.js} +1 -1
  72. package/dist/client/assets/{group-zDBPF7rR.js → group-BpZvxjG5.js} +1 -1
  73. package/dist/client/assets/{index-Dq8sT2lF.js → index-BKzXTNJ_.js} +2 -2
  74. package/dist/client/assets/{input-B9-RWT56.js → input-CgDawd6k.js} +1 -1
  75. package/dist/client/assets/kbd-QYSL97CK.js +1 -0
  76. package/dist/client/assets/{keybindings-Dx4Nc1vY.js → keybindings-CUTRYI_A.js} +1 -1
  77. package/dist/client/assets/{keyboard-DDTWQkr0.js → keyboard-DFFiI7JY.js} +1 -1
  78. package/dist/client/assets/{keyedQuery-Ds4OGhX2.js → keyedQuery-DiOCbGH0.js} +0 -0
  79. package/dist/client/assets/{main-DxfpmoKJ.js → main-BgFGju3e.js} +3 -3
  80. package/dist/client/assets/main-D0UFdwts.css +2 -0
  81. package/dist/client/assets/{palette-BQcz-ZYV.js → palette-BXCL909c.js} +1 -1
  82. package/dist/client/assets/{play-QloDGe4R.js → play-DI2LZohg.js} +1 -1
  83. package/dist/client/assets/plus-DzgIfHUF.js +1 -0
  84. package/dist/client/assets/projectAtoms-DXXpuERK.js +1 -0
  85. package/dist/client/assets/providerDriverMeta-CRNNp0q3.js +1 -0
  86. package/dist/client/assets/providerIconUtils-D-DFhem2.js +47 -0
  87. package/dist/client/assets/radio-group-_PPYg3YY.js +1 -0
  88. package/dist/client/assets/{refresh-cw-DkBMGllm.js → refresh-cw-BsQTNBXl.js} +1 -1
  89. package/dist/client/assets/{resolveAriaLabelledBy-DDfIbj05.js → resolveAriaLabelledBy-CRHo_s16.js} +1 -1
  90. package/dist/client/assets/{rightPanelRouteSearch-DfuWVvXN.js → rightPanelRouteSearch-CfmZ7osj.js} +1 -1
  91. package/dist/client/assets/{scale-BActunFu.js → scale-DDEJ-tvn.js} +1 -1
  92. package/dist/client/assets/{scroll-area-D-YOUG02.js → scroll-area-HgsI-ErG.js} +1 -1
  93. package/dist/client/assets/{separator-TInKeIDo.js → separator-ClnL4mUB.js} +1 -1
  94. package/dist/client/assets/{server-BtEG3NAw.js → server-Bbs3L-6_.js} +1 -1
  95. package/dist/client/assets/{session-logic-DNf1aXq_.js → session-logic-CKQkgIwo.js} +1 -1
  96. package/dist/client/assets/settingsDialogStore-SG-W1q0A.js +1 -0
  97. package/dist/client/assets/{settingsLayout-D22Mm0u3.js → settingsLayout-G5xVm-ZT.js} +1 -1
  98. package/dist/client/assets/sidebar-_u7SGgmC.js +1 -0
  99. package/dist/client/assets/sidebarStatusText-BTYnwflG.js +1 -0
  100. package/dist/client/assets/{skeleton-DWaac_qp.js → skeleton-CmUvhZGP.js} +1 -1
  101. package/dist/client/assets/{storeSelectors-Cx1IYPA4.js → storeSelectors-DhJRpdiw.js} +1 -1
  102. package/dist/client/assets/threadSelectionStore-ygmA4DNA.js +1 -0
  103. package/dist/client/assets/toast-DmA_ziPT.js +1 -0
  104. package/dist/client/assets/toggle-DGS7tKuj.js +1 -0
  105. package/dist/client/assets/{toggle-group-CnLjaHSL.js → toggle-group-Dtv1ZUFW.js} +1 -1
  106. package/dist/client/assets/{tokenModePresentation-BSYdIvBm.js → tokenModePresentation-Dor1DnBx.js} +1 -1
  107. package/dist/client/assets/{trash-2-BI5xcbsm.js → trash-2-C2G3VGoV.js} +1 -1
  108. package/dist/client/assets/{triangle-alert-DJef_Uvh.js → triangle-alert-Bpz3xGu5.js} +1 -1
  109. package/dist/client/assets/{undo-2-DeZ2cMGS.js → undo-2-C3rtxuqZ.js} +1 -1
  110. package/dist/client/assets/{useHandleNewThread-XB82O6SA.js → useHandleNewThread-ypSbzG0P.js} +1 -1
  111. package/dist/client/assets/useLabelableId-Bc7KEnHU.js +1 -0
  112. package/dist/client/assets/{useNavigate-B2tgshhW.js → useNavigate-_4hWGSey.js} +1 -1
  113. package/dist/client/assets/useTheme-HcKmBfpF.js +1 -0
  114. package/dist/client/assets/{vscode-icons-DM9qFoEr.js → vscode-icons-DdSTtxYd.js} +1 -1
  115. package/dist/client/assets/{wrench-je4QOyG-.js → wrench-C4jdis40.js} +1 -1
  116. package/dist/client/assets/x-CG2WU63t.js +1 -0
  117. package/dist/client/index.html +1 -1
  118. package/dist/{collectUint8StreamText-C2z5Y8tF.mjs → collectUint8StreamText-Lv4GGI79.mjs} +269 -14
  119. package/dist/{collectUint8StreamText-TCG6xW_P.cjs → collectUint8StreamText-uNXVRHOf.cjs} +291 -12
  120. package/dist/{makeManagedServerProvider-DPFw9gV_.cjs → makeManagedServerProvider-3SD-Q5xh.cjs} +1 -1
  121. package/dist/{makeManagedServerProvider-BXO8QvzC.mjs → makeManagedServerProvider-CkPEptun.mjs} +1 -1
  122. package/package.json +1 -1
  123. package/dist/client/assets/AppearanceSettings-BlsMFBvJ.js +0 -1
  124. package/dist/client/assets/ChatRightPanel-CThudBb1.js +0 -188
  125. package/dist/client/assets/CompositeRoot-DjnzUIwC.js +0 -1
  126. package/dist/client/assets/ConnectionsSettings-hArR4Oe3.js +0 -1
  127. package/dist/client/assets/DialogTitle-H1yIMmA9.js +0 -1
  128. package/dist/client/assets/DialogTrigger-BHMq_K2G.js +0 -1
  129. package/dist/client/assets/McpServersSettings-dQ3BzOWY.js +0 -6
  130. package/dist/client/assets/ProvidersSettingsPanel-D15EeWAq.js +0 -1
  131. package/dist/client/assets/RootAppShell-CWBPSA2w.js +0 -12
  132. package/dist/client/assets/SettingsDialog-oJCE5foT.js +0 -2
  133. package/dist/client/assets/SourceControlSettings-CPnlMxNm.js +0 -1
  134. package/dist/client/assets/ThreadWorkspacePanel-qF9y6QT9.js +0 -166
  135. package/dist/client/assets/composerDraftStore-D12lUSfh.js +0 -21
  136. package/dist/client/assets/editorPreferences-BLeEBSD_.js +0 -1
  137. package/dist/client/assets/folder-open-DMjz0lpx.js +0 -1
  138. package/dist/client/assets/kbd-aeSsjiPI.js +0 -1
  139. package/dist/client/assets/main-C57RhHZ_.css +0 -2
  140. package/dist/client/assets/plus-4Oy56d-3.js +0 -1
  141. package/dist/client/assets/projectAtoms-DUEBb7Zz.js +0 -1
  142. package/dist/client/assets/providerDriverMeta-Dwi6Zqgd.js +0 -1
  143. package/dist/client/assets/providerIconUtils-uhWb4bdg.js +0 -47
  144. package/dist/client/assets/radio-group-DHyQlLeX.js +0 -1
  145. package/dist/client/assets/settingsDialogStore-BINi7pdD.js +0 -1
  146. package/dist/client/assets/sidebar-DHwNQmWp.js +0 -1
  147. package/dist/client/assets/threadSelectionStore-C0ig4405.js +0 -1
  148. package/dist/client/assets/toast-DE7a4wkW.js +0 -1
  149. package/dist/client/assets/toggle-BIW4AyPY.js +0 -1
  150. package/dist/client/assets/useLabelableId-DBAgv9qQ.js +0 -1
  151. package/dist/client/assets/useTheme-Dv42Z8uy.js +0 -1
  152. package/dist/client/assets/x-fI9snvD3.js +0 -1
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const require_collectUint8StreamText = require("./collectUint8StreamText-TCG6xW_P.cjs");
4
- const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs");
3
+ const require_collectUint8StreamText = require("./collectUint8StreamText-uNXVRHOf.cjs");
4
+ const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-DeFR5xH3.cjs");
5
5
  const require_bin = require("./bin.cjs");
6
6
  let effect = require("effect");
7
7
  //#region src/sourceControl/AzureDevOpsSourceControlProvider.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Cn as SourceControlProviderError, Tn as truncateSourceControlDetailContent } from "./collectUint8StreamText-C2z5Y8tF.mjs";
4
- import { l as sourceControlRefFromInput, o as SourceControlProvider, t as azureDevOpsDiscovery } from "./SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs";
3
+ import { En as SourceControlProviderError, On as truncateSourceControlDetailContent } from "./collectUint8StreamText-Lv4GGI79.mjs";
4
+ import { l as sourceControlRefFromInput, o as SourceControlProvider, t as azureDevOpsDiscovery } from "./SourceControlProviderDiscoveryCatalog-mJV_Xitr.mjs";
5
5
  import { Yt as AzureDevOpsCli } from "./bin.mjs";
6
6
  import { DateTime, Effect, Layer, Option } from "effect";
7
7
  //#region src/sourceControl/AzureDevOpsSourceControlProvider.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const require_collectUint8StreamText = require("./collectUint8StreamText-TCG6xW_P.cjs");
4
- const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs");
3
+ const require_collectUint8StreamText = require("./collectUint8StreamText-uNXVRHOf.cjs");
4
+ const require_SourceControlProviderDiscoveryCatalog = require("./SourceControlProviderDiscoveryCatalog-DeFR5xH3.cjs");
5
5
  const require_bin = require("./bin.cjs");
6
6
  let effect = require("effect");
7
7
  //#region src/sourceControl/BitbucketSourceControlProvider.ts
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Cn as SourceControlProviderError, Tn as truncateSourceControlDetailContent } from "./collectUint8StreamText-C2z5Y8tF.mjs";
4
- import { i as makeBitbucketDiscovery, l as sourceControlRefFromInput, o as SourceControlProvider } from "./SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs";
3
+ import { En as SourceControlProviderError, On as truncateSourceControlDetailContent } from "./collectUint8StreamText-Lv4GGI79.mjs";
4
+ import { i as makeBitbucketDiscovery, l as sourceControlRefFromInput, o as SourceControlProvider } from "./SourceControlProviderDiscoveryCatalog-mJV_Xitr.mjs";
5
5
  import { Jt as BitbucketApi } from "./bin.mjs";
6
6
  import { DateTime, Effect, Layer, Option } from "effect";
7
7
  //#region src/sourceControl/BitbucketSourceControlProvider.ts
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  const require_chunk = require("./chunk-jM1PLTSZ.cjs");
4
- const require_collectUint8StreamText = require("./collectUint8StreamText-TCG6xW_P.cjs");
4
+ const require_collectUint8StreamText = require("./collectUint8StreamText-uNXVRHOf.cjs");
5
5
  const require_Metrics = require("./Metrics-CIW1QH7M.cjs");
6
6
  const require_bin = require("./bin.cjs");
7
- const require_makeManagedServerProvider = require("./makeManagedServerProvider-DPFw9gV_.cjs");
7
+ const require_makeManagedServerProvider = require("./makeManagedServerProvider-3SD-Q5xh.cjs");
8
8
  const require_sourceControlContextFormatter = require("./sourceControlContextFormatter-BDZqn-4T.cjs");
9
9
  const require_ProjectCustomSystemPrompt = require("./ProjectCustomSystemPrompt-B8SUlNGa.cjs");
10
10
  const require_ProviderDriver = require("./ProviderDriver--rNeAi3B.cjs");
@@ -50,6 +50,7 @@ const CLAUDE_PRESENTATION = {
50
50
  };
51
51
  const MINIMUM_CLAUDE_OPUS_4_8_VERSION = "2.1.154";
52
52
  const MINIMUM_CLAUDE_OPUS_4_7_VERSION = "2.1.111";
53
+ const MINIMUM_CLAUDE_FABLE_5_VERSION = "2.1.194";
53
54
  function buildClaudeEffortOption(value, defaultEffort) {
54
55
  const label = value === "xhigh" ? "Extra High" : value[0].toUpperCase() + value.slice(1).toLowerCase();
55
56
  return value === defaultEffort ? {
@@ -121,6 +122,18 @@ const CLAUDE_OPUS_LEGACY_EFFORT_LEVELS = [
121
122
  "max"
122
123
  ];
123
124
  const BUILT_IN_MODELS = [
125
+ {
126
+ slug: "claude-fable-5",
127
+ name: "Claude Fable 5",
128
+ shortName: "Fable 5",
129
+ isCustom: false,
130
+ capabilities: buildClaudeOpusCapabilities({
131
+ effortLevels: CLAUDE_OPUS_ADAPTIVE_EFFORT_LEVELS,
132
+ defaultEffort: "high",
133
+ supportsFastMode: false,
134
+ supportsContextWindow: false
135
+ })
136
+ },
124
137
  {
125
138
  slug: "claude-opus-4-8",
126
139
  name: "Claude Opus 4.8",
@@ -165,7 +178,7 @@ const BUILT_IN_MODELS = [
165
178
  capabilities: buildClaudeOpusCapabilities({
166
179
  effortLevels: CLAUDE_OPUS_LEGACY_EFFORT_LEVELS,
167
180
  defaultEffort: "high",
168
- supportsFastMode: true,
181
+ supportsFastMode: false,
169
182
  supportsContextWindow: false
170
183
  })
171
184
  },
@@ -230,8 +243,12 @@ function supportsClaudeOpus48(version) {
230
243
  function supportsClaudeOpus47(version) {
231
244
  return supportsMinimumClaudeVersion(version, MINIMUM_CLAUDE_OPUS_4_7_VERSION);
232
245
  }
246
+ function supportsClaudeFable5(version) {
247
+ return supportsMinimumClaudeVersion(version, MINIMUM_CLAUDE_FABLE_5_VERSION);
248
+ }
233
249
  function getBuiltInClaudeModelsForVersion(version) {
234
250
  return BUILT_IN_MODELS.filter((model) => {
251
+ if (model.slug === "claude-fable-5") return supportsClaudeFable5(version);
235
252
  if (model.slug === "claude-opus-4-8") return supportsClaudeOpus48(version);
236
253
  if (model.slug === "claude-opus-4-7") return supportsClaudeOpus47(version);
237
254
  return true;
@@ -943,6 +960,54 @@ function readClaudeResumeState(resumeCursor) {
943
960
  ...turnCountValue !== void 0 && Number.isInteger(turnCountValue) && turnCountValue >= 0 ? { turnCount: turnCountValue } : {}
944
961
  };
945
962
  }
963
+ function trimmedClaudeString(value) {
964
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
965
+ }
966
+ function claudeTaskField(message, field) {
967
+ return trimmedClaudeString(message[field]);
968
+ }
969
+ function hasClaudeSubagentNameSignal(value) {
970
+ return value !== void 0 && /\b(?:sub[-\s]?agent|agent|subtask|task)\b/i.test(value);
971
+ }
972
+ function hasClaudeSubagentDescriptionSignal(value) {
973
+ return value !== void 0 && /\b(?:sub[-\s]?agent|agent|teammate|worker|delegate[sd]?|reviewer)\b/i.test(value);
974
+ }
975
+ function isClaudeSubagentTaskMessage(message) {
976
+ return hasClaudeSubagentNameSignal(claudeTaskField(message, "task_type")) || hasClaudeSubagentNameSignal(claudeTaskField(message, "last_tool_name")) || hasClaudeSubagentDescriptionSignal(claudeTaskField(message, "description")) || hasClaudeSubagentDescriptionSignal(claudeTaskField(message, "summary"));
977
+ }
978
+ function claudeTaskSubagentStatus(status) {
979
+ return status;
980
+ }
981
+ function claudeTaskCompletionStatus(status) {
982
+ return status;
983
+ }
984
+ function claudeTaskMetadata(message) {
985
+ const metadata = Object.fromEntries([
986
+ ["source", "claude.task"],
987
+ ["taskType", claudeTaskField(message, "task_type")],
988
+ ["lastToolName", claudeTaskField(message, "last_tool_name")]
989
+ ].filter(([, value]) => value !== void 0));
990
+ return Object.keys(metadata).length > 0 ? metadata : void 0;
991
+ }
992
+ function makeClaudeTaskSubagentRef(existing, message) {
993
+ const taskType = claudeTaskField(message, "task_type");
994
+ const lastToolName = claudeTaskField(message, "last_tool_name");
995
+ const description = claudeTaskField(message, "description") ?? existing?.description;
996
+ const label = taskType ?? lastToolName ?? existing?.label ?? "Claude task";
997
+ const taskMetadata = claudeTaskMetadata(message);
998
+ const metadata = {};
999
+ if (existing?.metadata) Object.assign(metadata, existing.metadata);
1000
+ if (taskMetadata) Object.assign(metadata, taskMetadata);
1001
+ return {
1002
+ subagentId: existing?.subagentId ?? require_collectUint8StreamText.RuntimeSubagentId.make(`claude-task:${message.task_id}`),
1003
+ origin: "native",
1004
+ capability: "summary",
1005
+ label,
1006
+ ...description && { description },
1007
+ providerTaskId: require_collectUint8StreamText.RuntimeTaskId.make(message.task_id),
1008
+ ...Object.keys(metadata).length > 0 && { metadata }
1009
+ };
1010
+ }
946
1011
  function classifyToolItemType(toolName) {
947
1012
  const normalized = toolName.toLowerCase();
948
1013
  if (normalized.includes("agent")) return "collab_agent_tool_call";
@@ -1248,6 +1313,82 @@ const makeClaudeAdapter = effect.Effect.fn("makeClaudeAdapter")(function* (claud
1248
1313
  createdAt: nowIso
1249
1314
  });
1250
1315
  const offerRuntimeEvent = (event) => effect.Queue.offer(runtimeEventQueue, event).pipe(effect.Effect.andThen(runtimeEventQueueMetrics.recordEnqueued()), effect.Effect.asVoid);
1316
+ const emitClaudeSubagentStarted = effect.Effect.fn("emitClaudeSubagentStarted")(function* (context, subagent, raw) {
1317
+ const key = String(subagent.subagentId);
1318
+ if (context.startedSubagentIds.has(key)) return;
1319
+ context.startedSubagentIds.add(key);
1320
+ const stamp = yield* makeEventStamp();
1321
+ yield* offerRuntimeEvent({
1322
+ type: "subagent.started",
1323
+ eventId: stamp.eventId,
1324
+ provider: PROVIDER,
1325
+ createdAt: stamp.createdAt,
1326
+ threadId: context.session.threadId,
1327
+ ...context.turnState ? { turnId: asCanonicalTurnId(context.turnState.turnId) } : {},
1328
+ payload: { subagent },
1329
+ providerRefs: nativeProviderRefs(context),
1330
+ raw: {
1331
+ source: "claude.sdk.message",
1332
+ method: sdkNativeMethod(raw),
1333
+ messageType: `${raw.type}:${sdkMessageSubtype(raw) ?? ""}`,
1334
+ payload: raw
1335
+ }
1336
+ });
1337
+ });
1338
+ const emitClaudeSubagentUpdated = effect.Effect.fn("emitClaudeSubagentUpdated")(function* (context, input) {
1339
+ yield* emitClaudeSubagentStarted(context, input.subagent, input.raw);
1340
+ const stamp = yield* makeEventStamp();
1341
+ yield* offerRuntimeEvent({
1342
+ type: "subagent.updated",
1343
+ eventId: stamp.eventId,
1344
+ provider: PROVIDER,
1345
+ createdAt: stamp.createdAt,
1346
+ threadId: context.session.threadId,
1347
+ ...context.turnState ? { turnId: asCanonicalTurnId(context.turnState.turnId) } : {},
1348
+ payload: {
1349
+ subagent: input.subagent,
1350
+ ...input.status ? { status: input.status } : {},
1351
+ ...input.summary ? { summary: input.summary } : {},
1352
+ ...input.detail ? { detail: input.detail } : {},
1353
+ ...input.usage !== void 0 ? { usage: input.usage } : {}
1354
+ },
1355
+ providerRefs: nativeProviderRefs(context),
1356
+ raw: {
1357
+ source: "claude.sdk.message",
1358
+ method: sdkNativeMethod(input.raw),
1359
+ messageType: `${input.raw.type}:${sdkMessageSubtype(input.raw) ?? ""}`,
1360
+ payload: input.raw
1361
+ }
1362
+ });
1363
+ });
1364
+ const emitClaudeSubagentCompleted = effect.Effect.fn("emitClaudeSubagentCompleted")(function* (context, input) {
1365
+ const key = String(input.subagent.subagentId);
1366
+ if (context.completedSubagentIds.has(key)) return;
1367
+ yield* emitClaudeSubagentStarted(context, input.subagent, input.raw);
1368
+ context.completedSubagentIds.add(key);
1369
+ const stamp = yield* makeEventStamp();
1370
+ yield* offerRuntimeEvent({
1371
+ type: "subagent.completed",
1372
+ eventId: stamp.eventId,
1373
+ provider: PROVIDER,
1374
+ createdAt: stamp.createdAt,
1375
+ threadId: context.session.threadId,
1376
+ ...context.turnState ? { turnId: asCanonicalTurnId(context.turnState.turnId) } : {},
1377
+ payload: {
1378
+ subagent: input.subagent,
1379
+ status: input.status,
1380
+ ...input.summary ? { summary: input.summary } : {},
1381
+ ...input.usage !== void 0 ? { usage: input.usage } : {}
1382
+ },
1383
+ providerRefs: nativeProviderRefs(context),
1384
+ raw: {
1385
+ source: "claude.sdk.message",
1386
+ method: sdkNativeMethod(input.raw),
1387
+ messageType: `${input.raw.type}:${sdkMessageSubtype(input.raw) ?? ""}`,
1388
+ payload: input.raw
1389
+ }
1390
+ });
1391
+ });
1251
1392
  const logNativeSdkMessage = effect.Effect.fn("logNativeSdkMessage")(function* (context, message) {
1252
1393
  if (!nativeEventLogger) return;
1253
1394
  const observedAt = (/* @__PURE__ */ new Date()).toISOString();
@@ -2035,6 +2176,11 @@ const makeClaudeAdapter = effect.Effect.fn("makeClaudeAdapter")(function* (claud
2035
2176
  ...message.task_type ? { taskType: message.task_type } : {}
2036
2177
  }
2037
2178
  });
2179
+ if (isClaudeSubagentTaskMessage(message)) {
2180
+ const subagent = makeClaudeTaskSubagentRef(context.subagentByTaskId.get(message.task_id), message);
2181
+ context.subagentByTaskId.set(message.task_id, subagent);
2182
+ yield* emitClaudeSubagentStarted(context, subagent, message);
2183
+ }
2038
2184
  return;
2039
2185
  case "task_progress":
2040
2186
  if (message.usage) {
@@ -2062,6 +2208,18 @@ const makeClaudeAdapter = effect.Effect.fn("makeClaudeAdapter")(function* (claud
2062
2208
  ...message.last_tool_name ? { lastToolName: message.last_tool_name } : {}
2063
2209
  }
2064
2210
  });
2211
+ if (isClaudeSubagentTaskMessage(message) || context.subagentByTaskId.has(message.task_id)) {
2212
+ const subagent = makeClaudeTaskSubagentRef(context.subagentByTaskId.get(message.task_id), message);
2213
+ context.subagentByTaskId.set(message.task_id, subagent);
2214
+ yield* emitClaudeSubagentUpdated(context, {
2215
+ subagent,
2216
+ status: claudeTaskSubagentStatus("running"),
2217
+ ...message.summary ? { summary: message.summary } : {},
2218
+ detail: message.description,
2219
+ ...message.usage ? { usage: message.usage } : {},
2220
+ raw: message
2221
+ });
2222
+ }
2065
2223
  return;
2066
2224
  case "task_notification":
2067
2225
  if (message.usage) {
@@ -2088,6 +2246,17 @@ const makeClaudeAdapter = effect.Effect.fn("makeClaudeAdapter")(function* (claud
2088
2246
  ...message.usage ? { usage: message.usage } : {}
2089
2247
  }
2090
2248
  });
2249
+ if (isClaudeSubagentTaskMessage(message) || context.subagentByTaskId.has(message.task_id)) {
2250
+ const subagent = makeClaudeTaskSubagentRef(context.subagentByTaskId.get(message.task_id), message);
2251
+ context.subagentByTaskId.set(message.task_id, subagent);
2252
+ yield* emitClaudeSubagentCompleted(context, {
2253
+ subagent,
2254
+ status: claudeTaskCompletionStatus(message.status),
2255
+ ...message.summary ? { summary: message.summary } : {},
2256
+ ...message.usage ? { usage: message.usage } : {},
2257
+ raw: message
2258
+ });
2259
+ }
2091
2260
  return;
2092
2261
  case "files_persisted":
2093
2262
  yield* offerRuntimeEvent({
@@ -2636,6 +2805,9 @@ const makeClaudeAdapter = effect.Effect.fn("makeClaudeAdapter")(function* (claud
2636
2805
  lastKnownTokenUsage: void 0,
2637
2806
  lastAssistantUuid: resumeState?.resumeSessionAt,
2638
2807
  lastThreadStartedId: void 0,
2808
+ subagentByTaskId: /* @__PURE__ */ new Map(),
2809
+ startedSubagentIds: /* @__PURE__ */ new Set(),
2810
+ completedSubagentIds: /* @__PURE__ */ new Set(),
2639
2811
  stopped: false
2640
2812
  };
2641
2813
  yield* effect.Ref.set(contextRef, context);
@@ -3072,6 +3244,7 @@ const ClaudeDriver = {
3072
3244
  const spawner = yield* effect_unstable_process.ChildProcessSpawner.ChildProcessSpawner;
3073
3245
  const path = yield* effect.Path.Path;
3074
3246
  const httpClient = yield* effect_unstable_http.HttpClient.HttpClient;
3247
+ const serverSettings = yield* require_bin.ServerSettingsService;
3075
3248
  const eventLoggers = yield* require_bin.ProviderEventLoggers;
3076
3249
  const processEnv = require_bin.mergeProviderInstanceEnvironment(environment);
3077
3250
  const fallbackContinuationIdentity = require_ProviderDriver.defaultProviderContinuationIdentity({
@@ -3118,7 +3291,7 @@ const ClaudeDriver = {
3118
3291
  haveSettingsChanged: () => false,
3119
3292
  initialSnapshot: (settings) => stampIdentity(makePendingClaudeProvider(settings)),
3120
3293
  checkProvider,
3121
- enrichSnapshot: ({ snapshot, publishSnapshot }) => require_bin.enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(effect.Effect.provideService(effect_unstable_http.HttpClient.HttpClient, httpClient), effect.Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
3294
+ enrichSnapshot: ({ snapshot, publishSnapshot }) => require_bin.enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(effect.Effect.provideService(effect_unstable_http.HttpClient.HttpClient, httpClient), effect.Effect.provideService(require_bin.ServerSettingsService, serverSettings), effect.Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
3122
3295
  refreshInterval: null
3123
3296
  }).pipe(effect.Effect.mapError((cause) => new require_bin.ProviderDriverError({
3124
3297
  driver: DRIVER_KIND,
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { $n as ApprovalRequestId, In as ProviderDriverKind, Ln as ProviderInstanceId, N as ClaudeSettings, fr as ProviderItemId, gr as ThreadId, hr as RuntimeTaskId, mr as RuntimeRequestId, or as EventId, pr as RuntimeItemId, v as TextGenerationError, vr as TurnId } from "./collectUint8StreamText-C2z5Y8tF.mjs";
3
+ import { Bn as ProviderInstanceId, I as ClaudeSettings, Sr as TurnId, _r as RuntimeRequestId, br as ThreadId, gr as RuntimeItemId, hr as ProviderItemId, lr as EventId, nr as ApprovalRequestId, vr as RuntimeSubagentId, x as TextGenerationError, yr as RuntimeTaskId, zn as ProviderDriverKind } from "./collectUint8StreamText-Lv4GGI79.mjs";
4
4
  import { U as sanitizeBranchFragment, W as sanitizeFeatureBranchName, Y as ServerConfig } from "./Metrics-6Xj17Se3.mjs";
5
- import { C as DEFAULT_TIMEOUT_MS, E as buildServerProvider, F as ProviderAdapterRequestError, I as ProviderAdapterSessionClosedError, L as ProviderAdapterSessionNotFoundError, M as providerModelsFromSettings, N as spawnAndCollect, O as detailFromResult, P as ProviderAdapterProcessError, Qt as makePackageManagedProviderMaintenanceResolver, R as ProviderAdapterValidationError, T as buildSelectOptionDescriptor, U as expandHomePath, Xt as enrichProviderSnapshotWithVersionAdvisory, _ as buildTokenReductionInstructions, cn as getModelSelectionBooleanOptionValue, dn as getProviderOptionCurrentValue, fn as getProviderOptionDescriptors, g as makeEventNdjsonLogger, h as ProviderEventLoggers, hn as resolvePromptInjectedEffort, in as resolveAttachmentPath, j as parseGenericCliVersion, k as isCommandMissingCause, ln as getModelSelectionStringOptionValue, nn as resolveProviderMaintenanceCapabilitiesEffect, on as applyClaudePromptEffortPrefix, rn as compareCliVersions, sn as createModelCapabilities, t as makeServerQueueMetrics, tn as normalizeCommandPath, v as checkRtkAvailability, w as buildBooleanOptionDescriptor, y as mergeProviderInstanceEnvironment, z as ProviderDriverError } from "./bin.mjs";
6
- import { a as buildIssueContentTitlePrompt, d as sanitizePrTitle, f as sanitizeThreadTitle, i as buildIssueContentPolishPrompt, l as normalizeCliError, n as buildBranchNamePrompt, o as buildPrContentPrompt, p as toJsonSchemaObject, r as buildCommitMessagePrompt, s as buildThreadTitlePrompt, t as makeManagedServerProvider, u as sanitizeCommitSubject } from "./makeManagedServerProvider-BXO8QvzC.mjs";
5
+ import { C as DEFAULT_TIMEOUT_MS, E as buildServerProvider, F as ProviderAdapterRequestError, I as ProviderAdapterSessionClosedError, L as ProviderAdapterSessionNotFoundError, M as providerModelsFromSettings, N as spawnAndCollect, O as detailFromResult, P as ProviderAdapterProcessError, Qt as makePackageManagedProviderMaintenanceResolver, R as ProviderAdapterValidationError, T as buildSelectOptionDescriptor, U as expandHomePath, Xt as enrichProviderSnapshotWithVersionAdvisory, _ as buildTokenReductionInstructions, an as resolveAttachmentPath, cn as createModelCapabilities, fn as getProviderOptionCurrentValue, g as makeEventNdjsonLogger, gn as resolvePromptInjectedEffort, h as ProviderEventLoggers, in as ServerSettingsService, j as parseGenericCliVersion, k as isCommandMissingCause, ln as getModelSelectionBooleanOptionValue, nn as resolveProviderMaintenanceCapabilitiesEffect, pn as getProviderOptionDescriptors, rn as compareCliVersions, sn as applyClaudePromptEffortPrefix, t as makeServerQueueMetrics, tn as normalizeCommandPath, un as getModelSelectionStringOptionValue, v as checkRtkAvailability, w as buildBooleanOptionDescriptor, y as mergeProviderInstanceEnvironment, z as ProviderDriverError } from "./bin.mjs";
6
+ import { a as buildIssueContentTitlePrompt, d as sanitizePrTitle, f as sanitizeThreadTitle, i as buildIssueContentPolishPrompt, l as normalizeCliError, n as buildBranchNamePrompt, o as buildPrContentPrompt, p as toJsonSchemaObject, r as buildCommitMessagePrompt, s as buildThreadTitlePrompt, t as makeManagedServerProvider, u as sanitizeCommitSubject } from "./makeManagedServerProvider-CkPEptun.mjs";
7
7
  import { t as formatSourceControlContextsForAgent } from "./sourceControlContextFormatter-DEwpnVAH.mjs";
8
8
  import { n as formatProjectCustomSystemPrompt } from "./ProjectCustomSystemPrompt-CS1nulhL.mjs";
9
9
  import { t as defaultProviderContinuationIdentity } from "./ProviderDriver-kCV60GKk.mjs";
@@ -46,6 +46,7 @@ const CLAUDE_PRESENTATION = {
46
46
  };
47
47
  const MINIMUM_CLAUDE_OPUS_4_8_VERSION = "2.1.154";
48
48
  const MINIMUM_CLAUDE_OPUS_4_7_VERSION = "2.1.111";
49
+ const MINIMUM_CLAUDE_FABLE_5_VERSION = "2.1.194";
49
50
  function buildClaudeEffortOption(value, defaultEffort) {
50
51
  const label = value === "xhigh" ? "Extra High" : value[0].toUpperCase() + value.slice(1).toLowerCase();
51
52
  return value === defaultEffort ? {
@@ -117,6 +118,18 @@ const CLAUDE_OPUS_LEGACY_EFFORT_LEVELS = [
117
118
  "max"
118
119
  ];
119
120
  const BUILT_IN_MODELS = [
121
+ {
122
+ slug: "claude-fable-5",
123
+ name: "Claude Fable 5",
124
+ shortName: "Fable 5",
125
+ isCustom: false,
126
+ capabilities: buildClaudeOpusCapabilities({
127
+ effortLevels: CLAUDE_OPUS_ADAPTIVE_EFFORT_LEVELS,
128
+ defaultEffort: "high",
129
+ supportsFastMode: false,
130
+ supportsContextWindow: false
131
+ })
132
+ },
120
133
  {
121
134
  slug: "claude-opus-4-8",
122
135
  name: "Claude Opus 4.8",
@@ -161,7 +174,7 @@ const BUILT_IN_MODELS = [
161
174
  capabilities: buildClaudeOpusCapabilities({
162
175
  effortLevels: CLAUDE_OPUS_LEGACY_EFFORT_LEVELS,
163
176
  defaultEffort: "high",
164
- supportsFastMode: true,
177
+ supportsFastMode: false,
165
178
  supportsContextWindow: false
166
179
  })
167
180
  },
@@ -226,8 +239,12 @@ function supportsClaudeOpus48(version) {
226
239
  function supportsClaudeOpus47(version) {
227
240
  return supportsMinimumClaudeVersion(version, MINIMUM_CLAUDE_OPUS_4_7_VERSION);
228
241
  }
242
+ function supportsClaudeFable5(version) {
243
+ return supportsMinimumClaudeVersion(version, MINIMUM_CLAUDE_FABLE_5_VERSION);
244
+ }
229
245
  function getBuiltInClaudeModelsForVersion(version) {
230
246
  return BUILT_IN_MODELS.filter((model) => {
247
+ if (model.slug === "claude-fable-5") return supportsClaudeFable5(version);
231
248
  if (model.slug === "claude-opus-4-8") return supportsClaudeOpus48(version);
232
249
  if (model.slug === "claude-opus-4-7") return supportsClaudeOpus47(version);
233
250
  return true;
@@ -939,6 +956,54 @@ function readClaudeResumeState(resumeCursor) {
939
956
  ...turnCountValue !== void 0 && Number.isInteger(turnCountValue) && turnCountValue >= 0 ? { turnCount: turnCountValue } : {}
940
957
  };
941
958
  }
959
+ function trimmedClaudeString(value) {
960
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
961
+ }
962
+ function claudeTaskField(message, field) {
963
+ return trimmedClaudeString(message[field]);
964
+ }
965
+ function hasClaudeSubagentNameSignal(value) {
966
+ return value !== void 0 && /\b(?:sub[-\s]?agent|agent|subtask|task)\b/i.test(value);
967
+ }
968
+ function hasClaudeSubagentDescriptionSignal(value) {
969
+ return value !== void 0 && /\b(?:sub[-\s]?agent|agent|teammate|worker|delegate[sd]?|reviewer)\b/i.test(value);
970
+ }
971
+ function isClaudeSubagentTaskMessage(message) {
972
+ return hasClaudeSubagentNameSignal(claudeTaskField(message, "task_type")) || hasClaudeSubagentNameSignal(claudeTaskField(message, "last_tool_name")) || hasClaudeSubagentDescriptionSignal(claudeTaskField(message, "description")) || hasClaudeSubagentDescriptionSignal(claudeTaskField(message, "summary"));
973
+ }
974
+ function claudeTaskSubagentStatus(status) {
975
+ return status;
976
+ }
977
+ function claudeTaskCompletionStatus(status) {
978
+ return status;
979
+ }
980
+ function claudeTaskMetadata(message) {
981
+ const metadata = Object.fromEntries([
982
+ ["source", "claude.task"],
983
+ ["taskType", claudeTaskField(message, "task_type")],
984
+ ["lastToolName", claudeTaskField(message, "last_tool_name")]
985
+ ].filter(([, value]) => value !== void 0));
986
+ return Object.keys(metadata).length > 0 ? metadata : void 0;
987
+ }
988
+ function makeClaudeTaskSubagentRef(existing, message) {
989
+ const taskType = claudeTaskField(message, "task_type");
990
+ const lastToolName = claudeTaskField(message, "last_tool_name");
991
+ const description = claudeTaskField(message, "description") ?? existing?.description;
992
+ const label = taskType ?? lastToolName ?? existing?.label ?? "Claude task";
993
+ const taskMetadata = claudeTaskMetadata(message);
994
+ const metadata = {};
995
+ if (existing?.metadata) Object.assign(metadata, existing.metadata);
996
+ if (taskMetadata) Object.assign(metadata, taskMetadata);
997
+ return {
998
+ subagentId: existing?.subagentId ?? RuntimeSubagentId.make(`claude-task:${message.task_id}`),
999
+ origin: "native",
1000
+ capability: "summary",
1001
+ label,
1002
+ ...description && { description },
1003
+ providerTaskId: RuntimeTaskId.make(message.task_id),
1004
+ ...Object.keys(metadata).length > 0 && { metadata }
1005
+ };
1006
+ }
942
1007
  function classifyToolItemType(toolName) {
943
1008
  const normalized = toolName.toLowerCase();
944
1009
  if (normalized.includes("agent")) return "collab_agent_tool_call";
@@ -1244,6 +1309,82 @@ const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* (claudeSettin
1244
1309
  createdAt: nowIso
1245
1310
  });
1246
1311
  const offerRuntimeEvent = (event) => Queue.offer(runtimeEventQueue, event).pipe(Effect.andThen(runtimeEventQueueMetrics.recordEnqueued()), Effect.asVoid);
1312
+ const emitClaudeSubagentStarted = Effect.fn("emitClaudeSubagentStarted")(function* (context, subagent, raw) {
1313
+ const key = String(subagent.subagentId);
1314
+ if (context.startedSubagentIds.has(key)) return;
1315
+ context.startedSubagentIds.add(key);
1316
+ const stamp = yield* makeEventStamp();
1317
+ yield* offerRuntimeEvent({
1318
+ type: "subagent.started",
1319
+ eventId: stamp.eventId,
1320
+ provider: PROVIDER,
1321
+ createdAt: stamp.createdAt,
1322
+ threadId: context.session.threadId,
1323
+ ...context.turnState ? { turnId: asCanonicalTurnId(context.turnState.turnId) } : {},
1324
+ payload: { subagent },
1325
+ providerRefs: nativeProviderRefs(context),
1326
+ raw: {
1327
+ source: "claude.sdk.message",
1328
+ method: sdkNativeMethod(raw),
1329
+ messageType: `${raw.type}:${sdkMessageSubtype(raw) ?? ""}`,
1330
+ payload: raw
1331
+ }
1332
+ });
1333
+ });
1334
+ const emitClaudeSubagentUpdated = Effect.fn("emitClaudeSubagentUpdated")(function* (context, input) {
1335
+ yield* emitClaudeSubagentStarted(context, input.subagent, input.raw);
1336
+ const stamp = yield* makeEventStamp();
1337
+ yield* offerRuntimeEvent({
1338
+ type: "subagent.updated",
1339
+ eventId: stamp.eventId,
1340
+ provider: PROVIDER,
1341
+ createdAt: stamp.createdAt,
1342
+ threadId: context.session.threadId,
1343
+ ...context.turnState ? { turnId: asCanonicalTurnId(context.turnState.turnId) } : {},
1344
+ payload: {
1345
+ subagent: input.subagent,
1346
+ ...input.status ? { status: input.status } : {},
1347
+ ...input.summary ? { summary: input.summary } : {},
1348
+ ...input.detail ? { detail: input.detail } : {},
1349
+ ...input.usage !== void 0 ? { usage: input.usage } : {}
1350
+ },
1351
+ providerRefs: nativeProviderRefs(context),
1352
+ raw: {
1353
+ source: "claude.sdk.message",
1354
+ method: sdkNativeMethod(input.raw),
1355
+ messageType: `${input.raw.type}:${sdkMessageSubtype(input.raw) ?? ""}`,
1356
+ payload: input.raw
1357
+ }
1358
+ });
1359
+ });
1360
+ const emitClaudeSubagentCompleted = Effect.fn("emitClaudeSubagentCompleted")(function* (context, input) {
1361
+ const key = String(input.subagent.subagentId);
1362
+ if (context.completedSubagentIds.has(key)) return;
1363
+ yield* emitClaudeSubagentStarted(context, input.subagent, input.raw);
1364
+ context.completedSubagentIds.add(key);
1365
+ const stamp = yield* makeEventStamp();
1366
+ yield* offerRuntimeEvent({
1367
+ type: "subagent.completed",
1368
+ eventId: stamp.eventId,
1369
+ provider: PROVIDER,
1370
+ createdAt: stamp.createdAt,
1371
+ threadId: context.session.threadId,
1372
+ ...context.turnState ? { turnId: asCanonicalTurnId(context.turnState.turnId) } : {},
1373
+ payload: {
1374
+ subagent: input.subagent,
1375
+ status: input.status,
1376
+ ...input.summary ? { summary: input.summary } : {},
1377
+ ...input.usage !== void 0 ? { usage: input.usage } : {}
1378
+ },
1379
+ providerRefs: nativeProviderRefs(context),
1380
+ raw: {
1381
+ source: "claude.sdk.message",
1382
+ method: sdkNativeMethod(input.raw),
1383
+ messageType: `${input.raw.type}:${sdkMessageSubtype(input.raw) ?? ""}`,
1384
+ payload: input.raw
1385
+ }
1386
+ });
1387
+ });
1247
1388
  const logNativeSdkMessage = Effect.fn("logNativeSdkMessage")(function* (context, message) {
1248
1389
  if (!nativeEventLogger) return;
1249
1390
  const observedAt = (/* @__PURE__ */ new Date()).toISOString();
@@ -2031,6 +2172,11 @@ const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* (claudeSettin
2031
2172
  ...message.task_type ? { taskType: message.task_type } : {}
2032
2173
  }
2033
2174
  });
2175
+ if (isClaudeSubagentTaskMessage(message)) {
2176
+ const subagent = makeClaudeTaskSubagentRef(context.subagentByTaskId.get(message.task_id), message);
2177
+ context.subagentByTaskId.set(message.task_id, subagent);
2178
+ yield* emitClaudeSubagentStarted(context, subagent, message);
2179
+ }
2034
2180
  return;
2035
2181
  case "task_progress":
2036
2182
  if (message.usage) {
@@ -2058,6 +2204,18 @@ const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* (claudeSettin
2058
2204
  ...message.last_tool_name ? { lastToolName: message.last_tool_name } : {}
2059
2205
  }
2060
2206
  });
2207
+ if (isClaudeSubagentTaskMessage(message) || context.subagentByTaskId.has(message.task_id)) {
2208
+ const subagent = makeClaudeTaskSubagentRef(context.subagentByTaskId.get(message.task_id), message);
2209
+ context.subagentByTaskId.set(message.task_id, subagent);
2210
+ yield* emitClaudeSubagentUpdated(context, {
2211
+ subagent,
2212
+ status: claudeTaskSubagentStatus("running"),
2213
+ ...message.summary ? { summary: message.summary } : {},
2214
+ detail: message.description,
2215
+ ...message.usage ? { usage: message.usage } : {},
2216
+ raw: message
2217
+ });
2218
+ }
2061
2219
  return;
2062
2220
  case "task_notification":
2063
2221
  if (message.usage) {
@@ -2084,6 +2242,17 @@ const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* (claudeSettin
2084
2242
  ...message.usage ? { usage: message.usage } : {}
2085
2243
  }
2086
2244
  });
2245
+ if (isClaudeSubagentTaskMessage(message) || context.subagentByTaskId.has(message.task_id)) {
2246
+ const subagent = makeClaudeTaskSubagentRef(context.subagentByTaskId.get(message.task_id), message);
2247
+ context.subagentByTaskId.set(message.task_id, subagent);
2248
+ yield* emitClaudeSubagentCompleted(context, {
2249
+ subagent,
2250
+ status: claudeTaskCompletionStatus(message.status),
2251
+ ...message.summary ? { summary: message.summary } : {},
2252
+ ...message.usage ? { usage: message.usage } : {},
2253
+ raw: message
2254
+ });
2255
+ }
2087
2256
  return;
2088
2257
  case "files_persisted":
2089
2258
  yield* offerRuntimeEvent({
@@ -2632,6 +2801,9 @@ const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* (claudeSettin
2632
2801
  lastKnownTokenUsage: void 0,
2633
2802
  lastAssistantUuid: resumeState?.resumeSessionAt,
2634
2803
  lastThreadStartedId: void 0,
2804
+ subagentByTaskId: /* @__PURE__ */ new Map(),
2805
+ startedSubagentIds: /* @__PURE__ */ new Set(),
2806
+ completedSubagentIds: /* @__PURE__ */ new Set(),
2635
2807
  stopped: false
2636
2808
  };
2637
2809
  yield* Ref.set(contextRef, context);
@@ -3068,6 +3240,7 @@ const ClaudeDriver = {
3068
3240
  const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
3069
3241
  const path = yield* Path.Path;
3070
3242
  const httpClient = yield* HttpClient.HttpClient;
3243
+ const serverSettings = yield* ServerSettingsService;
3071
3244
  const eventLoggers = yield* ProviderEventLoggers;
3072
3245
  const processEnv = mergeProviderInstanceEnvironment(environment);
3073
3246
  const fallbackContinuationIdentity = defaultProviderContinuationIdentity({
@@ -3114,7 +3287,7 @@ const ClaudeDriver = {
3114
3287
  haveSettingsChanged: () => false,
3115
3288
  initialSnapshot: (settings) => stampIdentity(makePendingClaudeProvider(settings)),
3116
3289
  checkProvider,
3117
- enrichSnapshot: ({ snapshot, publishSnapshot }) => enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(Effect.provideService(HttpClient.HttpClient, httpClient), Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
3290
+ enrichSnapshot: ({ snapshot, publishSnapshot }) => enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(Effect.provideService(HttpClient.HttpClient, httpClient), Effect.provideService(ServerSettingsService, serverSettings), Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
3118
3291
  refreshInterval: null
3119
3292
  }).pipe(Effect.mapError((cause) => new ProviderDriverError({
3120
3293
  driver: DRIVER_KIND,
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { $n as ApprovalRequestId, Ht as ProviderApprovalDecision, In as ProviderDriverKind, Ln as ProviderInstanceId, Nt as PROVIDER_SEND_TURN_MAX_IMAGE_BYTES, P as CodexSettings, fr as ProviderItemId, mr as RuntimeRequestId, or as EventId, pr as RuntimeItemId, vr as TurnId } from "./collectUint8StreamText-C2z5Y8tF.mjs";
3
+ import { Bn as ProviderInstanceId, Gt as ProviderApprovalDecision, It as PROVIDER_SEND_TURN_MAX_IMAGE_BYTES, L as CodexSettings, Sr as TurnId, _r as RuntimeRequestId, gr as RuntimeItemId, hr as ProviderItemId, lr as EventId, nr as ApprovalRequestId, zn as ProviderDriverKind } from "./collectUint8StreamText-Lv4GGI79.mjs";
4
4
  import { Y as ServerConfig } from "./Metrics-6Xj17Se3.mjs";
5
- import { $ as ServerRequest__CommandExecutionRequestApprovalParams, At as V2ThreadStatusChangedNotification, B as codexContinuationIdentity, Ct as V2ThreadNameUpdatedNotification, Dt as V2ThreadRealtimeOutputAudioDeltaNotification, Et as V2ThreadRealtimeItemAddedNotification, F as ProviderAdapterRequestError, Ft as V2TurnStartParams, G as layerChildProcess, H as resolveCodexHomeLayout, I as ProviderAdapterSessionClosedError, It as V2TurnStartParams__CollaborationMode, J as CodexAppServerRequestError, K as CodexAppServerProcessExitedError, L as ProviderAdapterSessionNotFoundError, Lt as V2TurnStartResponse, Mt as V2TurnCompletedNotification, Nt as V2TurnDiffUpdatedNotification, Ot as V2ThreadRealtimeStartedNotification, P as ProviderAdapterProcessError, Pt as V2TurnPlanUpdatedNotification, Q as ServerRequest__ApplyPatchApprovalParams, Qt as makePackageManagedProviderMaintenanceResolver, R as ProviderAdapterValidationError, Rt as V2WindowsSandboxSetupCompletedNotification, S as makePendingCodexProvider, St as V2ServerRequestResolvedNotification, Tt as V2ThreadRealtimeErrorNotification, U as expandHomePath, V as materializeCodexShadowHome, W as CodexAppServerClient, X as CodexAppServerTransportError, Xt as enrichProviderSnapshotWithVersionAdvisory, Y as CodexAppServerSpawnError, Z as SERVER_NOTIFICATION_METHODS, _ as buildTokenReductionInstructions, _t as V2McpToolCallProgressNotification, at as ToolRequestUserInputResponse, b as buildCodexInitializeParams, bt as V2ReasoningSummaryTextDeltaNotification, cn as getModelSelectionBooleanOptionValue, ct as V2AgentMessageDeltaNotification, dt as V2DeprecationNoticeNotification, et as ServerRequest__DynamicToolCallParams, ft as V2ErrorNotification, g as makeEventNdjsonLogger, gt as V2McpServerOauthLoginCompletedNotification, h as ProviderEventLoggers, ht as V2ItemStartedNotification, in as resolveAttachmentPath, it as ToolRequestUserInputParams, jt as V2ThreadTokenUsageUpdatedNotification, kt as V2ThreadStartedNotification, ln as getModelSelectionStringOptionValue, lt as V2CommandExecutionOutputDeltaNotification, mn as normalizeModelSlug, mt as V2ItemCompletedNotification, nn as resolveProviderMaintenanceCapabilitiesEffect, nt as ServerRequest__FileChangeRequestApprovalParams, ot as V2AccountRateLimitsUpdatedNotification, pt as V2FileChangeOutputDeltaNotification, q as CodexAppServerProtocolParseError, rt as ServerRequest__ToolRequestUserInputParams, st as V2AccountUpdatedNotification, t as makeServerQueueMetrics, tt as ServerRequest__ExecCommandApprovalParams, ut as V2ConfigWarningNotification, v as checkRtkAvailability, vt as V2ModelReroutedNotification, wt as V2ThreadRealtimeClosedNotification, x as checkCodexProviderStatus, xt as V2ReasoningTextDeltaNotification, y as mergeProviderInstanceEnvironment, yt as V2PlanDeltaNotification, z as ProviderDriverError, zt as V2WindowsWorldWritableWarningNotification } from "./bin.mjs";
6
- import { t as makeManagedServerProvider } from "./makeManagedServerProvider-BXO8QvzC.mjs";
5
+ import { $ as ServerRequest__CommandExecutionRequestApprovalParams, At as V2ThreadStatusChangedNotification, B as codexContinuationIdentity, Ct as V2ThreadNameUpdatedNotification, Dt as V2ThreadRealtimeOutputAudioDeltaNotification, Et as V2ThreadRealtimeItemAddedNotification, F as ProviderAdapterRequestError, Ft as V2TurnStartParams, G as layerChildProcess, H as resolveCodexHomeLayout, I as ProviderAdapterSessionClosedError, It as V2TurnStartParams__CollaborationMode, J as CodexAppServerRequestError, K as CodexAppServerProcessExitedError, L as ProviderAdapterSessionNotFoundError, Lt as V2TurnStartResponse, Mt as V2TurnCompletedNotification, Nt as V2TurnDiffUpdatedNotification, Ot as V2ThreadRealtimeStartedNotification, P as ProviderAdapterProcessError, Pt as V2TurnPlanUpdatedNotification, Q as ServerRequest__ApplyPatchApprovalParams, Qt as makePackageManagedProviderMaintenanceResolver, R as ProviderAdapterValidationError, Rt as V2WindowsSandboxSetupCompletedNotification, S as makePendingCodexProvider, St as V2ServerRequestResolvedNotification, Tt as V2ThreadRealtimeErrorNotification, U as expandHomePath, V as materializeCodexShadowHome, W as CodexAppServerClient, X as CodexAppServerTransportError, Xt as enrichProviderSnapshotWithVersionAdvisory, Y as CodexAppServerSpawnError, Z as SERVER_NOTIFICATION_METHODS, _ as buildTokenReductionInstructions, _t as V2McpToolCallProgressNotification, an as resolveAttachmentPath, at as ToolRequestUserInputResponse, b as buildCodexInitializeParams, bt as V2ReasoningSummaryTextDeltaNotification, ct as V2AgentMessageDeltaNotification, dt as V2DeprecationNoticeNotification, et as ServerRequest__DynamicToolCallParams, ft as V2ErrorNotification, g as makeEventNdjsonLogger, gt as V2McpServerOauthLoginCompletedNotification, h as ProviderEventLoggers, hn as normalizeModelSlug, ht as V2ItemStartedNotification, in as ServerSettingsService, it as ToolRequestUserInputParams, jt as V2ThreadTokenUsageUpdatedNotification, kt as V2ThreadStartedNotification, ln as getModelSelectionBooleanOptionValue, lt as V2CommandExecutionOutputDeltaNotification, mt as V2ItemCompletedNotification, nn as resolveProviderMaintenanceCapabilitiesEffect, nt as ServerRequest__FileChangeRequestApprovalParams, ot as V2AccountRateLimitsUpdatedNotification, pt as V2FileChangeOutputDeltaNotification, q as CodexAppServerProtocolParseError, rt as ServerRequest__ToolRequestUserInputParams, st as V2AccountUpdatedNotification, t as makeServerQueueMetrics, tt as ServerRequest__ExecCommandApprovalParams, un as getModelSelectionStringOptionValue, ut as V2ConfigWarningNotification, v as checkRtkAvailability, vt as V2ModelReroutedNotification, wt as V2ThreadRealtimeClosedNotification, x as checkCodexProviderStatus, xt as V2ReasoningTextDeltaNotification, y as mergeProviderInstanceEnvironment, yt as V2PlanDeltaNotification, z as ProviderDriverError, zt as V2WindowsWorldWritableWarningNotification } from "./bin.mjs";
6
+ import { t as makeManagedServerProvider } from "./makeManagedServerProvider-CkPEptun.mjs";
7
7
  import { t as formatSourceControlContextsForAgent } from "./sourceControlContextFormatter-DEwpnVAH.mjs";
8
8
  import { t as appendProjectCustomSystemPrompt } from "./ProjectCustomSystemPrompt-CS1nulhL.mjs";
9
- import { t as makeCodexTextGeneration } from "./CodexTextGeneration-BIKHl7E3.mjs";
9
+ import { t as makeCodexTextGeneration } from "./CodexTextGeneration-BU9Myn87.mjs";
10
10
  import { Deferred, Effect, Exit, Fiber, FileSystem, Layer, Queue, Random, Ref, Schema, Scope, Stream } from "effect";
11
11
  import { HttpClient } from "effect/unstable/http";
12
12
  import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
@@ -1959,6 +1959,7 @@ const CodexDriver = {
1959
1959
  create: ({ instanceId, displayName, accentColor, environment, enabled, config }) => Effect.gen(function* () {
1960
1960
  const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
1961
1961
  const httpClient = yield* HttpClient.HttpClient;
1962
+ const serverSettings = yield* ServerSettingsService;
1962
1963
  const eventLoggers = yield* ProviderEventLoggers;
1963
1964
  const processEnv = mergeProviderInstanceEnvironment(environment);
1964
1965
  const homeLayout = yield* resolveCodexHomeLayout(config);
@@ -2005,7 +2006,7 @@ const CodexDriver = {
2005
2006
  haveSettingsChanged: () => false,
2006
2007
  initialSnapshot: (settings) => stampIdentity(makePendingCodexProvider(settings)),
2007
2008
  checkProvider,
2008
- enrichSnapshot: ({ snapshot, publishSnapshot }) => enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(Effect.provideService(HttpClient.HttpClient, httpClient), Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
2009
+ enrichSnapshot: ({ snapshot, publishSnapshot }) => enrichProviderSnapshotWithVersionAdvisory(snapshot, maintenanceCapabilities).pipe(Effect.provideService(HttpClient.HttpClient, httpClient), Effect.provideService(ServerSettingsService, serverSettings), Effect.flatMap((enrichedSnapshot) => publishSnapshot(enrichedSnapshot))),
2009
2010
  refreshInterval: null
2010
2011
  }).pipe(Effect.mapError((cause) => new ProviderDriverError({
2011
2012
  driver: DRIVER_KIND,