@codingame/monaco-vscode-chat-service-override 20.4.1 → 21.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 (200) hide show
  1. package/index.js +15 -7
  2. package/package.json +38 -36
  3. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +2 -0
  4. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +60 -0
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +56 -46
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +18 -16
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +52 -11
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +28 -26
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +19 -13
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -12
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +11 -11
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +10 -10
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +68 -0
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +433 -0
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -18
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +7 -3
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +205 -551
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +7 -5
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +52 -29
  24. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -163
  25. package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +1 -1
  26. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +20 -5
  27. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +17 -17
  28. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -14
  29. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -1
  30. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +32 -6
  31. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -1
  32. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +22 -3
  33. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
  34. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +22 -9
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +6 -8
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +1 -0
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +47 -15
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +12 -2
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +8 -2
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +33 -8
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +3 -3
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +3 -0
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +74 -19
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +3 -1
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -19
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.d.ts +12 -0
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.js +36 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -35
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +2 -2
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +37 -9
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +238 -52
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +23 -1
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +257 -148
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +3 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +126 -77
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -3
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +3 -13
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -2
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +55 -45
  67. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -3
  68. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
  69. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +13 -7
  70. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +130 -47
  71. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +5 -3
  74. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +6 -6
  75. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
  76. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
  77. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +39 -35
  78. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
  79. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
  80. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
  81. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
  82. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
  83. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
  84. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
  85. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +2 -2
  86. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -14
  87. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  88. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +5 -4
  89. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +7 -4
  90. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +4 -8
  91. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +153 -168
  92. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +127 -1
  93. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +111 -1
  94. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
  95. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +2 -1
  96. package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +6 -3
  97. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.d.ts +20 -0
  98. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +66 -0
  99. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +38 -0
  100. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +143 -0
  101. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +3 -1
  102. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +12 -3
  103. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.d.ts +8 -3
  104. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +41 -8
  105. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.d.ts +4 -1
  106. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +55 -22
  107. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
  108. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
  109. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
  110. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
  111. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.d.ts +2 -0
  112. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +5 -2
  113. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.d.ts +3 -3
  114. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.js +3 -4
  115. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
  116. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +0 -5
  117. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +8 -23
  118. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
  119. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +4 -5
  120. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +11 -5
  121. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +28 -28
  122. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  123. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +12 -0
  124. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +54 -0
  125. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
  126. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +33 -31
  127. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +9 -9
  128. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.d.ts +1 -3
  129. package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +9 -13
  130. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
  131. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -18
  132. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +2 -1
  133. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +11 -4
  134. package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
  135. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -2
  136. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +1 -6
  137. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +16 -1
  138. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +84 -25
  139. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +10 -0
  140. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +55 -0
  141. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +8 -2
  142. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +15 -7
  143. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +23 -0
  144. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +72 -1
  145. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +8 -2
  146. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +19 -9
  147. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +5 -0
  148. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -5
  149. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +12 -8
  150. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +6 -0
  151. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +85 -1
  152. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +35 -0
  153. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +448 -0
  154. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -1
  155. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +30 -77
  156. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +62 -0
  157. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +174 -0
  158. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +75 -10
  159. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +15 -2
  160. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +81 -38
  161. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +11 -0
  162. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +106 -0
  163. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.js → tools/getTerminalOutputTool.js} +5 -3
  164. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +11 -0
  165. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +59 -0
  166. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +57 -0
  167. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +452 -0
  168. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +45 -0
  169. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
  170. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +2 -0
  171. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +31 -0
  172. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.d.ts → tools/runInTerminalTool.d.ts} +11 -13
  173. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.js → tools/runInTerminalTool.js} +282 -133
  174. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.d.ts +5 -5
  175. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.js +51 -50
  176. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/getTaskOutputTool.d.ts +6 -1
  177. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +117 -0
  178. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.d.ts +3 -5
  179. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.js +54 -50
  180. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +19 -0
  181. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +36 -0
  182. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.d.ts +3 -0
  183. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.js +8 -0
  184. package/vscode/src/vs/base/common/policy.d.ts +0 -41
  185. package/vscode/src/vs/base/common/policy.js +0 -11
  186. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +0 -12
  187. package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +0 -738
  188. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -42
  189. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.d.ts +0 -67
  190. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +0 -167
  191. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.d.ts +0 -23
  192. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +0 -63
  193. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +0 -55
  194. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +0 -163
  195. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +0 -88
  196. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +0 -35
  197. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +0 -80
  198. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +0 -1
  199. package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +0 -40
  200. /package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.d.ts → tools/getTerminalOutputTool.d.ts} +0 -0
@@ -1,8 +1,134 @@
1
1
  import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
2
- import { IChatUserActionEvent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService";
2
+ import { IChatAgentData } from "@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatAgents";
3
+ import { ChatRequestModel } from "@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel";
4
+ import { ChatRequestAgentPart, ChatRequestAgentSubcommandPart, ChatRequestSlashCommandPart } from "@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes";
5
+ import { IChatSendRequestOptions, IChatUserActionEvent } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService";
6
+ import { ChatAgentLocation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
7
+ import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
8
+ export type ChatProviderInvokedEvent = {
9
+ timeToFirstProgress: number | undefined;
10
+ totalTime: number | undefined;
11
+ result: "success" | "error" | "errorWithOutput" | "cancelled" | "filtered";
12
+ requestType: "string" | "followup" | "slashCommand";
13
+ chatSessionId: string;
14
+ agent: string;
15
+ agentExtensionId: string | undefined;
16
+ slashCommand: string | undefined;
17
+ location: ChatAgentLocation;
18
+ citations: number;
19
+ numCodeBlocks: number;
20
+ isParticipantDetected: boolean;
21
+ enableCommandDetection: boolean;
22
+ attachmentKinds: string[];
23
+ model: string | undefined;
24
+ };
25
+ export type ChatProviderInvokedClassification = {
26
+ timeToFirstProgress: {
27
+ classification: "SystemMetaData";
28
+ purpose: "PerformanceAndHealth";
29
+ comment: "The time in milliseconds from invoking the provider to getting the first data.";
30
+ };
31
+ totalTime: {
32
+ classification: "SystemMetaData";
33
+ purpose: "PerformanceAndHealth";
34
+ comment: "The total time it took to run the provider's `provideResponseWithProgress`.";
35
+ };
36
+ result: {
37
+ classification: "SystemMetaData";
38
+ purpose: "FeatureInsight";
39
+ comment: "Whether invoking the ChatProvider resulted in an error.";
40
+ };
41
+ requestType: {
42
+ classification: "SystemMetaData";
43
+ purpose: "FeatureInsight";
44
+ comment: "The type of request that the user made.";
45
+ };
46
+ chatSessionId: {
47
+ classification: "SystemMetaData";
48
+ purpose: "FeatureInsight";
49
+ comment: "A random ID for the session.";
50
+ };
51
+ agent: {
52
+ classification: "SystemMetaData";
53
+ purpose: "FeatureInsight";
54
+ comment: "The type of agent used.";
55
+ };
56
+ agentExtensionId: {
57
+ classification: "SystemMetaData";
58
+ purpose: "FeatureInsight";
59
+ comment: "The extension that contributed the agent.";
60
+ };
61
+ slashCommand?: {
62
+ classification: "SystemMetaData";
63
+ purpose: "FeatureInsight";
64
+ comment: "The type of slashCommand used.";
65
+ };
66
+ location: {
67
+ classification: "SystemMetaData";
68
+ purpose: "FeatureInsight";
69
+ comment: "The location at which chat request was made.";
70
+ };
71
+ citations: {
72
+ classification: "SystemMetaData";
73
+ purpose: "FeatureInsight";
74
+ comment: "The number of public code citations that were returned with the response.";
75
+ };
76
+ numCodeBlocks: {
77
+ classification: "SystemMetaData";
78
+ purpose: "FeatureInsight";
79
+ comment: "The number of code blocks in the response.";
80
+ };
81
+ isParticipantDetected: {
82
+ classification: "SystemMetaData";
83
+ purpose: "FeatureInsight";
84
+ comment: "Whether the participant was automatically detected.";
85
+ };
86
+ enableCommandDetection: {
87
+ classification: "SystemMetaData";
88
+ purpose: "FeatureInsight";
89
+ comment: "Whether participation detection was disabled for this invocation.";
90
+ };
91
+ attachmentKinds: {
92
+ classification: "SystemMetaData";
93
+ purpose: "FeatureInsight";
94
+ comment: "The types of variables/attachments that the user included with their query.";
95
+ };
96
+ model: {
97
+ classification: "SystemMetaData";
98
+ purpose: "FeatureInsight";
99
+ comment: "The model used to generate the response.";
100
+ };
101
+ owner: "roblourens";
102
+ comment: "Provides insight into the performance of Chat agents.";
103
+ };
3
104
  export declare class ChatServiceTelemetry {
4
105
  private readonly telemetryService;
5
106
  constructor(telemetryService: ITelemetryService);
6
107
  notifyUserAction(action: IChatUserActionEvent): void;
7
108
  retrievedFollowups(agentId: string, command: string | undefined, numFollowups: number): void;
8
109
  }
110
+ export declare class ChatRequestTelemetry {
111
+ private readonly opts;
112
+ private readonly telemetryService;
113
+ private readonly languageModelsService;
114
+ private isComplete;
115
+ constructor(opts: {
116
+ agentPart: ChatRequestAgentPart | undefined;
117
+ agentSlashCommandPart: ChatRequestAgentSubcommandPart | undefined;
118
+ commandPart: ChatRequestSlashCommandPart | undefined;
119
+ sessionId: string;
120
+ location: ChatAgentLocation;
121
+ options: IChatSendRequestOptions | undefined;
122
+ enableCommandDetection: boolean;
123
+ }, telemetryService: ITelemetryService, languageModelsService: ILanguageModelsService);
124
+ complete({ timeToFirstProgress, totalTime, result, requestType, request, detectedAgent }: {
125
+ timeToFirstProgress: number | undefined;
126
+ totalTime: number | undefined;
127
+ result: ChatProviderInvokedEvent["result"];
128
+ requestType: ChatProviderInvokedEvent["requestType"];
129
+ request: ChatRequestModel;
130
+ detectedAgent: IChatAgentData | undefined;
131
+ }): void;
132
+ private attachmentKindsForTelemetry;
133
+ private resolveModelId;
134
+ }
@@ -1,7 +1,11 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
4
+ import { isLocation } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
3
5
  import { ITelemetryService } from '@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service';
4
6
  import { ChatAgentVoteDirection, ChatCopyKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService';
7
+ import { isImageVariableEntry } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatVariableEntries';
8
+ import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
5
9
 
6
10
  let ChatServiceTelemetry = class ChatServiceTelemetry {
7
11
  constructor(telemetryService) {
@@ -72,5 +76,111 @@ let ChatServiceTelemetry = class ChatServiceTelemetry {
72
76
  ChatServiceTelemetry = ( __decorate([
73
77
  ( __param(0, ITelemetryService))
74
78
  ], ChatServiceTelemetry));
79
+ function getCodeBlocks(text) {
80
+ const lines = text.split('\n');
81
+ const codeBlockLanguages = [];
82
+ let codeBlockState;
83
+ for (let i = 0; i < lines.length; i++) {
84
+ const line = lines[i];
85
+ if (codeBlockState) {
86
+ if (( new RegExp(`^\\s*${codeBlockState.delimiter}\\s*$`)).test(line)) {
87
+ codeBlockLanguages.push(codeBlockState.languageId);
88
+ codeBlockState = undefined;
89
+ }
90
+ }
91
+ else {
92
+ const match = line.match(/^(\s*)(`{3,}|~{3,})(\w*)/);
93
+ if (match) {
94
+ codeBlockState = { delimiter: match[2], languageId: match[3] };
95
+ }
96
+ }
97
+ }
98
+ return codeBlockLanguages;
99
+ }
100
+ let ChatRequestTelemetry = class ChatRequestTelemetry {
101
+ constructor(opts, telemetryService, languageModelsService) {
102
+ this.opts = opts;
103
+ this.telemetryService = telemetryService;
104
+ this.languageModelsService = languageModelsService;
105
+ this.isComplete = false;
106
+ }
107
+ complete({ timeToFirstProgress, totalTime, result, requestType, request, detectedAgent }) {
108
+ if (this.isComplete) {
109
+ return;
110
+ }
111
+ this.isComplete = true;
112
+ this.telemetryService.publicLog2('interactiveSessionProviderInvoked', {
113
+ timeToFirstProgress,
114
+ totalTime,
115
+ result,
116
+ requestType,
117
+ agent: detectedAgent?.id ?? this.opts.agentPart?.agent.id ?? '',
118
+ agentExtensionId: detectedAgent?.extensionId.value ?? this.opts.agentPart?.agent.extensionId.value ?? '',
119
+ slashCommand: this.opts.agentSlashCommandPart ? this.opts.agentSlashCommandPart.command.name : this.opts.commandPart?.slashCommand.command,
120
+ chatSessionId: this.opts.sessionId,
121
+ enableCommandDetection: this.opts.enableCommandDetection,
122
+ isParticipantDetected: !!detectedAgent,
123
+ location: this.opts.location,
124
+ citations: request.response?.codeCitations.length ?? 0,
125
+ numCodeBlocks: getCodeBlocks(request.response?.response.toString() ?? '').length,
126
+ attachmentKinds: this.attachmentKindsForTelemetry(request.variableData),
127
+ model: this.resolveModelId(this.opts.options?.userSelectedModelId),
128
+ });
129
+ }
130
+ attachmentKindsForTelemetry(variableData) {
131
+ return ( variableData.variables.map(v => {
132
+ if (v.kind === 'implicit') {
133
+ return 'implicit';
134
+ }
135
+ else if (v.range) {
136
+ if (v.kind === 'tool') {
137
+ return 'toolInPrompt';
138
+ }
139
+ else if (v.kind === 'toolset') {
140
+ return 'toolsetInPrompt';
141
+ }
142
+ else {
143
+ return 'fileInPrompt';
144
+ }
145
+ }
146
+ else if (v.kind === 'command') {
147
+ return 'command';
148
+ }
149
+ else if (v.kind === 'symbol') {
150
+ return 'symbol';
151
+ }
152
+ else if (isImageVariableEntry(v)) {
153
+ return 'image';
154
+ }
155
+ else if (v.kind === 'directory') {
156
+ return 'directory';
157
+ }
158
+ else if (v.kind === 'tool') {
159
+ return 'tool';
160
+ }
161
+ else if (v.kind === 'toolset') {
162
+ return 'toolset';
163
+ }
164
+ else {
165
+ if (URI.isUri(v.value)) {
166
+ return 'file';
167
+ }
168
+ else if (isLocation(v.value)) {
169
+ return 'location';
170
+ }
171
+ else {
172
+ return 'otherAttachment';
173
+ }
174
+ }
175
+ }));
176
+ }
177
+ resolveModelId(userSelectedModelId) {
178
+ return userSelectedModelId && this.languageModelsService.lookupLanguageModel(userSelectedModelId)?.id;
179
+ }
180
+ };
181
+ ChatRequestTelemetry = ( __decorate([
182
+ ( __param(1, ITelemetryService)),
183
+ ( __param(2, ILanguageModelsService))
184
+ ], ChatRequestTelemetry));
75
185
 
76
- export { ChatServiceTelemetry };
186
+ export { ChatRequestTelemetry, ChatServiceTelemetry };
@@ -51,7 +51,7 @@ let ChatSessionStore = class ChatSessionStore extends Disposable {
51
51
  }
52
52
  e.join(this.storeTask, {
53
53
  id: 'join.chatSessionStore',
54
- label: ( localize(5418, "Saving chat history"))
54
+ label: ( localize(5546, "Saving chat history"))
55
55
  });
56
56
  }));
57
57
  }
@@ -324,8 +324,8 @@ function isChatSessionIndex(data) {
324
324
  }
325
325
  function getSessionMetadata(session) {
326
326
  const title = session instanceof ChatModel ?
327
- (session.title || ( localize(5419, "New Chat"))) :
328
- session.customTitle ?? ChatModel.getDefaultTitle(session.requests);
327
+ session.customTitle || (session.getRequests().length > 0 ? ChatModel.getDefaultTitle(session.getRequests()) : '') :
328
+ session.customTitle ?? (session.requests.length > 0 ? ChatModel.getDefaultTitle(session.requests) : '');
329
329
  return {
330
330
  sessionId: session.sessionId,
331
331
  title,
@@ -23,5 +23,6 @@ export declare class ChatTodoListService extends Disposable implements IChatTodo
23
23
  readonly _serviceBrand: undefined;
24
24
  private todoListStorage;
25
25
  constructor(storageService: IStorageService);
26
- getChatTodoListStorage(): IChatTodoListStorage;
26
+ getTodos(sessionId: string): IChatTodo[];
27
+ setTodos(sessionId: string, todos: IChatTodo[]): void;
27
28
  }
@@ -3,7 +3,7 @@ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib
3
3
  import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
4
  import { StorageScope, StorageTarget } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage';
5
5
  import { IStorageService } from '@codingame/monaco-vscode-api/vscode/vs/platform/storage/common/storage.service';
6
- import { Memento } from '@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common/vscode/vs/workbench/common/memento';
6
+ import { Memento } from '@codingame/monaco-vscode-23b6fb38-5e58-5886-b34b-27abc4f5df02-common/vscode/vs/workbench/common/memento';
7
7
 
8
8
  let ChatTodoListStorage = class ChatTodoListStorage {
9
9
  constructor(storageService) {
@@ -33,8 +33,11 @@ let ChatTodoListService = class ChatTodoListService extends Disposable {
33
33
  super();
34
34
  this.todoListStorage = ( new ChatTodoListStorage(storageService));
35
35
  }
36
- getChatTodoListStorage() {
37
- return this.todoListStorage;
36
+ getTodos(sessionId) {
37
+ return this.todoListStorage.getTodoList(sessionId);
38
+ }
39
+ setTodos(sessionId, todos) {
40
+ this.todoListStorage.setTodoList(sessionId, todos);
38
41
  }
39
42
  };
40
43
  ChatTodoListService = ( __decorate([
@@ -0,0 +1,20 @@
1
+ import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
2
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
+ import { Position } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position";
4
+ import { Definition, DefinitionProvider } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
5
+ import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
6
+ import { ILanguageFeaturesService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service";
7
+ import { IChatModeService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service";
8
+ import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
9
+ export declare class PromptHeaderDefinitionProvider extends Disposable implements DefinitionProvider {
10
+ private readonly promptsService;
11
+ private readonly languageService;
12
+ private readonly chatModeService;
13
+ /**
14
+ * Debug display name for this provider.
15
+ */
16
+ readonly _debugDisplayName: string;
17
+ constructor(promptsService: IPromptsService, languageService: ILanguageFeaturesService, chatModeService: IChatModeService);
18
+ provideDefinition(model: ITextModel, position: Position, token: CancellationToken): Promise<Definition | undefined>;
19
+ private getModeDefinition;
20
+ }
@@ -0,0 +1,66 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
+ import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
5
+ import { ILanguageFeaturesService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service';
6
+ import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
7
+ import { ALL_PROMPTS_LANGUAGE_SELECTOR, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
8
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
9
+ import { PromptHeader } from '../parsers/promptHeader/promptHeader.js';
10
+
11
+ let PromptHeaderDefinitionProvider = class PromptHeaderDefinitionProvider extends Disposable {
12
+ constructor(promptsService, languageService, chatModeService) {
13
+ super();
14
+ this.promptsService = promptsService;
15
+ this.languageService = languageService;
16
+ this.chatModeService = chatModeService;
17
+ this._debugDisplayName = 'PromptHeaderHoverProvider';
18
+ this._register(this.languageService.definitionProvider.register(ALL_PROMPTS_LANGUAGE_SELECTOR, this));
19
+ }
20
+ async provideDefinition(model, position, token) {
21
+ const promptType = getPromptsTypeForLanguageId(model.getLanguageId());
22
+ if (!promptType) {
23
+ return undefined;
24
+ }
25
+ const parser = this.promptsService.getSyntaxParserFor(model);
26
+ await parser.start(token).settled();
27
+ if (token.isCancellationRequested) {
28
+ return undefined;
29
+ }
30
+ const header = parser.header;
31
+ if (!header) {
32
+ return undefined;
33
+ }
34
+ const completed = await header.settled;
35
+ if (!completed || token.isCancellationRequested) {
36
+ return undefined;
37
+ }
38
+ if (header instanceof PromptHeader) {
39
+ const mode = header.metadataUtility.mode;
40
+ if (mode?.range.containsPosition(position)) {
41
+ return this.getModeDefinition(mode, position);
42
+ }
43
+ }
44
+ return undefined;
45
+ }
46
+ getModeDefinition(mode, position) {
47
+ const value = mode.value;
48
+ if (value && mode.valueRange?.containsPosition(position)) {
49
+ const mode = this.chatModeService.findModeByName(value);
50
+ if (mode && mode.uri) {
51
+ return {
52
+ uri: mode.uri.get(),
53
+ range: ( new Range(1, 1, 1, 1))
54
+ };
55
+ }
56
+ }
57
+ return undefined;
58
+ }
59
+ };
60
+ PromptHeaderDefinitionProvider = ( __decorate([
61
+ ( __param(0, IPromptsService)),
62
+ ( __param(1, ILanguageFeaturesService)),
63
+ ( __param(2, IChatModeService))
64
+ ], PromptHeaderDefinitionProvider));
65
+
66
+ export { PromptHeaderDefinitionProvider };
@@ -0,0 +1,38 @@
1
+ import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
2
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
3
+ import { Position } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position";
4
+ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
5
+ import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
6
+ import { ILanguageFeaturesService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service";
7
+ import { CompletionContext, CompletionItemProvider, CompletionList } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
8
+ import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service";
9
+ /**
10
+ * Provides autocompletion for the variables inside prompt bodies.
11
+ * - #file: paths to files and folders in the workspace
12
+ * - # tool names
13
+ */
14
+ export declare class PromptBodyAutocompletion extends Disposable implements CompletionItemProvider {
15
+ private readonly fileService;
16
+ private readonly languageService;
17
+ private readonly languageModelToolsService;
18
+ /**
19
+ * Debug display name for this provider.
20
+ */
21
+ readonly _debugDisplayName: string;
22
+ /**
23
+ * List of trigger characters handled by this provider.
24
+ */
25
+ readonly triggerCharacters: string[];
26
+ constructor(fileService: IFileService, languageService: ILanguageFeaturesService, languageModelToolsService: ILanguageModelToolsService);
27
+ /**
28
+ * The main function of this provider that calculates
29
+ * completion items based on the provided arguments.
30
+ */
31
+ provideCompletionItems(model: ITextModel, position: Position, context: CompletionContext, token: CancellationToken): Promise<CompletionList | undefined>;
32
+ private collectToolCompletions;
33
+ private collectFilePathCompletions;
34
+ /**
35
+ * Finds a file reference that suites the provided `position`.
36
+ */
37
+ private findVariableReference;
38
+ }
@@ -0,0 +1,143 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { extUri, dirname } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
4
+ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import { ALL_PROMPTS_LANGUAGE_SELECTOR, PromptsType } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
6
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
7
+ import { ILanguageFeaturesService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service';
8
+ import { CompletionItemKind } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
9
+ import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
10
+ import { CharCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/charCode';
11
+ import { getWordAtText } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/wordHelper';
12
+ import { chatVariableLeader } from '@codingame/monaco-vscode-b994942c-360d-5b68-8a33-77d4bde6b714-common/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
13
+ import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
14
+ import { getPromptFileType } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/config/promptFileLocations';
15
+
16
+ let PromptBodyAutocompletion = class PromptBodyAutocompletion extends Disposable {
17
+ constructor(fileService, languageService, languageModelToolsService) {
18
+ super();
19
+ this.fileService = fileService;
20
+ this.languageService = languageService;
21
+ this.languageModelToolsService = languageModelToolsService;
22
+ this._debugDisplayName = 'PromptBodyAutocompletion';
23
+ this.triggerCharacters = [':', '.', '/', '\\'];
24
+ this._register(this.languageService.completionProvider.register(ALL_PROMPTS_LANGUAGE_SELECTOR, this));
25
+ }
26
+ async provideCompletionItems(model, position, context, token) {
27
+ const reference = await this.findVariableReference(model, position, token);
28
+ if (!reference) {
29
+ return undefined;
30
+ }
31
+ const suggestions = [];
32
+ if (reference.type === 'file') {
33
+ if (reference.contentRange.containsPosition(position)) {
34
+ await this.collectFilePathCompletions(model, position, reference.contentRange, suggestions);
35
+ }
36
+ }
37
+ else if (reference.type === '') {
38
+ const promptFileType = getPromptFileType(model.uri);
39
+ if (promptFileType === PromptsType.mode || promptFileType === PromptsType.prompt) {
40
+ await this.collectToolCompletions(model, position, reference.contentRange, suggestions);
41
+ }
42
+ }
43
+ return { suggestions };
44
+ }
45
+ async collectToolCompletions(model, position, toolRange, suggestions) {
46
+ const addSuggestion = (toolName, toolRange) => {
47
+ suggestions.push({
48
+ label: toolName,
49
+ kind: CompletionItemKind.Value,
50
+ filterText: toolName,
51
+ insertText: toolName,
52
+ range: toolRange,
53
+ });
54
+ };
55
+ for (const tool of this.languageModelToolsService.getTools()) {
56
+ if (tool.canBeReferencedInPrompt) {
57
+ addSuggestion(tool.toolReferenceName ?? tool.displayName, toolRange);
58
+ }
59
+ }
60
+ for (const toolSet of this.languageModelToolsService.toolSets.get()) {
61
+ addSuggestion(toolSet.referenceName, toolRange);
62
+ }
63
+ }
64
+ async collectFilePathCompletions(model, position, pathRange, suggestions) {
65
+ const pathUntilPosition = model.getValueInRange(pathRange.setEndPosition(position.lineNumber, position.column));
66
+ const pathSeparator = pathUntilPosition.includes('/') || !pathUntilPosition.includes('\\') ? '/' : '\\';
67
+ let parentFolderPath;
68
+ if (pathUntilPosition.match(/[^\/]\.\.$/i)) {
69
+ parentFolderPath = pathUntilPosition + pathSeparator;
70
+ }
71
+ else {
72
+ let i = pathUntilPosition.length - 1;
73
+ while (i >= 0 && ![CharCode.Slash, CharCode.Backslash].includes(pathUntilPosition.charCodeAt(i))) {
74
+ i--;
75
+ }
76
+ parentFolderPath = pathUntilPosition.substring(0, i + 1);
77
+ }
78
+ const retriggerCommand = { id: 'editor.action.triggerSuggest', title: 'Suggest' };
79
+ try {
80
+ const currentFolder = extUri.resolvePath(dirname(model.uri), parentFolderPath);
81
+ const { children } = await this.fileService.resolve(currentFolder);
82
+ if (children) {
83
+ for (const child of children) {
84
+ const insertText = (parentFolderPath || ('.' + pathSeparator)) + child.name;
85
+ suggestions.push({
86
+ label: child.name + (child.isDirectory ? pathSeparator : ''),
87
+ kind: child.isDirectory ? CompletionItemKind.Folder : CompletionItemKind.File,
88
+ range: pathRange,
89
+ insertText: insertText + (child.isDirectory ? pathSeparator : ''),
90
+ filterText: insertText,
91
+ command: child.isDirectory ? retriggerCommand : undefined
92
+ });
93
+ }
94
+ }
95
+ }
96
+ catch (e) {
97
+ }
98
+ suggestions.push({
99
+ label: '..',
100
+ kind: CompletionItemKind.Folder,
101
+ insertText: parentFolderPath + '..' + pathSeparator,
102
+ range: pathRange,
103
+ filterText: parentFolderPath + '..',
104
+ command: retriggerCommand
105
+ });
106
+ }
107
+ async findVariableReference(model, position, token) {
108
+ if (model.getLineContent(1).trimEnd() === '---') {
109
+ let i = 2;
110
+ while (i <= model.getLineCount() && model.getLineContent(i).trimEnd() !== '---') {
111
+ i++;
112
+ }
113
+ if (i >= position.lineNumber) {
114
+ return undefined;
115
+ }
116
+ }
117
+ const reg = ( new RegExp(`${chatVariableLeader}[^\\s#]*`, 'g'));
118
+ const varWord = getWordAtText(position.column, reg, model.getLineContent(position.lineNumber), 0);
119
+ if (!varWord) {
120
+ return undefined;
121
+ }
122
+ const nameMatch = varWord.word.match(/^#(\w+:)?/);
123
+ if (nameMatch) {
124
+ if (nameMatch[1] === 'file:') {
125
+ const contentCol = varWord.startColumn + nameMatch[0].length;
126
+ return { type: 'file', contentRange: ( new Range(position.lineNumber, contentCol, position.lineNumber, varWord.endColumn)) };
127
+ }
128
+ }
129
+ return { type: '', contentRange: ( new Range(
130
+ position.lineNumber,
131
+ varWord.startColumn + 1,
132
+ position.lineNumber,
133
+ varWord.endColumn
134
+ )) };
135
+ }
136
+ };
137
+ PromptBodyAutocompletion = ( __decorate([
138
+ ( __param(0, IFileService)),
139
+ ( __param(1, ILanguageFeaturesService)),
140
+ ( __param(2, ILanguageModelToolsService))
141
+ ], PromptBodyAutocompletion));
142
+
143
+ export { PromptBodyAutocompletion };
@@ -6,12 +6,14 @@ import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common
6
6
  import { ILanguageFeaturesService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/languageFeatures.service";
7
7
  import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
8
8
  import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service";
9
+ import { IChatModeService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service";
9
10
  import { IPromptsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service";
10
11
  export declare class PromptHeaderAutocompletion extends Disposable implements CompletionItemProvider {
11
12
  private readonly promptsService;
12
13
  private readonly languageService;
13
14
  private readonly languageModelsService;
14
15
  private readonly languageModelToolsService;
16
+ private readonly chatModeService;
15
17
  /**
16
18
  * Debug display name for this provider.
17
19
  */
@@ -20,7 +22,7 @@ export declare class PromptHeaderAutocompletion extends Disposable implements Co
20
22
  * List of trigger characters handled by this provider.
21
23
  */
22
24
  readonly triggerCharacters: string[];
23
- constructor(promptsService: IPromptsService, languageService: ILanguageFeaturesService, languageModelsService: ILanguageModelsService, languageModelToolsService: ILanguageModelToolsService);
25
+ constructor(promptsService: IPromptsService, languageService: ILanguageFeaturesService, languageModelsService: ILanguageModelsService, languageModelToolsService: ILanguageModelToolsService, chatModeService: IChatModeService);
24
26
  /**
25
27
  * The main function of this provider that calculates
26
28
  * completion items based on the provided arguments.
@@ -9,18 +9,21 @@ import { ILanguageFeaturesService } from '@codingame/monaco-vscode-api/vscode/vs
9
9
  import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
10
10
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
11
11
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
12
+ import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
12
13
  import { ModeHeader } from '../parsers/promptHeader/modeHeader.js';
13
14
  import { PromptHeader } from '../parsers/promptHeader/promptHeader.js';
14
15
  import { ALL_PROMPTS_LANGUAGE_SELECTOR, getPromptsTypeForLanguageId, PromptsType } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
15
16
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
17
+ import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
16
18
 
17
19
  let PromptHeaderAutocompletion = class PromptHeaderAutocompletion extends Disposable {
18
- constructor(promptsService, languageService, languageModelsService, languageModelToolsService) {
20
+ constructor(promptsService, languageService, languageModelsService, languageModelToolsService, chatModeService) {
19
21
  super();
20
22
  this.promptsService = promptsService;
21
23
  this.languageService = languageService;
22
24
  this.languageModelsService = languageModelsService;
23
25
  this.languageModelToolsService = languageModelToolsService;
26
+ this.chatModeService = chatModeService;
24
27
  this._debugDisplayName = 'PromptHeaderAutocompletion';
25
28
  this.triggerCharacters = [':'];
26
29
  this._register(this.languageService.completionProvider.register(ALL_PROMPTS_LANGUAGE_SELECTOR, this));
@@ -162,7 +165,12 @@ let PromptHeaderAutocompletion = class PromptHeaderAutocompletion extends Dispos
162
165
  return ['**', '**/*.ts, **/*.js', '**/*.php', '**/*.py'];
163
166
  }
164
167
  if (promptType === PromptsType.prompt && property === 'mode') {
165
- return ['agent', 'edit', 'ask'];
168
+ const modes = this.chatModeService.getModes();
169
+ const suggestions = [];
170
+ for (const mode of Iterable.concat(modes.builtin, modes.custom)) {
171
+ suggestions.push(mode.name);
172
+ }
173
+ return suggestions;
166
174
  }
167
175
  if (property === 'tools' && (promptType === PromptsType.prompt || promptType === PromptsType.mode)) {
168
176
  return ['[]', `['codebase', 'editFiles', 'fetch']`];
@@ -235,7 +243,8 @@ PromptHeaderAutocompletion = ( __decorate([
235
243
  ( __param(0, IPromptsService)),
236
244
  ( __param(1, ILanguageFeaturesService)),
237
245
  ( __param(2, ILanguageModelsService)),
238
- ( __param(3, ILanguageModelToolsService))
246
+ ( __param(3, ILanguageModelToolsService)),
247
+ ( __param(4, IChatModeService))
239
248
  ], PromptHeaderAutocompletion));
240
249
 
241
250
  export { PromptHeaderAutocompletion };