agentpage 0.0.2 → 0.0.3

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/index.d.mts CHANGED
@@ -79,6 +79,64 @@ type AgentLoopResult = {
79
79
  messages: AIMessage[];
80
80
  };
81
81
  //#endregion
82
+ //#region src/web/ref-store.d.ts
83
+ /**
84
+ * RefStore — 快照 hash ID 与 DOM 元素的映射表。
85
+ *
86
+ * 快照生成时,根据元素的 DOM 路径 + 页面 URL 生成确定性 hash ID,
87
+ * 同时保存 ID → Element 的映射。AI 使用 hash ID 作为 selector 定位元素,
88
+ * 免去超长 XPath 路径,大幅减少 token 消耗。
89
+ *
90
+ * 优势:
91
+ * - **确定性**:同一元素无论快照顺序,始终得到相同 ID
92
+ * - **并发安全**:多次快照不会产生 ID 冲突
93
+ * - **跨页面隔离**:URL hash 作为命名空间,不同页面元素 ID 互不碰撞
94
+ *
95
+ * 生命周期:每次 WebAgent.chat() 调用时创建,对话结束后清空。
96
+ *
97
+ * 使用方:
98
+ * page-info-tool.ts — generateSnapshot() 写入映射
99
+ * dom-tool.ts — queryElement() 读取映射
100
+ * index.ts — WebAgent 持有实例,管理生命周期
101
+ */
102
+ /**
103
+ * hash ID → DOM 元素的映射存储。
104
+ *
105
+ * - `set(el, path)` 由快照生成时调用,返回确定性 hash ID
106
+ * - `get(id)` 由 dom-tool 查询时调用,根据 hash ID 取回元素
107
+ * - `has(id)` 检查 ID 是否存在(用于 selector 类型判断)
108
+ * - `clear()` 每次对话结束后清空
109
+ */
110
+ declare class RefStore {
111
+ private map;
112
+ /** 页面 URL 的 hash 前缀,用于跨页面命名空间隔离 */
113
+ private urlKey;
114
+ /**
115
+ * @param url 当前页面 URL(可选)。传入后作为 hash 命名空间,
116
+ * 使不同页面的相同 DOM 路径产生不同 ID。
117
+ */
118
+ constructor(url?: string);
119
+ /**
120
+ * 注册一个元素,返回确定性 hash ID。
121
+ * 相同 URL + path 始终产生相同 ID(并发安全)。
122
+ *
123
+ * @param el DOM 元素引用
124
+ * @param path 元素的 XPath-like 路径(如 "/body/div[1]/main/button")
125
+ */
126
+ set(el: Element, path: string): string;
127
+ /**
128
+ * 根据 hash ID 获取 DOM 元素。
129
+ * 返回 Element 或 undefined(ID 不存在或元素已被移除)。
130
+ */
131
+ get(id: string): Element | undefined;
132
+ /** 检查 hash ID 是否存在 */
133
+ has(id: string): boolean;
134
+ /** 清空所有映射 */
135
+ clear(): void;
136
+ /** 当前映射数量 */
137
+ get size(): number;
138
+ }
139
+ //#endregion
82
140
  //#region src/web/page-info-tool.d.ts
83
141
  /** 快照配置选项 */
84
142
  type SnapshotOptions = {
@@ -95,31 +153,29 @@ type SnapshotOptions = {
95
153
  * 如果自身无意义,会被折叠——子元素直接提升到父级输出,减少嵌套噪音。
96
154
  */
97
155
  pruneLayout?: boolean;
156
+ /**
157
+ * hash ID 映射表(可选)。
158
+ * 传入 RefStore 实例后,每个元素使用确定性 hash ID 替代完整 XPath,
159
+ * 大幅减少 token 消耗。dom-tool 通过 RefStore.get(id) 解析回 DOM 元素。
160
+ */
161
+ refStore?: RefStore;
98
162
  };
99
163
  /**
100
164
  * 生成页面 DOM 快照 — 将 DOM 树转为 AI 可理解的文本描述。
101
165
  *
102
- * 类似 Playwright ariaSnapshot(),但基于 Web API 实现。
103
- * 只遍历可见元素,跳过 script/style/svg 等无意义节点。
104
- *
105
- * 每个元素自动生成基于层级位置的 XPath 引用(ref),
106
- * AI 可以通过 ref 精确定位元素,无需猜测 CSS 选择器。
166
+ * 基于 Web API 实现,只遍历可见元素,跳过 script/style/svg 等无意义节点。
167
+ * 传入 RefStore 时,每个元素生成确定性 hash ID(如 #a1b2c),
168
+ * AI 通过 hash ID 精确定位元素,无需猜测 CSS 选择器。
107
169
  *
108
170
  * 输出格式示例:
109
- * [header] ref="/body/header"
110
- * [nav] ref="/body/header/nav"
111
- * [a] "首页" href="/" ref="/body/header/nav/a[1]"
112
- * [a] "关于" href="/about" ref="/body/header/nav/a[2]"
113
- * [main] ref="/body/main"
114
- * [h1] "欢迎来到示例网站" ref="/body/main/h1"
115
- * [input] type="text" placeholder="搜索..." ref="/body/main/input"
116
- * [button] "搜索" id="search-btn" onclick ref="/body/main/button"
117
- *
118
- * 增强信息:
119
- * - id:元素的 id 属性
120
- * - placeholder:输入框的占位文本
121
- * - 事件绑定:onclick/onchange 等内联事件处理器
122
- * - 状态属性:disabled/checked/readonly/required 等
171
+ * [header] #k9f2a
172
+ * [nav] #m3d7e
173
+ * [a] "首页" href="/" #p1c4b
174
+ * [a] "关于" href="/about" #q8e5f
175
+ * [main] #r2a6d
176
+ * [h1] "欢迎" #s7g3h
177
+ * [input] type="text" placeholder="搜索..." #t4j8k
178
+ * [button] "搜索" id="search-btn" onclick #u5n2m
123
179
  *
124
180
  * @param root - 快照根元素(默认 document.body)
125
181
  * @param options - 快照选项对象,或传入数字作为 maxDepth(向后兼容)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/tool-registry.ts","../src/core/types.ts","../src/core/agent-loop/index.ts","../src/web/page-info-tool.ts","../src/web/dom-tool.ts","../src/web/navigate-tool.ts","../src/web/wait-tool.ts","../src/web/evaluate-tool.ts","../src/web/messaging.ts","../src/web/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/core/tool-registry.ts","../src/core/types.ts","../src/core/agent-loop/index.ts","../src/web/ref-store.ts","../src/web/page-info-tool.ts","../src/web/dom-tool.ts","../src/web/navigate-tool.ts","../src/web/wait-tool.ts","../src/web/evaluate-tool.ts","../src/web/messaging.ts","../src/web/index.ts"],"mappings":"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"}