@codingame/monaco-vscode-katex-common 26.2.2 → 28.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 (230) hide show
  1. package/package.json +2 -2
  2. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.d.ts +10 -4
  3. package/vscode/src/vs/platform/actionWidget/browser/actionWidgetDropdown.js +37 -11
  4. package/vscode/src/vs/platform/actions/browser/buttonbar.d.ts +3 -0
  5. package/vscode/src/vs/platform/actions/browser/buttonbar.js +15 -4
  6. package/vscode/src/vs/platform/mcp/common/modelContextProtocolApps.d.ts +576 -0
  7. package/vscode/src/vs/{workbench/contrib → platform}/mcp/common/modelContextProtocolApps.js +1 -0
  8. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityProvider.js +15 -15
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.d.ts +5 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContinueInAction.js +176 -17
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatElicitationActions.js +1 -1
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.d.ts +5 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatExecuteActions.js +127 -64
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.d.ts +1 -0
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTitleActions.js +12 -11
  16. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.d.ts +26 -0
  17. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionApprovalModel.js +106 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionHoverWidget.js +9 -9
  19. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +14 -0
  20. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +105 -29
  21. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +13 -1
  22. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +69 -43
  23. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +2 -2
  24. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +35 -7
  25. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +187 -78
  26. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +138 -32
  27. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.d.ts +23 -6
  28. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentWidgets.js +394 -87
  29. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.d.ts +1 -0
  30. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatImplicitContext.js +28 -13
  31. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/implicitContextAttachment.js +38 -19
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.js +113 -116
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +16 -15
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +2 -2
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +8 -8
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationWidget.js +14 -14
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +5 -5
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingExplanationWidget.css +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessionPickerActionItem.js +2 -1
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +30 -11
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +250 -132
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/searchableOptionPickerActionItem.js +4 -4
  43. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.d.ts +1 -16
  44. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewWelcomeController.js +4 -110
  45. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatAgentHover.js +2 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.d.ts +1 -1
  47. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAgentCommandContentPart.js +1 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.d.ts +1 -1
  49. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAnonymousRateLimitedPart.js +2 -2
  50. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.d.ts +3 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatAttachmentsContentPart.js +9 -4
  52. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.d.ts +2 -4
  53. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatChangesSummaryPart.js +7 -10
  54. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCodeCitationContentPart.js +1 -1
  56. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.d.ts +4 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleContentPart.js +22 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.d.ts +3 -2
  59. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCollapsibleMarkdownContentPart.js +11 -3
  60. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.d.ts +1 -1
  61. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatCommandContentPart.js +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.d.ts +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationContentPart.js +2 -2
  64. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.d.ts +1 -1
  65. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatConfirmationWidget.js +1 -1
  66. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.d.ts +59 -0
  67. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatContentParts.js +29 -0
  68. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.d.ts +0 -2
  69. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDiffBlockPart.js +0 -6
  70. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.d.ts +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatDisabledClaudeHooksContentPart.js +2 -2
  72. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatElicitationContentPart.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.d.ts +4 -2
  74. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorConfirmationPart.js +6 -3
  75. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatErrorContentPart.d.ts +1 -1
  76. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.d.ts +1 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatExtensionsContentPart.js +1 -1
  78. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.d.ts +3 -2
  79. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatHookContentPart.js +7 -6
  80. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.d.ts +0 -1
  81. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatInlineAnchorWidget.js +26 -27
  82. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.d.ts +4 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownContentPart.js +53 -20
  84. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.d.ts +15 -0
  85. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownTableScrolling.js +55 -0
  86. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.d.ts +1 -1
  87. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMcpServersInteractionContentPart.js +8 -7
  88. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.d.ts +1 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMultiDiffContentPart.js +4 -4
  90. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.d.ts +3 -2
  91. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatProgressContentPart.js +24 -10
  92. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.d.ts +4 -4
  93. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatPullRequestContentPart.js +11 -6
  94. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.d.ts +62 -7
  95. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuestionCarouselPart.js +414 -129
  96. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.d.ts +1 -1
  97. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatQuotaExceededPart.js +4 -4
  98. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.d.ts +4 -3
  99. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatReferencesContentPart.js +19 -12
  100. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.d.ts +22 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatResourceGroupWidget.js +263 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.d.ts +14 -5
  103. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSubagentContentPart.js +98 -26
  104. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatSuggestNextWidget.js +5 -5
  105. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.d.ts +1 -1
  106. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTaskContentPart.js +1 -0
  107. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.d.ts +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTextEditContentPart.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.d.ts +11 -2
  110. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.js +252 -80
  111. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.d.ts +29 -1
  112. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTipContentPart.js +246 -8
  113. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.d.ts +4 -0
  114. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTodoListWidget.js +39 -18
  115. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.d.ts +6 -4
  116. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolInputOutputContentPart.js +36 -23
  117. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.d.ts +3 -13
  118. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatToolOutputContentSubPart.js +6 -260
  119. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.d.ts +1 -1
  120. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatTreeContentPart.js +1 -1
  121. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.d.ts +1 -1
  122. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatWorkspaceEditContentPart.js +3 -3
  123. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.d.ts +5 -7
  124. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/codeBlockPart.js +42 -37
  125. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatCodeBlockPill.css +12 -3
  126. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatConfirmationWidget.css +65 -18
  127. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatHookContentPart.css +9 -6
  128. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatInlineAnchorWidget.css +2 -2
  129. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatQuestionCarousel.css +356 -415
  130. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTerminalToolProgressPart.css +14 -7
  131. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatThinkingContent.css +102 -7
  132. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/chatTipContent.css +68 -19
  133. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/media/codeBlockPart.css +48 -15
  134. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.d.ts +5 -2
  135. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/abstractToolConfirmationSubPart.js +47 -23
  136. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.d.ts +1 -1
  137. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatExtensionsInstallToolSubPart.js +4 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.d.ts +1 -2
  139. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatInputOutputMarkdownProgressPart.js +0 -5
  140. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.d.ts +8 -1
  141. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppModel.js +57 -4
  142. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.d.ts +5 -1
  143. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatMcpAppSubPart.js +24 -8
  144. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatResultListSubPart.d.ts +1 -1
  145. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.d.ts +18 -0
  146. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatSimpleToolProgressPart.js +103 -0
  147. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.d.ts +1 -1
  148. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolConfirmationSubPart.js +15 -18
  149. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.d.ts +44 -1
  150. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatTerminalToolProgressPart.js +85 -89
  151. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.d.ts +3 -5
  152. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolConfirmationSubPart.js +15 -17
  153. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.d.ts +4 -2
  154. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolInvocationPart.js +41 -2
  155. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.d.ts +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputPart.js +2 -2
  157. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPartUtilities.js +3 -3
  158. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.d.ts +2 -2
  159. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolPostExecuteConfirmationPart.js +6 -5
  160. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.d.ts +1 -1
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolProgressPart.js +13 -1
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.d.ts +1 -1
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolStreamingSubPart.js +2 -1
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatDragAndDrop.js +11 -11
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.d.ts +21 -5
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListRenderer.js +341 -88
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.d.ts +6 -0
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatListWidget.js +13 -4
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.d.ts +35 -0
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.js +440 -0
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.d.ts +24 -10
  172. package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidget.js +437 -241
  173. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatFollowups.js +1 -1
  174. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.d.ts +77 -17
  175. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPart.js +521 -284
  176. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.d.ts +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatInputPickerActionItem.js +7 -1
  178. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.d.ts +71 -0
  179. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelPicker.js +664 -0
  180. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.d.ts +104 -0
  181. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatModelSelectionLogic.js +127 -0
  182. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.d.ts +12 -1
  183. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/delegationSessionPickerActionItem.js +57 -16
  184. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.d.ts +4 -7
  185. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modePickerActionItem.js +89 -49
  186. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.d.ts +1 -0
  187. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.d.ts +28 -0
  188. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem2.js +87 -0
  189. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.d.ts +22 -0
  190. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/permissionPickerActionItem.js +213 -0
  191. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.d.ts +1 -0
  192. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/sessionTargetPickerActionItem.js +15 -17
  193. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/workspacePickerActionItem.js +7 -4
  194. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chat.css +563 -140
  195. package/vscode/src/vs/workbench/contrib/chat/browser/widget/media/chatViewWelcome.css +35 -26
  196. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.d.ts +2 -2
  197. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageDetails.js +26 -23
  198. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.d.ts +26 -6
  199. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatContextUsageWidget.js +145 -79
  200. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageDetails.css +36 -50
  201. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatContextUsageWidget.css +35 -15
  202. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.d.ts +7 -0
  203. package/vscode/src/vs/workbench/contrib/chat/common/widget/annotations.js +127 -30
  204. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.d.ts +1 -0
  205. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatColors.js +20 -14
  206. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.d.ts +6 -6
  207. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAffordance.js +96 -34
  208. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.d.ts +11 -2
  209. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatController.js +68 -27
  210. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.d.ts +5 -0
  211. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatEditorAffordance.js +125 -13
  212. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.d.ts +8 -11
  213. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatGutterAffordance.js +54 -45
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.d.ts +11 -10
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatOverlayWidget.js +172 -112
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatWidget.js +5 -5
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatZoneWidget.js +1 -1
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChat.css +2 -44
  219. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatEditorAffordance.css +28 -4
  220. package/vscode/src/vs/workbench/contrib/inlineChat/browser/media/inlineChatOverlayWidget.css +84 -3
  221. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.d.ts +9 -2
  222. package/vscode/src/vs/workbench/contrib/inlineChat/common/inlineChat.js +58 -41
  223. package/vscode/src/vs/workbench/contrib/interactive/browser/replInputHintContentWidget.js +3 -3
  224. package/vscode/src/vs/workbench/contrib/mcp/common/modelContextProtocolApps.d.ts +1 -548
  225. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.js +7 -7
  226. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindWidget.js +2 -2
  227. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditor.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/replNotebook/browser/replEditorInput.js +1 -1
  229. package/vscode/src/vs/workbench/contrib/terminal/browser/chatTerminalCommandMirror.js +6 -10
  230. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/modelPickerActionItem.js +0 -187
@@ -14,6 +14,18 @@
14
14
  }
15
15
  }
16
16
 
17
+ .interactive-session.chat-view-getting-started-disabled {
18
+
19
+ /* hide most welcome pieces when we show recent sessions to make some space */
20
+ .chat-welcome-view .chat-welcome-view-icon,
21
+ .chat-welcome-view .chat-welcome-view-title,
22
+ .chat-welcome-view .chat-welcome-view-message,
23
+ .chat-welcome-view .chat-welcome-view-disclaimer,
24
+ .chat-welcome-view .chat-welcome-view-tips {
25
+ display: none;
26
+ }
27
+ }
28
+
17
29
  /* Chat welcome container */
18
30
  .interactive-session .chat-welcome-view-container {
19
31
  display: flex;
@@ -41,11 +53,13 @@ div.chat-welcome-view {
41
53
  padding: 12px;
42
54
 
43
55
  & > .chat-welcome-view-icon {
44
- min-height: 48px;
56
+ min-height: 40px;
45
57
  }
46
58
 
47
59
  & > .chat-welcome-view-icon .codicon {
60
+ color: var(--vscode-descriptionForeground);
48
61
  font-size: 40px;
62
+ margin-bottom: 24px;
49
63
  }
50
64
 
51
65
  & > .chat-welcome-view-icon.custom-icon {
@@ -72,7 +86,9 @@ div.chat-welcome-view {
72
86
  }
73
87
 
74
88
  & > .chat-welcome-view-title {
75
- font-size: 24px;
89
+ font-size: 13px;
90
+ font-weight: 600;
91
+ color: var(--vscode-foreground);
76
92
  margin-top: 5px;
77
93
  text-align: center;
78
94
  line-height: normal;
@@ -82,10 +98,11 @@ div.chat-welcome-view {
82
98
  & > .chat-welcome-view-message {
83
99
  position: relative;
84
100
  text-align: center;
85
- max-width: 100%;
101
+ max-width: 280px;
86
102
  padding: 0 20px;
87
- margin: 0 auto;
88
- color: var(--vscode-foreground);
103
+ margin: 8px auto 0;
104
+ color: var(--vscode-descriptionForeground);
105
+ font-size: 12px;
89
106
 
90
107
  a {
91
108
  color: var(--vscode-textLink-foreground);
@@ -98,8 +115,7 @@ div.chat-welcome-view {
98
115
  }
99
116
 
100
117
  p {
101
- margin-top: 8px;
102
- margin-bottom: 8px;
118
+ margin: 0;
103
119
  }
104
120
  }
105
121
 
@@ -141,11 +157,16 @@ div.chat-welcome-view {
141
157
  }
142
158
 
143
159
  & > .chat-welcome-view-disclaimer {
144
- color: var(--vscode-foreground);
160
+ color: var(--vscode-descriptionForeground);
145
161
  text-align: center;
146
- margin: -16px auto;
147
- max-width: 400px;
162
+ margin: 0;
163
+ max-width: 256px;
148
164
  padding: 0 12px;
165
+ font-size: 12px;
166
+
167
+ p {
168
+ margin: 0;
169
+ }
149
170
 
150
171
  a {
151
172
  color: var(--vscode-textLink-foreground);
@@ -178,9 +199,7 @@ div.chat-welcome-view {
178
199
  position: absolute;
179
200
  top: 8px;
180
201
  left: 16px;
181
- font-size: 11px;
182
- text-transform: uppercase;
183
- letter-spacing: 0.5px;
202
+ font-size: 12px;
184
203
  color: var(--vscode-descriptionForeground);
185
204
  margin: 0;
186
205
  text-align: left;
@@ -190,8 +209,8 @@ div.chat-welcome-view {
190
209
  display: flex;
191
210
  align-items: center;
192
211
  gap: 6px;
193
- height: 24px;
194
- padding: 0 8px;
212
+ height: 20px;
213
+ padding: 0 6px;
195
214
  border-radius: 4px;
196
215
  background-color: var(--vscode-editorWidget-background);
197
216
  cursor: pointer;
@@ -202,20 +221,10 @@ div.chat-welcome-view {
202
221
  flex: 0 0 auto;
203
222
 
204
223
  & > .chat-welcome-view-suggested-prompt-title {
205
- font-size: 13px;
224
+ font-size: 12px;
206
225
  color: var(--vscode-editorWidget-foreground);
207
226
  white-space: nowrap;
208
227
  }
209
-
210
- & > .chat-welcome-view-suggested-prompt-description {
211
- font-size: 13px;
212
- color: var(--vscode-descriptionForeground);
213
- overflow: hidden;
214
- text-overflow: ellipsis;
215
- white-space: nowrap;
216
- flex: 0 1 auto;
217
- min-width: 0;
218
- }
219
228
  }
220
229
 
221
230
  > .chat-welcome-view-suggested-prompt:hover {
@@ -8,8 +8,8 @@ export interface IChatContextUsagePromptTokenDetail {
8
8
  percentageOfPrompt: number;
9
9
  }
10
10
  export interface IChatContextUsageData {
11
- promptTokens: number;
12
- maxInputTokens: number;
11
+ usedTokens: number;
12
+ totalContextWindow: number;
13
13
  percentage: number;
14
14
  promptTokenDetails?: readonly IChatContextUsagePromptTokenDetail[];
15
15
  }
@@ -20,24 +20,19 @@ let ChatContextUsageDetails = class ChatContextUsageDetails extends Disposable {
20
20
  this.menuService = menuService;
21
21
  this.contextKeyService = contextKeyService;
22
22
  this.domNode = $(".chat-context-usage-details");
23
- this.domNode.setAttribute("tabindex", "0");
24
- this.quotaItem = this.domNode.appendChild($(".quota-item"));
25
- const quotaItemHeader = this.quotaItem.appendChild($(".quota-item-header"));
26
- const quotaItemLabel = quotaItemHeader.appendChild($(".quota-item-label"));
27
- quotaItemLabel.textContent = ( localize(6235, "Context Window"));
28
- const tokenRow = this.quotaItem.appendChild($(".token-row"));
29
- this.tokenCountLabel = tokenRow.appendChild($(".token-count-label"));
30
- this.percentageLabel = tokenRow.appendChild($(".quota-item-value"));
23
+ this.quotaItem = this.domNode.appendChild($(".quota-indicator"));
24
+ const header = this.domNode.insertBefore($("div.header"), this.quotaItem);
25
+ header.textContent = ( localize(6886, "Context Window"));
26
+ const quotaLabel = this.quotaItem.appendChild($(".quota-label"));
27
+ this.tokenCountLabel = quotaLabel.appendChild($("span"));
28
+ this.percentageLabel = quotaLabel.appendChild($("span.quota-value"));
31
29
  const progressBar = this.quotaItem.appendChild($(".quota-bar"));
32
30
  this.progressFill = progressBar.appendChild($(".quota-bit"));
33
31
  this.tokenDetailsContainer = this.domNode.appendChild($(".token-details-container"));
34
- this.warningMessage = this.domNode.appendChild($(".warning-message"));
35
- this.warningMessage.textContent = ( localize(6236, "Quality may decline as limit nears."));
32
+ this.warningMessage = this.domNode.appendChild($("div.description"));
33
+ this.warningMessage.textContent = ( localize(6887, "Quality may decline as limit nears."));
36
34
  this.warningMessage.style.display = "none";
37
35
  this.actionsSection = this.domNode.appendChild($(".actions-section"));
38
- this.actionsSection.appendChild($(".separator"));
39
- const actionsHeader = this.actionsSection.appendChild($(".actions-header"));
40
- actionsHeader.textContent = ( localize(6237, "Actions"));
41
36
  const buttonBarContainer = this.actionsSection.appendChild($(".button-bar-container"));
42
37
  this._register(this.instantiationService.createInstance(
43
38
  MenuWorkbenchButtonBar,
@@ -66,17 +61,17 @@ let ChatContextUsageDetails = class ChatContextUsageDetails extends Disposable {
66
61
  update(data) {
67
62
  const {
68
63
  percentage,
69
- promptTokens,
70
- maxInputTokens,
64
+ usedTokens,
65
+ totalContextWindow,
71
66
  promptTokenDetails
72
67
  } = data;
73
68
  this.tokenCountLabel.textContent = ( localize(
74
- 6238,
69
+ 6888,
75
70
  "{0} / {1} tokens",
76
- this.formatTokenCount(promptTokens, 1),
77
- this.formatTokenCount(maxInputTokens, 0)
71
+ this.formatTokenCount(usedTokens, 1),
72
+ this.formatTokenCount(totalContextWindow, 0)
78
73
  ));
79
- this.percentageLabel.textContent = `• ${percentage.toFixed(0)}%`;
74
+ this.percentageLabel.textContent = ( localize(6889, "{0}%", percentage.toFixed(0)));
80
75
  this.progressFill.style.width = `${Math.min(100, percentage)}%`;
81
76
  this.quotaItem.classList.remove("warning", "error");
82
77
  if (percentage >= 90) {
@@ -88,7 +83,8 @@ let ChatContextUsageDetails = class ChatContextUsageDetails extends Disposable {
88
83
  this.warningMessage.style.display = percentage >= 75 ? "" : "none";
89
84
  }
90
85
  formatTokenCount(count, decimals) {
91
- if (count >= 1000000) {
86
+ const mThreshold = 1000000 - 500 * Math.pow(10, -decimals);
87
+ if (count >= mThreshold) {
92
88
  return `${(count / 1000000).toFixed(decimals)}M`;
93
89
  } else if (count >= 1000) {
94
90
  return `${(count / 1000).toFixed(decimals)}K`;
@@ -115,16 +111,23 @@ let ChatContextUsageDetails = class ChatContextUsageDetails extends Disposable {
115
111
  }
116
112
  if (totalPercentage < 100) {
117
113
  const uncategorizedPercentage = 100 - totalPercentage;
118
- categoryMap.set(( localize(6239, "Uncategorized")), [{
119
- label: ( localize(6240, "Other")),
114
+ categoryMap.set(( localize(6890, "Uncategorized")), [{
115
+ label: ( localize(6891, "Other")),
120
116
  percentageOfPrompt: uncategorizedPercentage
121
117
  }]);
122
118
  }
123
119
  for (const [category, items] of categoryMap) {
120
+ const visibleItems = items.filter(item => {
121
+ const contextRelativePercentage = (item.percentageOfPrompt / 100) * contextWindowPercentage;
122
+ return contextRelativePercentage >= 0.05;
123
+ });
124
+ if (visibleItems.length === 0) {
125
+ continue;
126
+ }
124
127
  const categorySection = this.tokenDetailsContainer.appendChild($(".token-category"));
125
128
  const categoryHeader = categorySection.appendChild($(".token-category-header"));
126
129
  categoryHeader.textContent = category;
127
- for (const item of items) {
130
+ for (const item of visibleItems) {
128
131
  const itemRow = categorySection.appendChild($(".token-detail-item"));
129
132
  const itemLabel = itemRow.appendChild($(".token-detail-label"));
130
133
  itemLabel.textContent = item.label;
@@ -3,22 +3,26 @@ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/l
3
3
  import { IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
4
4
  import { IHoverService } from "@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service";
5
5
  import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
6
+ import { IContextKeyService } from "@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service";
7
+ import { IStorageService } from "@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service";
8
+ import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
6
9
  import { IChatRequestModel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/model/chatModel";
7
10
  import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
8
11
  /**
9
- * A reusable circular progress indicator that displays a pie chart.
10
- * The pie fills clockwise from the top based on the percentage value.
12
+ * A reusable circular progress indicator that displays a ring.
13
+ * The ring fills clockwise from the top based on the percentage value.
11
14
  */
12
15
  export declare class CircularProgressIndicator {
13
16
  readonly domNode: SVGSVGElement;
14
- private readonly progressPie;
17
+ private readonly progressCircle;
18
+ private readonly circumference;
15
19
  private static readonly CENTER_X;
16
20
  private static readonly CENTER_Y;
17
21
  private static readonly RADIUS;
18
22
  constructor();
19
23
  /**
20
- * Updates the pie chart to display the given percentage (0-100).
21
- * @param percentage The percentage of the pie to fill (clamped to 0-100)
24
+ * Updates the ring to display the given percentage (0-100).
25
+ * @param percentage The percentage of the ring to fill (clamped to 0-100)
22
26
  */
23
27
  setProgress(percentage: number): void;
24
28
  }
@@ -31,17 +35,33 @@ export declare class ChatContextUsageWidget extends Disposable {
31
35
  private readonly hoverService;
32
36
  private readonly instantiationService;
33
37
  private readonly languageModelsService;
38
+ private readonly contextKeyService;
39
+ private readonly storageService;
40
+ private readonly configurationService;
34
41
  private readonly _onDidChangeVisibility;
35
42
  readonly onDidChangeVisibility: Event<void>;
36
43
  readonly domNode: HTMLElement;
37
44
  private readonly progressIndicator;
45
+ private readonly percentageLabel;
38
46
  private readonly _isVisible;
39
47
  get isVisible(): IObservable<boolean>;
40
48
  private readonly _lastRequestDisposable;
41
49
  private readonly _hoverDisposable;
42
50
  private readonly _contextUsageDetails;
43
51
  private currentData;
44
- constructor(hoverService: IHoverService, instantiationService: IInstantiationService, languageModelsService: ILanguageModelsService);
52
+ private static readonly _OPENED_STORAGE_KEY;
53
+ private static readonly _HOVER_ID;
54
+ private readonly _contextUsageOpenedKey;
55
+ private _enabled;
56
+ constructor(hoverService: IHoverService, instantiationService: IInstantiationService, languageModelsService: ILanguageModelsService, contextKeyService: IContextKeyService, storageService: IStorageService, configurationService: IConfigurationService);
57
+ /**
58
+ * Shows the sticky context usage details hover and records that the user
59
+ * has opened it. Returns `true` if the details were shown.
60
+ */
61
+ showDetails(): boolean;
62
+ private readonly _hoverOptions;
63
+ private _createDetails;
64
+ private _markOpened;
45
65
  private setupHover;
46
66
  /**
47
67
  * Updates the widget with the latest request/response data.
@@ -9,13 +9,19 @@ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/in
9
9
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
10
10
  import { IHoverService } from '@codingame/monaco-vscode-api/vscode/vs/platform/hover/browser/hover.service';
11
11
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
12
+ import { IContextKeyService } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey.service';
13
+ import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
14
+ import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
15
+ import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
16
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/actions/chatContextKeys';
17
+ import { ChatConfiguration } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
12
18
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
13
19
  import { ChatContextUsageDetails } from './chatContextUsageDetails.js';
14
20
  import { StandardKeyboardEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/keyboardEvent';
15
21
  import { KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
16
22
  import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
17
- import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
18
23
 
24
+ var ChatContextUsageWidget_1;
19
25
  registerCss(chatContextUsageWidget);
20
26
  const $ = $$1;
21
27
  class CircularProgressIndicator {
@@ -26,159 +32,216 @@ class CircularProgressIndicator {
26
32
  this.CENTER_Y = 18;
27
33
  }
28
34
  static {
29
- this.RADIUS = 16;
35
+ this.RADIUS = 14;
30
36
  }
31
37
  constructor() {
38
+ const r = CircularProgressIndicator.RADIUS;
39
+ this.circumference = 2 * Math.PI * r;
32
40
  this.domNode = document.createElementNS("http://www.w3.org/2000/svg", "svg");
33
41
  this.domNode.setAttribute("viewBox", "0 0 36 36");
34
42
  this.domNode.classList.add("circular-progress");
35
43
  const bgCircle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
36
44
  bgCircle.setAttribute("cx", String(CircularProgressIndicator.CENTER_X));
37
45
  bgCircle.setAttribute("cy", String(CircularProgressIndicator.CENTER_Y));
38
- bgCircle.setAttribute("r", String(CircularProgressIndicator.RADIUS));
46
+ bgCircle.setAttribute("r", String(r));
39
47
  bgCircle.classList.add("progress-bg");
40
48
  this.domNode.appendChild(bgCircle);
41
- this.progressPie = document.createElementNS("http://www.w3.org/2000/svg", "path");
42
- this.progressPie.classList.add("progress-pie");
43
- this.domNode.appendChild(this.progressPie);
49
+ this.progressCircle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
50
+ this.progressCircle.setAttribute("cx", String(CircularProgressIndicator.CENTER_X));
51
+ this.progressCircle.setAttribute("cy", String(CircularProgressIndicator.CENTER_Y));
52
+ this.progressCircle.setAttribute("r", String(r));
53
+ this.progressCircle.classList.add("progress-arc");
54
+ this.progressCircle.setAttribute("stroke-dasharray", String(this.circumference));
55
+ this.progressCircle.setAttribute("stroke-dashoffset", String(this.circumference));
56
+ this.domNode.appendChild(this.progressCircle);
44
57
  }
45
58
  setProgress(percentage) {
46
- const cx = CircularProgressIndicator.CENTER_X;
47
- const cy = CircularProgressIndicator.CENTER_Y;
48
- const r = CircularProgressIndicator.RADIUS;
49
- if (percentage >= 100) {
50
- this.progressPie.setAttribute("d", `M ${cx} ${cy - r} A ${r} ${r} 0 1 1 ${cx - 0.001} ${cy - r} Z`);
51
- } else if (percentage <= 0) {
52
- this.progressPie.setAttribute("d", "");
53
- } else {
54
- const angle = (percentage / 100) * 360;
55
- const radians = (angle - 90) * (Math.PI / 180);
56
- const x = cx + r * Math.cos(radians);
57
- const y = cy + r * Math.sin(radians);
58
- const largeArcFlag = angle > 180 ? 1 : 0;
59
- const d = [
60
- `M ${cx} ${cy}`,
61
- `L ${cx} ${cy - r}`,
62
- `A ${r} ${r} 0 ${largeArcFlag} 1 ${x} ${y}`,
63
- "Z"].join(" ");
64
- this.progressPie.setAttribute("d", d);
65
- }
59
+ const clamped = Math.max(0, Math.min(100, percentage));
60
+ const offset = this.circumference - (clamped / 100) * this.circumference;
61
+ this.progressCircle.setAttribute("stroke-dashoffset", String(offset));
66
62
  }
67
63
  }
68
64
  let ChatContextUsageWidget = class ChatContextUsageWidget extends Disposable {
65
+ static {
66
+ ChatContextUsageWidget_1 = this;
67
+ }
69
68
  get isVisible() {
70
69
  return this._isVisible;
71
70
  }
72
- constructor(hoverService, instantiationService, languageModelsService) {
71
+ static {
72
+ this._OPENED_STORAGE_KEY = "chat.contextUsage.hasBeenOpened";
73
+ }
74
+ static {
75
+ this._HOVER_ID = "chat.contextUsage";
76
+ }
77
+ constructor(
78
+ hoverService,
79
+ instantiationService,
80
+ languageModelsService,
81
+ contextKeyService,
82
+ storageService,
83
+ configurationService
84
+ ) {
73
85
  super();
74
86
  this.hoverService = hoverService;
75
87
  this.instantiationService = instantiationService;
76
88
  this.languageModelsService = languageModelsService;
89
+ this.contextKeyService = contextKeyService;
90
+ this.storageService = storageService;
91
+ this.configurationService = configurationService;
77
92
  this._onDidChangeVisibility = this._register(( new Emitter()));
78
93
  this.onDidChangeVisibility = this._onDidChangeVisibility.event;
79
94
  this._isVisible = observableValue(this, false);
80
95
  this._lastRequestDisposable = this._register(( new MutableDisposable()));
81
96
  this._hoverDisposable = this._register(( new MutableDisposable()));
82
97
  this._contextUsageDetails = this._register(( new MutableDisposable()));
98
+ this._hoverOptions = {
99
+ id: ChatContextUsageWidget_1._HOVER_ID,
100
+ appearance: {
101
+ showPointer: true,
102
+ compact: true
103
+ },
104
+ persistence: {
105
+ hideOnHover: false
106
+ },
107
+ trapFocus: true
108
+ };
83
109
  this.domNode = $(".chat-context-usage-widget");
84
110
  this.domNode.style.display = "none";
85
111
  this.domNode.setAttribute("tabindex", "0");
86
112
  this.domNode.setAttribute("role", "button");
87
- this.domNode.setAttribute("aria-label", ( localize(6241, "Context window usage")));
113
+ this.domNode.setAttribute("aria-label", ( localize(6892, "Context window usage")));
88
114
  const iconContainer = this.domNode.appendChild($(".icon-container"));
89
115
  this.progressIndicator = ( new CircularProgressIndicator());
90
116
  iconContainer.appendChild(this.progressIndicator.domNode);
117
+ this.percentageLabel = this.domNode.appendChild($(".percentage-label"));
118
+ this._contextUsageOpenedKey = ChatContextKeys.contextUsageHasBeenOpened.bindTo(this.contextKeyService);
119
+ if (this.storageService.getBoolean(
120
+ ChatContextUsageWidget_1._OPENED_STORAGE_KEY,
121
+ StorageScope.WORKSPACE,
122
+ false
123
+ )) {
124
+ this._contextUsageOpenedKey.set(true);
125
+ }
126
+ this._enabled = this.configurationService.getValue(ChatConfiguration.ChatContextUsageEnabled) !== false;
127
+ this._register(this.configurationService.onDidChangeConfiguration(e => {
128
+ if (e.affectsConfiguration(ChatConfiguration.ChatContextUsageEnabled)) {
129
+ this._enabled = this.configurationService.getValue(ChatConfiguration.ChatContextUsageEnabled) !== false;
130
+ if (!this._enabled) {
131
+ this.hide();
132
+ } else if (this.currentData) {
133
+ this.show();
134
+ }
135
+ }
136
+ }));
91
137
  this.setupHover();
92
138
  }
139
+ showDetails() {
140
+ const details = this._createDetails();
141
+ if (!details) {
142
+ return false;
143
+ }
144
+ this.hoverService.showInstantHover({
145
+ ...this._hoverOptions,
146
+ content: details.domNode,
147
+ target: this.domNode,
148
+ persistence: {
149
+ hideOnHover: false,
150
+ sticky: true
151
+ }
152
+ }, true);
153
+ this._markOpened();
154
+ return true;
155
+ }
156
+ _createDetails() {
157
+ if (!this._isVisible.get() || !this.currentData) {
158
+ return undefined;
159
+ }
160
+ if (!this._contextUsageDetails.value) {
161
+ this._contextUsageDetails.value = this.instantiationService.createInstance(ChatContextUsageDetails);
162
+ }
163
+ this._contextUsageDetails.value.update(this.currentData);
164
+ return this._contextUsageDetails.value;
165
+ }
166
+ _markOpened() {
167
+ this._contextUsageOpenedKey.set(true);
168
+ this.storageService.store(
169
+ ChatContextUsageWidget_1._OPENED_STORAGE_KEY,
170
+ true,
171
+ StorageScope.WORKSPACE,
172
+ StorageTarget.MACHINE
173
+ );
174
+ }
93
175
  setupHover() {
94
176
  this._hoverDisposable.clear();
95
177
  const store = ( new DisposableStore());
96
178
  this._hoverDisposable.value = store;
97
- const createDetails = () => {
98
- if (!this._isVisible.get() || !this.currentData) {
99
- return undefined;
100
- }
101
- this._contextUsageDetails.value = this.instantiationService.createInstance(ChatContextUsageDetails);
102
- this._contextUsageDetails.value.update(this.currentData);
103
- return this._contextUsageDetails.value;
104
- };
105
- const hoverOptions = {
106
- appearance: {
107
- showPointer: true,
108
- compact: true
109
- },
110
- persistence: {
111
- hideOnHover: false
112
- },
113
- trapFocus: true
114
- };
115
179
  store.add(this.hoverService.setupDelayedHover(this.domNode, () => ({
116
- ...hoverOptions,
117
- content: createDetails()?.domNode ?? ""
180
+ ...this._hoverOptions,
181
+ content: this._createDetails()?.domNode ?? ""
118
182
  })));
119
- const showStickyHover = () => {
120
- const details = createDetails();
121
- if (details) {
122
- this.hoverService.showInstantHover({
123
- ...hoverOptions,
124
- content: details.domNode,
125
- target: this.domNode,
126
- persistence: {
127
- hideOnHover: false,
128
- sticky: true
129
- }
130
- }, true);
131
- }
132
- };
133
183
  store.add(addDisposableListener(this.domNode, EventType.CLICK, e => {
134
184
  e.stopPropagation();
135
- showStickyHover();
185
+ this.showDetails();
136
186
  }));
137
187
  store.add(addDisposableListener(this.domNode, EventType.KEY_DOWN, e => {
138
188
  const evt = ( new StandardKeyboardEvent(e));
139
189
  if (evt.equals(KeyCode.Space) || evt.equals(KeyCode.Enter)) {
140
190
  e.preventDefault();
141
- showStickyHover();
191
+ this.showDetails();
142
192
  }
143
193
  }));
144
194
  }
145
195
  update(lastRequest) {
146
196
  this._lastRequestDisposable.clear();
147
- if (!lastRequest?.response || !lastRequest.modelId) {
197
+ if (!lastRequest) {
198
+ this.currentData = undefined;
148
199
  this.hide();
149
200
  return;
150
201
  }
202
+ if (!lastRequest.response || !lastRequest.modelId) {
203
+ if (!this.currentData) {
204
+ this.hide();
205
+ }
206
+ return;
207
+ }
151
208
  const response = lastRequest.response;
152
209
  const modelId = lastRequest.modelId;
153
- this._lastRequestDisposable.value = autorun(reader => {
154
- const isComplete = !response.isInProgress.read(reader);
155
- if (isComplete) {
156
- this.updateFromResponse(response, modelId);
157
- }
210
+ this.updateFromResponse(response, modelId);
211
+ this._lastRequestDisposable.value = response.onDidChange(() => {
212
+ this.updateFromResponse(response, modelId);
158
213
  });
159
214
  }
160
215
  updateFromResponse(response, modelId) {
161
- const usage = response.result?.usage;
216
+ const usage = response.usage;
162
217
  const modelMetadata = this.languageModelsService.lookupLanguageModel(modelId);
163
218
  const maxInputTokens = modelMetadata?.maxInputTokens;
164
- if (!usage || !maxInputTokens || maxInputTokens <= 0) {
165
- this.hide();
219
+ const maxOutputTokens = modelMetadata?.maxOutputTokens;
220
+ if (!usage || !maxInputTokens || maxInputTokens <= 0 || !maxOutputTokens || maxOutputTokens <= 0) {
221
+ if (!this.currentData) {
222
+ this.hide();
223
+ }
166
224
  return;
167
225
  }
168
226
  const promptTokens = usage.promptTokens;
169
227
  const promptTokenDetails = usage.promptTokenDetails;
170
- const percentage = Math.min(100, (promptTokens / maxInputTokens) * 100);
171
- this.render(percentage, promptTokens, maxInputTokens, promptTokenDetails);
228
+ const totalContextWindow = maxInputTokens + maxOutputTokens;
229
+ const usedTokens = promptTokens + maxOutputTokens;
230
+ const percentage = Math.min(100, (usedTokens / totalContextWindow) * 100);
231
+ this.render(percentage, usedTokens, totalContextWindow, promptTokenDetails);
172
232
  this.show();
173
233
  }
174
- render(percentage, promptTokens, maxTokens, promptTokenDetails) {
234
+ render(percentage, usedTokens, totalContextWindow, promptTokenDetails) {
175
235
  this.currentData = {
176
- promptTokens,
177
- maxInputTokens: maxTokens,
236
+ usedTokens,
237
+ totalContextWindow,
178
238
  percentage,
179
239
  promptTokenDetails
180
240
  };
181
241
  this.progressIndicator.setProgress(percentage);
242
+ const roundedPercentage = Math.round(percentage);
243
+ this.percentageLabel.textContent = `${roundedPercentage}%`;
244
+ this.domNode.setAttribute("aria-label", ( localize(6893, "Context window usage: {0}%", roundedPercentage)));
182
245
  this.domNode.classList.remove("warning", "error");
183
246
  if (percentage >= 90) {
184
247
  this.domNode.classList.add("error");
@@ -187,6 +250,9 @@ let ChatContextUsageWidget = class ChatContextUsageWidget extends Disposable {
187
250
  }
188
251
  }
189
252
  show() {
253
+ if (!this._enabled) {
254
+ return;
255
+ }
190
256
  if (this.domNode.style.display === "none") {
191
257
  this.domNode.style.display = "";
192
258
  this._isVisible.set(true, undefined);
@@ -201,6 +267,6 @@ let ChatContextUsageWidget = class ChatContextUsageWidget extends Disposable {
201
267
  }
202
268
  }
203
269
  };
204
- ChatContextUsageWidget = ( __decorate([( __param(0, IHoverService)), ( __param(1, IInstantiationService)), ( __param(2, ILanguageModelsService))], ChatContextUsageWidget));
270
+ ChatContextUsageWidget = ChatContextUsageWidget_1 = ( __decorate([( __param(0, IHoverService)), ( __param(1, IInstantiationService)), ( __param(2, ILanguageModelsService)), ( __param(3, IContextKeyService)), ( __param(4, IStorageService)), ( __param(5, IConfigurationService))], ChatContextUsageWidget));
205
271
 
206
272
  export { ChatContextUsageWidget, CircularProgressIndicator };