@opentiny/next-sdk 0.3.1 → 0.3.3-alpha.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.
- package/WebMcp.ts +6 -0
- package/WebMcpClient.ts +16 -21
- package/agent/type.ts +93 -69
- package/core.ts +1 -0
- package/dist/SimulatorMask-BHVXyogh-BFEGpD5S.js +1048 -0
- package/dist/SimulatorMask-BHVXyogh-CCYbrb84.js +801 -0
- package/dist/WebMcp.d.ts +3 -0
- package/dist/WebMcpClient.d.ts +7 -13
- package/dist/agent/type.d.ts +10 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.js +16 -15
- package/dist/index.d.ts +3 -2
- package/dist/index.es.dev.js +8384 -2700
- package/dist/index.es.js +21608 -16893
- package/dist/index.js +4033 -1850
- package/dist/index.umd.dev.js +9739 -3110
- package/dist/index.umd.js +500 -66
- package/dist/initialize-builtin-WebMCP-HgObT902.js +6279 -0
- package/dist/mcpsdk@1.25.3.dev.js +253 -94
- package/dist/mcpsdk@1.25.3.es.dev.js +253 -94
- package/dist/mcpsdk@1.25.3.es.js +5689 -5531
- package/dist/mcpsdk@1.25.3.js +32 -27
- package/dist/page-tools/a11y-tree.d.ts +103 -0
- package/dist/page-tools/bridge.d.ts +0 -6
- package/dist/page-tools/initialize-builtin-WebMCP.d.ts +1 -0
- package/dist/page-tools/page-agent-tool.d.ts +9 -0
- package/dist/page-tools/page-state-cache.d.ts +36 -0
- package/dist/skills/index.d.ts +7 -12
- package/dist/webagent.dev.js +3772 -1919
- package/dist/webagent.es.dev.js +3528 -1571
- package/dist/webagent.es.js +16380 -14585
- package/dist/webagent.js +74 -66
- package/dist/webmcp-full.dev.js +7670 -747
- package/dist/webmcp-full.es.dev.js +6482 -608
- package/dist/webmcp-full.es.js +12180 -7618
- package/dist/webmcp-full.js +631 -29
- package/dist/webmcp.dev.js +8047 -53
- package/dist/webmcp.es.dev.js +6977 -31
- package/dist/webmcp.es.js +6187 -860
- package/dist/webmcp.js +602 -1
- package/index.ts +2 -15
- package/package.json +11 -4
- package/page-tools/a11y-tree.ts +532 -0
- package/page-tools/bridge.ts +48 -14
- package/page-tools/initialize-builtin-WebMCP.ts +20 -0
- package/page-tools/page-agent-prompt.md +123 -0
- package/page-tools/page-agent-tool.ts +223 -0
- package/page-tools/page-state-cache.ts +78 -0
- package/remoter/createRemoter.ts +2 -1
- package/remoter/svgs/logo.svg +45 -0
- package/skills/index.ts +50 -31
- package/utils/builtinProxy.ts +42 -20
- package/vite-env.d.ts +5 -0
- package/dist/AgentModelProvider-BnMj6YSC.js +0 -4182
package/WebMcp.ts
CHANGED
|
@@ -18,3 +18,9 @@ export type * from '@modelcontextprotocol/sdk/client/streamableHttp.js'
|
|
|
18
18
|
export type * from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
19
19
|
|
|
20
20
|
export * from './transport/ExtensionPageServerTransport'
|
|
21
|
+
|
|
22
|
+
// page-tools:供浏览器插件通过 scripting.executeScript 注入到第三方页面后初始化 WebMCP
|
|
23
|
+
export { initializeBuiltinWebMCP } from './page-tools/initialize-builtin-WebMCP'
|
|
24
|
+
export { setupModelContextBridge } from './page-tools/bridge'
|
|
25
|
+
export { registerPageAgentTool } from './page-tools/page-agent-tool'
|
|
26
|
+
|
package/WebMcpClient.ts
CHANGED
|
@@ -113,6 +113,7 @@ export class WebMcpClient {
|
|
|
113
113
|
* Connects the client to a transport via the specified option.
|
|
114
114
|
*/
|
|
115
115
|
async connect(options: Transport | ClientConnectOptions): Promise<{ transport: Transport; sessionId: string }> {
|
|
116
|
+
// 1. 直连一个Transport时
|
|
116
117
|
if (typeof (options as Transport)['start'] === 'function') {
|
|
117
118
|
this.transport = options as Transport
|
|
118
119
|
this.transport.onclose = undefined
|
|
@@ -124,34 +125,28 @@ export class WebMcpClient {
|
|
|
124
125
|
|
|
125
126
|
const { url, token, sessionId, type, agent, builtin, onError } = options as ClientConnectOptions
|
|
126
127
|
|
|
127
|
-
if (agent
|
|
128
|
+
if (agent) {
|
|
128
129
|
const proxyOptions: ProxyOptions = { client: this.client, url, token, sessionId }
|
|
129
130
|
|
|
130
|
-
|
|
131
|
+
const response: { transport: Transport; sessionId: string } =
|
|
132
|
+
type === 'sse'
|
|
133
|
+
? await createSseProxy(proxyOptions)
|
|
134
|
+
: type === 'socket'
|
|
135
|
+
? await createSocketProxy(proxyOptions)
|
|
136
|
+
: await createStreamProxy(proxyOptions)
|
|
131
137
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
? await createSseProxy(proxyOptions)
|
|
136
|
-
: type === 'socket'
|
|
137
|
-
? await createSocketProxy(proxyOptions)
|
|
138
|
-
: await createStreamProxy(proxyOptions)
|
|
139
|
-
|
|
140
|
-
transport.onerror = async (error: Error) => {
|
|
141
|
-
onError?.(error)
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (builtin === true) {
|
|
145
|
-
setupBuiltinProxy(transport)
|
|
146
|
-
}
|
|
138
|
+
response.transport.onerror = async (error: Error) => {
|
|
139
|
+
onError?.(error)
|
|
140
|
+
}
|
|
147
141
|
|
|
148
|
-
|
|
142
|
+
if (builtin) {
|
|
143
|
+
setupBuiltinProxy(response.transport)
|
|
149
144
|
}
|
|
150
145
|
|
|
151
|
-
|
|
152
|
-
return response as unknown as { transport: Transport; sessionId: string }
|
|
146
|
+
return response
|
|
153
147
|
}
|
|
154
148
|
|
|
149
|
+
// 3. 非代理,通过 URL 连接时
|
|
155
150
|
const endpoint = new URL(url)
|
|
156
151
|
let transport: Transport | undefined
|
|
157
152
|
|
|
@@ -172,7 +167,7 @@ export class WebMcpClient {
|
|
|
172
167
|
await this.client.connect(transport)
|
|
173
168
|
}
|
|
174
169
|
|
|
175
|
-
if (typeof transport === 'undefined') {
|
|
170
|
+
if (type === 'stream' || typeof transport === 'undefined') {
|
|
176
171
|
const opts = streamOptions(token, sessionId) as StreamableHTTPClientTransportOptions
|
|
177
172
|
transport = new StreamableHTTPClientTransport(endpoint, opts)
|
|
178
173
|
await this.client.connect(transport)
|
package/agent/type.ts
CHANGED
|
@@ -1,70 +1,94 @@
|
|
|
1
|
-
import type { ProviderV2 } from '@ai-sdk/provider'
|
|
2
|
-
import type { MCPClientConfig } from '@ai-sdk/mcp'
|
|
3
|
-
|
|
4
|
-
// 从 MCPClientConfig 中提取 transport 类型
|
|
5
|
-
export type MCPTransport = MCPClientConfig['transport']
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* 浏览器内置 WebMCP 测试 API 接口 (如 navigator.modelContextTesting)
|
|
9
|
-
*/
|
|
10
|
-
export interface BuiltinMcpClient {
|
|
11
|
-
listTools?: () => Promise<any[]>
|
|
12
|
-
getTools?: () => Promise<any[]>
|
|
13
|
-
executeTool: (name: string, input: string) => Promise<any>
|
|
14
|
-
registerTool?: (config: { name: string; execute: (input: any) => Promise<any> | any; [key: string]: any }) => void
|
|
15
|
-
unregisterTool?: (name: string) => void
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
type ProviderFactory = 'openai' | 'deepseek' | ((options: any) => ProviderV2)
|
|
19
|
-
|
|
20
|
-
type LlmFactoryConfig = {
|
|
21
|
-
/** API密钥 */
|
|
22
|
-
apiKey: string
|
|
23
|
-
/** API基础URL */
|
|
24
|
-
baseURL: string
|
|
25
|
-
/** 内置或自定义 Provider 工厂函数 */
|
|
26
|
-
providerType: ProviderFactory
|
|
27
|
-
/** 互斥:当使用 providerType 分支时不允许传入 llm */
|
|
28
|
-
llm?: never
|
|
29
|
-
/** 是否使用 ReAct 模式(通过提示词而非 function calling 进行工具调用),默认为 false */
|
|
30
|
-
useReActMode?: boolean
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
type LlmInstanceConfig = {
|
|
34
|
-
/** 自定义 Provider 实例,优先级最高 */
|
|
35
|
-
llm: ProviderV2
|
|
36
|
-
/** 互斥:当传入 llm 实例时不需要 apiKey/baseURL/providerType */
|
|
37
|
-
apiKey?: never
|
|
38
|
-
baseURL?: never
|
|
39
|
-
providerType?: never
|
|
40
|
-
/** 是否使用 ReAct 模式(通过提示词而非 function calling 进行工具调用),默认为 false */
|
|
41
|
-
useReActMode?: boolean
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/** 代理模型提供器的大语言配置对象, 通过 XOR 表达二选一 */
|
|
45
|
-
export type IAgentModelProviderLlmConfig = LlmFactoryConfig | LlmInstanceConfig
|
|
46
|
-
|
|
47
|
-
/** Mcp Server的配置对象 */
|
|
48
|
-
export type McpServerConfig =
|
|
49
|
-
| {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
1
|
+
import type { ProviderV2 } from '@ai-sdk/provider'
|
|
2
|
+
import type { MCPClientConfig } from '@ai-sdk/mcp'
|
|
3
|
+
|
|
4
|
+
// 从 MCPClientConfig 中提取 transport 类型
|
|
5
|
+
export type MCPTransport = MCPClientConfig['transport']
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 浏览器内置 WebMCP 测试 API 接口 (如 navigator.modelContextTesting)
|
|
9
|
+
*/
|
|
10
|
+
export interface BuiltinMcpClient {
|
|
11
|
+
listTools?: () => Promise<any[]>
|
|
12
|
+
getTools?: () => Promise<any[]>
|
|
13
|
+
executeTool: (name: string, input: string) => Promise<any>
|
|
14
|
+
registerTool?: (config: { name: string; execute: (input: any) => Promise<any> | any; [key: string]: any }) => void
|
|
15
|
+
unregisterTool?: (name: string) => void
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
type ProviderFactory = 'openai' | 'deepseek' | ((options: any) => ProviderV2)
|
|
19
|
+
|
|
20
|
+
type LlmFactoryConfig = {
|
|
21
|
+
/** API密钥 */
|
|
22
|
+
apiKey: string
|
|
23
|
+
/** API基础URL */
|
|
24
|
+
baseURL: string
|
|
25
|
+
/** 内置或自定义 Provider 工厂函数 */
|
|
26
|
+
providerType: ProviderFactory
|
|
27
|
+
/** 互斥:当使用 providerType 分支时不允许传入 llm */
|
|
28
|
+
llm?: never
|
|
29
|
+
/** 是否使用 ReAct 模式(通过提示词而非 function calling 进行工具调用),默认为 false */
|
|
30
|
+
useReActMode?: boolean
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type LlmInstanceConfig = {
|
|
34
|
+
/** 自定义 Provider 实例,优先级最高 */
|
|
35
|
+
llm: ProviderV2
|
|
36
|
+
/** 互斥:当传入 llm 实例时不需要 apiKey/baseURL/providerType */
|
|
37
|
+
apiKey?: never
|
|
38
|
+
baseURL?: never
|
|
39
|
+
providerType?: never
|
|
40
|
+
/** 是否使用 ReAct 模式(通过提示词而非 function calling 进行工具调用),默认为 false */
|
|
41
|
+
useReActMode?: boolean
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** 代理模型提供器的大语言配置对象, 通过 XOR 表达二选一 */
|
|
45
|
+
export type IAgentModelProviderLlmConfig = LlmFactoryConfig | LlmInstanceConfig
|
|
46
|
+
|
|
47
|
+
/** Mcp Server的配置对象 */
|
|
48
|
+
export type McpServerConfig =
|
|
49
|
+
| {
|
|
50
|
+
type: 'streamableHttp'
|
|
51
|
+
url: string
|
|
52
|
+
useAISdkClient?: boolean
|
|
53
|
+
headers?: Record<string, string>
|
|
54
|
+
name?: string
|
|
55
|
+
description?: string
|
|
56
|
+
}
|
|
57
|
+
| {
|
|
58
|
+
type: 'sse'
|
|
59
|
+
url: string
|
|
60
|
+
useAISdkClient?: boolean
|
|
61
|
+
headers?: Record<string, string>
|
|
62
|
+
name?: string
|
|
63
|
+
description?: string
|
|
64
|
+
}
|
|
65
|
+
| {
|
|
66
|
+
type: 'extension'
|
|
67
|
+
url: string
|
|
68
|
+
sessionId: string
|
|
69
|
+
useAISdkClient?: boolean
|
|
70
|
+
headers?: Record<string, string>
|
|
71
|
+
name?: string
|
|
72
|
+
description?: string
|
|
73
|
+
}
|
|
74
|
+
| { type: 'local'; transport: MCPTransport; useAISdkClient?: boolean; name?: string; description?: string }
|
|
75
|
+
| {
|
|
76
|
+
/**
|
|
77
|
+
* 浏览器内置 WebMCP 类型。
|
|
78
|
+
* 将 `navigator.modelContextTesting` 作为 MCP 工具数据源,
|
|
79
|
+
* 通过 `getBuiltinMcpTools` 适配为 ai-sdk 可调用的 ToolSet。
|
|
80
|
+
*/
|
|
81
|
+
type: 'builtin'
|
|
82
|
+
/** 传入 `navigator.modelContextTesting` 对象 */
|
|
83
|
+
client: BuiltinMcpClient
|
|
84
|
+
name?: string
|
|
85
|
+
description?: string
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** */
|
|
89
|
+
export interface IAgentModelProviderOption {
|
|
90
|
+
/** 代理模型提供器的大语言配置对象 */
|
|
91
|
+
llmConfig: IAgentModelProviderLlmConfig
|
|
92
|
+
/** Mcp Server的配置对象的集合,键为服务器名称,值为配置对象 */
|
|
93
|
+
mcpServers?: Record<string, McpServerConfig>
|
|
70
94
|
}
|
package/core.ts
CHANGED
|
@@ -26,3 +26,4 @@ export * from './transport/ExtensionClientTransport'
|
|
|
26
26
|
export { AgentModelProvider } from './agent/AgentModelProvider'
|
|
27
27
|
export { getAISDKTools } from './agent/utils/getAISDKTools'
|
|
28
28
|
export type * from './agent/type'
|
|
29
|
+
export { initializeBuiltinWebMCP } from './page-tools/initialize-builtin-WebMCP'
|