ryco-cli 0.1.6 → 0.1.8

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 (159) hide show
  1. package/dist/{AzureDevOpsSourceControlProvider-CC2_COxP.mjs → AzureDevOpsSourceControlProvider-B5vb4DOU.mjs} +2 -2
  2. package/dist/{AzureDevOpsSourceControlProvider-6holYS_D.cjs → AzureDevOpsSourceControlProvider-CYZmJqSM.cjs} +2 -2
  3. package/dist/{BitbucketSourceControlProvider-CYR_BD1d.mjs → BitbucketSourceControlProvider-CcAb4IgH.mjs} +2 -2
  4. package/dist/{BitbucketSourceControlProvider-a0IsNFyG.cjs → BitbucketSourceControlProvider-D_7i4YQz.cjs} +2 -2
  5. package/dist/{ClaudeDriver-D3nsxwH9.mjs → ClaudeDriver-CoPBpdrp.mjs} +198 -8
  6. package/dist/{ClaudeDriver-C6tQNEWO.cjs → ClaudeDriver-ScqmbPKW.cjs} +197 -7
  7. package/dist/{CodexDriver-ms_YgFD7.cjs → CodexDriver-CtCCc3CC.cjs} +36 -8
  8. package/dist/{CodexDriver-BILrJG8o.mjs → CodexDriver-DH7vqku4.mjs} +37 -9
  9. package/dist/{CodexTextGeneration-BIKHl7E3.mjs → CodexTextGeneration-CJV1jPda.mjs} +3 -3
  10. package/dist/{CodexTextGeneration-CHEgoANm.cjs → CodexTextGeneration-Db2hn8Qz.cjs} +2 -2
  11. package/dist/{CopilotDriver-CmD3Ffyl.mjs → CopilotDriver-CFCF68Te.mjs} +7 -6
  12. package/dist/{CopilotDriver-B0--ZwIK.cjs → CopilotDriver-DLN2KEoc.cjs} +6 -5
  13. package/dist/{CursorDriver-DTVPXZ-R.cjs → CursorDriver-BlvQbOEZ.cjs} +201 -15
  14. package/dist/{CursorDriver-CbeaIbdb.mjs → CursorDriver-Dej81rwD.mjs} +202 -16
  15. package/dist/{ForgejoSourceControlProvider-DX6d9gvz.mjs → ForgejoSourceControlProvider-3cFD7SqY.mjs} +2 -2
  16. package/dist/{ForgejoSourceControlProvider-DwAog76b.cjs → ForgejoSourceControlProvider-DYFUGvBk.cjs} +2 -2
  17. package/dist/{GitHubSourceControlProvider-9lJFzjsu.cjs → GitHubSourceControlProvider-B1Tp0TbY.cjs} +27 -4
  18. package/dist/{GitHubSourceControlProvider-C-LGwho3.mjs → GitHubSourceControlProvider-Kf4rrBTF.mjs} +27 -4
  19. package/dist/{GitLabSourceControlProvider-CvKA74lg.cjs → GitLabSourceControlProvider-D3vvKrB4.cjs} +2 -2
  20. package/dist/{GitLabSourceControlProvider-CkeT2aEx.mjs → GitLabSourceControlProvider-Ygppeftk.mjs} +2 -2
  21. package/dist/{NodeSqliteClient-B5aDHbNc.cjs → NodeSqliteClient-D1O-MR8w.cjs} +4 -1
  22. package/dist/{NodeSqliteClient-A1TEgwj_.mjs → NodeSqliteClient-DdTjpAko.mjs} +4 -1
  23. package/dist/{OpenCodeDriver-ClWtCk0j.mjs → OpenCodeDriver-BGa9Tkot.mjs} +326 -39
  24. package/dist/{OpenCodeDriver-CXUsnl5o.cjs → OpenCodeDriver-mbR9mF54.cjs} +325 -38
  25. package/dist/{SourceControlProviderDiscoveryCatalog-_rg0mc1o.cjs → SourceControlProviderDiscoveryCatalog-CTb100Uk.cjs} +1 -64
  26. package/dist/{SourceControlProviderDiscoveryCatalog-yMDer_Yh.mjs → SourceControlProviderDiscoveryCatalog-Zk11tJoL.mjs} +3 -48
  27. package/dist/bin.cjs +1481 -704
  28. package/dist/bin.mjs +1435 -659
  29. package/dist/client/assets/{AnimatedHeight-DgItDSis.js → AnimatedHeight-CPQ2q38I.js} +1 -1
  30. package/dist/client/assets/AppearanceSettings-B0FYiIxL.js +1 -0
  31. package/dist/client/assets/{BranchToolbar.logic-C_xHEt9C.js → BranchToolbar.logic-C1yjFjxJ.js} +1 -1
  32. package/dist/client/assets/ChatRightPanel-CJDSKMU2.js +188 -0
  33. package/dist/client/assets/ChatThreadRouteView-BaKwKGbC.js +1 -0
  34. package/dist/client/assets/CommandPaletteDialog-BHG_MdZk.js +1 -0
  35. package/dist/client/assets/CompositeRoot-Bs0hfelE.js +1 -0
  36. package/dist/client/assets/ConnectionsSettings-DvZNgO60.js +1 -0
  37. package/dist/client/assets/{DiagnosticsSettings-B340S_mq.js → DiagnosticsSettings-0v_hh1Qh.js} +1 -1
  38. package/dist/client/assets/{DialogHandle-BJY7cHCV.js → DialogHandle-CwEAVRF_.js} +1 -1
  39. package/dist/client/assets/{DialogRoot-Ej1FVk-_.js → DialogRoot-CYuaaDI3.js} +1 -1
  40. package/dist/client/assets/DialogTitle-Cak6zT3u.js +1 -0
  41. package/dist/client/assets/DialogTrigger-BD0KYYT-.js +1 -0
  42. package/dist/client/assets/{DialogViewport-DvjAl76K.js → DialogViewport-9sGf4JUp.js} +1 -1
  43. package/dist/client/assets/{DraftChatThreadRouteView-pOkyeKPS.js → DraftChatThreadRouteView-nvKLHlii.js} +1 -1
  44. package/dist/client/assets/{JetBrainsIcons-DTTF47I0.js → JetBrainsIcons-CflvH7gO.js} +1 -1
  45. package/dist/client/assets/KeybindingsSettings-DhLKhgYn.js +7 -0
  46. package/dist/client/assets/McpServersSettings-COs_dng1.js +6 -0
  47. package/dist/client/assets/{NoActiveThreadState-DVHwrkCp.js → NoActiveThreadState-cxMCW-cQ.js} +1 -1
  48. package/dist/client/assets/OpinionatedPluginsSettings-ag_OgOGj.js +1 -0
  49. package/dist/client/assets/{ProjectFavicon-TDP7HRfn.js → ProjectFavicon-D97Hy4xo.js} +1 -1
  50. package/dist/client/assets/{ProviderUpdateLaunchNotification.logic-6TpFsmiI.js → ProviderUpdateLaunchNotification.logic-RMYvRSEk.js} +1 -1
  51. package/dist/client/assets/ProvidersSettingsPanel-DcdVMRVC.js +1 -0
  52. package/dist/client/assets/{RedactedSensitiveText-BfoVjPsE.js → RedactedSensitiveText-CQY4pFAq.js} +1 -1
  53. package/dist/client/assets/RootAppShell-BRjETnaT.js +12 -0
  54. package/dist/client/assets/SettingsDialog-DRi5jsmq.js +2 -0
  55. package/dist/client/assets/SourceControlSettings-CdUulS4O.js +1 -0
  56. package/dist/client/assets/StatisticsPanel-NLU3ecLt.js +64 -0
  57. package/dist/client/assets/{ThreadStatusIndicators-B0leIJGD.js → ThreadStatusIndicators-CebYbeXP.js} +1 -1
  58. package/dist/client/assets/{ThreadTerminalDrawer-COq2Fk17.js → ThreadTerminalDrawer-DlI0gGer.js} +17 -17
  59. package/dist/client/assets/ThreadWorkspacePanel-CEIVrCZ0.js +166 -0
  60. package/dist/client/assets/{alert-dialog-lMfKpG2t.js → alert-dialog-wh07u3JU.js} +1 -1
  61. package/dist/client/assets/chart-column-Cg34FxwD.js +1 -0
  62. package/dist/client/assets/{chatThreadActions-PPyTj_x0.js → chatThreadActions-UitETN_n.js} +1 -1
  63. package/dist/client/assets/chevron-up-C3DS3evc.js +1 -0
  64. package/dist/client/assets/{clamp-JiD4IZ0Z.js → clamp-DPbdAzEu.js} +1 -1
  65. package/dist/client/assets/{clipboard-copy-CYBLSG2q.js → clipboard-copy-ClVNnHW5.js} +1 -1
  66. package/dist/client/assets/clock-Cr66Pt4W.js +1 -0
  67. package/dist/client/assets/{commandPaletteStore-uVfCD7zE.js → commandPaletteStore-DzUBFRor.js} +1 -1
  68. package/dist/client/assets/composerDraftStore-BfLPHwHL.js +21 -0
  69. package/dist/client/assets/{desktopUpdateAtoms-X6uM5SoD.js → desktopUpdateAtoms-BiqPT2_z.js} +1 -1
  70. package/dist/client/assets/{download-DLBlpp4h.js → download-DJ1juHK4.js} +1 -1
  71. package/dist/client/assets/{draft-input-dLlVMl5P.js → draft-input-B1txZFC7.js} +1 -1
  72. package/dist/client/assets/editorPreferences-Bbmh6Bm1.js +1 -0
  73. package/dist/client/assets/{empty-DlLY-Hhj.js → empty-CUEYr1p8.js} +1 -1
  74. package/dist/client/assets/{group-zDBPF7rR.js → group-BouZ2n9F.js} +1 -1
  75. package/dist/client/assets/{index-Dq8sT2lF.js → index-DiHgOLH_.js} +2 -2
  76. package/dist/client/assets/{input-B9-RWT56.js → input-Do_m9U-4.js} +1 -1
  77. package/dist/client/assets/kbd-DJilTfYF.js +1 -0
  78. package/dist/client/assets/{keybindings-Dx4Nc1vY.js → keybindings-CRkz0yvp.js} +1 -1
  79. package/dist/client/assets/{keyboard-DDTWQkr0.js → keyboard-D3WgbAUQ.js} +1 -1
  80. package/dist/client/assets/{keyedQuery-Ds4OGhX2.js → keyedQuery-PQcOnB2O.js} +0 -0
  81. package/dist/client/assets/{main-DxfpmoKJ.js → main-C-491vdD.js} +2 -2
  82. package/dist/client/assets/main-fW5L_SdM.css +2 -0
  83. package/dist/client/assets/{palette-BQcz-ZYV.js → palette-BRoYo327.js} +1 -1
  84. package/dist/client/assets/{play-QloDGe4R.js → play-BZbHk_vw.js} +1 -1
  85. package/dist/client/assets/plus-D0S72hZS.js +1 -0
  86. package/dist/client/assets/projectAtoms-KYCIIuVn.js +1 -0
  87. package/dist/client/assets/providerDriverMeta-BX4CLldz.js +1 -0
  88. package/dist/client/assets/providerIconUtils-DTRc3qno.js +47 -0
  89. package/dist/client/assets/radio-group-De3hRQoY.js +1 -0
  90. package/dist/client/assets/{refresh-cw-DkBMGllm.js → refresh-cw-D_1NT-T2.js} +1 -1
  91. package/dist/client/assets/{resolveAriaLabelledBy-DDfIbj05.js → resolveAriaLabelledBy-RblUm3b1.js} +1 -1
  92. package/dist/client/assets/rightPanelRouteSearch-DLllyqRr.js +1 -0
  93. package/dist/client/assets/{scale-BActunFu.js → scale-s57Ro96s.js} +1 -1
  94. package/dist/client/assets/{scroll-area-D-YOUG02.js → scroll-area-B0_k8-iT.js} +1 -1
  95. package/dist/client/assets/{separator-TInKeIDo.js → separator-AyXRgdnJ.js} +1 -1
  96. package/dist/client/assets/{server-BtEG3NAw.js → server-Z-m1OqE5.js} +1 -1
  97. package/dist/client/assets/{session-logic-DNf1aXq_.js → session-logic-B87Htlw4.js} +2 -2
  98. package/dist/client/assets/settingsDialogStore-CxUfUnd9.js +1 -0
  99. package/dist/client/assets/{settingsLayout-D22Mm0u3.js → settingsLayout-BtKS3Z8f.js} +1 -1
  100. package/dist/client/assets/sidebar-B0WxOej2.js +1 -0
  101. package/dist/client/assets/sidebarStatusText-C_EsHj20.js +1 -0
  102. package/dist/client/assets/{skeleton-DWaac_qp.js → skeleton-COt2Az5i.js} +1 -1
  103. package/dist/client/assets/{storeSelectors-Cx1IYPA4.js → storeSelectors-BuB4Kzj6.js} +1 -1
  104. package/dist/client/assets/threadSelectionStore-BS6X6HHt.js +1 -0
  105. package/dist/client/assets/toast-CaV8TQi_.js +1 -0
  106. package/dist/client/assets/toggle-DE4ApNIU.js +1 -0
  107. package/dist/client/assets/{toggle-group-CnLjaHSL.js → toggle-group-BuzAkAEk.js} +1 -1
  108. package/dist/client/assets/{tokenModePresentation-BSYdIvBm.js → tokenModePresentation-BCL2aeat.js} +1 -1
  109. package/dist/client/assets/{trash-2-BI5xcbsm.js → trash-2-ZZ1feCT6.js} +1 -1
  110. package/dist/client/assets/{triangle-alert-DJef_Uvh.js → triangle-alert-CL3zqnKL.js} +1 -1
  111. package/dist/client/assets/{undo-2-DeZ2cMGS.js → undo-2-Cu9H3R3q.js} +1 -1
  112. package/dist/client/assets/{useHandleNewThread-XB82O6SA.js → useHandleNewThread-Gke-ZFBr.js} +1 -1
  113. package/dist/client/assets/useLabelableId-DfuxWqrk.js +1 -0
  114. package/dist/client/assets/{useNavigate-B2tgshhW.js → useNavigate-DQEHh6ky.js} +1 -1
  115. package/dist/client/assets/useTheme-HcKmBfpF.js +1 -0
  116. package/dist/client/assets/{vscode-icons-DM9qFoEr.js → vscode-icons-DGDiHkqG.js} +1 -1
  117. package/dist/client/assets/{wrench-je4QOyG-.js → wrench-C_OATMLq.js} +1 -1
  118. package/dist/client/assets/x-BG9zZGeD.js +1 -0
  119. package/dist/client/index.html +1 -1
  120. package/dist/{collectUint8StreamText-TCG6xW_P.cjs → collectUint8StreamText-B-GW3u_2.cjs} +367 -15
  121. package/dist/{collectUint8StreamText-C2z5Y8tF.mjs → collectUint8StreamText-COE2_gie.mjs} +345 -17
  122. package/dist/{makeManagedServerProvider-BXO8QvzC.mjs → makeManagedServerProvider-D1_iEWGi.mjs} +1 -1
  123. package/dist/{makeManagedServerProvider-DPFw9gV_.cjs → makeManagedServerProvider-DTsQ87HL.cjs} +1 -1
  124. package/package.json +4 -2
  125. package/dist/client/assets/AppearanceSettings-BlsMFBvJ.js +0 -1
  126. package/dist/client/assets/ChatRightPanel-CThudBb1.js +0 -188
  127. package/dist/client/assets/ChatThreadRouteView-CV6ETYG5.js +0 -1
  128. package/dist/client/assets/CommandPaletteDialog-C_H7R8S5.js +0 -1
  129. package/dist/client/assets/CompositeRoot-DjnzUIwC.js +0 -1
  130. package/dist/client/assets/ConnectionsSettings-hArR4Oe3.js +0 -1
  131. package/dist/client/assets/DialogTitle-H1yIMmA9.js +0 -1
  132. package/dist/client/assets/DialogTrigger-BHMq_K2G.js +0 -1
  133. package/dist/client/assets/KeybindingsSettings-CW3RRi-7.js +0 -7
  134. package/dist/client/assets/McpServersSettings-dQ3BzOWY.js +0 -6
  135. package/dist/client/assets/OpinionatedPluginsSettings-Cjj23Fs4.js +0 -1
  136. package/dist/client/assets/ProvidersSettingsPanel-D15EeWAq.js +0 -1
  137. package/dist/client/assets/RootAppShell-CWBPSA2w.js +0 -12
  138. package/dist/client/assets/SettingsDialog-oJCE5foT.js +0 -2
  139. package/dist/client/assets/SourceControlSettings-CPnlMxNm.js +0 -1
  140. package/dist/client/assets/ThreadWorkspacePanel-qF9y6QT9.js +0 -166
  141. package/dist/client/assets/composerDraftStore-D12lUSfh.js +0 -21
  142. package/dist/client/assets/editorPreferences-BLeEBSD_.js +0 -1
  143. package/dist/client/assets/folder-open-DMjz0lpx.js +0 -1
  144. package/dist/client/assets/kbd-aeSsjiPI.js +0 -1
  145. package/dist/client/assets/main-C57RhHZ_.css +0 -2
  146. package/dist/client/assets/plus-4Oy56d-3.js +0 -1
  147. package/dist/client/assets/projectAtoms-DUEBb7Zz.js +0 -1
  148. package/dist/client/assets/providerDriverMeta-Dwi6Zqgd.js +0 -1
  149. package/dist/client/assets/providerIconUtils-uhWb4bdg.js +0 -47
  150. package/dist/client/assets/radio-group-DHyQlLeX.js +0 -1
  151. package/dist/client/assets/rightPanelRouteSearch-DfuWVvXN.js +0 -1
  152. package/dist/client/assets/settingsDialogStore-BINi7pdD.js +0 -1
  153. package/dist/client/assets/sidebar-DHwNQmWp.js +0 -1
  154. package/dist/client/assets/threadSelectionStore-C0ig4405.js +0 -1
  155. package/dist/client/assets/toast-DE7a4wkW.js +0 -1
  156. package/dist/client/assets/toggle-BIW4AyPY.js +0 -1
  157. package/dist/client/assets/useLabelableId-DBAgv9qQ.js +0 -1
  158. package/dist/client/assets/useTheme-Dv42Z8uy.js +0 -1
  159. package/dist/client/assets/x-fI9snvD3.js +0 -1
@@ -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-B-GW3u_2.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-DTsQ87HL.cjs");
8
8
  const require_ProviderDriver = require("./ProviderDriver--rNeAi3B.cjs");
9
9
  let effect_Effect = require("effect/Effect");
10
10
  effect_Effect = require_chunk.__toESM(effect_Effect, 1);
@@ -3939,8 +3939,22 @@ function extractTextContentFromToolCallContent(content) {
3939
3939
  function normalizeToolKind(kind) {
3940
3940
  return typeof kind === "string" && kind.trim().length > 0 ? kind.trim() : void 0;
3941
3941
  }
3942
- function canonicalItemTypeFromAcpToolKind$1(kind) {
3943
- switch (kind) {
3942
+ function containsSubagentKeyword(value) {
3943
+ return value !== void 0 && /\b(sub[-\s]?agent|subtask|delegate|delegation)\b/i.test(value);
3944
+ }
3945
+ function hasExplicitSubagentType(data) {
3946
+ const subagentType = (isRecord$1(data?.rawInput) ? data.rawInput : void 0)?.subagent_type;
3947
+ return typeof subagentType === "string" && subagentType.trim().length > 0;
3948
+ }
3949
+ function isAcpSubagentToolCall(input) {
3950
+ if (containsSubagentKeyword(input.kind) || containsSubagentKeyword(input.title) || containsSubagentKeyword(input.command) || containsSubagentKeyword(input.detail)) return true;
3951
+ if (hasExplicitSubagentType(input.data)) return true;
3952
+ const rawInput = isRecord$1(input.data?.rawInput) ? input.data.rawInput : void 0;
3953
+ return containsSubagentKeyword(typeof rawInput?.tool === "string" ? rawInput.tool : void 0) || containsSubagentKeyword(typeof rawInput?.name === "string" ? rawInput.name : void 0);
3954
+ }
3955
+ function canonicalItemTypeFromAcpTool(input) {
3956
+ if (isAcpSubagentToolCall(input)) return "collab_agent_tool_call";
3957
+ switch (input.kind) {
3944
3958
  case "execute": return "command_execution";
3945
3959
  case "edit":
3946
3960
  case "delete":
@@ -3950,6 +3964,46 @@ function canonicalItemTypeFromAcpToolKind$1(kind) {
3950
3964
  default: return "dynamic_tool_call";
3951
3965
  }
3952
3966
  }
3967
+ function acpSubagentStatusFromToolStatus(status) {
3968
+ switch (status) {
3969
+ case "pending": return "starting";
3970
+ case "inProgress": return "running";
3971
+ case "completed": return "completed";
3972
+ case "failed": return "failed";
3973
+ default: return;
3974
+ }
3975
+ }
3976
+ function rawInputStringField(data, field) {
3977
+ const rawInput = isRecord$1(data?.rawInput) ? data.rawInput : void 0;
3978
+ if (!rawInput) return;
3979
+ const value = rawInput[field];
3980
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
3981
+ }
3982
+ function makeAcpSubagentSummaryState(input) {
3983
+ if (!isAcpSubagentToolCall(input)) return;
3984
+ const label = input.title ?? rawInputStringField(input.data, "name") ?? "ACP subagent";
3985
+ const detail = input.detail ?? rawInputStringField(input.data, "description") ?? rawInputStringField(input.data, "prompt") ?? input.command;
3986
+ const metadata = Object.fromEntries([
3987
+ ["source", "acp.tool_call"],
3988
+ ["kind", input.kind],
3989
+ ["command", input.command]
3990
+ ].filter(([, value]) => value !== void 0));
3991
+ const status = acpSubagentStatusFromToolStatus(input.status);
3992
+ return {
3993
+ subagent: {
3994
+ subagentId: require_collectUint8StreamText.RuntimeSubagentId.make(input.toolCallId),
3995
+ origin: "inferred",
3996
+ capability: "summary",
3997
+ label,
3998
+ ...detail ? { description: detail } : {},
3999
+ parentProviderItemId: require_collectUint8StreamText.ProviderItemId.make(input.toolCallId),
4000
+ metadata
4001
+ },
4002
+ ...status ? { status } : {},
4003
+ summary: label,
4004
+ ...detail ? { detail } : {}
4005
+ };
4006
+ }
3953
4007
  function makeToolCallState(input, options) {
3954
4008
  const toolCallId = input.toolCallId.trim();
3955
4009
  if (!toolCallId) return;
@@ -3967,13 +4021,28 @@ function makeToolCallState(input, options) {
3967
4021
  if (input.locations !== void 0) data.locations = input.locations;
3968
4022
  const fallbackDetail = command ?? normalizedTitle ?? textContent;
3969
4023
  const presentation = title !== void 0 || kind !== void 0 || command !== void 0 || normalizedTitle !== void 0 || textContent !== void 0 ? deriveToolActivityPresentation({
3970
- itemType: canonicalItemTypeFromAcpToolKind$1(kind),
4024
+ itemType: canonicalItemTypeFromAcpTool({
4025
+ kind,
4026
+ title,
4027
+ command,
4028
+ detail: fallbackDetail,
4029
+ data
4030
+ }),
3971
4031
  title,
3972
4032
  detail: fallbackDetail,
3973
4033
  data,
3974
4034
  fallbackSummary: title ?? "Tool"
3975
4035
  }) : void 0;
3976
4036
  const status = normalizeToolCallStatus(input.status, options?.fallbackStatus);
4037
+ const subagent = makeAcpSubagentSummaryState({
4038
+ toolCallId,
4039
+ ...kind ? { kind } : {},
4040
+ ...presentation?.summary ? { title: presentation.summary } : {},
4041
+ ...status ? { status } : {},
4042
+ ...command ? { command } : {},
4043
+ ...presentation?.detail ? { detail: presentation.detail } : {},
4044
+ data
4045
+ });
3977
4046
  return {
3978
4047
  toolCallId,
3979
4048
  ...kind ? { kind } : {},
@@ -3981,6 +4050,7 @@ function makeToolCallState(input, options) {
3981
4050
  ...status ? { status } : {},
3982
4051
  ...command ? { command } : {},
3983
4052
  ...presentation?.detail ? { detail: presentation.detail } : {},
4053
+ ...subagent ? { subagent } : {},
3984
4054
  data
3985
4055
  };
3986
4056
  }
@@ -4002,6 +4072,19 @@ function mergeToolCallState(previous, next) {
4002
4072
  const status = next.status ?? previous?.status;
4003
4073
  const command = next.command ?? previous?.command;
4004
4074
  const detail = next.detail ?? previous?.detail;
4075
+ const data = {
4076
+ ...previous?.data,
4077
+ ...next.data
4078
+ };
4079
+ const subagent = makeAcpSubagentSummaryState({
4080
+ toolCallId: next.toolCallId,
4081
+ ...kind ? { kind } : {},
4082
+ ...title ? { title } : {},
4083
+ ...status ? { status } : {},
4084
+ ...command ? { command } : {},
4085
+ ...detail ? { detail } : {},
4086
+ data
4087
+ });
4005
4088
  return {
4006
4089
  toolCallId: next.toolCallId,
4007
4090
  ...kind ? { kind } : {},
@@ -4009,10 +4092,8 @@ function mergeToolCallState(previous, next) {
4009
4092
  ...status ? { status } : {},
4010
4093
  ...command ? { command } : {},
4011
4094
  ...detail ? { detail } : {},
4012
- data: {
4013
- ...previous?.data,
4014
- ...next.data
4015
- }
4095
+ ...subagent ? { subagent } : {},
4096
+ data
4016
4097
  };
4017
4098
  }
4018
4099
  function parsePermissionRequest(params) {
@@ -4083,6 +4164,17 @@ function parseSessionUpdateEvent(params) {
4083
4164
  rawPayload: params
4084
4165
  });
4085
4166
  break;
4167
+ case "usage_update":
4168
+ if (upd.used > 0) events.push({
4169
+ _tag: "UsageUpdated",
4170
+ usage: {
4171
+ usedTokens: upd.used,
4172
+ lastUsedTokens: upd.used,
4173
+ ...upd.size > 0 ? { maxTokens: upd.size } : {}
4174
+ },
4175
+ rawPayload: params
4176
+ });
4177
+ break;
4086
4178
  default: break;
4087
4179
  }
4088
4180
  return {
@@ -4501,7 +4593,8 @@ const PROVIDER$1 = require_collectUint8StreamText.ProviderDriverKind.make("curso
4501
4593
  const CURSOR_PRESENTATION = {
4502
4594
  displayName: "Cursor",
4503
4595
  badgeLabel: "Early Access",
4504
- showInteractionModeToggle: true
4596
+ showInteractionModeToggle: true,
4597
+ supportsAskMode: true
4505
4598
  };
4506
4599
  const EMPTY_CAPABILITIES = require_bin.createModelCapabilities({ optionDescriptors: [] });
4507
4600
  const CURSOR_ACP_MODEL_DISCOVERY_TIMEOUT_MS = 15e3;
@@ -5105,7 +5198,7 @@ const enrichCursorSnapshot = (input) => {
5105
5198
  const { settings, snapshot, publishSnapshot } = input;
5106
5199
  const stampIdentity = input.stampIdentity ?? ((value) => value);
5107
5200
  if (!settings.enabled || snapshot.auth.status === "unauthenticated") return effect.Effect.void;
5108
- return require_bin.enrichProviderSnapshotWithVersionAdvisory(snapshot, input.maintenanceCapabilities).pipe(effect.Effect.provideService(effect_unstable_http.HttpClient.HttpClient, input.httpClient), effect.Effect.flatMap((enrichedSnapshot) => publishSnapshot(stampIdentity(enrichedSnapshot)).pipe(effect.Effect.asVoid)), effect.Effect.catchCause((cause) => effect.Effect.logWarning("Cursor version advisory enrichment failed", { cause: effect.Cause.pretty(cause) }).pipe(effect.Effect.asVoid)));
5201
+ return require_bin.enrichProviderSnapshotWithVersionAdvisory(snapshot, input.maintenanceCapabilities).pipe(effect.Effect.provideService(effect_unstable_http.HttpClient.HttpClient, input.httpClient), effect.Effect.provideService(require_bin.ServerSettingsService, input.serverSettings), effect.Effect.flatMap((enrichedSnapshot) => publishSnapshot(stampIdentity(enrichedSnapshot)).pipe(effect.Effect.asVoid)), effect.Effect.catchCause((cause) => effect.Effect.logWarning("Cursor version advisory enrichment failed", { cause: effect.Cause.pretty(cause) }).pipe(effect.Effect.asVoid)));
5109
5202
  };
5110
5203
  //#endregion
5111
5204
  //#region src/provider/acp/CursorAcpSupport.ts
@@ -5347,8 +5440,9 @@ function canonicalRequestTypeFromAcpKind(kind) {
5347
5440
  default: return "unknown";
5348
5441
  }
5349
5442
  }
5350
- function canonicalItemTypeFromAcpToolKind(kind) {
5351
- switch (kind) {
5443
+ function canonicalItemTypeFromAcpToolCall(toolCall) {
5444
+ if (isAcpSubagentToolCall(toolCall)) return "collab_agent_tool_call";
5445
+ switch (toolCall.kind) {
5352
5446
  case "execute": return "command_execution";
5353
5447
  case "edit":
5354
5448
  case "delete":
@@ -5426,7 +5520,7 @@ function makeAcpToolCallEvent(input) {
5426
5520
  turnId: input.turnId,
5427
5521
  itemId: require_collectUint8StreamText.RuntimeItemId.make(input.toolCall.toolCallId),
5428
5522
  payload: {
5429
- itemType: canonicalItemTypeFromAcpToolKind(input.toolCall.kind),
5523
+ itemType: canonicalItemTypeFromAcpToolCall(input.toolCall),
5430
5524
  ...runtimeStatus ? { status: runtimeStatus } : {},
5431
5525
  ...input.toolCall.title ? { title: input.toolCall.title } : {},
5432
5526
  ...input.toolCall.detail ? { detail: input.toolCall.detail } : {},
@@ -5472,6 +5566,21 @@ function makeAcpContentDeltaEvent(input) {
5472
5566
  }
5473
5567
  };
5474
5568
  }
5569
+ function makeAcpTokenUsageEvent(input) {
5570
+ return {
5571
+ type: "thread.token-usage.updated",
5572
+ ...input.stamp,
5573
+ provider: input.provider,
5574
+ threadId: input.threadId,
5575
+ turnId: input.turnId,
5576
+ payload: { usage: input.usage },
5577
+ raw: {
5578
+ source: "acp.jsonrpc",
5579
+ method: "session/update",
5580
+ payload: input.rawPayload
5581
+ }
5582
+ };
5583
+ }
5475
5584
  //#endregion
5476
5585
  //#region src/provider/acp/AcpNativeLogging.ts
5477
5586
  function writeNativeAcpLog(input) {
@@ -5586,6 +5695,7 @@ function resolveRequestedModeId(input) {
5586
5695
  const modeState = input.modeState;
5587
5696
  if (!modeState) return;
5588
5697
  if (input.interactionMode === "plan") return findModeByAliases(modeState.availableModes, ACP_PLAN_MODE_ALIASES)?.id;
5698
+ if (input.interactionMode === "ask") return findModeByAliases(modeState.availableModes, ACP_APPROVAL_MODE_ALIASES)?.id;
5589
5699
  if (input.runtimeMode === "approval-required") return findModeByAliases(modeState.availableModes, ACP_APPROVAL_MODE_ALIASES)?.id ?? findModeByAliases(modeState.availableModes, ACP_IMPLEMENT_MODE_ALIASES)?.id ?? modeState.availableModes.find((mode) => !isPlanMode(mode))?.id ?? modeState.currentModeId;
5590
5700
  return findModeByAliases(modeState.availableModes, ACP_IMPLEMENT_MODE_ALIASES)?.id ?? findModeByAliases(modeState.availableModes, ACP_APPROVAL_MODE_ALIASES)?.id ?? modeState.availableModes.find((mode) => !isPlanMode(mode))?.id ?? modeState.currentModeId;
5591
5701
  }
@@ -5636,6 +5746,66 @@ function makeCursorAdapter(cursorSettings, options) {
5636
5746
  createdAt: nowIso
5637
5747
  });
5638
5748
  const offerRuntimeEvent = (event) => effect.PubSub.publish(runtimeEventPubSub, event).pipe(effect.Effect.asVoid);
5749
+ const offerAcpSubagentRuntimeEvents = effect.Effect.fn("offerAcpSubagentRuntimeEvents")(function* (ctx, subagentState, rawPayload) {
5750
+ if (!subagentState) return;
5751
+ const subagentId = String(subagentState.subagent.subagentId);
5752
+ if (!ctx.startedSubagentIds.has(subagentId)) {
5753
+ ctx.startedSubagentIds.add(subagentId);
5754
+ yield* offerRuntimeEvent({
5755
+ type: "subagent.started",
5756
+ ...yield* makeEventStamp(),
5757
+ provider: PROVIDER,
5758
+ threadId: ctx.threadId,
5759
+ ...ctx.activeTurnId ? { turnId: ctx.activeTurnId } : {},
5760
+ payload: { subagent: subagentState.subagent },
5761
+ raw: {
5762
+ source: "acp.jsonrpc",
5763
+ method: "session/update",
5764
+ payload: rawPayload
5765
+ }
5766
+ });
5767
+ }
5768
+ if (subagentState.status === "completed" || subagentState.status === "failed" || subagentState.status === "stopped") {
5769
+ if (ctx.completedSubagentIds.has(subagentId)) return;
5770
+ ctx.completedSubagentIds.add(subagentId);
5771
+ yield* offerRuntimeEvent({
5772
+ type: "subagent.completed",
5773
+ ...yield* makeEventStamp(),
5774
+ provider: PROVIDER,
5775
+ threadId: ctx.threadId,
5776
+ ...ctx.activeTurnId ? { turnId: ctx.activeTurnId } : {},
5777
+ payload: {
5778
+ subagent: subagentState.subagent,
5779
+ status: subagentState.status,
5780
+ ...subagentState.summary ? { summary: subagentState.summary } : {}
5781
+ },
5782
+ raw: {
5783
+ source: "acp.jsonrpc",
5784
+ method: "session/update",
5785
+ payload: rawPayload
5786
+ }
5787
+ });
5788
+ return;
5789
+ }
5790
+ yield* offerRuntimeEvent({
5791
+ type: "subagent.updated",
5792
+ ...yield* makeEventStamp(),
5793
+ provider: PROVIDER,
5794
+ threadId: ctx.threadId,
5795
+ ...ctx.activeTurnId ? { turnId: ctx.activeTurnId } : {},
5796
+ payload: {
5797
+ subagent: subagentState.subagent,
5798
+ ...subagentState.status ? { status: subagentState.status } : {},
5799
+ ...subagentState.summary ? { summary: subagentState.summary } : {},
5800
+ ...subagentState.detail ? { detail: subagentState.detail } : {}
5801
+ },
5802
+ raw: {
5803
+ source: "acp.jsonrpc",
5804
+ method: "session/update",
5805
+ payload: rawPayload
5806
+ }
5807
+ });
5808
+ });
5639
5809
  const getThreadSemaphore = (threadId) => effect.SynchronizedRef.modifyEffect(threadLocksRef, (current) => {
5640
5810
  const existing = effect.Option.fromNullishOr(current.get(threadId));
5641
5811
  return effect.Option.match(existing, {
@@ -5884,6 +6054,8 @@ function makeCursorAdapter(cursorSettings, options) {
5884
6054
  pendingApprovals,
5885
6055
  pendingUserInputs,
5886
6056
  turns: [],
6057
+ startedSubagentIds: /* @__PURE__ */ new Set(),
6058
+ completedSubagentIds: /* @__PURE__ */ new Set(),
5887
6059
  lastPlanFingerprint: void 0,
5888
6060
  activeTurnId: void 0,
5889
6061
  stopped: false
@@ -5925,6 +6097,7 @@ function makeCursorAdapter(cursorSettings, options) {
5925
6097
  toolCall: event.toolCall,
5926
6098
  rawPayload: event.rawPayload
5927
6099
  }));
6100
+ yield* offerAcpSubagentRuntimeEvents(ctx, event.toolCall.subagent, event.rawPayload);
5928
6101
  return;
5929
6102
  case "ContentDelta":
5930
6103
  yield* logNative(ctx.threadId, "session/update", event.rawPayload, "acp.jsonrpc");
@@ -5938,6 +6111,17 @@ function makeCursorAdapter(cursorSettings, options) {
5938
6111
  rawPayload: event.rawPayload
5939
6112
  }));
5940
6113
  return;
6114
+ case "UsageUpdated":
6115
+ yield* logNative(ctx.threadId, "session/update", event.rawPayload, "acp.jsonrpc");
6116
+ yield* offerRuntimeEvent(makeAcpTokenUsageEvent({
6117
+ stamp: yield* makeEventStamp(),
6118
+ provider: PROVIDER,
6119
+ threadId: ctx.threadId,
6120
+ turnId: ctx.activeTurnId,
6121
+ usage: event.usage,
6122
+ rawPayload: event.rawPayload
6123
+ }));
6124
+ return;
5941
6125
  }
5942
6126
  }))).pipe(effect.Effect.forkChild);
5943
6127
  ctx.notificationFiber = nf;
@@ -6179,6 +6363,7 @@ const CursorDriver = {
6179
6363
  const fileSystem = yield* effect.FileSystem.FileSystem;
6180
6364
  const path = yield* effect.Path.Path;
6181
6365
  const httpClient = yield* effect_unstable_http.HttpClient.HttpClient;
6366
+ const serverSettings = yield* require_bin.ServerSettingsService;
6182
6367
  const eventLoggers = yield* require_bin.ProviderEventLoggers;
6183
6368
  const processEnv = require_bin.mergeProviderInstanceEnvironment(environment);
6184
6369
  const continuationIdentity = require_ProviderDriver.defaultProviderContinuationIdentity({
@@ -6226,7 +6411,8 @@ const CursorDriver = {
6226
6411
  maintenanceCapabilities,
6227
6412
  publishSnapshot,
6228
6413
  stampIdentity,
6229
- httpClient
6414
+ httpClient,
6415
+ serverSettings
6230
6416
  }),
6231
6417
  refreshInterval: null
6232
6418
  }).pipe(effect.Effect.mapError((cause) => new require_bin.ProviderDriverError({