@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
@@ -11,6 +11,9 @@ import { ILanguageModelChatMetadata } from "@codingame/monaco-vscode-api/vscode/
11
11
  import { ILanguageModelsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service";
12
12
  import { ILanguageModelToolsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service";
13
13
  import { ChatModeKind } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
14
+ import { IChatMode } from "@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModes";
15
+ import { IChatModeService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service";
16
+ import { PromptModeMetadata } from "../parsers/promptHeader/metadata/mode.js";
14
17
  /**
15
18
  * Prompt header diagnostics provider for an individual text model
16
19
  * of a prompt file.
@@ -19,14 +22,16 @@ declare class PromptHeaderDiagnosticsProvider extends ProviderInstanceBase {
19
22
  private readonly markerService;
20
23
  private readonly languageModelsService;
21
24
  private readonly languageModelToolsService;
22
- constructor(model: ITextModel, promptsService: IPromptsService, markerService: IMarkerService, languageModelsService: ILanguageModelsService, languageModelToolsService: ILanguageModelToolsService);
25
+ private readonly chatModeService;
26
+ constructor(model: ITextModel, promptsService: IPromptsService, markerService: IMarkerService, languageModelsService: ILanguageModelsService, languageModelToolsService: ILanguageModelToolsService, chatModeService: IChatModeService);
23
27
  /**
24
28
  * Update diagnostic markers for the current editor.
25
29
  */
26
30
  protected onPromptSettled(_error: Error | undefined, token: CancellationToken): Promise<void>;
27
- validateModel(modelNode: PromptModelMetadata | undefined, modeKind: ChatModeKind | undefined, markers: IMarkerData[]): void;
31
+ validateModel(modelNode: PromptModelMetadata | undefined, modeKind: string | ChatModeKind | undefined, markers: IMarkerData[]): void;
28
32
  findModelByName(languageModes: string[], modelName: string): ILanguageModelChatMetadata | undefined;
29
- validateTools(tools: PromptToolsMetadata | undefined, modeKind: ChatModeKind | undefined, markers: IMarkerData[]): void;
33
+ validateTools(tools: PromptToolsMetadata | undefined, modeKind: string | ChatModeKind | undefined, markers: IMarkerData[]): void;
34
+ validateMode(modeNode: PromptModeMetadata | undefined, markers: IMarkerData[]): IChatMode | undefined;
30
35
  /**
31
36
  * Returns a string representation of this object.
32
37
  */
@@ -15,20 +15,26 @@ import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/w
15
15
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
16
16
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
17
17
  import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
18
+ import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
19
+ import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
18
20
 
19
21
  const MARKERS_OWNER_ID = 'prompts-header-diagnostics-provider';
20
22
  let PromptHeaderDiagnosticsProvider = class PromptHeaderDiagnosticsProvider extends ProviderInstanceBase {
21
- constructor(model, promptsService, markerService, languageModelsService, languageModelToolsService) {
23
+ constructor(model, promptsService, markerService, languageModelsService, languageModelToolsService, chatModeService) {
22
24
  super(model, promptsService);
23
25
  this.markerService = markerService;
24
26
  this.languageModelsService = languageModelsService;
25
27
  this.languageModelToolsService = languageModelToolsService;
28
+ this.chatModeService = chatModeService;
26
29
  this._register(languageModelsService.onDidChangeLanguageModels(() => {
27
30
  this.onPromptSettled(undefined, CancellationToken.None);
28
31
  }));
29
32
  this._register(languageModelToolsService.onDidChangeTools(() => {
30
33
  this.onPromptSettled(undefined, CancellationToken.None);
31
34
  }));
35
+ this._register(chatModeService.onDidChangeChatModes(() => {
36
+ this.onPromptSettled(undefined, CancellationToken.None);
37
+ }));
32
38
  }
33
39
  async onPromptSettled(_error, token) {
34
40
  const { header } = this.parser;
@@ -45,8 +51,9 @@ let PromptHeaderDiagnosticsProvider = class PromptHeaderDiagnosticsProvider exte
45
51
  markers.push(toMarker(diagnostic));
46
52
  }
47
53
  if (header instanceof PromptHeader) {
48
- this.validateTools(header.metadataUtility.tools, header.metadata.mode, markers);
49
- this.validateModel(header.metadataUtility.model, header.metadata.mode, markers);
54
+ const mode = this.validateMode(header.metadataUtility.mode, markers);
55
+ this.validateTools(header.metadataUtility.tools, mode?.kind, markers);
56
+ this.validateModel(header.metadataUtility.model, mode?.kind, markers);
50
57
  }
51
58
  else if (header instanceof ModeHeader) {
52
59
  this.validateTools(header.metadataUtility.tools, ChatModeKind.Agent, markers);
@@ -70,14 +77,14 @@ let PromptHeaderDiagnosticsProvider = class PromptHeaderDiagnosticsProvider exte
70
77
  const modelMetadata = this.findModelByName(languageModes, modelNode.value);
71
78
  if (!modelMetadata) {
72
79
  markers.push({
73
- message: ( localize(5442, "Unknown model '{0}'", modelNode.value)),
80
+ message: ( localize(5569, "Unknown model '{0}'", modelNode.value)),
74
81
  severity: MarkerSeverity.Warning,
75
82
  ...modelNode.range,
76
83
  });
77
84
  }
78
85
  else if (modeKind === ChatModeKind.Agent && !ILanguageModelChatMetadata.suitableForAgentMode(modelMetadata)) {
79
86
  markers.push({
80
- message: ( localize(5443, "Model '{0}' is not suited for agent mode", modelNode.value)),
87
+ message: ( localize(5570, "Model '{0}' is not suited for agent mode", modelNode.value)),
81
88
  severity: MarkerSeverity.Warning,
82
89
  ...modelNode.range,
83
90
  });
@@ -86,7 +93,7 @@ let PromptHeaderDiagnosticsProvider = class PromptHeaderDiagnosticsProvider exte
86
93
  findModelByName(languageModes, modelName) {
87
94
  for (const model of languageModes) {
88
95
  const metadata = this.languageModelsService.lookupLanguageModel(model);
89
- if (metadata && metadata.isUserSelectable !== false && ILanguageModelChatMetadata.asQualifiedName(metadata) === modelName) {
96
+ if (metadata && metadata.isUserSelectable !== false && ILanguageModelChatMetadata.matchesQualifiedName(modelName, metadata)) {
90
97
  return metadata;
91
98
  }
92
99
  }
@@ -110,13 +117,38 @@ let PromptHeaderDiagnosticsProvider = class PromptHeaderDiagnosticsProvider exte
110
117
  const range = tools.getToolRange(toolName);
111
118
  if (range) {
112
119
  markers.push({
113
- message: ( localize(5444, "Unknown tool '{0}'", toolName)),
120
+ message: ( localize(5571, "Unknown tool '{0}'", toolName)),
114
121
  severity: MarkerSeverity.Warning,
115
122
  ...range,
116
123
  });
117
124
  }
118
125
  }
119
126
  }
127
+ validateMode(modeNode, markers) {
128
+ if (!modeNode || modeNode.value === undefined) {
129
+ return;
130
+ }
131
+ const modeValue = modeNode.value;
132
+ const modes = this.chatModeService.getModes();
133
+ const availableModes = [];
134
+ for (const mode of Iterable.concat(modes.builtin, modes.custom)) {
135
+ if (mode.name === modeValue) {
136
+ return mode;
137
+ }
138
+ availableModes.push(mode.name);
139
+ }
140
+ markers.push({
141
+ message: ( localize(
142
+ 5572,
143
+ "Unknown mode '{0}'. Available modes: {1}",
144
+ modeValue,
145
+ availableModes.join(', ')
146
+ )),
147
+ severity: MarkerSeverity.Warning,
148
+ ...modeNode.range,
149
+ });
150
+ return undefined;
151
+ }
120
152
  toString() {
121
153
  return `prompt-header-diagnostics:${this.model.uri.path}`;
122
154
  }
@@ -125,7 +157,8 @@ PromptHeaderDiagnosticsProvider = ( __decorate([
125
157
  ( __param(1, IPromptsService)),
126
158
  ( __param(2, IMarkerService)),
127
159
  ( __param(3, ILanguageModelsService)),
128
- ( __param(4, ILanguageModelToolsService))
160
+ ( __param(4, ILanguageModelToolsService)),
161
+ ( __param(5, IChatModeService))
129
162
  ], PromptHeaderDiagnosticsProvider));
130
163
  function toMarker(diagnostic) {
131
164
  if (diagnostic instanceof PromptMetadataWarning) {
@@ -6,20 +6,23 @@ 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 PromptHeaderHoverProvider extends Disposable implements HoverProvider {
11
12
  private readonly promptsService;
12
13
  private readonly languageService;
13
14
  private readonly languageModelToolsService;
14
15
  private readonly languageModelsService;
16
+ private readonly chatModeService;
15
17
  /**
16
18
  * Debug display name for this provider.
17
19
  */
18
20
  readonly _debugDisplayName: string;
19
- constructor(promptsService: IPromptsService, languageService: ILanguageFeaturesService, languageModelToolsService: ILanguageModelToolsService, languageModelsService: ILanguageModelsService);
21
+ constructor(promptsService: IPromptsService, languageService: ILanguageFeaturesService, languageModelToolsService: ILanguageModelToolsService, languageModelsService: ILanguageModelsService, chatModeService: IChatModeService);
20
22
  private createHover;
21
23
  provideHover(model: ITextModel, position: Position, token: CancellationToken, _context?: HoverContext): Promise<Hover | undefined>;
22
24
  private getToolHover;
23
25
  private getToolsetHover;
24
26
  private getModelHover;
27
+ private getModeHover;
25
28
  }
@@ -7,18 +7,21 @@ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
7
7
  import { ILanguageModelChatMetadata } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels';
8
8
  import { ILanguageModelsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModels.service';
9
9
  import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
10
+ import { isBuiltinChatMode } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModes';
11
+ import { IChatModeService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatModes.service';
10
12
  import { InstructionsHeader } from '../parsers/promptHeader/instructionsHeader.js';
11
13
  import { ModeHeader } from '../parsers/promptHeader/modeHeader.js';
12
14
  import { ALL_PROMPTS_LANGUAGE_SELECTOR, getPromptsTypeForLanguageId } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/promptTypes';
13
15
  import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.service';
14
16
 
15
17
  let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposable {
16
- constructor(promptsService, languageService, languageModelToolsService, languageModelsService) {
18
+ constructor(promptsService, languageService, languageModelToolsService, languageModelsService, chatModeService) {
17
19
  super();
18
20
  this.promptsService = promptsService;
19
21
  this.languageService = languageService;
20
22
  this.languageModelToolsService = languageModelToolsService;
21
23
  this.languageModelsService = languageModelsService;
24
+ this.chatModeService = chatModeService;
22
25
  this._debugDisplayName = 'PromptHeaderHoverProvider';
23
26
  this._register(this.languageService.hoverProvider.register(ALL_PROMPTS_LANGUAGE_SELECTOR, this));
24
27
  }
@@ -50,14 +53,14 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
50
53
  const descriptionRange = header.metadataUtility.description?.range;
51
54
  if (descriptionRange?.containsPosition(position)) {
52
55
  return this.createHover(( localize(
53
- 5445,
56
+ 5573,
54
57
  'The description of the instruction file. It can be used to provide additional context or information about the instructions and is passed to the language model as part of the prompt.'
55
58
  )), descriptionRange);
56
59
  }
57
60
  const applyToRange = header.metadataUtility.applyTo?.range;
58
61
  if (applyToRange?.containsPosition(position)) {
59
62
  return this.createHover(( localize(
60
- 5446,
63
+ 5574,
61
64
  'One or more glob pattern (separated by comma) that describe for which files the instructions apply to. Based on these patterns, the file is automatically included in the prompt, when the context contains a file that matches one or more of these patterns. Use `**` when you want this file to always be added.\nExample: **/*.ts, **/*.js, client/**'
62
65
  )), applyToRange);
63
66
  }
@@ -66,38 +69,38 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
66
69
  const descriptionRange = header.metadataUtility.description?.range;
67
70
  if (descriptionRange?.containsPosition(position)) {
68
71
  return this.createHover(( localize(
69
- 5447,
72
+ 5575,
70
73
  'The description of the mode file. It can be used to provide additional context or information about the mode to the mode author.'
71
74
  )), descriptionRange);
72
75
  }
73
76
  const model = header.metadataUtility.model;
74
77
  if (model?.range.containsPosition(position)) {
75
- return this.getModelHover(model, model.range, ( localize(5448, 'The model to use in this mode.')));
78
+ return this.getModelHover(model, model.range, ( localize(5576, 'The model to use in this mode.')));
76
79
  }
77
80
  const tools = header.metadataUtility.tools;
78
- if (tools?.range?.containsPosition(position)) {
79
- return this.getToolHover(tools, position, ( localize(5449, 'The tools to use in this mode.')));
81
+ if (tools?.range.containsPosition(position)) {
82
+ return this.getToolHover(tools, position, ( localize(5577, 'The tools to use in this mode.')));
80
83
  }
81
84
  }
82
85
  else {
83
86
  const descriptionRange = header.metadataUtility.description?.range;
84
87
  if (descriptionRange?.containsPosition(position)) {
85
88
  return this.createHover(( localize(
86
- 5450,
89
+ 5578,
87
90
  'The description of the prompt file. It can be used to provide additional context or information about the prompt to the prompt author.'
88
91
  )), descriptionRange);
89
92
  }
90
93
  const model = header.metadataUtility.model;
91
94
  if (model?.range.containsPosition(position)) {
92
- return this.getModelHover(model, model.range, ( localize(5451, 'The model to use in this prompt.')));
95
+ return this.getModelHover(model, model.range, ( localize(5579, 'The model to use in this prompt.')));
93
96
  }
94
97
  const tools = header.metadataUtility.tools;
95
- if (tools?.range?.containsPosition(position)) {
96
- return this.getToolHover(tools, position, ( localize(5452, 'The tools to use in this prompt.')));
98
+ if (tools?.range.containsPosition(position)) {
99
+ return this.getToolHover(tools, position, ( localize(5580, 'The tools to use in this prompt.')));
97
100
  }
98
- const modeRange = header.metadataUtility.mode?.range;
99
- if (modeRange?.containsPosition(position)) {
100
- return this.createHover(( localize(5453, 'The mode (ask, edit or agent) to use when running this prompt.')), modeRange);
101
+ const mode = header.metadataUtility.mode;
102
+ if (mode?.range.containsPosition(position)) {
103
+ return this.getModeHover(mode, position, ( localize(5581, 'The mode to use in this prompt.')));
101
104
  }
102
105
  }
103
106
  return undefined;
@@ -122,7 +125,7 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
122
125
  }
123
126
  getToolsetHover(toolSet, range) {
124
127
  const lines = [];
125
- lines.push(( localize(5454, 'ToolSet: {0}\n\n', toolSet.referenceName)));
128
+ lines.push(( localize(5582, 'ToolSet: {0}\n\n', toolSet.referenceName)));
126
129
  if (toolSet.description) {
127
130
  lines.push(toolSet.description);
128
131
  }
@@ -136,14 +139,14 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
136
139
  if (modelName) {
137
140
  for (const id of this.languageModelsService.getLanguageModelIds()) {
138
141
  const meta = this.languageModelsService.lookupLanguageModel(id);
139
- if (meta && ILanguageModelChatMetadata.asQualifiedName(meta) === modelName) {
142
+ if (meta && ILanguageModelChatMetadata.matchesQualifiedName(modelName, meta)) {
140
143
  const lines = [];
141
144
  lines.push(baseMessage + '\n');
142
- lines.push(( localize(5455, '- Name: {0}', meta.name)));
143
- lines.push(( localize(5456, '- Family: {0}', meta.family)));
144
- lines.push(( localize(5457, '- Vendor: {0}', meta.vendor)));
145
- if (meta.description) {
146
- lines.push('', '', meta.description);
145
+ lines.push(( localize(5583, '- Name: {0}', meta.name)));
146
+ lines.push(( localize(5584, '- Family: {0}', meta.family)));
147
+ lines.push(( localize(5585, '- Vendor: {0}', meta.vendor)));
148
+ if (meta.tooltip) {
149
+ lines.push('', '', meta.tooltip);
147
150
  }
148
151
  return this.createHover(lines.join('\n'), range);
149
152
  }
@@ -151,12 +154,42 @@ let PromptHeaderHoverProvider = class PromptHeaderHoverProvider extends Disposab
151
154
  }
152
155
  return this.createHover(baseMessage, range);
153
156
  }
157
+ getModeHover(mode, position, baseMessage) {
158
+ const lines = [];
159
+ const value = mode.value;
160
+ if (value && mode.valueRange?.containsPosition(position)) {
161
+ const mode = this.chatModeService.findModeByName(value);
162
+ if (mode) {
163
+ const description = mode.description.get() || (isBuiltinChatMode(mode) ? ( localize(5586, 'Built-in chat mode')) : ( localize(5587, 'Custom chat mode')));
164
+ lines.push(`\`${mode.name}\`: ${description}`);
165
+ }
166
+ }
167
+ else {
168
+ const modes = this.chatModeService.getModes();
169
+ lines.push(( localize(5588, 'The chat mode to use when running this prompt.')));
170
+ lines.push('');
171
+ lines.push(( localize(5589, '**Built-in modes:**')));
172
+ for (const mode of modes.builtin) {
173
+ lines.push(`- \`${mode.name}\`: ${mode.description.get() || mode.label}`);
174
+ }
175
+ if (modes.custom.length > 0) {
176
+ lines.push('');
177
+ lines.push(( localize(5590, '**Custom modes:**')));
178
+ for (const mode of modes.custom) {
179
+ const description = mode.description.get();
180
+ lines.push(`- \`${mode.name}\`: ${description || ( localize(5587, 'Custom chat mode'))}`);
181
+ }
182
+ }
183
+ }
184
+ return this.createHover(lines.join('\n'), mode.range);
185
+ }
154
186
  };
155
187
  PromptHeaderHoverProvider = ( __decorate([
156
188
  ( __param(0, IPromptsService)),
157
189
  ( __param(1, ILanguageFeaturesService)),
158
190
  ( __param(2, ILanguageModelToolsService)),
159
- ( __param(3, ILanguageModelsService))
191
+ ( __param(3, ILanguageModelsService)),
192
+ ( __param(4, IChatModeService))
160
193
  ], PromptHeaderHoverProvider));
161
194
 
162
195
  export { PromptHeaderHoverProvider };
@@ -22,7 +22,7 @@ let PromptLinkDiagnosticsProvider = class PromptLinkDiagnosticsProvider extends
22
22
  const stats = await this.fileService.resolveAll(( this.parser.references.map(ref => ({ resource: ref.uri }))));
23
23
  for (let i = 0; i < stats.length; i++) {
24
24
  if (!stats[i].success) {
25
- markers.push(toMarker(this.parser.references[i], ( localize(5458, 'File not found.'))));
25
+ markers.push(toMarker(this.parser.references[i], ( localize(5591, 'File not found.'))));
26
26
  }
27
27
  }
28
28
  this.markerService.changeOne(MARKERS_OWNER_ID, this.model.uri, markers);
@@ -225,7 +225,7 @@ let BasePromptParser = class BasePromptParser extends ObservableDisposable {
225
225
  }
226
226
  if (tools !== undefined && mode !== ChatModeKind.Ask && mode !== ChatModeKind.Edit) {
227
227
  result.tools = tools;
228
- result.mode = ChatModeKind.Agent;
228
+ result.mode = mode || ChatModeKind.Agent;
229
229
  }
230
230
  else if (mode !== undefined) {
231
231
  result.mode = mode;
@@ -65,12 +65,12 @@ class HeaderBase extends Disposable {
65
65
  if (token instanceof SimpleToken) {
66
66
  return;
67
67
  }
68
- this.issues.push(( new PromptMetadataError(token.range, ( localize(5459, "Unexpected token '{0}'.", token.text)))));
68
+ this.issues.push(( new PromptMetadataError(token.range, ( localize(5592, "Unexpected token '{0}'.", token.text)))));
69
69
  return;
70
70
  }
71
71
  const recordName = token.nameToken.text;
72
72
  if (( this.recordNames.has(recordName))) {
73
- this.issues.push(( new PromptMetadataWarning(token.range, ( localize(5460, "Duplicate property '{0}' will be ignored.", recordName)))));
73
+ this.issues.push(( new PromptMetadataWarning(token.range, ( localize(5593, "Duplicate property '{0}' will be ignored.", recordName)))));
74
74
  return;
75
75
  }
76
76
  this.recordNames.add(recordName);
@@ -84,10 +84,10 @@ class HeaderBase extends Disposable {
84
84
  if (this.handleToken(token)) {
85
85
  return;
86
86
  }
87
- this.issues.push(( new PromptMetadataWarning(token.range, ( localize(5461, "Unknown property '{0}' will be ignored.", recordName)))));
87
+ this.issues.push(( new PromptMetadataWarning(token.range, ( localize(5594, "Unknown property '{0}' will be ignored.", recordName)))));
88
88
  }
89
89
  onError(error) {
90
- this.issues.push(( new PromptMetadataError(this.token.range, ( localize(5462, "Failed to parse prompt header: {0}", error.message)))));
90
+ this.issues.push(( new PromptMetadataError(this.token.range, ( localize(5595, "Failed to parse prompt header: {0}", error.message)))));
91
91
  }
92
92
  get settled() {
93
93
  return this.stream.settled;
@@ -40,7 +40,7 @@ class PromptApplyToMetadata extends PromptStringMetadata {
40
40
  }
41
41
  if (this.languageId !== INSTRUCTIONS_LANGUAGE_ID) {
42
42
  this.issues.push(( new PromptMetadataError(this.range, ( localize(
43
- 5463,
43
+ 5596,
44
44
  "The '{0}' header property is only valid in instruction files.",
45
45
  this.recordName
46
46
  )))));
@@ -49,7 +49,7 @@ class PromptApplyToMetadata extends PromptStringMetadata {
49
49
  }
50
50
  const { cleanText } = this.valueToken;
51
51
  if (this.isValidGlob(cleanText) === false) {
52
- this.issues.push(( new PromptMetadataWarning(this.valueToken.range, ( localize(5464, "Invalid glob pattern '{0}'.", cleanText)))));
52
+ this.issues.push(( new PromptMetadataWarning(this.valueToken.range, ( localize(5597, "Invalid glob pattern '{0}'.", cleanText)))));
53
53
  delete this.valueToken;
54
54
  return this.issues;
55
55
  }
@@ -2,6 +2,7 @@ import { PromptMetadataRecord } from "./record.js";
2
2
  import { PromptMetadataDiagnostic } from "../../diagnostics.js";
3
3
  import { FrontMatterSequence } from "../../../../codecs/base/frontMatterCodec/tokens/frontMatterSequence.js";
4
4
  import { FrontMatterRecord, FrontMatterString } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/codecs/base/frontMatterCodec/tokens/index";
5
+ import { Range } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range";
5
6
  /**
6
7
  * Base class for all metadata records with a `string` value.
7
8
  */
@@ -14,6 +15,7 @@ export declare abstract class PromptStringMetadata extends PromptMetadataRecord<
14
15
  * String value of a metadata record.
15
16
  */
16
17
  get value(): string | undefined;
18
+ get valueRange(): Range | undefined;
17
19
  constructor(expectedRecordName: string, recordToken: FrontMatterRecord, languageId: string);
18
20
  /**
19
21
  * Validate the metadata record has a 'string' value.
@@ -28,6 +28,9 @@ class PromptStringMetadata extends PromptMetadataRecord {
28
28
  get value() {
29
29
  return this.valueToken?.cleanText;
30
30
  }
31
+ get valueRange() {
32
+ return this.valueToken?.range;
33
+ }
31
34
  constructor(expectedRecordName, recordToken, languageId) {
32
35
  super(expectedRecordName, recordToken, languageId);
33
36
  }
@@ -40,8 +43,8 @@ class PromptStringMetadata extends PromptMetadataRecord {
40
43
  return this.issues;
41
44
  }
42
45
  this.issues.push(( new PromptMetadataError(valueToken.range, ( localize(
43
- 5466,
44
- "The '{0}' metadata must be a '{1}', got '{2}'.",
46
+ 5598,
47
+ "The property '{0}' must be of type '{1}', got '{2}'.",
45
48
  this.recordName,
46
49
  'string',
47
50
  (valueToken.valueTypeName.toString())
@@ -1,10 +1,10 @@
1
- import { ChatModeKind } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants";
2
- import { PromptEnumMetadata } from "./base/enum.js";
1
+ import { PromptStringMetadata } from "./base/string.js";
3
2
  import { FrontMatterRecord, FrontMatterToken } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/codecs/base/frontMatterCodec/tokens/index";
4
3
  /**
5
4
  * Prompt `mode` metadata record inside the prompt header.
5
+ * Now supports both built-in modes (ask, edit, agent) and custom mode IDs.
6
6
  */
7
- export declare class PromptModeMetadata extends PromptEnumMetadata<ChatModeKind> {
7
+ export declare class PromptModeMetadata extends PromptStringMetadata {
8
8
  constructor(recordToken: FrontMatterRecord, languageId: string);
9
9
  /**
10
10
  * Check if a provided front matter token is a metadata record
@@ -1,6 +1,5 @@
1
1
 
2
- import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
3
- import { PromptEnumMetadata } from './base/enum.js';
2
+ import { PromptStringMetadata } from './base/string.js';
4
3
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
5
4
  import '../../../codecs/base/simpleCodec/tokens/at.js';
6
5
  import '../../../codecs/base/simpleCodec/tokens/tab.js';
@@ -23,9 +22,9 @@ import '../../../codecs/base/simpleCodec/tokens/angleBrackets.js';
23
22
  import { FrontMatterRecord } from '../../../codecs/base/frontMatterCodec/tokens/frontMatterRecord.js';
24
23
 
25
24
  const RECORD_NAME = 'mode';
26
- class PromptModeMetadata extends PromptEnumMetadata {
25
+ class PromptModeMetadata extends PromptStringMetadata {
27
26
  constructor(recordToken, languageId) {
28
- super([ChatModeKind.Ask, ChatModeKind.Edit, ChatModeKind.Agent], RECORD_NAME, recordToken, languageId);
27
+ super(RECORD_NAME, recordToken, languageId);
29
28
  }
30
29
  static isModeRecord(token) {
31
30
  if ((token instanceof FrontMatterRecord) === false) {
@@ -44,7 +44,7 @@ class PromptToolsMetadata extends PromptMetadataRecord {
44
44
  const { valueToken } = this.recordToken;
45
45
  if ((valueToken instanceof FrontMatterArray) === false) {
46
46
  this.issues.push(( new PromptMetadataError(valueToken.range, ( localize(
47
- 5467,
47
+ 5599,
48
48
  "Must be an array of tool names, got '{0}'.",
49
49
  (valueToken.valueTypeName.toString())
50
50
  )))));
@@ -66,7 +66,7 @@ class PromptToolsMetadata extends PromptMetadataRecord {
66
66
  if ((valueToken instanceof FrontMatterString) === false &&
67
67
  (valueToken instanceof FrontMatterSequence) === false) {
68
68
  issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(
69
- 5468,
69
+ 5600,
70
70
  "Unexpected tool name '{0}', expected a string literal.",
71
71
  valueToken.text
72
72
  )))));
@@ -74,11 +74,11 @@ class PromptToolsMetadata extends PromptMetadataRecord {
74
74
  }
75
75
  const cleanToolName = valueToken.cleanText.trim();
76
76
  if (cleanToolName.length === 0) {
77
- issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(5469, "Tool name cannot be empty.")))));
77
+ issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(5601, "Tool name cannot be empty.")))));
78
78
  return issues;
79
79
  }
80
80
  if (( validToolNames.has(cleanToolName))) {
81
- issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(5470, "Duplicate tool name '{0}'.", cleanToolName)))));
81
+ issues.push(( new PromptMetadataWarning(valueToken.range, ( localize(5602, "Duplicate tool name '{0}'.", cleanToolName)))));
82
82
  return issues;
83
83
  }
84
84
  validToolNames.set(cleanToolName, valueToken.range);
@@ -32,11 +32,6 @@ export type TPromptMetadata = Partial<TDehydrated<IPromptMetadata>> & {
32
32
  */
33
33
  export declare class PromptHeader extends HeaderBase<IPromptMetadata> {
34
34
  protected handleToken(token: FrontMatterRecord): boolean;
35
- /**
36
- * Check if value of `tools` and `mode` metadata
37
- * are compatible with each other.
38
- */
39
- private get toolsAndModeCompatible();
40
35
  /**
41
36
  * Validate that the `tools` and `mode` metadata are compatible
42
37
  * with each other. If not, add a warning diagnostic.
@@ -2,8 +2,6 @@
2
2
  import { ChatModeKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
3
3
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
4
  import { PromptMetadataWarning } from './diagnostics.js';
5
- import { assert } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
6
- import { assertDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
7
5
  import { HeaderBase } from './headerBase.js';
8
6
  import { PromptModelMetadata } from './metadata/model.js';
9
7
  import { PromptToolsMetadata } from './metadata/tools.js';
@@ -33,29 +31,16 @@ class PromptHeader extends HeaderBase {
33
31
  }
34
32
  return false;
35
33
  }
36
- get toolsAndModeCompatible() {
37
- const { tools, mode } = this.meta;
38
- if (tools === undefined) {
39
- return true;
40
- }
41
- if (mode?.value === undefined) {
42
- return true;
43
- }
44
- return (mode.value === ChatModeKind.Agent);
45
- }
46
34
  validateToolsAndModeCompatibility() {
47
- if (this.toolsAndModeCompatible === true) {
48
- return;
49
- }
50
35
  const { tools, mode } = this.meta;
51
- assertDefined(tools, 'Tools metadata must have been present.');
52
- assertDefined(mode, 'Mode metadata must have been present.');
53
- assert(mode.value !== ChatModeKind.Agent, 'Mode metadata must not be agent mode.');
54
- this.issues.push(( new PromptMetadataWarning(tools.range, ( localize(
55
- 5471,
56
- "Tools can only be used when in 'agent' mode, but the mode is set to '{0}'. The tools will be ignored.",
57
- mode.value
58
- )))));
36
+ const modeValue = mode?.value;
37
+ if (tools !== undefined && (modeValue === ChatModeKind.Edit || modeValue === ChatModeKind.Ask)) {
38
+ this.issues.push(( new PromptMetadataWarning(tools.range, ( localize(
39
+ 5603,
40
+ "Tools can not be used in '{0}' mode and will be ignored.",
41
+ modeValue
42
+ )))));
43
+ }
59
44
  }
60
45
  }
61
46
 
@@ -15,29 +15,29 @@ class TopError {
15
15
  const { originalError, parentUri, errorSubject: subject, errorsCount } = this;
16
16
  assert(errorsCount >= 1, `Error count must be at least 1, got '${errorsCount}'.`);
17
17
  const moreIssuesLabel = (errorsCount > 1)
18
- ? ( localize(5472, "\n(+{0} more issues)", errorsCount - 1))
18
+ ? ( localize(5604, "\n(+{0} more issues)", errorsCount - 1))
19
19
  : '';
20
20
  if (subject === 'root') {
21
21
  if (originalError instanceof OpenFailed) {
22
- return localize(5473, "Cannot open '{0}'.{1}", originalError.uri.path, moreIssuesLabel);
22
+ return localize(5605, "Cannot open '{0}'.{1}", originalError.uri.path, moreIssuesLabel);
23
23
  }
24
24
  if (originalError instanceof FailedToResolveContentsStream) {
25
- return localize(5474, "Cannot read '{0}'.{1}", originalError.uri.path, moreIssuesLabel);
25
+ return localize(5606, "Cannot read '{0}'.{1}", originalError.uri.path, moreIssuesLabel);
26
26
  }
27
27
  if (originalError instanceof RecursiveReference) {
28
- return localize(5475, "Recursion to itself.");
28
+ return localize(5607, "Recursion to itself.");
29
29
  }
30
30
  return originalError.message + moreIssuesLabel;
31
31
  }
32
32
  assertDefined(parentUri, 'Parent URI must be defined for error of non-root link.');
33
33
  const errorMessageStart = (subject === 'child')
34
- ? ( localize(5476, "Contains"))
35
- : ( localize(5477, "Indirectly referenced prompt '{0}' contains", parentUri.path));
34
+ ? ( localize(5608, "Contains"))
35
+ : ( localize(5609, "Indirectly referenced prompt '{0}' contains", parentUri.path));
36
36
  const linkIssueName = (originalError instanceof RecursiveReference)
37
- ? ( localize(5478, "recursive"))
38
- : ( localize(5479, "broken"));
37
+ ? ( localize(5610, "recursive"))
38
+ : ( localize(5611, "broken"));
39
39
  return localize(
40
- 5480,
40
+ 5612,
41
41
  "{0} a {1} link to '{2}' that will be ignored.{3}",
42
42
  errorMessageStart,
43
43
  linkIssueName,