@codingame/monaco-vscode-chat-service-override 17.2.0 → 18.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 (159) hide show
  1. package/index.js +7 -4
  2. package/package.json +36 -30
  3. package/vscode/src/vs/base/common/objectCache.d.ts +2 -2
  4. package/vscode/src/vs/base/common/objectCache.js +3 -3
  5. package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +10 -0
  6. package/vscode/src/vs/platform/browserElements/common/browserElements.js +9 -0
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +40 -40
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.d.ts +6 -0
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +158 -0
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +1 -1
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +13 -13
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.d.ts +8 -0
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +256 -0
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +3 -4
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +234 -572
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +4 -4
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -3
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +1 -1
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +5 -5
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +29 -19
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +1 -0
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +107 -0
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +3 -0
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +344 -0
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +4 -3
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +84 -37
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.d.ts +18 -3
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.js +137 -14
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatModeActions.d.ts +1 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatModeActions.js +54 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatRunPromptAction.js +40 -10
  35. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.d.ts +1 -1
  36. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.js +3 -3
  37. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.d.ts +15 -5
  38. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.js +171 -101
  39. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.d.ts +2 -2
  40. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.js +2 -2
  41. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/runPrompt.d.ts +1 -1
  42. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.d.ts +0 -1
  43. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.js +2 -1
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +176 -69
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +1 -1
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +15 -29
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +2 -2
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +22 -22
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +35 -29
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -0
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +80 -32
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +5 -3
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +11 -9
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +12 -11
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +13 -11
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +2 -2
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +15 -13
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +3 -5
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +10 -9
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +18 -8
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +1 -1
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +118 -33
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +2 -2
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +5 -5
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +1 -3
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +46 -48
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +49 -0
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +379 -0
  70. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
  71. package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +1 -1
  72. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
  73. package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +31 -10
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +2 -1
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +382 -152
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +1 -1
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +99 -56
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +11 -1
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +1 -3
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +9 -21
  82. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  83. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +10 -6
  84. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
  85. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +18 -5
  86. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +95 -24
  87. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSetup.css +92 -5
  88. package/vscode/src/vs/workbench/contrib/chat/browser/media/github.svg +1 -0
  89. package/vscode/src/vs/workbench/contrib/chat/browser/media/google.svg +6 -0
  90. package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +10 -4
  91. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.d.ts +1 -0
  92. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.js +111 -111
  93. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.d.ts +3 -4
  94. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.js +36 -10
  95. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.d.ts +5 -17
  96. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.js +91 -17
  97. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/errors.js +2 -2
  98. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/utils/createPromptFile.d.ts +1 -4
  99. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/utils/createPromptFile.js +4 -5
  100. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.d.ts +1 -0
  101. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +95 -0
  102. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +24 -0
  103. package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +348 -0
  104. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
  105. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +2 -2
  106. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +2 -2
  107. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.d.ts +30 -0
  108. package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +93 -0
  109. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +5 -2
  110. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +46 -36
  111. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +2 -2
  112. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.d.ts +5 -1
  113. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.js +21 -11
  114. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/index.js +6 -1
  115. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/index.js +3 -2
  116. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.d.ts +4 -3
  117. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.js +12 -8
  118. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.d.ts +3 -3
  119. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.js +1 -2
  120. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkProvider.js +3 -3
  121. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptPathAutocompletion.js +5 -5
  122. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.d.ts +2 -1
  123. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.js +9 -5
  124. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.d.ts +3 -2
  125. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.js +12 -8
  126. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.d.ts +1 -1
  127. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.js +3 -3
  128. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +21 -10
  129. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +111 -124
  130. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +22 -8
  131. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +159 -97
  132. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.d.ts +15 -3
  133. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.js +2 -14
  134. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +8 -2
  135. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +198 -33
  136. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
  137. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +7 -7
  138. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +1 -1
  139. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +28 -18
  140. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -1
  141. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
  142. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  143. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.d.ts +0 -6
  144. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.js +0 -73
  145. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.d.ts +0 -29
  146. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.js +0 -74
  147. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.d.ts +0 -14
  148. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.js +0 -40
  149. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.d.ts +0 -23
  150. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.js +0 -40
  151. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.d.ts +0 -5
  152. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.js +0 -9
  153. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.d.ts +0 -23
  154. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.js +0 -68
  155. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/types.d.ts +0 -13
  156. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.d.ts +0 -19
  157. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.js +0 -121
  158. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.d.ts +0 -13
  159. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.js +0 -13
@@ -2,109 +2,106 @@
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
3
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
4
  import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
5
- import { OS } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
6
5
  import { assert } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
7
6
  import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
8
7
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
9
- import { extUri, dirname } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
8
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/types.service';
9
+ import { extUri, dirname, joinPath } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
10
10
  import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
11
  import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
12
12
  import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
13
13
  import { IOpenerService } from '@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service';
14
- import { UILabelProvider } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keybindingLabels';
15
14
  import { IDialogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service';
16
- import { getCleanPromptName } from '@codingame/monaco-vscode-51fed910-d648-5620-9b80-9232cd79d116-common/vscode/vs/platform/prompts/common/constants';
17
- import { PROMPT_DOCUMENTATION_URL, INSTRUCTIONS_DOCUMENTATION_URL } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/constants';
18
- import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
19
15
  import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
20
- import { NEW_INSTRUCTIONS_COMMAND_ID, NEW_PROMPT_COMMAND_ID } from '../../../../promptSyntax/contributions/createPromptCommand/createPromptCommand.js';
16
+ import { PromptsType, getCleanPromptName } from '@codingame/monaco-vscode-47472025-cc45-5680-86cd-09ceaba921a1-common/vscode/vs/platform/prompts/common/prompts';
17
+ import { PROMPT_DOCUMENTATION_URL, INSTRUCTIONS_DOCUMENTATION_URL, MODE_DOCUMENTATION_URL } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/constants';
18
+ import { NEW_PROMPT_COMMAND_ID, NEW_INSTRUCTIONS_COMMAND_ID, NEW_MODE_COMMAND_ID } from '../../../../promptSyntax/contributions/createPromptCommand/createPromptCommand.js';
19
+ import { IQuickInputService } from '@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service';
20
+ import { askForPromptFileName } from '../../../../promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.js';
21
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
22
+ import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
23
+ import { askForPromptSourceFolder } from '../../../../promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.js';
24
+ import { UILabelProvider } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keybindingLabels';
25
+ import { OS } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
21
26
 
22
27
  const HELP_BUTTON = ( Object.freeze({
23
- tooltip: ( localize(4508, "help")),
28
+ tooltip: ( localize(4542, "Help")),
24
29
  iconClass: ThemeIcon.asClassName(Codicon.question),
25
30
  }));
26
31
  const NEW_PROMPT_FILE_OPTION = ( Object.freeze({
27
32
  type: 'item',
28
- label: `$(plus) ${( localize(4509, 'New prompt file...'))}`,
33
+ label: `$(plus) ${( localize(4543, 'New prompt file...'))}`,
29
34
  value: ( URI.parse(PROMPT_DOCUMENTATION_URL)),
30
35
  pickable: false,
31
36
  alwaysShow: true,
32
37
  buttons: [HELP_BUTTON],
38
+ commandId: NEW_PROMPT_COMMAND_ID,
33
39
  }));
34
40
  const NEW_INSTRUCTIONS_FILE_OPTION = ( Object.freeze({
35
41
  type: 'item',
36
- label: `$(plus) ${( localize(4510, 'Create new instruction file...'))}`,
42
+ label: `$(plus) ${( localize(4544, 'Create new instruction file...'))}`,
37
43
  value: ( URI.parse(INSTRUCTIONS_DOCUMENTATION_URL)),
38
44
  pickable: false,
39
45
  alwaysShow: true,
40
46
  buttons: [HELP_BUTTON],
47
+ commandId: NEW_INSTRUCTIONS_COMMAND_ID,
48
+ }));
49
+ const NEW_MODE_FILE_OPTION = ( Object.freeze({
50
+ type: 'item',
51
+ label: `$(plus) ${( localize(4545, 'Create new custom chat mode file...'))}`,
52
+ value: ( URI.parse(MODE_DOCUMENTATION_URL)),
53
+ pickable: false,
54
+ alwaysShow: true,
55
+ buttons: [HELP_BUTTON],
56
+ commandId: NEW_MODE_COMMAND_ID,
41
57
  }));
42
58
  const EDIT_BUTTON = ( Object.freeze({
43
- tooltip: ( localize(4511, "edit ({0}-key + enter)", UILabelProvider.modifierLabels[OS].ctrlKey)),
59
+ tooltip: ( localize(4546, "Open in Editor")),
44
60
  iconClass: ThemeIcon.asClassName(Codicon.edit),
45
61
  }));
46
62
  const DELETE_BUTTON = ( Object.freeze({
47
- tooltip: ( localize(4512, "delete")),
63
+ tooltip: ( localize(4547, "Delete")),
48
64
  iconClass: ThemeIcon.asClassName(Codicon.trash),
49
65
  }));
66
+ const RENAME_BUTTON = ( Object.freeze({
67
+ tooltip: ( localize(4548, "Rename")),
68
+ iconClass: ThemeIcon.asClassName(Codicon.replace),
69
+ }));
70
+ const COPY_BUTTON = ( Object.freeze({
71
+ tooltip: ( localize(
72
+ 4549,
73
+ "Copy or Move (press {0})",
74
+ UILabelProvider.modifierLabels[OS].ctrlKey
75
+ )),
76
+ iconClass: ThemeIcon.asClassName(Codicon.copy),
77
+ }));
50
78
  let PromptFilePickers = class PromptFilePickers {
51
- constructor(_labelService, _quickInputService, _openerService, _fileService, _dialogService, _commandService) {
79
+ constructor(_labelService, _quickInputService, _openerService, _fileService, _dialogService, _commandService, _instaService, _promptsService) {
52
80
  this._labelService = _labelService;
53
81
  this._quickInputService = _quickInputService;
54
82
  this._openerService = _openerService;
55
83
  this._fileService = _fileService;
56
84
  this._dialogService = _dialogService;
57
85
  this._commandService = _commandService;
58
- }
59
- async selectInstructionsFiles(options) {
60
- const fileOptions = this._createPromptPickItems(options);
61
- fileOptions.splice(0, 0, NEW_INSTRUCTIONS_FILE_OPTION);
62
- const activeItem = options.resource && fileOptions.find(f => extUri.isEqual(f.value, options.resource));
63
- const quickPick = this._quickInputService.createQuickPick();
64
- quickPick.activeItems = [activeItem ?? NEW_INSTRUCTIONS_FILE_OPTION];
65
- quickPick.placeholder = options.placeholder;
66
- quickPick.canAcceptInBackground = true;
67
- quickPick.matchOnDescription = true;
68
- quickPick.items = fileOptions;
69
- return ( new Promise(resolve => {
70
- const disposables = ( new DisposableStore());
71
- let isResolved = false;
72
- disposables.add({
73
- dispose() {
74
- quickPick.dispose();
75
- if (!isResolved) {
76
- resolve(undefined);
77
- isResolved = true;
78
- }
79
- },
80
- });
81
- disposables.add(quickPick.onDidAccept(async (event) => {
82
- const { selectedItems } = quickPick;
83
- if (selectedItems[0] === NEW_INSTRUCTIONS_FILE_OPTION) {
84
- await this._commandService.executeCommand(NEW_INSTRUCTIONS_COMMAND_ID);
85
- return;
86
- }
87
- resolve(( selectedItems.map(item => item.value)));
88
- isResolved = true;
89
- if (!event.inBackground) {
90
- disposables.dispose();
91
- }
92
- }));
93
- disposables.add(quickPick.onDidTriggerItemButton(e => this._handleButtonClick(quickPick, e)));
94
- disposables.add(quickPick.onDidHide(disposables.dispose.bind(disposables)));
95
- quickPick.show();
96
- }));
86
+ this._instaService = _instaService;
87
+ this._promptsService = _promptsService;
97
88
  }
98
89
  async selectPromptFile(options) {
99
- const fileOptions = this._createPromptPickItems(options);
100
- fileOptions.splice(0, 0, NEW_PROMPT_FILE_OPTION);
101
- const activeItem = options.resource && fileOptions.find(f => extUri.isEqual(f.value, options.resource));
102
90
  const quickPick = this._quickInputService.createQuickPick();
103
- quickPick.activeItems = [activeItem ?? NEW_PROMPT_FILE_OPTION];
104
- quickPick.placeholder = options.placeholder;
105
- quickPick.canAcceptInBackground = true;
106
- quickPick.matchOnDescription = true;
107
- quickPick.items = fileOptions;
91
+ quickPick.busy = true;
92
+ quickPick.placeholder = ( localize(4550, 'Searching file system...'));
93
+ try {
94
+ const fileOptions = await this._createPromptPickItems(options);
95
+ const activeItem = options.resource && fileOptions.find(f => extUri.isEqual(f.value, options.resource));
96
+ quickPick.activeItems = [activeItem ?? fileOptions[0]];
97
+ quickPick.placeholder = options.placeholder;
98
+ quickPick.canAcceptInBackground = true;
99
+ quickPick.matchOnDescription = true;
100
+ quickPick.items = fileOptions;
101
+ }
102
+ finally {
103
+ quickPick.busy = false;
104
+ }
108
105
  return ( new Promise(resolve => {
109
106
  const disposables = ( new DisposableStore());
110
107
  let isResolved = false;
@@ -121,8 +118,8 @@ let PromptFilePickers = class PromptFilePickers {
121
118
  const { selectedItems } = quickPick;
122
119
  const { keyMods } = quickPick;
123
120
  const selectedItem = selectedItems[0];
124
- if (selectedItem === NEW_PROMPT_FILE_OPTION) {
125
- await this._commandService.executeCommand(NEW_PROMPT_COMMAND_ID);
121
+ if (selectedItem.commandId) {
122
+ await this._commandService.executeCommand(selectedItem.commandId);
126
123
  return;
127
124
  }
128
125
  if (selectedItem) {
@@ -133,27 +130,41 @@ let PromptFilePickers = class PromptFilePickers {
133
130
  disposables.dispose();
134
131
  }
135
132
  }));
136
- disposables.add(quickPick.onDidTriggerItemButton(e => this._handleButtonClick(quickPick, e)));
133
+ disposables.add(quickPick.onDidTriggerItemButton(e => this._handleButtonClick(quickPick, e, options)));
137
134
  disposables.add(quickPick.onDidHide(disposables.dispose.bind(disposables)));
138
135
  quickPick.show();
139
136
  }));
140
137
  }
141
- _createPromptPickItems(options) {
142
- const { promptFiles, resource } = options;
138
+ async _createPromptPickItems(options) {
139
+ const { resource } = options;
140
+ const buttons = [];
141
+ if (options.optionEdit !== false) {
142
+ buttons.push(EDIT_BUTTON);
143
+ }
144
+ if (options.optionCopy !== false) {
145
+ buttons.push(COPY_BUTTON);
146
+ }
147
+ if (options.optionRename !== false) {
148
+ buttons.push(RENAME_BUTTON);
149
+ }
150
+ if (options.optionDelete !== false) {
151
+ buttons.push(DELETE_BUTTON);
152
+ }
153
+ const promptFiles = await this._promptsService.listPromptFiles(options.type, CancellationToken.None);
143
154
  const fileOptions = ( promptFiles.map((promptFile) => {
144
- return this._createPromptPickItem(promptFile);
155
+ return this._createPromptPickItem(promptFile, buttons);
145
156
  }));
146
157
  let activeItem;
147
- if (resource) {
158
+ if (options.resource) {
148
159
  activeItem = fileOptions.find((file) => {
149
- return extUri.isEqual(file.value, resource);
160
+ return extUri.isEqual(file.value, options.resource);
150
161
  });
151
162
  if (!activeItem) {
152
163
  activeItem = this._createPromptPickItem({
153
- uri: resource,
164
+ uri: options.resource,
154
165
  storage: 'local',
155
- type: 'instructions',
156
- });
166
+ type: options.type,
167
+ }, buttons);
157
168
  fileOptions.push(activeItem);
158
169
  }
159
170
  fileOptions.sort((file1, file2) => {
@@ -166,13 +177,29 @@ let PromptFilePickers = class PromptFilePickers {
166
177
  return 0;
167
178
  });
168
179
  }
180
+ const newItem = options.optionNew !== false ? this._getNewItem(options.type) : undefined;
181
+ if (newItem) {
182
+ fileOptions.splice(0, 0, newItem);
183
+ }
169
184
  return fileOptions;
170
185
  }
171
- _createPromptPickItem(promptFile) {
186
+ _getNewItem(type) {
187
+ switch (type) {
188
+ case PromptsType.prompt:
189
+ return NEW_PROMPT_FILE_OPTION;
190
+ case PromptsType.instructions:
191
+ return NEW_INSTRUCTIONS_FILE_OPTION;
192
+ case PromptsType.mode:
193
+ return NEW_MODE_FILE_OPTION;
194
+ default:
195
+ throw ( new Error(`Unknown prompt type '${type}'.`));
196
+ }
197
+ }
198
+ _createPromptPickItem(promptFile, buttons) {
172
199
  const { uri, storage } = promptFile;
173
200
  const fileWithoutExtension = getCleanPromptName(uri);
174
201
  const description = (storage === 'user')
175
- ? ( localize(4513, 'User data folder'))
202
+ ? ( localize(4551, 'User data folder'))
176
203
  : this._labelService.getUriLabel(dirname(uri), { relative: true });
177
204
  const tooltip = (storage === 'user')
178
205
  ? description
@@ -184,45 +211,86 @@ let PromptFilePickers = class PromptFilePickers {
184
211
  description,
185
212
  tooltip,
186
213
  value: uri,
187
- buttons: [EDIT_BUTTON, DELETE_BUTTON],
214
+ buttons
188
215
  };
189
216
  }
190
- async _handleButtonClick(quickPick, context) {
217
+ async keepQuickPickOpen(quickPick, work) {
218
+ const previousIgnoreFocusOut = quickPick.ignoreFocusOut;
219
+ quickPick.ignoreFocusOut = true;
220
+ try {
221
+ await work();
222
+ }
223
+ finally {
224
+ quickPick.ignoreFocusOut = previousIgnoreFocusOut;
225
+ }
226
+ }
227
+ async _handleButtonClick(quickPick, context, options) {
191
228
  const { item, button } = context;
192
- const { value } = item;
229
+ const { value, } = item;
193
230
  if (button === EDIT_BUTTON) {
194
- return await this._openerService.open(value);
231
+ await this._openerService.open(value);
232
+ return;
233
+ }
234
+ if (button === COPY_BUTTON) {
235
+ const currentFolder = dirname(value);
236
+ const isMove = quickPick.keyMods.ctrlCmd;
237
+ const newFolder = await this._instaService.invokeFunction(askForPromptSourceFolder, options.type, currentFolder, isMove);
238
+ if (!newFolder) {
239
+ return;
240
+ }
241
+ const newName = await this._instaService.invokeFunction(askForPromptFileName, options.type, newFolder.uri, item.label);
242
+ if (!newName) {
243
+ return;
244
+ }
245
+ const newFile = joinPath(newFolder.uri, newName);
246
+ if (isMove) {
247
+ await this._fileService.move(value, newFile);
248
+ }
249
+ else {
250
+ await this._fileService.copy(value, newFile);
251
+ }
252
+ await this._openerService.open(newFile);
253
+ return;
254
+ }
255
+ if (button === RENAME_BUTTON) {
256
+ const currentFolder = dirname(value);
257
+ const newName = await this._instaService.invokeFunction(askForPromptFileName, options.type, currentFolder, item.label);
258
+ if (newName) {
259
+ const newFile = joinPath(currentFolder, newName);
260
+ await this._fileService.move(value, newFile);
261
+ await this._openerService.open(newFile);
262
+ }
263
+ return;
195
264
  }
196
265
  if (button === DELETE_BUTTON) {
197
266
  assert((quickPick.activeItems.length < 2), `Expected maximum one active item, got '${quickPick.activeItems.length}'.`);
198
267
  const activeItem = quickPick.activeItems[0];
199
268
  const info = await this._fileService.stat(value);
200
269
  assert(info.isDirectory === false, `'${value.fsPath}' points to a folder.`);
201
- const previousIgnoreFocusOut = quickPick.ignoreFocusOut;
202
- quickPick.ignoreFocusOut = true;
203
- const filename = getCleanPromptName(value);
204
- const { confirmed } = await this._dialogService.confirm({
205
- message: ( localize(4514, "Are you sure you want to delete '{0}'?", filename)),
206
- });
207
- quickPick.ignoreFocusOut = previousIgnoreFocusOut;
208
- if (!confirmed) {
209
- return;
210
- }
211
- await this._fileService.del(value);
212
- let removedIndex = -1;
213
- quickPick.items = quickPick.items.filter((option, index) => {
214
- if (option === item) {
215
- removedIndex = index;
216
- return false;
270
+ await this.keepQuickPickOpen(quickPick, async () => {
271
+ const filename = getCleanPromptName(value);
272
+ const { confirmed } = await this._dialogService.confirm({
273
+ message: ( localize(4552, "Are you sure you want to delete '{0}'?", filename)),
274
+ });
275
+ if (!confirmed) {
276
+ return;
277
+ }
278
+ await this._fileService.del(value);
279
+ let removedIndex = -1;
280
+ quickPick.items = quickPick.items.filter((option, index) => {
281
+ if (option === item) {
282
+ removedIndex = index;
283
+ return false;
284
+ }
285
+ return true;
286
+ });
287
+ if (activeItem && (activeItem === item)) {
288
+ assert(removedIndex >= 0, 'Removed item index must be a valid index.');
289
+ const newActiveItemIndex = Math.max(removedIndex - 1, 0);
290
+ const newActiveItem = quickPick.items[newActiveItemIndex];
291
+ quickPick.activeItems = newActiveItem ? [newActiveItem] : [];
217
292
  }
218
- return true;
219
293
  });
220
- if (activeItem && (activeItem === item)) {
221
- assert(removedIndex >= 0, 'Removed item index must be a valid index.');
222
- const newActiveItemIndex = Math.max(removedIndex - 1, 0);
223
- const newActiveItem = quickPick.items[newActiveItemIndex];
224
- quickPick.activeItems = newActiveItem ? [newActiveItem] : [];
225
- }
226
294
  return;
227
295
  }
228
296
  if (button === HELP_BUTTON) {
@@ -238,7 +306,9 @@ PromptFilePickers = ( __decorate([
238
306
  ( __param(2, IOpenerService)),
239
307
  ( __param(3, IFileService)),
240
308
  ( __param(4, IDialogService)),
241
- ( __param(5, ICommandService))
309
+ ( __param(5, ICommandService)),
310
+ ( __param(6, IInstantiationService)),
311
+ ( __param(7, IPromptsService))
242
312
  ], PromptFilePickers));
243
313
 
244
314
  export { PromptFilePickers };
@@ -1,7 +1,7 @@
1
- import { IChatWidget } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/chat";
2
1
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
- import { IViewsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service";
4
2
  import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
3
+ import { IViewsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service";
4
+ import { IChatWidget } from "@codingame/monaco-vscode-7adbeffb-8051-54a9-8c9b-b62ce9e5836f-common/vscode/vs/workbench/contrib/chat/browser/chat";
5
5
  export interface IAttachOptions {
6
6
  readonly widget?: IChatWidget;
7
7
  readonly inNewChat?: boolean;
@@ -1,7 +1,7 @@
1
1
 
2
- import { showChatView } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/chat';
3
- import { ACTION_ID_NEW_CHAT } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/actions/chatClearActions';
4
2
  import { assertDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
3
+ import { showChatView } from '@codingame/monaco-vscode-7adbeffb-8051-54a9-8c9b-b62ce9e5836f-common/vscode/vs/workbench/contrib/chat/browser/chat';
4
+ import { ACTION_ID_NEW_CHAT } from '@codingame/monaco-vscode-3a35f433-1297-5707-ab58-c261b8180e6d-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
5
5
 
6
6
  const attachInstructionsFiles = async (files, options) => {
7
7
  const widget = await getChatWidgetObject(options);
@@ -1,4 +1,4 @@
1
- import { IChatWidget } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/chat";
1
+ import { IChatWidget } from "@codingame/monaco-vscode-7adbeffb-8051-54a9-8c9b-b62ce9e5836f-common/vscode/vs/workbench/contrib/chat/browser/chat";
2
2
  import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
3
  import { IViewsService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service";
4
4
  import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
@@ -1,2 +1 @@
1
- export { runAttachInstructionsAction } from "./chatAttachInstructionsAction.js";
2
1
  export declare const registerPromptActions: () => void;
@@ -2,12 +2,13 @@
2
2
  import { registerRunPromptActions } from './chatRunPromptAction.js';
3
3
  import { registerSaveToPromptActions } from './chatSaveToPromptAction.js';
4
4
  import { registerAttachPromptActions } from './chatAttachInstructionsAction.js';
5
- export { runAttachInstructionsAction } from './chatAttachInstructionsAction.js';
5
+ import { registerChatModeActions } from './chatModeActions.js';
6
6
 
7
7
  const registerPromptActions = () => {
8
8
  registerRunPromptActions();
9
9
  registerAttachPromptActions();
10
10
  registerSaveToPromptActions();
11
+ registerChatModeActions();
11
12
  };
12
13
 
13
14
  export { registerPromptActions };