@codingame/monaco-vscode-chat-service-override 27.0.0 → 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 (251) hide show
  1. package/index.js +5 -2
  2. package/package.json +5 -5
  3. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.d.ts +54 -4
  4. package/vscode/src/vs/sessions/contrib/chat/browser/aiCustomizationWorkspaceService.js +179 -11
  5. package/vscode/src/vs/sessions/contrib/chat/browser/newSession.js +5 -1
  6. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.d.ts +6 -1
  7. package/vscode/src/vs/sessions/contrib/chat/browser/sessionsConfigurationService.js +25 -10
  8. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.d.ts +67 -0
  9. package/vscode/src/vs/sessions/contrib/fileTreeView/browser/githubFileSystemProvider.js +263 -0
  10. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.d.ts +6 -0
  11. package/vscode/src/vs/sessions/contrib/sessions/browser/sessionsManagementService.js +25 -6
  12. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +15 -15
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +8 -8
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +59 -59
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +1 -1
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +12 -12
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +8 -8
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +13 -5
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -4
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatForkActions.js +5 -5
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +13 -13
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +11 -11
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatOpenAgentDebugPanelAction.js +5 -4
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.d.ts +7 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPluginActions.js +2 -2
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +2 -2
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQueueActions.js +13 -13
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +8 -8
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +12 -12
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +49 -13
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +18 -18
  36. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.d.ts +58 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditor.js +537 -0
  38. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.d.ts +17 -0
  39. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginEditorInput.js +55 -0
  40. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.d.ts +26 -0
  41. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/agentPluginItems.js +9 -0
  42. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginEditor/media/agentPluginEditor.css +32 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.d.ts +17 -2
  44. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginRepositoryService.js +89 -11
  45. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.d.ts +4 -26
  46. package/vscode/src/vs/workbench/contrib/chat/browser/agentPluginsView.js +146 -53
  47. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +3 -3
  48. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +56 -54
  49. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +5 -5
  50. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +1 -1
  51. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +1 -1
  52. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +5 -5
  53. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +1 -1
  54. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +4 -4
  55. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +25 -25
  56. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +17 -17
  57. package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +4 -4
  58. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.d.ts +4 -0
  59. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationIcons.js +13 -12
  60. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.d.ts +7 -9
  61. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationListWidget.js +189 -145
  62. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.contribution.js +42 -44
  63. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.d.ts +0 -1
  64. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.js +3 -4
  65. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.d.ts +20 -8
  66. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditor.js +210 -59
  67. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagementEditorInput.js +1 -1
  68. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationWorkspaceService.js +14 -3
  69. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/customizationCreatorService.js +3 -3
  70. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/mcpListWidget.js +122 -53
  71. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/media/aiCustomizationManagement.css +87 -9
  72. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.d.ts +62 -0
  73. package/vscode/src/vs/workbench/contrib/chat/browser/aiCustomization/pluginListWidget.js +702 -0
  74. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +1 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +19 -19
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +279 -214
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatCustomizationDiscoveryRenderer.js +21 -21
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugDetailPanel.js +6 -6
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditor.js +12 -3
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEditorInput.js +2 -2
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventDetailRenderer.js +19 -19
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugEventList.js +7 -7
  83. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.d.ts +12 -0
  84. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFilters.js +63 -4
  85. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowChartView.js +7 -7
  86. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugFlowGraph.js +18 -18
  87. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugHomeView.js +6 -6
  88. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.d.ts +4 -1
  89. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugLogsView.js +62 -24
  90. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugMessageContentRenderer.js +8 -8
  91. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugModelTurnContentRenderer.js +23 -23
  92. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugOverviewView.js +28 -28
  93. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugToolCallContentRenderer.js +9 -9
  94. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/chatDebugTypes.d.ts +2 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/chatDebug/media/chatDebug.css +7 -0
  96. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.d.ts +2 -5
  97. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +32 -36
  98. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +1 -1
  99. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +4 -5
  100. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +2 -2
  101. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +1 -1
  102. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +1 -1
  103. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +3 -3
  104. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +1 -1
  105. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +2 -2
  106. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +1 -1
  107. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +8 -8
  108. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +13 -13
  109. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +4 -4
  110. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +49 -49
  112. package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +11 -11
  113. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +30 -30
  115. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +9 -0
  116. package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +2 -2
  117. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetup.js +1 -1
  118. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +14 -14
  119. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +10 -10
  120. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupGrowthSession.js +6 -6
  121. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +26 -26
  122. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +13 -13
  123. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.d.ts +3 -1
  124. package/vscode/src/vs/workbench/contrib/chat/browser/chatSlashCommands.js +103 -60
  125. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +61 -61
  126. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +12 -12
  127. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.d.ts +66 -0
  128. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipCatalog.js +245 -0
  129. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.d.ts +78 -0
  130. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipEligibilityTracker.js +234 -0
  131. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +31 -126
  132. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +229 -524
  133. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.d.ts +41 -0
  134. package/vscode/src/vs/workbench/contrib/chat/browser/chatTipStorageKeys.js +22 -0
  135. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.d.ts +4 -3
  136. package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +54 -20
  137. package/vscode/src/vs/workbench/contrib/chat/browser/defaultModelContribution.js +4 -4
  138. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.d.ts +11 -12
  139. package/vscode/src/vs/workbench/contrib/chat/browser/pluginInstallService.js +112 -39
  140. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.d.ts +99 -0
  141. package/vscode/src/vs/workbench/contrib/chat/browser/pluginSources.js +489 -0
  142. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +6 -6
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.d.ts +6 -3
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookActions.js +348 -285
  145. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.d.ts +18 -1
  146. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/hookUtils.js +107 -5
  147. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  148. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +4 -4
  149. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  150. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  151. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +3 -3
  152. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +3 -3
  153. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.d.ts +2 -0
  154. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +55 -38
  155. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +20 -1
  156. package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +148 -60
  157. package/vscode/src/vs/workbench/contrib/chat/browser/tools/renameTool.js +5 -5
  158. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +13 -13
  159. package/vscode/src/vs/workbench/contrib/chat/browser/tools/usagesTool.js +6 -6
  160. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  161. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.d.ts +2 -0
  162. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatQueuePickerActionItem.js +29 -14
  163. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +6 -6
  164. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +72 -14
  165. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +5 -3
  166. package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +1 -1
  167. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +1 -1
  168. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +5 -2
  169. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +11 -10
  170. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +2 -2
  171. package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +8 -0
  172. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.d.ts +1 -0
  173. package/vscode/src/vs/workbench/contrib/chat/common/aiCustomizationWorkspaceService.js +1 -0
  174. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.d.ts +8 -0
  175. package/vscode/src/vs/workbench/contrib/chat/common/chatDebugServiceImpl.js +20 -0
  176. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +1 -1
  177. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +72 -23
  178. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.d.ts +19 -1
  179. package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +5 -1
  180. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -1
  181. package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +37 -8
  182. package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +36 -3
  183. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.d.ts +4 -4
  184. package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +2 -2
  185. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginService.d.ts +6 -1
  186. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.d.ts +71 -25
  187. package/vscode/src/vs/workbench/contrib/chat/common/plugins/agentPluginServiceImpl.js +217 -91
  188. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.d.ts +85 -3
  189. package/vscode/src/vs/workbench/contrib/chat/common/plugins/pluginMarketplaceService.js +257 -63
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +17 -17
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.d.ts +3 -16
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookClaudeCompat.js +7 -50
  193. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.d.ts +2 -1
  194. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCompatibility.js +32 -3
  195. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.d.ts +1 -1
  196. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/hookCopilotCliCompat.js +3 -1
  197. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +1 -1
  198. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +7 -6
  199. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +1 -1
  200. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +26 -1
  201. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +287 -88
  202. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.d.ts +10 -1
  203. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +75 -20
  204. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +121 -0
  205. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +1422 -0
  206. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +1 -1
  207. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +5 -1
  208. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +81 -41
  209. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +3 -1
  210. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +8 -6
  211. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  212. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.d.ts +14 -2
  213. package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +54 -5
  214. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +6 -5
  215. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +4 -4
  216. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +38 -22
  217. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +2 -2
  218. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +8 -8
  219. package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +14 -14
  220. package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +1 -1
  221. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +10 -10
  222. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +5 -5
  223. package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +1 -1
  224. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +7 -7
  225. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  226. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -20
  227. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  228. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +6 -6
  229. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +3 -3
  230. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +3 -3
  231. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +1 -1
  232. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +12 -12
  233. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +2 -2
  234. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +3 -3
  235. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +3 -3
  236. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +3 -3
  237. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +3 -3
  238. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +8 -0
  239. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +36 -18
  240. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +2 -2
  241. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +6 -0
  242. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +27 -13
  243. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/sandboxOutputAnalyzer.js +1 -1
  244. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +14 -14
  245. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +7 -7
  246. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +14 -14
  247. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +1 -1
  248. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +1 -0
  249. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +8 -1
  250. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.d.ts +0 -12
  251. package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +0 -67
@@ -129,14 +129,14 @@ function renderCustomizationDiscoveryContent(
129
129
  const container = $("div.chat-debug-file-list");
130
130
  container.tabIndex = 0;
131
131
  const capitalizedType = content.discoveryType.charAt(0).toUpperCase() + content.discoveryType.slice(1);
132
- append(container, $("div.chat-debug-file-list-title", undefined, ( localize(5554, "{0} Discovery Results", capitalizedType))));
133
- append(container, $("div.chat-debug-file-list-summary", undefined, ( localize(5555, "Total files: {0}", content.files.length))));
132
+ append(container, $("div.chat-debug-file-list-title", undefined, ( localize(5620, "{0} Discovery Results", capitalizedType))));
133
+ append(container, $("div.chat-debug-file-list-summary", undefined, ( localize(5621, "Total files: {0}", content.files.length))));
134
134
  const loaded = content.files.filter(f => f.status === "loaded");
135
135
  if (loaded.length > 0) {
136
136
  const section = append(container, $("div.chat-debug-file-list-section"));
137
137
  append(
138
138
  section,
139
- $("div.chat-debug-file-list-section-title", undefined, ( localize(5556, "Loaded ({0})", loaded.length)))
139
+ $("div.chat-debug-file-list-section-title", undefined, ( localize(5622, "Loaded ({0})", loaded.length)))
140
140
  );
141
141
  const groups = ( new Map());
142
142
  for (const file of loaded) {
@@ -150,7 +150,7 @@ function renderCustomizationDiscoveryContent(
150
150
  }
151
151
  const listEl = append(section, $("div.chat-debug-file-list-rows"));
152
152
  listEl.setAttribute("role", "list");
153
- listEl.setAttribute("aria-label", ( localize(5557, "Loaded files")));
153
+ listEl.setAttribute("aria-label", ( localize(5623, "Loaded files")));
154
154
  const rows = [];
155
155
  for (const [locationLabel, files] of groups) {
156
156
  const groupHeader = append(listEl, $("div.chat-debug-file-list-group-header"));
@@ -163,7 +163,7 @@ function renderCustomizationDiscoveryContent(
163
163
  link.textContent = locationLabel;
164
164
  link.tabIndex = -1;
165
165
  disposables.add(
166
- hoverService.setupManagedHover(getDefaultHoverDelegate("element"), link, ( localize(5558, "Open {0} in Extensions", firstFile.extensionId)))
166
+ hoverService.setupManagedHover(getDefaultHoverDelegate("element"), link, ( localize(5624, "Open {0} in Extensions", firstFile.extensionId)))
167
167
  );
168
168
  disposables.add(addDisposableListener(link, EventType.CLICK, e => {
169
169
  e.preventDefault();
@@ -215,11 +215,11 @@ function renderCustomizationDiscoveryContent(
215
215
  const section = append(container, $("div.chat-debug-file-list-section"));
216
216
  append(
217
217
  section,
218
- $("div.chat-debug-file-list-section-title", undefined, ( localize(5559, "Skipped ({0})", skipped.length)))
218
+ $("div.chat-debug-file-list-section-title", undefined, ( localize(5625, "Skipped ({0})", skipped.length)))
219
219
  );
220
220
  const groups = ( new Map());
221
221
  for (const file of skipped) {
222
- const key = file.skipReason ?? ( localize(5560, "unknown"));
222
+ const key = file.skipReason ?? ( localize(5626, "unknown"));
223
223
  let group = groups.get(key);
224
224
  if (!group) {
225
225
  group = [];
@@ -229,7 +229,7 @@ function renderCustomizationDiscoveryContent(
229
229
  }
230
230
  const listEl = append(section, $("div.chat-debug-file-list-rows"));
231
231
  listEl.setAttribute("role", "list");
232
- listEl.setAttribute("aria-label", ( localize(5561, "Skipped files")));
232
+ listEl.setAttribute("aria-label", ( localize(5627, "Skipped files")));
233
233
  const rows = [];
234
234
  for (const [reasonLabel, files] of groups) {
235
235
  const groupHeader = append(listEl, $("div.chat-debug-file-list-group-header"));
@@ -251,7 +251,7 @@ function renderCustomizationDiscoveryContent(
251
251
  if (detail) {
252
252
  detail += ", ";
253
253
  }
254
- detail += ( localize(5562, "duplicate of {0}", file.duplicateOf.path));
254
+ detail += ( localize(5628, "duplicate of {0}", file.duplicateOf.path));
255
255
  }
256
256
  row.appendChild(createInlineFileLink(
257
257
  file.uri,
@@ -286,13 +286,13 @@ function renderCustomizationDiscoveryContent(
286
286
  const chevron = append(header, $("span.chat-debug-message-section-chevron"));
287
287
  append(
288
288
  header,
289
- $("span.chat-debug-message-section-title", undefined, ( localize(5563, "Sources ({0})", content.sourceFolders.length)))
289
+ $("span.chat-debug-message-section-title", undefined, ( localize(5629, "Sources ({0})", content.sourceFolders.length)))
290
290
  );
291
291
  const settingsKey = getSettingsKeyForDiscoveryType(content.discoveryType);
292
292
  if (settingsKey) {
293
293
  const gearBtn = disposables.add(( new Button(header, {
294
- title: ( localize(5564, "Configure locations")),
295
- ariaLabel: ( localize(5565, "Configure locations")),
294
+ title: ( localize(5630, "Configure locations")),
295
+ ariaLabel: ( localize(5631, "Configure locations")),
296
296
  hoverDelegate: getDefaultHoverDelegate("mouse")
297
297
  })));
298
298
  gearBtn.icon = Codicon.settingsGear;
@@ -321,13 +321,13 @@ function renderCustomizationDiscoveryContent(
321
321
  const contentEl = append(sectionEl, $("div.chat-debug-source-folder-content"));
322
322
  contentEl.tabIndex = 0;
323
323
  contentEl.setAttribute("role", "region");
324
- contentEl.setAttribute("aria-label", ( localize(5566, "Source folders")));
324
+ contentEl.setAttribute("aria-label", ( localize(5632, "Source folders")));
325
325
  const capitalizedType = content.discoveryType.charAt(0).toUpperCase() + content.discoveryType.slice(1);
326
326
  const sourcesCaption = capitalizedType.endsWith("s") ? capitalizedType : capitalizedType + "s";
327
327
  append(
328
328
  contentEl,
329
329
  $("div.chat-debug-source-folder-note", undefined, ( localize(
330
- 5567,
330
+ 5633,
331
331
  "{0} were discovered by checking the following sources in order:",
332
332
  sourcesCaption
333
333
  )))
@@ -348,13 +348,13 @@ function renderCustomizationDiscoveryContent(
348
348
  function fileListToPlainText(content) {
349
349
  const lines = [];
350
350
  const capitalizedType = content.discoveryType.charAt(0).toUpperCase() + content.discoveryType.slice(1);
351
- lines.push(( localize(5568, "{0} Discovery Results", capitalizedType)));
352
- lines.push(( localize(5569, "Total files: {0}", content.files.length)));
351
+ lines.push(( localize(5634, "{0} Discovery Results", capitalizedType)));
352
+ lines.push(( localize(5635, "Total files: {0}", content.files.length)));
353
353
  lines.push("");
354
354
  const loaded = content.files.filter(f => f.status === "loaded");
355
355
  const skipped = content.files.filter(f => f.status === "skipped");
356
356
  if (loaded.length > 0) {
357
- lines.push(( localize(5570, "Loaded ({0})", loaded.length)));
357
+ lines.push(( localize(5636, "Loaded ({0})", loaded.length)));
358
358
  const groups = ( new Map());
359
359
  for (const f of loaded) {
360
360
  const parentDir = content.discoveryType === "skill" ? dirname(dirname(f.uri)) : dirname(f.uri);
@@ -376,10 +376,10 @@ function fileListToPlainText(content) {
376
376
  lines.push("");
377
377
  }
378
378
  if (skipped.length > 0) {
379
- lines.push(( localize(5571, "Skipped ({0})", skipped.length)));
379
+ lines.push(( localize(5637, "Skipped ({0})", skipped.length)));
380
380
  const skippedGroups = ( new Map());
381
381
  for (const f of skipped) {
382
- const key = f.skipReason ?? ( localize(5572, "unknown"));
382
+ const key = f.skipReason ?? ( localize(5638, "unknown"));
383
383
  let group = skippedGroups.get(key);
384
384
  if (!group) {
385
385
  group = [];
@@ -398,7 +398,7 @@ function fileListToPlainText(content) {
398
398
  parts.push(f.errorMessage);
399
399
  }
400
400
  if (f.duplicateOf) {
401
- parts.push(( localize(5573, "duplicate of {0}", f.duplicateOf.path)));
401
+ parts.push(( localize(5639, "duplicate of {0}", f.duplicateOf.path)));
402
402
  }
403
403
  detail += ` (${parts.join(", ")})`;
404
404
  }
@@ -408,7 +408,7 @@ function fileListToPlainText(content) {
408
408
  }
409
409
  if (content.sourceFolders && content.sourceFolders.length > 0) {
410
410
  lines.push("");
411
- lines.push(( localize(5574, "Sources ({0})", content.sourceFolders.length)));
411
+ lines.push(( localize(5640, "Sources ({0})", content.sourceFolders.length)));
412
412
  for (const folder of content.sourceFolders) {
413
413
  lines.push(` ${folder.uri.path}`);
414
414
  }
@@ -76,8 +76,8 @@ let ChatDebugDetailPanel = class ChatDebugDetailPanel extends Disposable {
76
76
  const header = append(this.element, $(".chat-debug-detail-header"));
77
77
  this.element.appendChild(this.contentContainer);
78
78
  const fullScreenButton = this.detailDisposables.add(( new Button(header, {
79
- ariaLabel: ( localize(5575, "Open in Editor")),
80
- title: ( localize(5575, "Open in Editor"))
79
+ ariaLabel: ( localize(5643, "Open in Editor")),
80
+ title: ( localize(5643, "Open in Editor"))
81
81
  })));
82
82
  fullScreenButton.element.classList.add("chat-debug-detail-button");
83
83
  fullScreenButton.icon = Codicon.goToFile;
@@ -89,8 +89,8 @@ let ChatDebugDetailPanel = class ChatDebugDetailPanel extends Disposable {
89
89
  });
90
90
  }));
91
91
  const copyButton = this.detailDisposables.add(( new Button(header, {
92
- ariaLabel: ( localize(5576, "Copy")),
93
- title: ( localize(5576, "Copy"))
92
+ ariaLabel: ( localize(5644, "Copy")),
93
+ title: ( localize(5644, "Copy"))
94
94
  })));
95
95
  copyButton.element.classList.add("chat-debug-detail-button");
96
96
  copyButton.icon = Codicon.copy;
@@ -98,8 +98,8 @@ let ChatDebugDetailPanel = class ChatDebugDetailPanel extends Disposable {
98
98
  this.clipboardService.writeText(this.currentDetailText);
99
99
  }));
100
100
  const closeButton = this.detailDisposables.add(( new Button(header, {
101
- ariaLabel: ( localize(5577, "Close")),
102
- title: ( localize(5577, "Close"))
101
+ ariaLabel: ( localize(5645, "Close")),
102
+ title: ( localize(5645, "Close"))
103
103
  })));
104
104
  closeButton.element.classList.add("chat-debug-detail-button");
105
105
  closeButton.icon = Codicon.close;
@@ -196,7 +196,9 @@ let ChatDebugEditor = class ChatDebugEditor extends EditorPane {
196
196
  this.chatDebugService.endSession(previousSessionResource);
197
197
  }
198
198
  this.chatDebugService.activeSessionResource = sessionResource;
199
- this.chatDebugService.invokeProviders(sessionResource);
199
+ if (!this.chatDebugService.hasInvokedProviders(sessionResource)) {
200
+ this.chatDebugService.invokeProviders(sessionResource);
201
+ }
200
202
  this.trackSessionModelChanges(sessionResource);
201
203
  this.overviewView?.setSession(sessionResource);
202
204
  this.logsView?.setSession(sessionResource);
@@ -255,7 +257,9 @@ let ChatDebugEditor = class ChatDebugEditor extends EditorPane {
255
257
  this.savedSessionResource = undefined;
256
258
  if (sessionResource) {
257
259
  this.chatDebugService.activeSessionResource = sessionResource;
258
- this.chatDebugService.invokeProviders(sessionResource);
260
+ if (!this.chatDebugService.hasInvokedProviders(sessionResource)) {
261
+ this.chatDebugService.invokeProviders(sessionResource);
262
+ }
259
263
  } else {
260
264
  this.showView(ViewState.Home);
261
265
  }
@@ -268,7 +272,8 @@ let ChatDebugEditor = class ChatDebugEditor extends EditorPane {
268
272
  _applyNavigationOptions(options) {
269
273
  const {
270
274
  sessionResource,
271
- viewHint
275
+ viewHint,
276
+ filter
272
277
  } = options;
273
278
  if (viewHint === "logs" && sessionResource) {
274
279
  this.navigateToSession(sessionResource, "logs");
@@ -284,6 +289,10 @@ let ChatDebugEditor = class ChatDebugEditor extends EditorPane {
284
289
  } else if (this.viewState === ViewState.Home) {
285
290
  this.showView(ViewState.Home);
286
291
  }
292
+ if (filter !== undefined && this.filterState) {
293
+ this.filterState.setTextFilter(filter);
294
+ this.logsView?.setFilterText(filter);
295
+ }
287
296
  }
288
297
  layout(dimension) {
289
298
  this.currentDimension = dimension;
@@ -6,7 +6,7 @@ import { registerIcon } from '@codingame/monaco-vscode-api/vscode/vs/platform/th
6
6
  import { EditorInputCapabilities } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
7
7
  import { EditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor/editorInput';
8
8
 
9
- const chatDebugEditorIcon = registerIcon("chat-debug-editor-label-icon", Codicon.bug, ( localize(5578, "Icon of the chat debug editor label.")));
9
+ const chatDebugEditorIcon = registerIcon("chat-debug-editor-label-icon", Codicon.bug, ( localize(5646, "Icon of the chat debug editor label.")));
10
10
  class ChatDebugEditorInput extends EditorInput {
11
11
  constructor() {
12
12
  super(...arguments);
@@ -37,7 +37,7 @@ class ChatDebugEditorInput extends EditorInput {
37
37
  return EditorInputCapabilities.Readonly | EditorInputCapabilities.Singleton;
38
38
  }
39
39
  getName() {
40
- return localize(5579, "Agent Debug Panel");
40
+ return localize(5647, "Agent Debug Panel");
41
41
  }
42
42
  getIcon() {
43
43
  return chatDebugEditorIcon;
@@ -5,38 +5,38 @@ function formatEventDetail(event) {
5
5
  switch (event.kind) {
6
6
  case "toolCall":
7
7
  {
8
- const parts = [( localize(5580, "Tool: {0}", event.toolName))];
8
+ const parts = [( localize(5648, "Tool: {0}", event.toolName))];
9
9
  if (event.toolCallId) {
10
- parts.push(( localize(5581, "Call ID: {0}", event.toolCallId)));
10
+ parts.push(( localize(5649, "Call ID: {0}", event.toolCallId)));
11
11
  }
12
12
  if (event.result) {
13
- parts.push(( localize(5582, "Result: {0}", event.result)));
13
+ parts.push(( localize(5650, "Result: {0}", event.result)));
14
14
  }
15
15
  if (event.durationInMillis !== undefined) {
16
- parts.push(( localize(5583, "Duration: {0}ms", event.durationInMillis)));
16
+ parts.push(( localize(5651, "Duration: {0}ms", event.durationInMillis)));
17
17
  }
18
18
  if (event.input) {
19
- parts.push(`\n${( localize(5584, "Input:"))}\n${event.input}`);
19
+ parts.push(`\n${( localize(5652, "Input:"))}\n${event.input}`);
20
20
  }
21
21
  if (event.output) {
22
- parts.push(`\n${( localize(5585, "Output:"))}\n${event.output}`);
22
+ parts.push(`\n${( localize(5653, "Output:"))}\n${event.output}`);
23
23
  }
24
24
  return parts.join("\n");
25
25
  }
26
26
  case "modelTurn":
27
27
  {
28
- const parts = [event.model ?? ( localize(5586, "Model Turn"))];
28
+ const parts = [event.model ?? ( localize(5654, "Model Turn"))];
29
29
  if (event.inputTokens !== undefined) {
30
- parts.push(( localize(5587, "Input tokens: {0}", event.inputTokens)));
30
+ parts.push(( localize(5655, "Input tokens: {0}", event.inputTokens)));
31
31
  }
32
32
  if (event.outputTokens !== undefined) {
33
- parts.push(( localize(5588, "Output tokens: {0}", event.outputTokens)));
33
+ parts.push(( localize(5656, "Output tokens: {0}", event.outputTokens)));
34
34
  }
35
35
  if (event.totalTokens !== undefined) {
36
- parts.push(( localize(5589, "Total tokens: {0}", event.totalTokens)));
36
+ parts.push(( localize(5657, "Total tokens: {0}", event.totalTokens)));
37
37
  }
38
38
  if (event.durationInMillis !== undefined) {
39
- parts.push(( localize(5583, "Duration: {0}ms", event.durationInMillis)));
39
+ parts.push(( localize(5651, "Duration: {0}ms", event.durationInMillis)));
40
40
  }
41
41
  return parts.join("\n");
42
42
  }
@@ -44,27 +44,27 @@ function formatEventDetail(event) {
44
44
  return `${event.name}\n${event.details ?? ""}`;
45
45
  case "subagentInvocation":
46
46
  {
47
- const parts = [( localize(5590, "Agent: {0}", event.agentName))];
47
+ const parts = [( localize(5658, "Agent: {0}", event.agentName))];
48
48
  if (event.description) {
49
- parts.push(( localize(5591, "Description: {0}", event.description)));
49
+ parts.push(( localize(5659, "Description: {0}", event.description)));
50
50
  }
51
51
  if (event.status) {
52
- parts.push(( localize(5592, "Status: {0}", event.status)));
52
+ parts.push(( localize(5660, "Status: {0}", event.status)));
53
53
  }
54
54
  if (event.durationInMillis !== undefined) {
55
- parts.push(( localize(5583, "Duration: {0}ms", event.durationInMillis)));
55
+ parts.push(( localize(5651, "Duration: {0}ms", event.durationInMillis)));
56
56
  }
57
57
  if (event.toolCallCount !== undefined) {
58
- parts.push(( localize(5593, "Tool calls: {0}", event.toolCallCount)));
58
+ parts.push(( localize(5661, "Tool calls: {0}", event.toolCallCount)));
59
59
  }
60
60
  if (event.modelTurnCount !== undefined) {
61
- parts.push(( localize(5594, "Model turns: {0}", event.modelTurnCount)));
61
+ parts.push(( localize(5662, "Model turns: {0}", event.modelTurnCount)));
62
62
  }
63
63
  return parts.join("\n");
64
64
  }
65
65
  case "userMessage":
66
66
  {
67
- const parts = [( localize(5595, "User Message: {0}", event.message))];
67
+ const parts = [( localize(5663, "User Message: {0}", event.message))];
68
68
  for (const section of event.sections) {
69
69
  parts.push(`\n--- ${section.name} ---\n${section.content}`);
70
70
  }
@@ -72,7 +72,7 @@ function formatEventDetail(event) {
72
72
  }
73
73
  case "agentResponse":
74
74
  {
75
- const parts = [( localize(5596, "Agent Response: {0}", event.message))];
75
+ const parts = [( localize(5664, "Agent Response: {0}", event.message))];
76
76
  for (const section of event.sections) {
77
77
  parts.push(`\n--- ${section.name} ---\n${section.content}`);
78
78
  }
@@ -22,30 +22,30 @@ function renderEventToTemplate(element, templateData) {
22
22
  templateData.created.textContent = dateFormatter.value.format(element.created);
23
23
  switch (element.kind) {
24
24
  case "toolCall":
25
- templateData.name.textContent = safeStr(element.toolName, ( localize(5597, "(unknown)")));
25
+ templateData.name.textContent = safeStr(element.toolName, ( localize(5665, "(unknown)")));
26
26
  templateData.details.textContent = safeStr(element.result);
27
27
  break;
28
28
  case "modelTurn":
29
- templateData.name.textContent = safeStr(element.model) || ( localize(5598, "Model Turn"));
29
+ templateData.name.textContent = safeStr(element.model) || ( localize(5666, "Model Turn"));
30
30
  templateData.details.textContent = [
31
31
  safeStr(element.requestName),
32
- element.totalTokens !== undefined ? ( localize(5599, "{0} tokens", element.totalTokens)) : ""
32
+ element.totalTokens !== undefined ? ( localize(5667, "{0} tokens", element.totalTokens)) : ""
33
33
  ].filter(Boolean).join(" · ");
34
34
  break;
35
35
  case "generic":
36
- templateData.name.textContent = safeStr(element.name, ( localize(5597, "(unknown)")));
36
+ templateData.name.textContent = safeStr(element.name, ( localize(5665, "(unknown)")));
37
37
  templateData.details.textContent = safeStr(element.details);
38
38
  break;
39
39
  case "subagentInvocation":
40
- templateData.name.textContent = safeStr(element.agentName, ( localize(5597, "(unknown)")));
40
+ templateData.name.textContent = safeStr(element.agentName, ( localize(5665, "(unknown)")));
41
41
  templateData.details.textContent = safeStr(element.description) || safeStr(element.status);
42
42
  break;
43
43
  case "userMessage":
44
- templateData.name.textContent = ( localize(5600, "User Message"));
44
+ templateData.name.textContent = ( localize(5668, "User Message"));
45
45
  templateData.details.textContent = safeStr(element.message);
46
46
  break;
47
47
  case "agentResponse":
48
- templateData.name.textContent = ( localize(5601, "Agent Response"));
48
+ templateData.name.textContent = ( localize(5669, "Agent Response"));
49
49
  templateData.details.textContent = safeStr(element.message);
50
50
  break;
51
51
  }
@@ -16,10 +16,22 @@ export declare class ChatDebugFilterState extends Disposable {
16
16
  filterKindPromptDiscovery: boolean;
17
17
  filterKindSubagent: boolean;
18
18
  textFilter: string;
19
+ beforeTimestamp: number | undefined;
20
+ afterTimestamp: number | undefined;
19
21
  isKindVisible(kind: string, category?: string): boolean;
20
22
  isAllKindsVisible(): boolean;
21
23
  isAllFiltersDefault(): boolean;
22
24
  setTextFilter(text: string): void;
25
+ setBeforeTimestamp(timestamp: number | undefined): void;
26
+ /**
27
+ * Parse `before:YYYY[-MM[-DD[THH[:MM[:SS]]]]]` from the filter text.
28
+ * Each component after the year is optional.
29
+ */
30
+ private _parseTimestampFilters;
31
+ static parseTimeToken(text: string, prefix: string): number | undefined;
32
+ /** Returns the text filter with before:/after: tokens removed. */
33
+ get textFilterWithoutTimestamps(): string;
34
+ isTimestampVisible(created: Date): boolean;
23
35
  fire(): void;
24
36
  }
25
37
  /**
@@ -45,9 +45,68 @@ class ChatDebugFilterState extends Disposable {
45
45
  const normalized = text.toLowerCase();
46
46
  if (this.textFilter !== normalized) {
47
47
  this.textFilter = normalized;
48
+ this._parseTimestampFilters(normalized);
48
49
  this._onDidChange.fire();
49
50
  }
50
51
  }
52
+ setBeforeTimestamp(timestamp) {
53
+ if (this.beforeTimestamp !== timestamp) {
54
+ this.beforeTimestamp = timestamp;
55
+ this._onDidChange.fire();
56
+ }
57
+ }
58
+ _parseTimestampFilters(text) {
59
+ this.beforeTimestamp = ChatDebugFilterState.parseTimeToken(text, "before");
60
+ this.afterTimestamp = ChatDebugFilterState.parseTimeToken(text, "after");
61
+ }
62
+ static parseTimeToken(text, prefix) {
63
+ const regex = ( new RegExp(
64
+ `${prefix}:(\\d{4})(?:-(\\d{2})(?:-(\\d{2})(?:t(\\d{1,2})(?::(\\d{2})(?::(\\d{2}))?)?)?)?)?(?!\\w)`
65
+ ));
66
+ const m = regex.exec(text);
67
+ if (!m) {
68
+ return undefined;
69
+ }
70
+ const year = parseInt(m[1], 10);
71
+ const month = m[2] !== undefined ? parseInt(m[2], 10) - 1 : undefined;
72
+ const day = m[3] !== undefined ? parseInt(m[3], 10) : undefined;
73
+ const hour = m[4] !== undefined ? parseInt(m[4], 10) : undefined;
74
+ const minute = m[5] !== undefined ? parseInt(m[5], 10) : undefined;
75
+ const second = m[6] !== undefined ? parseInt(m[6], 10) : undefined;
76
+ if (prefix === "before") {
77
+ if (second !== undefined) {
78
+ return ( new Date(year, month, day, hour, minute, second, 999)).getTime();
79
+ } else if (minute !== undefined) {
80
+ return ( new Date(year, month, day, hour, minute, 59, 999)).getTime();
81
+ } else if (hour !== undefined) {
82
+ return ( new Date(year, month, day, hour, 59, 59, 999)).getTime();
83
+ } else if (day !== undefined) {
84
+ return ( new Date(year, month, day, 23, 59, 59, 999)).getTime();
85
+ } else if (month !== undefined) {
86
+ return ( new Date(year, month + 1, 0, 23, 59, 59, 999)).getTime();
87
+ } else {
88
+ return ( new Date(year, 11, 31, 23, 59, 59, 999)).getTime();
89
+ }
90
+ } else {
91
+ return ( new Date(year, month ?? 0, day ?? 1, hour ?? 0, minute ?? 0, second ?? 0, 0)).getTime();
92
+ }
93
+ }
94
+ get textFilterWithoutTimestamps() {
95
+ return this.textFilter.replace(
96
+ /\b(?:before|after):\d{4}(?:-\d{2}(?:-\d{2}(?:t\d{1,2}(?::\d{2}(?::\d{2})?)?)?)?)?\b/g,
97
+ ""
98
+ ).trim();
99
+ }
100
+ isTimestampVisible(created) {
101
+ const time = created.getTime();
102
+ if (this.beforeTimestamp !== undefined && time > this.beforeTimestamp) {
103
+ return false;
104
+ }
105
+ if (this.afterTimestamp !== undefined && time < this.afterTimestamp) {
106
+ return false;
107
+ }
108
+ return true;
109
+ }
51
110
  fire() {
52
111
  this._onDidChange.fire();
53
112
  }
@@ -80,16 +139,16 @@ function registerFilterMenuItems(state, scopedContextKeyService) {
80
139
  when: CHAT_DEBUG_FILTER_ACTIVE
81
140
  }));
82
141
  };
83
- registerToggle(CHAT_DEBUG_CMD_TOGGLE_TOOL_CALL, ( localize(5602, "Tool Calls")), CHAT_DEBUG_KIND_TOOL_CALL, "1_kind", () => state.filterKindToolCall, v => {
142
+ registerToggle(CHAT_DEBUG_CMD_TOGGLE_TOOL_CALL, ( localize(5670, "Tool Calls")), CHAT_DEBUG_KIND_TOOL_CALL, "1_kind", () => state.filterKindToolCall, v => {
84
143
  state.filterKindToolCall = v;
85
144
  }, kindToolCallKey);
86
- registerToggle(CHAT_DEBUG_CMD_TOGGLE_MODEL_TURN, ( localize(5603, "Model Turns")), CHAT_DEBUG_KIND_MODEL_TURN, "1_kind", () => state.filterKindModelTurn, v => {
145
+ registerToggle(CHAT_DEBUG_CMD_TOGGLE_MODEL_TURN, ( localize(5671, "Model Turns")), CHAT_DEBUG_KIND_MODEL_TURN, "1_kind", () => state.filterKindModelTurn, v => {
87
146
  state.filterKindModelTurn = v;
88
147
  }, kindModelTurnKey);
89
- registerToggle(CHAT_DEBUG_CMD_TOGGLE_PROMPT_DISCOVERY, ( localize(5604, "Chat Customization")), CHAT_DEBUG_KIND_PROMPT_DISCOVERY, "1_kind", () => state.filterKindPromptDiscovery, v => {
148
+ registerToggle(CHAT_DEBUG_CMD_TOGGLE_PROMPT_DISCOVERY, ( localize(5672, "Chat Customization")), CHAT_DEBUG_KIND_PROMPT_DISCOVERY, "1_kind", () => state.filterKindPromptDiscovery, v => {
90
149
  state.filterKindPromptDiscovery = v;
91
150
  }, kindPromptDiscoveryKey);
92
- registerToggle(CHAT_DEBUG_CMD_TOGGLE_SUBAGENT, ( localize(5605, "Subagent Invocations")), CHAT_DEBUG_KIND_SUBAGENT, "1_kind", () => state.filterKindSubagent, v => {
151
+ registerToggle(CHAT_DEBUG_CMD_TOGGLE_SUBAGENT, ( localize(5673, "Subagent Invocations")), CHAT_DEBUG_KIND_SUBAGENT, "1_kind", () => state.filterKindSubagent, v => {
93
152
  state.filterKindSubagent = v;
94
153
  }, kindSubagentKey);
95
154
  return store;
@@ -97,8 +97,8 @@ let ChatDebugFlowChartView = class ChatDebugFlowChartView extends Disposable {
97
97
  syncContextKeys();
98
98
  const childInstantiationService = this._register(this.instantiationService.createChild(( new ServiceCollection([IContextKeyService, scopedContextKeyService]))));
99
99
  this.filterWidget = this._register(childInstantiationService.createInstance(FilterWidget, {
100
- placeholder: ( localize(5606, "Filter nodes...")),
101
- ariaLabel: ( localize(5607, "Filter flow chart nodes"))
100
+ placeholder: ( localize(5674, "Filter nodes...")),
101
+ ariaLabel: ( localize(5675, "Filter flow chart nodes"))
102
102
  }));
103
103
  const filterContainer = append(headerContainer, $(".viewpane-filter-container"));
104
104
  filterContainer.appendChild(this.filterWidget.element);
@@ -153,7 +153,7 @@ let ChatDebugFlowChartView = class ChatDebugFlowChartView extends Disposable {
153
153
  return;
154
154
  }
155
155
  const sessionTitle = this.chatService.getSessionTitle(this.currentSessionResource) || LocalChatSessionUri.parseLocalSessionId(this.currentSessionResource) || ( this.currentSessionResource.toString());
156
- this.breadcrumbWidget.setItems([( new TextBreadcrumbItem(( localize(5608, "Agent Debug Panel")), true)), ( new TextBreadcrumbItem(sessionTitle, true)), ( new TextBreadcrumbItem(( localize(5609, "Agent Flow Chart"))))]);
156
+ this.breadcrumbWidget.setItems([( new TextBreadcrumbItem(( localize(5676, "Agent Debug Panel")), true)), ( new TextBreadcrumbItem(sessionTitle, true)), ( new TextBreadcrumbItem(( localize(5677, "Agent Flow Chart"))))]);
157
157
  }
158
158
  load() {
159
159
  const hadFocus = isAncestorOfActiveElement(this.content);
@@ -171,7 +171,7 @@ let ChatDebugFlowChartView = class ChatDebugFlowChartView extends Disposable {
171
171
  }
172
172
  if (events.length === 0) {
173
173
  const emptyMsg = append(this.content, $(".chat-debug-flowchart-empty"));
174
- emptyMsg.textContent = ( localize(5610, "No events recorded for this session."));
174
+ emptyMsg.textContent = ( localize(5678, "No events recorded for this session."));
175
175
  return;
176
176
  }
177
177
  const flowNodes = buildFlowGraph(events);
@@ -181,7 +181,7 @@ let ChatDebugFlowChartView = class ChatDebugFlowChartView extends Disposable {
181
181
  });
182
182
  if (filtered.length === 0) {
183
183
  const emptyMsg = append(this.content, $(".chat-debug-flowchart-empty"));
184
- emptyMsg.textContent = ( localize(5611, "No nodes match the current filter."));
184
+ emptyMsg.textContent = ( localize(5679, "No nodes match the current filter."));
185
185
  return;
186
186
  }
187
187
  const slice = sliceFlowNodes(filtered, this.visibleLimit);
@@ -200,9 +200,9 @@ let ChatDebugFlowChartView = class ChatDebugFlowChartView extends Disposable {
200
200
  const showMoreBtn = this.loadDisposables.add(( new Button(showMoreContainer, {
201
201
  ...defaultButtonStyles,
202
202
  secondary: true,
203
- title: ( localize(5612, "Load more nodes"))
203
+ title: ( localize(5680, "Load more nodes"))
204
204
  })));
205
- showMoreBtn.label = ( localize(5613, "Show More ({0})", remaining));
205
+ showMoreBtn.label = ( localize(5681, "Show More ({0})", remaining));
206
206
  this.loadDisposables.add(showMoreBtn.onDidClick(() => {
207
207
  this.visibleLimit += PAGE_SIZE;
208
208
  this.load();