@opentiny/next-sdk 0.4.0 → 0.4.2
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/agent/AgentModelProvider.ts +78 -81
- package/agent/type.ts +6 -9
- package/agent/utils/getAISDKTools.ts +0 -1
- package/agent/utils/getBuiltinMcpTools.ts +7 -7
- package/core.ts +0 -3
- package/dist/SimulatorMask-BHVXyogh-CARX3Rff.js +361 -0
- package/dist/agent/type.d.ts +4 -12
- package/dist/agent/utils/getBuiltinMcpTools.d.ts +3 -3
- package/dist/core.d.ts +0 -1
- package/dist/core.js +16 -17
- package/dist/index-R_HIbfUX.js +6604 -0
- package/dist/index.d.ts +11 -3
- package/dist/index.js +76 -4969
- package/dist/{initialize-builtin-WebMCP-HgObT902.js → initialize-builtin-WebMCP-JaoKwVlm.js} +1156 -1037
- package/dist/page-tools/a11y/build.d.ts +10 -0
- package/dist/page-tools/a11y/config.d.ts +96 -0
- package/dist/page-tools/a11y/constants.d.ts +11 -0
- package/dist/page-tools/a11y/search.d.ts +17 -0
- package/dist/page-tools/a11y/types.d.ts +95 -0
- package/dist/page-tools/a11y/utils.d.ts +55 -0
- package/dist/page-tools/a11y/vnode.d.ts +40 -0
- package/dist/page-tools/a11y-tree.d.ts +9 -99
- package/dist/page-tools/configs/console-cloud.d.ts +6 -0
- package/dist/page-tools/constants.d.ts +10 -0
- package/dist/page-tools/context.d.ts +40 -0
- package/dist/page-tools/handlers/browserState.d.ts +8 -0
- package/dist/page-tools/handlers/click.d.ts +8 -0
- package/dist/page-tools/handlers/executeJavascript.d.ts +8 -0
- package/dist/page-tools/handlers/fill.d.ts +8 -0
- package/dist/page-tools/handlers/scroll.d.ts +8 -0
- package/dist/page-tools/handlers/searchTree.d.ts +9 -0
- package/dist/page-tools/handlers/select.d.ts +8 -0
- package/dist/page-tools/page-agent-highlight/index.d.ts +21 -0
- package/dist/page-tools/page-agent-mask/SimulatorMask.d.ts +16 -0
- package/dist/page-tools/page-agent-mask/checkDarkMode.d.ts +5 -0
- package/dist/page-tools/page-agent-tool-event.d.ts +26 -0
- package/dist/page-tools/page-agent-tool.d.ts +3 -8
- package/dist/page-tools/schema.d.ts +44 -0
- package/dist/page-tools/tool-config.d.ts +50 -0
- package/dist/page-tools/utils/dom.d.ts +6 -0
- package/dist/page-tools/utils/scroll.d.ts +15 -0
- package/dist/runtime.d.ts +7 -0
- package/dist/runtime.js +732 -0
- package/dist/utils/builtinProxy.d.ts +1 -1
- package/dist/vitest.config.d.ts +2 -0
- package/index.ts +35 -5
- package/package.json +23 -29
- package/page-tools/a11y/build.ts +74 -0
- package/page-tools/a11y/config.ts +465 -0
- package/page-tools/a11y/constants.ts +131 -0
- package/page-tools/a11y/search.ts +127 -0
- package/page-tools/a11y/types.ts +105 -0
- package/page-tools/a11y/utils.ts +239 -0
- package/page-tools/a11y/vnode.ts +439 -0
- package/page-tools/a11y-tree.ts +9 -527
- package/page-tools/bridge.ts +23 -3
- package/page-tools/configs/console-cloud.ts +172 -0
- package/page-tools/constants.ts +12 -0
- package/page-tools/context.ts +50 -0
- package/page-tools/handlers/browserState.ts +12 -0
- package/page-tools/handlers/click.ts +30 -0
- package/page-tools/handlers/executeJavascript.ts +22 -0
- package/page-tools/handlers/fill.ts +65 -0
- package/page-tools/handlers/scroll.ts +66 -0
- package/page-tools/handlers/searchTree.ts +27 -0
- package/page-tools/handlers/select.ts +39 -0
- package/page-tools/page-agent-highlight/index.ts +245 -0
- package/page-tools/page-agent-mask/SimulatorMask.module.css +14 -0
- package/page-tools/page-agent-mask/SimulatorMask.ts +299 -0
- package/page-tools/page-agent-mask/checkDarkMode.ts +181 -0
- package/page-tools/page-agent-mask/cursor-border.svg +3 -0
- package/page-tools/page-agent-mask/cursor-fill.svg +5 -0
- package/page-tools/page-agent-mask/cursor.module.css +70 -0
- package/page-tools/page-agent-mask/hauwei.svg +25 -0
- package/page-tools/page-agent-prompt.md +34 -18
- package/page-tools/page-agent-tool-event.ts +113 -0
- package/page-tools/page-agent-tool.ts +146 -162
- package/page-tools/schema.ts +52 -0
- package/page-tools/tool-config.ts +100 -0
- package/page-tools/utils/dom.ts +158 -0
- package/page-tools/utils/scroll.ts +58 -0
- package/runtime.ts +44 -0
- package/test/page-tools/a11y/build.test.ts +638 -0
- package/test/page-tools/a11y/config.test.ts +370 -0
- package/test/page-tools/configs/console-cloud.test.ts +168 -0
- package/test/page-tools/page-agent-highlight.test.ts +110 -0
- package/test/page-tools/page-agent-tool-dispatch.test.ts +208 -0
- package/test/page-tools/page-agent-tool.test.ts +102 -0
- package/test/page-tools/tool-config.test.ts +112 -0
- package/test/page-tools/utils/dom.test.ts +122 -0
- package/utils/builtinProxy.ts +45 -13
- package/vite.config.runtime.ts +22 -0
- package/vite.config.ts +52 -8
- package/vitest.config.ts +10 -0
- package/McpSdk.ts +0 -14
- package/WebAgent.ts +0 -5
- package/WebMcp.ts +0 -26
- package/Zod.ts +0 -1
- package/dist/McpSdk.d.ts +0 -14
- package/dist/SimulatorMask-BHVXyogh-BFEGpD5S.js +0 -1048
- package/dist/SimulatorMask-BHVXyogh-CCYbrb84.js +0 -801
- package/dist/WebAgent.d.ts +0 -5
- package/dist/WebMcp.d.ts +0 -23
- package/dist/Zod.d.ts +0 -1
- package/dist/index.es.dev.js +0 -59017
- package/dist/index.es.js +0 -46795
- package/dist/index.umd.dev.js +0 -60355
- package/dist/index.umd.js +0 -1248
- package/dist/mcpsdk@1.25.3.dev.js +0 -22780
- package/dist/mcpsdk@1.25.3.es.dev.js +0 -22778
- package/dist/mcpsdk@1.25.3.es.js +0 -16960
- package/dist/mcpsdk@1.25.3.js +0 -48
- package/dist/transport/ExtensionClientTransport.d.ts +0 -24
- package/dist/transport/ExtensionContentServerTransport.d.ts +0 -39
- package/dist/transport/ExtensionPageServerTransport.d.ts +0 -36
- package/dist/transport/messages.d.ts +0 -9
- package/dist/vite.config.mcpSdk.d.ts +0 -2
- package/dist/vite.config.webAgent.d.ts +0 -2
- package/dist/vite.config.webMcp.d.ts +0 -2
- package/dist/vite.config.webMcpFull.d.ts +0 -2
- package/dist/vite.config.zod.d.ts +0 -2
- package/dist/webagent.dev.js +0 -49360
- package/dist/webagent.es.dev.js +0 -49071
- package/dist/webagent.es.js +0 -39219
- package/dist/webagent.js +0 -642
- package/dist/webmcp-full.dev.js +0 -31336
- package/dist/webmcp-full.es.dev.js +0 -30283
- package/dist/webmcp-full.es.js +0 -22889
- package/dist/webmcp-full.js +0 -645
- package/dist/webmcp.dev.js +0 -9572
- package/dist/webmcp.es.dev.js +0 -8518
- package/dist/webmcp.es.js +0 -6727
- package/dist/webmcp.js +0 -602
- package/dist/zod@3.25.76.dev.js +0 -4037
- package/dist/zod@3.25.76.es.dev.js +0 -4033
- package/dist/zod@3.25.76.es.js +0 -2945
- package/dist/zod@3.25.76.js +0 -1
- package/transport/ExtensionClientTransport.ts +0 -100
- package/transport/ExtensionContentServerTransport.ts +0 -162
- package/transport/ExtensionPageServerTransport.ts +0 -149
- package/transport/messages.ts +0 -63
- package/vite-build-tsc.ts +0 -63
- package/vite-env.d.ts +0 -10
- package/vite.config.mcpSdk.ts +0 -28
- package/vite.config.webAgent.ts +0 -19
- package/vite.config.webMcp.ts +0 -40
- package/vite.config.webMcpFull.ts +0 -19
- package/vite.config.zod.ts +0 -23
- /package/dist/{vite-build-tsc.d.ts → vite.config.runtime.d.ts} +0 -0
|
@@ -2,6 +2,6 @@ import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* 建立原生的 JSON-RPC 拦截层:
|
|
5
|
-
* 将发向 remote 的 MCP 请求拦截,代理给所在浏览器的
|
|
5
|
+
* 将发向 remote 的 MCP 请求拦截,代理给所在浏览器的 document.modelContext 上执行。
|
|
6
6
|
*/
|
|
7
7
|
export declare const setupBuiltinProxy: (transport: Transport) => void;
|
package/index.ts
CHANGED
|
@@ -21,11 +21,6 @@ export type * from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
|
21
21
|
export * from './WebMcpServer'
|
|
22
22
|
export * from './WebMcpClient'
|
|
23
23
|
|
|
24
|
-
// 浏览器扩展自定义传输层
|
|
25
|
-
export * from './transport/ExtensionClientTransport'
|
|
26
|
-
export * from './transport/ExtensionPageServerTransport'
|
|
27
|
-
export * from './transport/ExtensionContentServerTransport'
|
|
28
|
-
|
|
29
24
|
// 快速创建一个悬浮图标和菜单,是扫码和聊天框的入口
|
|
30
25
|
export * from './remoter/createRemoter'
|
|
31
26
|
|
|
@@ -59,3 +54,38 @@ export * from '@mcp-b/webmcp-polyfill'
|
|
|
59
54
|
|
|
60
55
|
export { initializeBuiltinWebMCP } from './page-tools/initialize-builtin-WebMCP'
|
|
61
56
|
export { registerPageAgentTool } from './page-tools/page-agent-tool'
|
|
57
|
+
export { PAGE_AGENT_TOOL_CALL_EVENT, PAGE_AGENT_TOOL_RESULT_EVENT } from './page-tools/page-agent-tool-event'
|
|
58
|
+
export type { PageAgentToolCallEventDetail, PageAgentToolResultEventDetail } from './page-tools/page-agent-tool-event'
|
|
59
|
+
export type { PageAgentToolOptions } from './page-tools/tool-config'
|
|
60
|
+
|
|
61
|
+
// registerPageAgentTool 完整运行期配置(顶层选项 enableHighlight + 统一无障碍配置 a11yConfig)
|
|
62
|
+
// 的唯一一套读写 API:注册时初始化一次,之后可随时读取/修改
|
|
63
|
+
export { DEFAULT_PAGE_AGENT_TOOL_CONFIG, getPageAgentToolConfig, setPageAgentToolConfig } from './page-tools/tool-config'
|
|
64
|
+
export type { PageAgentToolConfig, PageAgentToolConfigPatch } from './page-tools/tool-config'
|
|
65
|
+
|
|
66
|
+
// 站点预设:云控制台(consoleCloud)等 PageAgentToolOptions,可直接传给 registerPageAgentTool
|
|
67
|
+
export {
|
|
68
|
+
consoleCloudPageAgentToolOptions,
|
|
69
|
+
isConsoleCloudHost,
|
|
70
|
+
} from './page-tools/configs/console-cloud'
|
|
71
|
+
|
|
72
|
+
// 统一无障碍配置(A11yConfig):角色/状态规则、白/黑名单、自定义属性、弹窗选择器,
|
|
73
|
+
// 以及供用户直接调用的底层解析函数(运行期读写请使用上面的 getPageAgentToolConfig/setPageAgentToolConfig)
|
|
74
|
+
export {
|
|
75
|
+
DEFAULT_A11Y_CONFIG,
|
|
76
|
+
defineA11yConfig,
|
|
77
|
+
resolveA11yInfo,
|
|
78
|
+
resolveA11yRole,
|
|
79
|
+
resolveA11yStates,
|
|
80
|
+
mergeA11yConfig,
|
|
81
|
+
mergeA11yConfigs,
|
|
82
|
+
ensureResolvedA11yConfig,
|
|
83
|
+
isResolvedA11yConfig,
|
|
84
|
+
extractSelectors,
|
|
85
|
+
} from './page-tools/a11y/config'
|
|
86
|
+
export type { A11yConfig, ResolvedA11yConfig, A11yRoleRule, A11yMatcher, A11yStateName, A11yInfo } from './page-tools/a11y/config'
|
|
87
|
+
|
|
88
|
+
// 无障碍树构建与搜索:供高级用户直接生成/搜索自定义根节点下的无障碍树
|
|
89
|
+
export { buildA11yTree } from './page-tools/a11y/build'
|
|
90
|
+
export { searchA11yTree } from './page-tools/a11y/search'
|
|
91
|
+
export type { A11yTreeOptions, A11yTreeResult, SearchA11yTreeOptions, SearchA11yTreeResult, VNode, RefMap } from './page-tools/a11y/types'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentiny/next-sdk",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"homepage": "https://docs.opentiny.design/next-sdk/guide/",
|
|
6
6
|
"repository": {
|
|
@@ -34,49 +34,43 @@
|
|
|
34
34
|
},
|
|
35
35
|
"description": "A frontend intelligent application development toolkit designed to simplify WebAgent integration and usage, supporting multiple programming languages and frontend frameworks to help developers rapidly implement intelligent features",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@modelcontextprotocol/sdk": "~1.25.2",
|
|
38
|
-
"@opentiny/next": "^0.3.2",
|
|
39
|
-
"@ai-sdk/openai": "^3.0.0",
|
|
40
37
|
"@ai-sdk/deepseek": "1.0.30",
|
|
41
|
-
"@ai-sdk/provider": "^3.0.0",
|
|
42
38
|
"@ai-sdk/mcp": "^1.0.0",
|
|
39
|
+
"@ai-sdk/openai": "^3.0.0",
|
|
40
|
+
"@ai-sdk/provider": "^3.0.0",
|
|
43
41
|
"@mcp-b/webmcp-polyfill": "^3.0.0",
|
|
44
|
-
"@
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"zod-to-json-schema": "^3.25.2",
|
|
48
|
-
"ajv": "^8.17.1",
|
|
42
|
+
"@modelcontextprotocol/sdk": "~1.25.2",
|
|
43
|
+
"@opentiny/next": "^0.3.2",
|
|
44
|
+
"@page-agent/page-controller": "^1.10.0",
|
|
49
45
|
"ai": "^6.0.0",
|
|
50
|
-
"
|
|
46
|
+
"ai-motion": "^0.4.8",
|
|
47
|
+
"ajv": "^8.17.1",
|
|
51
48
|
"aria-query": "^5.3.2",
|
|
49
|
+
"diff": "^7.0.0",
|
|
50
|
+
"dom-accessibility-api": "^0.6.3",
|
|
51
|
+
"qrcode": "^1.5.4",
|
|
52
52
|
"tabbable": "^6.2.0",
|
|
53
|
-
"
|
|
53
|
+
"zod": "^3.25.76",
|
|
54
|
+
"zod-to-json-schema": "^3.25.2"
|
|
54
55
|
},
|
|
55
56
|
"devDependencies": {
|
|
57
|
+
"@types/diff": "^7.0.0",
|
|
58
|
+
"@types/node": "^24.6.0",
|
|
59
|
+
"@types/qrcode": "^1.5.5",
|
|
60
|
+
"@vitest/ui": "^4.1.10",
|
|
61
|
+
"jsdom": "^29.1.1",
|
|
56
62
|
"typescript": "~5.9.3",
|
|
57
63
|
"vite": "^7.1.7",
|
|
58
64
|
"vite-plugin-dts": "^3.9.1",
|
|
59
|
-
"
|
|
60
|
-
"@types/node": "^24.6.0",
|
|
61
|
-
"@types/diff": "^7.0.0"
|
|
65
|
+
"vitest": "^4.1.10"
|
|
62
66
|
},
|
|
63
67
|
"publishConfig": {
|
|
64
68
|
"access": "public"
|
|
65
69
|
},
|
|
66
70
|
"scripts": {
|
|
67
|
-
"build
|
|
68
|
-
"build": "vite build --config vite
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"build:webAgent": "vite build --config vite.config.webAgent.ts",
|
|
72
|
-
"build:webAgent:dev": "vite build --config vite.config.webAgent.ts --mode dev",
|
|
73
|
-
"build:webMcp": "vite build --config vite.config.webMcp.ts",
|
|
74
|
-
"build:webMcp:dev": "vite build --config vite.config.webMcp.ts --mode dev",
|
|
75
|
-
"build:mcpSdk": "vite build --config vite.config.mcpSdk.ts",
|
|
76
|
-
"build:mcpSdk:dev": "vite build --config vite.config.mcpSdk.ts --mode dev",
|
|
77
|
-
"build:zod": "vite build --config vite.config.zod.ts",
|
|
78
|
-
"build:zod:dev": "vite build --config vite.config.zod.ts --mode dev",
|
|
79
|
-
"build:webMcpFull": "vite build --config vite.config.webMcpFull.ts",
|
|
80
|
-
"build:webMcpFull:dev": "vite build --config vite.config.webMcpFull.ts --mode dev"
|
|
71
|
+
"build": "vite build && vite build --config vite.config.runtime.ts",
|
|
72
|
+
"build:runtime": "vite build --config vite.config.runtime.ts",
|
|
73
|
+
"test": "vitest run",
|
|
74
|
+
"test:watch": "vitest"
|
|
81
75
|
}
|
|
82
76
|
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* a11y/build.ts
|
|
3
|
+
*
|
|
4
|
+
* 暴露生成整棵无障碍树的主逻辑方法。
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { A11yTreeOptions, A11yTreeResult, A11yTreeShapeOptions, RefMap } from './types'
|
|
8
|
+
import type { A11yConfig } from './config'
|
|
9
|
+
import { ensureResolvedA11yConfig } from './config'
|
|
10
|
+
import { buildVNode, serializeVNode } from './vnode'
|
|
11
|
+
import { getComposedChildren, collectHoverPointerElements } from './utils'
|
|
12
|
+
import { deepQuerySelectorAll } from '../utils/dom'
|
|
13
|
+
import { HIGHLIGHT_CONTAINER_ID } from '../page-agent-highlight'
|
|
14
|
+
|
|
15
|
+
/** 将 whitelist/blacklist 中的 Element 引用与 CSS 选择器字符串统一解析为元素集合(字符串每次动态解析,适配 SPA 重渲染) */
|
|
16
|
+
function resolveElementList(list: Array<Element | string>, root: Element): Set<Element> {
|
|
17
|
+
const set = new Set<Element>()
|
|
18
|
+
for (const item of list) {
|
|
19
|
+
if (typeof item === 'string') {
|
|
20
|
+
try {
|
|
21
|
+
for (const el of deepQuerySelectorAll(item, root)) set.add(el)
|
|
22
|
+
} catch {
|
|
23
|
+
// 忽略非法选择器
|
|
24
|
+
}
|
|
25
|
+
} else if (item) {
|
|
26
|
+
set.add(item)
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return set
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 生成当前页面的语义化 ARIA YAML 树
|
|
34
|
+
*
|
|
35
|
+
* @param root 遍历起点,默认 document.body
|
|
36
|
+
* @param config 统一无障碍配置(角色/状态规则、白/黑名单、自定义属性等)+ 树形状选项(pruneUnnamed/preserveRoles)
|
|
37
|
+
*/
|
|
38
|
+
export function buildA11yTree(root: Element = document.body, config?: A11yConfig & A11yTreeOptions): A11yTreeResult {
|
|
39
|
+
const { pruneUnnamed = true, preserveRoles = [], ...a11yConfig } = config ?? {}
|
|
40
|
+
// 运行期 a11yConfig 通常已是 ResolvedA11yConfig,走快路径避免再次与默认配置拼接
|
|
41
|
+
const resolved = ensureResolvedA11yConfig(a11yConfig)
|
|
42
|
+
const shapeOpts: A11yTreeShapeOptions = { pruneUnnamed, preserveRoles }
|
|
43
|
+
|
|
44
|
+
// 使用对象引用避免全局可变状态,消除并发调用隐患
|
|
45
|
+
const refCounter = { value: 0 }
|
|
46
|
+
const refMap: RefMap = new Map()
|
|
47
|
+
const blacklistSet = resolveElementList(resolved.blacklist, root)
|
|
48
|
+
const whitelistSet = resolveElementList(resolved.whitelist, root)
|
|
49
|
+
const lines: string[] = []
|
|
50
|
+
|
|
51
|
+
// 永远过滤高亮容器
|
|
52
|
+
const highlightContainer = document.getElementById(HIGHLIGHT_CONTAINER_ID)
|
|
53
|
+
if (highlightContainer) blacklistSet.add(highlightContainer)
|
|
54
|
+
|
|
55
|
+
// 一次性扫描样式表,收集只在 :hover/:focus/:active 下声明 cursor:pointer 的元素。
|
|
56
|
+
// 这类元素静止态 getComputedStyle 读到 auto,需靠样式表兜底才能识别为可点击。
|
|
57
|
+
const hoverPointerSet = collectHoverPointerElements(root)
|
|
58
|
+
|
|
59
|
+
for (const child of getComposedChildren(root)) {
|
|
60
|
+
const vnode = buildVNode(child, refCounter, refMap, blacklistSet, whitelistSet, resolved, hoverPointerSet)
|
|
61
|
+
if (vnode) {
|
|
62
|
+
lines.push(...serializeVNode(vnode, 0, shapeOpts))
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const yaml = '```yaml\n' + lines.join('\n') + '\n```'
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
yaml,
|
|
70
|
+
refMap,
|
|
71
|
+
interactiveCount: refMap.size,
|
|
72
|
+
lines,
|
|
73
|
+
}
|
|
74
|
+
}
|