@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.
- package/lib/browser/file-chat-variable-contribution.d.ts.map +1 -1
- package/lib/browser/file-chat-variable-contribution.js +17 -5
- package/lib/browser/file-chat-variable-contribution.js.map +1 -1
- package/lib/browser/file-chat-variable-contribution.spec.d.ts +2 -0
- package/lib/browser/file-chat-variable-contribution.spec.d.ts.map +1 -0
- package/lib/browser/file-chat-variable-contribution.spec.js +99 -0
- package/lib/browser/file-chat-variable-contribution.spec.js.map +1 -0
- package/lib/browser/image-context-variable-contribution.d.ts +2 -1
- package/lib/browser/image-context-variable-contribution.d.ts.map +1 -1
- package/lib/browser/image-context-variable-contribution.js +13 -4
- package/lib/browser/image-context-variable-contribution.js.map +1 -1
- package/lib/common/image-context-variable-origin.spec.d.ts +2 -0
- package/lib/common/image-context-variable-origin.spec.d.ts.map +1 -0
- package/lib/common/image-context-variable-origin.spec.js +41 -0
- package/lib/common/image-context-variable-origin.spec.js.map +1 -0
- package/lib/common/image-context-variable.d.ts +8 -0
- package/lib/common/image-context-variable.d.ts.map +1 -1
- package/lib/common/image-context-variable.js +23 -0
- package/lib/common/image-context-variable.js.map +1 -1
- package/lib/common/image-context-variable.spec.d.ts +2 -0
- package/lib/common/image-context-variable.spec.d.ts.map +1 -0
- package/lib/common/image-context-variable.spec.js +66 -0
- package/lib/common/image-context-variable.spec.js.map +1 -0
- package/package.json +9 -9
- package/src/browser/file-chat-variable-contribution.spec.ts +125 -0
- package/src/browser/file-chat-variable-contribution.ts +18 -5
- package/src/browser/image-context-variable-contribution.ts +13 -4
- package/src/common/image-context-variable-origin.spec.ts +46 -0
- package/src/common/image-context-variable.spec.ts +70 -0
- 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;
|
|
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
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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 @@
|
|
|
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,
|
|
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 =
|
|
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
|
|
128
|
+
return this.parseArgSafe(element.arg)?.name;
|
|
120
129
|
}
|
|
121
130
|
getDetails(element) {
|
|
122
|
-
const path =
|
|
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 @@
|
|
|
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;
|
|
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":";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,4CAIwB;AACxB,sCAAkC;AAErB,QAAA,sBAAsB,GAAe;IAC9C,EAAE,EAAE,cAAc;IAClB,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EAAE,2CAA2C,CAAC;IACxH,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,0CAA0C,EAAE,YAAY,CAAC;IAC7E,WAAW,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC;IAC9C,iBAAiB,EAAE,IAAI;IACvB,IAAI,EAAE;QACF;YACI,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,0DAA0D,EAAE,0CAA0C,CAAC;YACjI,UAAU,EAAE,IAAI;SACnB;QACD;YACI,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oEAAoE,EAAE,6DAA6D,CAAC;YAC9J,UAAU,EAAE,IAAI;SACnB;QACD;YACI,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,0DAA0D,EAAE,2BAA2B,CAAC;SACrH;QACD;YACI,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,8DAA8D,EAAE,4BAA4B,CAAC;SAC1H;KACJ;CACJ,CAAC;
|
|
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 @@
|
|
|
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.
|
|
3
|
+
"version": "1.69.0-next.0+c1487d700",
|
|
4
4
|
"description": "Theia - AI Chat Extension",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.
|
|
7
|
-
"@theia/core": "1.
|
|
8
|
-
"@theia/editor": "1.
|
|
9
|
-
"@theia/file-search": "1.
|
|
10
|
-
"@theia/filesystem": "1.
|
|
11
|
-
"@theia/monaco": "1.
|
|
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.
|
|
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": "
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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 =
|
|
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
|
|
155
|
+
return this.parseArgSafe(element.arg)?.name;
|
|
147
156
|
}
|
|
148
157
|
|
|
149
158
|
getDetails(element: ImageContextVariableRequest): string | undefined {
|
|
150
|
-
const path =
|
|
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
|
}
|