@vetta-org/plugin-sdk 0.2.0 → 0.3.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/dist/agent.d.ts +0 -12
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js.map +1 -1
- package/dist/ai.d.ts +13 -0
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js.map +1 -1
- package/dist/app-actions.d.ts +0 -1
- package/dist/app-actions.d.ts.map +1 -1
- package/dist/app-actions.js.map +1 -1
- package/dist/cli-provider.d.ts +18 -0
- package/dist/cli-provider.d.ts.map +1 -0
- package/dist/cli-provider.js +2 -0
- package/dist/cli-provider.js.map +1 -0
- package/dist/context.d.ts +13 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest-schema.d.ts +454 -51
- package/dist/manifest-schema.d.ts.map +1 -1
- package/dist/manifest-schema.js +139 -33
- package/dist/manifest-schema.js.map +1 -1
- package/dist/manifest.d.ts +2 -2
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +164 -38
- package/dist/manifest.js.map +1 -1
- package/dist/models.d.ts +35 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +2 -0
- package/dist/models.js.map +1 -0
- package/dist/ocr.d.ts +78 -0
- package/dist/ocr.d.ts.map +1 -0
- package/dist/ocr.js +2 -0
- package/dist/ocr.js.map +1 -0
- package/dist/official.d.ts +1 -0
- package/dist/official.d.ts.map +1 -1
- package/dist/official.js.map +1 -1
- package/dist/permissions.d.ts +1 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +8 -0
- package/dist/permissions.js.map +1 -1
- package/dist/secrets.d.ts +27 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +2 -0
- package/dist/secrets.js.map +1 -0
- package/dist/service-provider.d.ts +62 -0
- package/dist/service-provider.d.ts.map +1 -0
- package/dist/service-provider.js +2 -0
- package/dist/service-provider.js.map +1 -0
- package/dist/storage.d.ts +39 -6
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -1
- package/dist/storage.js.map +1 -1
- package/dist/ui.d.ts +118 -7
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js.map +1 -1
- package/docs/.source.json +22 -0
- package/docs/README.md +104 -0
- package/docs/ability-details.md +424 -0
- package/docs/ai.md +121 -0
- package/docs/app-actions.md +111 -0
- package/docs/browser.md +80 -0
- package/docs/conversation-and-agent.md +619 -0
- package/docs/file-explorer.md +118 -0
- package/docs/getting-started.md +295 -0
- package/docs/guiding-the-agent.md +183 -0
- package/docs/manifest.md +296 -0
- package/docs/mcp.md +152 -0
- package/docs/media.md +141 -0
- package/docs/message-cards.md +188 -0
- package/docs/permissions.md +145 -0
- package/docs/styling-and-pitfalls.md +254 -0
- package/docs/system-plugins.md +58 -0
- package/docs/ui-slots.md +628 -0
- package/package.json +7 -3
- package/dist/settings.d.ts +0 -13
- package/dist/settings.d.ts.map +0 -1
- package/dist/settings.js +0 -2
- package/dist/settings.js.map +0 -1
package/docs/browser.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# 浏览器 API
|
|
2
|
+
|
|
3
|
+
`ctx.browser` 提供两类能力:`open()` 只负责把页面展示到 Desktop 内置浏览器;其余 session/snapshot/act API 是宿主管理的浏览器自动化能力。插件不应自行执行浏览器 CLI。
|
|
4
|
+
|
|
5
|
+
当前宿主始终提供 `ctx.browser`,创建这个 API 对象不会启动浏览器或进行导航。权限在调用具体方法时校验,缺少声明或用户授权时抛出 `Plugin permission denied: <permission>`。不要用 `ctx.browser` 是否存在判断权限;需要提前判断时使用 `ctx.permissions.has(...)`。兼容尚未提供该 API 的旧宿主时,仍需自行检测是否存在。
|
|
6
|
+
|
|
7
|
+
## 打开内置浏览器
|
|
8
|
+
|
|
9
|
+
如果插件只需要让用户查看一个页面,声明 `browser.open`,并调用:
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
ctx.browser.open("https://studio.example.com/posts");
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`open()` 会打开当前会话的内置 Browser Panel。它只接受 `http` / `https`,并受清单中的 `browser.allowedHosts` 限制;不会返回页面内容,也不会授予点击、填充、脚本执行或 Cookie 访问权限。
|
|
16
|
+
|
|
17
|
+
没有活动会话时,`open()` 会抛出错误,不会创建新会话。只有 `browser.open` 权限也能使用该方法,不需要 `browser.read` 或安装自动化运行时。
|
|
18
|
+
|
|
19
|
+
## 清单
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"permissions": [
|
|
24
|
+
"browser.open",
|
|
25
|
+
"browser.read",
|
|
26
|
+
"browser.interact",
|
|
27
|
+
"browser.profile.persist"
|
|
28
|
+
],
|
|
29
|
+
"browser": {
|
|
30
|
+
"allowedHosts": ["studio.example.com", "*.assets.example.com"]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
只要声明任一 `browser.*` 权限,就必须提供非空 `browser.allowedHosts`。`*` 表示显式允许任意顶层导航;应尽量声明具体站点。`browser.interact` 依赖 `browser.read`。`browser.attach` 和 `browser.runtime.manage` 也必须分别显式声明并由用户授权。
|
|
36
|
+
|
|
37
|
+
## 多账号 profile
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
const session = await ctx.browser.sessions.create({
|
|
41
|
+
source: "managed",
|
|
42
|
+
profile: { type: "persistent", id: "brand-a" },
|
|
43
|
+
headed: true,
|
|
44
|
+
allowedHosts: ["studio.example.com"],
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`profile.id` 是插件 namespace 内的逻辑 ID。不同 ID 对应独立登录态,适合一个媒体账号一个 profile。插件不会得到物理路径、Cookie 或 token。关闭 session 不会删除持久 profile。
|
|
49
|
+
|
|
50
|
+
`allowedHosts` 可省略(使用 manifest 全集),也可传 manifest 授权的子集;不能在运行时扩权。不要把邮箱、密码或 token 放进 profile ID。
|
|
51
|
+
|
|
52
|
+
## 操作流程
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
const session = await ctx.browser.sessions.create({
|
|
56
|
+
profile: { type: "persistent", id: "brand-a" },
|
|
57
|
+
allowedHosts: ["studio.example.com"],
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
await ctx.browser.navigate(session.id, "https://studio.example.com/posts/new");
|
|
61
|
+
const snapshot = await ctx.browser.snapshot(session.id, { interactiveOnly: true });
|
|
62
|
+
await ctx.browser.act(
|
|
63
|
+
session.id,
|
|
64
|
+
{ type: "fill", target: "@e3", value: "Draft title" },
|
|
65
|
+
{ snapshotRevision: snapshot.revision },
|
|
66
|
+
);
|
|
67
|
+
await ctx.browser.sessions.close(session.id);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
动作支持 `click`、`fill`、`type`、`select`、`check`、`press`、`scroll`、`wait`、`back` 和 `reload`。页面变化后重新获取 snapshot;传入旧 revision 会被宿主拒绝,避免误操作过期 ref。
|
|
71
|
+
|
|
72
|
+
## 安全与生命周期
|
|
73
|
+
|
|
74
|
+
- 公共 API 不提供任意 JavaScript、argv、文件上传、下载、Cookie 或认证数据导出。
|
|
75
|
+
- 页面内容是不可信数据。发布、提交、发送、删除、购买和权限变更等不可逆动作仍需产品层获得用户确认。
|
|
76
|
+
- 域名范围限制顶层导航,不是页面子资源的网络防火墙。显式导航在执行前校验;不透明动作完成后发现越界会关闭 session。
|
|
77
|
+
- Capability 被取消时,宿主会终止对应浏览器子进程。插件停用或 capability session 撤销时,活动浏览器 session 会被回收,持久 profile 保留。
|
|
78
|
+
- 宿主日志只记录脱敏 session/profile 标识、操作、耗时与错误分类,不记录 URL query、页面正文、表单值、Cookie、token 或截图。
|
|
79
|
+
|
|
80
|
+
完整架构见 [ADR-0088](../adr/0088-browser-automation-as-a-foundation-capability.md)。
|