3
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
4
*--------------------------------------------------------------------------------------------*/
5
5
6
- import { ChatViewId , IChatWidget , IChatWidgetService } from '../../chat.js' ;
7
- import { CHAT_CATEGORY } from '../chatActions.js' ;
8
- import { URI } from '../../../../../../base/common/uri.js' ;
9
- import { localize , localize2 } from '../../../../../../nls.js' ;
10
- import { ChatContextKeys } from '../../../common/chatContextKeys.js' ;
11
- import { assertDefined } from '../../../../../../base/common/types.js' ;
12
- import { IPromptsService } from '../../../common/promptSyntax/service/types.js' ;
13
- import { PromptsConfig } from '../../../../../../platform/prompts/common/config.js' ;
14
- import { IViewsService } from '../../../../../services/views/common/viewsService.js' ;
15
- import { PromptFilePickers } from './dialogs/askToSelectPrompt/promptFilePickers.js' ;
16
- import { ServicesAccessor } from '../../../../../../editor/browser/editorExtensions.js' ;
17
- import { ICommandService } from '../../../../../../platform/commands/common/commands.js' ;
18
- import { ContextKeyExpr } from '../../../../../../platform/contextkey/common/contextkey.js' ;
19
- import { Action2 , MenuId , registerAction2 } from '../../../../../../platform/actions/common/actions.js' ;
20
- import { IInstantiationService } from '../../../../../../platform/instantiation/common/instantiation.js' ;
21
- import { attachInstructionsFiles , IAttachOptions } from './dialogs/askToSelectPrompt/utils/attachInstructions.js' ;
22
- import { ChatContextPick , IChatContextPickerItem , IChatContextPickerPickItem } from '../../chatContextPickService.js' ;
23
- import { IQuickPickSeparator } from '../../../../../../platform/quickinput/common/quickInput.js' ;
24
- import { Codicon } from '../../../../../../base/common/codicons.js' ;
25
- import { getCleanPromptName , PromptsType } from '../../../../../../platform/prompts/common/prompts.js' ;
26
- import { compare } from '../../../../../../base/common/strings.js' ;
27
- import { ILabelService } from '../../../../../../platform/label/common/label.js' ;
28
- import { dirname } from '../../../../../../base/common/resources.js' ;
29
- import { IPromptFileVariableEntry } from '../../../common/chatModel.js' ;
30
- import { KeyMod , KeyCode } from '../../../../../../base/common/keyCodes.js' ;
31
- import { KeybindingWeight } from '../../../../../../platform/keybinding/common/keybindingsRegistry.js' ;
32
- import { ICodeEditorService } from '../../../../../../editor/browser/services/codeEditorService.js' ;
33
- import { INSTRUCTIONS_LANGUAGE_ID } from '../../../common/promptSyntax/constants.js' ;
34
- import { CancellationToken } from '../../../../../../base/common/cancellation.js' ;
35
- import { IOpenerService } from '../../../../../../platform/opener/common/opener.js' ;
6
+ import { ChatViewId , IChatWidget , IChatWidgetService , showChatView } from '../chat.js' ;
7
+ import { CHAT_CATEGORY } from '../actions/chatActions.js' ;
8
+ import { URI } from '../../../../../base/common/uri.js' ;
9
+ import { localize , localize2 } from '../../../../../nls.js' ;
10
+ import { ChatContextKeys } from '../../common/chatContextKeys.js' ;
11
+ import { IPromptsService } from '../../common/promptSyntax/service/types.js' ;
12
+ import { PromptsConfig } from '../../../../../platform/prompts/common/config.js' ;
13
+ import { IViewsService } from '../../../../services/views/common/viewsService.js' ;
14
+ import { PromptFilePickers } from './pickers/promptFilePickers.js' ;
15
+ import { ServicesAccessor } from '../../../../../editor/browser/editorExtensions.js' ;
16
+ import { ContextKeyExpr } from '../../../../../platform/contextkey/common/contextkey.js' ;
17
+ import { Action2 , MenuId , registerAction2 } from '../../../../../platform/actions/common/actions.js' ;
18
+ import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js' ;
19
+ import { ChatContextPick , IChatContextPickerItem , IChatContextPickerPickItem } from '../chatContextPickService.js' ;
20
+ import { IQuickPickSeparator } from '../../../../../platform/quickinput/common/quickInput.js' ;
21
+ import { Codicon } from '../../../../../base/common/codicons.js' ;
22
+ import { getCleanPromptName , PromptsType } from '../../../../../platform/prompts/common/prompts.js' ;
23
+ import { compare } from '../../../../../base/common/strings.js' ;
24
+ import { ILabelService } from '../../../../../platform/label/common/label.js' ;
25
+ import { dirname } from '../../../../../base/common/resources.js' ;
26
+ import { IPromptFileVariableEntry } from '../../common/chatModel.js' ;
27
+ import { KeyMod , KeyCode } from '../../../../../base/common/keyCodes.js' ;
28
+ import { KeybindingWeight } from '../../../../../platform/keybinding/common/keybindingsRegistry.js' ;
29
+ import { ICodeEditorService } from '../../../../../editor/browser/services/codeEditorService.js' ;
30
+ import { INSTRUCTIONS_LANGUAGE_ID } from '../../common/promptSyntax/constants.js' ;
31
+ import { CancellationToken } from '../../../../../base/common/cancellation.js' ;
32
+ import { IOpenerService } from '../../../../../platform/opener/common/opener.js' ;
36
33
37
34
/**
38
35
* Action ID for the `Attach Instruction` action.
@@ -100,7 +97,6 @@ class AttachInstructionsAction extends Action2 {
100
97
options ?: IAttachInstructionsActionOptions ,
101
98
) : Promise < void > {
102
99
const viewsService = accessor . get ( IViewsService ) ;
103
- const commandService = accessor . get ( ICommandService ) ;
104
100
const instaService = accessor . get ( IInstantiationService ) ;
105
101
106
102
if ( ! options ) {
@@ -114,25 +110,15 @@ class AttachInstructionsAction extends Action2 {
114
110
115
111
const { skipSelectionDialog, resource } = options ;
116
112
117
- const attachOptions : IAttachOptions = {
118
- widget : options . widget ,
119
- viewsService,
120
- commandService,
121
- } ;
122
-
123
- if ( skipSelectionDialog ) {
124
- assertDefined (
125
- resource ,
126
- 'Resource must be defined when skipping prompt selection dialog.' ,
127
- ) ;
128
113
129
- const widget = await attachInstructionsFiles (
130
- [ resource ] ,
131
- attachOptions ,
132
- ) ;
114
+ const widget = options . widget ?? ( await showChatView ( viewsService ) ) ;
115
+ if ( ! widget ) {
116
+ return ;
117
+ }
133
118
119
+ if ( skipSelectionDialog && resource ) {
120
+ widget . attachmentModel . promptInstructions . add ( resource ) ;
134
121
widget . focusInput ( ) ;
135
-
136
122
return ;
137
123
}
138
124
@@ -144,10 +130,7 @@ class AttachInstructionsAction extends Action2 {
144
130
const result = await pickers . selectPromptFile ( { resource, placeholder, type : PromptsType . instructions } ) ;
145
131
146
132
if ( result !== undefined ) {
147
- const widget = await attachInstructionsFiles (
148
- [ result . promptFile ] ,
149
- attachOptions ,
150
- ) ;
133
+ widget . attachmentModel . promptInstructions . add ( result . promptFile ) ;
151
134
widget . focusInput ( ) ;
152
135
}
153
136
}
0 commit comments