@visual-e2e/rpc-sdk
v0.1.0
Published
Host ↔ Tool RPC SDK for visual-e2e (iframe postMessage).
Readme
@visual-e2e/rpc-sdk
Host ↔ Tool iframe RPC(postMessage,协议 v2)。
Tool(iframe 内)
import { getRpcClient, isEmbedded } from "@visual-e2e/rpc-sdk";
if (isEmbedded()) {
const rpc = getRpcClient();
const ctx = await rpc.getProjectContext();
}在 tool.json 声明 rpc.protocolVersion(当前为 2)与所需 capabilities。
RPC API
| SDK 方法 | RPC method | capability | 说明 |
| --- | --- | --- | --- |
| getProjectContext() | project.getContext | project.context | 当前项目凭证:base_url / username / password |
| listProjects() | project.list | project.list | 项目列表 |
| getProjectVariables(projectId?) | project.getVariables | project.variables | 项目全局变量 |
| getSettings() | config.getSettings | config.settings | 全局配置 |
| getBrowserRuntime() | config.getBrowserRuntime | config.browserRuntime | 浏览器配置与就绪状态,含 browser_path / ffmpeg_path |
| pickFolder() | fs.pickFolder | fs.pickFolder | 选本地目录 |
| getDataDir() | fs.getDataDir | fs.dataDir | 应用数据目录(含 storage / projects / config / tools) |
| navigateScenario(module, scenario) | scenario.navigate | scenario.navigate | 打开场景管理 |
| cacheClear() | cache.clear | cache.clear | 预留 |
Host → Tool 通知(onNotify):
| method | 说明 |
| --- | --- |
| project.contextChanged | 项目凭证变更,参数含 project_id / project_name |
| cache.clear | Host 侧清理缓存通知 |
Host(主应用 web)
import {
attachHostRpcBridge,
notifyTool,
normalizeCapabilities,
} from "@visual-e2e/rpc-sdk/host";
const detach = attachHostRpcBridge({
webOrigin,
capabilities: normalizeCapabilities(tool.capabilities),
getContentWindow: () => iframeRef.current?.contentWindow,
handlers: {
getProjectContext: () => ({ base_url, username, password }),
listProjects: () => api.projects(),
// …
},
});notifyTool(contentWindow, origin, "project.contextChanged", params) 向工具推送项目变更。
