@modelprofile.com/flexharness 9.2.0 → 9.3.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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_document/index.d.ts +5 -7
- package/dist_ts_document/index.js +1 -1
- package/dist_ts_document/plugins.d.ts +2 -0
- package/dist_ts_mcp/index.d.ts +15 -20
- package/dist_ts_mcp/index.js +7 -10
- package/dist_ts_mcp/plugins.d.ts +12 -0
- package/dist_ts_mcp/plugins.js +9 -0
- package/dist_ts_mcp/requestcontext.d.ts +6 -7
- package/dist_ts_mcp/requestcontext.js +1 -1
- package/dist_ts_media/index.d.ts +2 -2
- package/dist_ts_media/index.js +1 -1
- package/dist_ts_media/plugins.d.ts +1 -0
- package/dist_ts_tools/index.d.ts +5 -5
- package/dist_ts_tools/index.js +3 -3
- package/dist_ts_tools/plugins.d.ts +3 -0
- package/dist_ts_tools/plugins.js +4 -1
- package/dist_ts_tools/tool.context.d.ts +3 -3
- package/dist_ts_tools/tool.context.js +1 -1
- package/dist_ts_tools_node/plugins.d.ts +1 -1
- package/dist_ts_tools_node/tool.context.d.ts +1 -2
- package/dist_ts_tools_node/tool.context.js +1 -1
- package/dist_ts_tools_node/tool.persistence.d.ts +1 -1
- package/package.json +4 -4
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_document/index.ts +6 -8
- package/ts_document/plugins.ts +2 -0
- package/ts_mcp/index.ts +26 -39
- package/ts_mcp/plugins.ts +17 -0
- package/ts_mcp/requestcontext.ts +9 -10
- package/ts_media/index.ts +1 -2
- package/ts_media/plugins.ts +1 -0
- package/ts_tools/index.ts +5 -5
- package/ts_tools/plugins.ts +45 -0
- package/ts_tools/tool.context.ts +29 -3
- package/ts_tools_node/plugins.ts +28 -1
- package/ts_tools_node/tool.context.ts +1 -2
- package/ts_tools_node/tool.persistence.ts +1 -1
|
@@ -834,4 +834,4 @@ const createLocalToolJobContext = (options) => {
|
|
|
834
834
|
},
|
|
835
835
|
};
|
|
836
836
|
};
|
|
837
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdG9vbHNfbm9kZS90b29sLmNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUE4QnhDLE1BQU0sb0NBQW9DLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6RCxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLFVBQTZDLEVBQUUsRUFBeUIsRUFBRTtJQUN4SCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDckYsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsS0FBSyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FDRixDQUFDLENBQUMsQ0FBQztJQUNKLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixJQUFJLG9DQUFvQyxDQUFDO0lBQ2hHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksbUJBQW1CLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0Us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
|
|
837
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbC5jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfdG9vbHNfbm9kZS90b29sLmNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUE2QnhDLE1BQU0sb0NBQW9DLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6RCxNQUFNLHlCQUF5QixHQUFHLElBQUksQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyxDQUFDLFVBQTZDLEVBQUUsRUFBeUIsRUFBRTtJQUN4SCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2hDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDckYsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsS0FBSyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ2pGLENBQUM7WUFDRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FDRixDQUFDLENBQUMsQ0FBQztJQUNKLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixJQUFJLG9DQUFvQyxDQUFDO0lBQ2hHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksbUJBQW1CLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0Us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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IToolJobSnapshot, IToolJobStore, IToolJobState } from '
|
|
1
|
+
import type { IToolJobSnapshot, IToolJobStore, IToolJobState } from './plugins.js';
|
|
2
2
|
export interface IFileToolJobStoreOptions {
|
|
3
3
|
filePath: string;
|
|
4
4
|
lockTimeoutMs?: number;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"author": "Task Venture Capital GmbH",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"name": "@modelprofile.com/flexharness",
|
|
5
|
-
"version": "9.
|
|
5
|
+
"version": "9.3.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"description": "Managed agent sessions with tools, MCP, chat, OCR, documents and browser control through focused subpath imports.",
|
|
8
8
|
"main": "./dist_ts/index.js",
|
|
@@ -62,10 +62,10 @@
|
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@modelprofile.com/flexharness-agent": "9.
|
|
66
|
-
"@modelprofile.com/flexharness-models": "9.
|
|
65
|
+
"@modelprofile.com/flexharness-agent": "9.3.0",
|
|
66
|
+
"@modelprofile.com/flexharness-models": "9.3.0",
|
|
67
67
|
"@push.rocks/smartrequest": "^5.0.1",
|
|
68
|
-
"ai": "^7.0.
|
|
68
|
+
"ai": "^7.0.107",
|
|
69
69
|
"zod": "^4.4.1"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
package/ts/00_commitinfo_data.ts
CHANGED
package/ts_document/index.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
import type { ModelMessage } from 'ai';
|
|
3
|
-
import type { TSmartAiLanguageModel, TSmartAiProviderOptions } from '@modelprofile.com/flexharness-models';
|
|
4
2
|
|
|
5
3
|
type TSmartPdf = InstanceType<typeof plugins.smartpdf.SmartPdf>;
|
|
6
4
|
|
|
@@ -24,7 +22,7 @@ function ensureSmartpdf(): Promise<TSmartPdf> {
|
|
|
24
22
|
/** Options every document request accepts in addition to its model and messages. */
|
|
25
23
|
export interface IDocumentRequestOptions {
|
|
26
24
|
/** Passed to the model call unchanged, for example `{ openai: { store: false } }`. */
|
|
27
|
-
providerOptions?: TSmartAiProviderOptions;
|
|
25
|
+
providerOptions?: plugins.TSmartAiProviderOptions;
|
|
28
26
|
/**
|
|
29
27
|
* Checked before each document is rendered and before the model call, and passed to both the
|
|
30
28
|
* render and the model call: an abort stops a document that is rendering. The request rejects
|
|
@@ -51,18 +49,18 @@ export interface IDocumentRequestOptions {
|
|
|
51
49
|
}
|
|
52
50
|
|
|
53
51
|
export interface IDocumentOptions extends IDocumentRequestOptions {
|
|
54
|
-
model: TSmartAiLanguageModel;
|
|
52
|
+
model: plugins.TSmartAiLanguageModel;
|
|
55
53
|
systemMessage?: string;
|
|
56
54
|
userMessage: string;
|
|
57
55
|
pdfDocuments: Uint8Array[];
|
|
58
|
-
messageHistory?: ModelMessage[];
|
|
56
|
+
messageHistory?: plugins.ModelMessage[];
|
|
59
57
|
}
|
|
60
58
|
|
|
61
59
|
export interface IPdfTextExtractionOptions extends IDocumentRequestOptions {
|
|
62
|
-
model: TSmartAiLanguageModel;
|
|
60
|
+
model: plugins.TSmartAiLanguageModel;
|
|
63
61
|
systemMessage?: string;
|
|
64
62
|
userMessage?: string;
|
|
65
|
-
messageHistory?: ModelMessage[];
|
|
63
|
+
messageHistory?: plugins.ModelMessage[];
|
|
66
64
|
}
|
|
67
65
|
|
|
68
66
|
/** Token usage of a document request, summed over its model steps; usage a provider leaves out counts as zero. */
|
|
@@ -215,7 +213,7 @@ export async function analyzeDocumentsWithUsage(options: IDocumentOptions): Prom
|
|
|
215
213
|
},
|
|
216
214
|
})
|
|
217
215
|
: options.model;
|
|
218
|
-
const messages: ModelMessage[] = [
|
|
216
|
+
const messages: plugins.ModelMessage[] = [
|
|
219
217
|
...(options.messageHistory ?? []),
|
|
220
218
|
{
|
|
221
219
|
role: 'user',
|
package/ts_document/plugins.ts
CHANGED
|
@@ -2,4 +2,6 @@ import { generateText, wrapLanguageModel } from 'ai';
|
|
|
2
2
|
import * as smartpdf from '@push.rocks/smartpdf';
|
|
3
3
|
import { AgentModelCallUsageRecorder } from '@modelprofile.com/flexharness-agent';
|
|
4
4
|
export { generateText, wrapLanguageModel, smartpdf, AgentModelCallUsageRecorder };
|
|
5
|
+
export type { ModelMessage } from 'ai';
|
|
6
|
+
export type { TSmartAiLanguageModel, TSmartAiProviderOptions } from '@modelprofile.com/flexharness-models';
|
|
5
7
|
export type { TAgentModelCallUsageReporter } from '@modelprofile.com/flexharness-agent';
|
package/ts_mcp/index.ts
CHANGED
|
@@ -1,17 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
StdioClientTransport,
|
|
4
|
-
type StdioServerParameters,
|
|
5
|
-
} from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
6
|
-
import {
|
|
7
|
-
StreamableHTTPClientTransport,
|
|
8
|
-
type StreamableHTTPClientTransportOptions,
|
|
9
|
-
} from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
10
|
-
import type { RequestOptions } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
11
|
-
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
12
|
-
import { jsonSchema, tool } from 'ai';
|
|
13
|
-
import type { ToolSet } from 'ai';
|
|
14
|
-
import type { ToolExecutionOptions } from 'ai';
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
15
2
|
import {
|
|
16
3
|
connectMcpClientWithRequestOptions,
|
|
17
4
|
withMcpRequestOptions,
|
|
@@ -19,16 +6,16 @@ import {
|
|
|
19
6
|
|
|
20
7
|
const DEFAULT_MAX_LIST_TOOLS_PAGES = 100;
|
|
21
8
|
|
|
22
|
-
export type TMcpListToolsResult = Awaited<ReturnType<Client['listTools']>>;
|
|
9
|
+
export type TMcpListToolsResult = Awaited<ReturnType<plugins.Client['listTools']>>;
|
|
23
10
|
export type TMcpToolMetadata = TMcpListToolsResult['tools'][number];
|
|
24
|
-
export type TMcpCallToolResult = Awaited<ReturnType<Client['callTool']>>;
|
|
11
|
+
export type TMcpCallToolResult = Awaited<ReturnType<plugins.Client['callTool']>>;
|
|
25
12
|
|
|
26
13
|
export interface IMcpClientLike {
|
|
27
|
-
listTools(params?: { cursor?: string }, options?: RequestOptions): Promise<TMcpListToolsResult>;
|
|
14
|
+
listTools(params?: { cursor?: string }, options?: plugins.RequestOptions): Promise<TMcpListToolsResult>;
|
|
28
15
|
callTool(
|
|
29
16
|
params: { name: string; arguments?: Record<string, unknown> },
|
|
30
17
|
resultSchema?: unknown,
|
|
31
|
-
options?: RequestOptions,
|
|
18
|
+
options?: plugins.RequestOptions,
|
|
32
19
|
): Promise<TMcpCallToolResult>;
|
|
33
20
|
close?(): Promise<void>;
|
|
34
21
|
}
|
|
@@ -36,23 +23,23 @@ export interface IMcpClientLike {
|
|
|
36
23
|
export interface IMcpServerClientOptions {
|
|
37
24
|
clientName?: string;
|
|
38
25
|
clientVersion?: string;
|
|
39
|
-
clientOptions?: ClientOptions;
|
|
40
|
-
requestOptions?: RequestOptions;
|
|
26
|
+
clientOptions?: plugins.ClientOptions;
|
|
27
|
+
requestOptions?: plugins.RequestOptions;
|
|
41
28
|
}
|
|
42
29
|
|
|
43
|
-
export interface IMcpStdioServerConfig extends StdioServerParameters, IMcpServerClientOptions {
|
|
30
|
+
export interface IMcpStdioServerConfig extends plugins.StdioServerParameters, IMcpServerClientOptions {
|
|
44
31
|
type: 'stdio';
|
|
45
32
|
}
|
|
46
33
|
|
|
47
34
|
export interface IMcpStreamableHttpServerConfig extends IMcpServerClientOptions {
|
|
48
35
|
type: 'streamableHttp' | 'http';
|
|
49
36
|
url: string | URL;
|
|
50
|
-
transportOptions?: StreamableHTTPClientTransportOptions;
|
|
37
|
+
transportOptions?: plugins.StreamableHTTPClientTransportOptions;
|
|
51
38
|
}
|
|
52
39
|
|
|
53
40
|
export interface IMcpTransportServerConfig extends IMcpServerClientOptions {
|
|
54
41
|
type: 'transport';
|
|
55
|
-
transport: Transport;
|
|
42
|
+
transport: plugins.Transport;
|
|
56
43
|
}
|
|
57
44
|
|
|
58
45
|
export interface IMcpClientServerConfig {
|
|
@@ -83,10 +70,10 @@ export interface ICreateMcpToolsOptions {
|
|
|
83
70
|
servers: Record<string, TMcpServerConfig>;
|
|
84
71
|
clientName?: string;
|
|
85
72
|
clientVersion?: string;
|
|
86
|
-
clientOptions?: ClientOptions;
|
|
87
|
-
requestOptions?: RequestOptions;
|
|
88
|
-
listToolsRequestOptions?: RequestOptions;
|
|
89
|
-
callToolRequestOptions?: RequestOptions;
|
|
73
|
+
clientOptions?: plugins.ClientOptions;
|
|
74
|
+
requestOptions?: plugins.RequestOptions;
|
|
75
|
+
listToolsRequestOptions?: plugins.RequestOptions;
|
|
76
|
+
callToolRequestOptions?: plugins.RequestOptions;
|
|
90
77
|
/** Maximum MCP listTools pages per server. Default: 100. */
|
|
91
78
|
maxListToolsPages?: number;
|
|
92
79
|
prefixToolNames?: boolean;
|
|
@@ -107,7 +94,7 @@ export interface IMcpToolNameMapping {
|
|
|
107
94
|
}
|
|
108
95
|
|
|
109
96
|
export interface ICreateMcpToolsResult {
|
|
110
|
-
tools: ToolSet;
|
|
97
|
+
tools: plugins.ToolSet;
|
|
111
98
|
servers: IMcpConnectedServer[];
|
|
112
99
|
toolNameMap: Record<string, IMcpToolNameMapping>;
|
|
113
100
|
close: () => Promise<void>;
|
|
@@ -135,7 +122,7 @@ export const createMcpTools = async (
|
|
|
135
122
|
);
|
|
136
123
|
}
|
|
137
124
|
|
|
138
|
-
const exposedTools: ToolSet = {};
|
|
125
|
+
const exposedTools: plugins.ToolSet = {};
|
|
139
126
|
const toolNameMap: Record<string, IMcpToolNameMapping> = {};
|
|
140
127
|
const usedToolNames = new Set<string>(['invalid']);
|
|
141
128
|
const formatResult = options.formatResult ?? formatMcpToolResult;
|
|
@@ -151,10 +138,10 @@ export const createMcpTools = async (
|
|
|
151
138
|
toolName: mcpTool.name,
|
|
152
139
|
};
|
|
153
140
|
|
|
154
|
-
exposedTools[exposedToolName] = tool({
|
|
141
|
+
exposedTools[exposedToolName] = plugins.tool({
|
|
155
142
|
description: mcpTool.description ?? `MCP tool ${mcpTool.name} from ${server.name}`,
|
|
156
|
-
inputSchema: jsonSchema(mcpTool.inputSchema as never),
|
|
157
|
-
execute: async (input: unknown, invocationOptions?: ToolExecutionOptions<unknown>) => {
|
|
143
|
+
inputSchema: plugins.jsonSchema(mcpTool.inputSchema as never),
|
|
144
|
+
execute: async (input: unknown, invocationOptions?: plugins.ToolExecutionOptions<unknown>) => {
|
|
158
145
|
const normalizedArguments = normalizeMcpArguments(input);
|
|
159
146
|
await options.authorizeToolCall?.({
|
|
160
147
|
serverName: server.name,
|
|
@@ -165,7 +152,7 @@ export const createMcpTools = async (
|
|
|
165
152
|
toolCallId: invocationOptions?.toolCallId ?? '',
|
|
166
153
|
abortSignal: invocationOptions?.abortSignal,
|
|
167
154
|
});
|
|
168
|
-
const configuredCallToolOptions: RequestOptions = {
|
|
155
|
+
const configuredCallToolOptions: plugins.RequestOptions = {
|
|
169
156
|
...options.requestOptions,
|
|
170
157
|
...options.callToolRequestOptions,
|
|
171
158
|
};
|
|
@@ -254,7 +241,7 @@ const connectMcpServer = async (
|
|
|
254
241
|
return config.client;
|
|
255
242
|
}
|
|
256
243
|
|
|
257
|
-
const client = new Client(
|
|
244
|
+
const client = new plugins.Client(
|
|
258
245
|
{
|
|
259
246
|
name: config.clientName ?? options.clientName ?? 'smartagent-mcp',
|
|
260
247
|
version: config.clientVersion ?? options.clientVersion ?? '1.0.0',
|
|
@@ -294,14 +281,14 @@ const connectMcpServer = async (
|
|
|
294
281
|
|
|
295
282
|
const createMcpTransport = (
|
|
296
283
|
config: Exclude<TMcpServerConfig, IMcpClientServerConfig>,
|
|
297
|
-
): Transport => {
|
|
284
|
+
): plugins.Transport => {
|
|
298
285
|
if (config.type === 'stdio') {
|
|
299
286
|
const { type, clientName, clientVersion, clientOptions, requestOptions, ...serverParameters } = config;
|
|
300
|
-
return new StdioClientTransport(serverParameters);
|
|
287
|
+
return new plugins.StdioClientTransport(serverParameters);
|
|
301
288
|
}
|
|
302
289
|
|
|
303
290
|
if (config.type === 'streamableHttp' || config.type === 'http') {
|
|
304
|
-
return new StreamableHTTPClientTransport(new URL(config.url), config.transportOptions);
|
|
291
|
+
return new plugins.StreamableHTTPClientTransport(new URL(config.url), config.transportOptions);
|
|
305
292
|
}
|
|
306
293
|
|
|
307
294
|
if (config.type === 'transport') {
|
|
@@ -311,13 +298,13 @@ const createMcpTransport = (
|
|
|
311
298
|
throw new Error('Unsupported MCP server transport.');
|
|
312
299
|
};
|
|
313
300
|
|
|
314
|
-
const getServerRequestOptions = (config: TMcpServerConfig): RequestOptions | undefined => {
|
|
301
|
+
const getServerRequestOptions = (config: TMcpServerConfig): plugins.RequestOptions | undefined => {
|
|
315
302
|
return config.type === 'client' ? undefined : config.requestOptions;
|
|
316
303
|
};
|
|
317
304
|
|
|
318
305
|
const listAllMcpTools = async (
|
|
319
306
|
client: IMcpClientLike,
|
|
320
|
-
requestOptions?: RequestOptions,
|
|
307
|
+
requestOptions?: plugins.RequestOptions,
|
|
321
308
|
maxPages = DEFAULT_MAX_LIST_TOOLS_PAGES,
|
|
322
309
|
): Promise<TMcpToolMetadata[]> => {
|
|
323
310
|
const tools: TMcpToolMetadata[] = [];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// @modelcontextprotocol/sdk
|
|
2
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
3
|
+
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
4
|
+
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
5
|
+
|
|
6
|
+
export { Client, StdioClientTransport, StreamableHTTPClientTransport };
|
|
7
|
+
export type { ClientOptions } from '@modelcontextprotocol/sdk/client/index.js';
|
|
8
|
+
export type { StdioServerParameters } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
9
|
+
export type { StreamableHTTPClientTransportOptions } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
10
|
+
export type { RequestOptions } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
11
|
+
export type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
12
|
+
|
|
13
|
+
// ai-sdk core
|
|
14
|
+
import { jsonSchema, tool } from 'ai';
|
|
15
|
+
|
|
16
|
+
export { jsonSchema, tool };
|
|
17
|
+
export type { ToolExecutionOptions, ToolSet } from 'ai';
|
package/ts_mcp/requestcontext.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
1
|
+
import type * as plugins from './plugins.js';
|
|
3
2
|
|
|
4
3
|
export interface IMcpRequestContext {
|
|
5
|
-
requestOptions?: RequestOptions;
|
|
4
|
+
requestOptions?: plugins.RequestOptions;
|
|
6
5
|
cleanup: () => void;
|
|
7
6
|
}
|
|
8
7
|
|
|
9
8
|
export const createMcpRequestContext = (
|
|
10
|
-
configuredOptions?: RequestOptions,
|
|
9
|
+
configuredOptions?: plugins.RequestOptions,
|
|
11
10
|
preferredAbortSignal?: AbortSignal,
|
|
12
11
|
): IMcpRequestContext => {
|
|
13
|
-
const requestOptions: RequestOptions = { ...configuredOptions };
|
|
12
|
+
const requestOptions: plugins.RequestOptions = { ...configuredOptions };
|
|
14
13
|
const sourceSignal = preferredAbortSignal ?? requestOptions.signal;
|
|
15
14
|
if (!sourceSignal) {
|
|
16
15
|
return {
|
|
@@ -43,9 +42,9 @@ export const createMcpRequestContext = (
|
|
|
43
42
|
};
|
|
44
43
|
|
|
45
44
|
export const withMcpRequestOptions = async <T>(
|
|
46
|
-
configuredOptions: RequestOptions | undefined,
|
|
45
|
+
configuredOptions: plugins.RequestOptions | undefined,
|
|
47
46
|
preferredAbortSignal: AbortSignal | undefined,
|
|
48
|
-
request: (requestOptions?: RequestOptions) => Promise<T>,
|
|
47
|
+
request: (requestOptions?: plugins.RequestOptions) => Promise<T>,
|
|
49
48
|
): Promise<T> => {
|
|
50
49
|
const context = createMcpRequestContext(configuredOptions, preferredAbortSignal);
|
|
51
50
|
try {
|
|
@@ -56,9 +55,9 @@ export const withMcpRequestOptions = async <T>(
|
|
|
56
55
|
};
|
|
57
56
|
|
|
58
57
|
export const connectMcpClientWithRequestOptions = async (
|
|
59
|
-
client: { connect: (transport: Transport, requestOptions?: RequestOptions) => Promise<void> },
|
|
60
|
-
transport: Transport,
|
|
61
|
-
configuredOptions?: RequestOptions,
|
|
58
|
+
client: { connect: (transport: plugins.Transport, requestOptions?: plugins.RequestOptions) => Promise<void> },
|
|
59
|
+
transport: plugins.Transport,
|
|
60
|
+
configuredOptions?: plugins.RequestOptions,
|
|
62
61
|
): Promise<void> => withMcpRequestOptions(
|
|
63
62
|
configuredOptions,
|
|
64
63
|
undefined,
|
package/ts_media/index.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as plugins from './plugins.js';
|
|
2
|
-
import type { TSmartAiLanguageModel } from '@modelprofile.com/flexharness-models';
|
|
3
2
|
|
|
4
3
|
export interface IVisionOptions {
|
|
5
|
-
model: TSmartAiLanguageModel;
|
|
4
|
+
model: plugins.TSmartAiLanguageModel;
|
|
6
5
|
image: Buffer | Uint8Array;
|
|
7
6
|
prompt: string;
|
|
8
7
|
mediaType?: 'image/jpeg' | 'image/png' | 'image/webp' | 'image/gif';
|
package/ts_media/plugins.ts
CHANGED
package/ts_tools/index.ts
CHANGED
|
@@ -2,18 +2,18 @@ export { createBrowserTools } from './tool.browser.js';
|
|
|
2
2
|
export {
|
|
3
3
|
acquireToolExecutionContext,
|
|
4
4
|
ToolExecutionAdapterCleanupError,
|
|
5
|
-
} from '
|
|
5
|
+
} from './plugins.js';
|
|
6
6
|
export type {
|
|
7
7
|
IToolExecutionAdapter,
|
|
8
8
|
IToolExecutionAdapterRequest,
|
|
9
9
|
IToolExecutionContextLease,
|
|
10
|
-
} from '
|
|
10
|
+
} from './plugins.js';
|
|
11
11
|
export type { ICreateBrowserToolsOptions } from './tool.browser.js';
|
|
12
12
|
export { createFilesystemTools } from './tool.filesystem.js';
|
|
13
13
|
export type { ICreateFilesystemToolsOptions } from './tool.filesystem.js';
|
|
14
14
|
export { createShellTools } from './tool.shell.js';
|
|
15
15
|
export type { ICreateShellToolsOptions } from './tool.shell.js';
|
|
16
|
-
export type { ToolSet } from '
|
|
16
|
+
export type { ToolSet } from './plugins.js';
|
|
17
17
|
export { formatShellResult, formatToolOutput } from './tool.context.js';
|
|
18
18
|
export type {
|
|
19
19
|
IBrowserToolInput,
|
|
@@ -41,8 +41,8 @@ export type {
|
|
|
41
41
|
TToolJobEvent,
|
|
42
42
|
TToolJobEventListener,
|
|
43
43
|
} from './tool.context.js';
|
|
44
|
-
export { InMemoryToolJobStore, ToolJobStoreConflictError } from '
|
|
45
|
-
export type { IToolJobSnapshot, IToolJobStore } from '
|
|
44
|
+
export { InMemoryToolJobStore, ToolJobStoreConflictError } from './plugins.js';
|
|
45
|
+
export type { IToolJobSnapshot, IToolJobStore } from './plugins.js';
|
|
46
46
|
export { httpTool } from './tool.http.js';
|
|
47
47
|
export { jsonTool } from './tool.json.js';
|
|
48
48
|
export { truncateOutput } from './plugins.js';
|
package/ts_tools/plugins.ts
CHANGED
|
@@ -5,3 +5,48 @@ import { truncateOutput } from './utils.truncation.js';
|
|
|
5
5
|
export { z, tool, smartrequest, truncateOutput };
|
|
6
6
|
export type { ToolExecutionOptions, ToolSet } from 'ai';
|
|
7
7
|
export type { ITruncateResult } from './utils.truncation.js';
|
|
8
|
+
|
|
9
|
+
// @modelprofile.com/flexharness-agent
|
|
10
|
+
import {
|
|
11
|
+
acquireToolExecutionContext,
|
|
12
|
+
InMemoryToolJobStore,
|
|
13
|
+
ToolExecutionAdapterCleanupError,
|
|
14
|
+
ToolJobStoreConflictError,
|
|
15
|
+
} from '@modelprofile.com/flexharness-agent';
|
|
16
|
+
export {
|
|
17
|
+
acquireToolExecutionContext,
|
|
18
|
+
InMemoryToolJobStore,
|
|
19
|
+
ToolExecutionAdapterCleanupError,
|
|
20
|
+
ToolJobStoreConflictError,
|
|
21
|
+
};
|
|
22
|
+
export type {
|
|
23
|
+
IBrowserToolInput,
|
|
24
|
+
IShellCommand,
|
|
25
|
+
IShellFinishedResult,
|
|
26
|
+
IShellStartedResult,
|
|
27
|
+
IToolBrowserContext,
|
|
28
|
+
IToolBrowserRunOptions,
|
|
29
|
+
IToolExecutionAdapter,
|
|
30
|
+
IToolExecutionAdapterRequest,
|
|
31
|
+
IToolExecutionContext,
|
|
32
|
+
IToolExecutionContextLease,
|
|
33
|
+
IToolFilesystemContext,
|
|
34
|
+
IToolFilesystemListOptions,
|
|
35
|
+
IToolFilesystemReadOptions,
|
|
36
|
+
IToolInvocationOptions,
|
|
37
|
+
IToolJobContext,
|
|
38
|
+
IToolJobEvent,
|
|
39
|
+
IToolJobHandle,
|
|
40
|
+
IToolJobOutputEvent,
|
|
41
|
+
IToolJobRequest,
|
|
42
|
+
IToolJobSnapshot,
|
|
43
|
+
IToolJobState,
|
|
44
|
+
IToolJobStore,
|
|
45
|
+
IToolPermissionRequest,
|
|
46
|
+
IToolRunOptions,
|
|
47
|
+
IToolShellContext,
|
|
48
|
+
IToolShellResult,
|
|
49
|
+
TBrowserToolAction,
|
|
50
|
+
TToolJobEvent,
|
|
51
|
+
TToolJobEventListener,
|
|
52
|
+
} from '@modelprofile.com/flexharness-agent';
|