@theia/plugin-ext 1.73.0-next.9 → 1.73.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/common/lm-tool-protocol.d.ts +58 -0
- package/lib/common/lm-tool-protocol.d.ts.map +1 -0
- package/lib/common/lm-tool-protocol.js +38 -0
- package/lib/common/lm-tool-protocol.js.map +1 -0
- package/lib/common/lm-tool-protocol.spec.d.ts +2 -0
- package/lib/common/lm-tool-protocol.spec.d.ts.map +1 -0
- package/lib/common/lm-tool-protocol.spec.js +80 -0
- package/lib/common/lm-tool-protocol.spec.js.map +1 -0
- package/lib/common/plugin-api-rpc-model.d.ts +4 -0
- package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc-model.js.map +1 -1
- package/lib/common/plugin-api-rpc.d.ts +6 -1
- package/lib/common/plugin-api-rpc.d.ts.map +1 -1
- package/lib/common/plugin-api-rpc.js +4 -2
- package/lib/common/plugin-api-rpc.js.map +1 -1
- package/lib/common/plugin-protocol.d.ts +8 -0
- package/lib/common/plugin-protocol.d.ts.map +1 -1
- package/lib/common/plugin-protocol.js.map +1 -1
- package/lib/hosted/node/hosted-plugin-localization-service.d.ts +2 -1
- package/lib/hosted/node/hosted-plugin-localization-service.d.ts.map +1 -1
- package/lib/hosted/node/hosted-plugin-localization-service.js +6 -1
- package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
- package/lib/hosted/node/plugin-deployer-handler-impl.js +4 -3
- package/lib/hosted/node/plugin-deployer-handler-impl.js.map +1 -1
- package/lib/hosted/node/plugin-host-module.d.ts.map +1 -1
- package/lib/hosted/node/plugin-host-module.js +2 -0
- package/lib/hosted/node/plugin-host-module.js.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.d.ts +2 -0
- package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
- package/lib/hosted/node/scanners/scanner-theia.js +55 -49
- package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
- package/lib/main/browser/comments/comment-thread-widget.d.ts +3 -3
- package/lib/main/browser/comments/comment-thread-widget.d.ts.map +1 -1
- package/lib/main/browser/comments/comment-thread-widget.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-opener.js +1 -0
- package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.d.ts +1 -0
- package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editor-widget.js +3 -0
- package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.d.ts.map +1 -1
- package/lib/main/browser/custom-editors/custom-editors-main.js +2 -0
- package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
- package/lib/main/browser/debug/debug-main.d.ts +1 -11
- package/lib/main/browser/debug/debug-main.d.ts.map +1 -1
- package/lib/main/browser/debug/debug-main.js +3 -24
- package/lib/main/browser/debug/debug-main.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-service.d.ts +2 -1
- package/lib/main/browser/debug/plugin-debug-service.d.ts.map +1 -1
- package/lib/main/browser/debug/plugin-debug-service.js +8 -3
- package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
- package/lib/main/browser/debug/plugin-debug-session-factory.d.ts +7 -44
- package/lib/main/browser/debug/plugin-debug-session-factory.d.ts.map +1 -1
- package/lib/main/browser/debug/plugin-debug-session-factory.js +29 -35
- package/lib/main/browser/debug/plugin-debug-session-factory.js.map +1 -1
- package/lib/main/browser/languages-main.d.ts +6 -1
- package/lib/main/browser/languages-main.d.ts.map +1 -1
- package/lib/main/browser/languages-main.js +39 -2
- package/lib/main/browser/languages-main.js.map +1 -1
- package/lib/main/browser/lm-main.js +2 -2
- package/lib/main/browser/lm-main.js.map +1 -1
- package/lib/main/browser/lm-tool-main.d.ts +14 -0
- package/lib/main/browser/lm-tool-main.d.ts.map +1 -0
- package/lib/main/browser/lm-tool-main.js +101 -0
- package/lib/main/browser/lm-tool-main.js.map +1 -0
- package/lib/main/browser/lm-tool-main.spec.d.ts +2 -0
- package/lib/main/browser/lm-tool-main.spec.d.ts.map +1 -0
- package/lib/main/browser/lm-tool-main.spec.js +100 -0
- package/lib/main/browser/lm-tool-main.spec.js.map +1 -0
- package/lib/main/browser/main-context.d.ts.map +1 -1
- package/lib/main/browser/main-context.js +3 -0
- package/lib/main/browser/main-context.js.map +1 -1
- package/lib/main/browser/main-file-system-event-service.d.ts +21 -4
- package/lib/main/browser/main-file-system-event-service.d.ts.map +1 -1
- package/lib/main/browser/main-file-system-event-service.js +47 -17
- package/lib/main/browser/main-file-system-event-service.js.map +1 -1
- package/lib/main/browser/main-file-system-event-service.spec.js +61 -26
- package/lib/main/browser/main-file-system-event-service.spec.js.map +1 -1
- package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts +2 -1
- package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts.map +1 -1
- package/lib/main/browser/notebooks/renderers/cell-output-webview.js +11 -5
- package/lib/main/browser/notebooks/renderers/cell-output-webview.js.map +1 -1
- package/lib/main/browser/plugin-contribution-handler.d.ts +2 -0
- package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
- package/lib/main/browser/plugin-contribution-handler.js +10 -4
- package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.d.ts +1 -0
- package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.js +28 -3
- package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
- package/lib/main/browser/view/plugin-view-registry.spec.js +40 -0
- package/lib/main/browser/view/plugin-view-registry.spec.js.map +1 -1
- package/lib/main/browser/webview/webview-resource-cache.d.ts +2 -0
- package/lib/main/browser/webview/webview-resource-cache.d.ts.map +1 -1
- package/lib/main/browser/webview/webview-resource-cache.js +7 -1
- package/lib/main/browser/webview/webview-resource-cache.js.map +1 -1
- package/lib/main/browser/webview/webview.d.ts +2 -1
- package/lib/main/browser/webview/webview.d.ts.map +1 -1
- package/lib/main/browser/webview/webview.js +7 -1
- package/lib/main/browser/webview/webview.js.map +1 -1
- package/lib/main/node/plugin-deployer-impl.js +2 -1
- package/lib/main/node/plugin-deployer-impl.js.map +1 -1
- package/lib/plugin/languages/diagnostics.d.ts +4 -1
- package/lib/plugin/languages/diagnostics.d.ts.map +1 -1
- package/lib/plugin/languages/diagnostics.js +22 -9
- package/lib/plugin/languages/diagnostics.js.map +1 -1
- package/lib/plugin/languages/multi-document-highlight.d.ts +14 -0
- package/lib/plugin/languages/multi-document-highlight.d.ts.map +1 -0
- package/lib/plugin/languages/multi-document-highlight.js +60 -0
- package/lib/plugin/languages/multi-document-highlight.js.map +1 -0
- package/lib/plugin/languages.d.ts +3 -1
- package/lib/plugin/languages.d.ts.map +1 -1
- package/lib/plugin/languages.js +11 -0
- package/lib/plugin/languages.js.map +1 -1
- package/lib/plugin/lm-tool-ext.d.ts +28 -0
- package/lib/plugin/lm-tool-ext.d.ts.map +1 -0
- package/lib/plugin/lm-tool-ext.js +171 -0
- package/lib/plugin/lm-tool-ext.js.map +1 -0
- package/lib/plugin/lm-tool-ext.spec.d.ts +2 -0
- package/lib/plugin/lm-tool-ext.spec.d.ts.map +1 -0
- package/lib/plugin/lm-tool-ext.spec.js +124 -0
- package/lib/plugin/lm-tool-ext.spec.js.map +1 -0
- package/lib/plugin/plugin-context.d.ts.map +1 -1
- package/lib/plugin/plugin-context.js +10 -11
- package/lib/plugin/plugin-context.js.map +1 -1
- package/lib/plugin/types-impl.d.ts +0 -9
- package/lib/plugin/types-impl.d.ts.map +1 -1
- package/lib/plugin/types-impl.js +22 -15
- package/lib/plugin/types-impl.js.map +1 -1
- package/package.json +32 -31
- package/src/common/lm-tool-protocol.spec.ts +89 -0
- package/src/common/lm-tool-protocol.ts +102 -0
- package/src/common/plugin-api-rpc-model.ts +5 -0
- package/src/common/plugin-api-rpc.ts +9 -2
- package/src/common/plugin-protocol.ts +9 -0
- package/src/hosted/node/hosted-plugin-localization-service.ts +6 -3
- package/src/hosted/node/plugin-deployer-handler-impl.ts +5 -5
- package/src/hosted/node/plugin-host-module.ts +2 -0
- package/src/hosted/node/scanners/scanner-theia.ts +54 -50
- package/src/main/browser/comments/comment-thread-widget.tsx +5 -5
- package/src/main/browser/custom-editors/custom-editor-opener.tsx +1 -0
- package/src/main/browser/custom-editors/custom-editor-widget.ts +4 -0
- package/src/main/browser/custom-editors/custom-editors-main.ts +2 -0
- package/src/main/browser/debug/debug-main.ts +3 -45
- package/src/main/browser/debug/plugin-debug-service.ts +7 -5
- package/src/main/browser/debug/plugin-debug-session-factory.ts +25 -71
- package/src/main/browser/languages-main.ts +49 -4
- package/src/main/browser/lm-main.ts +2 -2
- package/src/main/browser/lm-tool-main.spec.ts +126 -0
- package/src/main/browser/lm-tool-main.ts +116 -0
- package/src/main/browser/main-context.ts +4 -0
- package/src/main/browser/main-file-system-event-service.spec.ts +76 -29
- package/src/main/browser/main-file-system-event-service.ts +46 -16
- package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +11 -7
- package/src/main/browser/plugin-contribution-handler.ts +8 -4
- package/src/main/browser/plugin-ext-widget.tsx +1 -1
- package/src/main/browser/view/plugin-view-registry.spec.ts +69 -1
- package/src/main/browser/view/plugin-view-registry.ts +30 -3
- package/src/main/browser/webview/webview-resource-cache.ts +6 -2
- package/src/main/browser/webview/webview.ts +6 -3
- package/src/main/node/plugin-deployer-impl.ts +2 -2
- package/src/plugin/languages/diagnostics.ts +28 -10
- package/src/plugin/languages/multi-document-highlight.ts +75 -0
- package/src/plugin/languages.ts +20 -0
- package/src/plugin/lm-tool-ext.spec.ts +152 -0
- package/src/plugin/lm-tool-ext.ts +197 -0
- package/src/plugin/plugin-context.ts +11 -11
- package/src/plugin/types-impl.ts +22 -15
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type * as theia from '@theia/plugin';
|
|
2
|
+
import { CancellationToken } from '@theia/core/lib/common/cancellation';
|
|
3
|
+
import { RPCProtocol } from '../common/rpc-protocol';
|
|
4
|
+
import { LanguageModelToolsExt, ToolInvocationResult } from '../common/lm-tool-protocol';
|
|
5
|
+
import { PluginPackageLanguageModelToolContribution } from '../common';
|
|
6
|
+
import { Disposable } from './types-impl';
|
|
7
|
+
export declare class LanguageModelToolsExtImpl implements LanguageModelToolsExt {
|
|
8
|
+
protected readonly rpc: RPCProtocol;
|
|
9
|
+
private proxy;
|
|
10
|
+
private logger;
|
|
11
|
+
private handleCounter;
|
|
12
|
+
private readonly tools;
|
|
13
|
+
private readonly toolNameToHandle;
|
|
14
|
+
private readonly toolContributions;
|
|
15
|
+
private readonly registeredToolMetadata;
|
|
16
|
+
constructor(rpc: RPCProtocol);
|
|
17
|
+
registerToolContributions(contributions: PluginPackageLanguageModelToolContribution[]): void;
|
|
18
|
+
registerTool<T>(name: string, tool: theia.LanguageModelTool<T>, pluginId: string): Disposable;
|
|
19
|
+
invokeTool(name: string, options: theia.LanguageModelToolInvocationOptions<object>, token?: CancellationToken): Promise<theia.LanguageModelToolResult>;
|
|
20
|
+
getTools(): theia.LanguageModelToolInformation[];
|
|
21
|
+
$invokeTool(handle: number, argsString: string, token?: CancellationToken): Promise<ToolInvocationResult>;
|
|
22
|
+
private convertPartToDto;
|
|
23
|
+
private isTextPart;
|
|
24
|
+
private isDataPart;
|
|
25
|
+
private isPromptTsxPart;
|
|
26
|
+
private convertDtoToApiPart;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=lm-tool-ext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lm-tool-ext.d.ts","sourceRoot":"","sources":["../../src/plugin/lm-tool-ext.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,KAAK,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACH,qBAAqB,EAGrB,oBAAoB,EAKvB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,0CAA0C,EAAE,MAAM,WAAW,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAqG,MAAM,cAAc,CAAC;AAE7I,qBAAa,yBAA0B,YAAW,qBAAqB;IAUvD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW;IAR/C,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuD;IAC7E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiE;IACnG,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA2C;gBAEnD,GAAG,EAAE,WAAW;IAK/C,yBAAyB,CAAC,aAAa,EAAE,0CAA0C,EAAE,GAAG,IAAI;IAM5F,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAkCvF,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,kCAAkC,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC;IAY5J,QAAQ,IAAI,KAAK,CAAC,4BAA4B,EAAE;IA4B1C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsB/G,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,mBAAmB;CAY9B"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.LanguageModelToolsExtImpl = void 0;
|
|
19
|
+
const cancellation_1 = require("@theia/core/lib/common/cancellation");
|
|
20
|
+
const lm_tool_protocol_1 = require("../common/lm-tool-protocol");
|
|
21
|
+
const plugin_api_rpc_1 = require("../common/plugin-api-rpc");
|
|
22
|
+
const logger_1 = require("./logger");
|
|
23
|
+
const types_impl_1 = require("./types-impl");
|
|
24
|
+
class LanguageModelToolsExtImpl {
|
|
25
|
+
constructor(rpc) {
|
|
26
|
+
this.rpc = rpc;
|
|
27
|
+
this.handleCounter = 0;
|
|
28
|
+
this.tools = new Map();
|
|
29
|
+
this.toolNameToHandle = new Map();
|
|
30
|
+
this.toolContributions = new Map();
|
|
31
|
+
this.registeredToolMetadata = new Map();
|
|
32
|
+
this.proxy = this.rpc.getProxy(plugin_api_rpc_1.PLUGIN_RPC_CONTEXT.LM_TOOLS_MAIN);
|
|
33
|
+
this.logger = new logger_1.PluginLogger(this.rpc, 'lm-tools');
|
|
34
|
+
}
|
|
35
|
+
registerToolContributions(contributions) {
|
|
36
|
+
for (const contribution of contributions) {
|
|
37
|
+
this.toolContributions.set(contribution.name, contribution);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
registerTool(name, tool, pluginId) {
|
|
41
|
+
const contribution = this.toolContributions.get(name);
|
|
42
|
+
if (!contribution) {
|
|
43
|
+
this.logger.warn(`Tool '${name}' is not declared in package.json contributes.languageModelTools.`);
|
|
44
|
+
}
|
|
45
|
+
if (this.toolNameToHandle.has(name)) {
|
|
46
|
+
this.logger.warn(`Tool '${name}' is already registered. Ignoring duplicate registration.`);
|
|
47
|
+
return types_impl_1.Disposable.NULL;
|
|
48
|
+
}
|
|
49
|
+
const handle = this.handleCounter++;
|
|
50
|
+
const metadata = {
|
|
51
|
+
name,
|
|
52
|
+
description: contribution?.modelDescription,
|
|
53
|
+
inputSchema: contribution?.inputSchema,
|
|
54
|
+
tags: contribution?.tags,
|
|
55
|
+
};
|
|
56
|
+
this.tools.set(handle, tool);
|
|
57
|
+
this.toolNameToHandle.set(name, handle);
|
|
58
|
+
this.registeredToolMetadata.set(handle, metadata);
|
|
59
|
+
this.proxy.$registerTool(handle, name, metadata, pluginId).catch(err => {
|
|
60
|
+
this.logger.error(`Failed to register tool '${name}': ${err.message || err}`);
|
|
61
|
+
this.tools.delete(handle);
|
|
62
|
+
this.toolNameToHandle.delete(name);
|
|
63
|
+
this.registeredToolMetadata.delete(handle);
|
|
64
|
+
});
|
|
65
|
+
return new types_impl_1.Disposable(() => {
|
|
66
|
+
this.tools.delete(handle);
|
|
67
|
+
this.toolNameToHandle.delete(name);
|
|
68
|
+
this.registeredToolMetadata.delete(handle);
|
|
69
|
+
this.proxy.$unregisterTool(handle);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async invokeTool(name, options, token) {
|
|
73
|
+
const handle = this.toolNameToHandle.get(name);
|
|
74
|
+
if (handle === undefined) {
|
|
75
|
+
throw new Error(`Tool '${name}' is not registered.`);
|
|
76
|
+
}
|
|
77
|
+
const result = await this.$invokeTool(handle, JSON.stringify(options.input), token);
|
|
78
|
+
if ((0, lm_tool_protocol_1.isToolInvocationError)(result)) {
|
|
79
|
+
throw new Error(result.error);
|
|
80
|
+
}
|
|
81
|
+
return new types_impl_1.LanguageModelToolResult(result.content.map(part => this.convertDtoToApiPart(part)));
|
|
82
|
+
}
|
|
83
|
+
getTools() {
|
|
84
|
+
const result = new Map();
|
|
85
|
+
// Add declared tool contributions from package.json
|
|
86
|
+
for (const c of this.toolContributions.values()) {
|
|
87
|
+
result.set(c.name, {
|
|
88
|
+
name: c.name,
|
|
89
|
+
description: c.modelDescription ?? '',
|
|
90
|
+
inputSchema: c.inputSchema,
|
|
91
|
+
tags: c.tags ?? [],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
// Add dynamically registered tools not already covered by declarations
|
|
95
|
+
for (const [name, handle] of this.toolNameToHandle.entries()) {
|
|
96
|
+
if (!result.has(name)) {
|
|
97
|
+
const metadata = this.registeredToolMetadata.get(handle);
|
|
98
|
+
if (metadata) {
|
|
99
|
+
result.set(name, {
|
|
100
|
+
name: metadata.name,
|
|
101
|
+
description: metadata.description ?? '',
|
|
102
|
+
inputSchema: metadata.inputSchema,
|
|
103
|
+
tags: metadata.tags ?? [],
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return [...result.values()];
|
|
109
|
+
}
|
|
110
|
+
async $invokeTool(handle, argsString, token) {
|
|
111
|
+
const tool = this.tools.get(handle);
|
|
112
|
+
if (!tool) {
|
|
113
|
+
return { error: `Tool with handle ${handle} not found` };
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const input = argsString ? JSON.parse(argsString) : {};
|
|
117
|
+
const cancellationToken = token ?? cancellation_1.CancellationToken.None;
|
|
118
|
+
const result = await tool.invoke({ input, toolInvocationToken: undefined }, cancellationToken);
|
|
119
|
+
if (!result) {
|
|
120
|
+
return { content: [] };
|
|
121
|
+
}
|
|
122
|
+
return { content: result.content.map(part => this.convertPartToDto(part)) };
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
126
|
+
return { error: errorMessage };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
convertPartToDto(part) {
|
|
130
|
+
if (this.isTextPart(part)) {
|
|
131
|
+
return { type: 'text', value: part.value };
|
|
132
|
+
}
|
|
133
|
+
if (this.isDataPart(part)) {
|
|
134
|
+
const base64 = (0, lm_tool_protocol_1.uint8ArrayToBase64)(part.data);
|
|
135
|
+
return { type: 'data', base64, mimeType: part.mimeType };
|
|
136
|
+
}
|
|
137
|
+
if (this.isPromptTsxPart(part)) {
|
|
138
|
+
return { type: 'prompt-tsx', value: part.value };
|
|
139
|
+
}
|
|
140
|
+
return { type: 'unknown', json: JSON.stringify(part) };
|
|
141
|
+
}
|
|
142
|
+
isTextPart(part) {
|
|
143
|
+
return typeof part === 'object' && part !== undefined
|
|
144
|
+
&& 'value' in part && typeof part.value === 'string'
|
|
145
|
+
&& !('data' in part) && !('mimeType' in part);
|
|
146
|
+
}
|
|
147
|
+
isDataPart(part) {
|
|
148
|
+
return typeof part === 'object' && part !== undefined
|
|
149
|
+
&& 'data' in part && 'mimeType' in part
|
|
150
|
+
&& typeof part.mimeType === 'string';
|
|
151
|
+
}
|
|
152
|
+
isPromptTsxPart(part) {
|
|
153
|
+
return typeof part === 'object' && part !== undefined
|
|
154
|
+
&& 'value' in part && typeof part.value !== 'string'
|
|
155
|
+
&& !('data' in part) && !('mimeType' in part);
|
|
156
|
+
}
|
|
157
|
+
convertDtoToApiPart(part) {
|
|
158
|
+
switch (part.type) {
|
|
159
|
+
case 'text':
|
|
160
|
+
return new types_impl_1.LanguageModelTextPart(part.value);
|
|
161
|
+
case 'data':
|
|
162
|
+
return new types_impl_1.LanguageModelDataPart((0, lm_tool_protocol_1.base64ToUint8Array)(part.base64), part.mimeType);
|
|
163
|
+
case 'prompt-tsx':
|
|
164
|
+
return new types_impl_1.LanguageModelPromptTsxPart(part.value);
|
|
165
|
+
case 'unknown':
|
|
166
|
+
return new types_impl_1.LanguageModelTextPart(part.json);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.LanguageModelToolsExtImpl = LanguageModelToolsExtImpl;
|
|
171
|
+
//# sourceMappingURL=lm-tool-ext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lm-tool-ext.js","sourceRoot":"","sources":["../../src/plugin/lm-tool-ext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lm-tool-ext.spec.d.ts","sourceRoot":"","sources":["../../src/plugin/lm-tool-ext.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,124 @@
|
|
|
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 lm_tool_ext_1 = require("./lm-tool-ext");
|
|
20
|
+
const lm_tool_protocol_1 = require("../common/lm-tool-protocol");
|
|
21
|
+
function createInstance() {
|
|
22
|
+
const impl = Object.create(lm_tool_ext_1.LanguageModelToolsExtImpl.prototype);
|
|
23
|
+
return impl;
|
|
24
|
+
}
|
|
25
|
+
describe('LanguageModelToolsExtImpl - Part to DTO conversion', () => {
|
|
26
|
+
let instance;
|
|
27
|
+
beforeEach(() => {
|
|
28
|
+
instance = createInstance();
|
|
29
|
+
});
|
|
30
|
+
describe('isTextPart', () => {
|
|
31
|
+
it('should return true for a text part with string value', () => {
|
|
32
|
+
(0, chai_1.expect)(instance.isTextPart({ value: 'hello' })).to.be.true;
|
|
33
|
+
});
|
|
34
|
+
it('should return false for a data part (has data and mimeType)', () => {
|
|
35
|
+
(0, chai_1.expect)(instance.isTextPart({ data: new Uint8Array([1, 2]), mimeType: 'text/plain' })).to.be.false;
|
|
36
|
+
});
|
|
37
|
+
it('should return false for a non-string value', () => {
|
|
38
|
+
(0, chai_1.expect)(instance.isTextPart({ value: { foo: 'bar' } })).to.be.false;
|
|
39
|
+
});
|
|
40
|
+
it('should return false for undefined', () => {
|
|
41
|
+
(0, chai_1.expect)(instance.isTextPart(undefined)).to.be.false;
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe('isDataPart', () => {
|
|
45
|
+
it('should return true for a data part', () => {
|
|
46
|
+
(0, chai_1.expect)(instance.isDataPart({ data: new Uint8Array([1, 2]), mimeType: 'image/png' })).to.be.true;
|
|
47
|
+
});
|
|
48
|
+
it('should return false for a text part', () => {
|
|
49
|
+
(0, chai_1.expect)(instance.isDataPart({ value: 'hello' })).to.be.false;
|
|
50
|
+
});
|
|
51
|
+
it('should return false for undefined', () => {
|
|
52
|
+
(0, chai_1.expect)(instance.isDataPart(undefined)).to.be.false;
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe('isPromptTsxPart', () => {
|
|
56
|
+
it('should return true for a prompt-tsx part with non-string value', () => {
|
|
57
|
+
(0, chai_1.expect)(instance.isPromptTsxPart({ value: { component: 'div' } })).to.be.true;
|
|
58
|
+
});
|
|
59
|
+
it('should return false for a text part with string value', () => {
|
|
60
|
+
(0, chai_1.expect)(instance.isPromptTsxPart({ value: 'hello' })).to.be.false;
|
|
61
|
+
});
|
|
62
|
+
it('should return false for a data part', () => {
|
|
63
|
+
(0, chai_1.expect)(instance.isPromptTsxPart({ data: new Uint8Array(), mimeType: 'text/plain' })).to.be.false;
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('uint8ArrayToBase64', () => {
|
|
67
|
+
it('should encode an empty array', () => {
|
|
68
|
+
const result = (0, lm_tool_protocol_1.uint8ArrayToBase64)(new Uint8Array([]));
|
|
69
|
+
(0, chai_1.expect)(result).to.equal('');
|
|
70
|
+
});
|
|
71
|
+
it('should encode a simple string as Uint8Array', () => {
|
|
72
|
+
const data = new Uint8Array(Buffer.from('hello'));
|
|
73
|
+
const result = (0, lm_tool_protocol_1.uint8ArrayToBase64)(data);
|
|
74
|
+
(0, chai_1.expect)(result).to.equal(Buffer.from('hello').toString('base64'));
|
|
75
|
+
});
|
|
76
|
+
it('should encode binary data', () => {
|
|
77
|
+
const data = new Uint8Array([0, 1, 2, 255]);
|
|
78
|
+
const result = (0, lm_tool_protocol_1.uint8ArrayToBase64)(data);
|
|
79
|
+
(0, chai_1.expect)(result).to.equal(Buffer.from([0, 1, 2, 255]).toString('base64'));
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('convertPartToDto', () => {
|
|
83
|
+
it('should convert a LanguageModelTextPart to text DTO', () => {
|
|
84
|
+
const part = { value: 'some text' };
|
|
85
|
+
const result = instance.convertPartToDto(part);
|
|
86
|
+
(0, chai_1.expect)(result).to.deep.equal({ type: 'text', value: 'some text' });
|
|
87
|
+
});
|
|
88
|
+
it('should convert a LanguageModelDataPart to data DTO', () => {
|
|
89
|
+
const data = new Uint8Array(Buffer.from('binary content'));
|
|
90
|
+
const part = { data, mimeType: 'application/octet-stream' };
|
|
91
|
+
const result = instance.convertPartToDto(part);
|
|
92
|
+
(0, chai_1.expect)(result.type).to.equal('data');
|
|
93
|
+
(0, chai_1.expect)(result.base64).to.equal(Buffer.from('binary content').toString('base64'));
|
|
94
|
+
(0, chai_1.expect)(result.mimeType).to.equal('application/octet-stream');
|
|
95
|
+
});
|
|
96
|
+
it('should convert a LanguageModelPromptTsxPart to prompt-tsx DTO', () => {
|
|
97
|
+
const part = { value: { component: 'SomeComponent', props: { x: 1 } } };
|
|
98
|
+
const result = instance.convertPartToDto(part);
|
|
99
|
+
(0, chai_1.expect)(result).to.deep.equal({ type: 'prompt-tsx', value: { component: 'SomeComponent', props: { x: 1 } } });
|
|
100
|
+
});
|
|
101
|
+
it('should convert an unknown part to unknown DTO', () => {
|
|
102
|
+
const part = { someUnknownField: 42 };
|
|
103
|
+
const result = instance.convertPartToDto(part);
|
|
104
|
+
(0, chai_1.expect)(result).to.deep.equal({ type: 'unknown', json: '{"someUnknownField":42}' });
|
|
105
|
+
});
|
|
106
|
+
it('should convert a LanguageModelDataPart with image mime type to data DTO', () => {
|
|
107
|
+
const imageData = new Uint8Array([137, 80, 78, 71]); // PNG header bytes
|
|
108
|
+
const part = { data: imageData, mimeType: 'image/png' };
|
|
109
|
+
const result = instance.convertPartToDto(part);
|
|
110
|
+
(0, chai_1.expect)(result.type).to.equal('data');
|
|
111
|
+
(0, chai_1.expect)(result.base64).to.equal(Buffer.from(imageData).toString('base64'));
|
|
112
|
+
(0, chai_1.expect)(result.mimeType).to.equal('image/png');
|
|
113
|
+
});
|
|
114
|
+
it('should convert a LanguageModelDataPart with text/x-json to data DTO', () => {
|
|
115
|
+
const jsonStr = '{"key":"value"}';
|
|
116
|
+
const data = new Uint8Array(Buffer.from(jsonStr));
|
|
117
|
+
const part = { data, mimeType: 'text/x-json' };
|
|
118
|
+
const result = instance.convertPartToDto(part);
|
|
119
|
+
(0, chai_1.expect)(result.type).to.equal('data');
|
|
120
|
+
(0, chai_1.expect)(result.base64).to.equal(Buffer.from(jsonStr).toString('base64'));
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=lm-tool-ext.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lm-tool-ext.spec.js","sourceRoot":"","sources":["../../src/plugin/lm-tool-ext.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-context.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin-context.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,KAAK,MAAM,eAAe,CAAC;AAK5C,OAAO,EAEH,MAAM,IAAI,cAAc,EACxB,aAAa,EACb,gBAAgB,EAInB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAyJH,aAAa,EAyDhB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAIrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAYlE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAY7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-context.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin-context.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,KAAK,MAAM,eAAe,CAAC;AAK5C,OAAO,EAEH,MAAM,IAAI,cAAc,EACxB,aAAa,EACb,gBAAgB,EAInB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAyJH,aAAa,EAyDhB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAIrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAYlE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAY7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAczD,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAajE;AAED,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,YAAY,EACtB,qBAAqB,EAAE,yBAAyB,EAChD,sBAAsB,EAAE,0BAA0B,EAClD,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,eAAe,EAC3B,eAAe,EAAE,mBAAmB,GACrC,gBAAgB,CAkyClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,CAAE,SAAQ,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC;IAEjC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAE/B;;;;;OAKG;IACH,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED,qBAAa,MAAM,CAAC,CAAC,CAAE,YAAW,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;;IAG7C,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC;IAErB,WAAW,EAAE,GAAG,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;gBAEjB,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc;IAgBhE,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,OAAO,IAAI,CAAC,CAEf;IAED,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;CAG7B;AAED,qBAAa,SAAS,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;;IAGrE,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,4BAA4B,EAAE,OAAO,CAAC;gBAE1B,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,4BAA4B,UAAQ;IAUtG,IAAa,QAAQ,IAAI,OAAO,CAE/B;IAED,IAAa,OAAO,IAAI,CAAC,CAExB;IAEQ,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC;CAGtC"}
|
|
@@ -67,6 +67,7 @@ const tests_1 = require("./tests");
|
|
|
67
67
|
const uri_ext_1 = require("./uri-ext");
|
|
68
68
|
const logger_1 = require("./logger");
|
|
69
69
|
const lm_ext_1 = require("./lm-ext");
|
|
70
|
+
const lm_tool_ext_1 = require("./lm-tool-ext");
|
|
70
71
|
function createAPIObject(rawObject) {
|
|
71
72
|
return new Proxy(rawObject, {
|
|
72
73
|
get(target, p, receiver) {
|
|
@@ -117,6 +118,7 @@ function createAPIFactory(rpc, pluginManager, envExt, debugExt, preferenceRegist
|
|
|
117
118
|
const testingExt = rpc.set(plugin_api_rpc_1.MAIN_RPC_CONTEXT.TESTING_EXT, new tests_1.TestingExtImpl(rpc, commandRegistry));
|
|
118
119
|
const uriExt = rpc.set(plugin_api_rpc_1.MAIN_RPC_CONTEXT.URI_EXT, new uri_ext_1.UriExtImpl(rpc));
|
|
119
120
|
const lmExt = rpc.set(plugin_api_rpc_1.MAIN_RPC_CONTEXT.MCP_SERVER_DEFINITION_REGISTRY_EXT, new lm_ext_1.LmExtImpl(rpc));
|
|
121
|
+
const lmToolExt = rpc.set(plugin_api_rpc_1.MAIN_RPC_CONTEXT.LM_TOOLS_EXT, new lm_tool_ext_1.LanguageModelToolsExtImpl(rpc));
|
|
120
122
|
rpc.set(plugin_api_rpc_1.MAIN_RPC_CONTEXT.DEBUG_EXT, debugExt);
|
|
121
123
|
const commandLogger = new logger_1.PluginLogger(rpc, 'commands-plugin');
|
|
122
124
|
return function (plugin) {
|
|
@@ -767,12 +769,8 @@ function createAPIFactory(rpc, pluginManager, envExt, debugExt, preferenceRegist
|
|
|
767
769
|
registerDocumentHighlightProvider(selector, provider) {
|
|
768
770
|
return languagesExt.registerDocumentHighlightProvider(selector, provider, (0, type_converters_1.pluginToPluginInfo)(plugin));
|
|
769
771
|
},
|
|
770
|
-
/**
|
|
771
|
-
* @stubbed
|
|
772
|
-
* @monaco-uplift: wait until API is available in Monaco (1.85.0+)
|
|
773
|
-
*/
|
|
774
772
|
registerMultiDocumentHighlightProvider(selector, provider) {
|
|
775
|
-
return
|
|
773
|
+
return languagesExt.registerMultiDocumentHighlightProvider(selector, provider, (0, type_converters_1.pluginToPluginInfo)(plugin));
|
|
776
774
|
},
|
|
777
775
|
registerWorkspaceSymbolProvider(provider) {
|
|
778
776
|
return languagesExt.registerWorkspaceSymbolProvider(provider, (0, type_converters_1.pluginToPluginInfo)(plugin));
|
|
@@ -1036,6 +1034,8 @@ function createAPIFactory(rpc, pluginManager, envExt, debugExt, preferenceRegist
|
|
|
1036
1034
|
};
|
|
1037
1035
|
const mcpContributions = plugin.rawModel.contributes && plugin.rawModel.contributes.mcpServerDefinitionProviders || [];
|
|
1038
1036
|
lmExt.registerMcpContributions(mcpContributions);
|
|
1037
|
+
const toolContributions = plugin.rawModel.contributes && plugin.rawModel.contributes.languageModelTools || [];
|
|
1038
|
+
lmToolExt.registerToolContributions(toolContributions);
|
|
1039
1039
|
const lm = {
|
|
1040
1040
|
/** @stubbed LanguageModelChat */
|
|
1041
1041
|
selectChatModels(selector) {
|
|
@@ -1043,16 +1043,15 @@ function createAPIFactory(rpc, pluginManager, envExt, debugExt, preferenceRegist
|
|
|
1043
1043
|
},
|
|
1044
1044
|
/** @stubbed LanguageModelChat */
|
|
1045
1045
|
onDidChangeChatModels: (listener, thisArgs, disposables) => event_1.Event.None(listener, thisArgs, disposables),
|
|
1046
|
-
/** @stubbed LanguageModelTool */
|
|
1047
1046
|
invokeTool(name, options, token) {
|
|
1048
|
-
return
|
|
1047
|
+
return lmToolExt.invokeTool(name, options, token);
|
|
1049
1048
|
},
|
|
1050
|
-
/** @stubbed LanguageModelTool */
|
|
1051
1049
|
registerTool(name, tool) {
|
|
1052
|
-
return
|
|
1050
|
+
return lmToolExt.registerTool(name, tool, plugin.model.id);
|
|
1051
|
+
},
|
|
1052
|
+
get tools() {
|
|
1053
|
+
return lmToolExt.getTools();
|
|
1053
1054
|
},
|
|
1054
|
-
/** @stubbed LanguageModelTool */
|
|
1055
|
-
tools: [],
|
|
1056
1055
|
registerMcpServerDefinitionProvider(id, provider) {
|
|
1057
1056
|
return lmExt.registerMcpServerDefinitionProvider(id, provider);
|
|
1058
1057
|
},
|