page-action-cache 2026.2.8 → 2026.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/index.d.ts CHANGED
@@ -1,6 +1,18 @@
1
1
  /**
2
2
  * Page Action Cache - OpenClaw Extension
3
- * Safe version with minimal footprint
3
+ * 页面操作缓存扩展
4
4
  */
5
- export default function register(): void;
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
+ /**
14
+ * 主扩展入口
15
+ */
16
+ export default function register(api: OpenClawPluginApi): void;
17
+ export {};
6
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,OAAO,UAAU,QAAQ,IAAI,IAAI,CAEvC"}
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;AAmDD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAgE7D"}
package/dist/index.js CHANGED
@@ -1,8 +1,99 @@
1
1
  /**
2
2
  * Page Action Cache - OpenClaw Extension
3
- * Safe version with minimal footprint
3
+ * 页面操作缓存扩展
4
4
  */
5
- export default function register() {
6
- // Empty implementation - plugin is disabled
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(url, viewport) {
13
+ if (!url)
14
+ return '';
15
+ return viewport ? `${url}:${viewport}` : url;
16
+ }
17
+ /**
18
+ * 清理过期缓存
19
+ */
20
+ function cleanupExpiredCache() {
21
+ const now = Date.now();
22
+ let cleaned = 0;
23
+ for (const [key, entry] of memoryCache.entries()) {
24
+ if (now - entry.timestamp > CACHE_TTL_MS) {
25
+ memoryCache.delete(key);
26
+ cleaned++;
27
+ }
28
+ }
29
+ // LRU 清理
30
+ while (memoryCache.size > MAX_CACHE_SIZE) {
31
+ const oldestKey = memoryCache.keys().next().value;
32
+ if (oldestKey) {
33
+ memoryCache.delete(oldestKey);
34
+ cleaned++;
35
+ }
36
+ }
37
+ return cleaned;
38
+ }
39
+ /**
40
+ * 主扩展入口
41
+ */
42
+ export default function register(api) {
43
+ console.log('[PageActionCache] Starting...');
44
+ // 注册缓存统计工具
45
+ api.registerTool({
46
+ name: 'page_cache_stats',
47
+ description: 'View page snapshot cache statistics',
48
+ inputSchema: {
49
+ type: 'object',
50
+ properties: {},
51
+ required: []
52
+ },
53
+ async execute() {
54
+ const cleaned = cleanupExpiredCache();
55
+ const stats = {
56
+ totalEntries: memoryCache.size,
57
+ hits: Array.from(memoryCache.values()).reduce((sum, e) => sum + e.hitCount, 0),
58
+ avgHitCount: memoryCache.size > 0
59
+ ? Array.from(memoryCache.values()).reduce((sum, e) => sum + e.hitCount, 0) / memoryCache.size
60
+ : 0,
61
+ oldestEntry: memoryCache.size > 0
62
+ ? Math.min(...Array.from(memoryCache.values()).map(e => e.timestamp))
63
+ : null,
64
+ newestEntry: memoryCache.size > 0
65
+ ? Math.max(...Array.from(memoryCache.values()).map(e => e.timestamp))
66
+ : null
67
+ };
68
+ console.log('[PageActionCache] Stats:', JSON.stringify(stats));
69
+ return {
70
+ text: `## Page Snapshot Cache Statistics\n\n` +
71
+ `- Total Entries: ${stats.totalEntries}\n` +
72
+ `- Total Hits: ${stats.hits}\n` +
73
+ `- Hit Rate: ${(stats.totalEntries > 0 ? (stats.hits / stats.totalEntries * 100).toFixed(2) : '0.00')}%\n\n`,
74
+ stats
75
+ };
76
+ }
77
+ });
78
+ // 注册缓存清空工具
79
+ api.registerTool({
80
+ name: 'page_cache_clear',
81
+ description: 'Clear page snapshot cache',
82
+ inputSchema: {
83
+ type: 'object',
84
+ properties: {},
85
+ required: []
86
+ },
87
+ async execute() {
88
+ const count = memoryCache.size;
89
+ memoryCache.clear();
90
+ console.log('[PageActionCache] Cleared', count);
91
+ return {
92
+ text: `Cleared ${count} cache entries`,
93
+ cleared: count
94
+ };
95
+ }
96
+ });
97
+ console.log('[PageActionCache] Registration complete');
7
98
  }
8
99
  //# 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,MAAM,CAAC,OAAO,UAAU,QAAQ;IAC9B,4CAA4C;AAC9C,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.8",
4
+ "version": "2026.2.11",
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.8",
3
+ "version": "2026.3.1",
4
4
  "description": "Page Action Cache - OpenClaw extension",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,7 +27,9 @@
27
27
  "openclaw.plugin.json"
28
28
  ],
29
29
  "openclaw": {
30
- "extensions": ["./dist/index.js"],
30
+ "extensions": [
31
+ "./dist/index.js"
32
+ ],
31
33
  "minVersion": "2026.2.0",
32
34
  "kind": "extension",
33
35
  "configSchema": {