@codingame/monaco-vscode-katex-common 30.0.1 → 31.0.1

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 (276) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/platform/actions/browser/actionbar.d.ts +16 -0
  3. package/vscode/src/vs/platform/actions/browser/actionbar.js +22 -0
  4. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  5. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +50 -0
  6. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +138 -0
  7. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +12 -0
  8. package/vscode/src/vs/platform/networkFilter/common/settings.js +14 -0
  9. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +18 -0
  10. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +13 -0
  11. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +73 -0
  12. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +10 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +3 -1
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +51 -24
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +2 -1
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +64 -72
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +2 -1
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -14
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +1 -1
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +17 -18
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +5 -2
  26. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +5 -0
  27. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +73 -9
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  29. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +32 -32
  30. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.d.ts +1 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.js +20 -2
  32. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +1 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +73 -49
  34. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +12 -12
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.d.ts +0 -6
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +41 -99
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +14 -14
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +2 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +13 -9
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +12 -12
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -15
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.d.ts +11 -12
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +339 -161
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +9 -2
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +9 -4
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +33 -5
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollections.d.ts +43 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollections.js +147 -2
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +4 -0
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +55 -6
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.d.ts +1 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentCodePools.js +7 -5
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +1 -3
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.js +42 -10
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/animation.d.ts +18 -0
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/animationRegistry.d.ts +15 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/animationRegistry.js +16 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/blockAnimations.d.ts +13 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/animations/blockAnimations.js +33 -0
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/buffer.d.ts +46 -0
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/bufferRegistry.d.ts +11 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/bufferRegistry.js +12 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/offBuffer.d.ts +9 -0
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/offBuffer.js +12 -0
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.d.ts +23 -0
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.js +37 -0
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/wordBuffer.d.ts +34 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/wordBuffer.js +68 -0
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.d.ts +77 -0
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.js +170 -0
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/media/chatIncrementalRendering.css +112 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +3 -1
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +26 -16
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +24 -6
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +111 -145
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.d.ts +58 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +425 -0
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +16 -7
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +68 -25
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +5 -1
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +101 -45
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +36 -4
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +217 -25
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +23 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +168 -60
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +10 -10
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +18 -17
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +1 -5
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +7 -18
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +1 -5
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +7 -19
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +24 -19
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +104 -78
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +11 -2
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +257 -0
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +19 -0
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatSubagentContent.css +30 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +1 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +12 -0
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +286 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +15 -11
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -7
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +25 -47
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +29 -53
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +258 -321
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.d.ts +53 -0
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +392 -0
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +1 -3
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +24 -30
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +2 -3
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +9 -8
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.d.ts +6 -3
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.js +2 -3
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +38 -11
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +577 -113
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +0 -7
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +4 -7
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +1 -8
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +58 -75
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +44 -12
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +362 -188
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +0 -2
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +4 -5
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +42 -95
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +2 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +9 -10
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +57 -38
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +21 -15
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/{modelPickerActionItem2.js → modelPickerActionItem.js} +5 -7
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +38 -31
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +4 -5
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +94 -40
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
  166. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.d.ts +16 -0
  167. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +218 -0
  168. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +7 -7
  169. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +6 -1
  170. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +15 -15
  171. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +12 -21
  172. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -32
  173. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +355 -156
  174. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +2 -13
  175. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +72 -65
  176. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +4 -43
  177. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +238 -204
  178. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.d.ts +4 -19
  179. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +128 -115
  180. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.d.ts +6 -9
  181. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +152 -49
  182. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +64 -0
  183. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +40 -40
  184. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  185. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  186. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  187. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  188. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  189. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  190. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  191. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  192. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  193. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  194. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  195. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  196. package/vscode/src/vs/workbench/contrib/terminal/terminalContribChatExports.d.ts +2 -0
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +2 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +41 -0
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +45 -0
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +165 -0
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +53 -0
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +163 -0
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +27 -0
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +142 -0
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +29 -0
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +144 -0
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +40 -0
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +174 -0
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +7 -0
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +43 -0
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +42 -0
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +256 -0
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +42 -0
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +94 -0
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +42 -0
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +221 -0
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +31 -0
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +392 -0
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +45 -0
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +243 -0
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +52 -0
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +10 -0
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +20 -0
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +310 -0
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +19 -0
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +168 -0
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +11 -0
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +33 -0
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +13 -0
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +22 -0
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +22 -0
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +47 -0
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +5 -0
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +27 -0
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +14 -0
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +29 -0
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +8 -0
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +33 -0
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +24 -0
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +32 -0
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +108 -0
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +412 -0
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +42 -0
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
  256. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +9 -0
  257. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +192 -0
  258. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +2258 -0
  259. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +22 -0
  260. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +43 -0
  261. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +17 -0
  262. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +118 -0
  263. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +22 -0
  264. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +44 -0
  265. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +1 -0
  266. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +25 -0
  267. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +141 -0
  268. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +85 -0
  269. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +608 -0
  270. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.d.ts +0 -40
  271. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +0 -196
  272. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +0 -29
  273. package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.d.ts +0 -46
  274. package/vscode/src/vs/workbench/contrib/chat/common/widget/codeBlockModelCollection.js +0 -215
  275. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.d.ts +0 -18
  276. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +0 -107
@@ -1,19 +1,18 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
- import { $ as $$1, clearNode, h, append, addStandardDisposableListener, EventType, DisposableResizeObserver, setVisibility, isKeyboardEvent, getActiveElement, getWindow, addDisposableListener, getTotalWidth } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
3
+ import { $ as $$1, clearNode, h, hide, append, addStandardDisposableListener, EventType, DisposableResizeObserver, setVisibility, isKeyboardEvent, getActiveElement, getWindow, show, addDisposableListener, getTotalWidth } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
4
4
  import { DEFAULT_FONT_FAMILY } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/fonts';
5
5
  import { hasModifierKeys } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
6
6
  import { BaseActionViewItem, ActionViewItem } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/actionbar/actionViewItems';
7
7
  import { status } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/aria/aria';
8
8
  import { ButtonWithIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/button/button';
9
9
  import { createInstantHoverDelegate } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverDelegateFactory';
10
- import { HoverPosition } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/ui/hover/hoverWidget';
11
10
  import { equals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
12
11
  import { RunOnceScheduler, DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
13
12
  import { isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
14
13
  import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
15
14
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
16
- import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
15
+ import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
17
16
  import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
18
17
  import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
19
18
  import { Lazy } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lazy';
@@ -62,12 +61,12 @@ import { IThemeService } from '@codingame/monaco-vscode-api/vscode/vs/platform/t
62
61
  import { ISharedWebContentExtractorService } from '@codingame/monaco-vscode-api/vscode/vs/platform/webContentExtractor/common/webContentExtractor.service';
63
62
  import { WorkbenchState } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace';
64
63
  import { IWorkspaceContextService } from '@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service';
64
+ import { ISCMService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/scm/common/scm.service';
65
65
  import { Position } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService';
66
66
  import { IWorkbenchLayoutService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/layout/browser/layoutService.service';
67
67
  import { ViewContainerLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views';
68
68
  import { IViewDescriptorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/views.service';
69
69
  import { ResourceLabels } from '@codingame/monaco-vscode-api/vscode/vs/workbench/browser/labels';
70
- import { IWorkbenchAssignmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/assignment/common/assignmentService.service';
71
70
  import { IChatEntitlementService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/chat/common/chatEntitlementService.service';
72
71
  import { SIDE_GROUP, ACTIVE_GROUP } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService';
73
72
  import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
@@ -76,13 +75,12 @@ import { AccessibilityCommandId } from '@codingame/monaco-vscode-api/vscode/vs/w
76
75
  import { getSimpleEditorOptions, getSimpleCodeEditorWidgetOptions, setupSimpleEditorSelectionStyling } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions';
77
76
  import { InlineChatConfigKeys } from '../../../../inlineChat/common/inlineChat.js';
78
77
  import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
79
- import { ChatRequestVariableSet, isImageVariableEntry, isStringVariableEntry, MAX_IMAGES_PER_REQUEST, OmittedState, isNotebookOutputVariableEntry, isPromptFileVariableEntry, isPromptTextVariableEntry, isElementVariableEntry, isPasteVariableEntry, isSCMHistoryItemVariableEntry, isSCMHistoryItemChangeVariableEntry, isSCMHistoryItemChangeRangeVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
78
+ import { ChatRequestVariableSet, isImageVariableEntry, isStringVariableEntry, getImageAttachmentLimit, OmittedState, isNotebookOutputVariableEntry, isPromptFileVariableEntry, isPromptTextVariableEntry, isElementVariableEntry, isPasteVariableEntry, isSCMHistoryItemVariableEntry, isSCMHistoryItemChangeVariableEntry, isSCMHistoryItemChangeRangeVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
80
79
  import { getModeNameForTelemetry, ChatMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes';
81
80
  import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
82
- import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService/chatService.service';
83
- import { agentOptionId, localChatSessionType, isIChatSessionFileChange2 } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
81
+ import { localChatSessionType, isIChatSessionFileChange2 } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
84
82
  import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
85
- import { ChatAgentLocation, ChatModeKind, ChatPermissionLevel, validateChatMode, ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
83
+ import { ChatAgentLocation, ChatModeKind, ChatConfiguration, ChatPermissionLevel, isChatPermissionLevel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
86
84
  import { ModifiedFileEntryState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService';
87
85
  import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
88
86
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
@@ -101,12 +99,13 @@ import { ToolSetOrToolItemAttachmentWidget, NotebookCellOutputChatAttachmentWidg
101
99
  import { ChatImplicitContexts } from '../../attachments/chatImplicitContext.js';
102
100
  import { ImplicitContextAttachmentWidget } from '../../attachments/implicitContextAttachment.js';
103
101
  import { isIChatResourceViewContext, isIChatViewViewContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat';
104
- import { ChatEditingShowChangesAction, ViewPreviousEditsAction, ViewAllSessionChangesAction } from '../../chatEditing/chatEditingActions.js';
102
+ import { ChatEditingShowChangesAction, ViewPreviousEditsAction } from '../../chatEditing/chatEditingActions.js';
105
103
  import { resizeImage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatImageUtils';
106
104
  import { ChatSessionPickerActionItem } from '../../chatSessions/chatSessionPickerActionItem.js';
107
- import { SearchableOptionPickerActionItem } from '../../chatSessions/searchableOptionPickerActionItem.js';
108
105
  import { IChatContextService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.service';
106
+ import { ChatPlanReviewPart } from '../chatContentParts/chatPlanReviewPart.js';
109
107
  import { ChatQuestionCarouselPart } from '../chatContentParts/chatQuestionCarouselPart.js';
108
+ import { ChatToolConfirmationCarouselPart } from '../chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js';
110
109
  import { CollapsibleListPool } from '../chatContentParts/chatReferencesContentPart.js';
111
110
  import { ChatTodoListWidget } from '../chatContentParts/chatTodoListWidget.js';
112
111
  import { ChatArtifactsWidget } from '../chatArtifactsWidget.js';
@@ -115,13 +114,13 @@ import { ChatFollowups } from './chatFollowups.js';
115
114
  import { ChatInputPartWidgetController } from './chatInputPartWidgets.js';
116
115
  import { ChatSelectedTools } from './chatSelectedTools.js';
117
116
  import { DelegationSessionPickerActionItem } from './delegationSessionPickerActionItem.js';
117
+ import { ModelPickerActionItem } from './modelPickerActionItem.js';
118
118
  import { ModePickerActionItem } from './modePickerActionItem.js';
119
119
  import { PermissionPickerActionItem } from './permissionPickerActionItem.js';
120
120
  import { SessionTypePickerActionItem } from './sessionTargetPickerActionItem.js';
121
121
  import { WorkspacePickerActionItem } from './workspacePickerActionItem.js';
122
122
  import { ChatContextUsageWidget } from '../../widgetHosts/viewPane/chatContextUsageWidget.js';
123
123
  import { Target } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
124
- import { EnhancedModelPickerActionItem } from './modelPickerActionItem2.js';
125
124
  import { findLast } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arraysFind';
126
125
  import { ConfigureToolsAction } from '../../actions/chatToolActions.js';
127
126
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
@@ -285,15 +284,14 @@ let ChatInputPart = class ChatInputPart extends Disposable {
285
284
  storageService,
286
285
  agentService,
287
286
  sharedWebExtracterService,
288
- experimentService,
289
287
  entitlementService,
290
288
  chatModeService,
291
289
  toolService,
292
- chatService,
293
290
  chatSessionsService,
294
291
  chatContextService,
295
292
  agentSessionsService,
296
293
  workspaceContextService,
294
+ scmService,
297
295
  layoutService,
298
296
  viewDescriptorService,
299
297
  _chatAttachmentWidgetRegistry
@@ -317,15 +315,14 @@ let ChatInputPart = class ChatInputPart extends Disposable {
317
315
  this.storageService = storageService;
318
316
  this.agentService = agentService;
319
317
  this.sharedWebExtracterService = sharedWebExtracterService;
320
- this.experimentService = experimentService;
321
318
  this.entitlementService = entitlementService;
322
319
  this.chatModeService = chatModeService;
323
320
  this.toolService = toolService;
324
- this.chatService = chatService;
325
321
  this.chatSessionsService = chatSessionsService;
326
322
  this.chatContextService = chatContextService;
327
323
  this.agentSessionsService = agentSessionsService;
328
324
  this.workspaceContextService = workspaceContextService;
325
+ this.scmService = scmService;
329
326
  this.layoutService = layoutService;
330
327
  this.viewDescriptorService = viewDescriptorService;
331
328
  this._chatAttachmentWidgetRegistry = _chatAttachmentWidgetRegistry;
@@ -336,6 +333,10 @@ let ChatInputPart = class ChatInputPart extends Disposable {
336
333
  this._chatQuestionCarouselWidgets = this._register(( new DisposableMap()));
337
334
  this._questionCarouselResponseIds = ( new Map());
338
335
  this._questionCarouselSessionResources = ( new Map());
336
+ this._chatPlanReviewWidgets = this._register(( new DisposableMap()));
337
+ this._planReviewResponseIds = ( new Map());
338
+ this._planReviewSessionResources = ( new Map());
339
+ this._chatToolConfirmationCarousels = this._register(( new DisposableMap()));
339
340
  this._chatEditingTodosDisposables = this._register(( new DisposableStore()));
340
341
  this._onDidLoadInputState = this._register(( new Emitter()));
341
342
  this.onDidLoadInputState = this._onDidLoadInputState.event;
@@ -392,7 +393,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
392
393
  onDidChangeVisibility: this._onDidChangeVisibility.event
393
394
  }));
394
395
  this._currentModeObservable = observableValue("currentMode", this.options.defaultMode ?? ChatMode.Agent);
395
- this._currentPermissionLevel = observableValue("permissionLevel", ChatPermissionLevel.Default);
396
+ this._currentPermissionLevel = observableValue("permissionLevel", this.getDefaultPermissionLevel());
396
397
  this._register(this.editorService.onDidActiveEditorChange(() => {
397
398
  this._indexOfLastOpenedContext = -1;
398
399
  this.refreshChatSessionPickers();
@@ -406,9 +407,8 @@ let ChatInputPart = class ChatInputPart extends Disposable {
406
407
  this._register(this.chatSessionsService.onDidChangeOptionGroups(chatSessionType => {
407
408
  const sessionResource = this._widget?.viewModel?.model.sessionResource;
408
409
  if (sessionResource) {
409
- const ctx = this.chatService.getChatSessionFromInternalUri(sessionResource);
410
410
  const delegateSessionType = this.options.sessionTypePickerDelegate?.getActiveSessionProvider?.();
411
- if (ctx && (getChatSessionType(ctx.chatSessionResource) === chatSessionType) || delegateSessionType === chatSessionType) {
411
+ if (getChatSessionType(sessionResource) === chatSessionType || delegateSessionType === chatSessionType) {
412
412
  this.refreshChatSessionPickers();
413
413
  }
414
414
  }
@@ -416,10 +416,11 @@ let ChatInputPart = class ChatInputPart extends Disposable {
416
416
  if (this.options.sessionTypePickerDelegate?.onDidChangeActiveSessionProvider) {
417
417
  this._register(
418
418
  this.options.sessionTypePickerDelegate.onDidChangeActiveSessionProvider(async newSessionType => {
419
- this.computeVisibleOptionGroups();
419
+ this.getVisibleOptionGroupsModeAndUpdateContextKeys(this.getCurrentSessionResource());
420
420
  this.agentSessionTypeKey.set(newSessionType);
421
421
  this.chatSessionSupportsDelegationKey.set(this.chatSessionsService.supportsDelegationForSessionType(newSessionType));
422
422
  this.updateWidgetLockStateFromSessionType(newSessionType);
423
+ this.checkModeInSessionPool(newSessionType);
423
424
  this.refreshChatSessionPickers();
424
425
  })
425
426
  );
@@ -443,6 +444,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
443
444
  this.chatModeNameKey = ChatContextKeys.chatModeName.bindTo(contextKeyService);
444
445
  this.chatModelIdKey = ChatContextKeys.chatModelId.bindTo(contextKeyService);
445
446
  this.permissionLevelKey = ChatContextKeys.chatPermissionLevel.bindTo(contextKeyService);
447
+ this.permissionLevelKey.set(this._currentPermissionLevel.get());
446
448
  this.withinEditSessionKey = ChatContextKeys.withinEditSessionDiff.bindTo(contextKeyService);
447
449
  this.filePartOfEditSessionKey = ChatContextKeys.filePartOfEditSession.bindTo(contextKeyService);
448
450
  this.chatSessionHasOptions = ChatContextKeys.chatSessionHasModels.bindTo(contextKeyService);
@@ -465,6 +467,14 @@ let ChatInputPart = class ChatInputPart extends Disposable {
465
467
  );
466
468
  this._register(this.configurationService.onDidChangeConfiguration(e => {
467
469
  const newOptions = {};
470
+ if (e.affectsConfiguration(ChatConfiguration.GlobalAutoApprove)) {
471
+ this.setPermissionLevel(this._currentPermissionLevel.get());
472
+ }
473
+ if (e.affectsConfiguration(ChatConfiguration.DefaultPermissionLevel)) {
474
+ if (this._chatSessionIsEmpty) {
475
+ this.setPermissionLevel(this.getDefaultPermissionLevel());
476
+ }
477
+ }
468
478
  if (e.affectsConfiguration(AccessibilityVerbositySettingId.Chat)) {
469
479
  newOptions.ariaLabel = this._getAriaLabel();
470
480
  }
@@ -528,26 +538,6 @@ let ChatInputPart = class ChatInputPart extends Disposable {
528
538
  this.switchModelByQualifiedName(models);
529
539
  }
530
540
  }));
531
- this._register(autorun(r => {
532
- const mode = this._currentModeObservable.read(r);
533
- const modeName = mode.name.read(r);
534
- const sessionResource = this._widget?.viewModel?.model.sessionResource;
535
- if (sessionResource) {
536
- const ctx = this.chatService.getChatSessionFromInternalUri(sessionResource);
537
- if (ctx) {
538
- let needsUpdate = true;
539
- const agentOption = this.chatSessionsService.getSessionOption(ctx.chatSessionResource, agentOptionId);
540
- if (typeof agentOption !== "undefined") {
541
- const agentId = (typeof agentOption === "string" ? agentOption : agentOption.id) || ChatMode.Agent.id;
542
- const isDefaultAgent = agentId === ChatMode.Agent.id;
543
- needsUpdate = isDefaultAgent ? mode.id !== ChatMode.Agent.id : mode.label.read(undefined) !== agentId;
544
- }
545
- if (needsUpdate) {
546
- this.chatSessionsService.updateSessionOptions(ctx.chatSessionResource, ( new Map([[agentOptionId, mode.isBuiltin ? "" : modeName]])));
547
- }
548
- }
549
- }
550
- }));
551
541
  this.validateCurrentChatMode();
552
542
  }
553
543
  setImplicitContextEnablement() {
@@ -651,11 +641,22 @@ let ChatInputPart = class ChatInputPart extends Disposable {
651
641
  this.permissionWidget?.show();
652
642
  }
653
643
  setPermissionLevel(level) {
644
+ level = this.getPermittedPermissionLevel(level);
654
645
  this._currentPermissionLevel.set(level, undefined);
655
646
  this.permissionLevelKey.set(level);
656
647
  this.permissionWidget?.refresh();
657
648
  this._syncInputStateToModel();
658
649
  }
650
+ getDefaultPermissionLevel() {
651
+ const level = this.configurationService.getValue(ChatConfiguration.DefaultPermissionLevel);
652
+ return isChatPermissionLevel(level) ? level : ChatPermissionLevel.Default;
653
+ }
654
+ getPermittedPermissionLevel(level) {
655
+ if (this.configurationService.inspect(ChatConfiguration.GlobalAutoApprove).policyValue === false && level !== ChatPermissionLevel.Default) {
656
+ return ChatPermissionLevel.Default;
657
+ }
658
+ return level;
659
+ }
659
660
  openSessionTargetPicker() {
660
661
  this.sessionTargetWidget?.show();
661
662
  }
@@ -669,21 +670,18 @@ let ChatInputPart = class ChatInputPart extends Disposable {
669
670
  createChatSessionPickerWidgets(action, pickerOptions) {
670
671
  this._lastSessionPickerAction = action;
671
672
  this._lastSessionPickerOptions = pickerOptions;
672
- const result = this.computeVisibleOptionGroups();
673
- if (!result) {
673
+ const sessionResource = this.getCurrentSessionResource();
674
+ const visibleOptionGroups = this.getVisibleOptionGroupsModeAndUpdateContextKeys(sessionResource);
675
+ if (!visibleOptionGroups.length) {
676
+ return [];
677
+ }
678
+ const effectiveSessionType = this.getEffectiveSessionType(sessionResource);
679
+ if (!effectiveSessionType) {
674
680
  return [];
675
681
  }
676
- const {
677
- visibleGroupIds,
678
- optionGroups,
679
- effectiveSessionType
680
- } = result;
681
682
  this.chatSessionPickerWidgets.clearAndDisposeAll();
682
683
  const widgets = [];
683
- for (const optionGroup of optionGroups) {
684
- if (!( visibleGroupIds.has(optionGroup.id))) {
685
- continue;
686
- }
684
+ for (const optionGroup of visibleOptionGroups) {
687
685
  const initialItem = this.getCurrentOptionForGroup(optionGroup.id);
688
686
  const initialState = {
689
687
  group: optionGroup,
@@ -696,9 +694,8 @@ let ChatInputPart = class ChatInputPart extends Disposable {
696
694
  this.updateOptionContextKey(optionGroup.id, option.id);
697
695
  this.getOrCreateOptionEmitter(optionGroup.id).fire(option);
698
696
  const sessionResource = this._widget?.viewModel?.model.sessionResource;
699
- const currentCtx = sessionResource ? this.chatService.getChatSessionFromInternalUri(sessionResource) : undefined;
700
- if (currentCtx) {
701
- this.chatSessionsService.setSessionOption(currentCtx.chatSessionResource, optionGroup.id, option);
697
+ if (sessionResource) {
698
+ this.chatSessionsService.setSessionOption(sessionResource, optionGroup.id, option);
702
699
  }
703
700
  this.refreshChatSessionPickers();
704
701
  },
@@ -711,7 +708,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
711
708
  }
712
709
  };
713
710
  const widget = this.instantiationService.createInstance(
714
- optionGroup.searchable ? SearchableOptionPickerActionItem : ChatSessionPickerActionItem,
711
+ ChatSessionPickerActionItem,
715
712
  action,
716
713
  initialState,
717
714
  itemDelegate,
@@ -732,6 +729,16 @@ let ChatInputPart = class ChatInputPart extends Disposable {
732
729
  this._chatSessionIsEmpty = chatSessionIsEmpty;
733
730
  if (chatSessionIsEmpty) {
734
731
  this._setEmptyModelState();
732
+ this._modelSyncDisposables.add(this.configurationService.onDidChangeConfiguration(e => {
733
+ if (this._chatSessionIsEmpty && e.affectsConfiguration(ChatConfiguration.DefaultNewSessionMode)) {
734
+ this._setEmptyModelState();
735
+ }
736
+ }));
737
+ this._modelSyncDisposables.add(this.chatModeService.onDidChangeChatModes(() => {
738
+ if (this._chatSessionIsEmpty) {
739
+ this._setEmptyModelState();
740
+ }
741
+ }));
735
742
  }
736
743
  this._modelSyncDisposables.add(autorun(reader => {
737
744
  let state = model.state.read(reader);
@@ -742,24 +749,26 @@ let ChatInputPart = class ChatInputPart extends Disposable {
742
749
  }));
743
750
  }
744
751
  _setEmptyModelState() {
745
- const storageKey = this.getDefaultModeExperimentStorageKey();
746
- const hasSetDefaultMode = this.storageService.getBoolean(storageKey, StorageScope.WORKSPACE, false);
747
- if (!hasSetDefaultMode) {
748
- const isAnonymous = this.entitlementService.anonymous;
749
- this.experimentService.getTreatment("chat.defaultMode").then((defaultModeTreatment => {
750
- if (isAnonymous) {
751
- defaultModeTreatment = ChatModeKind.Agent;
752
- }
753
- if (typeof defaultModeTreatment === "string") {
754
- this.storageService.store(storageKey, true, StorageScope.WORKSPACE, StorageTarget.MACHINE);
755
- const defaultMode = validateChatMode(defaultModeTreatment);
756
- if (defaultMode) {
757
- this.logService.trace(`Applying default mode from experiment: ${defaultMode}`);
758
- this.setChatMode(defaultMode, false);
759
- this.checkModelSupported();
760
- }
752
+ this.setPermissionLevel(this.getDefaultPermissionLevel());
753
+ if (this.entitlementService.anonymous) {
754
+ this.setChatMode(ChatModeKind.Agent, false);
755
+ this.checkModelSupported();
756
+ return;
757
+ }
758
+ const rawDefaultMode = this.configurationService.getValue(ChatConfiguration.DefaultNewSessionMode);
759
+ if (typeof rawDefaultMode === "string") {
760
+ const defaultMode = rawDefaultMode.trim();
761
+ if (defaultMode) {
762
+ const defaultModeLower = defaultMode.toLowerCase();
763
+ const resolved = this.chatModeService.findModeById(defaultMode) ?? this.chatModeService.findModeByName(defaultMode) ?? this.chatModeService.getModes().custom.find(m => m.name.get().toLowerCase() === defaultModeLower);
764
+ if (resolved) {
765
+ this.logService.trace(
766
+ `[ChatInputPart] Applying default mode from setting: ${defaultMode} -> ${resolved.id}`
767
+ );
768
+ this.setChatMode(resolved.id, false);
769
+ this.checkModelSupported();
761
770
  }
762
- }));
771
+ }
763
772
  }
764
773
  }
765
774
  _syncFromModel(state) {
@@ -808,7 +817,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
808
817
  }
809
818
  }
810
819
  if (!this.configurationService.getValue(ChatConfiguration.GlobalAutoApprove)) {
811
- const targetLevel = state?.permissionLevel ?? ChatPermissionLevel.Default;
820
+ const targetLevel = this.getPermittedPermissionLevel(state?.permissionLevel ?? ChatPermissionLevel.Default);
812
821
  if (this._currentPermissionLevel.get() !== targetLevel) {
813
822
  this._currentPermissionLevel.set(targetLevel, undefined);
814
823
  this.permissionLevelKey.set(targetLevel);
@@ -918,8 +927,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
918
927
  return delegateSessionType;
919
928
  }
920
929
  const sessionResource = this._widget?.viewModel?.model.sessionResource;
921
- const ctx = sessionResource ? this.chatService.getChatSessionFromInternalUri(sessionResource) : undefined;
922
- return ctx ? getChatSessionType(ctx.chatSessionResource) : undefined;
930
+ return sessionResource ? getChatSessionType(sessionResource) : undefined;
923
931
  }
924
932
  hasModelsTargetingSessionType() {
925
933
  return hasModelsTargetingSession(this.getAllMergedModels(), this.getCurrentSessionType());
@@ -933,6 +941,31 @@ let ChatInputPart = class ChatInputPart extends Disposable {
933
941
  this.setCurrentLanguageModelToDefault();
934
942
  }
935
943
  }
944
+ checkModeInSessionPool(sessionType) {
945
+ if (!sessionType) {
946
+ const sessionResource = this._widget?.viewModel?.model.sessionResource;
947
+ if (!sessionResource) {
948
+ return;
949
+ }
950
+ sessionType = getChatSessionType(sessionResource);
951
+ }
952
+ const customAgentTarget = this.chatSessionsService.getCustomAgentTargetForSessionType(sessionType);
953
+ if (!customAgentTarget || customAgentTarget === Target.Undefined) {
954
+ return;
955
+ }
956
+ const currentMode = this._currentModeObservable.get();
957
+ if (currentMode.id === ChatMode.Agent.id) {
958
+ return;
959
+ }
960
+ if (currentMode.isBuiltin) {
961
+ this.setChatMode(ChatModeKind.Agent, false);
962
+ return;
963
+ }
964
+ const modeTarget = currentMode.target.get();
965
+ if (modeTarget !== customAgentTarget && modeTarget !== Target.Undefined) {
966
+ this.setChatMode(ChatModeKind.Agent, false);
967
+ }
968
+ }
936
969
  preselectModelFromSessionHistory() {
937
970
  const requests = this._widget?.viewModel?.model.getRequests();
938
971
  if (!requests || requests.length === 0) {
@@ -1001,40 +1034,40 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1001
1034
  }
1002
1035
  const mode = this._currentModeObservable.get();
1003
1036
  const modelName = this._currentLanguageModel.get()?.metadata.name;
1004
- const modelInfo = modelName ? ( localize(7032, ", {0}. ", modelName)) : "";
1037
+ const modelInfo = modelName ? ( localize(7156, ", {0}. ", modelName)) : "";
1005
1038
  let modeLabel = "";
1006
1039
  if (!mode.isBuiltin) {
1007
1040
  const mode = this.currentModeObs.get();
1008
- modeLabel = ( localize(7033, "({0}), {1}", mode.label.get(), mode.description.get()));
1041
+ modeLabel = ( localize(7157, "({0}), {1}", mode.label.get(), mode.description.get()));
1009
1042
  } else {
1010
1043
  switch (this.currentModeKind) {
1011
1044
  case ChatModeKind.Agent:
1012
- modeLabel = ( localize(7034, "(Agent), edit files in your workspace."));
1045
+ modeLabel = ( localize(7158, "(Agent), edit files in your workspace."));
1013
1046
  break;
1014
1047
  case ChatModeKind.Edit:
1015
- modeLabel = ( localize(7035, "(Edit), edit files in your workspace."));
1048
+ modeLabel = ( localize(7159, "(Edit), edit files in your workspace."));
1016
1049
  break;
1017
1050
  case ChatModeKind.Ask:
1018
1051
  default:
1019
- modeLabel = ( localize(7036, "(Ask), ask questions or type / for topics."));
1052
+ modeLabel = ( localize(7160, "(Ask), ask questions or type / for topics."));
1020
1053
  break;
1021
1054
  }
1022
1055
  }
1023
1056
  if (verbose) {
1024
1057
  return kbLabel ? ( localize(
1025
- 7037,
1058
+ 7161,
1026
1059
  "Chat Input {0}{1} Press Enter to send out the request. Use {2} for Chat Accessibility Help.",
1027
1060
  modeLabel,
1028
1061
  modelInfo,
1029
1062
  kbLabel
1030
1063
  )) : ( localize(
1031
- 7038,
1064
+ 7162,
1032
1065
  "Chat Input {0}{1} Press Enter to send out the request. Use the Chat Accessibility Help command for more information.",
1033
1066
  modeLabel,
1034
1067
  modelInfo
1035
1068
  ));
1036
1069
  } else {
1037
- return localize(7039, "Chat Input {0}{1}.", modeLabel, modelInfo);
1070
+ return localize(7163, "Chat Input {0}{1}.", modeLabel, modelInfo);
1038
1071
  }
1039
1072
  }
1040
1073
  validateCurrentChatMode() {
@@ -1050,10 +1083,6 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1050
1083
  return;
1051
1084
  }
1052
1085
  }
1053
- getDefaultModeExperimentStorageKey() {
1054
- const tag = this.options.widgetViewKindTag;
1055
- return `chat.${tag}.hasSetDefaultModeByExperiment`;
1056
- }
1057
1086
  logInputHistory() {
1058
1087
  const historyStr = ( this.history.values.map(entry => JSON.stringify(entry))).join("\n");
1059
1088
  this.logService.info(`[${this.location}] Chat input history:`, historyStr);
@@ -1271,99 +1300,81 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1271
1300
  }
1272
1301
  return this._scopedContextKeyService.contextMatchesRules(expr);
1273
1302
  }
1274
- computeVisibleOptionGroups() {
1275
- const setNoOptions = () => {
1276
- this.chatSessionHasOptions.set(false);
1277
- this.chatSessionOptionsValid.set(true);
1278
- };
1279
- const sessionResource = this._widget?.viewModel?.model.sessionResource;
1280
- const ctx = sessionResource ? this.chatService.getChatSessionFromInternalUri(sessionResource) : undefined;
1281
- const customAgentTarget = ctx && this.chatSessionsService.getCustomAgentTargetForSessionType(getChatSessionType(ctx.chatSessionResource));
1303
+ getVisibleOptionGroupsModeAndUpdateContextKeys(sessionResource) {
1304
+ const customAgentTarget = sessionResource && this.chatSessionsService.getCustomAgentTargetForSessionType(getChatSessionType(sessionResource));
1282
1305
  this.chatSessionHasCustomAgentTarget.set(customAgentTarget !== Target.Undefined);
1283
- const requiresCustomModels = ctx && this.chatSessionsService.requiresCustomModelsForSessionType(getChatSessionType(ctx.chatSessionResource));
1306
+ const requiresCustomModels = sessionResource && this.chatSessionsService.requiresCustomModelsForSessionType(getChatSessionType(sessionResource));
1284
1307
  this.chatSessionHasTargetedModels.set(!!requiresCustomModels);
1285
- if (customAgentTarget) {
1286
- const contribution = ctx && this.chatSessionsService.getChatSessionContribution(getChatSessionType(ctx.chatSessionResource));
1287
- const agentOption = this.chatSessionsService.getSessionOption(ctx.chatSessionResource, agentOptionId);
1288
- if (typeof agentOption !== "undefined" && !contribution?.useRequestToPopulateBuiltInPickers) {
1289
- const agentId = (typeof agentOption === "string" ? agentOption : agentOption.id) || ChatMode.Agent.id;
1290
- const currentMode = this._currentModeObservable.get();
1291
- const isDefaultAgent = agentId === ChatMode.Agent.id;
1292
- const needsUpdate = isDefaultAgent ? currentMode.id !== ChatMode.Agent.id : currentMode.label.get() !== agentId;
1293
- if (needsUpdate) {
1294
- this.setChatMode(agentId);
1308
+ const visibleOptionGroups = this.getVisibleOptionGroups(sessionResource);
1309
+ if (!visibleOptionGroups.length) {
1310
+ this.chatSessionHasOptions.set(false);
1311
+ this.chatSessionOptionsValid.set(true);
1312
+ return [];
1313
+ }
1314
+ const allOptionsValid = sessionResource ? this.areAllOptionsValid(sessionResource, visibleOptionGroups) : true;
1315
+ this.chatSessionHasOptions.set(true);
1316
+ this.chatSessionOptionsValid.set(allOptionsValid);
1317
+ return visibleOptionGroups;
1318
+ }
1319
+ getCurrentSessionResource() {
1320
+ return this._widget?.viewModel?.model.sessionResource;
1321
+ }
1322
+ areAllOptionsValid(sessionResource, visibleOptionGroups) {
1323
+ for (const optionGroup of visibleOptionGroups) {
1324
+ const currentOption = this.chatSessionsService.getSessionOption(sessionResource, optionGroup.id);
1325
+ if (currentOption) {
1326
+ const currentOptionId = typeof currentOption === "string" ? currentOption : currentOption.id;
1327
+ if (!( optionGroup.items.some(item => item.id === currentOptionId)) && typeof currentOption === "string") {
1328
+ return false;
1295
1329
  }
1296
1330
  }
1297
1331
  }
1332
+ return true;
1333
+ }
1334
+ getAllOptionsGroups(sessionResource) {
1298
1335
  const delegateSessionType = this.options.sessionTypePickerDelegate?.getActiveSessionProvider?.();
1299
- const effectiveSessionType = delegateSessionType ?? (ctx ? getChatSessionType(ctx.chatSessionResource) : undefined);
1336
+ const effectiveSessionType = delegateSessionType ?? (sessionResource ? getChatSessionType(sessionResource) : undefined);
1300
1337
  if (!effectiveSessionType) {
1301
- setNoOptions();
1302
- return undefined;
1338
+ return [];
1303
1339
  }
1304
- const optionGroups = this.chatSessionsService.getOptionGroupsForSessionType(effectiveSessionType);
1305
- if (!optionGroups || optionGroups.length === 0) {
1306
- setNoOptions();
1307
- return undefined;
1340
+ const allOptionGroups = this.chatSessionsService.getOptionGroupsForSessionType(effectiveSessionType);
1341
+ return allOptionGroups ?? [];
1342
+ }
1343
+ getVisibleOptionGroups(sessionResource) {
1344
+ const allOptionGroups = this.getAllOptionsGroups(sessionResource);
1345
+ if (!allOptionGroups.length) {
1346
+ return [];
1308
1347
  }
1309
- if (ctx) {
1310
- for (const optionGroup of optionGroups) {
1311
- const currentOption = this.chatSessionsService.getSessionOption(ctx.chatSessionResource, optionGroup.id);
1348
+ if (sessionResource) {
1349
+ for (const optionGroup of allOptionGroups) {
1350
+ const currentOption = this.chatSessionsService.getSessionOption(sessionResource, optionGroup.id);
1312
1351
  if (currentOption) {
1313
1352
  const optionId = typeof currentOption === "string" ? currentOption : currentOption.id;
1314
1353
  this.updateOptionContextKey(optionGroup.id, optionId);
1315
1354
  }
1316
1355
  }
1317
1356
  }
1318
- const visibleGroupIds = ( new Set());
1319
- for (const optionGroup of optionGroups) {
1357
+ const visibleGroups = ( new Map());
1358
+ for (const optionGroup of allOptionGroups) {
1320
1359
  const hasItems = optionGroup.items.length > 0 || (optionGroup.commands || []).length > 0;
1321
1360
  const passesWhenClause = this.evaluateOptionGroupVisibility(optionGroup);
1322
- const sessionHasOption = !ctx || this.chatSessionsService.getSessionOption(ctx.chatSessionResource, optionGroup.id) !== undefined;
1361
+ const sessionHasOption = !sessionResource || this.chatSessionsService.getSessionOption(sessionResource, optionGroup.id) !== undefined;
1323
1362
  if (hasItems && passesWhenClause && sessionHasOption) {
1324
- visibleGroupIds.add(optionGroup.id);
1363
+ visibleGroups.set(optionGroup.id, optionGroup);
1325
1364
  }
1326
1365
  }
1327
- if (visibleGroupIds.size === 0) {
1328
- setNoOptions();
1329
- return undefined;
1330
- }
1331
- let allOptionsValid = true;
1332
- if (ctx) {
1333
- for (const groupId of visibleGroupIds) {
1334
- const optionGroup = optionGroups.find(g => g.id === groupId);
1335
- const currentOption = this.chatSessionsService.getSessionOption(ctx.chatSessionResource, groupId);
1336
- if (optionGroup && currentOption) {
1337
- const currentOptionId = typeof currentOption === "string" ? currentOption : currentOption.id;
1338
- if (!( optionGroup.items.some(item => item.id === currentOptionId)) && typeof currentOption === "string") {
1339
- allOptionsValid = false;
1340
- break;
1341
- }
1342
- }
1343
- }
1344
- }
1345
- this.chatSessionHasOptions.set(true);
1346
- this.chatSessionOptionsValid.set(allOptionsValid);
1347
- return {
1348
- visibleGroupIds,
1349
- optionGroups,
1350
- ctx,
1351
- effectiveSessionType
1352
- };
1366
+ return Array.from(( visibleGroups.values()));
1353
1367
  }
1354
1368
  refreshChatSessionPickers() {
1355
- const result = this.computeVisibleOptionGroups();
1356
- if (!result) {
1369
+ const sessionResource = this.getCurrentSessionResource();
1370
+ const allOptionsGroups = this.getAllOptionsGroups(sessionResource);
1371
+ const visibleOptionGroups = this.getVisibleOptionGroupsModeAndUpdateContextKeys(sessionResource);
1372
+ if (!allOptionsGroups.length || !visibleOptionGroups.length) {
1357
1373
  this.hideAllSessionPickerWidgets();
1358
1374
  return;
1359
1375
  }
1360
- const {
1361
- visibleGroupIds,
1362
- optionGroups,
1363
- ctx
1364
- } = result;
1365
1376
  const currentWidgetGroupIds = ( new Set(( this.chatSessionPickerWidgets.keys())));
1366
- const needsRecreation = currentWidgetGroupIds.size !== visibleGroupIds.size || !Array.from(visibleGroupIds).every(id => ( currentWidgetGroupIds.has(id)));
1377
+ const needsRecreation = currentWidgetGroupIds.size !== visibleOptionGroups.length || !visibleOptionGroups.every(group => ( currentWidgetGroupIds.has(group.id)));
1367
1378
  if (needsRecreation && this._lastSessionPickerAction && this.chatSessionPickerContainer) {
1368
1379
  const widgets = this.createChatSessionPickerWidgets(this._lastSessionPickerAction, this._lastSessionPickerOptions);
1369
1380
  clearNode(this.chatSessionPickerContainer);
@@ -1376,11 +1387,11 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1376
1387
  if (this.chatSessionPickerContainer) {
1377
1388
  this.chatSessionPickerContainer.style.display = "";
1378
1389
  }
1379
- if (ctx) {
1390
+ if (sessionResource) {
1380
1391
  for (const [optionGroupId] of this.chatSessionPickerWidgets) {
1381
- const currentOption = this.chatSessionsService.getSessionOption(ctx.chatSessionResource, optionGroupId);
1392
+ const currentOption = this.chatSessionsService.getSessionOption(sessionResource, optionGroupId);
1382
1393
  if (currentOption) {
1383
- const optionGroup = optionGroups.find(g => g.id === optionGroupId);
1394
+ const optionGroup = allOptionsGroups.find(g => g.id === optionGroupId);
1384
1395
  if (optionGroup) {
1385
1396
  const currentOptionId = typeof currentOption === "string" ? currentOption : currentOption.id;
1386
1397
  const item = optionGroup.items.find(m => m.id === currentOptionId);
@@ -1404,20 +1415,16 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1404
1415
  if (!sessionResource) {
1405
1416
  return;
1406
1417
  }
1407
- const ctx = this.chatService.getChatSessionFromInternalUri(sessionResource);
1408
- if (!ctx) {
1409
- return;
1410
- }
1411
- if (this.chatSessionsService.getSessionOption(ctx.chatSessionResource, optionGroupId) === undefined) {
1418
+ if (this.chatSessionsService.getSessionOption(sessionResource, optionGroupId) === undefined) {
1412
1419
  return;
1413
1420
  }
1414
- const effectiveSessionType = this.getEffectiveSessionType(ctx, this.options.sessionTypePickerDelegate);
1415
- const optionGroups = this.chatSessionsService.getOptionGroupsForSessionType(effectiveSessionType);
1421
+ const effectiveSessionType = this.getEffectiveSessionType(sessionResource);
1422
+ const optionGroups = effectiveSessionType ? this.chatSessionsService.getOptionGroupsForSessionType(effectiveSessionType) : undefined;
1416
1423
  const optionGroup = optionGroups?.find(g => g.id === optionGroupId);
1417
1424
  if (!optionGroup || optionGroup.items.length === 0) {
1418
1425
  return;
1419
1426
  }
1420
- const currentOptionValue = this.chatSessionsService.getSessionOption(ctx.chatSessionResource, optionGroupId);
1427
+ const currentOptionValue = this.chatSessionsService.getSessionOption(sessionResource, optionGroupId);
1421
1428
  if (!currentOptionValue) {
1422
1429
  const defaultItem = optionGroup.items.find(item => item.default);
1423
1430
  return defaultItem;
@@ -1429,8 +1436,20 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1429
1436
  return currentOptionValue;
1430
1437
  }
1431
1438
  }
1432
- getEffectiveSessionType(ctx, delegate) {
1433
- return this.options.sessionTypePickerDelegate?.getActiveSessionProvider?.() || (ctx && getChatSessionType(ctx.chatSessionResource)) || "";
1439
+ hasWorkspaceScmRepository() {
1440
+ const folders = this.workspaceContextService.getWorkspace().folders;
1441
+ if (folders.length === 0) {
1442
+ return false;
1443
+ }
1444
+ for (const repo of this.scmService.repositories) {
1445
+ if (repo.provider.rootUri && this.workspaceContextService.getWorkspaceFolder(repo.provider.rootUri)) {
1446
+ return true;
1447
+ }
1448
+ }
1449
+ return false;
1450
+ }
1451
+ getEffectiveSessionType(sessionResource) {
1452
+ return this.options.sessionTypePickerDelegate?.getActiveSessionProvider?.() ?? (sessionResource ? getChatSessionType(sessionResource) : undefined);
1434
1453
  }
1435
1454
  updateAgentSessionTypeContextKey() {
1436
1455
  const sessionResource = this._widget?.viewModel?.model.sessionResource;
@@ -1489,7 +1508,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1489
1508
  }
1490
1509
  render(container, initialValue, widget) {
1491
1510
  this._widget = widget;
1492
- this.computeVisibleOptionGroups();
1511
+ this.getVisibleOptionGroupsModeAndUpdateContextKeys(this.getCurrentSessionResource());
1493
1512
  const delegate = this.options.sessionTypePickerDelegate;
1494
1513
  if (delegate?.setActiveSessionProvider && delegate?.getActiveSessionProvider) {
1495
1514
  const initialSessionType = delegate.getActiveSessionProvider();
@@ -1515,18 +1534,36 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1515
1534
  if (this._questionCarouselSessionResources.size > 0 && (!e.currentSessionResource || !hasMatchingResource)) {
1516
1535
  this.clearQuestionCarousel();
1517
1536
  }
1537
+ let hasMatchingPlanReviewResource = false;
1538
+ if (e.currentSessionResource) {
1539
+ for (const r of ( this._planReviewSessionResources.values())) {
1540
+ if (isEqual(r, e.currentSessionResource)) {
1541
+ hasMatchingPlanReviewResource = true;
1542
+ break;
1543
+ }
1544
+ }
1545
+ }
1546
+ if (this._planReviewSessionResources.size > 0 && (!e.currentSessionResource || !hasMatchingPlanReviewResource)) {
1547
+ this.clearPlanReview();
1548
+ }
1549
+ this._syncToolConfirmationCarouselForSession();
1518
1550
  const newSessionType = this.getCurrentSessionType();
1519
1551
  if (e.currentSessionResource && newSessionType !== this._currentSessionType) {
1520
1552
  this._currentSessionType = newSessionType;
1521
1553
  this.initSelectedModel();
1522
1554
  this.checkModelInSessionPool();
1555
+ this.checkModeInSessionPool();
1523
1556
  }
1524
1557
  this.preselectModelFromSessionHistory();
1525
1558
  }));
1526
1559
  let elements;
1527
1560
  if (this.options.renderStyle === "compact") {
1528
1561
  elements = h(".interactive-input-part", [h(".interactive-input-and-edit-session", [
1562
+ h(".chat-plan-review-widget-container@chatPlanReviewContainer"),
1529
1563
  h(".chat-question-carousel-widget-container@chatQuestionCarouselContainer"),
1564
+ h(
1565
+ ".chat-tool-confirmation-carousel-container@chatToolConfirmationCarouselContainer"
1566
+ ),
1530
1567
  h(".chat-input-widgets-container@chatInputWidgetsContainer"),
1531
1568
  h(".chat-todo-list-widget-container@chatInputTodoListWidgetContainer"),
1532
1569
  h(".chat-artifacts-widget-container@chatArtifactsWidgetContainer"),
@@ -1551,7 +1588,11 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1551
1588
  ])]);
1552
1589
  } else {
1553
1590
  elements = h(".interactive-input-part", [
1591
+ h(".chat-plan-review-widget-container@chatPlanReviewContainer"),
1554
1592
  h(".chat-question-carousel-widget-container@chatQuestionCarouselContainer"),
1593
+ h(
1594
+ ".chat-tool-confirmation-carousel-container@chatToolConfirmationCarouselContainer"
1595
+ ),
1555
1596
  h(".interactive-input-followups@followupsContainer"),
1556
1597
  h(".chat-input-widgets-container@chatInputWidgetsContainer"),
1557
1598
  h(".chat-todo-list-widget-container@chatInputTodoListWidgetContainer"),
@@ -1595,6 +1636,9 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1595
1636
  this.chatGettingStartedTipContainer = elements.chatGettingStartedTipContainer;
1596
1637
  this.chatGettingStartedTipContainer.style.display = "none";
1597
1638
  this.chatQuestionCarouselContainer = elements.chatQuestionCarouselContainer;
1639
+ this.chatPlanReviewContainer = elements.chatPlanReviewContainer;
1640
+ this.chatToolConfirmationCarouselContainer = elements.chatToolConfirmationCarouselContainer;
1641
+ hide(this.chatToolConfirmationCarouselContainer);
1598
1642
  this.chatInputWidgetsContainer = elements.chatInputWidgetsContainer;
1599
1643
  this.contextUsageWidgetContainer = elements.contextUsageWidgetContainer;
1600
1644
  if (this.options.isSessionsWindow || this.options.renderStyle === "compact") {
@@ -1737,8 +1781,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1737
1781
  }));
1738
1782
  const hoverDelegate = this._register(createInstantHoverDelegate());
1739
1783
  const {
1740
- location,
1741
- isMaximized
1784
+ location
1742
1785
  } = this.getWidgetLocationInfo(widget);
1743
1786
  const pickerOptions = {
1744
1787
  getOverflowAnchor: () => this.inputActionsToolbar.getElement(),
@@ -1747,11 +1790,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1747
1790
  },
1748
1791
  hideChevrons: derived(
1749
1792
  reader => this._stableInputPartWidth.read(reader) < CHAT_INPUT_PICKER_COLLAPSE_WIDTH
1750
- ),
1751
- hoverPosition: {
1752
- forcePosition: true,
1753
- hoverPosition: location === ChatWidgetLocation.SidebarRight && !isMaximized ? HoverPosition.LEFT : HoverPosition.RIGHT
1754
- }
1793
+ )
1755
1794
  };
1756
1795
  this._register(
1757
1796
  addStandardDisposableListener(toolbarsContainer, EventType.CLICK, e => this.inputEditor.focus())
@@ -1810,15 +1849,14 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1810
1849
  return !sessionType || sessionType === localChatSessionType;
1811
1850
  }
1812
1851
  };
1813
- return this.modelWidget = this.instantiationService.createInstance(EnhancedModelPickerActionItem, action, itemDelegate, pickerOptions);
1852
+ return this.modelWidget = this.instantiationService.createInstance(ModelPickerActionItem, action, itemDelegate, pickerOptions);
1814
1853
  } else if (action.id === OpenModePickerAction.ID && action instanceof MenuItemAction) {
1815
1854
  const delegate = {
1816
1855
  currentMode: this._currentModeObservable,
1817
1856
  sessionResource: () => this._widget?.viewModel?.sessionResource,
1818
1857
  customAgentTarget: () => {
1819
1858
  const sessionResource = this._widget?.viewModel?.model.sessionResource;
1820
- const ctx = sessionResource && this.chatService.getChatSessionFromInternalUri(sessionResource);
1821
- return (ctx && this.chatSessionsService.getCustomAgentTargetForSessionType(getChatSessionType(ctx.chatSessionResource))) ?? Target.Undefined;
1859
+ return (sessionResource && this.chatSessionsService.getCustomAgentTargetForSessionType(getChatSessionType(sessionResource))) ?? Target.Undefined;
1822
1860
  }
1823
1861
  };
1824
1862
  return this.modeWidget = this.instantiationService.createInstance(ModePickerActionItem, action, delegate, pickerOptions);
@@ -1840,7 +1878,8 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1840
1878
  this.updateWidgetLockStateFromSessionType(provider);
1841
1879
  this.updateAgentSessionTypeContextKey();
1842
1880
  this.refreshChatSessionPickers();
1843
- }
1881
+ },
1882
+ hasGitRepository: () => this.hasWorkspaceScmRepository()
1844
1883
  };
1845
1884
  const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider;
1846
1885
  const Picker = (action.id === OpenSessionTargetPickerAction.ID || isWelcomeViewMode) ? SessionTypePickerActionItem : DelegationSessionPickerActionItem;
@@ -1960,7 +1999,8 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1960
1999
  this.updateWidgetLockStateFromSessionType(provider);
1961
2000
  this.updateAgentSessionTypeContextKey();
1962
2001
  this.refreshChatSessionPickers();
1963
- }
2002
+ },
2003
+ hasGitRepository: () => this.hasWorkspaceScmRepository()
1964
2004
  };
1965
2005
  const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider;
1966
2006
  const Picker = (action.id === OpenSessionTargetPickerAction.ID || isWelcomeViewMode) ? SessionTypePickerActionItem : DelegationSessionPickerActionItem;
@@ -2054,6 +2094,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2054
2094
  }));
2055
2095
  this.renderAttachedContext();
2056
2096
  const inputResizeObserver = this._register(new DisposableResizeObserver(() => {
2097
+ this.updateToolConfirmationCarouselMaxHeight();
2057
2098
  const newHeight = this.container.offsetHeight;
2058
2099
  this.height.set(newHeight, undefined);
2059
2100
  }));
@@ -2131,9 +2172,10 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2131
2172
  this._indexOfLastAttachedContextDeletedWithKeyboard = -1;
2132
2173
  this._indexOfLastOpenedContext = -1;
2133
2174
  }
2175
+ const maxImagesPerRequest = getImageAttachmentLimit(this._currentLanguageModel.get()?.metadata);
2134
2176
  const imageAttachments = attachments.filter(([, a]) => isImageVariableEntry(a));
2135
- if (imageAttachments.length > MAX_IMAGES_PER_REQUEST) {
2136
- const excessCount = imageAttachments.length - MAX_IMAGES_PER_REQUEST;
2177
+ if (maxImagesPerRequest !== undefined && imageAttachments.length > maxImagesPerRequest) {
2178
+ const excessCount = imageAttachments.length - maxImagesPerRequest;
2137
2179
  for (let i = 0; i < excessCount; i++) {
2138
2180
  const attachment = imageAttachments[i][1];
2139
2181
  if (attachment.omittedState === OmittedState.NotOmitted || attachment.omittedState === OmittedState.ImageLimitExceeded) {
@@ -2386,10 +2428,10 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2386
2428
  clearNode(this.chatArtifactsWidgetContainer);
2387
2429
  append(this.chatArtifactsWidgetContainer, widget.domNode);
2388
2430
  }
2389
- this._chatArtifactsWidget.value.render(chatSessionResource);
2431
+ this._chatArtifactsWidget.value.setSessionResource(chatSessionResource);
2390
2432
  }
2391
2433
  clearArtifactsWidget() {
2392
- this._chatArtifactsWidget.value?.hide();
2434
+ this._chatArtifactsWidget.value?.setSessionResource(undefined);
2393
2435
  }
2394
2436
  renderQuestionCarousel(carousel, context, options) {
2395
2437
  const carouselKey = carousel.resolveId ?? `${isResponseVM(context.element) ? context.element.requestId : ""}_${context.contentIndex}`;
@@ -2468,6 +2510,124 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2468
2510
  const carousel = this.questionCarousel;
2469
2511
  return carousel?.navigateToNextQuestion() ?? false;
2470
2512
  }
2513
+ renderPlanReview(review, context, options) {
2514
+ const key = review.resolveId ?? `${isResponseVM(context.element) ? context.element.requestId : ""}_${context.contentIndex}`;
2515
+ const existing = this._chatPlanReviewWidgets.get(key);
2516
+ if (existing) {
2517
+ return existing;
2518
+ }
2519
+ if (isResponseVM(context.element)) {
2520
+ this._planReviewResponseIds.set(key, context.element.requestId);
2521
+ this._planReviewSessionResources.set(key, context.element.sessionResource);
2522
+ }
2523
+ const part = this.instantiationService.createInstance(ChatPlanReviewPart, review, context, options);
2524
+ this._chatPlanReviewWidgets.set(key, part);
2525
+ append(this.chatPlanReviewContainer, part.domNode);
2526
+ return part;
2527
+ }
2528
+ clearPlanReview(responseId, resolveId) {
2529
+ if (resolveId !== undefined) {
2530
+ const part = this._chatPlanReviewWidgets.get(resolveId);
2531
+ if (part) {
2532
+ part.domNode.remove();
2533
+ this._chatPlanReviewWidgets.deleteAndDispose(resolveId);
2534
+ }
2535
+ this._planReviewResponseIds.delete(resolveId);
2536
+ this._planReviewSessionResources.delete(resolveId);
2537
+ } else if (responseId !== undefined) {
2538
+ for (const [key, rid] of this._planReviewResponseIds) {
2539
+ if (rid === responseId) {
2540
+ const part = this._chatPlanReviewWidgets.get(key);
2541
+ if (part) {
2542
+ part.domNode.remove();
2543
+ this._chatPlanReviewWidgets.deleteAndDispose(key);
2544
+ }
2545
+ this._planReviewResponseIds.delete(key);
2546
+ this._planReviewSessionResources.delete(key);
2547
+ }
2548
+ }
2549
+ } else {
2550
+ this._chatPlanReviewWidgets.clearAndDisposeAll();
2551
+ this._planReviewResponseIds.clear();
2552
+ this._planReviewSessionResources.clear();
2553
+ clearNode(this.chatPlanReviewContainer);
2554
+ }
2555
+ }
2556
+ get planReview() {
2557
+ return this._chatPlanReviewWidgets.size > 0 ? ( this._chatPlanReviewWidgets.values()).next().value : undefined;
2558
+ }
2559
+ get _currentSessionKey() {
2560
+ return this._widget?.viewModel?.model.sessionResource.toString();
2561
+ }
2562
+ get _currentToolConfirmationCarousel() {
2563
+ const key = this._currentSessionKey;
2564
+ return key ? this._chatToolConfirmationCarousels.get(key) : undefined;
2565
+ }
2566
+ renderToolConfirmationCarousel(tool, factory, subAgentInvocationId, agentName, scrollToSubagent, toolPart) {
2567
+ const existing = this._currentToolConfirmationCarousel;
2568
+ if (existing) {
2569
+ existing.addToolInvocation(tool, subAgentInvocationId, agentName, scrollToSubagent, toolPart);
2570
+ this.updateToolConfirmationCarouselMaxHeight();
2571
+ return existing;
2572
+ }
2573
+ const key = this._currentSessionKey;
2574
+ if (!key) {
2575
+ throw ( new Error("Cannot render tool confirmation carousel without an active session"));
2576
+ }
2577
+ const part = ( new ChatToolConfirmationCarouselPart(factory, [], scrollToSubagent, subAgentInvocationId, agentName));
2578
+ part.addToolInvocation(tool, subAgentInvocationId, agentName, scrollToSubagent, toolPart);
2579
+ this._chatToolConfirmationCarousels.set(key, part);
2580
+ append(this.chatToolConfirmationCarouselContainer, part.domNode);
2581
+ show(this.chatToolConfirmationCarouselContainer);
2582
+ this.updateToolConfirmationCarouselMaxHeight();
2583
+ const capturedKey = key;
2584
+ Event.once(part.onDidEmpty)(() => {
2585
+ this._chatToolConfirmationCarousels.deleteAndDispose(capturedKey);
2586
+ if (this._currentSessionKey === capturedKey) {
2587
+ clearNode(this.chatToolConfirmationCarouselContainer);
2588
+ hide(this.chatToolConfirmationCarouselContainer);
2589
+ }
2590
+ });
2591
+ return part;
2592
+ }
2593
+ addToolToConfirmationCarousel(tool, factory, subAgentInvocationId, agentName, scrollToSubagent, toolPart) {
2594
+ const existing = this._currentToolConfirmationCarousel;
2595
+ if (existing) {
2596
+ existing.addToolInvocation(tool, subAgentInvocationId, agentName, scrollToSubagent, toolPart);
2597
+ this.updateToolConfirmationCarouselMaxHeight();
2598
+ } else {
2599
+ this.renderToolConfirmationCarousel(tool, factory, subAgentInvocationId, agentName, scrollToSubagent, toolPart);
2600
+ }
2601
+ }
2602
+ activateCarouselForSubagent(subAgentInvocationId) {
2603
+ this._currentToolConfirmationCarousel?.activateFirstToolForSubagent(subAgentInvocationId);
2604
+ }
2605
+ hasToolInConfirmationCarousel(toolCallId) {
2606
+ return this._currentToolConfirmationCarousel?.hasToolInvocation(toolCallId) ?? false;
2607
+ }
2608
+ get hasActiveToolConfirmationCarousel() {
2609
+ const carousel = this._currentToolConfirmationCarousel;
2610
+ return !!carousel && carousel.pendingCount > 0;
2611
+ }
2612
+ clearToolConfirmationCarousel() {
2613
+ const key = this._currentSessionKey;
2614
+ if (key) {
2615
+ this._chatToolConfirmationCarousels.deleteAndDispose(key);
2616
+ }
2617
+ clearNode(this.chatToolConfirmationCarouselContainer);
2618
+ hide(this.chatToolConfirmationCarouselContainer);
2619
+ }
2620
+ _syncToolConfirmationCarouselForSession() {
2621
+ clearNode(this.chatToolConfirmationCarouselContainer);
2622
+ const carousel = this._currentToolConfirmationCarousel;
2623
+ if (carousel && carousel.pendingCount > 0) {
2624
+ append(this.chatToolConfirmationCarouselContainer, carousel.domNode);
2625
+ show(this.chatToolConfirmationCarouselContainer);
2626
+ this.updateToolConfirmationCarouselMaxHeight();
2627
+ } else {
2628
+ hide(this.chatToolConfirmationCarouselContainer);
2629
+ }
2630
+ }
2471
2631
  setWorkingSetCollapsed(collapsed) {
2472
2632
  this._workingSetCollapsed.set(collapsed, undefined);
2473
2633
  }
@@ -2585,7 +2745,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2585
2745
  const button = this._chatEditsActionsDisposables.add(( new ButtonWithIcon(overviewTitle, {
2586
2746
  supportIcons: true,
2587
2747
  secondary: true,
2588
- ariaLabel: ( localize(7040, "Toggle changed files."))
2748
+ ariaLabel: ( localize(7164, "Toggle changed files."))
2589
2749
  })));
2590
2750
  const topLevelStats = derived(reader => {
2591
2751
  const entries = editSessionEntriesObs.read(reader);
@@ -2640,7 +2800,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2640
2800
  }) : undefined,
2641
2801
  disableWhileRunning: isSessionMenu,
2642
2802
  buttonConfigProvider: action => {
2643
- if (action.id === ChatEditingShowChangesAction.ID || action.id === ViewPreviousEditsAction.Id || action.id === ViewAllSessionChangesAction.ID) {
2803
+ if (action.id === ChatEditingShowChangesAction.ID || action.id === ViewPreviousEditsAction.Id) {
2644
2804
  return {
2645
2805
  showIcon: true,
2646
2806
  showLabel: false,
@@ -2659,10 +2819,10 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2659
2819
  removed,
2660
2820
  shouldShowEditingSession
2661
2821
  } = topLevelStats.read(reader);
2662
- const buttonLabel = files === 1 ? ( localize(7041, "1 file changed")) : ( localize(7042, "{0} files changed", files));
2822
+ const buttonLabel = files === 1 ? ( localize(7165, "1 file changed")) : ( localize(7166, "{0} files changed", files));
2663
2823
  button.label = buttonLabel;
2664
2824
  button.element.setAttribute("aria-label", ( localize(
2665
- 7043,
2825
+ 7167,
2666
2826
  "{0}, {1} lines added, {2} lines removed",
2667
2827
  buttonLabel,
2668
2828
  added,
@@ -2778,6 +2938,20 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2778
2938
  }
2779
2939
  setMaxHeight(maxHeight) {
2780
2940
  this._maxHeight = maxHeight;
2941
+ this.updateToolConfirmationCarouselMaxHeight();
2942
+ }
2943
+ updateToolConfirmationCarouselMaxHeight() {
2944
+ const carousel = this._currentToolConfirmationCarousel;
2945
+ if (!carousel) {
2946
+ return;
2947
+ }
2948
+ if (this._maxHeight === undefined) {
2949
+ carousel.setMaxHeight(undefined);
2950
+ return;
2951
+ }
2952
+ const carouselHeight = this.chatToolConfirmationCarouselContainer.offsetHeight;
2953
+ const otherInputHeight = Math.max(0, this.container.offsetHeight - carouselHeight);
2954
+ carousel.setMaxHeight(this._maxHeight - otherInputHeight);
2781
2955
  }
2782
2956
  layout(width) {
2783
2957
  this.cachedWidth = width;
@@ -2910,7 +3084,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2910
3084
  this.updateInputEditorScrollbarOptions();
2911
3085
  }
2912
3086
  };
2913
- ChatInputPart = ChatInputPart_1 = ( __decorate([( __param(4, IModelService)), ( __param(5, IInstantiationService)), ( __param(6, IContextKeyService)), ( __param(7, IConfigurationService)), ( __param(8, IKeybindingService)), ( __param(9, IAccessibilityService)), ( __param(10, ILanguageModelsService)), ( __param(11, ILogService)), ( __param(12, IFileService)), ( __param(13, IEditorService)), ( __param(14, IThemeService)), ( __param(15, ITextModelService)), ( __param(16, IStorageService)), ( __param(17, IChatAgentService)), ( __param(18, ISharedWebContentExtractorService)), ( __param(19, IWorkbenchAssignmentService)), ( __param(20, IChatEntitlementService)), ( __param(21, IChatModeService)), ( __param(22, ILanguageModelToolsService)), ( __param(23, IChatService)), ( __param(24, IChatSessionsService)), ( __param(25, IChatContextService)), ( __param(26, IAgentSessionsService)), ( __param(27, IWorkspaceContextService)), ( __param(28, IWorkbenchLayoutService)), ( __param(29, IViewDescriptorService)), ( __param(30, IChatAttachmentWidgetRegistry))], ChatInputPart));
3087
+ ChatInputPart = ChatInputPart_1 = ( __decorate([( __param(4, IModelService)), ( __param(5, IInstantiationService)), ( __param(6, IContextKeyService)), ( __param(7, IConfigurationService)), ( __param(8, IKeybindingService)), ( __param(9, IAccessibilityService)), ( __param(10, ILanguageModelsService)), ( __param(11, ILogService)), ( __param(12, IFileService)), ( __param(13, IEditorService)), ( __param(14, IThemeService)), ( __param(15, ITextModelService)), ( __param(16, IStorageService)), ( __param(17, IChatAgentService)), ( __param(18, ISharedWebContentExtractorService)), ( __param(19, IChatEntitlementService)), ( __param(20, IChatModeService)), ( __param(21, ILanguageModelToolsService)), ( __param(22, IChatSessionsService)), ( __param(23, IChatContextService)), ( __param(24, IAgentSessionsService)), ( __param(25, IWorkspaceContextService)), ( __param(26, ISCMService)), ( __param(27, IWorkbenchLayoutService)), ( __param(28, IViewDescriptorService)), ( __param(29, IChatAttachmentWidgetRegistry))], ChatInputPart));
2914
3088
  function getLastPosition(model) {
2915
3089
  return {
2916
3090
  lineNumber: model.getLineCount(),