@theia/plugin-ext 1.73.0-next.9 → 1.73.1

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 (169) hide show
  1. package/lib/common/lm-tool-protocol.d.ts +58 -0
  2. package/lib/common/lm-tool-protocol.d.ts.map +1 -0
  3. package/lib/common/lm-tool-protocol.js +38 -0
  4. package/lib/common/lm-tool-protocol.js.map +1 -0
  5. package/lib/common/lm-tool-protocol.spec.d.ts +2 -0
  6. package/lib/common/lm-tool-protocol.spec.d.ts.map +1 -0
  7. package/lib/common/lm-tool-protocol.spec.js +80 -0
  8. package/lib/common/lm-tool-protocol.spec.js.map +1 -0
  9. package/lib/common/plugin-api-rpc-model.d.ts +4 -0
  10. package/lib/common/plugin-api-rpc-model.d.ts.map +1 -1
  11. package/lib/common/plugin-api-rpc-model.js.map +1 -1
  12. package/lib/common/plugin-api-rpc.d.ts +6 -1
  13. package/lib/common/plugin-api-rpc.d.ts.map +1 -1
  14. package/lib/common/plugin-api-rpc.js +4 -2
  15. package/lib/common/plugin-api-rpc.js.map +1 -1
  16. package/lib/common/plugin-protocol.d.ts +8 -0
  17. package/lib/common/plugin-protocol.d.ts.map +1 -1
  18. package/lib/common/plugin-protocol.js.map +1 -1
  19. package/lib/hosted/node/hosted-plugin-localization-service.d.ts +2 -1
  20. package/lib/hosted/node/hosted-plugin-localization-service.d.ts.map +1 -1
  21. package/lib/hosted/node/hosted-plugin-localization-service.js +6 -1
  22. package/lib/hosted/node/hosted-plugin-localization-service.js.map +1 -1
  23. package/lib/hosted/node/plugin-deployer-handler-impl.js +4 -3
  24. package/lib/hosted/node/plugin-deployer-handler-impl.js.map +1 -1
  25. package/lib/hosted/node/plugin-host-module.d.ts.map +1 -1
  26. package/lib/hosted/node/plugin-host-module.js +2 -0
  27. package/lib/hosted/node/plugin-host-module.js.map +1 -1
  28. package/lib/hosted/node/scanners/scanner-theia.d.ts +2 -0
  29. package/lib/hosted/node/scanners/scanner-theia.d.ts.map +1 -1
  30. package/lib/hosted/node/scanners/scanner-theia.js +55 -49
  31. package/lib/hosted/node/scanners/scanner-theia.js.map +1 -1
  32. package/lib/main/browser/comments/comment-thread-widget.d.ts +3 -3
  33. package/lib/main/browser/comments/comment-thread-widget.d.ts.map +1 -1
  34. package/lib/main/browser/comments/comment-thread-widget.js.map +1 -1
  35. package/lib/main/browser/custom-editors/custom-editor-opener.d.ts.map +1 -1
  36. package/lib/main/browser/custom-editors/custom-editor-opener.js +1 -0
  37. package/lib/main/browser/custom-editors/custom-editor-opener.js.map +1 -1
  38. package/lib/main/browser/custom-editors/custom-editor-widget.d.ts +1 -0
  39. package/lib/main/browser/custom-editors/custom-editor-widget.d.ts.map +1 -1
  40. package/lib/main/browser/custom-editors/custom-editor-widget.js +3 -0
  41. package/lib/main/browser/custom-editors/custom-editor-widget.js.map +1 -1
  42. package/lib/main/browser/custom-editors/custom-editors-main.d.ts.map +1 -1
  43. package/lib/main/browser/custom-editors/custom-editors-main.js +2 -0
  44. package/lib/main/browser/custom-editors/custom-editors-main.js.map +1 -1
  45. package/lib/main/browser/debug/debug-main.d.ts +1 -11
  46. package/lib/main/browser/debug/debug-main.d.ts.map +1 -1
  47. package/lib/main/browser/debug/debug-main.js +3 -24
  48. package/lib/main/browser/debug/debug-main.js.map +1 -1
  49. package/lib/main/browser/debug/plugin-debug-service.d.ts +2 -1
  50. package/lib/main/browser/debug/plugin-debug-service.d.ts.map +1 -1
  51. package/lib/main/browser/debug/plugin-debug-service.js +8 -3
  52. package/lib/main/browser/debug/plugin-debug-service.js.map +1 -1
  53. package/lib/main/browser/debug/plugin-debug-session-factory.d.ts +7 -44
  54. package/lib/main/browser/debug/plugin-debug-session-factory.d.ts.map +1 -1
  55. package/lib/main/browser/debug/plugin-debug-session-factory.js +29 -35
  56. package/lib/main/browser/debug/plugin-debug-session-factory.js.map +1 -1
  57. package/lib/main/browser/languages-main.d.ts +6 -1
  58. package/lib/main/browser/languages-main.d.ts.map +1 -1
  59. package/lib/main/browser/languages-main.js +39 -2
  60. package/lib/main/browser/languages-main.js.map +1 -1
  61. package/lib/main/browser/lm-main.js +2 -2
  62. package/lib/main/browser/lm-main.js.map +1 -1
  63. package/lib/main/browser/lm-tool-main.d.ts +14 -0
  64. package/lib/main/browser/lm-tool-main.d.ts.map +1 -0
  65. package/lib/main/browser/lm-tool-main.js +101 -0
  66. package/lib/main/browser/lm-tool-main.js.map +1 -0
  67. package/lib/main/browser/lm-tool-main.spec.d.ts +2 -0
  68. package/lib/main/browser/lm-tool-main.spec.d.ts.map +1 -0
  69. package/lib/main/browser/lm-tool-main.spec.js +100 -0
  70. package/lib/main/browser/lm-tool-main.spec.js.map +1 -0
  71. package/lib/main/browser/main-context.d.ts.map +1 -1
  72. package/lib/main/browser/main-context.js +3 -0
  73. package/lib/main/browser/main-context.js.map +1 -1
  74. package/lib/main/browser/main-file-system-event-service.d.ts +21 -4
  75. package/lib/main/browser/main-file-system-event-service.d.ts.map +1 -1
  76. package/lib/main/browser/main-file-system-event-service.js +47 -17
  77. package/lib/main/browser/main-file-system-event-service.js.map +1 -1
  78. package/lib/main/browser/main-file-system-event-service.spec.js +61 -26
  79. package/lib/main/browser/main-file-system-event-service.spec.js.map +1 -1
  80. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts +2 -1
  81. package/lib/main/browser/notebooks/renderers/cell-output-webview.d.ts.map +1 -1
  82. package/lib/main/browser/notebooks/renderers/cell-output-webview.js +11 -5
  83. package/lib/main/browser/notebooks/renderers/cell-output-webview.js.map +1 -1
  84. package/lib/main/browser/plugin-contribution-handler.d.ts +2 -0
  85. package/lib/main/browser/plugin-contribution-handler.d.ts.map +1 -1
  86. package/lib/main/browser/plugin-contribution-handler.js +10 -4
  87. package/lib/main/browser/plugin-contribution-handler.js.map +1 -1
  88. package/lib/main/browser/view/plugin-view-registry.d.ts +1 -0
  89. package/lib/main/browser/view/plugin-view-registry.d.ts.map +1 -1
  90. package/lib/main/browser/view/plugin-view-registry.js +28 -3
  91. package/lib/main/browser/view/plugin-view-registry.js.map +1 -1
  92. package/lib/main/browser/view/plugin-view-registry.spec.js +40 -0
  93. package/lib/main/browser/view/plugin-view-registry.spec.js.map +1 -1
  94. package/lib/main/browser/webview/webview-resource-cache.d.ts +2 -0
  95. package/lib/main/browser/webview/webview-resource-cache.d.ts.map +1 -1
  96. package/lib/main/browser/webview/webview-resource-cache.js +7 -1
  97. package/lib/main/browser/webview/webview-resource-cache.js.map +1 -1
  98. package/lib/main/browser/webview/webview.d.ts +2 -1
  99. package/lib/main/browser/webview/webview.d.ts.map +1 -1
  100. package/lib/main/browser/webview/webview.js +7 -1
  101. package/lib/main/browser/webview/webview.js.map +1 -1
  102. package/lib/main/node/plugin-deployer-impl.js +2 -1
  103. package/lib/main/node/plugin-deployer-impl.js.map +1 -1
  104. package/lib/plugin/languages/diagnostics.d.ts +4 -1
  105. package/lib/plugin/languages/diagnostics.d.ts.map +1 -1
  106. package/lib/plugin/languages/diagnostics.js +22 -9
  107. package/lib/plugin/languages/diagnostics.js.map +1 -1
  108. package/lib/plugin/languages/multi-document-highlight.d.ts +14 -0
  109. package/lib/plugin/languages/multi-document-highlight.d.ts.map +1 -0
  110. package/lib/plugin/languages/multi-document-highlight.js +60 -0
  111. package/lib/plugin/languages/multi-document-highlight.js.map +1 -0
  112. package/lib/plugin/languages.d.ts +3 -1
  113. package/lib/plugin/languages.d.ts.map +1 -1
  114. package/lib/plugin/languages.js +11 -0
  115. package/lib/plugin/languages.js.map +1 -1
  116. package/lib/plugin/lm-tool-ext.d.ts +28 -0
  117. package/lib/plugin/lm-tool-ext.d.ts.map +1 -0
  118. package/lib/plugin/lm-tool-ext.js +171 -0
  119. package/lib/plugin/lm-tool-ext.js.map +1 -0
  120. package/lib/plugin/lm-tool-ext.spec.d.ts +2 -0
  121. package/lib/plugin/lm-tool-ext.spec.d.ts.map +1 -0
  122. package/lib/plugin/lm-tool-ext.spec.js +124 -0
  123. package/lib/plugin/lm-tool-ext.spec.js.map +1 -0
  124. package/lib/plugin/plugin-context.d.ts.map +1 -1
  125. package/lib/plugin/plugin-context.js +10 -11
  126. package/lib/plugin/plugin-context.js.map +1 -1
  127. package/lib/plugin/types-impl.d.ts +0 -9
  128. package/lib/plugin/types-impl.d.ts.map +1 -1
  129. package/lib/plugin/types-impl.js +22 -15
  130. package/lib/plugin/types-impl.js.map +1 -1
  131. package/package.json +32 -31
  132. package/src/common/lm-tool-protocol.spec.ts +89 -0
  133. package/src/common/lm-tool-protocol.ts +102 -0
  134. package/src/common/plugin-api-rpc-model.ts +5 -0
  135. package/src/common/plugin-api-rpc.ts +9 -2
  136. package/src/common/plugin-protocol.ts +9 -0
  137. package/src/hosted/node/hosted-plugin-localization-service.ts +6 -3
  138. package/src/hosted/node/plugin-deployer-handler-impl.ts +5 -5
  139. package/src/hosted/node/plugin-host-module.ts +2 -0
  140. package/src/hosted/node/scanners/scanner-theia.ts +54 -50
  141. package/src/main/browser/comments/comment-thread-widget.tsx +5 -5
  142. package/src/main/browser/custom-editors/custom-editor-opener.tsx +1 -0
  143. package/src/main/browser/custom-editors/custom-editor-widget.ts +4 -0
  144. package/src/main/browser/custom-editors/custom-editors-main.ts +2 -0
  145. package/src/main/browser/debug/debug-main.ts +3 -45
  146. package/src/main/browser/debug/plugin-debug-service.ts +7 -5
  147. package/src/main/browser/debug/plugin-debug-session-factory.ts +25 -71
  148. package/src/main/browser/languages-main.ts +49 -4
  149. package/src/main/browser/lm-main.ts +2 -2
  150. package/src/main/browser/lm-tool-main.spec.ts +126 -0
  151. package/src/main/browser/lm-tool-main.ts +116 -0
  152. package/src/main/browser/main-context.ts +4 -0
  153. package/src/main/browser/main-file-system-event-service.spec.ts +76 -29
  154. package/src/main/browser/main-file-system-event-service.ts +46 -16
  155. package/src/main/browser/notebooks/renderers/cell-output-webview.tsx +11 -7
  156. package/src/main/browser/plugin-contribution-handler.ts +8 -4
  157. package/src/main/browser/plugin-ext-widget.tsx +1 -1
  158. package/src/main/browser/view/plugin-view-registry.spec.ts +69 -1
  159. package/src/main/browser/view/plugin-view-registry.ts +30 -3
  160. package/src/main/browser/webview/webview-resource-cache.ts +6 -2
  161. package/src/main/browser/webview/webview.ts +6 -3
  162. package/src/main/node/plugin-deployer-impl.ts +2 -2
  163. package/src/plugin/languages/diagnostics.ts +28 -10
  164. package/src/plugin/languages/multi-document-highlight.ts +75 -0
  165. package/src/plugin/languages.ts +20 -0
  166. package/src/plugin/lm-tool-ext.spec.ts +152 -0
  167. package/src/plugin/lm-tool-ext.ts +197 -0
  168. package/src/plugin/plugin-context.ts +11 -11
  169. 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":";AAAA,gFAAgF;AAChF,oCAAoC;AACpC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,sEAAwE;AAGxE,iEASoC;AACpC,6DAA8D;AAE9D,qCAAwC;AACxC,6CAA6I;AAE7I,MAAa,yBAAyB;IAUlC,YAA+B,GAAgB;QAAhB,QAAG,GAAH,GAAG,CAAa;QANvC,kBAAa,GAAG,CAAC,CAAC;QACT,UAAK,GAAG,IAAI,GAAG,EAA4C,CAAC;QAC5D,qBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC7C,sBAAiB,GAAG,IAAI,GAAG,EAAsD,CAAC;QAClF,2BAAsB,GAAG,IAAI,GAAG,EAAgC,CAAC;QAG9E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,mCAAkB,CAAC,aAAa,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAY,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,yBAAyB,CAAC,aAA2D;QACjF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;IAED,YAAY,CAAI,IAAY,EAAE,IAAgC,EAAE,QAAgB;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,mEAAmE,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,2DAA2D,CAAC,CAAC;YAC3F,OAAO,uBAAU,CAAC,IAAI,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAyB;YACnC,IAAI;YACJ,WAAW,EAAE,YAAY,EAAE,gBAAgB;YAC3C,WAAW,EAAE,YAAY,EAAE,WAAW;YACtC,IAAI,EAAE,YAAY,EAAE,IAAI;SAC3B,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,MAAM,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,uBAAU,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,OAAyD,EAAE,KAAyB;QAC/G,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,SAAS,IAAI,sBAAsB,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACpF,IAAI,IAAA,wCAAqB,EAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,oCAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;IAED,QAAQ;QACJ,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8C,CAAC;QACrE,oDAAoD;QACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;gBACf,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,gBAAgB,IAAI,EAAE;gBACrC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;aACrB,CAAC,CAAC;QACP,CAAC;QACD,uEAAuE;QACvE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;wBACb,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,EAAE;wBACvC,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;qBAC5B,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,UAAkB,EAAE,KAAyB;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,EAAE,KAAK,EAAE,oBAAoB,MAAM,YAAY,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,iBAAiB,GAAG,KAAK,IAAI,gCAAiB,CAAC,IAAI,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC5B,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,EACzC,iBAAiB,CACpB,CAAC;YACF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC3B,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,IAAa;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,IAAA,qCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QACrD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3D,CAAC;IAEO,UAAU,CAAC,IAAa;QAC5B,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;eAC9C,OAAO,IAAK,IAAe,IAAI,OAAQ,IAA2B,CAAC,KAAK,KAAK,QAAQ;eACrF,CAAC,CAAC,MAAM,IAAK,IAAe,CAAC,IAAI,CAAC,CAAC,UAAU,IAAK,IAAe,CAAC,CAAC;IAC9E,CAAC;IAEO,UAAU,CAAC,IAAa;QAC5B,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;eAC9C,MAAM,IAAK,IAAe,IAAI,UAAU,IAAK,IAAe;eAC5D,OAAQ,IAA8B,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACxE,CAAC;IAEO,eAAe,CAAC,IAAa;QACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;eAC9C,OAAO,IAAK,IAAe,IAAI,OAAQ,IAA2B,CAAC,KAAK,KAAK,QAAQ;eACrF,CAAC,CAAC,MAAM,IAAK,IAAe,CAAC,IAAI,CAAC,CAAC,UAAU,IAAK,IAAe,CAAC,CAAC;IAC9E,CAAC;IAEO,mBAAmB,CAAC,IAAuB;QAC/C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,MAAM;gBACP,OAAO,IAAI,kCAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,KAAK,MAAM;gBACP,OAAO,IAAI,kCAAqB,CAAC,IAAA,qCAAkB,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrF,KAAK,YAAY;gBACb,OAAO,IAAI,uCAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,KAAK,SAAS;gBACV,OAAO,IAAI,kCAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;CACJ;AAjKD,8DAiKC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lm-tool-ext.spec.d.ts.map
@@ -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;AAazD,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,CAmyClB;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"}
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 types_impl_1.Disposable.NULL;
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 Promise.resolve({ content: [] });
1047
+ return lmToolExt.invokeTool(name, options, token);
1049
1048
  },
1050
- /** @stubbed LanguageModelTool */
1051
1049
  registerTool(name, tool) {
1052
- return types_impl_1.Disposable.NULL;
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
  },