page-action-cache 2026.3.1 → 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
@@ -10,9 +10,18 @@ interface OpenClawPluginApi {
10
10
  execute: (params: unknown) => Promise<unknown>;
11
11
  }): void;
12
12
  }
13
+ interface BeforeToolCallResult {
14
+ params?: Record<string, unknown>;
15
+ block?: boolean;
16
+ blockReason?: string;
17
+ }
13
18
  /**
14
19
  * 主扩展入口
15
20
  */
16
- export default function register(api: OpenClawPluginApi): 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;
17
26
  export {};
18
27
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAmDD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAgE7D"}
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
@@ -9,10 +9,15 @@ const CACHE_TTL_MS = 5 * 60 * 1000; // 5 分钟
9
9
  /**
10
10
  * 生成缓存键
11
11
  */
12
- function getCacheKey(url, viewport) {
13
- if (!url)
14
- return '';
15
- return viewport ? `${url}:${viewport}` : url;
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(':');
16
21
  }
17
22
  /**
18
23
  * 清理过期缓存
@@ -41,6 +46,128 @@ function cleanupExpiredCache() {
41
46
  */
42
47
  export default function register(api) {
43
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
+ }
44
171
  // 注册缓存统计工具
45
172
  api.registerTool({
46
173
  name: 'page_cache_stats',
@@ -51,26 +178,38 @@ export default function register(api) {
51
178
  required: []
52
179
  },
53
180
  async execute() {
54
- const cleaned = cleanupExpiredCache();
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));
55
185
  const stats = {
56
186
  totalEntries: memoryCache.size,
57
- hits: Array.from(memoryCache.values()).reduce((sum, e) => sum + e.hitCount, 0),
187
+ uniqueProfiles: profiles.size,
188
+ uniqueUrls: urls.size,
189
+ hits: entries.reduce((sum, e) => sum + e.hitCount, 0),
58
190
  avgHitCount: memoryCache.size > 0
59
- ? Array.from(memoryCache.values()).reduce((sum, e) => sum + e.hitCount, 0) / memoryCache.size
191
+ ? entries.reduce((sum, e) => sum + e.hitCount, 0) / memoryCache.size
60
192
  : 0,
61
193
  oldestEntry: memoryCache.size > 0
62
- ? Math.min(...Array.from(memoryCache.values()).map(e => e.timestamp))
194
+ ? Math.min(...entries.map(e => e.timestamp))
63
195
  : null,
64
196
  newestEntry: memoryCache.size > 0
65
- ? Math.max(...Array.from(memoryCache.values()).map(e => e.timestamp))
197
+ ? Math.max(...entries.map(e => e.timestamp))
66
198
  : null
67
199
  };
68
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
+ }
69
211
  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`,
212
+ text: report,
74
213
  stats
75
214
  };
76
215
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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.3.1",
3
+ "version": "2026.3.2",
4
4
  "description": "Page Action Cache - OpenClaw extension",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,9 +27,7 @@
27
27
  "openclaw.plugin.json"
28
28
  ],
29
29
  "openclaw": {
30
- "extensions": [
31
- "./dist/index.js"
32
- ],
30
+ "extensions": ["./dist/index.js"],
33
31
  "minVersion": "2026.2.0",
34
32
  "kind": "extension",
35
33
  "configSchema": {