@theia/ai-editor 1.63.0-next.52 → 1.63.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 (26) hide show
  1. package/lib/browser/ai-code-action-provider.d.ts +2 -0
  2. package/lib/browser/ai-code-action-provider.d.ts.map +1 -1
  3. package/lib/browser/ai-code-action-provider.js +18 -0
  4. package/lib/browser/ai-code-action-provider.js.map +1 -1
  5. package/lib/browser/ai-editor-command-contribution.d.ts +9 -2
  6. package/lib/browser/ai-editor-command-contribution.d.ts.map +1 -1
  7. package/lib/browser/ai-editor-command-contribution.js +68 -70
  8. package/lib/browser/ai-editor-command-contribution.js.map +1 -1
  9. package/lib/browser/ai-editor-frontend-module.d.ts.map +1 -1
  10. package/lib/browser/ai-editor-frontend-module.js +13 -0
  11. package/lib/browser/ai-editor-frontend-module.js.map +1 -1
  12. package/lib/browser/ask-ai-input-monaco-zone-widget.d.ts +25 -0
  13. package/lib/browser/ask-ai-input-monaco-zone-widget.d.ts.map +1 -0
  14. package/lib/browser/ask-ai-input-monaco-zone-widget.js +93 -0
  15. package/lib/browser/ask-ai-input-monaco-zone-widget.js.map +1 -0
  16. package/lib/browser/ask-ai-input-widget.d.ts +26 -23
  17. package/lib/browser/ask-ai-input-widget.d.ts.map +1 -1
  18. package/lib/browser/ask-ai-input-widget.js +65 -72
  19. package/lib/browser/ask-ai-input-widget.js.map +1 -1
  20. package/package.json +11 -10
  21. package/src/browser/ai-code-action-provider.ts +20 -0
  22. package/src/browser/ai-editor-command-contribution.ts +72 -76
  23. package/src/browser/ai-editor-frontend-module.ts +19 -0
  24. package/src/browser/ask-ai-input-monaco-zone-widget.ts +114 -0
  25. package/src/browser/ask-ai-input-widget.ts +54 -88
  26. package/style/ask-ai-input.css +7 -22
@@ -2,12 +2,14 @@ import { FrontendApplicationContribution } from '@theia/core/lib/browser';
2
2
  import { CommandService } from '@theia/core/lib/common/command';
3
3
  import { DisposableCollection } from '@theia/core/lib/common/disposable';
4
4
  import { MonacoEditorService } from '@theia/monaco/lib/browser/monaco-editor-service';
5
+ import { AIActivationService } from '@theia/ai-core/lib/browser/ai-activation-service';
5
6
  export declare const AI_EDITOR_SEND_TO_CHAT: {
6
7
  id: string;
7
8
  };
8
9
  export declare class AICodeActionProvider implements FrontendApplicationContribution {
9
10
  protected readonly commandService: CommandService;
10
11
  protected readonly monacoEditorService: MonacoEditorService;
12
+ protected readonly activationService: AIActivationService;
11
13
  protected readonly toDispose: DisposableCollection;
12
14
  onStart(): void;
13
15
  dispose(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-action-provider.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-action-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAEtF,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF,qBACa,oBAAqB,YAAW,+BAA+B;IAGxE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAE5D,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D,OAAO,IAAI,IAAI;IAIf,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,0BAA0B,IAAI,IAAI;CAmD/C"}
1
+ {"version":3,"file":"ai-code-action-provider.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-action-provider.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAGzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAEvF,eAAO,MAAM,sBAAsB;;CAElC,CAAC;AAEF,qBACa,oBAAqB,YAAW,+BAA+B;IAGxE,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAG5D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAA8B;IAE1D,OAAO,IAAI,IAAI;IAUf,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,0BAA0B,IAAI,IAAI;CA6D/C"}
@@ -22,6 +22,7 @@ const disposable_1 = require("@theia/core/lib/common/disposable");
22
22
  const inversify_1 = require("@theia/core/shared/inversify");
23
23
  const monaco = require("@theia/monaco-editor-core");
24
24
  const monaco_editor_service_1 = require("@theia/monaco/lib/browser/monaco-editor-service");
25
+ const ai_activation_service_1 = require("@theia/ai-core/lib/browser/ai-activation-service");
25
26
  exports.AI_EDITOR_SEND_TO_CHAT = {
26
27
  id: 'ai-editor.sendToChat',
27
28
  };
@@ -31,13 +32,26 @@ let AICodeActionProvider = class AICodeActionProvider {
31
32
  }
32
33
  onStart() {
33
34
  this.registerCodeActionProvider();
35
+ // Listen to AI activation changes and re-register the provider
36
+ this.activationService.onDidChangeActiveStatus(() => {
37
+ this.toDispose.dispose();
38
+ this.registerCodeActionProvider();
39
+ });
34
40
  }
35
41
  dispose() {
36
42
  this.toDispose.dispose();
37
43
  }
38
44
  registerCodeActionProvider() {
45
+ if (!this.activationService.isActive) {
46
+ // AI is disabled, don't register the provider
47
+ return;
48
+ }
39
49
  const disposable = monaco.languages.registerCodeActionProvider('*', {
40
50
  provideCodeActions: (model, range, context, token) => {
51
+ // Double-check activation status in the provider
52
+ if (!this.activationService.isActive) {
53
+ return { actions: [], dispose: () => { } };
54
+ }
41
55
  // Filter for error markers only
42
56
  const errorMarkers = context.markers.filter(marker => marker.severity === monaco.MarkerSeverity.Error);
43
57
  if (errorMarkers.length === 0) {
@@ -91,6 +105,10 @@ tslib_1.__decorate([
91
105
  (0, inversify_1.inject)(monaco_editor_service_1.MonacoEditorService),
92
106
  tslib_1.__metadata("design:type", monaco_editor_service_1.MonacoEditorService)
93
107
  ], AICodeActionProvider.prototype, "monacoEditorService", void 0);
108
+ tslib_1.__decorate([
109
+ (0, inversify_1.inject)(ai_activation_service_1.AIActivationService),
110
+ tslib_1.__metadata("design:type", ai_activation_service_1.AIActivationService)
111
+ ], AICodeActionProvider.prototype, "activationService", void 0);
94
112
  exports.AICodeActionProvider = AICodeActionProvider = tslib_1.__decorate([
95
113
  (0, inversify_1.injectable)()
96
114
  ], AICodeActionProvider);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-action-provider.js","sourceRoot":"","sources":["../../src/browser/ai-code-action-provider.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAAgE;AAChE,kEAAyE;AACzE,4DAAkE;AAClE,oDAAoD;AACpD,2FAAsF;AAEzE,QAAA,sBAAsB,GAAG;IAClC,EAAE,EAAE,sBAAsB;CAC7B,CAAC;AAGK,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QAQgB,cAAS,GAAG,IAAI,iCAAoB,EAAE,CAAC;IA6D9D,CAAC;IA3DG,OAAO;QACH,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACtC,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAES,0BAA0B;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE;YAChE,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;gBACjD,gCAAgC;gBAChC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACjD,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAErD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC/C,CAAC;gBAED,MAAM,OAAO,GAAkC,EAAE,CAAC;gBAElD,6EAA6E;gBAC7E,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAC1B,OAAO,CAAC,IAAI,CAAC;wBACT,KAAK,EAAE,aAAa;wBACpB,WAAW,EAAE,CAAC,MAAM,CAAC;wBACrB,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE;4BACL,EAAE,EAAE,8BAAsB,CAAC,EAAE;4BAC7B,KAAK,EAAE,aAAa;4BACpB,SAAS,EAAE,CAAC;oCACR,MAAM,EAAE,mCAAmC,MAAM,CAAC,OAAO,GAAG;iCAC/D,CAAC;yBACL;qBACJ,CAAC,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC;wBACT,KAAK,EAAE,iBAAiB;wBACxB,WAAW,EAAE,CAAC,MAAM,CAAC;wBACrB,IAAI,EAAE,UAAU;wBAChB,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE;4BACL,EAAE,EAAE,8BAAsB,CAAC,EAAE;4BAC7B,KAAK,EAAE,iBAAiB;4BACxB,SAAS,EAAE,CAAC;oCACR,MAAM,EAAE,mCAAmC,MAAM,CAAC,OAAO,GAAG;iCAC/D,CAAC;yBACL;qBACJ,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,OAAO;oBACH,OAAO,EAAE,OAAO;oBAChB,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC;iBACrB,CAAC;YACN,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CACJ,CAAA;AArEY,oDAAoB;AAGV;IADlB,IAAA,kBAAM,EAAC,wBAAc,CAAC;;4DAC2B;AAG/B;IADlB,IAAA,kBAAM,EAAC,2CAAmB,CAAC;sCACY,2CAAmB;iEAAC;+BANnD,oBAAoB;IADhC,IAAA,sBAAU,GAAE;GACA,oBAAoB,CAqEhC"}
1
+ {"version":3,"file":"ai-code-action-provider.js","sourceRoot":"","sources":["../../src/browser/ai-code-action-provider.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { ChatService } from '@theia/ai-chat';
2
+ import { AICommandHandlerFactory } from '@theia/ai-core/lib/browser';
2
3
  import { MenuContribution, MenuModelRegistry } from '@theia/core';
3
- import { KeybindingContribution, KeybindingRegistry } from '@theia/core/lib/browser';
4
+ import { ApplicationShell, KeybindingContribution, KeybindingRegistry } from '@theia/core/lib/browser';
4
5
  import { Command, CommandContribution, CommandRegistry } from '@theia/core/lib/common';
5
6
  import { MonacoCommandRegistry, MonacoEditorCommandHandler } from '@theia/monaco/lib/browser/monaco-command-registry';
7
+ import { AskAIInputMonacoZoneWidget } from './ask-ai-input-monaco-zone-widget';
8
+ import { AskAIInputFactory } from './ask-ai-input-widget';
6
9
  export declare namespace AI_EDITOR_COMMANDS {
7
10
  const AI_EDITOR_ASK_AI: Command;
8
11
  const AI_EDITOR_SEND_TO_CHAT: Command;
@@ -10,13 +13,17 @@ export declare namespace AI_EDITOR_COMMANDS {
10
13
  export declare class AiEditorCommandContribution implements CommandContribution, MenuContribution, KeybindingContribution {
11
14
  protected readonly monacoCommandRegistry: MonacoCommandRegistry;
12
15
  protected readonly chatService: ChatService;
13
- private askAiInputWidget;
16
+ protected readonly commandHandlerFactory: AICommandHandlerFactory;
17
+ protected readonly askAIInputFactory: AskAIInputFactory;
18
+ protected readonly shell: ApplicationShell;
19
+ protected askAiInputWidget: AskAIInputMonacoZoneWidget | undefined;
14
20
  registerCommands(registry: CommandRegistry): void;
15
21
  protected showInputWidgetHandler(): MonacoEditorCommandHandler;
16
22
  private showInputWidget;
17
23
  private cleanupInputWidget;
18
24
  protected sendToChatHandler(): MonacoEditorCommandHandler;
19
25
  private createNewChatSession;
26
+ protected wrapMonacoHandler(handler: MonacoEditorCommandHandler): MonacoEditorCommandHandler;
20
27
  registerMenus(menus: MenuModelRegistry): void;
21
28
  registerKeybindings(registry: KeybindingRegistry): void;
22
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ai-editor-command-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-editor-command-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAqB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAErF,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAIvF,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAItH,yBAAiB,kBAAkB,CAAC;IACzB,MAAM,gBAAgB,EAAE,OAG9B,CAAC;IACK,MAAM,sBAAsB,EAAE,OAGpC,CAAC;CACL;AAED,qBACa,2BAA4B,YAAW,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB;IAG7G,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAE5C,OAAO,CAAC,gBAAgB,CAA+B;IAEvD,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQjD,SAAS,CAAC,sBAAsB,IAAI,0BAA0B;IAmD9D,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,kBAAkB;IAO1B,SAAS,CAAC,iBAAiB,IAAI,0BAA0B;IAUzD,OAAO,CAAC,oBAAoB;IAO5B,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAO7C,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CAO1D"}
1
+ {"version":3,"file":"ai-editor-command-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-editor-command-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAkC,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAyB,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAsB,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAW,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAChH,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGvF,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAEtH,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,yBAAiB,kBAAkB,CAAC;IACzB,MAAM,gBAAgB,EAAE,OAIE,CAAC;IAC3B,MAAM,sBAAsB,EAAE,OAGL,CAAC;CACpC;AAED,qBACa,2BAA4B,YAAW,mBAAmB,EAAE,gBAAgB,EAAE,sBAAsB;IAG7G,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGhE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;IAGlE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAE3C,SAAS,CAAC,gBAAgB,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAEnE,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQjD,SAAS,CAAC,sBAAsB,IAAI,0BAA0B;IAU9D,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,kBAAkB;IAO1B,SAAS,CAAC,iBAAiB,IAAI,0BAA0B;IAezD,OAAO,CAAC,oBAAoB;IAQ5B,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,0BAA0B,GAAG,0BAA0B;IAQ5F,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAS7C,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;CAO1D"}
@@ -19,88 +19,53 @@ exports.AiEditorCommandContribution = exports.AI_EDITOR_COMMANDS = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  const ai_chat_1 = require("@theia/ai-chat");
21
21
  const browser_1 = require("@theia/ai-core/lib/browser");
22
- const nls_1 = require("@theia/core/lib/common/nls");
22
+ const core_1 = require("@theia/core");
23
+ const browser_2 = require("@theia/core/lib/browser");
24
+ const common_1 = require("@theia/core/lib/common");
23
25
  const inversify_1 = require("@theia/core/shared/inversify");
24
- const browser_2 = require("@theia/editor/lib/browser");
26
+ const browser_3 = require("@theia/editor/lib/browser");
25
27
  const monaco_command_registry_1 = require("@theia/monaco/lib/browser/monaco-command-registry");
28
+ const ask_ai_input_monaco_zone_widget_1 = require("./ask-ai-input-monaco-zone-widget");
26
29
  const ask_ai_input_widget_1 = require("./ask-ai-input-widget");
27
30
  var AI_EDITOR_COMMANDS;
28
31
  (function (AI_EDITOR_COMMANDS) {
29
- AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI = {
32
+ AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI = common_1.Command.toLocalizedCommand({
30
33
  id: 'ai-editor.contextAction',
31
- label: nls_1.nls.localize('theia/ai-editor/contextMenu', 'Ask AI [Experimental]')
32
- };
33
- AI_EDITOR_COMMANDS.AI_EDITOR_SEND_TO_CHAT = {
34
+ label: 'Ask AI',
35
+ iconClass: (0, browser_2.codicon)('sparkle')
36
+ }, 'theia/ai-editor/contextMenu');
37
+ AI_EDITOR_COMMANDS.AI_EDITOR_SEND_TO_CHAT = common_1.Command.toLocalizedCommand({
34
38
  id: 'ai-editor.sendToChat',
35
- label: nls_1.nls.localize('theia/ai-editor/sendToChat', 'Send to AI Chat [Experimental]')
36
- };
39
+ label: 'Send to AI Chat'
40
+ }, 'theia/ai-editor/sendToChat');
37
41
  })(AI_EDITOR_COMMANDS || (exports.AI_EDITOR_COMMANDS = AI_EDITOR_COMMANDS = {}));
38
42
  ;
39
43
  let AiEditorCommandContribution = class AiEditorCommandContribution {
40
44
  registerCommands(registry) {
41
45
  registry.registerCommand(AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI);
42
46
  registry.registerCommand(AI_EDITOR_COMMANDS.AI_EDITOR_SEND_TO_CHAT);
43
- this.monacoCommandRegistry.registerHandler(AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI.id, this.showInputWidgetHandler());
44
- this.monacoCommandRegistry.registerHandler(AI_EDITOR_COMMANDS.AI_EDITOR_SEND_TO_CHAT.id, this.sendToChatHandler());
47
+ this.monacoCommandRegistry.registerHandler(AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI.id, this.wrapMonacoHandler(this.showInputWidgetHandler()));
48
+ this.monacoCommandRegistry.registerHandler(AI_EDITOR_COMMANDS.AI_EDITOR_SEND_TO_CHAT.id, this.wrapMonacoHandler(this.sendToChatHandler()));
45
49
  }
46
50
  showInputWidgetHandler() {
47
51
  return {
48
- execute: (editor, position) => {
49
- let coordinates;
50
- if (position) {
51
- // Called from context menu - use provided position
52
- coordinates = { x: position.x, y: position.y + 10 };
53
- }
54
- else {
55
- // Called from keybinding - calculate position from cursor in editor
56
- const cursorPosition = editor.getControl().getPosition();
57
- if (cursorPosition) {
58
- const editorNode = editor.getControl().getDomNode();
59
- if (editorNode) {
60
- const editorRect = editorNode.getBoundingClientRect();
61
- const coordinatesInEditor = editor.getControl().getScrolledVisiblePosition(cursorPosition);
62
- if (coordinatesInEditor) {
63
- // Calculate screen coordinates from editor-relative coordinates
64
- coordinates = {
65
- x: editorRect.left + coordinatesInEditor.left,
66
- y: editorRect.top + coordinatesInEditor.top + coordinatesInEditor.height + 5
67
- };
68
- }
69
- else {
70
- // Fallback: center of editor viewport
71
- coordinates = {
72
- x: editorRect.left + editorRect.width / 2,
73
- y: editorRect.top + editorRect.height / 2
74
- };
75
- }
76
- }
77
- else {
78
- // Ultimate fallback: center of screen
79
- coordinates = {
80
- x: window.innerWidth / 2,
81
- y: window.innerHeight / 2
82
- };
83
- }
84
- }
85
- else {
86
- // Fallback if no cursor position available
87
- coordinates = {
88
- x: window.innerWidth / 2,
89
- y: window.innerHeight / 2
90
- };
91
- }
92
- }
93
- this.showInputWidget(coordinates);
94
- }
52
+ execute: (editor) => {
53
+ this.showInputWidget(editor);
54
+ },
55
+ isEnabled: (editor) => this.shell.currentWidget instanceof browser_3.EditorWidget && this.shell.currentWidget.editor === editor
95
56
  };
96
57
  }
97
- showInputWidget(coordinates) {
58
+ showInputWidget(editor) {
59
+ var _a, _b;
98
60
  this.cleanupInputWidget();
99
- this.askAiInputWidget = new ask_ai_input_widget_1.AskAIInputWidget();
100
- this.askAiInputWidget.onSubmit(event => {
101
- this.createNewChatSession(event.userInput);
61
+ // Create the input widget using the factory
62
+ this.askAiInputWidget = new ask_ai_input_monaco_zone_widget_1.AskAIInputMonacoZoneWidget(editor.getControl(), this.askAIInputFactory);
63
+ this.askAiInputWidget.onSubmit(request => {
64
+ this.createNewChatSession(request);
65
+ this.cleanupInputWidget();
102
66
  });
103
- this.askAiInputWidget.show(coordinates);
67
+ const line = (_b = (_a = editor.getControl().getPosition()) === null || _a === void 0 ? void 0 : _a.lineNumber) !== null && _b !== void 0 ? _b : 1;
68
+ this.askAiInputWidget.showAtLine(line);
104
69
  this.askAiInputWidget.onCancel(() => {
105
70
  this.cleanupInputWidget();
106
71
  });
@@ -113,23 +78,38 @@ let AiEditorCommandContribution = class AiEditorCommandContribution {
113
78
  }
114
79
  sendToChatHandler() {
115
80
  return {
116
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
117
81
  execute: (_editor, ...args) => {
118
- const prompt = args[0].prompt;
119
- this.createNewChatSession(prompt);
120
- }
82
+ if (containsPrompt(args)) {
83
+ const prompt = args
84
+ .filter(isPromptArg)
85
+ .map(arg => arg.prompt)
86
+ .join();
87
+ this.createNewChatSession({ text: prompt });
88
+ }
89
+ },
90
+ isEnabled: (_editor, ...args) => containsPrompt(args)
121
91
  };
122
92
  }
123
- createNewChatSession(prompt) {
93
+ createNewChatSession(request) {
124
94
  const session = this.chatService.createSession(ai_chat_1.ChatAgentLocation.Panel, { focus: true });
125
95
  this.chatService.sendRequest(session.id, {
126
- text: `${prompt} #editorContext`
96
+ ...request,
97
+ text: `${request.text} #editorContext`,
127
98
  });
128
99
  }
100
+ wrapMonacoHandler(handler) {
101
+ const wrappedHandler = this.commandHandlerFactory(handler);
102
+ return {
103
+ execute: wrappedHandler.execute,
104
+ isEnabled: wrappedHandler.isEnabled
105
+ };
106
+ }
129
107
  registerMenus(menus) {
130
- menus.registerMenuAction(browser_2.EditorContextMenu.NAVIGATION, {
108
+ menus.registerMenuAction(browser_3.EditorContextMenu.NAVIGATION, {
131
109
  commandId: AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI.id,
132
- label: AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI.label
110
+ label: AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI.label,
111
+ icon: AI_EDITOR_COMMANDS.AI_EDITOR_ASK_AI.iconClass,
112
+ when: browser_1.ENABLE_AI_CONTEXT_KEY
133
113
  });
134
114
  }
135
115
  registerKeybindings(registry) {
@@ -149,7 +129,25 @@ tslib_1.__decorate([
149
129
  (0, inversify_1.inject)(ai_chat_1.ChatService),
150
130
  tslib_1.__metadata("design:type", Object)
151
131
  ], AiEditorCommandContribution.prototype, "chatService", void 0);
132
+ tslib_1.__decorate([
133
+ (0, inversify_1.inject)(browser_1.AICommandHandlerFactory),
134
+ tslib_1.__metadata("design:type", Function)
135
+ ], AiEditorCommandContribution.prototype, "commandHandlerFactory", void 0);
136
+ tslib_1.__decorate([
137
+ (0, inversify_1.inject)(ask_ai_input_widget_1.AskAIInputFactory),
138
+ tslib_1.__metadata("design:type", Function)
139
+ ], AiEditorCommandContribution.prototype, "askAIInputFactory", void 0);
140
+ tslib_1.__decorate([
141
+ (0, inversify_1.inject)(browser_2.ApplicationShell),
142
+ tslib_1.__metadata("design:type", browser_2.ApplicationShell)
143
+ ], AiEditorCommandContribution.prototype, "shell", void 0);
152
144
  exports.AiEditorCommandContribution = AiEditorCommandContribution = tslib_1.__decorate([
153
145
  (0, inversify_1.injectable)()
154
146
  ], AiEditorCommandContribution);
147
+ function containsPrompt(args) {
148
+ return args.some(arg => isPromptArg(arg));
149
+ }
150
+ function isPromptArg(arg) {
151
+ return (0, core_1.isObject)(arg) && 'prompt' in arg && (0, core_1.isString)(arg.prompt);
152
+ }
155
153
  //# sourceMappingURL=ai-editor-command-contribution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-editor-command-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-editor-command-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-editor-command-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-editor-command-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4CAA6E;AAC7E,wDAA4F;AAC5F,sCAAsF;AACtF,qDAAgH;AAChH,mDAAuF;AACvF,4DAAkE;AAClE,uDAA4E;AAC5E,+FAAsH;AAEtH,uFAA+E;AAC/E,+DAA0D;AAE1D,IAAiB,kBAAkB,CAUlC;AAVD,WAAiB,kBAAkB;IAClB,mCAAgB,GAAY,gBAAO,CAAC,kBAAkB,CAAC;QAChE,EAAE,EAAE,yBAAyB;QAC7B,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,IAAA,iBAAO,EAAC,SAAS,CAAC;KAChC,EAAE,6BAA6B,CAAC,CAAC;IACrB,yCAAsB,GAAY,gBAAO,CAAC,kBAAkB,CAAC;QACtE,EAAE,EAAE,sBAAsB;QAC1B,KAAK,EAAE,iBAAiB;KAC3B,EAAE,4BAA4B,CAAC,CAAC;AACrC,CAAC,EAVgB,kBAAkB,kCAAlB,kBAAkB,QAUlC;AAAA,CAAC;AAGK,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAmBpC,gBAAgB,CAAC,QAAyB;QACtC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,QAAQ,CAAC,eAAe,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;QAEpE,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;QAC1I,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC/I,CAAC;IAES,sBAAsB;QAC5B,OAAO;YACH,OAAO,EAAE,CAAC,MAAoB,EAAE,EAAE;gBAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,SAAS,EAAE,CAAC,MAAoB,EAAE,EAAE,CAChC,IAAI,CAAC,KAAK,CAAC,aAAa,YAAY,sBAAY,IAAK,IAAI,CAAC,KAAK,CAAC,aAA8B,CAAC,MAAM,KAAK,MAAM;SACvH,CAAC;IACN,CAAC;IAEO,eAAe,CAAC,MAAoB;;QACxC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,4CAA4C;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,4DAA0B,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEpG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YACrC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAA,MAAA,MAAM,CAAC,UAAU,EAAE,CAAC,WAAW,EAAE,0CAAE,UAAU,mCAAI,CAAC,CAAC;QAEhE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,kBAAkB;QACtB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACtC,CAAC;IACL,CAAC;IAES,iBAAiB;QACvB,OAAO;YACH,OAAO,EAAE,CAAC,OAAqB,EAAE,GAAG,IAAe,EAAE,EAAE;gBACnD,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvB,MAAM,MAAM,GAAG,IAAI;yBACd,MAAM,CAAC,WAAW,CAAC;yBACnB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;yBACtB,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAiB,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC;YACD,SAAS,EAAE,CAAC,OAAqB,EAAE,GAAG,IAAe,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;SACjF,CAAC;IACN,CAAC;IAEO,oBAAoB,CAAC,OAAoB;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,2BAAiB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE;YACrC,GAAG,OAAO;YACV,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,iBAAiB;SACzC,CAAC,CAAC;IACP,CAAC;IAES,iBAAiB,CAAC,OAAmC;QAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO;YACH,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,SAAS,EAAE,cAAc,CAAC,SAAS;SACtC,CAAC;IACN,CAAC;IAED,aAAa,CAAC,KAAwB;QAClC,KAAK,CAAC,kBAAkB,CAAC,2BAAiB,CAAC,UAAU,EAAE;YACnD,SAAS,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EAAE;YACjD,KAAK,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,KAAK;YAChD,IAAI,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,SAAS;YACnD,IAAI,EAAE,+BAAqB;SAC9B,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,kBAAkB,CAAC;YACxB,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,EAAE;YAC/C,UAAU,EAAE,WAAW;YACvB,IAAI,EAAE,GAAG,+BAAqB,oCAAoC;SACrE,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA/GY,kEAA2B;AAGjB;IADlB,IAAA,kBAAM,EAAC,+CAAqB,CAAC;sCACY,+CAAqB;0EAAC;AAG7C;IADlB,IAAA,kBAAM,EAAC,qBAAW,CAAC;;gEACwB;AAGzB;IADlB,IAAA,kBAAM,EAAC,iCAAuB,CAAC;;0EACkC;AAG/C;IADlB,IAAA,kBAAM,EAAC,uCAAiB,CAAC;;sEAC8B;AAGrC;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACC,0BAAgB;0DAAC;sCAflC,2BAA2B;IADvC,IAAA,sBAAU,GAAE;GACA,2BAA2B,CA+GvC;AAED,SAAS,cAAc,CAAC,IAAe;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC7B,OAAO,IAAA,eAAQ,EAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,GAAG,IAAI,IAAA,eAAQ,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-editor-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-editor-frontend-module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,8BAA8B,CAAC;;AAKtC,wBAWG"}
1
+ {"version":3,"file":"ai-editor-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-editor-frontend-module.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,8BAA8B,CAAC;;AAWtC,wBAwBG"}
@@ -23,6 +23,7 @@ require("../../style/ask-ai-input.css");
23
23
  const ai_code_action_provider_1 = require("./ai-code-action-provider");
24
24
  const ai_editor_command_contribution_1 = require("./ai-editor-command-contribution");
25
25
  const ai_editor_context_variable_1 = require("./ai-editor-context-variable");
26
+ const ask_ai_input_widget_1 = require("./ask-ai-input-widget");
26
27
  exports.default = new inversify_1.ContainerModule(bind => {
27
28
  bind(ai_editor_command_contribution_1.AiEditorCommandContribution).toSelf().inSingletonScope();
28
29
  bind(common_1.CommandContribution).toService(ai_editor_command_contribution_1.AiEditorCommandContribution);
@@ -31,5 +32,17 @@ exports.default = new inversify_1.ContainerModule(bind => {
31
32
  bind(ai_core_1.AIVariableContribution).to(ai_editor_context_variable_1.EditorContextVariableContribution).inSingletonScope();
32
33
  bind(ai_code_action_provider_1.AICodeActionProvider).toSelf().inSingletonScope();
33
34
  bind(browser_1.FrontendApplicationContribution).toService(ai_code_action_provider_1.AICodeActionProvider);
35
+ bind(ask_ai_input_widget_1.AskAIInputFactory).toFactory(ctx => (args) => {
36
+ const container = ctx.container.createChild();
37
+ container.bind(ask_ai_input_widget_1.AskAIInputArgs).toConstantValue(args);
38
+ container.bind(ask_ai_input_widget_1.AskAIInputConfiguration).toConstantValue({
39
+ showContext: true,
40
+ showPinnedAgent: true,
41
+ showChangeSet: false,
42
+ showSuggestions: false
43
+ });
44
+ container.bind(ask_ai_input_widget_1.AskAIInputWidget).toSelf().inSingletonScope();
45
+ return container.get(ask_ai_input_widget_1.AskAIInputWidget);
46
+ });
34
47
  });
35
48
  //# sourceMappingURL=ai-editor-frontend-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-editor-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-editor-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4CAAwD;AACxD,qDAAkG;AAClG,mDAA+E;AAC/E,4DAA+D;AAC/D,wCAAsC;AACtC,uEAAiE;AACjE,qFAA+E;AAC/E,6EAAiF;AAEjF,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,4DAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAE9D,IAAI,CAAC,4BAAmB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IACjE,IAAI,CAAC,yBAAgB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IAC9D,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IAEpE,IAAI,CAAC,gCAAsB,CAAC,CAAC,EAAE,CAAC,8DAAiC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEtF,IAAI,CAAC,8CAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvD,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,8CAAoB,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ai-editor-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-editor-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4CAAwD;AACxD,qDAAkG;AAClG,mDAA+E;AAC/E,4DAA+D;AAC/D,wCAAsC;AACtC,uEAAiE;AACjE,qFAA+E;AAC/E,6EAAiF;AACjF,+DAK+B;AAE/B,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,4DAA2B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAE9D,IAAI,CAAC,4BAAmB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IACjE,IAAI,CAAC,yBAAgB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IAC9D,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,4DAA2B,CAAC,CAAC;IAEpE,IAAI,CAAC,gCAAsB,CAAC,CAAC,EAAE,CAAC,8DAAiC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEtF,IAAI,CAAC,8CAAoB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvD,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,8CAAoB,CAAC,CAAC;IAEtE,IAAI,CAAC,uCAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAoB,EAAE,EAAE;QAC9D,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,SAAS,CAAC,IAAI,CAAC,oCAAc,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACrD,SAAS,CAAC,IAAI,CAAC,6CAAuB,CAAC,CAAC,eAAe,CAAC;YACpD,WAAW,EAAE,IAAI;YACjB,eAAe,EAAE,IAAI;YACrB,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,KAAK;SACS,CAAC,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,sCAAgB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC,GAAG,CAAC,sCAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { ChatRequest } from '@theia/ai-chat';
2
+ import { Disposable } from '@theia/core/lib/common/disposable';
3
+ import { Emitter, Event } from '@theia/core/lib/common/event';
4
+ import * as monaco from '@theia/monaco-editor-core';
5
+ import { MonacoEditorZoneWidget } from '@theia/monaco/lib/browser/monaco-editor-zone-widget';
6
+ import { AskAIInputFactory, AskAIInputWidget } from './ask-ai-input-widget';
7
+ /**
8
+ * A widget that shows the Ask AI input UI in a Monaco editor zone.
9
+ */
10
+ export declare class AskAIInputMonacoZoneWidget extends MonacoEditorZoneWidget implements Disposable {
11
+ protected readonly inputWidget: AskAIInputWidget;
12
+ protected readonly onSubmitEmitter: Emitter<ChatRequest>;
13
+ protected readonly onCancelEmitter: Emitter<void>;
14
+ readonly onSubmit: Event<ChatRequest>;
15
+ readonly onCancel: Event<void>;
16
+ constructor(editorInstance: monaco.editor.ICodeEditor, inputWidgetFactory: AskAIInputFactory);
17
+ show(options: MonacoEditorZoneWidget.Options): void;
18
+ showAtLine(lineNumber: number): void;
19
+ protected renderReactWidget(): void;
20
+ protected adjustZoneHeight(): void;
21
+ protected handleSubmit(request: ChatRequest): void;
22
+ protected handleCancel(): void;
23
+ protected registerListeners(): void;
24
+ }
25
+ //# sourceMappingURL=ask-ai-input-monaco-zone-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-ai-input-monaco-zone-widget.d.ts","sourceRoot":"","sources":["../../src/browser/ask-ai-input-monaco-zone-widget.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE5E;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,sBAAuB,YAAW,UAAU;IACxF,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAEjD,SAAS,CAAC,QAAQ,CAAC,eAAe,uBAA8B;IAChE,SAAS,CAAC,QAAQ,CAAC,eAAe,gBAAuB;IAEzD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAA8B;IACnE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAA8B;gBAGxD,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EACzC,kBAAkB,EAAE,iBAAiB;IAoBhC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO,GAAG,IAAI;IAM5D,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAUpC,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAMnC,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAelC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAKlD,SAAS,CAAC,YAAY,IAAI,IAAI;IAK9B,SAAS,CAAC,iBAAiB,IAAI,IAAI;CAStC"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.AskAIInputMonacoZoneWidget = void 0;
19
+ const event_1 = require("@theia/core/lib/common/event");
20
+ const monaco = require("@theia/monaco-editor-core");
21
+ const monaco_editor_zone_widget_1 = require("@theia/monaco/lib/browser/monaco-editor-zone-widget");
22
+ /**
23
+ * A widget that shows the Ask AI input UI in a Monaco editor zone.
24
+ */
25
+ class AskAIInputMonacoZoneWidget extends monaco_editor_zone_widget_1.MonacoEditorZoneWidget {
26
+ constructor(editorInstance, inputWidgetFactory) {
27
+ super(editorInstance, false /* showArrow */);
28
+ this.onSubmitEmitter = new event_1.Emitter();
29
+ this.onCancelEmitter = new event_1.Emitter();
30
+ this.onSubmit = this.onSubmitEmitter.event;
31
+ this.onCancel = this.onCancelEmitter.event;
32
+ this.containerNode.classList.add('ask-ai-input-monaco-zone-widget');
33
+ this.inputWidget = inputWidgetFactory({
34
+ onSubmit: event => this.handleSubmit(event),
35
+ onCancel: () => this.handleCancel()
36
+ });
37
+ this.inputWidget.onDidResize(() => this.adjustZoneHeight());
38
+ this.toDispose.pushAll([
39
+ this.onSubmitEmitter,
40
+ this.onCancelEmitter,
41
+ this.inputWidget,
42
+ ]);
43
+ }
44
+ show(options) {
45
+ super.show(options);
46
+ this.renderReactWidget();
47
+ this.registerListeners();
48
+ }
49
+ showAtLine(lineNumber) {
50
+ const options = {
51
+ afterLineNumber: lineNumber,
52
+ heightInLines: 5,
53
+ frameWidth: 1,
54
+ showFrame: true,
55
+ };
56
+ this.show(options);
57
+ }
58
+ renderReactWidget() {
59
+ this.containerNode.append(this.inputWidget.node);
60
+ this.inputWidget.activate();
61
+ this.inputWidget.update();
62
+ }
63
+ adjustZoneHeight() {
64
+ if (!this.viewZone) {
65
+ return;
66
+ }
67
+ const editorLineHeight = this.editor.getOption(monaco.editor.EditorOption.lineHeight);
68
+ const zoneWidgetHeight = this.inputWidget.node.parentElement ? this.inputWidget.node.parentElement.scrollHeight : this.inputWidget.node.scrollHeight;
69
+ const requiredLines = Math.max(5, Math.ceil(zoneWidgetHeight / editorLineHeight));
70
+ if (this.viewZone.heightInLines !== requiredLines) {
71
+ this.layout(requiredLines);
72
+ }
73
+ }
74
+ handleSubmit(request) {
75
+ this.onSubmitEmitter.fire(request);
76
+ this.hide();
77
+ }
78
+ handleCancel() {
79
+ this.onCancelEmitter.fire();
80
+ this.hide();
81
+ }
82
+ registerListeners() {
83
+ this.toHide.push(this.editor.onKeyDown(e => {
84
+ if (e.keyCode === monaco.KeyCode.Escape) {
85
+ this.handleCancel();
86
+ e.preventDefault();
87
+ e.stopPropagation();
88
+ }
89
+ }));
90
+ }
91
+ }
92
+ exports.AskAIInputMonacoZoneWidget = AskAIInputMonacoZoneWidget;
93
+ //# sourceMappingURL=ask-ai-input-monaco-zone-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-ai-input-monaco-zone-widget.js","sourceRoot":"","sources":["../../src/browser/ask-ai-input-monaco-zone-widget.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,29 @@
1
- import { Coordinate } from '@theia/core/lib/browser/context-menu-renderer';
2
- import { Disposable } from '@theia/core/lib/common/disposable';
3
- import { Event } from '@theia/core/lib/common/event';
4
- export interface InputSubmitEvent {
5
- userInput: string;
1
+ import { ChatRequest } from '@theia/ai-chat';
2
+ import { AIChatInputConfiguration, AIChatInputWidget } from '@theia/ai-chat-ui/lib/browser/chat-input-widget';
3
+ import { URI } from '@theia/core';
4
+ export declare const AskAIInputConfiguration: unique symbol;
5
+ export interface AskAIInputConfiguration extends AIChatInputConfiguration {
6
6
  }
7
- export declare class AskAIInputWidget implements Disposable {
8
- private readonly element;
9
- private readonly inputElement;
10
- private readonly disposables;
11
- private readonly onSubmitEmitter;
12
- private readonly onCancelEmitter;
13
- readonly onSubmit: Event<InputSubmitEvent>;
14
- readonly onCancel: Event<void>;
15
- constructor();
16
- private addInputEventListeners;
17
- private addDocumentEventListeners;
18
- show(coordinates: Coordinate): void;
19
- hide(): void;
20
- setValue(value: string): void;
21
- getValue(): string;
22
- private handleSubmit;
23
- private handleCancel;
24
- dispose(): void;
7
+ export declare const AskAIInputArgs: unique symbol;
8
+ export interface AskAIInputArgs {
9
+ onSubmit: (request: ChatRequest) => void;
10
+ onCancel: () => void;
11
+ }
12
+ export declare const AskAIInputFactory: unique symbol;
13
+ export type AskAIInputFactory = (args: AskAIInputArgs) => AskAIInputWidget;
14
+ /**
15
+ * React input widget for Ask AI functionality, extending the AIChatInputWidget.
16
+ */
17
+ export declare class AskAIInputWidget extends AIChatInputWidget {
18
+ static ID: string;
19
+ protected readonly args: AskAIInputArgs | undefined;
20
+ protected readonly configuration: AskAIInputConfiguration | undefined;
21
+ protected readonly resourceId: string;
22
+ protected heightInLines: number;
23
+ protected init(): void;
24
+ protected getResourceUri(): URI;
25
+ protected handleSubmit(query: string): Promise<void>;
26
+ protected handleCancel(): void;
27
+ protected onEscape(): void;
25
28
  }
26
29
  //# sourceMappingURL=ask-ai-input-widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-ai-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/ask-ai-input-widget.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAwB,MAAM,mCAAmC,CAAC;AACrF,OAAO,EAAW,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAE1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuB;IAEvD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAA8B;IACxE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAA8B;;IAkB5D,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,yBAAyB;IAcjC,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI;IAWnC,IAAI,IAAI,IAAI;IAMZ,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,QAAQ,IAAI,MAAM;IAIlB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,YAAY;IAKpB,OAAO,IAAI,IAAI;CAMlB"}
1
+ {"version":3,"file":"ask-ai-input-widget.d.ts","sourceRoot":"","sources":["../../src/browser/ask-ai-input-widget.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AAE9G,OAAO,EAAgB,GAAG,EAAE,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AACzE,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;CAAI;AAE7E,eAAO,MAAM,cAAc,eAA2B,CAAC;AACvD,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,eAA8B,CAAC;AAC7D,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,gBAAgB,CAAC;AAE3E;;GAEG;AACH,qBACa,gBAAiB,SAAQ,iBAAiB;IACnD,OAAuB,EAAE,SAAyB;IAGlD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAAC;IAEpD,mBAC4B,aAAa,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAE/E,SAAS,CAAC,QAAQ,CAAC,UAAU,SAAkB;IAC/C,UAAmB,aAAa,SAAK;cAGlB,IAAI,IAAI,IAAI;cAoBZ,cAAc,IAAI,GAAG;IAIxC,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpD,SAAS,CAAC,YAAY,IAAI,IAAI;cAIX,QAAQ,IAAI,IAAI;CAGtC"}