@codingame/monaco-vscode-chat-service-override 15.0.2 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +11 -8
- package/package.json +29 -20
- package/vscode/src/vs/editor/common/diff/documentDiffProvider.d.ts +22 -0
- package/vscode/src/vs/editor/common/diff/documentDiffProvider.js +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.d.ts +9 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +80 -55
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/chatAttachPromptAction.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/chatAttachPromptAction.js +17 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/{askToSelectPrompt.d.ts → askToSelectPrompt/askToSelectPrompt.d.ts} +9 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/askToSelectPrompt.js +79 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/constants.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/constants.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/attachPrompts.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/attachPrompts.js +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPlaceholderText.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPlaceholderText.js +19 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPromptPickItem.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPromptPickItem.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/handleButtonClick.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/handleButtonClick.js +49 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +163 -72
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +22 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +17 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +15 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +242 -74
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditing.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditing.js +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +688 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +28 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +355 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +71 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +395 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +98 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +216 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +97 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +831 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +7 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +32 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +110 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +985 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +69 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.js +67 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +147 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +56 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +284 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +578 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +122 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +320 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.d.ts +31 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +50 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +22 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +166 -62
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +6 -104
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +704 -732
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +10 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +329 -236
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusItemService.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusItemService.js +27 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +14 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/editorHoverWrapper.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/editorHoverWrapper.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/media/editorHoverWrapper.css +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +17 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +217 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +114 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditorController.css +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSetup.css +56 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +90 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.js +65 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/errors.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/utils/createPromptFile.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/utils/createPromptFile.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/usePromptCommand.js +14 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +16 -8
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +175 -57
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +66 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +313 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.js +4 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatTransferService.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatTransferService.js +30 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/constants.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/constants.js +6 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/textModelContentsProvider.d.ts +10 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/textModelContentsProvider.js +18 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageFeatures/promptLinkDiagnosticsProvider.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageFeatures/promptLinkDiagnosticsProvider.js +117 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageFeatures/promptPathAutocompletion.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +157 -65
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +39 -21
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -3
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +11 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +47 -0
- package/vscode/src/vs/workbench/services/workspaces/common/workspaceUtils.d.ts +5 -0
- package/vscode/src/vs/workbench/services/workspaces/common/workspaceUtils.js +26 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt.js +0 -142
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +0 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +0 -331
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputRelatedFilesContrib.d.ts +0 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputRelatedFilesContrib.js +0 -110
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/media/editorHoverWrapper.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatViewSetup.css.js +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatEntitlementsService.d.ts +0 -19
- package/vscode/src/vs/workbench/contrib/chat/common/chatEntitlementsService.js +0 -13
- package/vscode/src/vs/workbench/contrib/chat/common/chatQuotasService.d.ts +0 -31
- package/vscode/src/vs/workbench/contrib/chat/common/chatQuotasService.js +0 -85
- package/vscode/src/vs/workbench/contrib/chat/common/tools/tools.d.ts +0 -11
- package/vscode/src/vs/workbench/contrib/chat/common/tools/tools.js +0 -22
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
|
+
import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
|
|
3
|
+
import { IModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service";
|
|
4
|
+
import { ITextModelContentProvider } from "@codingame/monaco-vscode-model-service-override/vscode/vs/editor/common/services/resolverService";
|
|
5
|
+
import { IChatEditingService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService.service";
|
|
6
|
+
export declare class ChatEditingTextModelContentProvider implements ITextModelContentProvider {
|
|
7
|
+
private readonly _chatEditingService;
|
|
8
|
+
private readonly _modelService;
|
|
9
|
+
static readonly scheme = "chat-editing-text-model";
|
|
10
|
+
static getFileURI(chatSessionId: string, documentId: string, path: string): URI;
|
|
11
|
+
constructor(_chatEditingService: IChatEditingService, _modelService: IModelService);
|
|
12
|
+
provideTextContent(resource: URI): Promise<ITextModel | null>;
|
|
13
|
+
}
|
|
14
|
+
export declare class ChatEditingSnapshotTextModelContentProvider implements ITextModelContentProvider {
|
|
15
|
+
private readonly _chatEditingService;
|
|
16
|
+
private readonly _modelService;
|
|
17
|
+
static getSnapshotFileURI(chatSessionId: string, requestId: string | undefined, undoStop: string | undefined, path: string): URI;
|
|
18
|
+
constructor(_chatEditingService: IChatEditingService, _modelService: IModelService);
|
|
19
|
+
provideTextContent(resource: URI): Promise<ITextModel | null>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
4
|
+
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
5
|
+
import { chatEditingSnapshotScheme } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
|
|
6
|
+
import { ChatEditingSession } from './chatEditingSession.js';
|
|
7
|
+
|
|
8
|
+
var ChatEditingTextModelContentProvider_1;
|
|
9
|
+
let ChatEditingTextModelContentProvider = class ChatEditingTextModelContentProvider {
|
|
10
|
+
static { ChatEditingTextModelContentProvider_1 = this; }
|
|
11
|
+
static { this.scheme = 'chat-editing-text-model'; }
|
|
12
|
+
static getFileURI(chatSessionId, documentId, path) {
|
|
13
|
+
return ( URI.from({
|
|
14
|
+
scheme: ChatEditingTextModelContentProvider_1.scheme,
|
|
15
|
+
path,
|
|
16
|
+
query: JSON.stringify({ kind: 'doc', documentId, chatSessionId }),
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
constructor(_chatEditingService, _modelService) {
|
|
20
|
+
this._chatEditingService = _chatEditingService;
|
|
21
|
+
this._modelService = _modelService;
|
|
22
|
+
}
|
|
23
|
+
async provideTextContent(resource) {
|
|
24
|
+
const existing = this._modelService.getModel(resource);
|
|
25
|
+
if (existing && !existing.isDisposed()) {
|
|
26
|
+
return existing;
|
|
27
|
+
}
|
|
28
|
+
const data = JSON.parse(resource.query);
|
|
29
|
+
const session = this._chatEditingService.getEditingSession(data.chatSessionId);
|
|
30
|
+
const entry = session?.entries.get().find(candidate => candidate.entryId === data.documentId);
|
|
31
|
+
if (!entry) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
return this._modelService.getModel(entry.originalURI);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
ChatEditingTextModelContentProvider = ChatEditingTextModelContentProvider_1 = ( __decorate([
|
|
38
|
+
( __param(1, IModelService))
|
|
39
|
+
], ChatEditingTextModelContentProvider));
|
|
40
|
+
let ChatEditingSnapshotTextModelContentProvider = class ChatEditingSnapshotTextModelContentProvider {
|
|
41
|
+
static getSnapshotFileURI(chatSessionId, requestId, undoStop, path) {
|
|
42
|
+
return ( URI.from({
|
|
43
|
+
scheme: chatEditingSnapshotScheme,
|
|
44
|
+
path,
|
|
45
|
+
query: JSON.stringify({ sessionId: chatSessionId, requestId: requestId ?? '', undoStop: undoStop ?? '' }),
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
constructor(_chatEditingService, _modelService) {
|
|
49
|
+
this._chatEditingService = _chatEditingService;
|
|
50
|
+
this._modelService = _modelService;
|
|
51
|
+
}
|
|
52
|
+
async provideTextContent(resource) {
|
|
53
|
+
const existing = this._modelService.getModel(resource);
|
|
54
|
+
if (existing && !existing.isDisposed()) {
|
|
55
|
+
return existing;
|
|
56
|
+
}
|
|
57
|
+
const data = JSON.parse(resource.query);
|
|
58
|
+
const session = this._chatEditingService.getEditingSession(data.sessionId);
|
|
59
|
+
if (!(session instanceof ChatEditingSession) || !data.requestId) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return session.getSnapshotModel(data.requestId, data.undoStop || undefined, resource);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
ChatEditingSnapshotTextModelContentProvider = ( __decorate([
|
|
66
|
+
( __param(1, IModelService))
|
|
67
|
+
], ChatEditingSnapshotTextModelContentProvider));
|
|
68
|
+
|
|
69
|
+
export { ChatEditingSnapshotTextModelContentProvider, ChatEditingTextModelContentProvider };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { INotebookEditorModelResolverService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookEditorModelResolverService.service";
|
|
2
|
+
import { INotebookLoggingService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookLoggingService.service";
|
|
3
|
+
import { INotebookEditorWorkerService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/services/notebookWorkerService.service";
|
|
4
|
+
import { IEditSessionEntryDiff } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService";
|
|
5
|
+
import { ISnapshotEntry } from "../chatEditingModifiedFileEntry.js";
|
|
6
|
+
export declare class ChatEditingModifiedNotebookDiff {
|
|
7
|
+
private readonly original;
|
|
8
|
+
private readonly modified;
|
|
9
|
+
private readonly notebookEditorWorkerService;
|
|
10
|
+
private readonly notebookLoggingService;
|
|
11
|
+
private readonly notebookEditorModelService;
|
|
12
|
+
static NewModelCounter: number;
|
|
13
|
+
constructor(original: ISnapshotEntry, modified: ISnapshotEntry, notebookEditorWorkerService: INotebookEditorWorkerService, notebookLoggingService: INotebookLoggingService, notebookEditorModelService: INotebookEditorModelResolverService);
|
|
14
|
+
computeDiff(): Promise<IEditSessionEntryDiff>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
|
|
2
|
+
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
4
|
+
import { computeDiff } from '@codingame/monaco-vscode-9a6d8b6c-ad4c-5ea3-9558-f43d6dc4c0ad-common/vscode/vs/workbench/contrib/notebook/common/notebookDiff';
|
|
5
|
+
import { INotebookEditorModelResolverService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookEditorModelResolverService.service';
|
|
6
|
+
import { INotebookLoggingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookLoggingService.service';
|
|
7
|
+
import { INotebookEditorWorkerService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/services/notebookWorkerService.service';
|
|
8
|
+
|
|
9
|
+
let ChatEditingModifiedNotebookDiff = class ChatEditingModifiedNotebookDiff {
|
|
10
|
+
static { this.NewModelCounter = 0; }
|
|
11
|
+
constructor(original, modified, notebookEditorWorkerService, notebookLoggingService, notebookEditorModelService) {
|
|
12
|
+
this.original = original;
|
|
13
|
+
this.modified = modified;
|
|
14
|
+
this.notebookEditorWorkerService = notebookEditorWorkerService;
|
|
15
|
+
this.notebookLoggingService = notebookLoggingService;
|
|
16
|
+
this.notebookEditorModelService = notebookEditorModelService;
|
|
17
|
+
}
|
|
18
|
+
async computeDiff() {
|
|
19
|
+
let added = 0;
|
|
20
|
+
let removed = 0;
|
|
21
|
+
const disposables = ( new DisposableStore());
|
|
22
|
+
try {
|
|
23
|
+
const [modifiedRef, originalRef] = await Promise.all([
|
|
24
|
+
this.notebookEditorModelService.resolve(this.modified.snapshotUri),
|
|
25
|
+
this.notebookEditorModelService.resolve(this.original.snapshotUri)
|
|
26
|
+
]);
|
|
27
|
+
disposables.add(modifiedRef);
|
|
28
|
+
disposables.add(originalRef);
|
|
29
|
+
const notebookDiff = await this.notebookEditorWorkerService.computeDiff(this.original.snapshotUri, this.modified.snapshotUri);
|
|
30
|
+
const result = computeDiff(originalRef.object.notebook, modifiedRef.object.notebook, notebookDiff);
|
|
31
|
+
result.cellDiffInfo.forEach(diff => {
|
|
32
|
+
switch (diff.type) {
|
|
33
|
+
case 'modified':
|
|
34
|
+
case 'insert':
|
|
35
|
+
added++;
|
|
36
|
+
break;
|
|
37
|
+
case 'delete':
|
|
38
|
+
removed++;
|
|
39
|
+
break;
|
|
40
|
+
default:
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
this.notebookLoggingService.error('Notebook Chat', 'Error computing diff:\n' + e);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
disposables.dispose();
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
added,
|
|
53
|
+
removed,
|
|
54
|
+
identical: added === 0 && removed === 0,
|
|
55
|
+
quitEarly: false,
|
|
56
|
+
modifiedURI: this.modified.snapshotUri,
|
|
57
|
+
originalURI: this.original.snapshotUri,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
ChatEditingModifiedNotebookDiff = ( __decorate([
|
|
62
|
+
( __param(2, INotebookEditorWorkerService)),
|
|
63
|
+
( __param(3, INotebookLoggingService)),
|
|
64
|
+
( __param(4, INotebookEditorModelResolverService))
|
|
65
|
+
], ChatEditingModifiedNotebookDiff));
|
|
66
|
+
|
|
67
|
+
export { ChatEditingModifiedNotebookDiff };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
2
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
3
|
+
import { NotebookTextModel } from "@codingame/monaco-vscode-notebook-service-override/vscode/vs/workbench/contrib/notebook/common/model/notebookTextModel";
|
|
4
|
+
import { NotebookData, TransientOptions } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon";
|
|
5
|
+
type ChatEditingSnapshotNotebookContentQueryData = {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
requestId: string | undefined;
|
|
8
|
+
undoStop: string | undefined;
|
|
9
|
+
viewType: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const ChatEditingNotebookSnapshotScheme = "chat-editing-notebook-snapshot-model";
|
|
12
|
+
export declare function getNotebookSnapshotFileURI(chatSessionId: string, requestId: string | undefined, undoStop: string | undefined, path: string, viewType: string): URI;
|
|
13
|
+
export declare function parseNotebookSnapshotFileURI(resource: URI): ChatEditingSnapshotNotebookContentQueryData;
|
|
14
|
+
export declare function createSnapshot(notebook: NotebookTextModel, transientOptions: TransientOptions | undefined, outputSizeConfig: IConfigurationService | number): string;
|
|
15
|
+
export declare function restoreSnapshot(notebook: NotebookTextModel, snapshot: string): void;
|
|
16
|
+
export declare class SnapshotComparer {
|
|
17
|
+
private readonly data;
|
|
18
|
+
private readonly transientOptions;
|
|
19
|
+
constructor(initialCotent: string);
|
|
20
|
+
isEqual(notebook: NotebookData | NotebookTextModel): boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function deserializeSnapshot(snapshot: string): {
|
|
23
|
+
transientOptions: TransientOptions | undefined;
|
|
24
|
+
data: NotebookData;
|
|
25
|
+
};
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
|
|
2
|
+
import { VSBuffer, encodeBase64, decodeBase64 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
|
|
3
|
+
import { filter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objects';
|
|
4
|
+
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
5
|
+
import { SnapshotContext } from '@codingame/monaco-vscode-bba55be6-41a2-50cd-a3cc-8bafa35bfa89-common/vscode/vs/workbench/services/workingCopy/common/fileWorkingCopy';
|
|
6
|
+
import { NotebookCellTextModel } from '@codingame/monaco-vscode-9a6d8b6c-ad4c-5ea3-9558-f43d6dc4c0ad-common/vscode/vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
|
|
7
|
+
import { NotebookSetting, CellEditType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
|
|
8
|
+
|
|
9
|
+
const BufferMarker = 'ArrayBuffer-4f56482b-5a03-49ba-8356-210d3b0c1c3d';
|
|
10
|
+
const ChatEditingNotebookSnapshotScheme = 'chat-editing-notebook-snapshot-model';
|
|
11
|
+
function getNotebookSnapshotFileURI(chatSessionId, requestId, undoStop, path, viewType) {
|
|
12
|
+
return ( URI.from({
|
|
13
|
+
scheme: ChatEditingNotebookSnapshotScheme,
|
|
14
|
+
path,
|
|
15
|
+
query: JSON.stringify({ sessionId: chatSessionId, requestId: requestId ?? '', undoStop: undoStop ?? '', viewType }),
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
function createSnapshot(notebook, transientOptions, outputSizeConfig) {
|
|
19
|
+
const outputSizeLimit = (typeof outputSizeConfig === 'number' ? outputSizeConfig : outputSizeConfig.getValue(NotebookSetting.outputBackupSizeLimit)) * 1024;
|
|
20
|
+
return serializeSnapshot(notebook.createSnapshot({ context: SnapshotContext.Backup, outputSizeLimit, transientOptions }), transientOptions);
|
|
21
|
+
}
|
|
22
|
+
function restoreSnapshot(notebook, snapshot) {
|
|
23
|
+
try {
|
|
24
|
+
const { transientOptions, data } = deserializeSnapshot(snapshot);
|
|
25
|
+
notebook.restoreSnapshot(data, transientOptions);
|
|
26
|
+
const edits = [];
|
|
27
|
+
data.cells.forEach((cell, index) => {
|
|
28
|
+
const internalId = cell.internalMetadata?.internalId;
|
|
29
|
+
if (internalId) {
|
|
30
|
+
edits.push({ editType: CellEditType.PartialInternalMetadata, index, internalMetadata: { internalId } });
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
notebook.applyEdits(edits, true, undefined, () => undefined, undefined, false);
|
|
34
|
+
}
|
|
35
|
+
catch (ex) {
|
|
36
|
+
console.error('Error restoring Notebook snapshot', ex);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
class SnapshotComparer {
|
|
40
|
+
constructor(initialCotent) {
|
|
41
|
+
this.transientOptions = deserializeSnapshot(initialCotent).transientOptions;
|
|
42
|
+
this.data = deserializeSnapshot(initialCotent).data;
|
|
43
|
+
}
|
|
44
|
+
isEqual(notebook) {
|
|
45
|
+
if (notebook.cells.length !== this.data.cells.length) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const transientDocumentMetadata = this.transientOptions?.transientDocumentMetadata || {};
|
|
49
|
+
const notebookMetadata = filter(notebook.metadata || {}, key => !transientDocumentMetadata[key]);
|
|
50
|
+
const comparerMetadata = filter(this.data.metadata || {}, key => !transientDocumentMetadata[key]);
|
|
51
|
+
if (JSON.stringify(notebookMetadata) !== JSON.stringify(comparerMetadata)) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
const transientCellMetadata = this.transientOptions?.transientCellMetadata || {};
|
|
55
|
+
for (let i = 0; i < notebook.cells.length; i++) {
|
|
56
|
+
const notebookCell = notebook.cells[i];
|
|
57
|
+
const comparerCell = this.data.cells[i];
|
|
58
|
+
if (notebookCell instanceof NotebookCellTextModel) {
|
|
59
|
+
if (!notebookCell.fastEqual(comparerCell, true)) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
if (notebookCell.cellKind !== comparerCell.cellKind) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
if (notebookCell.language !== comparerCell.language) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
if (notebookCell.mime !== comparerCell.mime) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (notebookCell.source !== comparerCell.source) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
if (!this.transientOptions?.transientOutputs && notebookCell.outputs.length !== comparerCell.outputs.length) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
const cellMetadata = filter(notebookCell.metadata || {}, key => !transientCellMetadata[key]);
|
|
80
|
+
const comparerCellMetadata = filter(comparerCell.metadata || {}, key => !transientCellMetadata[key]);
|
|
81
|
+
if (JSON.stringify(cellMetadata) !== JSON.stringify(comparerCellMetadata)) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
if (JSON.stringify(sanitizeCellDto2(notebookCell, true, this.transientOptions)) !== JSON.stringify(sanitizeCellDto2(comparerCell, true, this.transientOptions))) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function sanitizeCellDto2(cell, ignoreInternalMetadata, transientOptions) {
|
|
93
|
+
const transientCellMetadata = transientOptions?.transientCellMetadata || {};
|
|
94
|
+
const outputs = transientOptions?.transientOutputs ? [] : ( cell.outputs.map(output => {
|
|
95
|
+
return {
|
|
96
|
+
outputId: output.outputId,
|
|
97
|
+
metadata: output.metadata,
|
|
98
|
+
outputs: ( output.outputs.map(item => {
|
|
99
|
+
return {
|
|
100
|
+
data: item.data,
|
|
101
|
+
mime: item.mime,
|
|
102
|
+
};
|
|
103
|
+
})),
|
|
104
|
+
};
|
|
105
|
+
}));
|
|
106
|
+
return {
|
|
107
|
+
cellKind: cell.cellKind,
|
|
108
|
+
language: cell.language,
|
|
109
|
+
metadata: cell.metadata ? filter(cell.metadata, key => !transientCellMetadata[key]) : cell.metadata,
|
|
110
|
+
outputs,
|
|
111
|
+
mime: cell.mime,
|
|
112
|
+
source: cell.source,
|
|
113
|
+
collapseState: cell.collapseState,
|
|
114
|
+
internalMetadata: ignoreInternalMetadata ? undefined : cell.internalMetadata
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function serializeSnapshot(data, transientOptions) {
|
|
118
|
+
const dataDto = {
|
|
119
|
+
cells: ( data.cells.map(cell => sanitizeCellDto2(cell))),
|
|
120
|
+
metadata: data.metadata,
|
|
121
|
+
};
|
|
122
|
+
return JSON.stringify([
|
|
123
|
+
JSON.stringify(transientOptions),
|
|
124
|
+
JSON.stringify(dataDto, (_key, value) => {
|
|
125
|
+
if (value instanceof VSBuffer) {
|
|
126
|
+
return {
|
|
127
|
+
type: BufferMarker,
|
|
128
|
+
data: encodeBase64(value)
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return value;
|
|
132
|
+
})
|
|
133
|
+
]);
|
|
134
|
+
}
|
|
135
|
+
function deserializeSnapshot(snapshot) {
|
|
136
|
+
const [transientOptionsStr, dataStr] = JSON.parse(snapshot);
|
|
137
|
+
const transientOptions = transientOptionsStr ? JSON.parse(transientOptionsStr) : undefined;
|
|
138
|
+
const data = JSON.parse(dataStr, (_key, value) => {
|
|
139
|
+
if (value && value.type === BufferMarker) {
|
|
140
|
+
return decodeBase64(value.data);
|
|
141
|
+
}
|
|
142
|
+
return value;
|
|
143
|
+
});
|
|
144
|
+
return { transientOptions, data };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export { ChatEditingNotebookSnapshotScheme, SnapshotComparer, createSnapshot, deserializeSnapshot, getNotebookSnapshotFileURI, restoreSnapshot };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { DisposableStore } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
2
|
+
import { ITransaction, IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
|
|
3
|
+
import { ObservableDisposable } from "@codingame/monaco-vscode-9a6d8b6c-ad4c-5ea3-9558-f43d6dc4c0ad-common/vscode/vs/base/common/observableDisposable";
|
|
4
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
5
|
+
import { IDocumentDiff } from "../../../../../../editor/common/diff/documentDiffProvider.js";
|
|
6
|
+
import { DetailedLineRangeMapping } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/diff/rangeMapping";
|
|
7
|
+
import { TextEdit } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/languages";
|
|
8
|
+
import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
|
|
9
|
+
import { IEditorWorkerService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/editorWorker.service";
|
|
10
|
+
import { IConfigurationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service";
|
|
11
|
+
import { INotebookEditorService } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/browser/services/notebookEditorService.service";
|
|
12
|
+
import { NotebookCellTextModel } from "@codingame/monaco-vscode-9a6d8b6c-ad4c-5ea3-9558-f43d6dc4c0ad-common/vscode/vs/workbench/contrib/notebook/common/model/notebookCellTextModel";
|
|
13
|
+
import { WorkingSetEntryState } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService";
|
|
14
|
+
import { IChatResponseModel } from "@codingame/monaco-vscode-9a6d8b6c-ad4c-5ea3-9558-f43d6dc4c0ad-common/vscode/vs/workbench/contrib/chat/common/chatModel";
|
|
15
|
+
export declare class ChatEditingNotebookCellEntry extends ObservableDisposable {
|
|
16
|
+
readonly notebookUri: URI;
|
|
17
|
+
readonly cell: NotebookCellTextModel;
|
|
18
|
+
private readonly modifiedModel;
|
|
19
|
+
private readonly originalModel;
|
|
20
|
+
private readonly _editorWorkerService;
|
|
21
|
+
private readonly notebookEditorService;
|
|
22
|
+
private static readonly _lastEditDecorationOptions;
|
|
23
|
+
private static readonly _pendingEditDecorationOptions;
|
|
24
|
+
private _edit;
|
|
25
|
+
private _isEditFromUs;
|
|
26
|
+
get isEditFromUs(): boolean;
|
|
27
|
+
private _allEditsAreFromUs;
|
|
28
|
+
get allEditsAreFromUs(): boolean;
|
|
29
|
+
private _diffOperation;
|
|
30
|
+
private _diffOperationIds;
|
|
31
|
+
private readonly _diffInfo;
|
|
32
|
+
get diffInfo(): IObservable<IDocumentDiff>;
|
|
33
|
+
private readonly _maxModifiedLineNumber;
|
|
34
|
+
readonly maxModifiedLineNumber: import("@codingame/monaco-vscode-api/vscode/vs/base/common/observable").ISettableObservable<number, void>;
|
|
35
|
+
private readonly _editDecorationClear;
|
|
36
|
+
private _editDecorations;
|
|
37
|
+
private readonly _diffTrimWhitespace;
|
|
38
|
+
protected readonly _stateObs: import("@codingame/monaco-vscode-api/vscode/vs/base/common/observable").ISettableObservable<WorkingSetEntryState, void>;
|
|
39
|
+
readonly state: IObservable<WorkingSetEntryState>;
|
|
40
|
+
protected readonly _isCurrentlyBeingModifiedByObs: import("@codingame/monaco-vscode-api/vscode/vs/base/common/observable").ISettableObservable<IChatResponseModel | undefined, void>;
|
|
41
|
+
readonly isCurrentlyBeingModifiedBy: IObservable<IChatResponseModel | undefined>;
|
|
42
|
+
private readonly initialContent;
|
|
43
|
+
constructor(notebookUri: URI, cell: NotebookCellTextModel, modifiedModel: ITextModel, originalModel: ITextModel, disposables: DisposableStore, configService: IConfigurationService, _editorWorkerService: IEditorWorkerService, notebookEditorService: INotebookEditorService);
|
|
44
|
+
clearCurrentEditLineDecoration(): void;
|
|
45
|
+
private _mirrorEdits;
|
|
46
|
+
acceptAgentEdits(textEdits: TextEdit[], isLastEdits: boolean, responseModel: IChatResponseModel): void;
|
|
47
|
+
scheduleEditDecorations(): void;
|
|
48
|
+
protected _resetEditsState(tx: ITransaction): void;
|
|
49
|
+
keep(change: DetailedLineRangeMapping): Promise<boolean>;
|
|
50
|
+
private _acceptHunk;
|
|
51
|
+
undo(change: DetailedLineRangeMapping): Promise<boolean>;
|
|
52
|
+
private _rejectHunk;
|
|
53
|
+
private _applyEdits;
|
|
54
|
+
private _updateDiffInfoSeq;
|
|
55
|
+
private _updateDiffInfo;
|
|
56
|
+
}
|