@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.
- package/index.js +15 -7
- package/package.json +38 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +56 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +18 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +52 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +28 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +19 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +433 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +205 -551
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +52 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -163
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +20 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +32 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +22 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +47 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +33 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +74 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.js +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +37 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +238 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +257 -148
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +126 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +3 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +55 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +13 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +130 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +39 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +7 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +4 -8
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +153 -168
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +127 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +111 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +66 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +143 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +12 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.d.ts +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +41 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +55 -22
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +8 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +4 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +11 -5
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +28 -28
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +54 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +33 -31
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +9 -9
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +9 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +11 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +1 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +16 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +84 -25
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +55 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +15 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +72 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +19 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +85 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +35 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +448 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +30 -77
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +174 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +75 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +15 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +81 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.js → tools/getTerminalOutputTool.js} +5 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +59 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +452 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.d.ts → tools/runInTerminalTool.d.ts} +11 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.js → tools/runInTerminalTool.js} +282 -133
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.js +51 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/getTaskOutputTool.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +117 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.d.ts +3 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.js +54 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +36 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.js +8 -0
- package/vscode/src/vs/base/common/policy.d.ts +0 -41
- package/vscode/src/vs/base/common/policy.js +0 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +0 -738
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -42
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.d.ts +0 -67
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +0 -167
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +0 -63
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +0 -55
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +0 -163
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +0 -88
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +0 -80
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +0 -40
- /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 {
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
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
|
-
|
|
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 };
|