@theia/ai-chat 1.63.0-next.24 → 1.63.0-next.52

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 (80) hide show
  1. package/lib/browser/agent-delegation-tool.d.ts +25 -0
  2. package/lib/browser/agent-delegation-tool.d.ts.map +1 -0
  3. package/lib/browser/agent-delegation-tool.js +171 -0
  4. package/lib/browser/agent-delegation-tool.js.map +1 -0
  5. package/lib/browser/ai-chat-frontend-module.d.ts.map +1 -1
  6. package/lib/browser/ai-chat-frontend-module.js +8 -0
  7. package/lib/browser/ai-chat-frontend-module.js.map +1 -1
  8. package/lib/browser/change-set-file-element.d.ts +19 -1
  9. package/lib/browser/change-set-file-element.d.ts.map +1 -1
  10. package/lib/browser/change-set-file-element.js +63 -8
  11. package/lib/browser/change-set-file-element.js.map +1 -1
  12. package/lib/browser/chat-tool-preferences.d.ts +1 -1
  13. package/lib/browser/chat-tool-preferences.d.ts.map +1 -1
  14. package/lib/browser/chat-tool-preferences.js +4 -4
  15. package/lib/browser/chat-tool-preferences.js.map +1 -1
  16. package/lib/browser/chat-tool-request-service.js +1 -1
  17. package/lib/browser/chat-tool-request-service.js.map +1 -1
  18. package/lib/browser/delegation-response-content.d.ts +20 -0
  19. package/lib/browser/delegation-response-content.d.ts.map +1 -0
  20. package/lib/browser/delegation-response-content.js +51 -0
  21. package/lib/browser/delegation-response-content.js.map +1 -0
  22. package/lib/browser/file-chat-variable-contribution.d.ts +15 -1
  23. package/lib/browser/file-chat-variable-contribution.d.ts.map +1 -1
  24. package/lib/browser/file-chat-variable-contribution.js +111 -5
  25. package/lib/browser/file-chat-variable-contribution.js.map +1 -1
  26. package/lib/browser/image-context-variable-contribution.d.ts +27 -0
  27. package/lib/browser/image-context-variable-contribution.d.ts.map +1 -0
  28. package/lib/browser/image-context-variable-contribution.js +149 -0
  29. package/lib/browser/image-context-variable-contribution.js.map +1 -0
  30. package/lib/browser/task-context-service.d.ts +9 -3
  31. package/lib/browser/task-context-service.d.ts.map +1 -1
  32. package/lib/browser/task-context-service.js +111 -9
  33. package/lib/browser/task-context-service.js.map +1 -1
  34. package/lib/browser/task-context-storage-service.d.ts +1 -0
  35. package/lib/browser/task-context-storage-service.d.ts.map +1 -1
  36. package/lib/browser/task-context-storage-service.js +4 -1
  37. package/lib/browser/task-context-storage-service.js.map +1 -1
  38. package/lib/common/change-set.js +1 -1
  39. package/lib/common/change-set.js.map +1 -1
  40. package/lib/common/chat-agent-service.d.ts +1 -0
  41. package/lib/common/chat-agent-service.d.ts.map +1 -1
  42. package/lib/common/chat-agent-service.js +2 -1
  43. package/lib/common/chat-agent-service.js.map +1 -1
  44. package/lib/common/chat-agents.d.ts +2 -2
  45. package/lib/common/chat-agents.d.ts.map +1 -1
  46. package/lib/common/chat-agents.js +21 -5
  47. package/lib/common/chat-agents.js.map +1 -1
  48. package/lib/common/chat-model.d.ts +2 -2
  49. package/lib/common/chat-model.d.ts.map +1 -1
  50. package/lib/common/chat-model.js +1 -1
  51. package/lib/common/chat-model.js.map +1 -1
  52. package/lib/common/chat-request-parser.d.ts.map +1 -1
  53. package/lib/common/chat-request-parser.js +3 -0
  54. package/lib/common/chat-request-parser.js.map +1 -1
  55. package/lib/common/chat-service.d.ts +3 -2
  56. package/lib/common/chat-service.d.ts.map +1 -1
  57. package/lib/common/chat-service.js +4 -3
  58. package/lib/common/chat-service.js.map +1 -1
  59. package/lib/common/image-context-variable.d.ts +29 -0
  60. package/lib/common/image-context-variable.d.ts.map +1 -0
  61. package/lib/common/image-context-variable.js +99 -0
  62. package/lib/common/image-context-variable.js.map +1 -0
  63. package/package.json +10 -9
  64. package/src/browser/agent-delegation-tool.ts +207 -0
  65. package/src/browser/ai-chat-frontend-module.ts +20 -2
  66. package/src/browser/change-set-file-element.ts +69 -9
  67. package/src/browser/chat-tool-preferences.ts +4 -4
  68. package/src/browser/chat-tool-request-service.ts +1 -1
  69. package/src/browser/delegation-response-content.ts +55 -0
  70. package/src/browser/file-chat-variable-contribution.ts +120 -6
  71. package/src/browser/image-context-variable-contribution.ts +153 -0
  72. package/src/browser/task-context-service.ts +115 -9
  73. package/src/browser/task-context-storage-service.ts +5 -1
  74. package/src/common/change-set.ts +1 -1
  75. package/src/common/chat-agent-service.ts +1 -0
  76. package/src/common/chat-agents.ts +26 -9
  77. package/src/common/chat-model.ts +11 -3
  78. package/src/common/chat-request-parser.ts +3 -0
  79. package/src/common/chat-service.ts +5 -4
  80. package/src/common/image-context-variable.ts +116 -0
@@ -0,0 +1,20 @@
1
+ import { ChatRequestInvocation, ChatResponseContent } from '../common';
2
+ /**
3
+ * Response Content created when an Agent delegates a prompt to another agent.
4
+ * Contains agent id, delegated prompt, and the response.
5
+ */
6
+ export declare class DelegationResponseContent implements ChatResponseContent {
7
+ agentId: string;
8
+ prompt: string;
9
+ response: ChatRequestInvocation;
10
+ kind: string;
11
+ /**
12
+ * @param agentId The id of the agent to whom the task was delegated
13
+ * @param prompt The prompt that was delegated
14
+ * @param response The response from the delegated agent
15
+ */
16
+ constructor(agentId: string, prompt: string, response: ChatRequestInvocation);
17
+ asString(): string;
18
+ }
19
+ export declare function isDelegationResponseContent(value: unknown): value is DelegationResponseContent;
20
+ //# sourceMappingURL=delegation-response-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-response-content.d.ts","sourceRoot":"","sources":["../../src/browser/delegation-response-content.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEvE;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,mBAAmB;IAStD,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,qBAAqB;IAV1C,IAAI,SAAqB;IAEzB;;;;OAIG;gBAEQ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,qBAAqB;IAK1C,QAAQ,IAAI,MAAM;CAOrB;AAED,wBAAgB,2BAA2B,CACvC,KAAK,EAAE,OAAO,GACf,KAAK,IAAI,yBAAyB,CAKpC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isDelegationResponseContent = exports.DelegationResponseContent = void 0;
4
+ // *****************************************************************************
5
+ // Copyright (C) 2025 EclipseSource GmbH.
6
+ //
7
+ // This program and the accompanying materials are made available under the
8
+ // terms of the Eclipse Public License v. 2.0 which is available at
9
+ // http://www.eclipse.org/legal/epl-2.0.
10
+ //
11
+ // This Source Code may also be made available under the following Secondary
12
+ // Licenses when the conditions for such availability set forth in the Eclipse
13
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
14
+ // with the GNU Classpath Exception which is available at
15
+ // https://www.gnu.org/software/classpath/license.html.
16
+ //
17
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
18
+ // *****************************************************************************
19
+ const core_1 = require("@theia/core");
20
+ /**
21
+ * Response Content created when an Agent delegates a prompt to another agent.
22
+ * Contains agent id, delegated prompt, and the response.
23
+ */
24
+ class DelegationResponseContent {
25
+ /**
26
+ * @param agentId The id of the agent to whom the task was delegated
27
+ * @param prompt The prompt that was delegated
28
+ * @param response The response from the delegated agent
29
+ */
30
+ constructor(agentId, prompt, response) {
31
+ this.agentId = agentId;
32
+ this.prompt = prompt;
33
+ this.response = response;
34
+ this.kind = 'AgentDelegation';
35
+ // Empty
36
+ }
37
+ asString() {
38
+ const json = {
39
+ agentId: this.agentId,
40
+ prompt: this.prompt
41
+ };
42
+ return JSON.stringify(json);
43
+ }
44
+ }
45
+ exports.DelegationResponseContent = DelegationResponseContent;
46
+ function isDelegationResponseContent(value) {
47
+ return ((0, core_1.isObject)(value) &&
48
+ value.kind === 'AgentDelegation');
49
+ }
50
+ exports.isDelegationResponseContent = isDelegationResponseContent;
51
+ //# sourceMappingURL=delegation-response-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-response-content.js","sourceRoot":"","sources":["../../src/browser/delegation-response-content.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;AAChF,sCAAuC;AAGvC;;;GAGG;AACH,MAAa,yBAAyB;IAGlC;;;;OAIG;IACH,YACW,OAAe,EACf,MAAc,EACd,QAA+B;QAF/B,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAuB;QAV1C,SAAI,GAAG,iBAAiB,CAAC;QAYrB,QAAQ;IACZ,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,GAAG;YACT,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ;AAvBD,8DAuBC;AAED,SAAgB,2BAA2B,CACvC,KAAc;IAEd,OAAO,CACH,IAAA,eAAQ,EAA4B,KAAK,CAAC;QAC1C,KAAK,CAAC,IAAI,KAAK,iBAAiB,CACnC,CAAC;AACN,CAAC;AAPD,kEAOC"}
@@ -1,6 +1,6 @@
1
1
  import { AIVariableContext } from '@theia/ai-core';
2
2
  import { AIVariableDropResult, FrontendVariableContribution, FrontendVariableService } from '@theia/ai-core/lib/browser';
3
- import { QuickInputService } from '@theia/core';
3
+ import { ILogger, QuickInputService, URI } from '@theia/core';
4
4
  import * as monaco from '@theia/monaco-editor-core';
5
5
  import { QuickFileSelectService } from '@theia/file-search/lib/browser/quick-file-select-service';
6
6
  import { WorkspaceService } from '@theia/workspace/lib/browser';
@@ -10,9 +10,23 @@ export declare class FileChatVariableContribution implements FrontendVariableCon
10
10
  protected readonly wsService: WorkspaceService;
11
11
  protected readonly quickInputService: QuickInputService;
12
12
  protected readonly quickFileSelectService: QuickFileSelectService;
13
+ protected readonly logger: ILogger;
13
14
  registerVariables(service: FrontendVariableService): void;
14
15
  protected triggerArgumentPicker(): Promise<string | undefined>;
16
+ protected imageArgumentPicker(): Promise<string | undefined>;
15
17
  protected provideArgumentCompletionItems(model: monaco.editor.ITextModel, position: monaco.Position, matchString?: string): Promise<monaco.languages.CompletionItem[] | undefined>;
18
+ /**
19
+ * Checks if a file is an image based on its extension.
20
+ */
21
+ protected isImageFile(filePath: string): boolean;
22
+ /**
23
+ * Determines the MIME type based on file extension.
24
+ */
25
+ protected getMimeTypeFromExtension(filePath: string): string;
26
+ /**
27
+ * Converts a file to base64 data URL.
28
+ */
29
+ protected fileToBase64(uri: URI): Promise<string>;
16
30
  protected handleDrop(event: DragEvent, _: AIVariableContext): Promise<AIVariableDropResult | undefined>;
17
31
  }
18
32
  //# sourceMappingURL=file-chat-variable-contribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-chat-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAA2C,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAA+B,oBAAoB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAEtJ,OAAO,EAAqB,iBAAiB,EAAO,MAAM,aAAa,CAAC;AAExE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAqB,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAGzE,qBACa,4BAA6B,YAAW,4BAA4B;IAE7E,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAElE,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;cAMzC,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;cAuBpD,8BAA8B,CAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;cAkCzC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAiChH"}
1
+ {"version":3,"file":"file-chat-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAA2C,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAA+B,oBAAoB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAEtJ,OAAO,EAAqB,OAAO,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEjF,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAqB,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAIzE,qBACa,4BAA6B,YAAW,4BAA4B;IAE7E,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGlE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;cAOzC,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;cAuBpD,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;cAmDlD,8BAA8B,CAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;IAkCzD;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMhD;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAc5D;;OAEG;cACa,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;cAevC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CA+ChH"}
@@ -27,9 +27,11 @@ const quick_file_select_service_1 = require("@theia/file-search/lib/browser/quic
27
27
  const browser_2 = require("@theia/workspace/lib/browser");
28
28
  const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
29
29
  const ai_chat_frontend_contribution_1 = require("./ai-chat-frontend-contribution");
30
+ const image_context_variable_1 = require("../common/image-context-variable");
30
31
  let FileChatVariableContribution = class FileChatVariableContribution {
31
32
  registerVariables(service) {
32
33
  service.registerArgumentPicker(file_variable_contribution_1.FILE_VARIABLE, this.triggerArgumentPicker.bind(this));
34
+ service.registerArgumentPicker(image_context_variable_1.IMAGE_CONTEXT_VARIABLE, this.imageArgumentPicker.bind(this));
33
35
  service.registerArgumentCompletionProvider(file_variable_contribution_1.FILE_VARIABLE, this.provideArgumentCompletionItems.bind(this));
34
36
  service.registerDropHandler(this.handleDrop.bind(this));
35
37
  }
@@ -52,6 +54,50 @@ let FileChatVariableContribution = class FileChatVariableContribution {
52
54
  });
53
55
  });
54
56
  }
57
+ async imageArgumentPicker() {
58
+ const quickPick = this.quickInputService.createQuickPick();
59
+ quickPick.title = 'Select an image file';
60
+ // Get all files and filter only image files
61
+ const allPicks = await this.quickFileSelectService.getPicks();
62
+ quickPick.items = allPicks.filter(item => {
63
+ if (quick_file_select_service_1.FileQuickPickItem.is(item)) {
64
+ return this.isImageFile(item.uri.path.toString());
65
+ }
66
+ return false;
67
+ });
68
+ const updateItems = async (value) => {
69
+ const filteredPicks = await this.quickFileSelectService.getPicks(value, core_1.CancellationToken.None);
70
+ quickPick.items = filteredPicks.filter(item => {
71
+ if (quick_file_select_service_1.FileQuickPickItem.is(item)) {
72
+ return this.isImageFile(item.uri.path.toString());
73
+ }
74
+ return false;
75
+ });
76
+ };
77
+ const onChangeListener = quickPick.onDidChangeValue(updateItems);
78
+ quickPick.show();
79
+ return new Promise(resolve => {
80
+ quickPick.onDispose(onChangeListener.dispose);
81
+ quickPick.onDidAccept(async () => {
82
+ const selectedItem = quickPick.selectedItems[0];
83
+ if (selectedItem && quick_file_select_service_1.FileQuickPickItem.is(selectedItem)) {
84
+ quickPick.dispose();
85
+ const filePath = await this.wsService.getWorkspaceRelativePath(selectedItem.uri);
86
+ const fileName = selectedItem.uri.displayName;
87
+ const base64Data = await this.fileToBase64(selectedItem.uri);
88
+ const mimeType = this.getMimeTypeFromExtension(selectedItem.uri.path.toString());
89
+ // Create the argument string in the required format
90
+ const imageVarArgs = {
91
+ name: fileName,
92
+ wsRelativePath: filePath,
93
+ data: base64Data,
94
+ mimeType: mimeType
95
+ };
96
+ resolve(image_context_variable_1.ImageContextVariable.createArgString(imageVarArgs));
97
+ }
98
+ });
99
+ });
100
+ }
55
101
  async provideArgumentCompletionItems(model, position, matchString) {
56
102
  const context = browser_1.AIVariableCompletionContext.get(file_variable_contribution_1.FILE_VARIABLE.name, model, position, matchString);
57
103
  if (!context) {
@@ -83,6 +129,48 @@ let FileChatVariableContribution = class FileChatVariableContribution {
83
129
  };
84
130
  }));
85
131
  }
132
+ /**
133
+ * Checks if a file is an image based on its extension.
134
+ */
135
+ isImageFile(filePath) {
136
+ const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.webp'];
137
+ const extension = filePath.toLowerCase().substring(filePath.lastIndexOf('.'));
138
+ return imageExtensions.includes(extension);
139
+ }
140
+ /**
141
+ * Determines the MIME type based on file extension.
142
+ */
143
+ getMimeTypeFromExtension(filePath) {
144
+ const extension = filePath.toLowerCase().substring(filePath.lastIndexOf('.'));
145
+ const mimeTypes = {
146
+ '.jpg': 'image/jpeg',
147
+ '.jpeg': 'image/jpeg',
148
+ '.png': 'image/png',
149
+ '.gif': 'image/gif',
150
+ '.bmp': 'image/bmp',
151
+ '.svg': 'image/svg+xml',
152
+ '.webp': 'image/webp'
153
+ };
154
+ return mimeTypes[extension] || 'application/octet-stream';
155
+ }
156
+ /**
157
+ * Converts a file to base64 data URL.
158
+ */
159
+ async fileToBase64(uri) {
160
+ try {
161
+ const fileContent = await this.fileService.readFile(uri);
162
+ const uint8Array = new Uint8Array(fileContent.value.buffer);
163
+ let binary = '';
164
+ for (let i = 0; i < uint8Array.length; i++) {
165
+ binary += String.fromCharCode(uint8Array[i]);
166
+ }
167
+ return btoa(binary);
168
+ }
169
+ catch (error) {
170
+ this.logger.error('Error reading file content:', error);
171
+ return '';
172
+ }
173
+ }
86
174
  async handleDrop(event, _) {
87
175
  var _a;
88
176
  const data = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData('selected-tree-nodes');
@@ -101,11 +189,25 @@ let FileChatVariableContribution = class FileChatVariableContribution {
101
189
  const uri = core_1.URI.fromFilePath(filePath);
102
190
  if (await this.fileService.exists(uri)) {
103
191
  const wsRelativePath = await this.wsService.getWorkspaceRelativePath(uri);
104
- variables.push({
105
- variable: file_variable_contribution_1.FILE_VARIABLE,
106
- arg: wsRelativePath
107
- });
108
- texts.push(`${ai_core_1.PromptText.VARIABLE_CHAR}${file_variable_contribution_1.FILE_VARIABLE.name}${ai_core_1.PromptText.VARIABLE_SEPARATOR_CHAR}${wsRelativePath}`);
192
+ const fileName = uri.displayName;
193
+ if (this.isImageFile(filePath)) {
194
+ const base64Data = await this.fileToBase64(uri);
195
+ const mimeType = this.getMimeTypeFromExtension(filePath);
196
+ variables.push(image_context_variable_1.ImageContextVariable.createRequest({
197
+ [image_context_variable_1.ImageContextVariable.name]: fileName,
198
+ [image_context_variable_1.ImageContextVariable.wsRelativePath]: wsRelativePath,
199
+ [image_context_variable_1.ImageContextVariable.data]: base64Data,
200
+ [image_context_variable_1.ImageContextVariable.mimeType]: mimeType
201
+ }));
202
+ // we do not want to push a text for image variables
203
+ }
204
+ else {
205
+ variables.push({
206
+ variable: file_variable_contribution_1.FILE_VARIABLE,
207
+ arg: wsRelativePath
208
+ });
209
+ texts.push(`${ai_core_1.PromptText.VARIABLE_CHAR}${file_variable_contribution_1.FILE_VARIABLE.name}${ai_core_1.PromptText.VARIABLE_SEPARATOR_CHAR}${wsRelativePath}`);
210
+ }
109
211
  }
110
212
  }
111
213
  return { variables, text: texts.length ? texts.join(' ') : undefined };
@@ -132,6 +234,10 @@ tslib_1.__decorate([
132
234
  (0, inversify_1.inject)(quick_file_select_service_1.QuickFileSelectService),
133
235
  tslib_1.__metadata("design:type", quick_file_select_service_1.QuickFileSelectService)
134
236
  ], FileChatVariableContribution.prototype, "quickFileSelectService", void 0);
237
+ tslib_1.__decorate([
238
+ (0, inversify_1.inject)(core_1.ILogger),
239
+ tslib_1.__metadata("design:type", Object)
240
+ ], FileChatVariableContribution.prototype, "logger", void 0);
135
241
  exports.FileChatVariableContribution = FileChatVariableContribution = tslib_1.__decorate([
136
242
  (0, inversify_1.injectable)()
137
243
  ], FileChatVariableContribution);
@@ -1 +1 @@
1
- {"version":3,"file":"file-chat-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-chat-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { AIVariableContext, AIVariableContribution, AIVariableOpener, AIVariableResolutionRequest, AIVariableResolver, ResolvedAIContextVariable } from '@theia/ai-core';
2
+ import { FrontendVariableService, AIVariablePasteResult } from '@theia/ai-core/lib/browser';
3
+ import { URI } from '@theia/core';
4
+ import { LabelProvider, LabelProviderContribution, OpenerService } from '@theia/core/lib/browser';
5
+ import { FileService } from '@theia/filesystem/lib/browser/file-service';
6
+ import { WorkspaceService } from '@theia/workspace/lib/browser';
7
+ import { ImageContextVariableRequest } from '../common/image-context-variable';
8
+ export declare class ImageContextVariableContribution implements AIVariableContribution, AIVariableResolver, AIVariableOpener, LabelProviderContribution {
9
+ protected readonly fileService: FileService;
10
+ protected readonly wsService: WorkspaceService;
11
+ protected readonly openerService: OpenerService;
12
+ protected readonly labelProvider: LabelProvider;
13
+ registerVariables(service: FrontendVariableService): void;
14
+ canResolve(request: AIVariableResolutionRequest, _: AIVariableContext): Promise<number>;
15
+ resolve(request: AIVariableResolutionRequest, _: AIVariableContext): Promise<ResolvedAIContextVariable | undefined>;
16
+ canOpen(request: AIVariableResolutionRequest, context: AIVariableContext): Promise<number>;
17
+ open(request: ImageContextVariableRequest, context: AIVariableContext): Promise<void>;
18
+ protected toUri(request: ImageContextVariableRequest): Promise<URI | undefined>;
19
+ handlePaste(event: ClipboardEvent, context: AIVariableContext): Promise<AIVariablePasteResult | undefined>;
20
+ private readFileAsDataURL;
21
+ protected makeAbsolute(pathStr: string): Promise<URI | undefined>;
22
+ canHandle(element: object): number;
23
+ getIcon(element: ImageContextVariableRequest): string | undefined;
24
+ getName(element: ImageContextVariableRequest): string | undefined;
25
+ getDetails(element: ImageContextVariableRequest): string | undefined;
26
+ }
27
+ //# sourceMappingURL=image-context-variable-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-context-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/image-context-variable-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,iBAAiB,EAAE,sBAAsB,EACzC,gBAAgB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,yBAAyB,EAC/F,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAQ,GAAG,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAQ,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExG,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAgD,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAE7H,qBACa,gCAAiC,YAAW,sBAAsB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,yBAAyB;IAE5I,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEhD,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAMnD,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvF,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAInH,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1F,IAAI,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAQ3E,KAAK,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAK/E,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IA6BhH,OAAO,CAAC,iBAAiB;cAeT,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;IAkBvE,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIlC,OAAO,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,GAAG,SAAS;IAKjE,OAAO,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,GAAG,SAAS;IAIjE,UAAU,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,GAAG,SAAS;CAIvE"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH and others.
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.ImageContextVariableContribution = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const core_1 = require("@theia/core");
21
+ const browser_1 = require("@theia/core/lib/browser");
22
+ const inversify_1 = require("@theia/core/shared/inversify");
23
+ const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
24
+ const browser_2 = require("@theia/workspace/lib/browser");
25
+ const image_context_variable_1 = require("../common/image-context-variable");
26
+ let ImageContextVariableContribution = class ImageContextVariableContribution {
27
+ registerVariables(service) {
28
+ service.registerResolver(image_context_variable_1.IMAGE_CONTEXT_VARIABLE, this);
29
+ service.registerOpener(image_context_variable_1.IMAGE_CONTEXT_VARIABLE, this);
30
+ service.registerPasteHandler(this.handlePaste.bind(this));
31
+ }
32
+ async canResolve(request, _) {
33
+ return image_context_variable_1.ImageContextVariable.isImageContextRequest(request) ? 1 : 0;
34
+ }
35
+ async resolve(request, _) {
36
+ return image_context_variable_1.ImageContextVariable.resolve(request);
37
+ }
38
+ async canOpen(request, context) {
39
+ var _a;
40
+ return image_context_variable_1.ImageContextVariable.isImageContextRequest(request) && !!((_a = image_context_variable_1.ImageContextVariable.parseRequest(request)) === null || _a === void 0 ? void 0 : _a.wsRelativePath) ? 1 : 0;
41
+ }
42
+ async open(request, context) {
43
+ const uri = await this.toUri(request);
44
+ if (!uri) {
45
+ throw new Error('Unable to resolve URI for request.');
46
+ }
47
+ await (0, browser_1.open)(this.openerService, uri);
48
+ }
49
+ async toUri(request) {
50
+ const variable = image_context_variable_1.ImageContextVariable.parseRequest(request);
51
+ return (variable === null || variable === void 0 ? void 0 : variable.wsRelativePath) ? this.makeAbsolute(variable.wsRelativePath) : undefined;
52
+ }
53
+ async handlePaste(event, context) {
54
+ var _a;
55
+ if (!((_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.items)) {
56
+ return undefined;
57
+ }
58
+ const variables = [];
59
+ for (const item of event.clipboardData.items) {
60
+ if (item.type.startsWith('image/')) {
61
+ const blob = item.getAsFile();
62
+ if (blob) {
63
+ try {
64
+ const dataUrl = await this.readFileAsDataURL(blob);
65
+ // Extract the base64 data by removing the data URL prefix
66
+ // Format is like: data:image/png;base64,BASE64DATA
67
+ const imageData = dataUrl.substring(dataUrl.indexOf(',') + 1);
68
+ variables.push(image_context_variable_1.ImageContextVariable.createRequest({
69
+ data: imageData,
70
+ name: blob.name || `pasted-image-${Date.now()}.png`,
71
+ mimeType: blob.type
72
+ }));
73
+ }
74
+ catch (error) {
75
+ console.error('Failed to process pasted image:', error);
76
+ }
77
+ }
78
+ }
79
+ }
80
+ return variables.length > 0 ? { variables } : undefined;
81
+ }
82
+ readFileAsDataURL(blob) {
83
+ return new Promise((resolve, reject) => {
84
+ const reader = new FileReader();
85
+ reader.onload = e => {
86
+ var _a;
87
+ if (!((_a = e.target) === null || _a === void 0 ? void 0 : _a.result)) {
88
+ reject(new Error('Failed to read file as data URL'));
89
+ return;
90
+ }
91
+ resolve(e.target.result);
92
+ };
93
+ reader.onerror = () => reject(reader.error);
94
+ reader.readAsDataURL(blob);
95
+ });
96
+ }
97
+ async makeAbsolute(pathStr) {
98
+ const path = new core_1.Path(core_1.Path.normalizePathSeparator(pathStr));
99
+ if (!path.isAbsolute) {
100
+ const workspaceRoots = this.wsService.tryGetRoots();
101
+ const wsUris = workspaceRoots.map(root => root.resource.resolve(path));
102
+ for (const uri of wsUris) {
103
+ if (await this.fileService.exists(uri)) {
104
+ return uri;
105
+ }
106
+ }
107
+ }
108
+ const argUri = new core_1.URI(pathStr);
109
+ if (await this.fileService.exists(argUri)) {
110
+ return argUri;
111
+ }
112
+ return undefined;
113
+ }
114
+ canHandle(element) {
115
+ return image_context_variable_1.ImageContextVariable.isImageContextRequest(element) ? 10 : -1;
116
+ }
117
+ getIcon(element) {
118
+ const path = image_context_variable_1.ImageContextVariable.parseArg(element.arg).wsRelativePath;
119
+ return path ? this.labelProvider.getIcon(new core_1.URI(path)) : undefined;
120
+ }
121
+ getName(element) {
122
+ return image_context_variable_1.ImageContextVariable.parseArg(element.arg).name;
123
+ }
124
+ getDetails(element) {
125
+ const path = image_context_variable_1.ImageContextVariable.parseArg(element.arg).wsRelativePath;
126
+ return path ? this.labelProvider.getDetails(new core_1.URI(path)) : '[pasted]';
127
+ }
128
+ };
129
+ exports.ImageContextVariableContribution = ImageContextVariableContribution;
130
+ tslib_1.__decorate([
131
+ (0, inversify_1.inject)(file_service_1.FileService),
132
+ tslib_1.__metadata("design:type", file_service_1.FileService)
133
+ ], ImageContextVariableContribution.prototype, "fileService", void 0);
134
+ tslib_1.__decorate([
135
+ (0, inversify_1.inject)(browser_2.WorkspaceService),
136
+ tslib_1.__metadata("design:type", browser_2.WorkspaceService)
137
+ ], ImageContextVariableContribution.prototype, "wsService", void 0);
138
+ tslib_1.__decorate([
139
+ (0, inversify_1.inject)(browser_1.OpenerService),
140
+ tslib_1.__metadata("design:type", Object)
141
+ ], ImageContextVariableContribution.prototype, "openerService", void 0);
142
+ tslib_1.__decorate([
143
+ (0, inversify_1.inject)(browser_1.LabelProvider),
144
+ tslib_1.__metadata("design:type", browser_1.LabelProvider)
145
+ ], ImageContextVariableContribution.prototype, "labelProvider", void 0);
146
+ exports.ImageContextVariableContribution = ImageContextVariableContribution = tslib_1.__decorate([
147
+ (0, inversify_1.injectable)()
148
+ ], ImageContextVariableContribution);
149
+ //# sourceMappingURL=image-context-variable-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-context-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/image-context-variable-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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;;;;AAOhF,sCAAwC;AACxC,qDAAwG;AACxG,4DAAkE;AAClE,6EAAyE;AACzE,0DAAgE;AAChE,6EAA6H;AAGtH,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IAazC,iBAAiB,CAAC,OAAgC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,+CAAsB,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO,CAAC,cAAc,CAAC,+CAAsB,EAAE,IAAI,CAAC,CAAC;QACrD,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAoC,EAAE,CAAoB;QACvE,OAAO,6CAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoC,EAAE,CAAoB;QACpE,OAAO,6CAAoB,CAAC,OAAO,CAAC,OAAsC,CAAC,CAAC;IAChF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoC,EAAE,OAA0B;;QAC1E,OAAO,6CAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA,MAAA,6CAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,0CAAE,cAAc,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvI,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAoC,EAAE,OAA0B;QACvE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,IAAA,cAAI,EAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAES,KAAK,CAAC,KAAK,CAAC,OAAoC;QACtD,MAAM,QAAQ,GAAG,6CAAoB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,EAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAqB,EAAE,OAA0B;;QAC/D,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,aAAa,0CAAE,KAAK,CAAA,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QAEtD,MAAM,SAAS,GAAkC,EAAE,CAAC;QAEpD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,IAAI,IAAI,EAAE,CAAC;oBACP,IAAI,CAAC;wBACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;wBACnD,0DAA0D;wBAC1D,mDAAmD;wBACnD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC9D,SAAS,CAAC,IAAI,CAAC,6CAAoB,CAAC,aAAa,CAAC;4BAC9C,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,gBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM;4BACnD,QAAQ,EAAE,IAAI,CAAC,IAAI;yBACtB,CAAC,CAAC,CAAC;oBACR,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;oBAC5D,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,CAAC;IAEO,iBAAiB,CAAC,IAAU;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;;gBAChB,IAAI,CAAC,CAAA,MAAA,CAAC,CAAC,MAAM,0CAAE,MAAM,CAAA,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;oBACrD,OAAO;gBACX,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAgB,CAAC,CAAC;YACvC,CAAC,CAAC;YACF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,YAAY,CAAC,OAAe;QACxC,MAAM,IAAI,GAAG,IAAI,WAAI,CAAC,WAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,OAAO,GAAG,CAAC;gBACf,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,UAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,OAAe;QACrB,OAAO,6CAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,CAAC,OAAoC;QACxC,MAAM,IAAI,GAAG,6CAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;QACvE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,UAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,CAAC;IAED,OAAO,CAAC,OAAoC;QACxC,OAAO,6CAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED,UAAU,CAAC,OAAoC;QAC3C,MAAM,IAAI,GAAG,6CAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;QACvE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5E,CAAC;CACJ,CAAA;AA3HY,4EAAgC;AAEtB;IADlB,IAAA,kBAAM,EAAC,0BAAW,CAAC;sCACY,0BAAW;qEAAC;AAGzB;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACK,0BAAgB;mEAAC;AAG5B;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;;uEAC0B;AAG7B;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;sCACY,uBAAa;uEAAC;2CAXvC,gCAAgC;IAD5C,IAAA,sBAAU,GAAE;GACA,gCAAgC,CA2H5C"}
@@ -1,6 +1,8 @@
1
1
  import { MaybePromise, ProgressService, URI, Event } from '@theia/core';
2
2
  import { ChatAgent, ChatService, ChatSession } from '../common';
3
- import { AgentService, PromptService } from '@theia/ai-core';
3
+ import { PreferenceService } from '@theia/core/lib/browser';
4
+ import { AgentService, PromptService, ResolvedPromptFragment } from '@theia/ai-core';
5
+ import { ChangeSetFileElementFactory } from './change-set-file-element';
4
6
  export interface SummaryMetadata {
5
7
  label: string;
6
8
  uri?: URI;
@@ -26,12 +28,16 @@ export declare class TaskContextService {
26
28
  protected readonly promptService: PromptService;
27
29
  protected readonly storageService: TaskContextStorageService;
28
30
  protected readonly progressService: ProgressService;
31
+ protected readonly preferenceService: PreferenceService;
32
+ protected readonly fileChangeFactory: ChangeSetFileElementFactory;
29
33
  get onDidChange(): Event<void>;
30
34
  getAll(): Array<Summary>;
31
35
  getSummary(sessionIdOrFilePath: string): Promise<string>;
32
36
  /** Returns an ID that can be used to refer to the summary in the future. */
33
- summarize(session: ChatSession, promptId?: string, agent?: ChatAgent): Promise<string>;
34
- protected getLlmSummary(session: ChatSession, promptId?: string, agent?: ChatAgent): Promise<string>;
37
+ summarize(session: ChatSession, promptId?: string, agent?: ChatAgent, override?: boolean): Promise<string>;
38
+ update(session: ChatSession, promptId?: string, agent?: ChatAgent, override?: boolean): Promise<string>;
39
+ protected getLlmSummary(session: ChatSession, prompt: ResolvedPromptFragment | undefined, agent?: ChatAgent): Promise<string>;
40
+ protected getSystemPrompt(session: ChatSession, promptId?: string): Promise<ResolvedPromptFragment | undefined>;
35
41
  hasSummary(chatSession: ChatSession): boolean;
36
42
  protected getSummaryForSession(chatSession: ChatSession): Summary | undefined;
37
43
  getLabel(id: string): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"task-context-service.d.ts","sourceRoot":"","sources":["../../src/browser/task-context-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,SAAS,EAAqB,WAAW,EAAE,WAAW,EAAwE,MAAM,WAAW,CAAC;AAGzJ,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG7D,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAQ,SAAQ,eAAe;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,WAAW,yBAAyB;IACtC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,OAAO,EAAE,CAAC;IACpB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,qBACa,kBAAkB;IAE3B,SAAS,CAAC,gBAAgB,gCAAuC;IAE5C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE7E,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAE7B;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlB,UAAU,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc9D,4EAA4E;IACtE,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;cA2B5E,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAuC,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB1I,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAI7C,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS;IAI7E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlC"}
1
+ {"version":3,"file":"task-context-service.d.ts","sourceRoot":"","sources":["../../src/browser/task-context-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,EAAgB,KAAK,EAAO,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAqB,WAAW,EAAE,WAAW,EAAwE,MAAM,WAAW,CAAC;AACzJ,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAGxE,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAQ,SAAQ,eAAe;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,WAAW,yBAAyB;IACtC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,OAAO,EAAE,CAAC;IACpB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,qBACa,kBAAkB;IAE3B,SAAS,CAAC,gBAAgB,gCAAuC;IAE5C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAClD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAEnF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;IAElE,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAE7B;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlB,UAAU,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc9D,4EAA4E;IACtE,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAmCvG,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;cAuF1F,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,sBAAsB,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;cAsBnH,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAuC,GAAG,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC;IAKrJ,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAI7C,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS;IAI7E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlC"}