@codingame/monaco-vscode-chat-service-override 16.1.0 → 17.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 (188) hide show
  1. package/index.js +6 -6
  2. package/package.json +30 -27
  3. package/vscode/src/vs/base/common/objectCache.d.ts +1 -1
  4. package/vscode/src/vs/base/common/objectCache.js +1 -1
  5. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +41 -41
  6. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
  7. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +16 -15
  8. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +4 -6
  9. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +410 -443
  10. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +6 -6
  11. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
  12. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
  13. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +1 -7
  14. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +3 -18
  15. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +6 -6
  16. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +9 -12
  17. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
  18. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +1 -1
  19. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +4 -2
  20. package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +32 -28
  21. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.d.ts +10 -0
  22. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.js +61 -0
  23. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatRunPromptAction.d.ts +4 -0
  24. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatRunPromptAction.js +159 -0
  25. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.d.ts +9 -0
  26. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.js +140 -0
  27. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.d.ts +32 -0
  28. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.js +244 -0
  29. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.d.ts +12 -0
  30. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.js +30 -0
  31. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/runPrompt.d.ts +15 -0
  32. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/runPrompt.js +12 -0
  33. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.d.ts +2 -0
  34. package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.js +13 -0
  35. package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +171 -168
  36. package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +1 -1
  37. package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
  38. package/vscode/src/vs/workbench/contrib/chat/browser/chatEdinputInputContentProvider.js +1 -1
  39. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +5 -5
  40. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +48 -45
  41. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +5 -5
  42. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +46 -44
  43. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +118 -123
  44. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +5 -7
  45. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +45 -29
  46. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +12 -7
  47. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +48 -34
  48. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +3 -3
  49. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +53 -20
  50. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -2
  51. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +32 -15
  52. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +9 -23
  53. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +80 -268
  54. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +36 -0
  55. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +214 -0
  56. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.js +1 -1
  57. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
  58. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +7 -6
  59. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +26 -10
  60. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +7 -7
  61. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +186 -106
  62. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +19 -0
  63. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +129 -0
  64. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.d.ts +9 -0
  65. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +313 -0
  66. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +4 -6
  67. package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +12 -16
  68. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +0 -4
  69. package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +42 -181
  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 +3 -3
  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 +15 -1
  74. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +2 -5
  75. package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +484 -384
  76. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +2 -2
  77. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +187 -101
  78. package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusItemService.d.ts +4 -1
  79. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +3 -12
  80. package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +8 -52
  81. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +53 -0
  82. package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +264 -0
  83. package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
  84. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +28 -22
  85. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
  86. package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
  87. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +2 -1
  88. package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +41 -45
  89. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +8 -32
  90. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSetup.css +2 -18
  91. package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +20 -4
  92. package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +67 -0
  93. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.d.ts +6 -0
  94. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.js +73 -0
  95. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.d.ts +2 -1
  96. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.js +82 -67
  97. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.d.ts +4 -1
  98. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.js +44 -14
  99. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.d.ts +5 -4
  100. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.js +24 -14
  101. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/errors.js +2 -2
  102. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/utils/createPromptFile.js +2 -2
  103. package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
  104. package/vscode/src/vs/workbench/contrib/chat/common/chatCodeMapperService.d.ts +2 -0
  105. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +7 -1
  106. package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +14 -1
  107. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +8 -7
  108. package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +84 -80
  109. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
  110. package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
  111. package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +1 -0
  112. package/vscode/src/vs/workbench/contrib/chat/common/chatTransferService.d.ts +5 -1
  113. package/vscode/src/vs/workbench/contrib/chat/common/chatTransferService.js +27 -3
  114. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.d.ts +5 -0
  115. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.js +62 -0
  116. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/index.d.ts +3 -0
  117. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/index.js +16 -0
  118. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/index.d.ts +2 -0
  119. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/index.js +17 -0
  120. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.d.ts +29 -0
  121. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.js +74 -0
  122. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.d.ts +14 -0
  123. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.js +40 -0
  124. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.d.ts +23 -0
  125. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.js +40 -0
  126. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.d.ts +5 -0
  127. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.js +9 -0
  128. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.d.ts +23 -0
  129. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.js +68 -0
  130. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/types.d.ts +13 -0
  131. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.d.ts +19 -0
  132. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.js +121 -0
  133. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.d.ts +13 -0
  134. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.js +13 -0
  135. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.d.ts +15 -0
  136. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.js +62 -0
  137. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.d.ts +15 -0
  138. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.js +65 -0
  139. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptLinkProvider.js +3 -8
  140. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptPathAutocompletion.d.ts +2 -2
  141. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptPathAutocompletion.js +14 -19
  142. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.d.ts +11 -0
  143. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.js +22 -0
  144. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.d.ts +17 -0
  145. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.js +83 -0
  146. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.d.ts +4 -3
  147. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.js +8 -6
  148. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +17 -5
  149. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +223 -21
  150. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +5 -4
  151. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +28 -22
  152. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.d.ts +10 -0
  153. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.js +25 -0
  154. package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +20 -31
  155. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
  156. package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
  157. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +15 -12
  158. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
  159. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
  160. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +12 -12
  161. package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
  162. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +2 -2
  163. package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
  164. package/vscode/src/vs/workbench/services/workspaces/common/workspaceUtils.d.ts +0 -2
  165. package/vscode/src/vs/workbench/services/workspaces/common/workspaceUtils.js +1 -14
  166. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/chatAttachPromptAction.d.ts +0 -10
  167. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/chatAttachPromptAction.js +0 -54
  168. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/askToSelectPrompt.d.ts +0 -25
  169. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/askToSelectPrompt.js +0 -79
  170. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/constants.d.ts +0 -7
  171. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/constants.js +0 -27
  172. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/attachPrompts.d.ts +0 -5
  173. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/attachPrompts.js +0 -53
  174. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPlaceholderText.d.ts +0 -2
  175. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPlaceholderText.js +0 -19
  176. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPromptPickItem.d.ts +0 -5
  177. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPromptPickItem.js +0 -27
  178. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/handleButtonClick.d.ts +0 -13
  179. package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/handleButtonClick.js +0 -49
  180. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/usePromptCommand.d.ts +0 -6
  181. package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/usePromptCommand.js +0 -80
  182. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/constants.d.ts +0 -3
  183. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/constants.js +0 -13
  184. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/textModelContentsProvider.d.ts +0 -21
  185. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/textModelContentsProvider.js +0 -64
  186. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageFeatures/promptLinkDiagnosticsProvider.d.ts +0 -9
  187. package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageFeatures/promptLinkDiagnosticsProvider.js +0 -117
  188. /package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptLinkProvider.d.ts +0 -0
@@ -0,0 +1,61 @@
1
+
2
+ import { CHAT_CATEGORY } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
3
+ import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
5
+ import { assertDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
6
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/types.service';
7
+ import { PromptsConfig } from '@codingame/monaco-vscode-51fed910-d648-5620-9b80-9232cd79d116-common/vscode/vs/platform/prompts/common/config';
8
+ import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
9
+ import { PromptFilePickers } from './dialogs/askToSelectPrompt/promptFilePickers.js';
10
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
11
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
12
+ import { Action2, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
13
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
14
+ import { attachInstructionsFiles } from './dialogs/askToSelectPrompt/utils/attachInstructions.js';
15
+
16
+ const ATTACH_INSTRUCTIONS_ACTION_ID = 'workbench.action.chat.attach.instructions';
17
+ class AttachInstructionsAction extends Action2 {
18
+ constructor() {
19
+ super({
20
+ id: ATTACH_INSTRUCTIONS_ACTION_ID,
21
+ title: ( localize2(4501, "Attach Instructions...")),
22
+ f1: false,
23
+ precondition: ( ContextKeyExpr.and(PromptsConfig.enabledCtx, ChatContextKeys.enabled)),
24
+ category: CHAT_CATEGORY,
25
+ });
26
+ }
27
+ async run(accessor, options) {
28
+ const viewsService = accessor.get(IViewsService);
29
+ const promptsService = accessor.get(IPromptsService);
30
+ const commandService = accessor.get(ICommandService);
31
+ const instaService = accessor.get(IInstantiationService);
32
+ const pickers = instaService.createInstance(PromptFilePickers);
33
+ const { skipSelectionDialog, resource } = options;
34
+ const attachOptions = {
35
+ widget: options.widget,
36
+ viewsService,
37
+ commandService,
38
+ };
39
+ if (skipSelectionDialog === true) {
40
+ assertDefined(resource, 'Resource must be defined when skipping prompt selection dialog.');
41
+ const widget = await attachInstructionsFiles([resource], attachOptions);
42
+ widget.focusInput();
43
+ return;
44
+ }
45
+ const promptFiles = await promptsService.listPromptFiles('instructions');
46
+ const placeholder = ( localize(4502, 'Select instructions files to attach'));
47
+ const instructions = await pickers.selectInstructionsFiles({ promptFiles, resource, placeholder });
48
+ if (instructions !== undefined) {
49
+ const widget = await attachInstructionsFiles(instructions, attachOptions);
50
+ widget.focusInput();
51
+ }
52
+ }
53
+ }
54
+ const runAttachInstructionsAction = async (commandService, options) => {
55
+ return await commandService.executeCommand(ATTACH_INSTRUCTIONS_ACTION_ID, options);
56
+ };
57
+ const registerAttachPromptActions = () => {
58
+ registerAction2(AttachInstructionsAction);
59
+ };
60
+
61
+ export { registerAttachPromptActions, runAttachInstructionsAction };
@@ -0,0 +1,4 @@
1
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
+ import { ServicesAccessor } from "@codingame/monaco-vscode-api/vscode/vs/editor/browser/editorExtensions";
3
+ export declare const getActivePromptFileUri: (accessor: ServicesAccessor) => URI | undefined;
4
+ export declare const registerRunPromptActions: () => void;
@@ -0,0 +1,159 @@
1
+
2
+ import { CHAT_CATEGORY } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
3
+ import { OS } from '@codingame/monaco-vscode-api/vscode/vs/base/common/platform';
4
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
5
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
6
+ import { assertDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
7
+ import { ResourceContextKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
8
+ import { KeyMod, KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
9
+ import { PROMPT_LANGUAGE_ID } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/constants';
10
+ import { IPromptsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/types.service';
11
+ import { localize2, localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
12
+ import { UILabelProvider } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keybindingLabels';
13
+ import { PromptsConfig } from '@codingame/monaco-vscode-51fed910-d648-5620-9b80-9232cd79d116-common/vscode/vs/platform/prompts/common/config';
14
+ import { IViewsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/views/common/viewsService.service';
15
+ import { PromptFilePickers } from './dialogs/askToSelectPrompt/promptFilePickers.js';
16
+ import { EditorContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/editorContextKeys';
17
+ import { ICommandService } from '@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service';
18
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
19
+ import { runPromptFile } from './dialogs/askToSelectPrompt/utils/runPrompt.js';
20
+ import { ICodeEditorService } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/codeEditorService.service';
21
+ import { KeybindingWeight } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybindingsRegistry';
22
+ import { Action2, MenuId, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
23
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
24
+
25
+ const EDITOR_ACTIONS_CONDITION = ( ContextKeyExpr.and(( ContextKeyExpr.and(PromptsConfig.enabledCtx, ChatContextKeys.enabled)), ResourceContextKey.HasResource, ( ResourceContextKey.LangId.isEqualTo(PROMPT_LANGUAGE_ID))));
26
+ const COMMAND_KEY_BINDING = KeyMod.WinCtrl | KeyCode.Slash | KeyMod.Alt;
27
+ const RUN_CURRENT_PROMPT_ACTION_ID = 'workbench.action.chat.run.prompt.current';
28
+ const RUN_SELECTED_PROMPT_ACTION_ID = 'workbench.action.chat.run.prompt';
29
+ class RunPromptBaseAction extends Action2 {
30
+ constructor(options) {
31
+ super({
32
+ id: options.id,
33
+ title: options.title,
34
+ f1: false,
35
+ precondition: ( ContextKeyExpr.and(PromptsConfig.enabledCtx, ChatContextKeys.enabled)),
36
+ category: CHAT_CATEGORY,
37
+ icon: options.icon,
38
+ keybinding: {
39
+ when: ( ContextKeyExpr.and(EditorContextKeys.editorTextFocus, EDITOR_ACTIONS_CONDITION)),
40
+ weight: KeybindingWeight.WorkbenchContrib,
41
+ primary: options.keybinding,
42
+ },
43
+ menu: [
44
+ {
45
+ id: MenuId.EditorTitleRun,
46
+ group: 'navigation',
47
+ order: options.alt ? 0 : 1,
48
+ alt: options.alt,
49
+ when: EDITOR_ACTIONS_CONDITION,
50
+ },
51
+ ],
52
+ });
53
+ }
54
+ async execute(resource, inNewChat, accessor) {
55
+ const viewsService = accessor.get(IViewsService);
56
+ const commandService = accessor.get(ICommandService);
57
+ resource ||= getActivePromptFileUri(accessor);
58
+ assertDefined(resource, 'Cannot find URI resource for an active text editor.');
59
+ const { widget } = await runPromptFile(resource, {
60
+ inNewChat,
61
+ commandService,
62
+ viewsService,
63
+ });
64
+ return widget;
65
+ }
66
+ }
67
+ const RUN_CURRENT_PROMPT_ACTION_TITLE = ( localize2(4503, "Run Prompt in Current Chat"));
68
+ const RUN_CURRENT_PROMPT_ACTION_ICON = Codicon.playCircle;
69
+ class RunCurrentPromptAction extends RunPromptBaseAction {
70
+ constructor() {
71
+ super({
72
+ id: RUN_CURRENT_PROMPT_ACTION_ID,
73
+ title: RUN_CURRENT_PROMPT_ACTION_TITLE,
74
+ icon: RUN_CURRENT_PROMPT_ACTION_ICON,
75
+ keybinding: COMMAND_KEY_BINDING,
76
+ });
77
+ }
78
+ async run(accessor, resource) {
79
+ return await super.execute(resource, false, accessor);
80
+ }
81
+ }
82
+ class RunSelectedPromptAction extends Action2 {
83
+ constructor() {
84
+ super({
85
+ id: RUN_SELECTED_PROMPT_ACTION_ID,
86
+ title: ( localize2(4504, "Run Prompt...")),
87
+ icon: Codicon.bookmark,
88
+ f1: true,
89
+ precondition: ( ContextKeyExpr.and(PromptsConfig.enabledCtx, ChatContextKeys.enabled)),
90
+ keybinding: {
91
+ when: ( ContextKeyExpr.and(PromptsConfig.enabledCtx, ChatContextKeys.enabled)),
92
+ weight: KeybindingWeight.WorkbenchContrib,
93
+ primary: COMMAND_KEY_BINDING,
94
+ },
95
+ category: CHAT_CATEGORY,
96
+ });
97
+ }
98
+ async run(accessor) {
99
+ const viewsService = accessor.get(IViewsService);
100
+ const promptsService = accessor.get(IPromptsService);
101
+ const commandService = accessor.get(ICommandService);
102
+ const instaService = accessor.get(IInstantiationService);
103
+ const pickers = instaService.createInstance(PromptFilePickers);
104
+ const promptFiles = await promptsService.listPromptFiles('prompt');
105
+ const placeholder = ( localize(
106
+ 4505,
107
+ 'Select the prompt file to run (hold {0}-key to use in new chat)',
108
+ UILabelProvider.modifierLabels[OS].ctrlKey
109
+ ));
110
+ const result = await pickers.selectPromptFile({ promptFiles, placeholder });
111
+ if (result === undefined) {
112
+ return;
113
+ }
114
+ const { promptFile, keyMods } = result;
115
+ const runPromptOptions = {
116
+ inNewChat: keyMods.ctrlCmd,
117
+ viewsService,
118
+ commandService,
119
+ };
120
+ const { widget } = await runPromptFile(promptFile, runPromptOptions);
121
+ widget.focusInput();
122
+ }
123
+ }
124
+ const getActivePromptFileUri = (accessor) => {
125
+ const codeEditorService = accessor.get(ICodeEditorService);
126
+ const model = codeEditorService.getActiveCodeEditor()?.getModel();
127
+ if (model?.getLanguageId() === PROMPT_LANGUAGE_ID) {
128
+ return model.uri;
129
+ }
130
+ return undefined;
131
+ };
132
+ const RUN_CURRENT_PROMPT_IN_NEW_CHAT_ACTION_ID = 'workbench.action.chat.run-in-new-chat.prompt.current';
133
+ const RUN_IN_NEW_CHAT_ACTION_TITLE = ( localize2(4506, "Run Prompt In New Chat"));
134
+ const RUN_IN_NEW_CHAT_ACTION_ICON = Codicon.play;
135
+ class RunCurrentPromptInNewChatAction extends RunPromptBaseAction {
136
+ constructor() {
137
+ super({
138
+ id: RUN_CURRENT_PROMPT_IN_NEW_CHAT_ACTION_ID,
139
+ title: RUN_IN_NEW_CHAT_ACTION_TITLE,
140
+ icon: RUN_IN_NEW_CHAT_ACTION_ICON,
141
+ keybinding: COMMAND_KEY_BINDING | KeyMod.CtrlCmd,
142
+ alt: {
143
+ id: RUN_CURRENT_PROMPT_ACTION_ID,
144
+ title: RUN_CURRENT_PROMPT_ACTION_TITLE,
145
+ icon: RUN_CURRENT_PROMPT_ACTION_ICON,
146
+ },
147
+ });
148
+ }
149
+ async run(accessor, resource) {
150
+ return await super.execute(resource, true, accessor);
151
+ }
152
+ }
153
+ const registerRunPromptActions = () => {
154
+ registerAction2(RunCurrentPromptInNewChatAction);
155
+ registerAction2(RunCurrentPromptAction);
156
+ registerAction2(RunSelectedPromptAction);
157
+ };
158
+
159
+ export { getActivePromptFileUri, registerRunPromptActions };
@@ -0,0 +1,9 @@
1
+ import { IChatWidget } from "@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/chat";
2
+ import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
3
+ export declare const SAVE_TO_PROMPT_SLASH_COMMAND_NAME = "save";
4
+ interface ISaveToPromptActionOptions {
5
+ chat: IChatWidget;
6
+ }
7
+ export declare const runSaveToPromptAction: (options: ISaveToPromptActionOptions, commandService: ICommandService) => Promise<any>;
8
+ export declare const registerSaveToPromptActions: () => void;
9
+ export {};
@@ -0,0 +1,140 @@
1
+
2
+ import { CHAT_CATEGORY } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
3
+ import { localize2 } from '@codingame/monaco-vscode-api/vscode/vs/nls';
4
+ import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
5
+ import { assertDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
6
+ import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
7
+ import { PROMPT_LANGUAGE_ID } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/common/promptSyntax/constants';
8
+ import { PromptsConfig } from '@codingame/monaco-vscode-51fed910-d648-5620-9b80-9232cd79d116-common/vscode/vs/platform/prompts/common/config';
9
+ import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
10
+ import { ILanguageModelToolsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/languageModelToolsService.service';
11
+ import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
12
+ import { chatSubcommandLeader } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatParserTypes';
13
+ import { Action2, registerAction2 } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
14
+
15
+ const SAVE_TO_PROMPT_ACTION_ID = 'workbench.action.chat.save-to-prompt';
16
+ const SAVE_TO_PROMPT_SLASH_COMMAND_NAME = 'save';
17
+ class SaveToPromptAction extends Action2 {
18
+ constructor() {
19
+ super({
20
+ id: SAVE_TO_PROMPT_ACTION_ID,
21
+ title: ( localize2(4507, "Save chat session to a prompt file")),
22
+ f1: false,
23
+ precondition: ( ContextKeyExpr.and(PromptsConfig.enabledCtx, ChatContextKeys.enabled)),
24
+ category: CHAT_CATEGORY,
25
+ });
26
+ }
27
+ async run(accessor, options) {
28
+ const logService = accessor.get(ILogService);
29
+ const editorService = accessor.get(IEditorService);
30
+ const toolsService = accessor.get(ILanguageModelToolsService);
31
+ const logPrefix = 'save to prompt';
32
+ const { chat } = options;
33
+ const { viewModel } = chat;
34
+ assertDefined(viewModel, 'No view model found on currently the active chat widget.');
35
+ const { model } = viewModel;
36
+ const turns = [];
37
+ for (const request of model.getRequests()) {
38
+ const { message, response: responseModel } = request;
39
+ if (isSaveToPromptSlashCommand(message)) {
40
+ continue;
41
+ }
42
+ if (responseModel === undefined) {
43
+ logService.warn(`[${logPrefix}]: skipping request '${request.id}' with no response`);
44
+ continue;
45
+ }
46
+ const { response } = responseModel;
47
+ const tools = ( new Set());
48
+ for (const record of response.value) {
49
+ if (('toolId' in record === false) || !record.toolId) {
50
+ continue;
51
+ }
52
+ const tool = toolsService.getTool(record.toolId);
53
+ if ((tool === undefined) || (!tool.toolReferenceName)) {
54
+ continue;
55
+ }
56
+ tools.add(tool.toolReferenceName);
57
+ }
58
+ turns.push({
59
+ request: message.text,
60
+ response: response.getMarkdown(),
61
+ tools,
62
+ });
63
+ }
64
+ const promptText = renderPrompt(turns);
65
+ const editor = await editorService.openEditor({
66
+ resource: undefined,
67
+ contents: promptText,
68
+ languageId: PROMPT_LANGUAGE_ID,
69
+ });
70
+ assertDefined(editor, 'Failed to open untitled editor for the prompt.');
71
+ editor.focus();
72
+ return editor;
73
+ }
74
+ }
75
+ const isSaveToPromptSlashCommand = (message) => {
76
+ const { parts } = message;
77
+ if (parts.length < 1) {
78
+ return false;
79
+ }
80
+ const firstPart = parts[0];
81
+ if (firstPart.kind !== 'slash') {
82
+ return false;
83
+ }
84
+ if (firstPart.text !== `${chatSubcommandLeader}${SAVE_TO_PROMPT_SLASH_COMMAND_NAME}`) {
85
+ return false;
86
+ }
87
+ return true;
88
+ };
89
+ const renderResponse = (response) => {
90
+ const delimiter = (response.startsWith('```'))
91
+ ? '\n>'
92
+ : ' ';
93
+ const quotedResponse = response.replaceAll('\n', '\n> ');
94
+ return `> Copilot:${delimiter}${quotedResponse}`;
95
+ };
96
+ const renderTurn = (turn) => {
97
+ const { request, response } = turn;
98
+ return `\n${request}\n\n${renderResponse(response)}`;
99
+ };
100
+ const renderPrompt = (turns) => {
101
+ const content = [];
102
+ const allTools = ( new Set());
103
+ for (const turn of turns) {
104
+ content.push(renderTurn(turn));
105
+ for (const tool of turn.tools) {
106
+ allTools.add(tool);
107
+ }
108
+ }
109
+ const result = [];
110
+ if (allTools.size !== 0) {
111
+ result.push(renderHeader(allTools));
112
+ }
113
+ result.push(content.join('\n'));
114
+ result.push('');
115
+ return result.join('\n');
116
+ };
117
+ const renderTools = (tools) => {
118
+ const toolStrings = ( [...tools].map((tool) => {
119
+ return `'${tool}'`;
120
+ }));
121
+ return `tools: [${toolStrings.join(', ')}]`;
122
+ };
123
+ const renderHeader = (tools) => {
124
+ if (tools.size === 0) {
125
+ return '';
126
+ }
127
+ return [
128
+ '---',
129
+ renderTools(tools),
130
+ '---',
131
+ ].join('\n');
132
+ };
133
+ const runSaveToPromptAction = async (options, commandService) => {
134
+ return await commandService.executeCommand(SAVE_TO_PROMPT_ACTION_ID, options);
135
+ };
136
+ const registerSaveToPromptActions = () => {
137
+ registerAction2(SaveToPromptAction);
138
+ };
139
+
140
+ export { SAVE_TO_PROMPT_SLASH_COMMAND_NAME, registerSaveToPromptActions, runSaveToPromptAction };
@@ -0,0 +1,32 @@
1
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
2
+ import { IPromptPath } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/promptSyntax/service/types";
3
+ import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
4
+ import { ILabelService } from "@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service";
5
+ import { IOpenerService } from "@codingame/monaco-vscode-api/vscode/vs/platform/opener/common/opener.service";
6
+ import { IDialogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/dialogs/common/dialogs.service";
7
+ import { IKeyMods } from "@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput";
8
+ import { IQuickInputService } from "@codingame/monaco-vscode-api/vscode/vs/platform/quickinput/common/quickInput.service";
9
+ import { ICommandService } from "@codingame/monaco-vscode-api/vscode/vs/platform/commands/common/commands.service";
10
+ export interface ISelectOptions {
11
+ readonly placeholder: string;
12
+ readonly resource?: URI;
13
+ readonly promptFiles: readonly IPromptPath[];
14
+ }
15
+ export interface ISelectPromptResult {
16
+ readonly promptFile: URI;
17
+ readonly keyMods: IKeyMods;
18
+ }
19
+ export declare class PromptFilePickers {
20
+ private readonly _labelService;
21
+ private readonly _quickInputService;
22
+ private readonly _openerService;
23
+ private readonly _fileService;
24
+ private readonly _dialogService;
25
+ private readonly _commandService;
26
+ constructor(_labelService: ILabelService, _quickInputService: IQuickInputService, _openerService: IOpenerService, _fileService: IFileService, _dialogService: IDialogService, _commandService: ICommandService);
27
+ selectInstructionsFiles(options: ISelectOptions): Promise<URI[] | undefined>;
28
+ selectPromptFile(options: ISelectOptions): Promise<ISelectPromptResult | undefined>;
29
+ private _createPromptPickItems;
30
+ private _createPromptPickItem;
31
+ private _handleButtonClick;
32
+ }
@@ -0,0 +1,244 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
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
+ import { assert } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
7
+ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codicons';
8
+ 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';
10
+ import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
11
+ import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
12
+ import { ILabelService } from '@codingame/monaco-vscode-api/vscode/vs/platform/label/common/label.service';
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
+ 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
+ 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';
21
+
22
+ const HELP_BUTTON = ( Object.freeze({
23
+ tooltip: ( localize(4508, "help")),
24
+ iconClass: ThemeIcon.asClassName(Codicon.question),
25
+ }));
26
+ const NEW_PROMPT_FILE_OPTION = ( Object.freeze({
27
+ type: 'item',
28
+ label: `$(plus) ${( localize(4509, 'New prompt file...'))}`,
29
+ value: ( URI.parse(PROMPT_DOCUMENTATION_URL)),
30
+ pickable: false,
31
+ alwaysShow: true,
32
+ buttons: [HELP_BUTTON],
33
+ }));
34
+ const NEW_INSTRUCTIONS_FILE_OPTION = ( Object.freeze({
35
+ type: 'item',
36
+ label: `$(plus) ${( localize(4510, 'Create new instruction file...'))}`,
37
+ value: ( URI.parse(INSTRUCTIONS_DOCUMENTATION_URL)),
38
+ pickable: false,
39
+ alwaysShow: true,
40
+ buttons: [HELP_BUTTON],
41
+ }));
42
+ const EDIT_BUTTON = ( Object.freeze({
43
+ tooltip: ( localize(4511, "edit ({0}-key + enter)", UILabelProvider.modifierLabels[OS].ctrlKey)),
44
+ iconClass: ThemeIcon.asClassName(Codicon.edit),
45
+ }));
46
+ const DELETE_BUTTON = ( Object.freeze({
47
+ tooltip: ( localize(4512, "delete")),
48
+ iconClass: ThemeIcon.asClassName(Codicon.trash),
49
+ }));
50
+ let PromptFilePickers = class PromptFilePickers {
51
+ constructor(_labelService, _quickInputService, _openerService, _fileService, _dialogService, _commandService) {
52
+ this._labelService = _labelService;
53
+ this._quickInputService = _quickInputService;
54
+ this._openerService = _openerService;
55
+ this._fileService = _fileService;
56
+ this._dialogService = _dialogService;
57
+ 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
+ }));
97
+ }
98
+ 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
+ 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;
108
+ return ( new Promise(resolve => {
109
+ const disposables = ( new DisposableStore());
110
+ let isResolved = false;
111
+ disposables.add({
112
+ dispose() {
113
+ quickPick.dispose();
114
+ if (!isResolved) {
115
+ resolve(undefined);
116
+ isResolved = true;
117
+ }
118
+ },
119
+ });
120
+ disposables.add(quickPick.onDidAccept(async (event) => {
121
+ const { selectedItems } = quickPick;
122
+ const { keyMods } = quickPick;
123
+ const selectedItem = selectedItems[0];
124
+ if (selectedItem === NEW_PROMPT_FILE_OPTION) {
125
+ await this._commandService.executeCommand(NEW_PROMPT_COMMAND_ID);
126
+ return;
127
+ }
128
+ if (selectedItem) {
129
+ resolve({ promptFile: selectedItem.value, keyMods: { ...keyMods } });
130
+ isResolved = true;
131
+ }
132
+ if (!event.inBackground) {
133
+ disposables.dispose();
134
+ }
135
+ }));
136
+ disposables.add(quickPick.onDidTriggerItemButton(e => this._handleButtonClick(quickPick, e)));
137
+ disposables.add(quickPick.onDidHide(disposables.dispose.bind(disposables)));
138
+ quickPick.show();
139
+ }));
140
+ }
141
+ _createPromptPickItems(options) {
142
+ const { promptFiles, resource } = options;
143
+ const fileOptions = ( promptFiles.map((promptFile) => {
144
+ return this._createPromptPickItem(promptFile);
145
+ }));
146
+ let activeItem;
147
+ if (resource) {
148
+ activeItem = fileOptions.find((file) => {
149
+ return extUri.isEqual(file.value, resource);
150
+ });
151
+ if (!activeItem) {
152
+ activeItem = this._createPromptPickItem({
153
+ uri: resource,
154
+ storage: 'local',
155
+ type: 'instructions',
156
+ });
157
+ fileOptions.push(activeItem);
158
+ }
159
+ fileOptions.sort((file1, file2) => {
160
+ if (extUri.isEqual(file1.value, resource)) {
161
+ return -1;
162
+ }
163
+ if (extUri.isEqual(file2.value, resource)) {
164
+ return 1;
165
+ }
166
+ return 0;
167
+ });
168
+ }
169
+ return fileOptions;
170
+ }
171
+ _createPromptPickItem(promptFile) {
172
+ const { uri, storage } = promptFile;
173
+ const fileWithoutExtension = getCleanPromptName(uri);
174
+ const description = (storage === 'user')
175
+ ? ( localize(4513, 'User data folder'))
176
+ : this._labelService.getUriLabel(dirname(uri), { relative: true });
177
+ const tooltip = (storage === 'user')
178
+ ? description
179
+ : uri.fsPath;
180
+ return {
181
+ id: ( uri.toString()),
182
+ type: 'item',
183
+ label: fileWithoutExtension,
184
+ description,
185
+ tooltip,
186
+ value: uri,
187
+ buttons: [EDIT_BUTTON, DELETE_BUTTON],
188
+ };
189
+ }
190
+ async _handleButtonClick(quickPick, context) {
191
+ const { item, button } = context;
192
+ const { value } = item;
193
+ if (button === EDIT_BUTTON) {
194
+ return await this._openerService.open(value);
195
+ }
196
+ if (button === DELETE_BUTTON) {
197
+ assert((quickPick.activeItems.length < 2), `Expected maximum one active item, got '${quickPick.activeItems.length}'.`);
198
+ const activeItem = quickPick.activeItems[0];
199
+ const info = await this._fileService.stat(value);
200
+ 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;
217
+ }
218
+ return true;
219
+ });
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
+ return;
227
+ }
228
+ if (button === HELP_BUTTON) {
229
+ await this._openerService.open(item.value);
230
+ return;
231
+ }
232
+ throw ( new Error(`Unknown button '${JSON.stringify(button)}'.`));
233
+ }
234
+ };
235
+ PromptFilePickers = ( __decorate([
236
+ ( __param(0, ILabelService)),
237
+ ( __param(1, IQuickInputService)),
238
+ ( __param(2, IOpenerService)),
239
+ ( __param(3, IFileService)),
240
+ ( __param(4, IDialogService)),
241
+ ( __param(5, ICommandService))
242
+ ], PromptFilePickers));
243
+
244
+ export { PromptFilePickers };