@theia/ai-chat 1.68.0 → 1.69.0-next.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 (30) hide show
  1. package/lib/browser/file-chat-variable-contribution.d.ts.map +1 -1
  2. package/lib/browser/file-chat-variable-contribution.js +17 -5
  3. package/lib/browser/file-chat-variable-contribution.js.map +1 -1
  4. package/lib/browser/file-chat-variable-contribution.spec.d.ts +2 -0
  5. package/lib/browser/file-chat-variable-contribution.spec.d.ts.map +1 -0
  6. package/lib/browser/file-chat-variable-contribution.spec.js +99 -0
  7. package/lib/browser/file-chat-variable-contribution.spec.js.map +1 -0
  8. package/lib/browser/image-context-variable-contribution.d.ts +2 -1
  9. package/lib/browser/image-context-variable-contribution.d.ts.map +1 -1
  10. package/lib/browser/image-context-variable-contribution.js +13 -4
  11. package/lib/browser/image-context-variable-contribution.js.map +1 -1
  12. package/lib/common/image-context-variable-origin.spec.d.ts +2 -0
  13. package/lib/common/image-context-variable-origin.spec.d.ts.map +1 -0
  14. package/lib/common/image-context-variable-origin.spec.js +41 -0
  15. package/lib/common/image-context-variable-origin.spec.js.map +1 -0
  16. package/lib/common/image-context-variable.d.ts +8 -0
  17. package/lib/common/image-context-variable.d.ts.map +1 -1
  18. package/lib/common/image-context-variable.js +23 -0
  19. package/lib/common/image-context-variable.js.map +1 -1
  20. package/lib/common/image-context-variable.spec.d.ts +2 -0
  21. package/lib/common/image-context-variable.spec.d.ts.map +1 -0
  22. package/lib/common/image-context-variable.spec.js +66 -0
  23. package/lib/common/image-context-variable.spec.js.map +1 -0
  24. package/package.json +9 -9
  25. package/src/browser/file-chat-variable-contribution.spec.ts +125 -0
  26. package/src/browser/file-chat-variable-contribution.ts +18 -5
  27. package/src/browser/image-context-variable-contribution.ts +13 -4
  28. package/src/common/image-context-variable-origin.spec.ts +46 -0
  29. package/src/common/image-context-variable.spec.ts +70 -0
  30. package/src/common/image-context-variable.ts +27 -0
@@ -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,OAAO,EAAO,iBAAiB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEtF,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;AAKzE,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;CA2ChH"}
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,EAAO,iBAAiB,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEtF,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;AAKzE,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;cAwDlD,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;CAmDhH"}
@@ -86,13 +86,18 @@ let FileChatVariableContribution = class FileChatVariableContribution {
86
86
  const filePath = await this.wsService.getWorkspaceRelativePath(selectedItem.uri);
87
87
  const fileName = selectedItem.uri.displayName;
88
88
  const base64Data = await this.fileToBase64(selectedItem.uri);
89
+ if (!base64Data) {
90
+ resolve(undefined);
91
+ return;
92
+ }
89
93
  const mimeType = this.getMimeTypeFromExtension(selectedItem.uri.path.toString());
90
94
  // Create the argument string in the required format
91
95
  const imageVarArgs = {
92
96
  name: fileName,
93
97
  wsRelativePath: filePath,
94
98
  data: base64Data,
95
- mimeType: mimeType
99
+ mimeType: mimeType,
100
+ origin: 'context'
96
101
  };
97
102
  resolve(image_context_variable_1.ImageContextVariable.createArgString(imageVarArgs));
98
103
  }
@@ -187,14 +192,21 @@ let FileChatVariableContribution = class FileChatVariableContribution {
187
192
  if (await this.fileService.exists(uri)) {
188
193
  const wsRelativePath = await this.wsService.getWorkspaceRelativePath(uri);
189
194
  const fileName = uri.displayName;
195
+ if (!wsRelativePath) {
196
+ continue;
197
+ }
190
198
  if (this.isImageFile(wsRelativePath)) {
191
199
  const base64Data = await this.fileToBase64(uri);
200
+ if (!base64Data) {
201
+ continue;
202
+ }
192
203
  const mimeType = this.getMimeTypeFromExtension(wsRelativePath);
193
204
  variables.push(image_context_variable_1.ImageContextVariable.createRequest({
194
- [image_context_variable_1.ImageContextVariable.name]: fileName,
195
- [image_context_variable_1.ImageContextVariable.wsRelativePath]: wsRelativePath,
196
- [image_context_variable_1.ImageContextVariable.data]: base64Data,
197
- [image_context_variable_1.ImageContextVariable.mimeType]: mimeType
205
+ name: fileName,
206
+ wsRelativePath,
207
+ data: base64Data,
208
+ mimeType,
209
+ origin: 'temporary'
198
210
  }));
199
211
  // we do not want to push a text for image variables
200
212
  }
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file-chat-variable-contribution.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-chat-variable-contribution.spec.d.ts","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 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
+ const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
+ let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
+ const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
21
+ frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
22
+ const chai_1 = require("chai");
23
+ const sinon = require("sinon");
24
+ const file_chat_variable_contribution_1 = require("./file-chat-variable-contribution");
25
+ const core_1 = require("@theia/core");
26
+ const browser_1 = require("@theia/core/lib/browser");
27
+ class TestContribution extends file_chat_variable_contribution_1.FileChatVariableContribution {
28
+ async fileToBase64(uri) {
29
+ return super.fileToBase64(uri);
30
+ }
31
+ getMimeTypeFromExtension(filePath) {
32
+ return super.getMimeTypeFromExtension(filePath);
33
+ }
34
+ isImageFile(filePath) {
35
+ return super.isImageFile(filePath);
36
+ }
37
+ registerVariables() {
38
+ // no-op
39
+ }
40
+ }
41
+ disableJSDOM();
42
+ describe('FileChatVariableContribution', () => {
43
+ let sandbox;
44
+ let fileService;
45
+ let wsService;
46
+ let logger;
47
+ let contribution;
48
+ before(() => {
49
+ disableJSDOM = (0, jsdom_1.enableJSDOM)();
50
+ });
51
+ after(() => {
52
+ disableJSDOM();
53
+ });
54
+ beforeEach(() => {
55
+ sandbox = sinon.createSandbox();
56
+ fileService = {
57
+ readFile: sandbox.stub(),
58
+ exists: sandbox.stub(),
59
+ };
60
+ wsService = {
61
+ getWorkspaceRelativePath: sandbox.stub(),
62
+ };
63
+ logger = {
64
+ error: sandbox.stub(),
65
+ };
66
+ contribution = new TestContribution();
67
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
+ contribution.fileService = fileService;
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ contribution.wsService = wsService;
71
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
72
+ contribution.logger = logger;
73
+ });
74
+ afterEach(() => {
75
+ sandbox.restore();
76
+ });
77
+ it('should return empty base64 string and log error when reading fails', async () => {
78
+ const uri = new core_1.URI('file:///test.png');
79
+ fileService.readFile.rejects(new Error('read failed'));
80
+ const result = await contribution.fileToBase64(uri);
81
+ (0, chai_1.expect)(result).to.equal('');
82
+ (0, chai_1.expect)(logger.error.called).to.be.true;
83
+ });
84
+ it('should not create image request on drop when base64 conversion fails', async () => {
85
+ const imageUri = new core_1.URI('file:///test.png');
86
+ sandbox.stub(browser_1.ApplicationShell, 'getDraggedEditorUris').returns([imageUri]);
87
+ fileService.exists.resolves(true);
88
+ wsService.getWorkspaceRelativePath.resolves('test.png');
89
+ sandbox.stub(contribution, 'isImageFile').returns(true);
90
+ sandbox.stub(contribution, 'fileToBase64').resolves('');
91
+ const event = {
92
+ dataTransfer: {},
93
+ };
94
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
95
+ const result = await contribution.handleDrop(event, {});
96
+ (0, chai_1.expect)(result).to.deep.equal({ variables: [], text: undefined });
97
+ });
98
+ });
99
+ //# sourceMappingURL=file-chat-variable-contribution.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-chat-variable-contribution.spec.js","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.spec.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { URI } from '@theia/core';
4
4
  import { LabelProvider, LabelProviderContribution, OpenerService } from '@theia/core/lib/browser';
5
5
  import { FileService } from '@theia/filesystem/lib/browser/file-service';
6
6
  import { WorkspaceService } from '@theia/workspace/lib/browser';
7
- import { ImageContextVariableRequest } from '../common/image-context-variable';
7
+ import { ImageContextVariable, ImageContextVariableRequest } from '../common/image-context-variable';
8
8
  export declare class ImageContextVariableContribution implements AIVariableContribution, AIVariableResolver, AIVariableOpener, LabelProviderContribution {
9
9
  protected readonly fileService: FileService;
10
10
  protected readonly wsService: WorkspaceService;
@@ -20,6 +20,7 @@ export declare class ImageContextVariableContribution implements AIVariableContr
20
20
  private readFileAsDataURL;
21
21
  protected makeAbsolute(pathStr: string): Promise<URI | undefined>;
22
22
  canHandle(element: object): number;
23
+ protected parseArgSafe(arg: string): ImageContextVariable | undefined;
23
24
  getIcon(element: ImageContextVariableRequest): string | undefined;
24
25
  getName(element: ImageContextVariableRequest): string | undefined;
25
26
  getDetails(element: ImageContextVariableRequest): string | undefined;
@@ -1 +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"}
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,EAA0B,oBAAoB,EAAE,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;IA8BhH,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,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAQrE,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"}
@@ -66,7 +66,8 @@ let ImageContextVariableContribution = class ImageContextVariableContribution {
66
66
  variables.push(image_context_variable_1.ImageContextVariable.createRequest({
67
67
  data: imageData,
68
68
  name: blob.name || `pasted-image-${Date.now()}.png`,
69
- mimeType: blob.type
69
+ mimeType: blob.type,
70
+ origin: 'temporary'
70
71
  }));
71
72
  }
72
73
  catch (error) {
@@ -111,15 +112,23 @@ let ImageContextVariableContribution = class ImageContextVariableContribution {
111
112
  canHandle(element) {
112
113
  return image_context_variable_1.ImageContextVariable.isImageContextRequest(element) ? 10 : -1;
113
114
  }
115
+ parseArgSafe(arg) {
116
+ try {
117
+ return image_context_variable_1.ImageContextVariable.parseArg(arg);
118
+ }
119
+ catch {
120
+ return undefined;
121
+ }
122
+ }
114
123
  getIcon(element) {
115
- const path = image_context_variable_1.ImageContextVariable.parseArg(element.arg).wsRelativePath;
124
+ const path = this.parseArgSafe(element.arg)?.wsRelativePath;
116
125
  return path ? this.labelProvider.getIcon(new core_1.URI(path)) : undefined;
117
126
  }
118
127
  getName(element) {
119
- return image_context_variable_1.ImageContextVariable.parseArg(element.arg).name;
128
+ return this.parseArgSafe(element.arg)?.name;
120
129
  }
121
130
  getDetails(element) {
122
- const path = image_context_variable_1.ImageContextVariable.parseArg(element.arg).wsRelativePath;
131
+ const path = this.parseArgSafe(element.arg)?.wsRelativePath;
123
132
  return path ? this.labelProvider.getDetails(new core_1.URI(path)) : undefined;
124
133
  }
125
134
  };
@@ -1 +1 @@
1
- {"version":3,"file":"image-context-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/image-context-variable-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-context-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/image-context-variable-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=image-context-variable-origin.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-context-variable-origin.spec.d.ts","sourceRoot":"","sources":["../../src/common/image-context-variable-origin.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 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
+ const chai_1 = require("chai");
19
+ const image_context_variable_1 = require("./image-context-variable");
20
+ describe('ImageContextVariable origin', () => {
21
+ it('defaults to context when origin is missing', () => {
22
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOrigin(JSON.stringify({ data: 'a', mimeType: 'image/png' }))).to.equal('context');
23
+ });
24
+ it('returns temporary when origin is temporary', () => {
25
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOrigin(JSON.stringify({ data: 'a', mimeType: 'image/png', origin: 'temporary' }))).to.equal('temporary');
26
+ });
27
+ it('returns context for unknown origin values', () => {
28
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOrigin(JSON.stringify({ data: 'a', mimeType: 'image/png', origin: 'other' }))).to.equal('context');
29
+ });
30
+ it('returns context on invalid JSON', () => {
31
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOrigin('{')).to.equal('context');
32
+ });
33
+ it('getOriginSafe returns undefined for non-image requests', () => {
34
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOriginSafe({ variable: { id: 'other', name: 'other', description: '' }, arg: 'x' })).to.be.undefined;
35
+ });
36
+ it('getOriginSafe returns undefined if request shape is invalid', () => {
37
+ // missing arg
38
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOriginSafe({ variable: image_context_variable_1.IMAGE_CONTEXT_VARIABLE })).to.be.undefined;
39
+ });
40
+ });
41
+ //# sourceMappingURL=image-context-variable-origin.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-context-variable-origin.spec.js","sourceRoot":"","sources":["../../src/common/image-context-variable-origin.spec.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;;AAEhF,+BAA8B;AAE9B,qEAAwF;AAExF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,IAAA,aAAM,EAAC,6CAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,IAAA,aAAM,EAAC,6CAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5I,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,IAAA,aAAM,EAAC,6CAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtI,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,IAAA,aAAM,EAAC,6CAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,IAAA,aAAM,EAAC,6CAAoB,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IACxI,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACnE,cAAc;QACd,IAAA,aAAM,EAAC,6CAAoB,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,+CAAsB,EAA4C,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;IAC/I,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,10 +1,15 @@
1
1
  import { AIVariable, AIVariableResolutionRequest, ResolvedAIContextVariable } from '@theia/ai-core';
2
2
  export declare const IMAGE_CONTEXT_VARIABLE: AIVariable;
3
+ export type ImageContextVariableOrigin = 'temporary' | 'context';
3
4
  export interface ImageContextVariable {
4
5
  name?: string;
5
6
  wsRelativePath?: string;
6
7
  data: string;
7
8
  mimeType: string;
9
+ /**
10
+ * Internal metadata. If missing it is treated as 'context'.
11
+ */
12
+ origin?: ImageContextVariableOrigin;
8
13
  }
9
14
  export interface ImageContextVariableRequest extends AIVariableResolutionRequest {
10
15
  variable: typeof IMAGE_CONTEXT_VARIABLE;
@@ -15,6 +20,7 @@ export declare namespace ImageContextVariable {
15
20
  const wsRelativePath = "wsRelativePath";
16
21
  const data = "data";
17
22
  const mimeType = "mimeType";
23
+ const origin = "origin";
18
24
  function isImageContextRequest(request: object): request is ImageContextVariableRequest;
19
25
  function isResolvedImageContext(resolved: object): resolved is ResolvedAIContextVariable & {
20
26
  arg: string;
@@ -25,5 +31,7 @@ export declare namespace ImageContextVariable {
25
31
  function createRequest(content: ImageContextVariable): ImageContextVariableRequest;
26
32
  function createArgString(args: ImageContextVariable): string;
27
33
  function parseArg(argString: string): ImageContextVariable;
34
+ function getOrigin(argString: string): ImageContextVariableOrigin;
35
+ function getOriginSafe(request: AIVariableResolutionRequest): ImageContextVariableOrigin | undefined;
28
36
  }
29
37
  //# sourceMappingURL=image-context-variable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-context-variable.d.ts","sourceRoot":"","sources":["../../src/common/image-context-variable.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,UAAU,EACV,2BAA2B,EAC3B,yBAAyB,EAC5B,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,sBAAsB,EAAE,UA2BpC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAC5E,QAAQ,EAAE,OAAO,sBAAsB,CAAC;IACxC,GAAG,EAAE,MAAM,CAAC;CACf;AAED,yBAAiB,oBAAoB,CAAC;IAC3B,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,cAAc,mBAAmB,CAAC;IACxC,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,QAAQ,aAAa,CAAC;IAEnC,SAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,2BAA2B,CAE7F;IAED,SAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,yBAAyB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAEhH;IAED,SAAgB,YAAY,CAAC,OAAO,EAAE,2BAA2B,GAAG,SAAS,GAAG,oBAAoB,CAEnG;IAED,SAAgB,OAAO,CAAC,OAAO,EAAE,2BAA2B,GAAG,yBAAyB,CAOvF;IAED,SAAgB,aAAa,CAAC,QAAQ,EAAE,yBAAyB,GAAG,SAAS,GAAG,oBAAoB,CAEnG;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,2BAA2B,CAKxF;IAED,SAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAElE;IAED,SAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAuBhE;CACJ"}
1
+ {"version":3,"file":"image-context-variable.d.ts","sourceRoot":"","sources":["../../src/common/image-context-variable.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,UAAU,EACV,2BAA2B,EAC3B,yBAAyB,EAC5B,MAAM,gBAAgB,CAAC;AAGxB,eAAO,MAAM,sBAAsB,EAAE,UA2BpC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,WAAW,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,CAAC,EAAE,0BAA0B,CAAC;CACvC;AAED,MAAM,WAAW,2BAA4B,SAAQ,2BAA2B;IAC5E,QAAQ,EAAE,OAAO,sBAAsB,CAAC;IACxC,GAAG,EAAE,MAAM,CAAC;CACf;AAED,yBAAiB,oBAAoB,CAAC;IAC3B,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,cAAc,mBAAmB,CAAC;IACxC,MAAM,IAAI,SAAS,CAAC;IACpB,MAAM,QAAQ,aAAa,CAAC;IAC5B,MAAM,MAAM,WAAW,CAAC;IAE/B,SAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,2BAA2B,CAE7F;IAED,SAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,yBAAyB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAEhH;IAED,SAAgB,YAAY,CAAC,OAAO,EAAE,2BAA2B,GAAG,SAAS,GAAG,oBAAoB,CAEnG;IAED,SAAgB,OAAO,CAAC,OAAO,EAAE,2BAA2B,GAAG,yBAAyB,CAOvF;IAED,SAAgB,aAAa,CAAC,QAAQ,EAAE,yBAAyB,GAAG,SAAS,GAAG,oBAAoB,CAEnG;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,2BAA2B,CAKxF;IAED,SAAgB,eAAe,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAElE;IAED,SAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,CAuBhE;IAED,SAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,0BAA0B,CAOvE;IAED,SAAgB,aAAa,CAAC,OAAO,EAAE,2BAA2B,GAAG,0BAA0B,GAAG,SAAS,CAS1G;CACJ"}
@@ -52,6 +52,7 @@ var ImageContextVariable;
52
52
  ImageContextVariable.wsRelativePath = 'wsRelativePath';
53
53
  ImageContextVariable.data = 'data';
54
54
  ImageContextVariable.mimeType = 'mimeType';
55
+ ImageContextVariable.origin = 'origin';
55
56
  function isImageContextRequest(request) {
56
57
  return ai_core_1.AIVariableResolutionRequest.is(request) && request.variable.id === exports.IMAGE_CONTEXT_VARIABLE.id && !!request.arg;
57
58
  }
@@ -109,5 +110,27 @@ var ImageContextVariable;
109
110
  return result;
110
111
  }
111
112
  ImageContextVariable.parseArg = parseArg;
113
+ function getOrigin(argString) {
114
+ try {
115
+ const parsed = JSON.parse(argString);
116
+ return parsed.origin === 'temporary' ? 'temporary' : 'context';
117
+ }
118
+ catch {
119
+ return 'context';
120
+ }
121
+ }
122
+ ImageContextVariable.getOrigin = getOrigin;
123
+ function getOriginSafe(request) {
124
+ if (!isImageContextRequest(request)) {
125
+ return undefined;
126
+ }
127
+ try {
128
+ return getOrigin(request.arg);
129
+ }
130
+ catch {
131
+ return undefined;
132
+ }
133
+ }
134
+ ImageContextVariable.getOriginSafe = getOriginSafe;
112
135
  })(ImageContextVariable || (exports.ImageContextVariable = ImageContextVariable = {}));
113
136
  //# sourceMappingURL=image-context-variable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-context-variable.js","sourceRoot":"","sources":["../../src/common/image-context-variable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-context-variable.js","sourceRoot":"","sources":["../../src/common/image-context-variable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=image-context-variable.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-context-variable.spec.d.ts","sourceRoot":"","sources":["../../src/common/image-context-variable.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
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
+ const chai_1 = require("chai");
19
+ const image_context_variable_1 = require("./image-context-variable");
20
+ describe('ImageContextVariable', () => {
21
+ describe('getOrigin', () => {
22
+ it("should default missing origin to 'context'", () => {
23
+ const arg = JSON.stringify({
24
+ data: 'AAA',
25
+ mimeType: 'image/png'
26
+ });
27
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOrigin(arg)).to.equal('context');
28
+ });
29
+ it("should return 'context' on parse failure", () => {
30
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOrigin('{not json')).to.equal('context');
31
+ });
32
+ it("should return 'temporary' when origin is temporary", () => {
33
+ const arg = JSON.stringify({
34
+ data: 'AAA',
35
+ mimeType: 'image/png',
36
+ origin: 'temporary'
37
+ });
38
+ (0, chai_1.expect)(image_context_variable_1.ImageContextVariable.getOrigin(arg)).to.equal('temporary');
39
+ });
40
+ });
41
+ describe('parseArg', () => {
42
+ it('should throw on parse failure', () => {
43
+ (0, chai_1.expect)(() => image_context_variable_1.ImageContextVariable.parseArg('{not json')).to.throw('Failed to parse JSON argument string');
44
+ });
45
+ it('should not clear required fields when optional origin is missing', () => {
46
+ const arg = JSON.stringify({
47
+ data: 'AAA',
48
+ mimeType: 'image/png'
49
+ });
50
+ const parsed = image_context_variable_1.ImageContextVariable.parseArg(arg);
51
+ (0, chai_1.expect)(parsed.data).to.equal('AAA');
52
+ (0, chai_1.expect)(parsed.mimeType).to.equal('image/png');
53
+ (0, chai_1.expect)(parsed.origin).to.equal(undefined);
54
+ });
55
+ });
56
+ describe('parseRequest', () => {
57
+ it('should return undefined for non-imageContext requests even if arg is invalid JSON', () => {
58
+ const parsed = image_context_variable_1.ImageContextVariable.parseRequest({
59
+ variable: { ...image_context_variable_1.IMAGE_CONTEXT_VARIABLE, id: 'other', name: 'other' },
60
+ arg: '{not json'
61
+ });
62
+ (0, chai_1.expect)(parsed).to.equal(undefined);
63
+ });
64
+ });
65
+ });
66
+ //# sourceMappingURL=image-context-variable.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-context-variable.spec.js","sourceRoot":"","sources":["../../src/common/image-context-variable.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@theia/ai-chat",
3
- "version": "1.68.0",
3
+ "version": "1.69.0-next.0+c1487d700",
4
4
  "description": "Theia - AI Chat Extension",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.68.0",
7
- "@theia/core": "1.68.0",
8
- "@theia/editor": "1.68.0",
9
- "@theia/file-search": "1.68.0",
10
- "@theia/filesystem": "1.68.0",
11
- "@theia/monaco": "1.68.0",
6
+ "@theia/ai-core": "1.69.0-next.0+c1487d700",
7
+ "@theia/core": "1.69.0-next.0+c1487d700",
8
+ "@theia/editor": "1.69.0-next.0+c1487d700",
9
+ "@theia/file-search": "1.69.0-next.0+c1487d700",
10
+ "@theia/filesystem": "1.69.0-next.0+c1487d700",
11
+ "@theia/monaco": "1.69.0-next.0+c1487d700",
12
12
  "@theia/monaco-editor-core": "1.96.302",
13
- "@theia/workspace": "1.68.0",
13
+ "@theia/workspace": "1.69.0-next.0+c1487d700",
14
14
  "js-yaml": "^4.1.0",
15
15
  "tslib": "^2.6.2"
16
16
  },
@@ -54,5 +54,5 @@
54
54
  "nyc": {
55
55
  "extends": "../../configs/nyc.json"
56
56
  },
57
- "gitHead": "d844a76de68367f16a726f1eae0c2032ecb85f63"
57
+ "gitHead": "c1487d700d12c61ffbf3dc39aff78f4e091946d4"
58
58
  }
@@ -0,0 +1,125 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
18
+ let disableJSDOM = enableJSDOM();
19
+ import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
20
+ FrontendApplicationConfigProvider.set({});
21
+
22
+ import { expect } from 'chai';
23
+ import * as sinon from 'sinon';
24
+ import { FileChatVariableContribution } from './file-chat-variable-contribution';
25
+ import { FileService } from '@theia/filesystem/lib/browser/file-service';
26
+ import { WorkspaceService } from '@theia/workspace/lib/browser';
27
+ import { ILogger, URI } from '@theia/core';
28
+ import { ApplicationShell } from '@theia/core/lib/browser';
29
+
30
+ class TestContribution extends FileChatVariableContribution {
31
+ public override async fileToBase64(uri: URI): Promise<string> {
32
+ return super.fileToBase64(uri);
33
+ }
34
+
35
+ public override getMimeTypeFromExtension(filePath: string): string {
36
+ return super.getMimeTypeFromExtension(filePath);
37
+ }
38
+
39
+ public override isImageFile(filePath: string): boolean {
40
+ return super.isImageFile(filePath);
41
+ }
42
+
43
+ public override registerVariables(): void {
44
+ // no-op
45
+ }
46
+ }
47
+
48
+ disableJSDOM();
49
+
50
+ describe('FileChatVariableContribution', () => {
51
+ let sandbox: sinon.SinonSandbox;
52
+
53
+ let fileService: sinon.SinonStubbedInstance<FileService>;
54
+ let wsService: sinon.SinonStubbedInstance<WorkspaceService>;
55
+ let logger: sinon.SinonStubbedInstance<ILogger>;
56
+
57
+ let contribution: TestContribution;
58
+
59
+ before(() => {
60
+ disableJSDOM = enableJSDOM();
61
+ });
62
+
63
+ after(() => {
64
+ disableJSDOM();
65
+ });
66
+
67
+ beforeEach(() => {
68
+ sandbox = sinon.createSandbox();
69
+
70
+ fileService = {
71
+ readFile: sandbox.stub(),
72
+ exists: sandbox.stub(),
73
+ } as unknown as sinon.SinonStubbedInstance<FileService>;
74
+
75
+ wsService = {
76
+ getWorkspaceRelativePath: sandbox.stub(),
77
+ } as unknown as sinon.SinonStubbedInstance<WorkspaceService>;
78
+
79
+ logger = {
80
+ error: sandbox.stub(),
81
+ } as unknown as sinon.SinonStubbedInstance<ILogger>;
82
+
83
+ contribution = new TestContribution();
84
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
+ (contribution as any).fileService = fileService;
86
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
87
+ (contribution as any).wsService = wsService;
88
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
+ (contribution as any).logger = logger;
90
+ });
91
+
92
+ afterEach(() => {
93
+ sandbox.restore();
94
+ });
95
+
96
+ it('should return empty base64 string and log error when reading fails', async () => {
97
+ const uri = new URI('file:///test.png');
98
+ fileService.readFile.rejects(new Error('read failed'));
99
+
100
+ const result = await contribution.fileToBase64(uri);
101
+
102
+ expect(result).to.equal('');
103
+ expect(logger.error.called).to.be.true;
104
+ });
105
+
106
+ it('should not create image request on drop when base64 conversion fails', async () => {
107
+ const imageUri = new URI('file:///test.png');
108
+
109
+ sandbox.stub(ApplicationShell, 'getDraggedEditorUris').returns([imageUri]);
110
+ fileService.exists.resolves(true);
111
+ wsService.getWorkspaceRelativePath.resolves('test.png');
112
+
113
+ sandbox.stub(contribution, 'isImageFile').returns(true);
114
+ sandbox.stub(contribution, 'fileToBase64').resolves('');
115
+
116
+ const event = {
117
+ dataTransfer: {},
118
+ } as unknown as DragEvent;
119
+
120
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
+ const result = await (contribution as any).handleDrop(event, {} as any);
122
+
123
+ expect(result).to.deep.equal({ variables: [], text: undefined });
124
+ });
125
+ });
@@ -109,6 +109,10 @@ export class FileChatVariableContribution implements FrontendVariableContributio
109
109
  const filePath = await this.wsService.getWorkspaceRelativePath(selectedItem.uri);
110
110
  const fileName = selectedItem.uri.displayName;
111
111
  const base64Data = await this.fileToBase64(selectedItem.uri);
112
+ if (!base64Data) {
113
+ resolve(undefined);
114
+ return;
115
+ }
112
116
  const mimeType = this.getMimeTypeFromExtension(selectedItem.uri.path.toString());
113
117
 
114
118
  // Create the argument string in the required format
@@ -116,7 +120,8 @@ export class FileChatVariableContribution implements FrontendVariableContributio
116
120
  name: fileName,
117
121
  wsRelativePath: filePath,
118
122
  data: base64Data,
119
- mimeType: mimeType
123
+ mimeType: mimeType,
124
+ origin: 'context'
120
125
  };
121
126
 
122
127
  resolve(ImageContextVariable.createArgString(imageVarArgs));
@@ -225,14 +230,22 @@ export class FileChatVariableContribution implements FrontendVariableContributio
225
230
  const wsRelativePath = await this.wsService.getWorkspaceRelativePath(uri);
226
231
  const fileName = uri.displayName;
227
232
 
233
+ if (!wsRelativePath) {
234
+ continue;
235
+ }
236
+
228
237
  if (this.isImageFile(wsRelativePath)) {
229
238
  const base64Data = await this.fileToBase64(uri);
239
+ if (!base64Data) {
240
+ continue;
241
+ }
230
242
  const mimeType = this.getMimeTypeFromExtension(wsRelativePath);
231
243
  variables.push(ImageContextVariable.createRequest({
232
- [ImageContextVariable.name]: fileName,
233
- [ImageContextVariable.wsRelativePath]: wsRelativePath,
234
- [ImageContextVariable.data]: base64Data,
235
- [ImageContextVariable.mimeType]: mimeType
244
+ name: fileName,
245
+ wsRelativePath,
246
+ data: base64Data,
247
+ mimeType,
248
+ origin: 'temporary'
236
249
  }));
237
250
  // we do not want to push a text for image variables
238
251
  } else {
@@ -88,7 +88,8 @@ export class ImageContextVariableContribution implements AIVariableContribution,
88
88
  variables.push(ImageContextVariable.createRequest({
89
89
  data: imageData,
90
90
  name: blob.name || `pasted-image-${Date.now()}.png`,
91
- mimeType: blob.type
91
+ mimeType: blob.type,
92
+ origin: 'temporary'
92
93
  }));
93
94
  } catch (error) {
94
95
  console.error('Failed to process pasted image:', error);
@@ -137,17 +138,25 @@ export class ImageContextVariableContribution implements AIVariableContribution,
137
138
  return ImageContextVariable.isImageContextRequest(element) ? 10 : -1;
138
139
  }
139
140
 
141
+ protected parseArgSafe(arg: string): ImageContextVariable | undefined {
142
+ try {
143
+ return ImageContextVariable.parseArg(arg);
144
+ } catch {
145
+ return undefined;
146
+ }
147
+ }
148
+
140
149
  getIcon(element: ImageContextVariableRequest): string | undefined {
141
- const path = ImageContextVariable.parseArg(element.arg).wsRelativePath;
150
+ const path = this.parseArgSafe(element.arg)?.wsRelativePath;
142
151
  return path ? this.labelProvider.getIcon(new URI(path)) : undefined;
143
152
  }
144
153
 
145
154
  getName(element: ImageContextVariableRequest): string | undefined {
146
- return ImageContextVariable.parseArg(element.arg).name;
155
+ return this.parseArgSafe(element.arg)?.name;
147
156
  }
148
157
 
149
158
  getDetails(element: ImageContextVariableRequest): string | undefined {
150
- const path = ImageContextVariable.parseArg(element.arg).wsRelativePath;
159
+ const path = this.parseArgSafe(element.arg)?.wsRelativePath;
151
160
  return path ? this.labelProvider.getDetails(new URI(path)) : undefined;
152
161
  }
153
162
  }
@@ -0,0 +1,46 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2026 EclipseSource GmbH and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { expect } from 'chai';
18
+ import { AIVariableResolutionRequest } from '@theia/ai-core';
19
+ import { ImageContextVariable, IMAGE_CONTEXT_VARIABLE } from './image-context-variable';
20
+
21
+ describe('ImageContextVariable origin', () => {
22
+ it('defaults to context when origin is missing', () => {
23
+ expect(ImageContextVariable.getOrigin(JSON.stringify({ data: 'a', mimeType: 'image/png' }))).to.equal('context');
24
+ });
25
+
26
+ it('returns temporary when origin is temporary', () => {
27
+ expect(ImageContextVariable.getOrigin(JSON.stringify({ data: 'a', mimeType: 'image/png', origin: 'temporary' }))).to.equal('temporary');
28
+ });
29
+
30
+ it('returns context for unknown origin values', () => {
31
+ expect(ImageContextVariable.getOrigin(JSON.stringify({ data: 'a', mimeType: 'image/png', origin: 'other' }))).to.equal('context');
32
+ });
33
+
34
+ it('returns context on invalid JSON', () => {
35
+ expect(ImageContextVariable.getOrigin('{')).to.equal('context');
36
+ });
37
+
38
+ it('getOriginSafe returns undefined for non-image requests', () => {
39
+ expect(ImageContextVariable.getOriginSafe({ variable: { id: 'other', name: 'other', description: '' }, arg: 'x' })).to.be.undefined;
40
+ });
41
+
42
+ it('getOriginSafe returns undefined if request shape is invalid', () => {
43
+ // missing arg
44
+ expect(ImageContextVariable.getOriginSafe({ variable: IMAGE_CONTEXT_VARIABLE } as unknown as AIVariableResolutionRequest)).to.be.undefined;
45
+ });
46
+ });
@@ -0,0 +1,70 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 EclipseSource GmbH and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { expect } from 'chai';
18
+ import { ImageContextVariable, IMAGE_CONTEXT_VARIABLE } from './image-context-variable';
19
+
20
+ describe('ImageContextVariable', () => {
21
+ describe('getOrigin', () => {
22
+ it("should default missing origin to 'context'", () => {
23
+ const arg = JSON.stringify({
24
+ data: 'AAA',
25
+ mimeType: 'image/png'
26
+ });
27
+ expect(ImageContextVariable.getOrigin(arg)).to.equal('context');
28
+ });
29
+
30
+ it("should return 'context' on parse failure", () => {
31
+ expect(ImageContextVariable.getOrigin('{not json')).to.equal('context');
32
+ });
33
+
34
+ it("should return 'temporary' when origin is temporary", () => {
35
+ const arg = JSON.stringify({
36
+ data: 'AAA',
37
+ mimeType: 'image/png',
38
+ origin: 'temporary'
39
+ });
40
+ expect(ImageContextVariable.getOrigin(arg)).to.equal('temporary');
41
+ });
42
+ });
43
+
44
+ describe('parseArg', () => {
45
+ it('should throw on parse failure', () => {
46
+ expect(() => ImageContextVariable.parseArg('{not json')).to.throw('Failed to parse JSON argument string');
47
+ });
48
+
49
+ it('should not clear required fields when optional origin is missing', () => {
50
+ const arg = JSON.stringify({
51
+ data: 'AAA',
52
+ mimeType: 'image/png'
53
+ });
54
+ const parsed = ImageContextVariable.parseArg(arg);
55
+ expect(parsed.data).to.equal('AAA');
56
+ expect(parsed.mimeType).to.equal('image/png');
57
+ expect(parsed.origin).to.equal(undefined);
58
+ });
59
+ });
60
+
61
+ describe('parseRequest', () => {
62
+ it('should return undefined for non-imageContext requests even if arg is invalid JSON', () => {
63
+ const parsed = ImageContextVariable.parseRequest({
64
+ variable: { ...IMAGE_CONTEXT_VARIABLE, id: 'other', name: 'other' },
65
+ arg: '{not json'
66
+ });
67
+ expect(parsed).to.equal(undefined);
68
+ });
69
+ });
70
+ });
@@ -50,11 +50,17 @@ export const IMAGE_CONTEXT_VARIABLE: AIVariable = {
50
50
  ]
51
51
  };
52
52
 
53
+ export type ImageContextVariableOrigin = 'temporary' | 'context';
54
+
53
55
  export interface ImageContextVariable {
54
56
  name?: string;
55
57
  wsRelativePath?: string;
56
58
  data: string;
57
59
  mimeType: string;
60
+ /**
61
+ * Internal metadata. If missing it is treated as 'context'.
62
+ */
63
+ origin?: ImageContextVariableOrigin;
58
64
  }
59
65
 
60
66
  export interface ImageContextVariableRequest extends AIVariableResolutionRequest {
@@ -67,6 +73,7 @@ export namespace ImageContextVariable {
67
73
  export const wsRelativePath = 'wsRelativePath';
68
74
  export const data = 'data';
69
75
  export const mimeType = 'mimeType';
76
+ export const origin = 'origin';
70
77
 
71
78
  export function isImageContextRequest(request: object): request is ImageContextVariableRequest {
72
79
  return AIVariableResolutionRequest.is(request) && request.variable.id === IMAGE_CONTEXT_VARIABLE.id && !!request.arg;
@@ -128,4 +135,24 @@ export namespace ImageContextVariable {
128
135
 
129
136
  return result as ImageContextVariable;
130
137
  }
138
+
139
+ export function getOrigin(argString: string): ImageContextVariableOrigin {
140
+ try {
141
+ const parsed = JSON.parse(argString) as { origin?: unknown };
142
+ return parsed.origin === 'temporary' ? 'temporary' : 'context';
143
+ } catch {
144
+ return 'context';
145
+ }
146
+ }
147
+
148
+ export function getOriginSafe(request: AIVariableResolutionRequest): ImageContextVariableOrigin | undefined {
149
+ if (!isImageContextRequest(request)) {
150
+ return undefined;
151
+ }
152
+ try {
153
+ return getOrigin(request.arg);
154
+ } catch {
155
+ return undefined;
156
+ }
157
+ }
131
158
  }