page-action-cache 2026.3.6 → 2026.4.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/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * Page Action Cache - OpenClaw Extension
3
- * 页面操作缓存扩展 (测试版本 - 单个工具)
3
+ * 页面操作缓存扩展
4
4
  */
5
5
  interface OpenClawPluginApi {
6
6
  registerTool(tool: {
7
7
  name: string;
8
+ label: string;
8
9
  description: string;
9
- inputSchema: unknown;
10
- execute: (params: unknown) => Promise<unknown>;
10
+ parameters: unknown;
11
+ execute: (toolCallId: string, params: unknown) => Promise<unknown>;
11
12
  }): void;
12
13
  }
13
14
  /**
@@ -1 +1 @@
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;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAoB7D"}
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,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACpE,GAAG,IAAI,CAAC;CACV;AAyDD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA0O7D"}
package/dist/index.js CHANGED
@@ -1,24 +1,241 @@
1
1
  /**
2
2
  * Page Action Cache - OpenClaw Extension
3
- * 页面操作缓存扩展 (测试版本 - 单个工具)
3
+ * 页面操作缓存扩展
4
4
  */
5
+ // 内存缓存(页面会话级别)
6
+ const memoryCache = new Map();
7
+ const MAX_CACHE_SIZE = 50;
8
+ const CACHE_TTL_MS = 5 * 60 * 1000; // 5 分钟
9
+ /**
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
+ }
5
44
  /**
6
45
  * 主扩展入口
7
46
  */
8
47
  export default function register(api) {
9
48
  console.log('[PageActionCache] Starting...');
10
- // 测试:注册一个简单工具
49
+ // 注册缓存统计工具
50
+ api.registerTool({
51
+ name: 'page_cache_stats',
52
+ label: 'Page Cache Stats',
53
+ description: 'View page snapshot cache statistics',
54
+ parameters: {
55
+ type: 'object',
56
+ properties: {},
57
+ required: []
58
+ },
59
+ execute: async (_toolCallId, _params) => {
60
+ cleanupExpiredCache();
61
+ const entries = Array.from(memoryCache.values());
62
+ const profiles = new Set(entries.filter(e => e.profile).map(e => e.profile));
63
+ const urls = new Set(entries.map(e => e.url));
64
+ const stats = {
65
+ totalEntries: memoryCache.size,
66
+ uniqueProfiles: profiles.size,
67
+ uniqueUrls: urls.size,
68
+ hits: entries.reduce((sum, e) => sum + e.hitCount, 0),
69
+ avgHitCount: memoryCache.size > 0
70
+ ? entries.reduce((sum, e) => sum + e.hitCount, 0) / memoryCache.size
71
+ : 0,
72
+ oldestEntry: memoryCache.size > 0
73
+ ? Math.min(...entries.map(e => e.timestamp))
74
+ : null,
75
+ newestEntry: memoryCache.size > 0
76
+ ? Math.max(...entries.map(e => e.timestamp))
77
+ : null
78
+ };
79
+ console.log('[PageActionCache] Stats:', JSON.stringify(stats));
80
+ let report = `## Page Snapshot Cache Statistics\n\n`;
81
+ report += `- Total Entries: ${stats.totalEntries}\n`;
82
+ report += `- Unique Profiles: ${stats.uniqueProfiles}\n`;
83
+ report += `- Unique URLs: ${stats.uniqueUrls}\n`;
84
+ report += `- Total Hits: ${stats.hits}\n`;
85
+ report += `- Avg Hits per Entry: ${stats.avgHitCount.toFixed(2)}\n`;
86
+ report += `- Hit Rate: ${(stats.totalEntries > 0 ? (stats.hits / stats.totalEntries * 100).toFixed(2) : '0.00')}%\n`;
87
+ if (profiles.size > 0) {
88
+ report += `\n**Profiles:** ${Array.from(profiles).join(', ')}\n`;
89
+ }
90
+ return {
91
+ text: report,
92
+ stats
93
+ };
94
+ }
95
+ });
96
+ // 注册缓存清空工具
11
97
  api.registerTool({
12
- name: 'test_tool',
13
- description: 'A simple test tool',
14
- inputSchema: {
98
+ name: 'page_cache_clear',
99
+ label: 'Clear Page Cache',
100
+ description: 'Clear page snapshot cache',
101
+ parameters: {
15
102
  type: 'object',
16
103
  properties: {},
17
104
  required: []
18
105
  },
19
- async execute() {
106
+ execute: async (_toolCallId, _params) => {
107
+ const count = memoryCache.size;
108
+ memoryCache.clear();
109
+ console.log('[PageActionCache] Cleared', count);
110
+ return {
111
+ text: `Cleared ${count} cache entries`,
112
+ cleared: count
113
+ };
114
+ }
115
+ });
116
+ // 注册手动设置缓存工具
117
+ api.registerTool({
118
+ name: 'page_cache_set',
119
+ label: 'Set Page Cache Entry',
120
+ description: 'Manually add an entry to the page cache',
121
+ parameters: {
122
+ type: 'object',
123
+ properties: {
124
+ url: {
125
+ type: 'string',
126
+ description: 'Page URL'
127
+ },
128
+ targetId: {
129
+ type: 'string',
130
+ description: 'Browser tab target ID'
131
+ },
132
+ profile: {
133
+ type: 'string',
134
+ description: 'Browser profile name'
135
+ },
136
+ refs: {
137
+ type: 'string',
138
+ description: 'Refs type (role or aria)'
139
+ }
140
+ },
141
+ required: ['url', 'targetId']
142
+ },
143
+ execute: async (_toolCallId, params) => {
144
+ const typedParams = params;
145
+ const cacheKey = getCacheKey(typedParams.profile, typedParams.targetId, typedParams.url);
146
+ const existingEntry = memoryCache.get(cacheKey);
147
+ const entry = {
148
+ url: typedParams.url,
149
+ targetId: typedParams.targetId,
150
+ profile: typedParams.profile,
151
+ refs: typedParams.refs,
152
+ timestamp: Date.now(),
153
+ hitCount: existingEntry?.hitCount || 0
154
+ };
155
+ // Refresh insertion order for LRU
156
+ if (existingEntry) {
157
+ memoryCache.delete(cacheKey);
158
+ }
159
+ memoryCache.set(cacheKey, entry);
160
+ // Cleanup if over limit
161
+ if (memoryCache.size > MAX_CACHE_SIZE) {
162
+ const oldestKey = memoryCache.keys().next().value;
163
+ if (oldestKey) {
164
+ memoryCache.delete(oldestKey);
165
+ }
166
+ }
167
+ console.log('[PageActionCache] Set cache:', cacheKey, 'refs:', typedParams.refs);
168
+ return {
169
+ text: `Added cache entry for ${typedParams.url}`,
170
+ cacheKey,
171
+ entry
172
+ };
173
+ }
174
+ });
175
+ // 注册获取缓存工具
176
+ api.registerTool({
177
+ name: 'page_cache_get',
178
+ label: 'Get Page Cache Entry',
179
+ description: 'Get a specific cache entry by URL or targetId',
180
+ parameters: {
181
+ type: 'object',
182
+ properties: {
183
+ url: {
184
+ type: 'string',
185
+ description: 'Page URL (optional if targetId is provided)'
186
+ },
187
+ targetId: {
188
+ type: 'string',
189
+ description: 'Browser tab target ID (optional if URL is provided)'
190
+ },
191
+ profile: {
192
+ type: 'string',
193
+ description: 'Browser profile name (optional)'
194
+ }
195
+ },
196
+ required: []
197
+ },
198
+ execute: async (_toolCallId, params) => {
199
+ const typedParams = params;
200
+ if (!typedParams.url && !typedParams.targetId) {
201
+ return {
202
+ text: 'Error: Either url or targetId must be provided',
203
+ error: 'MISSING_PARAMETER'
204
+ };
205
+ }
206
+ // Generate cache key to search
207
+ const cacheKey = getCacheKey(typedParams.profile, typedParams.targetId, typedParams.url);
208
+ const entry = memoryCache.get(cacheKey);
209
+ if (!entry) {
210
+ // Try to find by partial match
211
+ const matchingEntries = Array.from(memoryCache.values()).filter(e => (typedParams.url && e.url === typedParams.url) ||
212
+ (typedParams.targetId && e.targetId === typedParams.targetId));
213
+ if (matchingEntries.length === 0) {
214
+ return {
215
+ text: `No cache entry found for the provided parameters`,
216
+ found: false
217
+ };
218
+ }
219
+ return {
220
+ text: `Found ${matchingEntries.length} matching cache entries`,
221
+ found: true,
222
+ entries: matchingEntries
223
+ };
224
+ }
225
+ // Increment hit count and refresh LRU
226
+ entry.hitCount++;
227
+ memoryCache.delete(cacheKey);
228
+ memoryCache.set(cacheKey, entry);
229
+ console.log('[PageActionCache] Cache hit:', cacheKey, 'hit count:', entry.hitCount);
20
230
  return {
21
- text: 'Test tool executed successfully'
231
+ text: `Cache entry found for ${entry.url}\n` +
232
+ `- Target ID: ${entry.targetId}\n` +
233
+ `- Profile: ${entry.profile || 'default'}\n` +
234
+ `- Refs: ${entry.refs || 'none'}\n` +
235
+ `- Hits: ${entry.hitCount}\n` +
236
+ `- Age: ${Math.floor((Date.now() - entry.timestamp) / 1000)}s`,
237
+ found: true,
238
+ entry
22
239
  };
23
240
  }
24
241
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAsB;IACrD,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7C,cAAc;IACd,GAAG,CAAC,YAAY,CAAC;QACf,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;QACD,KAAK,CAAC,OAAO;YACX,OAAO;gBACL,IAAI,EAAE,iCAAiC;aAC7B,CAAC;QACf,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "page-action-cache",
3
- "version": "2026.3.6",
3
+ "version": "2026.4.0",
4
4
  "description": "Page Action Cache - OpenClaw extension",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",