@codingame/monaco-vscode-chat-service-override 17.2.1 → 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
@@ -14,7 +14,7 @@ import { AccessibleDiffViewer } from '@codingame/monaco-vscode-api/vscode/vs/edi
14
14
  import { RenderOptions, LineSource, renderLines } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines';
15
15
  import { diffAddDecoration, diffWholeLineAddDecoration, diffDeleteDecoration } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/widget/diffEditor/registrations.contribution';
16
16
  import { EditorOption } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/config/editorOptions';
17
- import { LineRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/lineRange';
17
+ import { LineRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/ranges/lineRange';
18
18
  import { Position } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position';
19
19
  import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
20
20
  import { Selection } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/selection';
@@ -28,17 +28,18 @@ import { MenuWorkbenchToolBar, HiddenItemStrategy } from '@codingame/monaco-vsco
28
28
  import { MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
29
29
  import { TextEditorSelectionRevealType } from '@codingame/monaco-vscode-api/vscode/vs/platform/editor/common/editor';
30
30
  import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
31
- import { EditorsOrder, isDiffEditorInput } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
31
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
32
32
  import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
33
- import { overviewRulerModifiedForeground, minimapGutterModifiedBackground, overviewRulerAddedForeground, minimapGutterAddedBackground, overviewRulerDeletedForeground, minimapGutterDeletedBackground } from '@codingame/monaco-vscode-bb83fe45-f4c7-5673-b9f1-5c409a63f19c-common/vscode/vs/workbench/contrib/scm/common/quickDiff';
33
+ import { overviewRulerModifiedForeground, minimapGutterModifiedBackground, overviewRulerAddedForeground, minimapGutterAddedBackground, overviewRulerDeletedForeground, minimapGutterDeletedBackground } from '@codingame/monaco-vscode-f338ac19-278c-5fe1-bec8-b588de04a788-common/vscode/vs/workbench/contrib/scm/common/quickDiff';
34
34
  import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
35
- import { ModifiedFileEntryState } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
35
+ import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
36
36
  import { isTextDiffEditorForEntry } from './chatEditing.js';
37
37
  import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
38
- import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/base';
39
- import { autorun, autorunWithStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/autorun';
40
- import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/derived';
41
- import { constObservable, observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils';
38
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
39
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
40
+ import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
41
+ import { constObservable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/constObservable';
42
+ import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
42
43
 
43
44
  var ChatEditingCodeEditorIntegration_1, DiffHunkWidget_1;
44
45
  registerCss(chatEditorController);
@@ -145,15 +146,15 @@ let ChatEditingCodeEditorIntegration = class ChatEditingCodeEditorIntegration {
145
146
  this._accessibilitySignalsService.playSignal(AccessibilitySignal.diffLineModified, { source: 'chatEditingEditor.cursorPositionChanged' });
146
147
  }
147
148
  }));
148
- this._store.add(autorunWithStore((r, store) => {
149
+ this._store.add(autorun(r => {
149
150
  const visible = this._accessibleDiffViewVisible.read(r);
150
151
  if (!visible || !enabledObs.read(r)) {
151
152
  return;
152
153
  }
153
154
  const accessibleDiffWidget = ( new AccessibleDiffViewContainer());
154
155
  _editor.addOverlayWidget(accessibleDiffWidget);
155
- store.add(toDisposable(() => _editor.removeOverlayWidget(accessibleDiffWidget)));
156
- store.add(instantiationService.createInstance(AccessibleDiffViewer, accessibleDiffWidget.getDomNode(), enabledObs, (visible, tx) => this._accessibleDiffViewVisible.set(visible, tx), constObservable(true), ( codeEditorObs.layoutInfo.map((v, r) => v.width)), ( codeEditorObs.layoutInfo.map((v, r) => v.height)), ( documentDiffInfo.map(diff => diff.changes.slice())), instantiationService.createInstance(AccessibleDiffViewerModel, documentDiffInfo, _editor)));
156
+ r.store.add(toDisposable(() => _editor.removeOverlayWidget(accessibleDiffWidget)));
157
+ r.store.add(instantiationService.createInstance(AccessibleDiffViewer, accessibleDiffWidget.getDomNode(), enabledObs, (visible, tx) => this._accessibleDiffViewVisible.set(visible, tx), constObservable(true), ( codeEditorObs.layoutInfo.map((v, r) => v.width)), ( codeEditorObs.layoutInfo.map((v, r) => v.height)), ( documentDiffInfo.map(diff => diff.changes.slice())), instantiationService.createInstance(AccessibleDiffViewerModel, documentDiffInfo, _editor)));
157
158
  }));
158
159
  let actualOptions;
159
160
  const restoreActualOptions = () => {
@@ -448,7 +449,7 @@ let ChatEditingCodeEditorIntegration = class ChatEditingCodeEditorIntegration {
448
449
  const targetRange = decorations[newIndex];
449
450
  const targetPosition = next ? targetRange.getStartPosition() : targetRange.getEndPosition();
450
451
  this._editor.setPosition(targetPosition);
451
- this._editor.revealPositionInCenter(targetPosition);
452
+ this._editor.revealPositionInCenter(targetRange.getStartPosition().delta(-1));
452
453
  this._editor.focus();
453
454
  return true;
454
455
  }
@@ -506,30 +507,15 @@ let ChatEditingCodeEditorIntegration = class ChatEditingCodeEditorIntegration {
506
507
  options: { selection },
507
508
  label: defaultAgentName
508
509
  ? ( localize(
509
- 4716,
510
+ 4758,
510
511
  '{0} (changes from {1})',
511
512
  basename(this._entry.modifiedURI),
512
513
  defaultAgentName
513
514
  ))
514
- : ( localize(4717, '{0} (changes from chat)', basename(this._entry.modifiedURI)))
515
+ : ( localize(4759, '{0} (changes from chat)', basename(this._entry.modifiedURI)))
515
516
  });
516
517
  if (diffEditor && diffEditor.input) {
517
518
  diffEditor.getControl()?.setSelection(selection);
518
- const d = autorun(r => {
519
- const state = this._entry.state.read(r);
520
- if (state === ModifiedFileEntryState.Accepted || state === ModifiedFileEntryState.Rejected) {
521
- d.dispose();
522
- const editorIdents = [];
523
- for (const candidate of this._editorService.getEditors(EditorsOrder.MOST_RECENTLY_ACTIVE)) {
524
- if (isDiffEditorInput(candidate.editor)
525
- && isEqual(candidate.editor.original.resource, this._entry.originalURI)
526
- && isEqual(candidate.editor.modified.resource, this._entry.modifiedURI)) {
527
- editorIdents.push(candidate);
528
- }
529
- }
530
- this._editorService.closeEditors(editorIdents);
531
- }
532
- });
533
519
  }
534
520
  }
535
521
  else {
@@ -6,8 +6,8 @@ import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/plat
6
6
  import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
7
7
  import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
8
8
  import { IChatEditingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService.service';
9
- import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils';
10
- import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/autorun';
9
+ import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
10
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
11
11
 
12
12
  let ChatEditingEditorAccessibility = class ChatEditingEditorAccessibility {
13
13
  static { this.ID = 'chat.edits.accessibilty'; }
@@ -4,7 +4,7 @@ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codi
4
4
  import { Action2, MenuId, registerAction2, MenuRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
5
5
  import { KeybindingWeight } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybindingsRegistry';
6
6
  import { KeyMod, KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
7
- import { CHAT_CATEGORY } from '@codingame/monaco-vscode-fab30422-b487-5f4e-8d30-8b4d266e3fcd-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
7
+ import { CHAT_CATEGORY } from '@codingame/monaco-vscode-3a35f433-1297-5707-ab58-c261b8180e6d-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
8
8
  import { ctxReviewModeEnabled, ctxHasEditorModification, ctxIsGlobalEditingSession, ctxHasRequestInProgress } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorContextKeys';
9
9
  import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
10
10
  import { EditorContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/editorContextKeys';
@@ -20,7 +20,7 @@ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
20
20
  import { ActiveEditorContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
21
21
  import { EditorResourceAccessor, SideBySideEditor, TEXT_DIFF_EDITOR_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
22
22
  import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
23
- import { NOTEBOOK_CELL_LIST_FOCUSED } from '@codingame/monaco-vscode-51fed910-d648-5620-9b80-9232cd79d116-common/vscode/vs/workbench/contrib/notebook/common/notebookContextKeys';
23
+ import { NOTEBOOK_CELL_LIST_FOCUSED, NOTEBOOK_EDITOR_FOCUSED } from '@codingame/monaco-vscode-c87fff3a-2aa9-52ab-ba4d-17e8d1e5e185-common/vscode/vs/workbench/contrib/notebook/common/notebookContextKeys';
24
24
 
25
25
  class ChatEditingEditorAction extends Action2 {
26
26
  constructor(desc) {
@@ -54,8 +54,8 @@ class NavigateAction extends ChatEditingEditorAction {
54
54
  ? 'chatEditor.action.navigateNext'
55
55
  : 'chatEditor.action.navigatePrevious',
56
56
  title: next
57
- ? ( localize2(4718, 'Go to Next Chat Edit'))
58
- : ( localize2(4719, 'Go to Previous Chat Edit')),
57
+ ? ( localize2(4760, 'Go to Next Chat Edit'))
58
+ : ( localize2(4761, 'Go to Previous Chat Edit')),
59
59
  icon: next ? Codicon.arrowDown : Codicon.arrowUp,
60
60
  precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ctxHasEditorModification)),
61
61
  keybinding: {
@@ -127,25 +127,25 @@ class KeepOrUndoAction extends ChatEditingEditorAction {
127
127
  super({
128
128
  id,
129
129
  title: _keep
130
- ? ( localize2(4720, 'Keep Chat Edits'))
131
- : ( localize2(4721, 'Undo Chat Edits')),
130
+ ? ( localize2(4762, 'Keep Chat Edits'))
131
+ : ( localize2(4763, 'Undo Chat Edits')),
132
132
  shortTitle: _keep
133
- ? ( localize2(4722, 'Keep'))
134
- : ( localize2(4723, 'Undo')),
133
+ ? ( localize2(4764, 'Keep'))
134
+ : ( localize2(4765, 'Undo')),
135
135
  tooltip: _keep
136
- ? ( localize2(4724, 'Keep Chat Edits in this File'))
137
- : ( localize2(4725, 'Undo Chat Edits in this File')),
136
+ ? ( localize2(4766, 'Keep Chat Edits in this File'))
137
+ : ( localize2(4767, 'Undo Chat Edits in this File')),
138
138
  precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
139
139
  icon: _keep
140
140
  ? Codicon.check
141
141
  : Codicon.discard,
142
142
  f1: true,
143
143
  keybinding: {
144
- when: EditorContextKeys.focus,
145
- weight: KeybindingWeight.WorkbenchContrib,
144
+ when: ( ContextKeyExpr.or(EditorContextKeys.focus, NOTEBOOK_EDITOR_FOCUSED)),
145
+ weight: KeybindingWeight.WorkbenchContrib + 10,
146
146
  primary: _keep
147
- ? KeyMod.CtrlCmd | KeyCode.Enter
148
- : KeyMod.CtrlCmd | KeyCode.Backspace
147
+ ? KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyY
148
+ : KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyN,
149
149
  },
150
150
  menu: {
151
151
  id: MenuId.ChatEditingEditorContent,
@@ -184,7 +184,7 @@ class AcceptRejectHunkAction extends ChatEditingEditorAction {
184
184
  constructor(_accept) {
185
185
  super({
186
186
  id: _accept ? 'chatEditor.action.acceptHunk' : 'chatEditor.action.undoHunk',
187
- title: _accept ? ( localize2(4726, 'Keep this Change')) : ( localize2(4727, 'Undo this Change')),
187
+ title: _accept ? ( localize2(4768, 'Keep this Change')) : ( localize2(4769, 'Undo this Change')),
188
188
  precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
189
189
  icon: _accept ? Codicon.check : Codicon.discard,
190
190
  f1: true,
@@ -192,8 +192,8 @@ class AcceptRejectHunkAction extends ChatEditingEditorAction {
192
192
  when: ( ContextKeyExpr.or(EditorContextKeys.focus, NOTEBOOK_CELL_LIST_FOCUSED)),
193
193
  weight: KeybindingWeight.WorkbenchContrib + 1,
194
194
  primary: _accept
195
- ? KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Enter
196
- : KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Backspace
195
+ ? KeyMod.CtrlCmd | KeyCode.KeyY
196
+ : KeyMod.CtrlCmd | KeyCode.KeyN
197
197
  },
198
198
  menu: {
199
199
  id: MenuId.ChatEditingEditorHunk,
@@ -215,7 +215,7 @@ class ToggleDiffAction extends ChatEditingEditorAction {
215
215
  constructor() {
216
216
  super({
217
217
  id: 'chatEditor.action.toggleDiff',
218
- title: ( localize2(4728, 'Toggle Diff Editor for Chat Edits')),
218
+ title: ( localize2(4770, 'Toggle Diff Editor for Chat Edits')),
219
219
  category: CHAT_CATEGORY,
220
220
  toggled: {
221
221
  condition: ( ContextKeyExpr.or(EditorContextKeys.inDiffEditor, ( ActiveEditorContext.isEqualTo(TEXT_DIFF_EDITOR_ID)))),
@@ -247,7 +247,7 @@ class ToggleAccessibleDiffViewAction extends ChatEditingEditorAction {
247
247
  constructor() {
248
248
  super({
249
249
  id: 'chatEditor.action.showAccessibleDiffView',
250
- title: ( localize2(4729, 'Show Accessible Diff View for Chat Edits')),
250
+ title: ( localize2(4771, 'Show Accessible Diff View for Chat Edits')),
251
251
  f1: true,
252
252
  precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
253
253
  keybinding: {
@@ -265,7 +265,7 @@ class ReviewChangesAction extends ChatEditingEditorAction {
265
265
  constructor() {
266
266
  super({
267
267
  id: 'chatEditor.action.reviewChanges',
268
- title: ( localize2(4730, "Review")),
268
+ title: ( localize2(4772, "Review")),
269
269
  precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
270
270
  menu: [{
271
271
  id: MenuId.ChatEditingEditorContent,
@@ -283,7 +283,7 @@ class MultiDiffAcceptDiscardAction extends Action2 {
283
283
  constructor(accept) {
284
284
  super({
285
285
  id: accept ? 'chatEditing.multidiff.acceptAllFiles' : 'chatEditing.multidiff.discardAllFiles',
286
- title: accept ? ( localize(4731, 'Keep All Edits')) : ( localize(4732, 'Undo All Edits')),
286
+ title: accept ? ( localize(4773, 'Keep All Edits')) : ( localize(4774, 'Undo All Edits')),
287
287
  icon: accept ? Codicon.check : Codicon.discard,
288
288
  menu: {
289
289
  when: ( ContextKeyExpr.equals('resourceScheme', CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME)),
@@ -344,7 +344,7 @@ function registerChatEditorActions() {
344
344
  MenuRegistry.appendMenuItem(MenuId.ChatEditingEditorContent, {
345
345
  command: {
346
346
  id: navigationBearingFakeActionId,
347
- title: ( localize(4733, "Navigation Status")),
347
+ title: ( localize(4775, "Navigation Status")),
348
348
  precondition: ( ContextKeyExpr.false()),
349
349
  },
350
350
  group: 'navigate',
@@ -29,17 +29,21 @@ import { renderIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/
29
29
  import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
30
30
  import { equals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
31
31
  import { renderStringAsPlaintext } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/markdownRenderer';
32
- import { observableFromEvent, observableFromEventOpts, observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils';
33
- import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/autorun';
34
- import { derived, derivedOpts } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/derived';
35
- import { observableValue, transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/base';
32
+ import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
33
+ import { observableFromEventOpts, observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
34
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
35
+ import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
36
+ import { derived, derivedOpts } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
37
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
38
+ import { transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/transaction';
36
39
 
37
40
  registerCss(chatEditingEditorOverlay);
38
41
  let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
39
- constructor(_editor, _chatService, _instaService) {
42
+ constructor(_editor, _chatService, _keybindingService, _instaService) {
40
43
  super();
41
44
  this._editor = _editor;
42
45
  this._chatService = _chatService;
46
+ this._keybindingService = _keybindingService;
43
47
  this._instaService = _instaService;
44
48
  this._showStore = this._store.add(( new DisposableStore()));
45
49
  this._session = observableValue(this, undefined);
@@ -48,14 +52,9 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
48
52
  this._domNode = document.createElement('div');
49
53
  this._domNode.classList.add('chat-editor-overlay-widget');
50
54
  this._isBusy = derived(r => {
55
+ const entry = this._entry.read(r);
51
56
  const session = this._session.read(r);
52
- const chatModel = session && _chatService.getSession(session?.chatSessionId);
53
- const lastResponse = chatModel
54
- ? observableFromEvent(this, chatModel.onDidChange, () => chatModel.getRequests().at(-1)?.response).read(r)
55
- : undefined;
56
- return lastResponse
57
- ? observableFromEvent(this, lastResponse.onDidChange, () => !lastResponse.isPendingConfirmation && !lastResponse.isComplete).read(r)
58
- : false;
57
+ return entry?.waitsForLastEdits.read(r) ?? !session?.isGlobalEditingSession;
59
58
  });
60
59
  const requestMessage = derived(r => {
61
60
  const session = this._session.read(r);
@@ -65,10 +64,10 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
65
64
  }
66
65
  const response = this._entry.read(r)?.lastModifyingResponse.read(r);
67
66
  if (!response) {
68
- return { message: ( localize(4739, "Working...")) };
67
+ return { message: ( localize(4781, "Working...")) };
69
68
  }
70
69
  if (response.isPaused.read(r)) {
71
- return { message: ( localize(4740, "Paused")), paused: true };
70
+ return { message: ( localize(4782, "Paused")), paused: true };
72
71
  }
73
72
  const lastPart = observableFromEventOpts({ equalsFn: equals }, response.onDidChange, () => response.response.value)
74
73
  .read(r)
@@ -81,7 +80,7 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
81
80
  return { message: lastPart.content };
82
81
  }
83
82
  else {
84
- return { message: ( localize(4739, "Working...")) };
83
+ return { message: ( localize(4781, "Working...")) };
85
84
  }
86
85
  });
87
86
  const progressNode = document.createElement('div');
@@ -158,10 +157,10 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
158
157
  const { changeCount, activeIdx } = that._navigationBearings.read(r);
159
158
  if (changeCount > 0) {
160
159
  const n = activeIdx === -1 ? '1' : `${activeIdx + 1}`;
161
- this.label.innerText = ( localize(4741, "{0} of {1}", n, changeCount));
160
+ this.label.innerText = ( localize(4783, "{0} of {1}", n, changeCount));
162
161
  }
163
162
  else {
164
- this.label.innerText = ( localize(4742, "—"));
163
+ this.label.innerText = ( localize(4784, "—"));
165
164
  }
166
165
  this.updateTooltip();
167
166
  }));
@@ -173,21 +172,21 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
173
172
  }
174
173
  let result;
175
174
  if (changeCount === 1 && entriesCount === 1) {
176
- result = ( localize(4743, "1 change in 1 file"));
175
+ result = ( localize(4785, "1 change in 1 file"));
177
176
  }
178
177
  else if (changeCount === 1) {
179
- result = ( localize(4744, "1 change in {0} files", entriesCount));
178
+ result = ( localize(4786, "1 change in {0} files", entriesCount));
180
179
  }
181
180
  else if (entriesCount === 1) {
182
- result = ( localize(4745, "{0} changes in 1 file", changeCount));
181
+ result = ( localize(4787, "{0} changes in 1 file", changeCount));
183
182
  }
184
183
  else {
185
- result = ( localize(4746, "{0} changes in {1} files", changeCount, entriesCount));
184
+ result = ( localize(4788, "{0} changes in {1} files", changeCount, entriesCount));
186
185
  }
187
186
  if (!that._isBusy.get()) {
188
187
  return result;
189
188
  }
190
- return localize(4747, "{0} - Working...", result);
189
+ return localize(4789, "{0} - Working...", result);
191
190
  }
192
191
  });
193
192
  }
@@ -227,6 +226,17 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
227
226
  get actionRunner() {
228
227
  return super.actionRunner;
229
228
  }
229
+ getTooltip() {
230
+ const value = super.getTooltip();
231
+ if (!value) {
232
+ return value;
233
+ }
234
+ const kb = that._keybindingService.lookupKeybinding(this.action.id);
235
+ if (!kb) {
236
+ return value;
237
+ }
238
+ return localize(4790, "{0} ({1})", value, kb.getLabel());
239
+ }
230
240
  });
231
241
  }
232
242
  return undefined;
@@ -244,7 +254,8 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
244
254
  };
245
255
  ChatEditorOverlayWidget = ( __decorate([
246
256
  ( __param(1, IChatService)),
247
- ( __param(2, IInstantiationService))
257
+ ( __param(2, IKeybindingService)),
258
+ ( __param(3, IInstantiationService))
248
259
  ], ChatEditorOverlayWidget));
249
260
  let ChatEditingOverlayController = class ChatEditingOverlayController {
250
261
  constructor(container, group, instaService, chatService, chatEditingService, inlineChatService) {
@@ -291,12 +302,7 @@ let ChatEditingOverlayController = class ChatEditingOverlayController {
291
302
  return false;
292
303
  }
293
304
  const chatModel = chatService.getSession(session.chatSessionId);
294
- const lastResponse = observableFromEvent(this, chatModel.onDidChange, () => chatModel.getRequests().at(-1)?.response);
295
- const response = lastResponse.read(r);
296
- if (!response) {
297
- return false;
298
- }
299
- return observableFromEvent(this, response.onDidChange, () => !response.isComplete && !response.isPendingConfirmation).read(r);
305
+ return chatModel.requestInProgressObs.read(r);
300
306
  });
301
307
  this._store.add(autorun(r => {
302
308
  const data = sessionAndEntry.read(r);
@@ -29,6 +29,7 @@ export declare class ChatEditingModifiedDocumentEntry extends AbstractChatEditin
29
29
  private readonly _accessibilitySignalService;
30
30
  private static readonly _lastEditDecorationOptions;
31
31
  private static readonly _pendingEditDecorationOptions;
32
+ private static readonly _atomicEditDecorationOptions;
32
33
  readonly initialContent: string;
33
34
  private readonly originalModel;
34
35
  private readonly modifiedModel;
@@ -1,7 +1,8 @@
1
1
 
2
2
  import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { addDisposableListener, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
3
4
  import { assert } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
4
- import { RunOnceScheduler } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
5
+ import { RunOnceScheduler, DeferredPromise, timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
5
6
  import { toDisposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
7
  import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
7
8
  import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
@@ -9,7 +10,7 @@ import { themeColorFromId } from '@codingame/monaco-vscode-api/vscode/vs/base/co
9
10
  import { assertType } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
10
11
  import { getCodeEditor } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/editorBrowser';
11
12
  import { EditOperation } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/editOperation';
12
- import { OffsetEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/offsetEdit';
13
+ import { StringEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/edits/stringEdit';
13
14
  import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
14
15
  import { nullDocumentDiff } from '../../../../../editor/common/diff/documentDiffProvider.js';
15
16
  import { TextEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
@@ -17,11 +18,11 @@ import { ILanguageService } from '@codingame/monaco-vscode-api/vscode/vs/editor/
17
18
  import { OverviewRulerLane, MinimapPosition } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
18
19
  import { SingleModelEditStackElement } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/editStack';
19
20
  import { ModelDecorationOptions, createTextBufferFactoryFromSnapshot } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModel';
20
- import { OffsetEdits } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModelOffsetEdit';
21
+ import { offsetEditFromContentChanges, offsetEditToEditOperations, offsetEditFromLineRangeMapping } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModelStringEdit';
21
22
  import { IEditorWorkerService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/editorWorker.service';
22
23
  import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
23
24
  import { ITextModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/resolverService.service';
24
- import { TextModelChangeRecorder } from '@codingame/monaco-vscode-api/vscode/vs/editor/contrib/inlineCompletions/browser/model/changeRecorder';
25
+ import { TextModelEditReason } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEditReason';
25
26
  import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
26
27
  import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService';
27
28
  import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
@@ -50,8 +51,9 @@ import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/c
50
51
  import { ChatEditingCodeEditorIntegration } from './chatEditingCodeEditorIntegration.js';
51
52
  import { AbstractChatEditingModifiedFileEntry, pendingRewriteMinimap } from './chatEditingModifiedFileEntry.js';
52
53
  import { ChatEditingTextModelContentProvider, ChatEditingSnapshotTextModelContentProvider } from './chatEditingTextModelContentProviders.js';
53
- import { observableValue, transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/base';
54
- import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/autorun';
54
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
55
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
56
+ import { transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/transaction';
55
57
 
56
58
  var ChatEditingModifiedDocumentEntry_1;
57
59
  let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifiedFileEntry {
@@ -75,13 +77,22 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
75
77
  color: themeColorFromId(pendingRewriteMinimap)
76
78
  }
77
79
  }); }
80
+ static { this._atomicEditDecorationOptions = ModelDecorationOptions.register({
81
+ isWholeLine: true,
82
+ description: 'chat-atomic-edit',
83
+ className: 'chat-editing-atomic-edit',
84
+ minimap: {
85
+ position: MinimapPosition.Inline,
86
+ color: themeColorFromId(pendingRewriteMinimap)
87
+ }
88
+ }); }
78
89
  constructor(resourceRef, _multiDiffEntryDelegate, telemetryInfo, kind, initialContent, markerService, modelService, textModelService, languageService, configService, fileConfigService, chatService, _editorWorkerService, _textFileService, fileService, undoRedoService, instantiationService, _accessibilitySignalService) {
79
90
  super(resourceRef.object.textEditorModel.uri, telemetryInfo, kind, configService, fileConfigService, chatService, fileService, undoRedoService, instantiationService);
80
91
  this._multiDiffEntryDelegate = _multiDiffEntryDelegate;
81
92
  this._editorWorkerService = _editorWorkerService;
82
93
  this._textFileService = _textFileService;
83
94
  this._accessibilitySignalService = _accessibilitySignalService;
84
- this._edit = OffsetEdit.empty;
95
+ this._edit = StringEdit.empty;
85
96
  this._isEditFromUs = false;
86
97
  this._allEditsAreFromUs = true;
87
98
  this._diffOperationIds = 0;
@@ -111,11 +122,11 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
111
122
  }));
112
123
  const resourceFilter = this._register(( new MutableDisposable()));
113
124
  this._register(autorun(r => {
114
- const inProgress = this._lastModifyingResponseInProgressObs.read(r);
125
+ const inProgress = this._waitsForLastEdits.read(r);
115
126
  if (inProgress) {
116
127
  const res = this._lastModifyingResponseObs.read(r);
117
128
  const req = res && res.session.getRequests().find(value => value.id === res.requestId);
118
- resourceFilter.value = markerService.installResourceFilter(this.modifiedURI, req?.message.text || ( localize(4748, "Chat Edits")));
129
+ resourceFilter.value = markerService.installResourceFilter(this.modifiedURI, req?.message.text || ( localize(4791, "Chat Edits")));
119
130
  }
120
131
  else {
121
132
  resourceFilter.clear();
@@ -167,7 +178,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
167
178
  this._clearCurrentEditLineDecoration();
168
179
  }
169
180
  _mirrorEdits(event) {
170
- const edit = OffsetEdits.fromContentChanges(event.changes);
181
+ const edit = offsetEditFromContentChanges(event.changes);
171
182
  if (this._isEditFromUs) {
172
183
  const e_sum = this._edit;
173
184
  const e_ai = edit;
@@ -181,7 +192,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
181
192
  this._edit = e_ai.compose(e_user);
182
193
  }
183
194
  else {
184
- const edits = OffsetEdits.asEditOperations(e_user_r, this.originalModel);
195
+ const edits = offsetEditToEditOperations(e_user_r, this.originalModel);
185
196
  this.originalModel.applyEdits(edits);
186
197
  this._edit = e_ai.tryRebase(e_user_r);
187
198
  }
@@ -201,34 +212,71 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
201
212
  }
202
213
  _createUndoRedoElement(response) {
203
214
  const request = response.session.getRequests().find(req => req.id === response.requestId);
204
- const label = request?.message.text ? ( localize(4749, "Chat Edit: '{0}'", request.message.text)) : ( localize(4750, "Chat Edit"));
215
+ const label = request?.message.text ? ( localize(4792, "Chat Edit: '{0}'", request.message.text)) : ( localize(4793, "Chat Edit"));
205
216
  return ( new SingleModelEditStackElement(label, 'chat.edit', this.modifiedModel, null));
206
217
  }
207
218
  async acceptAgentEdits(resource, textEdits, isLastEdits, responseModel) {
208
219
  assertType(textEdits.every(TextEdit.isTextEdit), 'INVALID args, can only handle text edits');
209
220
  assert(isEqual(resource, this.modifiedURI), ' INVALID args, can only edit THIS document');
210
- const ops = ( textEdits.map(TextEdit.asEditOperation));
211
- const undoEdits = this._applyEdits(ops);
212
- const maxLineNumber = undoEdits.reduce((max, op) => Math.max(max, op.range.startLineNumber), 0);
213
- const newDecorations = [
214
- {
215
- options: ChatEditingModifiedDocumentEntry_1._pendingEditDecorationOptions,
216
- range: ( new Range(maxLineNumber + 1, 1, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER))
221
+ const isAtomicEdits = textEdits.length > 0 && isLastEdits;
222
+ let rewriteRatio = 0;
223
+ if (isAtomicEdits) {
224
+ const minimalEdits = (await this._editorWorkerService.computeMoreMinimalEdits(this.modifiedModel.uri, textEdits)) ?? textEdits;
225
+ const ops = ( minimalEdits.map(TextEdit.asEditOperation));
226
+ const undoEdits = this._applyEdits(ops);
227
+ if (undoEdits.length > 0) {
228
+ let range;
229
+ for (let i = 0; i < undoEdits.length; i++) {
230
+ const op = undoEdits[i];
231
+ if (!range) {
232
+ range = Range.lift(op.range);
233
+ }
234
+ else {
235
+ range = Range.plusRange(range, op.range);
236
+ }
237
+ }
238
+ if (range) {
239
+ const defer = ( new DeferredPromise());
240
+ const listener = addDisposableListener(getWindow(undefined), 'animationend', e => {
241
+ if (e.animationName === 'kf-chat-editing-atomic-edit') {
242
+ defer.complete();
243
+ listener.dispose();
244
+ }
245
+ });
246
+ this._editDecorations = this.modifiedModel.deltaDecorations(this._editDecorations, [{
247
+ options: ChatEditingModifiedDocumentEntry_1._atomicEditDecorationOptions,
248
+ range
249
+ }]);
250
+ await Promise.any([defer.p, timeout(500)]);
251
+ listener.dispose();
252
+ }
217
253
  }
218
- ];
219
- if (maxLineNumber > 0) {
220
- newDecorations.push({
221
- options: ChatEditingModifiedDocumentEntry_1._lastEditDecorationOptions,
222
- range: ( new Range(maxLineNumber, 1, maxLineNumber, Number.MAX_SAFE_INTEGER))
223
- });
224
254
  }
225
- this._editDecorations = this.modifiedModel.deltaDecorations(this._editDecorations, newDecorations);
255
+ else {
256
+ const ops = ( textEdits.map(TextEdit.asEditOperation));
257
+ const undoEdits = this._applyEdits(ops);
258
+ const maxLineNumber = undoEdits.reduce((max, op) => Math.max(max, op.range.startLineNumber), 0);
259
+ rewriteRatio = Math.min(1, maxLineNumber / this.modifiedModel.getLineCount());
260
+ const newDecorations = [
261
+ {
262
+ options: ChatEditingModifiedDocumentEntry_1._pendingEditDecorationOptions,
263
+ range: ( new Range(maxLineNumber + 1, 1, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER))
264
+ }
265
+ ];
266
+ if (maxLineNumber > 0) {
267
+ newDecorations.push({
268
+ options: ChatEditingModifiedDocumentEntry_1._lastEditDecorationOptions,
269
+ range: ( new Range(maxLineNumber, 1, maxLineNumber, Number.MAX_SAFE_INTEGER))
270
+ });
271
+ }
272
+ this._editDecorations = this.modifiedModel.deltaDecorations(this._editDecorations, newDecorations);
273
+ }
226
274
  transaction((tx) => {
275
+ this._waitsForLastEdits.set(!isLastEdits, tx);
276
+ this._stateObs.set(ModifiedFileEntryState.Modified, tx);
227
277
  if (!isLastEdits) {
228
- this._stateObs.set(ModifiedFileEntryState.Modified, tx);
229
278
  this._isCurrentlyBeingModifiedByObs.set(responseModel, tx);
230
- const lineCount = this.modifiedModel.getLineCount();
231
- this._rewriteRatioObs.set(Math.min(1, maxLineNumber / lineCount), tx);
279
+ this._rewriteRatioObs.set(rewriteRatio, tx);
232
280
  }
233
281
  else {
234
282
  this._resetEditsState(tx);
@@ -284,7 +332,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
284
332
  this._isEditFromUs = true;
285
333
  try {
286
334
  let result = [];
287
- TextModelChangeRecorder.editWithMetadata({ source: 'Chat.applyEdits' }, () => {
335
+ TextModelEditReason.editWithReason(( new TextModelEditReason({ source: 'Chat.applyEdits' })), () => {
288
336
  this.modifiedModel.pushEditOperations(null, edits, (undoEdits) => {
289
337
  result = undoEdits;
290
338
  return null;
@@ -326,7 +374,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
326
374
  if (this.modifiedModel.getVersionId() === docVersionNow && this.originalModel.getVersionId() === snapshotVersionNow) {
327
375
  const diff2 = diff ?? nullDocumentDiff;
328
376
  this._diffInfo.set(diff2, undefined);
329
- this._edit = OffsetEdits.fromLineRangeMapping(this.originalModel, this.modifiedModel, diff2.changes);
377
+ this._edit = offsetEditFromLineRangeMapping(this.originalModel, this.modifiedModel, diff2.changes);
330
378
  return diff2;
331
379
  }
332
380
  return undefined;
@@ -334,7 +382,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
334
382
  async _doAccept(tx) {
335
383
  this.originalModel.setValue(this.modifiedModel.createSnapshot());
336
384
  this._diffInfo.set(nullDocumentDiff, tx);
337
- this._edit = OffsetEdit.empty;
385
+ this._edit = StringEdit.empty;
338
386
  await this._collapse(tx);
339
387
  const config = this._fileConfigService.getAutoSaveConfiguration(this.modifiedURI);
340
388
  if (!config.autoSave || !this._textFileService.isDirty(this.modifiedURI)) {