@codingame/monaco-vscode-katex-common 33.0.7 → 34.0.0

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 (255) hide show
  1. package/package.json +3 -3
  2. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.css +169 -0
  3. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.d.ts +28 -0
  4. package/vscode/src/vs/base/browser/ui/pixelSpinner/pixelSpinner.js +61 -0
  5. package/vscode/src/vs/platform/actions/browser/actionWidgetDropdownActionViewItem.d.ts +1 -1
  6. package/vscode/src/vs/platform/actions/browser/actionWidgetDropdownActionViewItem.js +1 -1
  7. package/vscode/src/vs/platform/actions/browser/buttonbar.js +2 -2
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +18 -17
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +9 -9
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +40 -38
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +14 -14
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.d.ts +1 -16
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.contribution.js +4 -48
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.d.ts +16 -18
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostChatInputPicker.js +81 -69
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.d.ts +1 -3
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostGenericConfigChips.js +5 -22
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionUri.d.ts +2 -0
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostSessionUri.js +21 -0
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/media/agentHostChatInputPicker.css +18 -28
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +8 -8
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +2 -2
  26. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  27. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +1 -1
  28. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +30 -30
  29. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +13 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +177 -80
  31. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +15 -15
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.d.ts +7 -2
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +69 -5
  35. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +3 -3
  36. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentMarkdownRenderer.js +25 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +2 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +4 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +2 -2
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.d.ts +93 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatEditPillElement.js +140 -0
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.d.ts +46 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExternalEditContentPart.js +134 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +2 -15
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +49 -117
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +30 -30
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +2 -0
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +47 -4
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +3 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +52 -51
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +18 -14
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +6 -6
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +23 -13
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +13 -11
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.d.ts +15 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +87 -11
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +21 -4
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +102 -35
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +14 -14
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +22 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +22 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +6 -2
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +21 -2
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +6 -6
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +1 -1
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +35 -18
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +1 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +62 -35
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +8 -8
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +6 -6
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.d.ts +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +15 -12
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +5 -5
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +10 -3
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.d.ts +2 -2
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/terminalToolAutoExpand.js +13 -15
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +4 -4
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +19 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +154 -59
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +21 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatOptions.d.ts +4 -3
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatOptions.js +6 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +17 -2
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +113 -23
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.d.ts +21 -0
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatGoalBannerWidget.js +64 -0
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +10 -1
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.js +7 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +11 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +18 -7
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +26 -0
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +361 -66
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +2 -2
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +4 -4
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.d.ts +30 -0
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputStatusActionViewItem.js +147 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +11 -5
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +133 -87
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +2 -4
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +4 -2
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +13 -7
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatGoalBannerWidget.css +81 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +32 -18
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +6 -6
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +2 -2
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +39 -40
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +23 -2
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +66 -11
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -6
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +373 -32
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +5 -3
  144. package/vscode/src/vs/workbench/contrib/chat/common/chatArtifactExtraction.js +18 -0
  145. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +7 -7
  146. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +6 -6
  147. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +18 -18
  148. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatWidgetHistoryService.d.ts +12 -2
  149. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatWidgetHistoryService.js +54 -11
  150. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +3 -3
  151. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  152. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  153. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +30 -30
  154. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  155. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  156. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  157. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  158. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  164. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  165. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  166. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +0 -76
  167. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +0 -191
  168. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.d.ts +0 -50
  169. package/vscode/src/vs/platform/networkFilter/common/domainMatcher.js +0 -138
  170. package/vscode/src/vs/platform/networkFilter/common/settings.d.ts +0 -12
  171. package/vscode/src/vs/platform/networkFilter/common/settings.js +0 -14
  172. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.d.ts +0 -18
  173. package/vscode/src/vs/platform/sandbox/common/sandboxHelperIpc.js +0 -13
  174. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +0 -87
  175. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.js +0 -10
  176. package/vscode/src/vs/workbench/contrib/terminal/terminalContribChatExports.d.ts +0 -2
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +0 -2
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +0 -41
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +0 -24
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +0 -26
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +0 -142
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +0 -52
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +0 -232
  184. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +0 -65
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +0 -225
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +0 -27
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +0 -143
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +0 -37
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +0 -205
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.d.ts +0 -40
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +0 -174
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.d.ts +0 -7
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +0 -43
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +0 -52
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +0 -260
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +0 -44
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +0 -98
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +0 -42
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +0 -225
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +0 -31
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +0 -392
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.d.ts +0 -45
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +0 -243
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +0 -53
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.js +0 -10
  206. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.d.ts +0 -20
  207. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +0 -310
  208. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +0 -27
  209. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +0 -177
  210. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +0 -11
  211. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +0 -33
  212. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +0 -41
  213. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +0 -19
  214. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +0 -37
  215. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +0 -19
  216. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +0 -37
  217. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +0 -19
  218. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +0 -44
  219. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +0 -13
  220. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +0 -22
  221. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +0 -42
  222. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +0 -102
  223. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.d.ts +0 -5
  224. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +0 -27
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.d.ts +0 -14
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +0 -29
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.d.ts +0 -8
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePwshChainOperatorRewriter.js +0 -33
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +0 -24
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +0 -15
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +0 -53
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +0 -177
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +0 -512
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +0 -42
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +0 -23
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/outputAnalyzer.d.ts +0 -9
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +0 -258
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +0 -2623
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.d.ts +0 -22
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +0 -43
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +0 -17
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +0 -118
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.d.ts +0 -22
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalToolAutoApprove.js +0 -44
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +0 -1
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +0 -58
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +0 -223
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.d.ts +0 -31
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.js +0 -49
  250. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.d.ts +0 -18
  251. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.js +0 -302
  252. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +0 -7
  253. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.js +0 -118
  254. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +0 -114
  255. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +0 -788
@@ -52,6 +52,7 @@ import { registerAndCreateHistoryNavigationContext } from '@codingame/monaco-vsc
52
52
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
53
53
  import { ServiceCollection } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/serviceCollection';
54
54
  import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
55
+ import { canLog, LogLevel } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log';
55
56
  import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
56
57
  import { observableMemento } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/observableMemento';
57
58
  import { bindContextKey } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
@@ -74,16 +75,17 @@ import { AccessibilityVerbositySettingId } from '@codingame/monaco-vscode-api/vs
74
75
  import { AccessibilityCommandId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/common/accessibilityCommands';
75
76
  import { getSimpleEditorOptions, getSimpleCodeEditorWidgetOptions, setupSimpleEditorSelectionStyling } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/codeEditor/browser/simpleEditorOptions';
76
77
  import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
77
- import { ChatRequestVariableSet, isImageVariableEntry, isStringVariableEntry, getImageAttachmentLimit, OmittedState, isNotebookOutputVariableEntry, isPromptFileVariableEntry, isPromptTextVariableEntry, isElementVariableEntry, isPasteVariableEntry, isSCMHistoryItemVariableEntry, isSCMHistoryItemChangeVariableEntry, isSCMHistoryItemChangeRangeVariableEntry, isBrowserViewVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
78
+ import { ChatRequestVariableSet, isImageVariableEntry, isExplicitFileOrImageVariableEntry, isStringVariableEntry, getImageAttachmentLimit, OmittedState, isNotebookOutputVariableEntry, isPromptFileVariableEntry, isPromptTextVariableEntry, isElementVariableEntry, isPasteVariableEntry, isSCMHistoryItemVariableEntry, isSCMHistoryItemChangeVariableEntry, isSCMHistoryItemChangeRangeVariableEntry, isBrowserViewVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/attachments/chatVariableEntries';
78
79
  import { getModeNameForTelemetry, ChatMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes';
79
80
  import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
80
- import { localChatSessionType, isIChatSessionFileChange2 } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
81
+ import { SessionType, localChatSessionType, isIChatSessionFileChange2 } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService';
81
82
  import { IChatSessionsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatSessionsService.service';
82
83
  import { ChatAgentLocation, ChatModeKind, ChatConfiguration, ChatPermissionLevel, isChatPermissionLevel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
83
84
  import { ModifiedFileEntryState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/editing/chatEditingService';
84
85
  import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
85
86
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
86
- import { shouldResetOnModelListChange, shouldRestorePersistedModel, shouldRestoreLateArrivingModel, resolveModelFromSyncState, shouldResetModelToDefault, mergeModelsWithCache, filterModelsForSession, hasModelsTargetingSession, isModelValidForSession, findDefaultModel } from './chatModelSelectionLogic.js';
87
+ import { logChangesToStateModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel';
88
+ import { filterModelsForSession, shouldResetOnModelListChange, shouldRestorePersistedModel, shouldRestoreLateArrivingModel, resolveModelFromSyncState, shouldResetModelToDefault, mergeModelsWithCache, hasModelsTargetingSession, isModelValidForSession, findDefaultModel } from './chatModelSelectionLogic.js';
87
89
  import { LocalChatSessionUri, getChatSessionType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatUri';
88
90
  import { isResponseVM } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatViewModel';
89
91
  import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/participants/chatAgents.service';
@@ -102,7 +104,7 @@ import { ChatEditingShowChangesAction, ViewPreviousEditsAction } from '../../cha
102
104
  import { resizeImage } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatImageUtils';
103
105
  import { ChatSessionPickerActionItem } from '../../chatSessions/chatSessionPickerActionItem.js';
104
106
  import { AgentHostChatInputPicker, AgentHostChatInputPickerActionViewItem } from '../../agentSessions/agentHost/agentHostChatInputPicker.js';
105
- import { OpenAgentHostModePickerAction, OpenAgentHostAutoApprovePickerAction, OpenAgentHostPermissionModePickerAction, OpenAgentHostBranchPickerAction, OpenAgentHostIsolationPickerAction } from '../../agentSessions/agentHost/agentHostChatInputPicker.contribution.js';
107
+ import { OpenAgentHostModePickerAction, OpenAgentHostAutoApprovePickerAction, OpenAgentHostPermissionModePickerAction } from '../../agentSessions/agentHost/agentHostChatInputPicker.contribution.js';
106
108
  import { AgentHostGenericConfigChips } from '../../agentSessions/agentHost/agentHostGenericConfigChips.js';
107
109
  import { SessionConfigKey } from '../../../../../../platform/agentHost/common/sessionConfigKeys.js';
108
110
  import { ClaudeSessionConfigKey } from '../../../../../../platform/agentHost/common/claudeSessionConfigKeys.js';
@@ -118,6 +120,7 @@ import { ChatArtifactsWidget } from '../chatArtifactsWidget.js';
118
120
  import { ChatDragAndDrop } from '../chatDragAndDrop.js';
119
121
  import { ChatFollowups } from './chatFollowups.js';
120
122
  import { IChatInputNotificationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.service';
123
+ import { ChatGoalBannerWidget } from './chatGoalBannerWidget.js';
121
124
  import { ChatInputNotificationWidget } from './chatInputNotificationWidget.js';
122
125
  import { ChatSelectedTools } from './chatSelectedTools.js';
123
126
  import { DelegationSessionPickerActionItem } from './delegationSessionPickerActionItem.js';
@@ -127,13 +130,16 @@ import { PermissionPickerActionItem } from './permissionPickerActionItem.js';
127
130
  import { SessionTypePickerActionItem } from './sessionTargetPickerActionItem.js';
128
131
  import { WorkspacePickerActionItem } from './workspacePickerActionItem.js';
129
132
  import { ChatContextUsageWidget } from '../../widgetHosts/viewPane/chatContextUsageWidget.js';
133
+ import { ChatInputStatusActionViewItem } from './chatInputStatusActionViewItem.js';
130
134
  import { Target } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
131
135
  import { findLast } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arraysFind';
132
136
  import { ConfigureToolsAction } from '../../actions/chatToolActions.js';
137
+ import { InlineCompletionsController } from '@codingame/monaco-vscode-api/vscode/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController';
133
138
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
134
139
  import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
135
140
  import { derived, derivedOpts } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
136
141
  import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
142
+ import { constObservable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/constObservable';
137
143
 
138
144
  var ChatInputPart_1;
139
145
  const $ = $$1;
@@ -218,6 +224,9 @@ let ChatInputPart = class ChatInputPart extends Disposable {
218
224
  get inputEditor() {
219
225
  return this._inputEditor;
220
226
  }
227
+ setHistoryKey(historyKey) {
228
+ this.history.setHistoryKey(historyKey);
229
+ }
221
230
  get currentLanguageModel() {
222
231
  return this._currentLanguageModel.get()?.identifier;
223
232
  }
@@ -378,6 +387,9 @@ let ChatInputPart = class ChatInputPart extends Disposable {
378
387
  this.overlayClickListener = this._register(( new MutableDisposable()));
379
388
  this.attachedContextDisposables = this._register(( new MutableDisposable()));
380
389
  this._notificationWidget = this._register(( new MutableDisposable()));
390
+ this._goalBannerWidget = this._register(( new MutableDisposable()));
391
+ this._onDidDismissGoalBanner = this._register(( new Emitter()));
392
+ this.onDidDismissGoalBanner = this._onDidDismissGoalBanner.event;
381
393
  this._contextUsageDisposables = this._register(( new MutableDisposable()));
382
394
  this.height = observableValue(this, 0);
383
395
  this._forceVisibleScrollbarUntilAccept = false;
@@ -403,7 +415,16 @@ let ChatInputPart = class ChatInputPart extends Disposable {
403
415
  this._chatSessionIsEmpty = false;
404
416
  this._pendingDelegationTarget = undefined;
405
417
  this._currentSessionType = undefined;
406
- this._syncTextDebounced = this._register(( new RunOnceScheduler(() => this._syncInputStateToModel(), 150)));
418
+ this._syncTextDebounced = this._register(( new RunOnceScheduler(() => {
419
+ logChangesToStateModel(
420
+ this._inputModel,
421
+ `[DEBOUNCE] _syncTextDebounced fired -> _syncInputStateToModel in ${this._currentSessionKey}`,
422
+ undefined,
423
+ this._inputModel?.state.get(),
424
+ this.logService
425
+ );
426
+ this._syncInputStateToModel();
427
+ }, 150)));
407
428
  this._emptyInputState = this._register(
408
429
  emptyInputState(StorageScope.WORKSPACE, StorageTarget.USER, this.storageService)
409
430
  );
@@ -443,6 +464,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
443
464
  this.updateWidgetLockStateFromSessionType(newSessionType);
444
465
  this.checkModeInSessionPool(newSessionType);
445
466
  this.refreshChatSessionPickers();
467
+ this._notificationWidget.value?.rerender();
446
468
  })
447
469
  );
448
470
  }
@@ -458,6 +480,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
458
480
  const padding = this.options.renderStyle === "compact" ? INPUT_EDITOR_PADDING.compact : INPUT_EDITOR_PADDING.default;
459
481
  this.inputEditorMinHeight = this.options.inputEditorMinLines ? this.options.inputEditorMinLines * INPUT_EDITOR_LINE_HEIGHT + padding.top + padding.bottom : undefined;
460
482
  this.inputEditorHasText = ChatContextKeys.inputHasText.bindTo(contextKeyService);
483
+ this.inputEditorHasSendableContent = ChatContextKeys.inputHasSendableContent.bindTo(contextKeyService);
461
484
  this.chatCursorAtTop = ChatContextKeys.inputCursorAtTop.bindTo(contextKeyService);
462
485
  this.inputEditorHasFocus = ChatContextKeys.inputHasFocus.bindTo(contextKeyService);
463
486
  this._hasQuestionCarouselContextKey = ChatContextKeys.Editing.hasQuestionCarousel.bindTo(contextKeyService);
@@ -523,11 +546,57 @@ let ChatInputPart = class ChatInputPart extends Disposable {
523
546
  ));
524
547
  this._hasFileAttachmentContextKey = ChatContextKeys.hasFileAttachments.bindTo(contextKeyService);
525
548
  this.initSelectedModel();
526
- this._register(this.languageModelsService.onDidChangeLanguageModels(() => {
527
- if (shouldResetOnModelListChange(this._currentLanguageModel.get()?.identifier, this.getModels())) {
549
+ const resetCurrentLanguageModelIfUnavailable = () => {
550
+ const modelIdentifier = this._currentLanguageModel.get()?.identifier;
551
+ const models = this.getModels();
552
+ if (canLog(this.logService.getLevel(), LogLevel.Debug)) {
553
+ const mergedModels = this.getAllMergedModels();
554
+ const filteredModels = filterModelsForSession(models, this.getCurrentSessionType(), this.currentModeKind, this.location);
555
+ const messageparts = [
556
+ `resetting current language model due to model list change from ${modelIdentifier}`,
557
+ `this._widget?.viewModel?.model.sessionResource = ${this._widget?.viewModel?.model.sessionResource?.toString()}`,
558
+ `this.currentModeKind = ${this.currentModeKind}`,
559
+ `this.getCurrentSessionType = ${this.getCurrentSessionType()}`,
560
+ `this._currentSessionType = ${this._currentSessionType}`,
561
+ `shouldResetOnModelListChange(modelIdentifier, models) = ${shouldResetOnModelListChange(modelIdentifier, models)}`,
562
+ `vendors: ${( this.languageModelsService.getVendors().map(v => v.vendor)).join(", ")}`,
563
+ `hiddenModelIds: ${this.languageModelsService.getHiddenModelIds().join(", ")}`,
564
+ `model identifiers: ${( models.map(m => m.identifier)).join(", ")}`,
565
+ `model target Session Types: ${( models.map(m => m.metadata.targetChatSessionType || "")).join(", ")}`,
566
+ `model metadataid: ${( models.map(m => m.metadata.id)).join(", ")}`,
567
+ `merged.model identifiers: ${( mergedModels.map(m => m.identifier)).join(", ")}`,
568
+ `merged.model target Session Types: ${( mergedModels.map(m => m.metadata.targetChatSessionType || "")).join(", ")}`,
569
+ `merged.model metadataid: ${( mergedModels.map(m => m.metadata.id)).join(", ")}`,
570
+ `filtered.model identifiers: ${( filteredModels.map(m => m.identifier)).join(", ")}`,
571
+ `filtered.model target Session Types: ${( filteredModels.map(m => m.metadata.targetChatSessionType || "")).join(", ")}`,
572
+ `filtered.model metadataid: ${( filteredModels.map(m => m.metadata.id)).join(", ")}`
573
+ ];
574
+ if (this.getCurrentSessionType() !== SessionType.CopilotCLI) {
575
+ const delegateSessionType = this.options.sessionTypePickerDelegate?.getActiveSessionProvider?.();
576
+ if (delegateSessionType) {
577
+ messageparts.push(`delegateSessionType = ${delegateSessionType}`);
578
+ }
579
+ const sessionResource = this._widget?.viewModel?.model.sessionResource;
580
+ messageparts.push(`current session resource = ${sessionResource}`);
581
+ }
582
+ logChangesToStateModel(
583
+ this._inputModel,
584
+ messageparts.join(", "),
585
+ undefined,
586
+ undefined,
587
+ this.logService
588
+ );
589
+ }
590
+ if (shouldResetOnModelListChange(modelIdentifier, models)) {
528
591
  this.setCurrentLanguageModelToDefault();
529
592
  }
530
- }));
593
+ };
594
+ this._register(
595
+ this.languageModelsService.onDidChangeLanguageModels(resetCurrentLanguageModelIfUnavailable)
596
+ );
597
+ this._register(
598
+ this.languageModelsService.onDidChangeModelVisibility(resetCurrentLanguageModelIfUnavailable)
599
+ );
531
600
  this._register(this.onDidChangeCurrentChatMode(() => {
532
601
  this.accessibilityService.alert(this._currentModeObservable.get().label.get());
533
602
  if (this._inputEditor) {
@@ -549,7 +618,9 @@ let ChatInputPart = class ChatInputPart extends Disposable {
549
618
  }));
550
619
  this._register(autorun(reader => {
551
620
  const modes = this._currentChatModesObservable.read(reader);
552
- reader.store.add(modes.onDidChange(() => this.validateCurrentChatMode()));
621
+ reader.store.add(modes.onDidChange(() => {
622
+ this.validateCurrentChatMode();
623
+ }));
553
624
  }));
554
625
  this._register(autorun(r => {
555
626
  const mode = this._currentModeObservable.read(r);
@@ -587,10 +658,26 @@ let ChatInputPart = class ChatInputPart extends Disposable {
587
658
  }
588
659
  initSelectedModel() {
589
660
  this._waitForPersistedLanguageModel.clear();
590
- const persistedSelection = this.storageService.get(this.getSelectedModelStorageKey(), StorageScope.APPLICATION);
591
- const persistedAsDefault = this.storageService.getBoolean(this.getSelectedModelIsDefaultStorageKey(), StorageScope.APPLICATION, true);
661
+ const selectedModelStorageKey = this.getSelectedModelStorageKey();
662
+ const selectedModelIsDefaultStorageKey = this.getSelectedModelIsDefaultStorageKey();
663
+ const persistedSelection = this.storageService.get(selectedModelStorageKey, StorageScope.APPLICATION);
664
+ const persistedAsDefault = this.storageService.getBoolean(selectedModelIsDefaultStorageKey, StorageScope.APPLICATION, true);
665
+ logChangesToStateModel(
666
+ this._inputModel,
667
+ `[INIT-SELECTED-MODEL] storageKey=${selectedModelStorageKey}, isDefaultKey=${selectedModelIsDefaultStorageKey}, persistedSelection=${persistedSelection}, persistedAsDefault=${persistedAsDefault}, currentSessionType=${this._currentSessionType}, getCurrentSessionType=${this.getCurrentSessionType()}, widgetSession=${this._currentSessionKey}, boundInputModelSession=${this._inputModelSessionResource?.toString()}, currentLanguageModel=${this._currentLanguageModel.get()?.identifier}`,
668
+ this._inputModel?.state.get(),
669
+ undefined,
670
+ this.logService
671
+ );
592
672
  if (persistedSelection) {
593
673
  const result = shouldRestorePersistedModel(persistedSelection, persistedAsDefault, this.getModels(), this.location);
674
+ logChangesToStateModel(
675
+ this._inputModel,
676
+ `[INIT-SELECTED-MODEL] restore decision persistedSelection=${persistedSelection}, shouldRestore=${result.shouldRestore}, resultModel=${result.model?.identifier}, storageKey=${selectedModelStorageKey}, currentSessionType=${this._currentSessionType}, getCurrentSessionType=${this.getCurrentSessionType()}`,
677
+ this._inputModel?.state.get(),
678
+ undefined,
679
+ this.logService
680
+ );
594
681
  if (result.shouldRestore && result.model) {
595
682
  this.setCurrentLanguageModel(result.model);
596
683
  this.checkModelSupported();
@@ -630,6 +717,15 @@ let ChatInputPart = class ChatInputPart extends Disposable {
630
717
  this.setCurrentLanguageModel(model);
631
718
  }
632
719
  }
720
+ switchModelByIdentifier(identifier) {
721
+ const models = this.getModels();
722
+ const model = models.find(m => m.identifier === identifier);
723
+ if (model) {
724
+ this.setCurrentLanguageModel(model);
725
+ return true;
726
+ }
727
+ return false;
728
+ }
633
729
  switchModelByQualifiedName(qualifiedModelNames) {
634
730
  const models = this.getModels();
635
731
  for (const qualifiedModelName of qualifiedModelNames) {
@@ -743,6 +839,13 @@ let ChatInputPart = class ChatInputPart extends Disposable {
743
839
  if (sessionResource) {
744
840
  this.chatSessionsService.setSessionOption(sessionResource, PERMISSION_LEVEL_OPTION_ID, level);
745
841
  }
842
+ logChangesToStateModel(
843
+ this._inputModel,
844
+ `setPermissionLevel -> _syncInputStateToModel (level=${level}, currentLanguageModel=${this._currentLanguageModel.get()?.identifier}) in ${this._currentSessionKey}`,
845
+ undefined,
846
+ undefined,
847
+ this.logService
848
+ );
746
849
  this._syncInputStateToModel();
747
850
  }
748
851
  getDefaultPermissionLevel() {
@@ -818,10 +921,20 @@ let ChatInputPart = class ChatInputPart extends Disposable {
818
921
  return widgets;
819
922
  }
820
923
  setInputModel(model, chatSessionIsEmpty, forSessionResource) {
924
+ logChangesToStateModel(this._inputModel, `setInputModel for ${( forSessionResource.toString())} (chatSessionIsEmpty=${chatSessionIsEmpty}, outgoing._inputModel=${this._inputModel ? "present" : "undefined"})`, model.state.get(), this._inputModel?.state.get(), this.logService);
821
925
  if (this._inputModel) {
926
+ logChangesToStateModel(
927
+ this._inputModel,
928
+ `[FLUSH-PRE] setInputModel pre-flush boundInputModelSession=${this._inputModelSessionResource?.toString()} widgetSession=${this._currentSessionKey} incoming=${( forSessionResource.toString())}`,
929
+ undefined,
930
+ this._inputModel.state.get(),
931
+ this.logService
932
+ );
822
933
  this._syncInputStateToModel();
823
934
  }
935
+ this._currentSessionType = getChatSessionType(forSessionResource);
824
936
  this._inputModel = model;
937
+ this._inputModelSessionResource = forSessionResource;
825
938
  this._modelSyncDisposables.clear();
826
939
  const chatModes = this.chatModeService.createModes(forSessionResource);
827
940
  this._currentChatModes.value = chatModes;
@@ -829,28 +942,60 @@ let ChatInputPart = class ChatInputPart extends Disposable {
829
942
  this.selectedToolsModel.resetSessionEnablementState();
830
943
  this._chatSessionIsEmpty = chatSessionIsEmpty;
831
944
  if (chatSessionIsEmpty) {
945
+ logChangesToStateModel(this._inputModel, `(1) setting empty model state for ${( forSessionResource.toString())}`, undefined, undefined, this.logService);
832
946
  this._setEmptyModelState();
833
947
  this._modelSyncDisposables.add(this.configurationService.onDidChangeConfiguration(e => {
834
948
  if (this._chatSessionIsEmpty && e.affectsConfiguration(ChatConfiguration.DefaultNewSessionMode)) {
949
+ logChangesToStateModel(this._inputModel, `(2) setting empty model state for ${( forSessionResource.toString())}`, undefined, undefined, this.logService);
835
950
  this._setEmptyModelState();
836
951
  }
837
952
  }));
838
953
  this._modelSyncDisposables.add(this._currentChatModesObservable.get().onDidChange(() => {
839
954
  if (this._chatSessionIsEmpty) {
955
+ logChangesToStateModel(this._inputModel, `(3) setting empty model state for ${( forSessionResource.toString())}`, undefined, undefined, this.logService);
840
956
  this._setEmptyModelState();
841
957
  }
842
958
  }));
843
959
  }
960
+ const widgetViewModelSession = this._widget?.viewModel?.model.sessionResource;
961
+ const isStaleAtRegistration = !!widgetViewModelSession && !isEqual(widgetViewModelSession, forSessionResource);
962
+ logChangesToStateModel(
963
+ this._inputModel,
964
+ `[AUTORUN-REG] registering model->view autorun for ${( forSessionResource.toString())}, widgetSession=${this._currentSessionKey}, widgetViewModelSession=${widgetViewModelSession?.toString()}, isStaleAtRegistration=${isStaleAtRegistration}, model.state.selectedModel=${model.state.get()?.selectedModel?.identifier}, _currentLanguageModel=${this._currentLanguageModel.get()?.identifier}`,
965
+ undefined,
966
+ undefined,
967
+ this.logService
968
+ );
844
969
  this._modelSyncDisposables.add(autorun(reader => {
845
970
  let state = model.state.read(reader);
971
+ let message = `syncing from model for ${( forSessionResource.toString())} in ${this._currentSessionKey}`;
846
972
  if (!state && this._chatSessionIsEmpty) {
847
973
  state = this._emptyInputState.read(undefined);
974
+ message = `syncing from empty input state for ${( forSessionResource.toString())}`;
975
+ }
976
+ const widgetSessionResource = this._widget?.viewModel?.model.sessionResource;
977
+ const isStaleSession = !!this._inputModelSessionResource && !isEqual(this._inputModelSessionResource, forSessionResource);
978
+ if (isStaleSession) {
979
+ message = `[STALE-SESSION-AUTORUN] ${message} (widget now on ${widgetSessionResource?.toString()}, ${this._inputModelSessionResource?.toString()}, ${( forSessionResource.toString())} is old)`;
980
+ }
981
+ const prevState = this._inputModel?.state.read(undefined);
982
+ logChangesToStateModel(this._inputModel, message, state, prevState, this.logService);
983
+ if (isStaleSession) {
984
+ return;
848
985
  }
849
986
  this._syncFromModel(state, forSessionResource);
850
987
  }));
851
988
  }
852
989
  _setEmptyModelState() {
853
- if (this._inputModel?.state?.get()?.permissionLevel !== this.getDefaultPermissionLevel()) {
990
+ logChangesToStateModel(
991
+ this._inputModel,
992
+ `setting empty model state for ${this._widget?.viewModel?.sessionResource.toString()} in ${this._currentSessionKey}`,
993
+ undefined,
994
+ undefined,
995
+ this.logService
996
+ );
997
+ const currentLevel = this._inputModel?.state?.get()?.permissionLevel;
998
+ if (currentLevel === undefined || !isChatPermissionLevel(currentLevel)) {
854
999
  this.setPermissionLevel(this.getDefaultPermissionLevel());
855
1000
  }
856
1001
  if (this.entitlementService.anonymous) {
@@ -890,22 +1035,32 @@ let ChatInputPart = class ChatInputPart extends Disposable {
890
1035
  if (state?.selectedModel) {
891
1036
  const allModels = this.getAllMergedModels();
892
1037
  const sessionType = getChatSessionType(forSessionResource);
893
- const syncResult = resolveModelFromSyncState(
894
- state.selectedModel,
895
- this._currentLanguageModel.get(),
896
- allModels,
897
- sessionType,
898
- {
899
- location: this.location,
900
- currentModeKind: this.currentModeKind,
901
- sessionType
902
- }
1038
+ const currentLm = this._currentLanguageModel.get();
1039
+ const syncResult = resolveModelFromSyncState(state.selectedModel, currentLm, allModels, sessionType, {
1040
+ location: this.location,
1041
+ currentModeKind: this.currentModeKind,
1042
+ sessionType
1043
+ });
1044
+ logChangesToStateModel(
1045
+ this._inputModel,
1046
+ `[RESOLVE] _syncFromModel resolveModelFromSyncState for ${( forSessionResource.toString())} in ${this._currentSessionKey}: stateModel=${state.selectedModel.identifier} currentLm=${currentLm?.identifier} sessionType=${sessionType} -> action=${syncResult.action}`,
1047
+ state,
1048
+ undefined,
1049
+ this.logService
903
1050
  );
904
1051
  if (syncResult.action === "apply") {
905
1052
  this.setCurrentLanguageModel(state.selectedModel);
906
1053
  } else if (syncResult.action === "default") {
907
1054
  this.setCurrentLanguageModelToDefault();
908
1055
  }
1056
+ } else if (state) {
1057
+ logChangesToStateModel(
1058
+ this._inputModel,
1059
+ `_syncFromModel: state has no selectedModel (no-op for model picker) for ${( forSessionResource.toString())} in ${this._currentSessionKey} (current=${this._currentLanguageModel.get()?.identifier})`,
1060
+ state,
1061
+ undefined,
1062
+ this.logService
1063
+ );
909
1064
  }
910
1065
  const currentAttachments = this._attachmentModel.attachments;
911
1066
  if (!state) {
@@ -945,6 +1100,14 @@ let ChatInputPart = class ChatInputPart extends Disposable {
945
1100
  if (this._chatSessionIsEmpty) {
946
1101
  this._emptyInputState.set(state, undefined);
947
1102
  }
1103
+ const prevState = this._inputModel?.state.get();
1104
+ logChangesToStateModel(
1105
+ this._inputModel,
1106
+ `_syncInputStateToModel boundInputModelSession=${this._inputModelSessionResource?.toString()} widgetSession=${this._currentSessionKey} mismatch=${this._inputModelSessionResource?.toString() !== this._currentSessionKey}`,
1107
+ state,
1108
+ prevState,
1109
+ this.logService
1110
+ );
948
1111
  this._inputModel?.setState(state);
949
1112
  this._isSyncingToOrFromInputModel = false;
950
1113
  queueMicrotask(() => this.inputActionsToolbar?.relayout());
@@ -955,6 +1118,16 @@ let ChatInputPart = class ChatInputPart extends Disposable {
955
1118
  }
956
1119
  }
957
1120
  setCurrentLanguageModel(model) {
1121
+ const modelDetails = ( this.getModels().map(m => `${m.identifier} (${m.metadata.id})`)).join(", ");
1122
+ const selectedModelStorageKey = this.getSelectedModelStorageKey();
1123
+ const selectedModelIsDefaultStorageKey = this.getSelectedModelIsDefaultStorageKey();
1124
+ logChangesToStateModel(
1125
+ this._inputModel,
1126
+ `setCurrentLanguageModel to ${model.identifier} in ${this._currentSessionKey}, storageKey=${selectedModelStorageKey}, isDefaultKey=${selectedModelIsDefaultStorageKey}, currentSessionType=${this._currentSessionType}, getCurrentSessionType=${this.getCurrentSessionType()}, boundInputModelSession=${this._inputModelSessionResource?.toString()}, modelDetials = ${modelDetails}`,
1127
+ undefined,
1128
+ undefined,
1129
+ this.logService
1130
+ );
958
1131
  this._currentLanguageModel.set(model, undefined);
959
1132
  if (this.cachedWidth) {
960
1133
  this.layout(this.cachedWidth);
@@ -976,6 +1149,18 @@ let ChatInputPart = class ChatInputPart extends Disposable {
976
1149
  checkModelSupported() {
977
1150
  const lm = this._currentLanguageModel.get();
978
1151
  const allModels = this.getAllMergedModels();
1152
+ const willReset = shouldResetModelToDefault(lm, this.getModels(), {
1153
+ location: this.location,
1154
+ currentModeKind: this.currentModeKind,
1155
+ sessionType: this.getCurrentSessionType()
1156
+ }, allModels);
1157
+ logChangesToStateModel(
1158
+ this._inputModel,
1159
+ `[CMS] checkModelSupported lm=${lm?.identifier} mode=${this.currentModeKind} sessionType=${this.getCurrentSessionType()} willReset=${willReset} in ${this._currentSessionKey}`,
1160
+ undefined,
1161
+ this._inputModel?.state.get(),
1162
+ this.logService
1163
+ );
979
1164
  if (shouldResetModelToDefault(lm, this.getModels(), {
980
1165
  location: this.location,
981
1166
  currentModeKind: this.currentModeKind,
@@ -998,6 +1183,13 @@ let ChatInputPart = class ChatInputPart extends Disposable {
998
1183
  }
999
1184
  this._currentModeObservable.set(mode, undefined);
1000
1185
  this._onDidChangeCurrentChatMode.fire();
1186
+ logChangesToStateModel(
1187
+ this._inputModel,
1188
+ `setChatMode2 -> _syncInputStateToModel (mode=${mode.id}, storeSelection=${storeSelection}, currentLanguageModel=${this._currentLanguageModel.get()?.identifier}) in ${this._currentSessionKey}`,
1189
+ undefined,
1190
+ undefined,
1191
+ this.logService
1192
+ );
1001
1193
  this._syncInputStateToModel();
1002
1194
  }
1003
1195
  getAllMergedModels() {
@@ -1027,7 +1219,8 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1027
1219
  getModels() {
1028
1220
  const models = this.getAllMergedModels();
1029
1221
  models.sort((a, b) => a.metadata.name.localeCompare(b.metadata.name));
1030
- return filterModelsForSession(models, this.getCurrentSessionType(), this.currentModeKind, this.location);
1222
+ const sessionFiltered = filterModelsForSession(models, this.getCurrentSessionType(), this.currentModeKind, this.location);
1223
+ return sessionFiltered.filter(m => !this.languageModelsService.isModelHidden(m.identifier));
1031
1224
  }
1032
1225
  getCurrentSessionType() {
1033
1226
  const delegateSessionType = this.options.sessionTypePickerDelegate?.getActiveSessionProvider?.();
@@ -1082,7 +1275,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1082
1275
  if (!sessionResource) {
1083
1276
  return;
1084
1277
  }
1085
- if (!requests || requests.length === 0) {
1278
+ if (!requests || requests.length === 0 || getChatSessionType(sessionResource) !== SessionType.CopilotCLI) {
1086
1279
  return;
1087
1280
  }
1088
1281
  const modeInfo = findLast(requests, req => !!req.modeInfo)?.modeInfo;
@@ -1128,6 +1321,13 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1128
1321
  setCurrentLanguageModelToDefault() {
1129
1322
  const allModels = this.getModels();
1130
1323
  const defaultModel = findDefaultModel(allModels, this.location);
1324
+ logChangesToStateModel(
1325
+ this._inputModel,
1326
+ `[DEFAULT] setCurrentLanguageModelToDefault called (defaultModel=${defaultModel?.identifier}, currentLm=${this._currentLanguageModel.get()?.identifier}) in ${this._currentSessionKey}`,
1327
+ undefined,
1328
+ this._inputModel?.state.get(),
1329
+ this.logService
1330
+ );
1131
1331
  if (defaultModel) {
1132
1332
  this.setCurrentLanguageModel(defaultModel);
1133
1333
  }
@@ -1159,40 +1359,40 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1159
1359
  }
1160
1360
  const mode = this._currentModeObservable.get();
1161
1361
  const modelName = this._currentLanguageModel.get()?.metadata.name;
1162
- const modelInfo = modelName ? ( localize(7535, ", {0}. ", modelName)) : "";
1362
+ const modelInfo = modelName ? ( localize(7677, ", {0}. ", modelName)) : "";
1163
1363
  let modeLabel = "";
1164
1364
  if (!mode.isBuiltin) {
1165
1365
  const mode = this.currentModeObs.get();
1166
- modeLabel = ( localize(7536, "({0}), {1}", mode.label.get(), mode.description.get()));
1366
+ modeLabel = ( localize(7678, "({0}), {1}", mode.label.get(), mode.description.get()));
1167
1367
  } else {
1168
1368
  switch (this.currentModeKind) {
1169
1369
  case ChatModeKind.Agent:
1170
- modeLabel = ( localize(7537, "(Agent), edit files in your workspace."));
1370
+ modeLabel = ( localize(7679, "(Agent), edit files in your workspace."));
1171
1371
  break;
1172
1372
  case ChatModeKind.Edit:
1173
- modeLabel = ( localize(7538, "(Edit), edit files in your workspace."));
1373
+ modeLabel = ( localize(7680, "(Edit), edit files in your workspace."));
1174
1374
  break;
1175
1375
  case ChatModeKind.Ask:
1176
1376
  default:
1177
- modeLabel = ( localize(7539, "(Ask), ask questions or type / for topics."));
1377
+ modeLabel = ( localize(7681, "(Ask), ask questions or type / for topics."));
1178
1378
  break;
1179
1379
  }
1180
1380
  }
1181
1381
  if (verbose) {
1182
1382
  return kbLabel ? ( localize(
1183
- 7540,
1383
+ 7682,
1184
1384
  "Chat Input {0}{1} Press Enter to send out the request. Use {2} for Chat Accessibility Help.",
1185
1385
  modeLabel,
1186
1386
  modelInfo,
1187
1387
  kbLabel
1188
1388
  )) : ( localize(
1189
- 7541,
1389
+ 7683,
1190
1390
  "Chat Input {0}{1} Press Enter to send out the request. Use the Chat Accessibility Help command for more information.",
1191
1391
  modeLabel,
1192
1392
  modelInfo
1193
1393
  ));
1194
1394
  } else {
1195
- return localize(7542, "Chat Input {0}{1}.", modeLabel, modelInfo);
1395
+ return localize(7684, "Chat Input {0}{1}.", modeLabel, modelInfo);
1196
1396
  }
1197
1397
  }
1198
1398
  validateCurrentChatMode() {
@@ -1342,6 +1542,13 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1342
1542
  this._chatSessionIsEmpty = false;
1343
1543
  this._emptyInputState.set(undefined, undefined);
1344
1544
  }
1545
+ logChangesToStateModel(
1546
+ this._inputModel,
1547
+ `[ACCEPT] acceptInput -> attachmentModel.clear() in ${this._currentSessionKey}`,
1548
+ undefined,
1549
+ this._inputModel?.state.get(),
1550
+ this.logService
1551
+ );
1345
1552
  this.attachmentModel.clear();
1346
1553
  this._onDidLoadInputState.fire();
1347
1554
  if (this.accessibilityService.isScreenReaderOptimized() && isMacintosh) {
@@ -1384,8 +1591,14 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1384
1591
  }
1385
1592
  _handleAttachedContextChange() {
1386
1593
  this._hasFileAttachmentContextKey.set(Boolean(this._attachmentModel.attachments.find(a => a.kind === "file")));
1594
+ this._updateInputContentContextKeys();
1387
1595
  this.renderAttachedContext();
1388
1596
  }
1597
+ _updateInputContentContextKeys() {
1598
+ const inputHasText = !!this._inputEditor?.getModel()?.getValue().trim();
1599
+ this.inputEditorHasText.set(inputHasText);
1600
+ this.inputEditorHasSendableContent.set(inputHasText || ( this._attachmentModel.attachments.some(isExplicitFileOrImageVariableEntry)));
1601
+ }
1389
1602
  getOrCreateOptionEmitter(optionGroupId) {
1390
1603
  let emitter = this._chatSessionOptionEmitters.get(optionGroupId);
1391
1604
  if (!emitter) {
@@ -1609,10 +1822,31 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1609
1822
  }
1610
1823
  ensureNotificationWidget() {
1611
1824
  if (!this._notificationWidget.value) {
1612
- this._notificationWidget.value = this.instantiationService.createInstance(ChatInputNotificationWidget);
1825
+ this._notificationWidget.value = this.instantiationService.createInstance(
1826
+ ChatInputNotificationWidget,
1827
+ () => this._currentSessionType ?? this.getCurrentSessionType()
1828
+ );
1613
1829
  this.chatInputNotificationContainer.appendChild(this._notificationWidget.value.domNode);
1614
1830
  }
1615
1831
  }
1832
+ ensureGoalBannerWidget() {
1833
+ if (!this._goalBannerWidget.value) {
1834
+ const widget = ( new ChatGoalBannerWidget());
1835
+ this._register(widget.onDismiss(() => this._onDidDismissGoalBanner.fire()));
1836
+ this._goalBannerWidget.value = widget;
1837
+ this.chatGoalBannerContainer.appendChild(widget.domNode);
1838
+ }
1839
+ return this._goalBannerWidget.value;
1840
+ }
1841
+ showGoalBannerLoading() {
1842
+ this.ensureGoalBannerWidget().setLoading();
1843
+ }
1844
+ setGoalBanner(summary) {
1845
+ this.ensureGoalBannerWidget().setGoal(summary);
1846
+ }
1847
+ clearGoalBanner() {
1848
+ this._goalBannerWidget.value?.clear();
1849
+ }
1616
1850
  showContextUsageDetails() {
1617
1851
  return this.contextUsageWidget?.showDetails() ?? false;
1618
1852
  }
@@ -1673,11 +1907,28 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1673
1907
  }
1674
1908
  this._syncToolConfirmationCarouselForSession();
1675
1909
  const newSessionType = this.getCurrentSessionType();
1676
- if (e.currentSessionResource && newSessionType !== this._currentSessionType) {
1910
+ if (e.currentSessionResource && this._currentSessionType && newSessionType !== this._currentSessionType) {
1911
+ logChangesToStateModel(
1912
+ this._inputModel,
1913
+ `[CVVM].1 onDidChangeViewModel -> session change: ${this._currentSessionType} -> ${newSessionType} in ${this._currentSessionKey}, ${( e.currentSessionResource.toString())}`,
1914
+ undefined,
1915
+ this._inputModel?.state.get(),
1916
+ this.logService
1917
+ );
1677
1918
  this._currentSessionType = newSessionType;
1678
1919
  this.initSelectedModel();
1679
1920
  this.checkModelInSessionPool();
1680
1921
  this.checkModeInSessionPool();
1922
+ this._notificationWidget.value?.rerender();
1923
+ } else if (e.currentSessionResource) {
1924
+ logChangesToStateModel(
1925
+ this._inputModel,
1926
+ `[CVVM].2 onDidChangeViewModel -> session change: ${this._currentSessionType} -> ${newSessionType} in ${this._currentSessionKey}, ${( e.currentSessionResource.toString())}`,
1927
+ undefined,
1928
+ this._inputModel?.state.get(),
1929
+ this.logService
1930
+ );
1931
+ this._currentSessionType = newSessionType;
1681
1932
  }
1682
1933
  this.preselectModelFromSessionHistory();
1683
1934
  }));
@@ -1690,6 +1941,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1690
1941
  ".chat-tool-confirmation-carousel-container@chatToolConfirmationCarouselContainer"
1691
1942
  ),
1692
1943
  h(".chat-input-notification-container@chatInputNotificationContainer"),
1944
+ h(".chat-goal-banner-container@chatGoalBannerContainer"),
1693
1945
  h(".chat-todo-list-widget-container@chatInputTodoListWidgetContainer"),
1694
1946
  h(".chat-artifacts-widget-container@chatArtifactsWidgetContainer"),
1695
1947
  h(".chat-editing-session@chatEditingSessionWidgetContainer"),
@@ -1701,10 +1953,10 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1701
1953
  h(".chat-input-toolbars@inputToolbars")
1702
1954
  ])]
1703
1955
  ),
1704
- h(
1705
- ".chat-secondary-toolbar@secondaryToolbar",
1706
- [h(".chat-context-usage-container@contextUsageWidgetContainer")]
1707
- ),
1956
+ h(".chat-secondary-toolbar@secondaryToolbar", [
1957
+ h(".chat-context-usage-container@contextUsageWidgetContainer"),
1958
+ h(".chat-input-status-container@statusToolbarContainer")
1959
+ ]),
1708
1960
  h(
1709
1961
  ".chat-attachments-container@attachmentsContainer",
1710
1962
  [h(".chat-attached-context@attachedContextContainer")]
@@ -1720,6 +1972,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1720
1972
  ),
1721
1973
  h(".interactive-input-followups@followupsContainer"),
1722
1974
  h(".chat-input-notification-container@chatInputNotificationContainer"),
1975
+ h(".chat-goal-banner-container@chatGoalBannerContainer"),
1723
1976
  h(".chat-todo-list-widget-container@chatInputTodoListWidgetContainer"),
1724
1977
  h(".chat-artifacts-widget-container@chatArtifactsWidgetContainer"),
1725
1978
  h(".chat-editing-session@chatEditingSessionWidgetContainer"),
@@ -1731,10 +1984,10 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1731
1984
  [h(".chat-attached-context@attachedContextContainer")]
1732
1985
  ), h(".chat-editor-container@editorContainer"), h(".chat-input-toolbars@inputToolbars")])]
1733
1986
  ),
1734
- h(
1735
- ".chat-secondary-toolbar@secondaryToolbar",
1736
- [h(".chat-context-usage-container@contextUsageWidgetContainer")]
1737
- )
1987
+ h(".chat-secondary-toolbar@secondaryToolbar", [
1988
+ h(".chat-context-usage-container@contextUsageWidgetContainer"),
1989
+ h(".chat-input-status-container@statusToolbarContainer")
1990
+ ])
1738
1991
  ]);
1739
1992
  }
1740
1993
  this.container = elements.root;
@@ -1765,7 +2018,9 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1765
2018
  this.chatToolConfirmationCarouselContainer = elements.chatToolConfirmationCarouselContainer;
1766
2019
  hide(this.chatToolConfirmationCarouselContainer);
1767
2020
  this.chatInputNotificationContainer = elements.chatInputNotificationContainer;
2021
+ this.chatGoalBannerContainer = elements.chatGoalBannerContainer;
1768
2022
  this.contextUsageWidgetContainer = elements.contextUsageWidgetContainer;
2023
+ this.statusToolbarContainer = elements.statusToolbarContainer;
1769
2024
  if (this.options.isSessionsWindow || this.options.renderStyle === "compact") {
1770
2025
  toolbarsContainer.prepend(this.contextUsageWidgetContainer);
1771
2026
  }
@@ -1824,6 +2079,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1824
2079
  options.autoClosingBrackets = this.configurationService.getValue("editor.autoClosingBrackets");
1825
2080
  options.autoClosingQuotes = this.configurationService.getValue("editor.autoClosingQuotes");
1826
2081
  options.autoSurround = this.configurationService.getValue("editor.autoSurround");
2082
+ options.quickSuggestions = false;
1827
2083
  options.suggest = {
1828
2084
  showIcons: true,
1829
2085
  showSnippets: false,
@@ -1849,7 +2105,8 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1849
2105
  GlyphHoverController.ID,
1850
2106
  DropIntoEditorController.ID,
1851
2107
  CopyPasteController.ID,
1852
- LinkDetector.ID
2108
+ LinkDetector.ID,
2109
+ InlineCompletionsController.ID
1853
2110
  ]));
1854
2111
  this._inputEditor = this._register(
1855
2112
  scopedInstantiationService.createInstance(CodeEditorWidget, this._inputEditorElement, options, editorOptions)
@@ -1877,9 +2134,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1877
2134
  this._layout(this.cachedWidth);
1878
2135
  }
1879
2136
  }
1880
- const model = this._inputEditor.getModel();
1881
- const inputHasText = !!model && model.getValue().trim().length > 0;
1882
- this.inputEditorHasText.set(inputHasText);
2137
+ this._updateInputContentContextKeys();
1883
2138
  this._syncTextDebounced.schedule();
1884
2139
  }));
1885
2140
  this._register(this._inputEditor.onDidContentSizeChange(e => {
@@ -1913,13 +2168,18 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1913
2168
  actionContext: {
1914
2169
  widget
1915
2170
  },
1916
- hideChevrons: derived(
2171
+ compact: derived(
1917
2172
  reader => this._stableInputPartWidth.read(reader) < CHAT_INPUT_PICKER_COLLAPSE_WIDTH
1918
2173
  )
1919
2174
  };
2175
+ const primarySessionPickerOptions = {
2176
+ ...pickerOptions,
2177
+ compact: constObservable(true)
2178
+ };
1920
2179
  const secondaryPickerOptions = {
1921
2180
  ...pickerOptions,
1922
- getOverflowAnchor: () => this.secondaryToolbar.getElement()
2181
+ getOverflowAnchor: () => this.secondaryToolbar.getElement(),
2182
+ compact: constObservable(true)
1923
2183
  };
1924
2184
  this._register(
1925
2185
  addStandardDisposableListener(toolbarsContainer, EventType.CLICK, e => this.inputEditor.focus())
@@ -1952,6 +2212,13 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1952
2212
  if (this.chatPhoneInputPresenter.enabled.get()) {
1953
2213
  if (action.id === OpenModelPickerAction.ID && action instanceof MenuItemAction) {
1954
2214
  if (!this._currentLanguageModel.get()) {
2215
+ logChangesToStateModel(
2216
+ this._inputModel,
2217
+ `actionViewItemProvider[phone]: _currentLanguageModel is undefined at toolbar build, forcing default for ${this._currentSessionKey}`,
2218
+ undefined,
2219
+ undefined,
2220
+ this.logService
2221
+ );
1955
2222
  this.setCurrentLanguageModelToDefault();
1956
2223
  }
1957
2224
  const modelDelegate = this._createModelPickerDelegate();
@@ -1968,6 +2235,13 @@ let ChatInputPart = class ChatInputPart extends Disposable {
1968
2235
  }
1969
2236
  if (action.id === OpenModelPickerAction.ID && action instanceof MenuItemAction) {
1970
2237
  if (!this._currentLanguageModel.get()) {
2238
+ logChangesToStateModel(
2239
+ this._inputModel,
2240
+ `actionViewItemProvider[desktop]: _currentLanguageModel is undefined at toolbar build, forcing default for ${this._currentSessionKey}`,
2241
+ undefined,
2242
+ undefined,
2243
+ this.logService
2244
+ );
1971
2245
  this.setCurrentLanguageModelToDefault();
1972
2246
  }
1973
2247
  const itemDelegate = this._createModelPickerDelegate();
@@ -2006,7 +2280,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2006
2280
  pickerOptions
2007
2281
  );
2008
2282
  } else if (action.id === ChatSessionPrimaryPickerAction.ID && action instanceof MenuItemAction) {
2009
- const widgets = this.createChatSessionPickerWidgets(action, pickerOptions);
2283
+ const widgets = this.createChatSessionPickerWidgets(action, primarySessionPickerOptions);
2010
2284
  if (widgets.length === 0) {
2011
2285
  return ( new HiddenActionViewItem(action));
2012
2286
  }
@@ -2031,7 +2305,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2031
2305
  }
2032
2306
  }));
2033
2307
  this._register(autorun(reader => {
2034
- pickerOptions.hideChevrons.read(reader);
2308
+ pickerOptions.compact.read(reader);
2035
2309
  queueMicrotask(() => this.inputActionsToolbar.relayout());
2036
2310
  }));
2037
2311
  let lastPhoneEnabled = this.chatPhoneInputPresenter.enabled.get();
@@ -2083,17 +2357,15 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2083
2357
  widget
2084
2358
  };
2085
2359
  }
2086
- const agentHostShortPickerIds = ( new Set([
2087
- OpenAgentHostModePickerAction.ID,
2088
- OpenAgentHostAutoApprovePickerAction.ID,
2089
- OpenAgentHostPermissionModePickerAction.ID,
2090
- OpenAgentHostBranchPickerAction.ID,
2091
- OpenAgentHostIsolationPickerAction.ID,
2092
- "sessions.tunnelHost.toggleSharing"
2360
+ const agentHostShortPickerMinWidths = ( new Map([
2361
+ [OpenAgentHostModePickerAction.ID, 22],
2362
+ [OpenAgentHostAutoApprovePickerAction.ID, 22],
2363
+ [OpenAgentHostPermissionModePickerAction.ID, 22],
2364
+ ["sessions.tunnelHost.toggleSharing", 16]
2093
2365
  ]));
2094
2366
  const genericChipsContainer = $$1(".chat-secondary-generic-chips");
2095
2367
  const genericChipsLane = this._register(
2096
- this.instantiationService.createInstance(AgentHostGenericConfigChips, widget, secondaryPickerOptions)
2368
+ this.instantiationService.createInstance(AgentHostGenericConfigChips, widget)
2097
2369
  );
2098
2370
  genericChipsLane.render(genericChipsContainer);
2099
2371
  this.secondaryToolbar = this._register(this.instantiationService.createInstance(
@@ -2112,7 +2384,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2112
2384
  kind: "all",
2113
2385
  minItems: 1,
2114
2386
  actionMinWidth: 48,
2115
- getActionMinWidth: action => ( agentHostShortPickerIds.has(action.id)) ? 22 : undefined
2387
+ getActionMinWidth: action => agentHostShortPickerMinWidths.get(action.id)
2116
2388
  },
2117
2389
  actionViewItemProvider: (action, options) => {
2118
2390
  if ((action.id === OpenSessionTargetPickerAction.ID || action.id === OpenDelegationPickerAction.ID) && action instanceof MenuItemAction) {
@@ -2199,12 +2471,12 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2199
2471
  this.permissionWidgetDisposeListener.clear();
2200
2472
  });
2201
2473
  return widget;
2202
- } else if ((action.id === OpenAgentHostModePickerAction.ID || action.id === OpenAgentHostAutoApprovePickerAction.ID || action.id === OpenAgentHostPermissionModePickerAction.ID || action.id === OpenAgentHostBranchPickerAction.ID || action.id === OpenAgentHostIsolationPickerAction.ID) && action instanceof MenuItemAction) {
2474
+ } else if ((action.id === OpenAgentHostModePickerAction.ID || action.id === OpenAgentHostAutoApprovePickerAction.ID || action.id === OpenAgentHostPermissionModePickerAction.ID) && action instanceof MenuItemAction) {
2203
2475
  if (this.options.isSessionsWindow) {
2204
2476
  return ( new HiddenActionViewItem(action));
2205
2477
  }
2206
- const property = action.id === OpenAgentHostBranchPickerAction.ID ? SessionConfigKey.Branch : action.id === OpenAgentHostIsolationPickerAction.ID ? SessionConfigKey.Isolation : action.id === OpenAgentHostAutoApprovePickerAction.ID ? SessionConfigKey.AutoApprove : action.id === OpenAgentHostPermissionModePickerAction.ID ? ClaudeSessionConfigKey.PermissionMode : SessionConfigKey.Mode;
2207
- const picker = this.instantiationService.createInstance(AgentHostChatInputPicker, widget, property, secondaryPickerOptions);
2478
+ const property = action.id === OpenAgentHostAutoApprovePickerAction.ID ? SessionConfigKey.AutoApprove : action.id === OpenAgentHostPermissionModePickerAction.ID ? ClaudeSessionConfigKey.PermissionMode : SessionConfigKey.Mode;
2479
+ const picker = this.instantiationService.createInstance(AgentHostChatInputPicker, widget, property);
2208
2480
  return ( new AgentHostChatInputPickerActionViewItem(action, picker));
2209
2481
  } else if (action.id === ChatSessionPrimaryPickerAction.ID && action instanceof MenuItemAction) {
2210
2482
  const widgets = this.createChatSessionPickerWidgets(action, secondaryPickerOptions);
@@ -2229,9 +2501,32 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2229
2501
  this.chatSessionPickerContainer = container;
2230
2502
  }
2231
2503
  }));
2504
+ this.statusToolbar = this._register(this.instantiationService.createInstance(
2505
+ MenuWorkbenchToolBar,
2506
+ this.statusToolbarContainer,
2507
+ MenuId.ChatInputStatus,
2508
+ {
2509
+ telemetrySource: this.options.menus.telemetrySource,
2510
+ menuOptions: {
2511
+ shouldForwardArgs: true
2512
+ },
2513
+ hiddenItemStrategy: HiddenItemStrategy.NoHide,
2514
+ hoverDelegate,
2515
+ actionViewItemProvider: (action, _opts) => {
2516
+ if (action instanceof MenuItemAction) {
2517
+ return this.instantiationService.createInstance(ChatInputStatusActionViewItem, action);
2518
+ }
2519
+ return undefined;
2520
+ }
2521
+ }
2522
+ ));
2523
+ this.statusToolbar.getElement().classList.add("chat-input-status-toolbar");
2524
+ this.statusToolbar.context = {
2525
+ widget
2526
+ };
2232
2527
  let inputModel = this.modelService.getModel(this.inputUri);
2233
2528
  if (!inputModel) {
2234
- inputModel = this._register(this.modelService.createModel("", null, this.inputUri, true));
2529
+ inputModel = this._register(this.modelService.createModel("", null, this.inputUri, false));
2235
2530
  }
2236
2531
  this.textModelResolverService.createModelReference(this.inputUri).then(ref => {
2237
2532
  if (this._store.isDisposed) {
@@ -2947,7 +3242,7 @@ let ChatInputPart = class ChatInputPart extends Disposable {
2947
3242
  const button = this._chatEditsActionsDisposables.add(( new ButtonWithIcon(overviewTitle, {
2948
3243
  supportIcons: true,
2949
3244
  secondary: true,
2950
- ariaLabel: ( localize(7543, "Toggle changed files."))
3245
+ ariaLabel: ( localize(7685, "Toggle changed files."))
2951
3246
  })));
2952
3247
  const topLevelStats = derived(reader => {
2953
3248
  const entries = editSessionEntriesObs.read(reader);
@@ -3021,10 +3316,10 @@ let ChatInputPart = class ChatInputPart extends Disposable {
3021
3316
  removed,
3022
3317
  shouldShowEditingSession
3023
3318
  } = topLevelStats.read(reader);
3024
- const buttonLabel = files === 1 ? ( localize(7544, "1 file changed")) : ( localize(7545, "{0} files changed", files));
3319
+ const buttonLabel = files === 1 ? ( localize(7686, "1 file changed")) : ( localize(7687, "{0} files changed", files));
3025
3320
  button.label = buttonLabel;
3026
3321
  button.element.setAttribute("aria-label", ( localize(
3027
- 7546,
3322
+ 7688,
3028
3323
  "{0}, {1} lines added, {2} lines removed",
3029
3324
  buttonLabel,
3030
3325
  added,