@codingame/monaco-vscode-katex-common 31.0.1 → 32.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 (220) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +15 -3
  3. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +6 -5
  4. package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +5 -1
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +45 -14
  6. package/vscode/src/vs/platform/sandbox/common/terminalSandboxService.d.ts +15 -1
  7. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +16 -16
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +15 -10
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +51 -54
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +10 -10
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +11 -11
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +13 -13
  14. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.d.ts +3 -1
  15. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +45 -23
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +13 -7
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +9 -9
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +5 -3
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +4 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +46 -32
  21. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentModel.js +8 -0
  22. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +155 -46
  24. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
  25. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +20 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.d.ts +4 -1
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +37 -14
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +34 -34
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +1 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/media/chatSessionPickerActionItem.css +1 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.d.ts +28 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/tools/chatToolRiskAssessmentService.js +250 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  34. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +14 -11
  35. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatArtifactsWidget.js +10 -10
  36. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  37. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  38. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +7 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +1 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  41. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +7 -3
  43. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +12 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +51 -20
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +3 -3
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +6 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.js +56 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +1 -1
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.d.ts +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/buffers/paragraphBuffer.js +2 -2
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.d.ts +3 -1
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatIncrementalRendering/chatIncrementalRendering.js +4 -0
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +13 -13
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +68 -10
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -8
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.d.ts +58 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPlanReviewPart.js +653 -75
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +28 -10
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +5 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +91 -54
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +7 -5
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +53 -51
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +5 -5
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +11 -11
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +6 -6
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +4 -1
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +42 -22
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +9 -9
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +17 -17
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +2 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +6 -2
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +93 -35
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +5 -0
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatPlanReview.css +169 -27
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +13 -4
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +1 -1
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatToolConfirmationCarousel.css +29 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +1 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +60 -15
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +13 -6
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +3 -3
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMissingSandboxDepsConfirmationSubPart.js +2 -2
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatModifiedFilesConfirmationSubPart.js +15 -8
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +6 -1
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +125 -26
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +2 -1
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +29 -23
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.d.ts +14 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationCarouselPart.js +119 -10
  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/chatToolInvocationPart.js +1 -1
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +5 -5
  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/media/toolRiskBadge.css +77 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.d.ts +38 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/toolRiskBadgeWidget.js +125 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +1 -0
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +132 -59
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +16 -3
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +156 -67
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.d.ts +55 -0
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationService.js +93 -0
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.d.ts +21 -0
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputNotificationWidget.js +133 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +53 -8
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +288 -125
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +23 -2
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +699 -145
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +12 -8
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +12 -11
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.d.ts +62 -0
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatPhoneInputPresenter.js +120 -0
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +5 -5
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatInputNotificationWidget.css +191 -0
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/media/chatPhoneInputPresenter.css +22 -0
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +3 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +9 -25
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +4 -3
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +20 -1
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +89 -108
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +3 -3
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +3 -3
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +521 -9
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +7 -7
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +2 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +19 -19
  136. package/vscode/src/vs/workbench/contrib/chat/common/chatImageExtraction.js +6 -6
  137. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.d.ts +2 -0
  138. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionStorageKeys.js +6 -0
  139. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.d.ts +27 -0
  140. package/vscode/src/vs/workbench/contrib/chat/common/chatPermissionWarnings.js +82 -0
  141. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +3 -0
  142. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +44 -17
  143. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +1 -3
  144. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +3 -46
  145. package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.d.ts → inlineChatAffordanceWidget.d.ts} +1 -1
  146. package/vscode/src/vs/workbench/contrib/inlineChat/browser/{inlineChatEditorAffordance.js → inlineChatAffordanceWidget.js} +6 -6
  147. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +2 -18
  148. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +19 -400
  149. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +4 -9
  150. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +1 -1
  151. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.d.ts +5 -19
  152. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +47 -133
  153. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.d.ts +3 -1
  154. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +103 -25
  155. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +29 -0
  156. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +3 -32
  157. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +39 -92
  158. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  159. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  160. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  161. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/cellOperations.js +2 -2
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/insertCellActions.js +24 -24
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffComponents.js +3 -3
  164. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.js +7 -7
  165. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditor.js +1 -1
  166. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffEditorBrowser.js +5 -5
  167. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/notebookDiffList.js +1 -1
  168. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  169. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  170. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +7 -0
  171. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +99 -32
  172. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +13 -1
  173. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +76 -14
  174. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +4 -3
  175. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +9 -1
  176. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +89 -28
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +1 -1
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -1
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +11 -7
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +3 -1
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +7 -3
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +1 -1
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  184. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +1 -0
  185. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  186. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.d.ts +8 -0
  187. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +11 -2
  188. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.d.ts +20 -0
  189. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineBackgroundDetachRewriter.js +59 -4
  190. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -1
  191. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +24 -3
  192. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +47 -0
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +111 -30
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +60 -3
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +455 -171
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +33 -0
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +82 -0
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.d.ts +31 -0
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxCommandRules.js +49 -0
  200. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.d.ts +18 -0
  201. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxReadAllowList.js +302 -0
  202. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.d.ts +7 -0
  203. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxRuntimeConfigurationPerOperation.js +118 -0
  204. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +34 -4
  205. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +233 -48
  206. package/vscode/src/vs/platform/actions/browser/actionbar.d.ts +0 -16
  207. package/vscode/src/vs/platform/actions/browser/actionbar.js +0 -22
  208. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
  209. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -539
  210. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -29
  211. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -386
  212. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.d.ts +0 -101
  213. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +0 -509
  214. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -130
  215. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +0 -276
  216. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.d.ts +0 -45
  217. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPartWidgets.js +0 -93
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +0 -39
  219. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +0 -617
  220. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +0 -231
@@ -57,7 +57,7 @@ let ChatCollapsibleListContentPart = class ChatCollapsibleListContentPart extend
57
57
  hoverService,
58
58
  configurationService
59
59
  ) {
60
- super(labelOverride ?? (data.length > 1 ? ( localize(6914, "Used {0} references", data.length)) : ( localize(6915, "Used {0} reference", 1))), context, hoverMessage, hoverService, configurationService);
60
+ super(labelOverride ?? (data.length > 1 ? ( localize(7191, "Used {0} references", data.length)) : ( localize(7192, "Used {0} reference", 1))), context, hoverMessage, hoverService, configurationService);
61
61
  this.data = data;
62
62
  this.contentReferencesListPool = contentReferencesListPool;
63
63
  this.openerService = openerService;
@@ -193,55 +193,57 @@ let CollapsibleListPool = class CollapsibleListPool extends Disposable {
193
193
  }));
194
194
  const container = $(".chat-used-context-list");
195
195
  store.add(createFileIconThemableTreeContainerScope(container, this.themeService));
196
- const list = this.instantiationService.createInstance(WorkbenchList, "ChatListRenderer", container, ( new CollapsibleListDelegate()), [
197
- this.instantiationService.createInstance(CollapsibleListRenderer, resourceLabels, this.menuId)
198
- ], {
199
- ...this.listOptions,
200
- alwaysConsumeMouseWheel: false,
201
- accessibilityProvider: {
202
- getAriaLabel: element => {
203
- if (element.kind === "warning") {
204
- return element.content.value;
205
- }
206
- const reference = element.reference;
207
- if (typeof reference === "string") {
208
- return reference;
209
- } else if ("variableName" in reference) {
210
- return reference.variableName;
211
- } else if (URI.isUri(reference)) {
212
- return basename(reference.path);
213
- } else {
214
- return basename(reference.uri.path);
215
- }
216
- },
217
- getWidgetAriaLabel: () => ( localize(6916, "Collapsible Chat References List"))
218
- },
219
- dnd: {
220
- getDragURI: element => getResourceForElement(element)?.toString() ?? null,
221
- getDragLabel: (elements, originalEvent) => {
222
- const uris = coalesce(( elements.map(getResourceForElement)));
223
- if (!uris.length) {
224
- return undefined;
225
- } else if (uris.length === 1) {
226
- return this.labelService.getUriLabel(uris[0], {
227
- relative: true
228
- });
229
- } else {
230
- return `${uris.length}`;
231
- }
196
+ const list = store.add(
197
+ this.instantiationService.createInstance(WorkbenchList, "ChatListRenderer", container, ( new CollapsibleListDelegate()), [
198
+ this.instantiationService.createInstance(CollapsibleListRenderer, resourceLabels, this.menuId)
199
+ ], {
200
+ ...this.listOptions,
201
+ alwaysConsumeMouseWheel: false,
202
+ accessibilityProvider: {
203
+ getAriaLabel: element => {
204
+ if (element.kind === "warning") {
205
+ return element.content.value;
206
+ }
207
+ const reference = element.reference;
208
+ if (typeof reference === "string") {
209
+ return reference;
210
+ } else if ("variableName" in reference) {
211
+ return reference.variableName;
212
+ } else if (URI.isUri(reference)) {
213
+ return basename(reference.path);
214
+ } else {
215
+ return basename(reference.uri.path);
216
+ }
217
+ },
218
+ getWidgetAriaLabel: () => ( localize(7193, "Collapsible Chat References List"))
232
219
  },
233
- dispose: () => {},
234
- onDragOver: () => false,
235
- drop: () => {},
236
- onDragStart: (data, originalEvent) => {
237
- try {
238
- const elements = data.getData();
220
+ dnd: {
221
+ getDragURI: element => getResourceForElement(element)?.toString() ?? null,
222
+ getDragLabel: (elements, originalEvent) => {
239
223
  const uris = coalesce(( elements.map(getResourceForElement)));
240
- this.instantiationService.invokeFunction(accessor => fillEditorsDragData(accessor, uris, originalEvent));
241
- } catch {}
224
+ if (!uris.length) {
225
+ return undefined;
226
+ } else if (uris.length === 1) {
227
+ return this.labelService.getUriLabel(uris[0], {
228
+ relative: true
229
+ });
230
+ } else {
231
+ return `${uris.length}`;
232
+ }
233
+ },
234
+ dispose: () => {},
235
+ onDragOver: () => false,
236
+ drop: () => {},
237
+ onDragStart: (data, originalEvent) => {
238
+ try {
239
+ const elements = data.getData();
240
+ const uris = coalesce(( elements.map(getResourceForElement)));
241
+ this.instantiationService.invokeFunction(accessor => fillEditorsDragData(accessor, uris, originalEvent));
242
+ } catch {}
243
+ }
242
244
  }
243
- }
244
- });
245
+ })
246
+ );
245
247
  return {
246
248
  list,
247
249
  dispose: () => store.dispose()
@@ -402,7 +404,7 @@ let CollapsibleListRenderer = class CollapsibleListRenderer {
402
404
  name: settingId
403
405
  }, {
404
406
  icon: Codicon.settingsGear,
405
- title: ( localize(6917, "Open setting '{0}'", settingId)),
407
+ title: ( localize(7194, "Open setting '{0}'", settingId)),
406
408
  strikethrough: data.excluded,
407
409
  extraClasses
408
410
  });
@@ -447,7 +449,7 @@ let CollapsibleListRenderer = class CollapsibleListRenderer {
447
449
  templateData.addedSpan.textContent = `+${diffMeta.added}`;
448
450
  templateData.removedSpan.textContent = `-${diffMeta.removed}`;
449
451
  templateData.fileDiffsContainer.setAttribute("aria-label", ( localize(
450
- 6918,
452
+ 7195,
451
453
  "{0} lines added, {1} lines removed",
452
454
  diffMeta.added,
453
455
  diffMeta.removed
@@ -528,7 +530,7 @@ registerAction2(class AddToChatAction extends Action2 {
528
530
  super({
529
531
  id: AddToChatAction.id,
530
532
  title: {
531
- ...( localize2(6919, "Add File to Chat"))
533
+ ...( localize2(7196, "Add File to Chat"))
532
534
  },
533
535
  f1: false,
534
536
  menu: [{
@@ -558,7 +560,7 @@ registerAction2(class OpenChatReferenceLinkAction extends Action2 {
558
560
  super({
559
561
  id: OpenChatReferenceLinkAction.id,
560
562
  title: {
561
- ...( localize2(6920, "Copy Link"))
563
+ ...( localize2(7197, "Copy Link"))
562
564
  },
563
565
  f1: false,
564
566
  menu: [{
@@ -188,7 +188,7 @@ class SaveResourcesAction extends Action2 {
188
188
  constructor() {
189
189
  super({
190
190
  id: SaveResourcesAction.ID,
191
- title: ( localize2(6921, "Save...")),
191
+ title: ( localize2(7198, "Save...")),
192
192
  icon: Codicon.cloudDownload,
193
193
  menu: [{
194
194
  id: MenuId.ChatToolOutputResourceToolbar,
@@ -218,14 +218,14 @@ class SaveResourcesAction extends Action2 {
218
218
  await fileService.writeFile(target, contents.value);
219
219
  }
220
220
  } catch (e) {
221
- notificationService.error(( localize(6922, "Failed to save {0}: {1}", basename(part.uri), e)));
221
+ notificationService.error(( localize(7199, "Failed to save {0}: {1}", basename(part.uri), e)));
222
222
  }
223
223
  };
224
224
  const withProgress = async (thenReveal, todo) => {
225
225
  await progressService.withProgress({
226
226
  location: ProgressLocation.Notification,
227
227
  delay: 5_000,
228
- title: ( localize(6923, "Saving resources..."))
228
+ title: ( localize(7200, "Saving resources..."))
229
229
  }, async report => {
230
230
  for (const task of todo) {
231
231
  await task();
@@ -238,7 +238,7 @@ class SaveResourcesAction extends Action2 {
238
238
  if (workspaceContextService.isInsideWorkspace(thenReveal)) {
239
239
  commandService.executeCommand(REVEAL_IN_EXPLORER_COMMAND_ID, thenReveal);
240
240
  } else {
241
- notificationService.info(( localize(6924, "Saved resources to {0}", labelService.getUriLabel(thenReveal))));
241
+ notificationService.info(( localize(7201, "Saved resources to {0}", labelService.getUriLabel(thenReveal))));
242
242
  }
243
243
  };
244
244
  if (context.parts.length === 1) {
@@ -250,7 +250,7 @@ class SaveResourcesAction extends Action2 {
250
250
  await withProgress(uri, [() => savePart(part, false, uri)]);
251
251
  } else {
252
252
  const uris = await fileDialog.showOpenDialog({
253
- title: ( localize(6925, "Pick folder to save resources")),
253
+ title: ( localize(7202, "Pick folder to save resources")),
254
254
  canSelectFiles: false,
255
255
  canSelectFolders: true,
256
256
  canSelectMany: false,
@@ -25,13 +25,13 @@ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/obse
25
25
  var ChatSubagentContentPart_1;
26
26
  registerCss(chatSubagentContent);
27
27
  const MAX_TITLE_LENGTH = 100;
28
- const subagentWorkingMessages = [( localize(6926, "Processing")), ( localize(6927, "Preparing")), ( localize(6928, "Loading")), ( localize(6929, "Analyzing")), ( localize(6930, "Evaluating"))];
28
+ const subagentWorkingMessages = [( localize(7203, "Processing")), ( localize(7204, "Preparing")), ( localize(7205, "Loading")), ( localize(7206, "Analyzing")), ( localize(7207, "Evaluating"))];
29
29
  let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentContentPart extends ChatCollapsibleContentPart {
30
30
  static isParentSubagentTool(toolInvocation) {
31
31
  return toolInvocation.toolSpecificData?.kind === "subagent" && !toolInvocation.subAgentInvocationId;
32
32
  }
33
33
  static extractSubagentInfo(toolInvocation) {
34
- const defaultDescription = ( localize(6931, "Running subagent"));
34
+ const defaultDescription = ( localize(7208, "Running subagent"));
35
35
  if (!ChatSubagentContentPart_1.isParentSubagentTool(toolInvocation)) {
36
36
  return {
37
37
  description: defaultDescription,
@@ -92,7 +92,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
92
92
  prompt,
93
93
  modelName
94
94
  } = ChatSubagentContentPart_1.extractSubagentInfo(toolInvocation);
95
- const rawPrefix = agentName || ( localize(6932, "Subagent"));
95
+ const rawPrefix = agentName || ( localize(7209, "Subagent"));
96
96
  const prefix = rawPrefix.charAt(0).toUpperCase() + rawPrefix.slice(1);
97
97
  const initialTitle = `${prefix}: ${description}`;
98
98
  super(initialTitle, context, undefined, hoverService, configurationService);
@@ -219,7 +219,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
219
219
  if (this.isActive && !this.isInitiallyComplete && !this.hasToolsWaitingForConfirmation) {
220
220
  this.showWorkingSpinner();
221
221
  }
222
- const resizeObserver = this._register(( new DisposableResizeObserver(() => this.layoutScheduler.schedule())));
222
+ const resizeObserver = this._register(( new DisposableResizeObserver("ChatSubagentContentPart.layout", () => this.layoutScheduler.schedule())));
223
223
  this._register(resizeObserver.observe(this.wrapper));
224
224
  return this.wrapper;
225
225
  }
@@ -239,7 +239,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
239
239
  return;
240
240
  }
241
241
  const lines = this.prompt.split("\n");
242
- const rawFirstLine = lines[0] || ( localize(6933, "Prompt"));
242
+ const rawFirstLine = lines[0] || ( localize(7210, "Prompt"));
243
243
  const restOfLines = lines.slice(1).join("\n").trim();
244
244
  const titleContent = rcut(rawFirstLine, MAX_TITLE_LENGTH);
245
245
  const wasTruncated = rawFirstLine.length > MAX_TITLE_LENGTH;
@@ -287,7 +287,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
287
287
  if (!this._isDefaultDescription && this.description) {
288
288
  return this.description;
289
289
  }
290
- return localize(6932, "Subagent");
290
+ return localize(7209, "Subagent");
291
291
  }
292
292
  markAsInactive() {
293
293
  this.isActive = false;
@@ -298,7 +298,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
298
298
  this.removeWorkingSpinner();
299
299
  this.hideConfirmationPlaceholder();
300
300
  if (this._isDefaultDescription) {
301
- this.description = ( localize(6934, "Ran subagent"));
301
+ this.description = ( localize(7211, "Ran subagent"));
302
302
  }
303
303
  this.finalizeTitle();
304
304
  this.setExpanded(false);
@@ -310,7 +310,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
310
310
  }
311
311
  }
312
312
  updateTitle() {
313
- const rawName = this.agentName || ( localize(6932, "Subagent"));
313
+ const rawName = this.agentName || ( localize(7209, "Subagent"));
314
314
  const prefix = rawName.charAt(0).toUpperCase() + rawName.slice(1);
315
315
  const shimmerText = `${prefix}: ${this.description}`;
316
316
  const toolCallText = this.currentRunningToolMessage && this.isActive ? ` \u2014 ${this.currentRunningToolMessage}` : ``;
@@ -371,7 +371,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
371
371
  return;
372
372
  }
373
373
  this._hoverDisposable.value = this.hoverService.setupDelayedHover(this._collapseButton.element, {
374
- content: ( localize(6935, "Model: {0}", this.modelName))
374
+ content: ( localize(7212, "Model: {0}", this.modelName))
375
375
  });
376
376
  }
377
377
  trackToolState(toolInvocation) {
@@ -425,7 +425,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
425
425
  }
426
426
  getConfirmationPlaceholderText() {
427
427
  const count = this.toolsWaitingForCarouselConfirmation;
428
- return count === 1 ? ( localize(6936, "1 pending confirmation")) : ( localize(6937, "{0} pending confirmations", count));
428
+ return count === 1 ? ( localize(7213, "1 pending confirmation")) : ( localize(7214, "{0} pending confirmations", count));
429
429
  }
430
430
  updateConfirmationPlaceholderLabel() {
431
431
  if (this._confirmationPlaceholderLabel) {
@@ -630,7 +630,7 @@ let ChatSubagentContentPart = ChatSubagentContentPart_1 = class ChatSubagentCont
630
630
  }
631
631
  }
632
632
  appendHookItem(factory, hookPart) {
633
- const hookMessage = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(6938, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(6939, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(6940, "Warning for {0}", hookPart.toolDisplayName)) : ( localize(6941, "Hook warning")));
633
+ const hookMessage = hookPart.stopReason ? (hookPart.toolDisplayName ? ( localize(7215, "Blocked {0}", hookPart.toolDisplayName)) : ( localize(7216, "Blocked by hook"))) : (hookPart.toolDisplayName ? ( localize(7217, "Warning for {0}", hookPart.toolDisplayName)) : ( localize(7218, "Hook warning")));
634
634
  this.currentRunningToolMessage = hookMessage;
635
635
  this.updateTitle();
636
636
  if (this.isExpanded() || this.hasExpandedOnce) {
@@ -53,8 +53,8 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
53
53
  return;
54
54
  }
55
55
  this._currentMode = mode;
56
- const modeName = mode.name.get() || mode.label.get() || ( localize(6942, "current mode"));
57
- this.titleElement.textContent = ( localize(6943, "Proceed from {0}", modeName));
56
+ const modeName = mode.name.get() || mode.label.get() || ( localize(7219, "current mode"));
57
+ this.titleElement.textContent = ( localize(7220, "Proceed from {0}", modeName));
58
58
  const childrenToRemove = [];
59
59
  for (let i = 1; i < this.promptsContainer.children.length; i++) {
60
60
  childrenToRemove.push(this.promptsContainer.children[i]);
@@ -91,7 +91,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
91
91
  const button = $(".chat-welcome-view-suggested-prompt");
92
92
  button.setAttribute("tabindex", "0");
93
93
  button.setAttribute("role", "button");
94
- button.setAttribute("aria-label", ( localize(6944, "{0}", handoff.label)));
94
+ button.setAttribute("aria-label", ( localize(7221, "{0}", handoff.label)));
95
95
  const titleElement = append(button, $(".chat-welcome-view-suggested-prompt-title"));
96
96
  titleElement.textContent = handoff.label;
97
97
  const showContinueOn = handoff.showContinueOn ?? true;
@@ -112,7 +112,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
112
112
  const dropdownContainer = append(button, $(".chat-suggest-next-dropdown"));
113
113
  dropdownContainer.setAttribute("tabindex", "0");
114
114
  dropdownContainer.setAttribute("role", "button");
115
- dropdownContainer.setAttribute("aria-label", ( localize(6945, "More options for {0}", handoff.label)));
115
+ dropdownContainer.setAttribute("aria-label", ( localize(7222, "More options for {0}", handoff.label)));
116
116
  dropdownContainer.setAttribute("aria-haspopup", "true");
117
117
  const separator = append(dropdownContainer, $(".chat-suggest-next-separator"));
118
118
  separator.setAttribute("aria-hidden", "true");
@@ -127,7 +127,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
127
127
  const name = getAgentSessionProviderName(provider);
128
128
  return (new Action(
129
129
  contrib.type,
130
- localize(6946, "Continue in {0}", name),
130
+ localize(7223, "Continue in {0}", name),
131
131
  ThemeIcon.isThemeIcon(icon) ? ThemeIcon.asClassName(icon) : undefined,
132
132
  true,
133
133
  () => {
@@ -197,7 +197,7 @@ let ChatSuggestNextWidget = class ChatSuggestNextWidget extends Disposable {
197
197
  const currentHandoffs = this._currentMode?.handOffs?.get();
198
198
  return currentHandoffs?.find(h => h.label === handoffLabel) ?? handoff;
199
199
  };
200
- const label = ( localize(6947, "Start with Autopilot"));
200
+ const label = ( localize(7224, "Start with Autopilot"));
201
201
  const button = $(".chat-welcome-view-suggested-prompt");
202
202
  button.setAttribute("tabindex", "0");
203
203
  button.setAttribute("role", "button");
@@ -39,7 +39,7 @@ let ChatTextEditContentPart = class ChatTextEditContentPart extends Disposable {
39
39
  this.domNode = $(
40
40
  ".interactive-edits-summary",
41
41
  undefined,
42
- !element.isComplete ? "" : element.isCanceled ? ( localize(6948, "Making changes was aborted.")) : ( localize(6949, "Made changes."))
42
+ !element.isComplete ? "" : element.isCanceled ? ( localize(7225, "Making changes was aborted.")) : ( localize(7226, "Made changes."))
43
43
  );
44
44
  } else {
45
45
  this.domNode = $("div");
@@ -4,6 +4,7 @@ import { IChatRendererContent } from "@codingame/monaco-vscode-api/vscode/vs/wor
4
4
  import { ChatTreeItem } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chat";
5
5
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
6
6
  import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
7
+ import { IAccessibilityService } from "@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service";
7
8
  import { IMarkdownRenderer } from "@codingame/monaco-vscode-api/vscode/vs/platform/markdown/browser/markdownRenderer";
8
9
  import { ChatCollapsibleContentPart } from "./chatCollapsibleContentPart.js";
9
10
  import { ThemeIcon } from "@codingame/monaco-vscode-api/vscode/vs/base/common/themables";
@@ -17,6 +18,8 @@ import { IEditSessionDiffStats } from "@codingame/monaco-vscode-api/vscode/vs/wo
17
18
  export declare function getToolInvocationIcon(toolId: string, registeredIcon?: ThemeIcon): ThemeIcon;
18
19
  export declare function createThinkingIcon(icon: ThemeIcon): HTMLElement;
19
20
  export declare const defaultThinkingMessages: string[];
21
+ /** Returns an easter-egg message ~1 in {@link FUN_WORKING_MESSAGE_RATE}, else `undefined`. */
22
+ export declare function maybePickFunWorkingMessage(): string | undefined;
20
23
  /**
21
24
  * Builds a phrase pool from defaults and user-configured custom phrases.
22
25
  * In 'replace' mode, only custom phrases are used; in 'append' mode (default),
@@ -84,7 +87,7 @@ export declare class ChatThinkingContentPart extends ChatCollapsibleContentPart
84
87
  private _aggregatedDiff;
85
88
  get aggregatedDiff(): IEditSessionDiffStats;
86
89
  private getRandomWorkingMessage;
87
- constructor(content: IChatThinkingPart, context: IChatContentPartRenderContext, chatContentMarkdownRenderer: IMarkdownRenderer, streamingCompleted: boolean, instantiationService: IInstantiationService, configurationService: IConfigurationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, languageModelsService: ILanguageModelsService, hoverService: IHoverService, storageService: IStorageService);
90
+ constructor(content: IChatThinkingPart, context: IChatContentPartRenderContext, chatContentMarkdownRenderer: IMarkdownRenderer, streamingCompleted: boolean, instantiationService: IInstantiationService, configurationService: IConfigurationService, chatMarkdownAnchorService: IChatMarkdownAnchorService, languageModelsService: ILanguageModelsService, hoverService: IHoverService, storageService: IStorageService, accessibilityService: IAccessibilityService);
88
91
  protected shouldInitEarly(): boolean;
89
92
  protected initContent(): HTMLElement;
90
93
  private handleScroll;
@@ -9,6 +9,7 @@ import { IChatToolInvocation } from '@codingame/monaco-vscode-api/vscode/vs/work
9
9
  import { ChatConfiguration, ThinkingDisplayMode } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
10
10
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
11
11
  import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
12
+ import { IAccessibilityService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibility/common/accessibility.service';
12
13
  import { AccessibilityWorkbenchSettingId } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/accessibility/browser/accessibilityConfiguration';
13
14
  import { MarkdownString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/htmlContent';
14
15
  import { extractCodeblockUrisFromText } from '../../../common/widget/annotations.js';
@@ -91,9 +92,20 @@ var WorkingMessageCategory;
91
92
  WorkingMessageCategory["Terminal"] = "terminal";
92
93
  WorkingMessageCategory["Tool"] = "tool";
93
94
  })(WorkingMessageCategory || (WorkingMessageCategory = {}));
94
- const defaultThinkingMessages = [( localize(6950, "Thinking")), ( localize(6951, "Reasoning")), ( localize(6952, "Considering")), ( localize(6953, "Analyzing")), ( localize(6954, "Evaluating")), ( localize(6955, "Working"))];
95
- const terminalMessages = [( localize(6956, "Executing")), ( localize(6957, "Running")), ( localize(6958, "Processing"))];
96
- const toolMessages = [( localize(6959, "Processing")), ( localize(6960, "Preparing")), ( localize(6961, "Loading")), ( localize(6962, "Analyzing")), ( localize(6963, "Evaluating"))];
95
+ const defaultThinkingMessages = [( localize(7227, "Thinking")), ( localize(7228, "Reasoning")), ( localize(7229, "Considering")), ( localize(7230, "Analyzing")), ( localize(7231, "Evaluating")), ( localize(7232, "Working"))];
96
+ const terminalMessages = [( localize(7233, "Executing")), ( localize(7234, "Running")), ( localize(7235, "Processing"))];
97
+ const toolMessages = [( localize(7236, "Processing")), ( localize(7237, "Preparing")), ( localize(7238, "Loading")), ( localize(7239, "Analyzing")), ( localize(7240, "Evaluating"))];
98
+ const funWorkingMessages = [(
99
+ localize(7241, "Bribing the hamster")), ( localize(7242, "Reticulating splines")), ( localize(7243, "Untangling the spaghetti")), (
100
+ localize(7244, "Mining diamonds")), (
101
+ localize(7245, "Summoning Clippy"))];
102
+ const FUN_WORKING_MESSAGE_RATE = 100;
103
+ function maybePickFunWorkingMessage() {
104
+ if (Math.floor(Math.random() * FUN_WORKING_MESSAGE_RATE) === 0) {
105
+ return funWorkingMessages[Math.floor(Math.random() * funWorkingMessages.length)];
106
+ }
107
+ return undefined;
108
+ }
97
109
  function buildPhrasePool(defaults, configurationService) {
98
110
  const config = configurationService.getValue(ChatConfiguration.ThinkingPhrases);
99
111
  const customPhrases = Array.isArray(config?.phrases) ? ( config.phrases.filter(phrase => typeof phrase === "string").map(phrase => phrase.trim())).filter(phrase => phrase.length > 0) : [];
@@ -112,6 +124,10 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
112
124
  return this._aggregatedDiff;
113
125
  }
114
126
  getRandomWorkingMessage(category = WorkingMessageCategory.Tool) {
127
+ const fun = maybePickFunWorkingMessage();
128
+ if (fun) {
129
+ return fun;
130
+ }
115
131
  let pool = this.availableMessagesByCategory.get(category);
116
132
  if (!pool || pool.length === 0) {
117
133
  let defaults;
@@ -143,10 +159,11 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
143
159
  chatMarkdownAnchorService,
144
160
  languageModelsService,
145
161
  hoverService,
146
- storageService
162
+ storageService,
163
+ accessibilityService
147
164
  ) {
148
165
  const initialText = extractTextFromPart(content);
149
- const extractedTitle = extractTitleFromThinkingContent(initialText) ?? ( localize(6964, "Thinking"));
166
+ const extractedTitle = extractTitleFromThinkingContent(initialText) ?? ( localize(7246, "Thinking"));
150
167
  super(extractedTitle, context, undefined, hoverService, configurationService);
151
168
  this.chatContentMarkdownRenderer = chatContentMarkdownRenderer;
152
169
  this.streamingCompleted = streamingCompleted;
@@ -157,8 +174,8 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
157
174
  this.storageService = storageService;
158
175
  this._onDidChangeHeight = this._register(( new Emitter()));
159
176
  this._asyncRenderCallback = () => this._onDidChangeHeight.fire();
160
- this.defaultTitle = ( localize(6965, "Thinking"));
161
- this.workingTitle = ( localize(6966, "Working"));
177
+ this.defaultTitle = ( localize(7247, "Thinking"));
178
+ this.workingTitle = ( localize(7248, "Working"));
162
179
  this._markdownResult = this._register(( new MutableDisposable()));
163
180
  this.fixedScrollingMode = false;
164
181
  this.autoScrollEnabled = true;
@@ -190,7 +207,7 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
190
207
  this.id = content.id;
191
208
  this.content = content;
192
209
  this.allThinkingParts.push(content);
193
- this.showProgressDetails = this.configurationService.getValue(ChatConfiguration.ChatPersistentProgressEnabled) !== false;
210
+ this.showProgressDetails = this.configurationService.getValue(ChatConfiguration.ChatPersistentProgressEnabled) !== false && (this.configurationService.getValue(ChatConfiguration.ProgressBorder) !== true || accessibilityService.isMotionReduced());
194
211
  const configuredMode = this.configurationService.getValue("chat.agent.thinkingStyle") ?? ThinkingDisplayMode.Collapsed;
195
212
  this.fixedScrollingMode = configuredMode === ThinkingDisplayMode.FixedScrolling;
196
213
  this.currentTitle = extractedTitle;
@@ -203,7 +220,7 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
203
220
  this.appendedItemCount++;
204
221
  }
205
222
  if (this.configurationService.getValue(AccessibilityWorkbenchSettingId.VerboseChatProgressUpdates)) {
206
- alert(( localize(6967, "Thinking")));
223
+ alert(( localize(7249, "Thinking")));
207
224
  }
208
225
  if (configuredMode === ThinkingDisplayMode.Collapsed) {
209
226
  this.setExpanded(false);
@@ -355,7 +372,7 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
355
372
  pendingMutationRefresh?.dispose();
356
373
  }
357
374
  });
358
- this.childResizeObserver = this._register(( new DisposableResizeObserver(() => {
375
+ this.childResizeObserver = this._register(( new DisposableResizeObserver("ChatThinkingContentPart.child", () => {
359
376
  if (this.streamingCompleted || !this.domNode.classList.contains("chat-used-context-collapsed")) {
360
377
  return;
361
378
  }
@@ -367,7 +384,7 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
367
384
  if (this.workingSpinnerElement) {
368
385
  this._register(this.childResizeObserver.observe(this.workingSpinnerElement));
369
386
  }
370
- const wrapperResizeObserver = this._register(( new DisposableResizeObserver(entries => {
387
+ const wrapperResizeObserver = this._register(( new DisposableResizeObserver("ChatThinkingContentPart.wrapper", entries => {
371
388
  if (entries[0]) {
372
389
  this.lastKnownContentHeight = this.wrapper.scrollHeight;
373
390
  if (!this.streamingCompleted && this.domNode.classList.contains("chat-used-context-collapsed")) {
@@ -563,9 +580,9 @@ let ChatThinkingContentPart = ChatThinkingContentPart_1 = class ChatThinkingCont
563
580
  diffContainer.appendChild($("span.label-added", {}, `+${added}`));
564
581
  diffContainer.appendChild($("span.label-removed", {}, `-${removed}`));
565
582
  labelElement.appendChild(diffContainer);
566
- const insertionsFragment = added === 1 ? ( localize(6968, "1 insertion")) : ( localize(6969, "{0} insertions", added));
567
- const deletionsFragment = removed === 1 ? ( localize(6970, "1 deletion")) : ( localize(6971, "{0} deletions", removed));
568
- this._collapseButton.element.ariaLabel = ( localize(6972, "{0}, {1}, {2}", title, insertionsFragment, deletionsFragment));
583
+ const insertionsFragment = added === 1 ? ( localize(7250, "1 insertion")) : ( localize(7251, "{0} insertions", added));
584
+ const deletionsFragment = removed === 1 ? ( localize(7252, "1 deletion")) : ( localize(7253, "{0} deletions", removed));
585
+ this._collapseButton.element.ariaLabel = ( localize(7254, "{0}, {1}, {2}", title, insertionsFragment, deletionsFragment));
569
586
  } else {
570
587
  this._collapseButton.element.ariaLabel = title;
571
588
  }
@@ -1053,7 +1070,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1053
1070
  }
1054
1071
  }
1055
1072
  setFallbackTitle() {
1056
- const finalLabel = this.appendedItemCount > 0 ? this.appendedItemCount === 1 ? ( localize(6973, "Finished with 1 step")) : ( localize(6974, "Finished with {0} steps", this.appendedItemCount)) : ( localize(6975, "Finished Working"));
1073
+ const finalLabel = this.appendedItemCount > 0 ? this.appendedItemCount === 1 ? ( localize(7255, "Finished with 1 step")) : ( localize(7256, "Finished with {0} steps", this.appendedItemCount)) : ( localize(7257, "Finished Working"));
1057
1074
  this.currentTitle = finalLabel;
1058
1075
  if (this.wrapper) {
1059
1076
  this.wrapper.classList.remove("chat-thinking-streaming");
@@ -1276,7 +1293,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1276
1293
  const message = typeof toolInvocationOrMarkdown.invocationMessage === "string" ? toolInvocationOrMarkdown.invocationMessage : toolInvocationOrMarkdown.invocationMessage.value;
1277
1294
  const isStreamingEditTool = toolInvocationOrMarkdown.kind === "toolInvocation" && IChatToolInvocation.isStreaming(toolInvocationOrMarkdown) && isGenericEditToolId(toolInvocationOrMarkdown.toolId);
1278
1295
  if (isStreamingEditTool) {
1279
- toolCallLabel = ( localize(6976, "Editing files"));
1296
+ toolCallLabel = ( localize(7258, "Editing files"));
1280
1297
  } else {
1281
1298
  toolCallLabel = message;
1282
1299
  }
@@ -1395,9 +1412,9 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1395
1412
  const codeblockInfo = extractCodeblockUrisFromText(toolInvocationOrMarkdown.content.value);
1396
1413
  if (codeblockInfo?.uri) {
1397
1414
  const filename = basename(codeblockInfo.uri);
1398
- toolCallLabel = ( localize(6977, "Edited {0}", filename));
1415
+ toolCallLabel = ( localize(7259, "Edited {0}", filename));
1399
1416
  } else {
1400
- toolCallLabel = ( localize(6978, "Edited file"));
1417
+ toolCallLabel = ( localize(7260, "Edited file"));
1401
1418
  }
1402
1419
  } else {
1403
1420
  toolCallLabel = toolInvocationId;
@@ -1441,10 +1458,13 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1441
1458
  const itemWrapper = $(".chat-thinking-tool-wrapper");
1442
1459
  const isMarkdownEdit = toolInvocationOrMarkdown?.kind === "markdownContent";
1443
1460
  const isTerminalTool = toolInvocationOrMarkdown && (toolInvocationOrMarkdown.kind === "toolInvocation" || toolInvocationOrMarkdown.kind === "toolInvocationSerialized") && toolInvocationOrMarkdown.toolSpecificData?.kind === "terminal";
1461
+ const isSearchTool = toolInvocationOrMarkdown && (toolInvocationOrMarkdown.kind === "toolInvocation" || toolInvocationOrMarkdown.kind === "toolInvocationSerialized") && toolInvocationOrMarkdown.toolSpecificData?.kind === "search";
1444
1462
  const toolInvocationIcon = toolInvocationOrMarkdown && (toolInvocationOrMarkdown.kind === "toolInvocation" || toolInvocationOrMarkdown.kind === "toolInvocationSerialized") ? toolInvocationOrMarkdown.icon : undefined;
1445
1463
  let icon;
1446
1464
  if (isMarkdownEdit) {
1447
1465
  icon = Codicon.pencil;
1466
+ } else if (isSearchTool) {
1467
+ icon = Codicon.search;
1448
1468
  } else if (isTerminalTool) {
1449
1469
  const terminalData = toolInvocationOrMarkdown.toolSpecificData;
1450
1470
  const exitCode = terminalData?.terminalCommandState?.exitCode;
@@ -1583,7 +1603,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1583
1603
  return;
1584
1604
  }
1585
1605
  this.lastExtractedTitle = title;
1586
- const thinkingLabel = ( localize(6979, "{0}: {1}", this.defaultTitle, title));
1606
+ const thinkingLabel = ( localize(7261, "{0}: {1}", this.defaultTitle, title));
1587
1607
  this.currentTitle = thinkingLabel;
1588
1608
  if (!this._collapseButton) {
1589
1609
  return;
@@ -1594,7 +1614,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1594
1614
  this.titleShimmerSpan = $("span.chat-thinking-title-shimmer");
1595
1615
  labelElement.appendChild(this.titleShimmerSpan);
1596
1616
  }
1597
- this.titleShimmerSpan.textContent = ( localize(6980, "{0}: ", this.defaultTitle));
1617
+ this.titleShimmerSpan.textContent = ( localize(7262, "{0}: ", this.defaultTitle));
1598
1618
  this._titleDetailRendered.clear();
1599
1619
  const result = this.chatContentMarkdownRenderer.render(( new MarkdownString(title)));
1600
1620
  result.element.classList.add("collapsible-title-content", "chat-thinking-title-detail");
@@ -1639,6 +1659,6 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks):
1639
1659
  super.dispose();
1640
1660
  }
1641
1661
  };
1642
- ChatThinkingContentPart = ChatThinkingContentPart_1 = ( __decorate([( __param(4, IInstantiationService)), ( __param(5, IConfigurationService)), ( __param(6, IChatMarkdownAnchorService)), ( __param(7, ILanguageModelsService)), ( __param(8, IHoverService)), ( __param(9, IStorageService))], ChatThinkingContentPart));
1662
+ ChatThinkingContentPart = ChatThinkingContentPart_1 = ( __decorate([( __param(4, IInstantiationService)), ( __param(5, IConfigurationService)), ( __param(6, IChatMarkdownAnchorService)), ( __param(7, ILanguageModelsService)), ( __param(8, IHoverService)), ( __param(9, IStorageService)), ( __param(10, IAccessibilityService))], ChatThinkingContentPart));
1643
1663
 
1644
- export { ChatThinkingContentPart, buildPhrasePool, createThinkingIcon, defaultThinkingMessages, getToolInvocationIcon };
1664
+ export { ChatThinkingContentPart, buildPhrasePool, createThinkingIcon, defaultThinkingMessages, getToolInvocationIcon, maybePickFunWorkingMessage };
@@ -57,7 +57,7 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
57
57
  this.domNode = $(".chat-tip-widget");
58
58
  this.domNode.tabIndex = 0;
59
59
  this.domNode.setAttribute("role", "region");
60
- this.domNode.setAttribute("aria-roledescription", ( localize(6981, "tip")));
60
+ this.domNode.setAttribute("aria-roledescription", ( localize(7263, "tip")));
61
61
  this._inChatTipContextKey = ChatContextKeys.inChatTip.bindTo(this._contextKeyService);
62
62
  this._multipleChatTipsContextKey = ChatContextKeys.multipleChatTips.bindTo(this._contextKeyService);
63
63
  const focusTracker = this._register(trackFocus(this.domNode));
@@ -119,9 +119,9 @@ let ChatTipContentPart = class ChatTipContentPart extends Disposable {
119
119
  }
120
120
  });
121
121
  this.domNode.appendChild(toolbarContainer);
122
- const textContent = markdownContent.element.textContent ?? ( localize(6982, "Chat tip"));
122
+ const textContent = markdownContent.element.textContent ?? ( localize(7264, "Chat tip"));
123
123
  const hasLink = /\[.*?\]\(.*?\)/.test(tip.content.value);
124
- const ariaLabel = hasLink ? ( localize(6983, "{0} Tab to reach the action.", textContent)) : textContent;
124
+ const ariaLabel = hasLink ? ( localize(7265, "{0} Tab to reach the action.", textContent)) : textContent;
125
125
  this.domNode.setAttribute("aria-label", ariaLabel);
126
126
  }
127
127
  async _handleTipAction(link, mdStr) {
@@ -146,7 +146,7 @@ registerAction2(class PreviousTipAction extends Action2 {
146
146
  constructor() {
147
147
  super({
148
148
  id: "workbench.action.chat.previousTip",
149
- title: ( localize2(6984, "Previous tip")),
149
+ title: ( localize2(7266, "Previous tip")),
150
150
  icon: Codicon.chevronLeft,
151
151
  precondition: ChatContextKeys.multipleChatTips,
152
152
  f1: false,
@@ -166,7 +166,7 @@ registerAction2(class NextTipAction extends Action2 {
166
166
  constructor() {
167
167
  super({
168
168
  id: "workbench.action.chat.nextTip",
169
- title: ( localize2(6985, "Next tip")),
169
+ title: ( localize2(7267, "Next tip")),
170
170
  icon: Codicon.chevronRight,
171
171
  precondition: ChatContextKeys.multipleChatTips,
172
172
  f1: false,
@@ -186,7 +186,7 @@ registerAction2(class DismissTipToolbarAction extends Action2 {
186
186
  constructor() {
187
187
  super({
188
188
  id: "workbench.action.chat.dismissTipToolbar",
189
- title: ( localize2(6986, "Dismiss tip")),
189
+ title: ( localize2(7268, "Dismiss tip")),
190
190
  icon: Codicon.check,
191
191
  f1: false,
192
192
  menu: [{
@@ -204,7 +204,7 @@ registerAction2(class DismissTipAction extends Action2 {
204
204
  constructor() {
205
205
  super({
206
206
  id: "workbench.action.chat.dismissTip",
207
- title: ( localize2(6987, "Dismiss this tip")),
207
+ title: ( localize2(7269, "Dismiss this tip")),
208
208
  f1: false,
209
209
  menu: [{
210
210
  id: MenuId.ChatTipContext,
@@ -221,7 +221,7 @@ registerAction2(class DisableTipsAction extends Action2 {
221
221
  constructor() {
222
222
  super({
223
223
  id: "workbench.action.chat.disableTips",
224
- title: ( localize2(6988, "Disable tips")),
224
+ title: ( localize2(7270, "Disable tips")),
225
225
  icon: Codicon.bellSlash,
226
226
  f1: false,
227
227
  menu: [{
@@ -246,7 +246,7 @@ registerAction2(class ResetDismissedTipsAction extends Action2 {
246
246
  constructor() {
247
247
  super({
248
248
  id: "workbench.action.chat.resetDismissedTips",
249
- title: ( localize2(6989, "Reset Dismissed Tips")),
249
+ title: ( localize2(7271, "Reset Dismissed Tips")),
250
250
  f1: true,
251
251
  precondition: ChatContextKeys.enabled
252
252
  });