page-action-cache 2026.2.11 → 2026.3.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/dist/index.d.ts CHANGED
@@ -1,10 +1,27 @@
1
1
  /**
2
2
  * Page Action Cache - OpenClaw Extension
3
- * Safe minimal implementation
3
+ * 页面操作缓存扩展
4
4
  */
5
+ interface OpenClawPluginApi {
6
+ registerTool(tool: {
7
+ name: string;
8
+ description: string;
9
+ inputSchema: unknown;
10
+ execute: (params: unknown) => Promise<unknown>;
11
+ }): void;
12
+ }
13
+ interface BeforeToolCallResult {
14
+ params?: Record<string, unknown>;
15
+ block?: boolean;
16
+ blockReason?: string;
17
+ }
5
18
  /**
6
- * Page Action Cache - OpenClaw Extension
7
- * Safe minimal implementation
19
+ * 主扩展入口
8
20
  */
9
- export default function register(): void;
21
+ export default function register(api: OpenClawPluginApi & {
22
+ hooks?: {
23
+ register: (hookName: string, handler: (event: unknown, ctx: unknown) => BeforeToolCallResult | void | Promise<BeforeToolCallResult | void>) => void;
24
+ };
25
+ }): void;
26
+ export {};
10
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AAEH,MAAM,CAAC,OAAO,UAAU,QAAQ,IAAI,IAAI,CAGvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,UAAU,iBAAiB;IACzB,YAAY,CAAC,IAAI,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAChD,GAAG,IAAI,CAAC;CACV;AAGD,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyDD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG;IACxD,KAAK,CAAC,EAAE;QACN,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,oBAAoB,GAAG,IAAI,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAC1G,IAAI,CAAC;KACX,CAAC;CACH,GAAG,IAAI,CAgOP"}
package/dist/index.js CHANGED
@@ -1,13 +1,238 @@
1
1
  /**
2
2
  * Page Action Cache - OpenClaw Extension
3
- * Safe minimal implementation
3
+ * 页面操作缓存扩展
4
4
  */
5
+ // 内存缓存(页面会话级别)
6
+ const memoryCache = new Map();
7
+ const MAX_CACHE_SIZE = 50;
8
+ const CACHE_TTL_MS = 5 * 60 * 1000; // 5 分钟
5
9
  /**
6
- * Page Action Cache - OpenClaw Extension
7
- * Safe minimal implementation
10
+ * 生成缓存键
11
+ */
12
+ function getCacheKey(profile, targetId, url) {
13
+ const parts = [];
14
+ if (profile)
15
+ parts.push(profile);
16
+ if (targetId)
17
+ parts.push(targetId);
18
+ if (url)
19
+ parts.push(url);
20
+ return parts.join(':');
21
+ }
22
+ /**
23
+ * 清理过期缓存
24
+ */
25
+ function cleanupExpiredCache() {
26
+ const now = Date.now();
27
+ let cleaned = 0;
28
+ for (const [key, entry] of memoryCache.entries()) {
29
+ if (now - entry.timestamp > CACHE_TTL_MS) {
30
+ memoryCache.delete(key);
31
+ cleaned++;
32
+ }
33
+ }
34
+ // LRU 清理
35
+ while (memoryCache.size > MAX_CACHE_SIZE) {
36
+ const oldestKey = memoryCache.keys().next().value;
37
+ if (oldestKey) {
38
+ memoryCache.delete(oldestKey);
39
+ cleaned++;
40
+ }
41
+ }
42
+ return cleaned;
43
+ }
44
+ /**
45
+ * 主扩展入口
8
46
  */
9
- export default function register() {
10
- // This version is intentionally empty to avoid any interference with OpenClaw
11
- // The plugin is disabled in config, but we want a safe version in npm
47
+ export default function register(api) {
48
+ console.log('[PageActionCache] Starting...');
49
+ // 注册 hooks
50
+ if (api.hooks) {
51
+ // after_tool_call hook - cache snapshot metadata
52
+ api.hooks.register('after_tool_call', async (event, _ctx) => {
53
+ try {
54
+ const hookEvent = event;
55
+ // Only process browser snapshot actions
56
+ if (hookEvent.toolName !== 'browser') {
57
+ return;
58
+ }
59
+ const params = hookEvent.params;
60
+ if (params.action !== 'snapshot') {
61
+ return;
62
+ }
63
+ // Skip if there was an error
64
+ if (hookEvent.error) {
65
+ return;
66
+ }
67
+ // Extract metadata from result
68
+ const result = hookEvent.result;
69
+ if (!result?.details) {
70
+ return;
71
+ }
72
+ const targetId = result.details.targetId || params.targetId;
73
+ const url = result.details.url || params.url;
74
+ const refsCount = result.details.refs;
75
+ if (!targetId || !url) {
76
+ return;
77
+ }
78
+ // Check if refs were collected
79
+ const refs = (params.refs === "role" || params.refs === "aria") ? params.refs : undefined;
80
+ // Store in cache
81
+ const cacheKey = getCacheKey(params.profile, targetId, url);
82
+ const existingEntry = memoryCache.get(cacheKey);
83
+ const entry = {
84
+ url,
85
+ targetId,
86
+ profile: params.profile,
87
+ refs,
88
+ refsData: refsCount && refsCount > 0 ? {} : undefined, // Would store actual refs if accessible
89
+ timestamp: Date.now(),
90
+ hitCount: existingEntry?.hitCount || 0
91
+ };
92
+ // Refresh insertion order for LRU
93
+ if (existingEntry) {
94
+ memoryCache.delete(cacheKey);
95
+ }
96
+ memoryCache.set(cacheKey, entry);
97
+ // Cleanup if over limit
98
+ if (memoryCache.size > MAX_CACHE_SIZE) {
99
+ const oldestKey = memoryCache.keys().next().value;
100
+ if (oldestKey) {
101
+ memoryCache.delete(oldestKey);
102
+ }
103
+ }
104
+ console.log('[PageActionCache] Cached snapshot:', cacheKey, 'refs:', refs, 'count:', refsCount);
105
+ }
106
+ catch (err) {
107
+ console.error('[PageActionCache] Error in after_tool_call:', err);
108
+ }
109
+ });
110
+ // before_tool_call hook - restore cached params
111
+ api.hooks.register('before_tool_call', async (event, _ctx) => {
112
+ try {
113
+ const hookEvent = event;
114
+ // Only process browser actions
115
+ if (hookEvent.toolName !== 'browser') {
116
+ return undefined;
117
+ }
118
+ const params = hookEvent.params;
119
+ if (!params.action) {
120
+ return undefined;
121
+ }
122
+ // Generate cache key
123
+ const cacheKey = getCacheKey(params.profile, params.targetId, params.url);
124
+ if (!cacheKey) {
125
+ return undefined;
126
+ }
127
+ // Check cache
128
+ const entry = memoryCache.get(cacheKey);
129
+ if (!entry) {
130
+ return undefined;
131
+ }
132
+ // Check if expired
133
+ if (Date.now() - entry.timestamp > CACHE_TTL_MS) {
134
+ memoryCache.delete(cacheKey);
135
+ return undefined;
136
+ }
137
+ // Increment hit count and refresh LRU
138
+ entry.hitCount++;
139
+ memoryCache.delete(cacheKey);
140
+ memoryCache.set(cacheKey, entry);
141
+ // Build modified params
142
+ const modifiedParams = {};
143
+ // Add profile if cached and not in params
144
+ if (entry.profile && !params.profile) {
145
+ modifiedParams.profile = entry.profile;
146
+ }
147
+ // Add targetId if cached and not in params
148
+ if (entry.targetId && !params.targetId) {
149
+ modifiedParams.targetId = entry.targetId;
150
+ }
151
+ // Add refs if this is a snapshot action and we have cached refs
152
+ if (params.action === 'snapshot' && entry.refs && !params.refs) {
153
+ modifiedParams.refs = entry.refs;
154
+ }
155
+ // Only return if we have something to add
156
+ if (Object.keys(modifiedParams).length > 0) {
157
+ console.log('[PageActionCache] Cache hit:', cacheKey, 'modified params:', Object.keys(modifiedParams));
158
+ return { params: modifiedParams };
159
+ }
160
+ }
161
+ catch (err) {
162
+ console.error('[PageActionCache] Error in before_tool_call:', err);
163
+ }
164
+ return undefined;
165
+ });
166
+ console.log('[PageActionCache] Hooks registered');
167
+ }
168
+ else {
169
+ console.log('[PageActionCache] No hooks API available');
170
+ }
171
+ // 注册缓存统计工具
172
+ api.registerTool({
173
+ name: 'page_cache_stats',
174
+ description: 'View page snapshot cache statistics',
175
+ inputSchema: {
176
+ type: 'object',
177
+ properties: {},
178
+ required: []
179
+ },
180
+ async execute() {
181
+ cleanupExpiredCache();
182
+ const entries = Array.from(memoryCache.values());
183
+ const profiles = new Set(entries.filter(e => e.profile).map(e => e.profile));
184
+ const urls = new Set(entries.map(e => e.url));
185
+ const stats = {
186
+ totalEntries: memoryCache.size,
187
+ uniqueProfiles: profiles.size,
188
+ uniqueUrls: urls.size,
189
+ hits: entries.reduce((sum, e) => sum + e.hitCount, 0),
190
+ avgHitCount: memoryCache.size > 0
191
+ ? entries.reduce((sum, e) => sum + e.hitCount, 0) / memoryCache.size
192
+ : 0,
193
+ oldestEntry: memoryCache.size > 0
194
+ ? Math.min(...entries.map(e => e.timestamp))
195
+ : null,
196
+ newestEntry: memoryCache.size > 0
197
+ ? Math.max(...entries.map(e => e.timestamp))
198
+ : null
199
+ };
200
+ console.log('[PageActionCache] Stats:', JSON.stringify(stats));
201
+ let report = `## Page Snapshot Cache Statistics\n\n`;
202
+ report += `- Total Entries: ${stats.totalEntries}\n`;
203
+ report += `- Unique Profiles: ${stats.uniqueProfiles}\n`;
204
+ report += `- Unique URLs: ${stats.uniqueUrls}\n`;
205
+ report += `- Total Hits: ${stats.hits}\n`;
206
+ report += `- Avg Hits per Entry: ${stats.avgHitCount.toFixed(2)}\n`;
207
+ report += `- Hit Rate: ${(stats.totalEntries > 0 ? (stats.hits / stats.totalEntries * 100).toFixed(2) : '0.00')}%\n`;
208
+ if (profiles.size > 0) {
209
+ report += `\n**Profiles:** ${Array.from(profiles).join(', ')}\n`;
210
+ }
211
+ return {
212
+ text: report,
213
+ stats
214
+ };
215
+ }
216
+ });
217
+ // 注册缓存清空工具
218
+ api.registerTool({
219
+ name: 'page_cache_clear',
220
+ description: 'Clear page snapshot cache',
221
+ inputSchema: {
222
+ type: 'object',
223
+ properties: {},
224
+ required: []
225
+ },
226
+ async execute() {
227
+ const count = memoryCache.size;
228
+ memoryCache.clear();
229
+ console.log('[PageActionCache] Cleared', count);
230
+ return {
231
+ text: `Cleared ${count} cache entries`,
232
+ cleared: count
233
+ };
234
+ }
235
+ });
236
+ console.log('[PageActionCache] Registration complete');
12
237
  }
13
238
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AAEH,MAAM,CAAC,OAAO,UAAU,QAAQ;IAC9B,8EAA8E;IAC9E,sEAAsE;AACxE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "page-action-cache",
3
3
  "name": "Page Action Cache",
4
- "version": "2026.2.11",
4
+ "version": "2026.3.2",
5
5
  "description": "Page Action Cache - Browser Client API extension for OpenClaw",
6
6
  "author": "OpenClaw",
7
7
  "license": "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "page-action-cache",
3
- "version": "2026.2.11",
3
+ "version": "2026.3.2",
4
4
  "description": "Page Action Cache - OpenClaw extension",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",