@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.
Files changed (54) hide show
  1. package/WebMcp.ts +6 -0
  2. package/WebMcpClient.ts +16 -21
  3. package/agent/type.ts +93 -69
  4. package/core.ts +1 -0
  5. package/dist/SimulatorMask-BHVXyogh-BFEGpD5S.js +1048 -0
  6. package/dist/SimulatorMask-BHVXyogh-CCYbrb84.js +801 -0
  7. package/dist/WebMcp.d.ts +3 -0
  8. package/dist/WebMcpClient.d.ts +7 -13
  9. package/dist/agent/type.d.ts +10 -0
  10. package/dist/core.d.ts +1 -0
  11. package/dist/core.js +16 -15
  12. package/dist/index.d.ts +3 -2
  13. package/dist/index.es.dev.js +8384 -2700
  14. package/dist/index.es.js +21608 -16893
  15. package/dist/index.js +4033 -1850
  16. package/dist/index.umd.dev.js +9739 -3110
  17. package/dist/index.umd.js +500 -66
  18. package/dist/initialize-builtin-WebMCP-HgObT902.js +6279 -0
  19. package/dist/mcpsdk@1.25.3.dev.js +253 -94
  20. package/dist/mcpsdk@1.25.3.es.dev.js +253 -94
  21. package/dist/mcpsdk@1.25.3.es.js +5689 -5531
  22. package/dist/mcpsdk@1.25.3.js +32 -27
  23. package/dist/page-tools/a11y-tree.d.ts +103 -0
  24. package/dist/page-tools/bridge.d.ts +0 -6
  25. package/dist/page-tools/initialize-builtin-WebMCP.d.ts +1 -0
  26. package/dist/page-tools/page-agent-tool.d.ts +9 -0
  27. package/dist/page-tools/page-state-cache.d.ts +36 -0
  28. package/dist/skills/index.d.ts +7 -12
  29. package/dist/webagent.dev.js +3772 -1919
  30. package/dist/webagent.es.dev.js +3528 -1571
  31. package/dist/webagent.es.js +16380 -14585
  32. package/dist/webagent.js +74 -66
  33. package/dist/webmcp-full.dev.js +7670 -747
  34. package/dist/webmcp-full.es.dev.js +6482 -608
  35. package/dist/webmcp-full.es.js +12180 -7618
  36. package/dist/webmcp-full.js +631 -29
  37. package/dist/webmcp.dev.js +8047 -53
  38. package/dist/webmcp.es.dev.js +6977 -31
  39. package/dist/webmcp.es.js +6187 -860
  40. package/dist/webmcp.js +602 -1
  41. package/index.ts +2 -15
  42. package/package.json +11 -4
  43. package/page-tools/a11y-tree.ts +532 -0
  44. package/page-tools/bridge.ts +48 -14
  45. package/page-tools/initialize-builtin-WebMCP.ts +20 -0
  46. package/page-tools/page-agent-prompt.md +123 -0
  47. package/page-tools/page-agent-tool.ts +223 -0
  48. package/page-tools/page-state-cache.ts +78 -0
  49. package/remoter/createRemoter.ts +2 -1
  50. package/remoter/svgs/logo.svg +45 -0
  51. package/skills/index.ts +50 -31
  52. package/utils/builtinProxy.ts +42 -20
  53. package/vite-env.d.ts +5 -0
  54. 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 === true) {
128
+ if (agent) {
128
129
  const proxyOptions: ProxyOptions = { client: this.client, url, token, sessionId }
129
130
 
130
- let response
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
- const connectProxy = async () => {
133
- const { transport, sessionId } =
134
- type === 'sse'
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
- response = { transport, sessionId }
142
+ if (builtin) {
143
+ setupBuiltinProxy(response.transport)
149
144
  }
150
145
 
151
- await connectProxy()
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
- | { type: 'streamableHttp'; url: string; useAISdkClient?: boolean; headers?: Record<string, string> }
50
- | { type: 'sse'; url: string; useAISdkClient?: boolean; headers?: Record<string, string> }
51
- | { type: 'extension'; url: string; sessionId: string; useAISdkClient?: boolean; headers?: Record<string, string> }
52
- | { type: 'local'; transport: MCPTransport; useAISdkClient?: boolean }
53
- | {
54
- /**
55
- * 浏览器内置 WebMCP 类型。
56
- * 将 `navigator.modelContextTesting` 作为 MCP 工具数据源,
57
- * 通过 `getBuiltinMcpTools` 适配为 ai-sdk 可调用的 ToolSet。
58
- */
59
- type: 'builtin'
60
- /** 传入 `navigator.modelContextTesting` 对象 */
61
- client: BuiltinMcpClient
62
- }
63
-
64
- /** */
65
- export interface IAgentModelProviderOption {
66
- /** 代理模型提供器的大语言配置对象 */
67
- llmConfig: IAgentModelProviderLlmConfig
68
- /** Mcp Server的配置对象的集合,键为服务器名称,值为配置对象 */
69
- mcpServers?: Record<string, McpServerConfig>
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'