page-agent-sdk 2.36.0 → 2.37.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "page-agent-sdk",
3
- "version": "2.36.0",
3
+ "version": "2.37.0",
4
4
  "type": "module",
5
5
  "description": "AI agent SDK for web pages — embed a chat assistant that edits page data via schema-validated tools. A lighter, framework-agnostic alternative to CopilotKit/LangChain for in-page JSON-editing agents. Vue-bundled; works with DeepSeek, OpenAI, MCP.",
6
6
  "main": "./dist/page-agent-sdk.umd.cjs",
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: html-builder
3
+ description: 纯代码组件(custom Vue SFC)生成规范——代码存 vfs+data 引用 / 何时写 / SFC 规范 / 安全底线 / props / 组件库引用 / 可访问性
4
+ ---
5
+
6
+ # 纯代码组件生成规范
7
+
8
+ > 内置 skill(add-capability-packs)。createHtmlSubagent 默认装进 HTML 子 agent;亦可独立分发,集成方 `defineSkill` 自挂。
9
+
10
+ ## 代码存储约定(重要)
11
+
12
+ - 代码正文写 vfs:`html/<name>.vue`(如 `html/hero.vue`)
13
+ - data 存引用:`{ type:'custom', codeRef:'vfs://html/<name>.vue', name, props }`
14
+ - 改代码:`vfs_edit` 改 vfs 文件(data 的 `codeRef` 引用不变,无需改 data)
15
+ - 渲染层(集成方契约):遇 `type:'custom'` 组件,读 `data.codeRef` → vfs 取 code → 渲染
16
+
17
+ ## 何时写代码组件
18
+
19
+ - 组件库**无对应类型**(高度定制交互 / 一次性特效 / 特殊布局)→ 写 custom 代码组件
20
+ - 组件库**已有**(按钮 / 卡片 / 列表)→ 用现有组件配置,不重造
21
+
22
+ ## Vue SFC 规范
23
+
24
+ - Vue 3 `<template>` + `<script setup>`(组合式)
25
+ - props 用 `defineProps`;事件用 `defineEmits`
26
+ - 只渲染 UI,不做副作用(不发请求 / 不读写 storage)
27
+
28
+ ## props 定义
29
+
30
+ - 代码组件 `defineProps` 接受外部 data 传入(集成方渲染时按 data 的 `props` 字段传)
31
+
32
+ ## 组件库引用
33
+
34
+ - 代码内可 import 组件库组件(如 `<Button>`);所用依赖以集成方渲染层已注入为准,不重复造
35
+
36
+ ## 安全底线(必须)
37
+
38
+ - 禁 `eval` / `new Function` / `Function` 构造器
39
+ - 禁访问 window 敏感属性(`document.cookie` / `apiKey` / `token`)
40
+ - 不引入外部脚本 / CDN
41
+
42
+ ## 可访问性 + 语义化
43
+
44
+ - 语义化标签(`button` / `nav` / `section`);图片 `alt`;交互可键盘聚焦
45
+ - 颜色对比达标;不只用颜色传达信息
46
+
47
+ ## 提交策略
48
+
49
+ - 小段代码:`vfs_write` 整体写
50
+ - 大段代码:先 `vfs_write` 建骨架,再 `vfs_edit` 增量拼(避免单次输出超 max_tokens 截断)
51
+ - 删除组件:`vfs_rm` 删 vfs 代码 + `write` 移除 data 引用
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: rag-search
3
+ description: 多源知识检索策略——vfs 预注入文档 / 语义检索 / 指定文档加载 / 公网,综合结构化结论 + 溯源
4
+ ---
5
+
6
+ # 知识检索策略(RAG)
7
+
8
+ > 内置 skill(add-capability-packs)。createRagSubagent 默认装进 RAG 子 agent;亦可独立分发,集成方 `defineSkill` 自挂。
9
+
10
+ ## 多源决策树
11
+
12
+ - **vfs_grep / vfs_read**:搜集成方预注入 vfs 的文档(组件文档 / UI 规范)—— 快、静态,先查
13
+ - **search_docs**:语义检索(retriever 向量库)—— 模糊匹配,关键词不确定 / 语义相似时用
14
+ - **load_doc**:按 source 精确加载(已知文档 id / URL / key)—— 精确取特定文档
15
+ - **fetch_document**:公网 URL —— 查公开资料
16
+
17
+ ## 综合规范
18
+
19
+ - 多源交叉验证(关键结论优先 ≥2 源印证,或单一权威源)
20
+ - 标注来源(文档名 / URL / 段落),便于溯源
21
+ - 结构化、可执行结论(组件清单 + 各自 props 约束 + 适用场景),不堆原文
22
+ - 未检索到明确说「未检索到」,不编造;建议替代方案(改关键词 / 建议写代码组件等)
23
+
24
+ ## 何时用何源
25
+
26
+ - 静态文档(组件库文档 / UI 规范):`vfs_grep`
27
+ - 语义相似(「瀑布流组件」「倒计时」「拼团」):`search_docs`
28
+ - 已知文档 id / URL:`load_doc`
29
+ - 公开 URL(设计规范网站 / 第三方文档):`fetch_document`
30
+
31
+ ## 多轮检索
32
+
33
+ - 单源不够时换源或换关键词重试(如 `search_docs` 没命中 → `vfs_grep` 换词)
34
+ - 扩大 `topK` 增加召回(噪声多时收小)
35
+ - 检索充分即综合结论,不过度检索
@@ -223,6 +223,9 @@ export interface SubagentConfig {
223
223
  maxToolRounds?: number;
224
224
  /** 子 agent 可写路径前缀白名单(给子 agent 写权限;写工具包 path guard,越界 PATH_OUT_OF_SCOPE;整体 set 禁)。subagent-writable Phase 2 */
225
225
  writablePaths?: string[];
226
+ allowedTools?: string[];
227
+ middleware?: any[];
228
+ summarization?: boolean | any;
226
229
  }
227
230
  export interface AgentInfo {
228
231
  id: string;
@@ -902,6 +905,8 @@ export interface ChatSdk {
902
905
  exportData(): any;
903
906
  /** 导入数据整体替换主数据 bind(就地还原,保留 reactive 引用);默认经 schema 校验,不合法返回 {ok:false,error};opts.validate:false 跳过校验,opts.emit:false 不发 data_change */
904
907
  importData(json: any, opts?: { validate?: boolean; emit?: boolean }): { ok: boolean; error?: string };
908
+ /** 往 vfs 异步注入/更新文件(RAG 文档池 / HTML 代码等);content 字符串直存,对象 JSON.stringify。与 vfs_write 工具一致语义(集成方侧命令式入口) */
909
+ vfsWrite(path: string, content: string | object): void;
905
910
  /** 创建/注册受保护资源(返回 handle);需配 data.resources + vfsStore,否则抛错 */
906
911
  createResource(path: string, value?: unknown): string;
907
912
  /** 取受保护资源真值(by path 或 handle);不存在返 undefined */
@@ -1300,6 +1305,42 @@ export interface SubagentOptions {
1300
1305
  }
1301
1306
  export interface SubagentLlmConfig { [k: string]: any }
1302
1307
 
1308
+ // 能力包(专用子 agent 工厂):RAG 多源检索 + HTML 代码组件生成(add-capability-packs)
1309
+ export interface RagHit { content: string; source?: string; score?: number }
1310
+ export interface RagRetrieveOptions { topK?: number }
1311
+ export type RagRetriever = (query: string, opts?: RagRetrieveOptions) => Promise<RagHit[]>;
1312
+ export type RagLoader = (source: string) => Promise<RagHit | RagHit[]>;
1313
+ export interface CreateRagSubagentOptions {
1314
+ retriever?: (query: string, opts?: RagRetrieveOptions) => Promise<RagHit[]>;
1315
+ loader?: (source: string) => Promise<RagHit | RagHit[]>;
1316
+ useVfs?: boolean;
1317
+ id?: string;
1318
+ description?: string;
1319
+ topK?: number;
1320
+ searchToolName?: string;
1321
+ loadToolName?: string;
1322
+ maxToolRounds?: number;
1323
+ summarization?: boolean | any;
1324
+ skills?: SkillSpec[];
1325
+ extraTools?: any[];
1326
+ [k: string]: any;
1327
+ }
1328
+ export interface CreateHtmlSubagentOptions {
1329
+ writablePaths: string[];
1330
+ codeVfsPrefix?: string;
1331
+ id?: string;
1332
+ description?: string;
1333
+ planning?: boolean;
1334
+ summarization?: boolean | any;
1335
+ maxToolRounds?: number;
1336
+ temperature?: number;
1337
+ skills?: SkillSpec[];
1338
+ extraTools?: any[];
1339
+ [k: string]: any;
1340
+ }
1341
+ export declare function createRagSubagent(options: CreateRagSubagentOptions): SubagentConfig;
1342
+ export declare function createHtmlSubagent(options: CreateHtmlSubagentOptions): SubagentConfig;
1343
+
1303
1344
  // checkpoint / dataOps / permissions
1304
1345
  export interface CheckpointDeps { [k: string]: any }
1305
1346
  export interface DataAuditEntry { [k: string]: any }
package/types/index.d.ts CHANGED
@@ -216,6 +216,12 @@ export interface SubagentConfig {
216
216
  maxToolRounds?: number;
217
217
  /** 子 agent 可写路径前缀白名单(给子 agent 写权限;写工具包 path guard,越界 PATH_OUT_OF_SCOPE;整体 set 禁)。subagent-writable Phase 2 */
218
218
  writablePaths?: string[];
219
+ /** 从主 allTools 额外拿的工具名(追加到默认只读白名单);如 ['vfs_grep','vfs_write'] */
220
+ allowedTools?: string[];
221
+ /** 子 agent 自定义中间件(如 createTodosMiddleware 给规划能力) */
222
+ middleware?: any[];
223
+ /** 跨轮上下文压缩;true=默认索引摘要(零 LLM),或 SummarizationOptions 自配(含 llmInvoke 升级)。不传=不装 */
224
+ summarization?: boolean | any;
219
225
  }
220
226
  export interface AgentInfo {
221
227
  id: string;
@@ -909,6 +915,8 @@ export interface ChatSdk {
909
915
  exportData(): any;
910
916
  /** 导入数据整体替换主数据 bind(就地还原,保留 reactive 引用);默认经 schema 校验,不合法返回 {ok:false,error};opts.validate:false 跳过校验,opts.emit:false 不发 data_change */
911
917
  importData(json: any, opts?: { validate?: boolean; emit?: boolean }): { ok: boolean; error?: string };
918
+ /** 往 vfs 异步注入/更新文件(RAG 文档池 / HTML 代码等);content 字符串直存,对象 JSON.stringify。与 vfs_write 工具一致语义(集成方侧命令式入口) */
919
+ vfsWrite(path: string, content: string | object): void;
912
920
  /** 创建/注册受保护资源(返回 handle);需配 data.resources + vfsStore,否则抛错 */
913
921
  createResource(path: string, value?: unknown): string;
914
922
  /** 取受保护资源真值(by path 或 handle);不存在返 undefined */
@@ -1307,6 +1315,42 @@ export interface SubagentOptions {
1307
1315
  }
1308
1316
  export interface SubagentLlmConfig { [k: string]: any }
1309
1317
 
1318
+ // 能力包(专用子 agent 工厂):RAG 多源检索 + HTML 代码组件生成(add-capability-packs)
1319
+ export interface RagHit { content: string; source?: string; score?: number }
1320
+ export interface RagRetrieveOptions { topK?: number }
1321
+ export type RagRetriever = (query: string, opts?: RagRetrieveOptions) => Promise<RagHit[]>;
1322
+ export type RagLoader = (source: string) => Promise<RagHit | RagHit[]>;
1323
+ export interface CreateRagSubagentOptions {
1324
+ retriever?: (query: string, opts?: RagRetrieveOptions) => Promise<RagHit[]>;
1325
+ loader?: (source: string) => Promise<RagHit | RagHit[]>;
1326
+ useVfs?: boolean;
1327
+ id?: string;
1328
+ description?: string;
1329
+ topK?: number;
1330
+ searchToolName?: string;
1331
+ loadToolName?: string;
1332
+ maxToolRounds?: number;
1333
+ summarization?: boolean | any;
1334
+ skills?: SkillSpec[];
1335
+ extraTools?: any[];
1336
+ [k: string]: any;
1337
+ }
1338
+ export interface CreateHtmlSubagentOptions {
1339
+ writablePaths: string[];
1340
+ codeVfsPrefix?: string;
1341
+ id?: string;
1342
+ description?: string;
1343
+ planning?: boolean;
1344
+ summarization?: boolean | any;
1345
+ maxToolRounds?: number;
1346
+ temperature?: number;
1347
+ skills?: SkillSpec[];
1348
+ extraTools?: any[];
1349
+ [k: string]: any;
1350
+ }
1351
+ export declare function createRagSubagent(options: CreateRagSubagentOptions): SubagentConfig;
1352
+ export declare function createHtmlSubagent(options: CreateHtmlSubagentOptions): SubagentConfig;
1353
+
1310
1354
  // checkpoint / dataOps / permissions
1311
1355
  export interface CheckpointDeps { [k: string]: any }
1312
1356
  export interface DataAuditEntry { [k: string]: any }