page-action-cache 2.0.8 → 2026.2.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.
Files changed (44) hide show
  1. package/README.md +100 -306
  2. package/openclaw.plugin.json +23 -14
  3. package/package.json +28 -21
  4. package/dist/browser-action-executor.d.ts +0 -87
  5. package/dist/browser-action-executor.d.ts.map +0 -1
  6. package/dist/browser-action-executor.js +0 -283
  7. package/dist/browser-action-executor.js.map +0 -1
  8. package/dist/cache-invalidation.d.ts +0 -128
  9. package/dist/cache-invalidation.d.ts.map +0 -1
  10. package/dist/cache-invalidation.js +0 -262
  11. package/dist/cache-invalidation.js.map +0 -1
  12. package/dist/cache-manager.d.ts +0 -83
  13. package/dist/cache-manager.d.ts.map +0 -1
  14. package/dist/cache-manager.js +0 -184
  15. package/dist/cache-manager.js.map +0 -1
  16. package/dist/index.d.ts +0 -10
  17. package/dist/index.d.ts.map +0 -1
  18. package/dist/index.js +0 -48
  19. package/dist/index.js.map +0 -1
  20. package/dist/multi-level-cache.d.ts +0 -127
  21. package/dist/multi-level-cache.d.ts.map +0 -1
  22. package/dist/multi-level-cache.js +0 -362
  23. package/dist/multi-level-cache.js.map +0 -1
  24. package/dist/scenario-recognizer.d.ts +0 -35
  25. package/dist/scenario-recognizer.d.ts.map +0 -1
  26. package/dist/scenario-recognizer.js +0 -93
  27. package/dist/scenario-recognizer.js.map +0 -1
  28. package/dist/types.d.ts +0 -62
  29. package/dist/types.d.ts.map +0 -1
  30. package/dist/types.js +0 -6
  31. package/dist/types.js.map +0 -1
  32. package/dist/variable-extractor.d.ts +0 -56
  33. package/dist/variable-extractor.d.ts.map +0 -1
  34. package/dist/variable-extractor.js +0 -159
  35. package/dist/variable-extractor.js.map +0 -1
  36. package/src/browser-action-executor.ts +0 -337
  37. package/src/cache-invalidation.ts +0 -338
  38. package/src/cache-manager.ts +0 -211
  39. package/src/index.ts +0 -58
  40. package/src/multi-level-cache.ts +0 -478
  41. package/src/scenario-recognizer.ts +0 -121
  42. package/src/types-mock.d.ts +0 -18
  43. package/src/types.ts +0 -66
  44. package/src/variable-extractor.ts +0 -204
@@ -1,127 +0,0 @@
1
- /**
2
- * Multi-Level Cache - Page Action Cache
3
- * 多级缓存管理器 - L3/L2/L1 缓存层次
4
- */
5
- import type { CacheEntry, ScenarioType, CacheActionType } from './types.js';
6
- /**
7
- * 缓存级别
8
- */
9
- export type CacheLevel = 'L3' | 'L2' | 'L1';
10
- /**
11
- * 缓存条目扩展
12
- */
13
- interface ExtendedCacheEntry extends CacheEntry {
14
- level: CacheLevel;
15
- createdAt: number;
16
- lastAccessed: number;
17
- accessCount: number;
18
- expiresAt: number;
19
- llmClassificationScore?: number;
20
- }
21
- /**
22
- * 缓存策略
23
- */
24
- type CacheStrategy = 'auto' | 'l3-only' | 'l2-only' | 'l1-only';
25
- /**
26
- * 多级缓存管理器
27
- */
28
- export declare class MultiLevelCache {
29
- private levels;
30
- private levelConfigs;
31
- private strategy;
32
- private llmThreshold;
33
- constructor();
34
- /**
35
- * 初始化缓存级别
36
- */
37
- private initializeLevels;
38
- /**
39
- * 设置缓存策略
40
- */
41
- setStrategy(strategy: CacheStrategy): void;
42
- /**
43
- * 设置 LLM 分类阈值
44
- */
45
- setLLMThreshold(threshold: number): void;
46
- /**
47
- * 添加缓存条目
48
- */
49
- addCache(url: string, viewport: string, actions: Array<{
50
- type: CacheActionType;
51
- params?: any;
52
- successCount: number;
53
- failCount: number;
54
- }>, scenario?: ScenarioType, llmScore?: number): string;
55
- /**
56
- * 确定缓存级别
57
- */
58
- private determineCacheLevel;
59
- /**
60
- * 查询缓存
61
- */
62
- queryCache(url: string, viewport: string): ExtendedCacheEntry | null;
63
- /**
64
- * 判断是否应该提升缓存级别
65
- */
66
- private shouldPromote;
67
- /**
68
- * 提升缓存条目到更高级别
69
- */
70
- private promoteEntry;
71
- /**
72
- * 确保缓存容量
73
- */
74
- private ensureCapacity;
75
- /**
76
- * 驱逐缓存条目(LRU 策略)
77
- */
78
- private evictEntry;
79
- /**
80
- * 删除缓存条目
81
- */
82
- deleteCache(url: string, viewport: string): boolean;
83
- /**
84
- * 删除 URL 相关的所有缓存
85
- */
86
- deleteCacheByUrl(url: string): void;
87
- /**
88
- * 清空指定级别的缓存
89
- */
90
- clearLevel(level: CacheLevel): void;
91
- /**
92
- * 清空所有缓存
93
- */
94
- clearAll(): void;
95
- /**
96
- * 获取缓存统计
97
- */
98
- getStats(): {
99
- totalEntries: number;
100
- totalHits: number;
101
- hitRate: number;
102
- levelStats: Record<CacheLevel, {
103
- size: number;
104
- maxCapacity: number;
105
- usageRate: number;
106
- avgAccessCount: number;
107
- }>;
108
- };
109
- /**
110
- * 获取查询计数(用于统计)
111
- */
112
- private getQueryCount;
113
- /**
114
- * 生成缓存键
115
- */
116
- private getCacheKey;
117
- /**
118
- * 清理过期条目
119
- */
120
- cleanupExpired(): number;
121
- }
122
- /**
123
- * 单例导出
124
- */
125
- export declare const multiLevelCache: MultiLevelCache;
126
- export {};
127
- //# sourceMappingURL=multi-level-cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-level-cache.d.ts","sourceRoot":"","sources":["../src/multi-level-cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAa5C;;GAEG;AACH,UAAU,kBAAmB,SAAQ,UAAU;IAC7C,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,KAAK,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEhE;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA+D;IAC7E,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,YAAY,CAAe;;IAMnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkCxB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI1C;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,QAAQ,CACN,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,eAAe,CAAC;QACtB,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,EACF,QAAQ,CAAC,EAAE,YAAY,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM;IAgCT;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAsCpE;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAcnD;;OAEG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAoBnC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IASnC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAQhB;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE;YAC7B,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC,CAAC;KACJ;IAsCD;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,cAAc,IAAI,MAAM;CAyBzB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -1,362 +0,0 @@
1
- /**
2
- * Multi-Level Cache - Page Action Cache
3
- * 多级缓存管理器 - L3/L2/L1 缓存层次
4
- */
5
- /**
6
- * 多级缓存管理器
7
- */
8
- export class MultiLevelCache {
9
- levels = new Map();
10
- levelConfigs = new Map();
11
- strategy = 'auto';
12
- llmThreshold = 0.8;
13
- constructor() {
14
- this.initializeLevels();
15
- }
16
- /**
17
- * 初始化缓存级别
18
- */
19
- initializeLevels() {
20
- // L3: 持久化缓存,最大容量,最长 TTL
21
- this.levelConfigs.set('L3', {
22
- level: 'L3',
23
- maxSize: 1000,
24
- ttl: 30 * 24 * 60 * 60 * 1000, // 30 天
25
- hitPriority: 1,
26
- description: '持久化缓存,适合稳定的重复操作'
27
- });
28
- // L2: 内存缓存,中等容量,中等 TTL
29
- this.levelConfigs.set('L2', {
30
- level: 'L2',
31
- maxSize: 200,
32
- ttl: 7 * 24 * 60 * 60 * 1000, // 7 天
33
- hitPriority: 2,
34
- description: '内存缓存,适合频繁访问的操作'
35
- });
36
- // L1: 热点缓存,小容量,短 TTL
37
- this.levelConfigs.set('L1', {
38
- level: 'L1',
39
- maxSize: 50,
40
- ttl: 1 * 24 * 60 * 60 * 1000, // 1 天
41
- hitPriority: 3,
42
- description: '热点缓存,适合当前会话的操作'
43
- });
44
- // 初始化各级缓存
45
- this.levels.set('L3', new Map());
46
- this.levels.set('L2', new Map());
47
- this.levels.set('L1', new Map());
48
- }
49
- /**
50
- * 设置缓存策略
51
- */
52
- setStrategy(strategy) {
53
- this.strategy = strategy;
54
- }
55
- /**
56
- * 设置 LLM 分类阈值
57
- */
58
- setLLMThreshold(threshold) {
59
- this.llmThreshold = Math.max(0, Math.min(1, threshold));
60
- }
61
- /**
62
- * 添加缓存条目
63
- */
64
- addCache(url, viewport, actions, scenario, llmScore) {
65
- const key = this.getCacheKey(url, viewport);
66
- const level = this.determineCacheLevel(scenario, llmScore);
67
- const entry = {
68
- id: Date.now().toString(),
69
- url,
70
- viewport,
71
- actions,
72
- scenario: scenario || 'unknown',
73
- timestamp: Date.now(),
74
- hitRate: 0,
75
- savedActions: 0,
76
- savedTime: 0,
77
- level,
78
- createdAt: Date.now(),
79
- lastAccessed: Date.now(),
80
- accessCount: 0,
81
- expiresAt: Date.now() + this.levelConfigs.get(level).ttl,
82
- llmClassificationScore: llmScore
83
- };
84
- // 确保不超过容量限制
85
- this.ensureCapacity(level);
86
- const cache = this.levels.get(level);
87
- cache.set(key, entry);
88
- console.log(`[MultiLevelCache] Added entry to ${level}: ${key}`);
89
- return entry.id;
90
- }
91
- /**
92
- * 确定缓存级别
93
- */
94
- determineCacheLevel(scenario, llmScore) {
95
- // 如果指定了特定策略
96
- if (this.strategy === 'l3-only')
97
- return 'L3';
98
- if (this.strategy === 'l2-only')
99
- return 'L2';
100
- if (this.strategy === 'l1-only')
101
- return 'L1';
102
- // 自动策略:根据场景和 LLM 分类分数确定级别
103
- if (llmScore !== undefined) {
104
- if (llmScore >= this.llmThreshold) {
105
- return 'L3'; // 高置信度使用 L3
106
- }
107
- else if (llmScore >= 0.5) {
108
- return 'L2'; // 中等置信度使用 L2
109
- }
110
- }
111
- // 根据场景确定级别
112
- switch (scenario) {
113
- case 'login':
114
- case 'payment':
115
- return 'L3'; // 敏感操作使用 L3
116
- case 'search':
117
- case 'checkout':
118
- return 'L2'; // 重要操作使用 L2
119
- default:
120
- return 'L1'; // 一般操作使用 L1
121
- }
122
- }
123
- /**
124
- * 查询缓存
125
- */
126
- queryCache(url, viewport) {
127
- const key = this.getCacheKey(url, viewport);
128
- // 按优先级从高到低查询
129
- const levelsToCheck = ['L1', 'L2', 'L3'];
130
- for (const level of levelsToCheck) {
131
- if (this.strategy !== 'auto' && !this.strategy.includes(level)) {
132
- continue;
133
- }
134
- const cache = this.levels.get(level);
135
- if (!cache)
136
- continue;
137
- const entry = cache.get(key);
138
- if (entry) {
139
- // 检查是否过期
140
- if (Date.now() > entry.expiresAt) {
141
- cache.delete(key);
142
- continue;
143
- }
144
- // 更新访问统计
145
- entry.lastAccessed = Date.now();
146
- entry.accessCount++;
147
- // 如果不是当前最高级别,考虑提升
148
- if (this.shouldPromote(entry, level)) {
149
- this.promoteEntry(entry, level);
150
- }
151
- return entry;
152
- }
153
- }
154
- return null;
155
- }
156
- /**
157
- * 判断是否应该提升缓存级别
158
- */
159
- shouldPromote(entry, currentLevel) {
160
- if (currentLevel === 'L3')
161
- return false;
162
- // 访问次数超过阈值则提升
163
- const accessThreshold = currentLevel === 'L1' ? 5 : 10;
164
- if (entry.accessCount >= accessThreshold) {
165
- return true;
166
- }
167
- // 成功率高且场景重要则提升
168
- const totalAttempts = entry.actions.reduce((sum, a) => sum + a.successCount + a.failCount, 0);
169
- if (totalAttempts > 0) {
170
- const successRate = entry.actions.reduce((sum, a) => sum + a.successCount, 0) / totalAttempts;
171
- if (successRate > 0.9 && (entry.scenario === 'login' || entry.scenario === 'payment')) {
172
- return true;
173
- }
174
- }
175
- return false;
176
- }
177
- /**
178
- * 提升缓存条目到更高级别
179
- */
180
- promoteEntry(entry, fromLevel) {
181
- const targetLevel = fromLevel === 'L1' ? 'L2' : 'L3';
182
- const sourceCache = this.levels.get(fromLevel);
183
- const targetCache = this.levels.get(targetLevel);
184
- if (!sourceCache || !targetCache) {
185
- return;
186
- }
187
- const key = this.getCacheKey(entry.url, entry.viewport || '');
188
- sourceCache.delete(key);
189
- entry.level = targetLevel;
190
- entry.expiresAt = Date.now() + this.levelConfigs.get(targetLevel).ttl;
191
- this.ensureCapacity(targetLevel);
192
- targetCache.set(key, entry);
193
- console.log(`[MultiLevelCache] Promoted entry from ${fromLevel} to ${targetLevel}: ${key}`);
194
- }
195
- /**
196
- * 确保缓存容量
197
- */
198
- ensureCapacity(level) {
199
- const config = this.levelConfigs.get(level);
200
- if (!config)
201
- return;
202
- const cache = this.levels.get(level);
203
- if (!cache)
204
- return;
205
- while (cache.size >= config.maxSize) {
206
- this.evictEntry(level);
207
- }
208
- }
209
- /**
210
- * 驱逐缓存条目(LRU 策略)
211
- */
212
- evictEntry(level) {
213
- const cache = this.levels.get(level);
214
- if (!cache || cache.size === 0)
215
- return;
216
- let oldestKey = null;
217
- let oldestTime = Infinity;
218
- for (const [key, entry] of cache.entries()) {
219
- if (entry.lastAccessed < oldestTime) {
220
- oldestTime = entry.lastAccessed;
221
- oldestKey = key;
222
- }
223
- }
224
- if (oldestKey) {
225
- cache.delete(oldestKey);
226
- console.log(`[MultiLevelCache] Evicted entry from ${level}: ${oldestKey}`);
227
- }
228
- }
229
- /**
230
- * 删除缓存条目
231
- */
232
- deleteCache(url, viewport) {
233
- const key = this.getCacheKey(url, viewport);
234
- let deleted = false;
235
- for (const [level, cache] of this.levels.entries()) {
236
- if (cache.delete(key)) {
237
- deleted = true;
238
- console.log(`[MultiLevelCache] Deleted entry from ${level}: ${key}`);
239
- }
240
- }
241
- return deleted;
242
- }
243
- /**
244
- * 删除 URL 相关的所有缓存
245
- */
246
- deleteCacheByUrl(url) {
247
- const urlPrefix = `${url}:`;
248
- for (const [_level, cache] of this.levels.entries()) {
249
- const keysToDelete = [];
250
- for (const key of cache.keys()) {
251
- if (key.startsWith(urlPrefix)) {
252
- keysToDelete.push(key);
253
- }
254
- }
255
- for (const key of keysToDelete) {
256
- cache.delete(key);
257
- }
258
- }
259
- console.log(`[MultiLevelCache] Deleted cache entries for URL: ${url}`);
260
- }
261
- /**
262
- * 清空指定级别的缓存
263
- */
264
- clearLevel(level) {
265
- const cache = this.levels.get(level);
266
- if (cache) {
267
- const count = cache.size;
268
- cache.clear();
269
- console.log(`[MultiLevelCache] Cleared ${count} entries from ${level}`);
270
- }
271
- }
272
- /**
273
- * 清空所有缓存
274
- */
275
- clearAll() {
276
- for (const [level, cache] of this.levels.entries()) {
277
- const count = cache.size;
278
- cache.clear();
279
- console.log(`[MultiLevelCache] Cleared ${count} entries from ${level}`);
280
- }
281
- }
282
- /**
283
- * 获取缓存统计
284
- */
285
- getStats() {
286
- let totalEntries = 0;
287
- let totalHits = 0;
288
- const levelStats = {};
289
- for (const [level, cache] of this.levels.entries()) {
290
- const config = this.levelConfigs.get(level);
291
- totalEntries += cache.size;
292
- let levelHits = 0;
293
- let totalAccess = 0;
294
- for (const entry of cache.values()) {
295
- totalHits += entry.accessCount;
296
- levelHits += entry.accessCount;
297
- totalAccess += entry.accessCount;
298
- }
299
- levelStats[level] = {
300
- size: cache.size,
301
- maxCapacity: config.maxSize,
302
- usageRate: cache.size / config.maxSize,
303
- avgAccessCount: cache.size > 0 ? levelHits / cache.size : 0
304
- };
305
- }
306
- // 计算命中率
307
- const totalQueries = this.getQueryCount();
308
- const hitRate = totalQueries > 0 ? (totalHits / totalQueries) * 100 : 0;
309
- return {
310
- totalEntries,
311
- totalHits,
312
- hitRate: Math.round(hitRate * 100) / 100,
313
- levelStats
314
- };
315
- }
316
- /**
317
- * 获取查询计数(用于统计)
318
- */
319
- getQueryCount() {
320
- let count = 0;
321
- for (const cache of this.levels.values()) {
322
- for (const entry of cache.values()) {
323
- count += entry.accessCount;
324
- }
325
- }
326
- return count || 1; // 避免除以零
327
- }
328
- /**
329
- * 生成缓存键
330
- */
331
- getCacheKey(url, viewport) {
332
- return `${url}:${viewport}`;
333
- }
334
- /**
335
- * 清理过期条目
336
- */
337
- cleanupExpired() {
338
- let cleaned = 0;
339
- const now = Date.now();
340
- for (const [_level, cache] of this.levels.entries()) {
341
- const expiredKeys = [];
342
- for (const [key, entry] of cache.entries()) {
343
- if (now > entry.expiresAt) {
344
- expiredKeys.push(key);
345
- }
346
- }
347
- for (const key of expiredKeys) {
348
- cache.delete(key);
349
- cleaned++;
350
- }
351
- }
352
- if (cleaned > 0) {
353
- console.log(`[MultiLevelCache] Cleaned up ${cleaned} expired entries`);
354
- }
355
- return cleaned;
356
- }
357
- }
358
- /**
359
- * 单例导出
360
- */
361
- export const multiLevelCache = new MultiLevelCache();
362
- //# sourceMappingURL=multi-level-cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multi-level-cache.js","sourceRoot":"","sources":["../src/multi-level-cache.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Scenario Recognizer - Page Action Cache
3
- * 场景识别器 - 识别用户操作场景
4
- */
5
- import type { ScenarioType } from './types.js';
6
- /**
7
- * 场景识别器
8
- */
9
- export declare class ScenarioRecognizer {
10
- /**
11
- * 通过 URL 识别场景
12
- */
13
- recognizeByUrl(url: string): ScenarioType;
14
- /**
15
- * 通过页面内容识别场景
16
- */
17
- recognizeByContent(content: string): ScenarioType;
18
- /**
19
- * 综合识别(URL + 内容)
20
- */
21
- recognize(url: string, content?: string): ScenarioType;
22
- /**
23
- * 添加自定义场景规则
24
- */
25
- addCustomRule(pattern: RegExp, scenario: ScenarioType): void;
26
- /**
27
- * 添加内容关键词
28
- */
29
- addContentKeyword(scenario: ScenarioType, keywords: string[]): void;
30
- }
31
- /**
32
- * 单例导出
33
- */
34
- export declare const scenarioRecognizer: ScenarioRecognizer;
35
- //# sourceMappingURL=scenario-recognizer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scenario-recognizer.d.ts","sourceRoot":"","sources":["../src/scenario-recognizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0C/C;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY;IASzC;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAiBjD;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY;IActD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI;IAI5D;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;CAKpE;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -1,93 +0,0 @@
1
- /**
2
- * Scenario Recognizer - Page Action Cache
3
- * 场景识别器 - 识别用户操作场景
4
- */
5
- /**
6
- * 场景识别规则
7
- */
8
- const SCENARIO_PATTERNS = [
9
- // 登录场景
10
- { pattern: /(login|signin|auth|oauth|sso|account|register|signup)/i, scenario: 'login' },
11
- // 搜索场景
12
- { pattern: /(search|query|find|explore|discover)/i, scenario: 'search' },
13
- // 支付场景
14
- { pattern: /(payment|pay|checkout|billing|invoice|transaction)/i, scenario: 'payment' },
15
- // 结账场景
16
- { pattern: /(cart|basket|order|purchase|buy)/i, scenario: 'checkout' },
17
- // 电商场景
18
- { pattern: /(shop|store|product|item|goods|marketplace)/i, scenario: 'checkout' }
19
- ];
20
- /**
21
- * 页面内容关键词
22
- */
23
- const CONTENT_KEYWORDS = {
24
- login: ['username', 'password', 'email', 'phone', '登录', '密码', '用户名', '邮箱', '手机号', 'sign in', 'log in'],
25
- search: ['search', 'query', '查找', '搜索', '输入', 'input'],
26
- payment: ['credit card', 'debit card', 'payment method', '银行卡', '信用卡', '支付方式', 'cvv', 'expiry'],
27
- checkout: ['cart', 'total', 'subtotal', 'shipping', '购物车', '总计', '运费', '收货地址'],
28
- general: [],
29
- unknown: []
30
- };
31
- /**
32
- * 场景识别器
33
- */
34
- export class ScenarioRecognizer {
35
- /**
36
- * 通过 URL 识别场景
37
- */
38
- recognizeByUrl(url) {
39
- for (const { pattern, scenario } of SCENARIO_PATTERNS) {
40
- if (pattern.test(url)) {
41
- return scenario;
42
- }
43
- }
44
- return 'general';
45
- }
46
- /**
47
- * 通过页面内容识别场景
48
- */
49
- recognizeByContent(content) {
50
- const lowerContent = content.toLowerCase();
51
- for (const [scenario, keywords] of Object.entries(CONTENT_KEYWORDS)) {
52
- if (keywords.length > 0) {
53
- const matchedKeywords = keywords.filter(keyword => lowerContent.includes(keyword.toLowerCase()));
54
- if (matchedKeywords.length >= 2) {
55
- return scenario;
56
- }
57
- }
58
- }
59
- return 'general';
60
- }
61
- /**
62
- * 综合识别(URL + 内容)
63
- */
64
- recognize(url, content) {
65
- const urlScenario = this.recognizeByUrl(url);
66
- if (urlScenario !== 'general' && urlScenario !== 'unknown') {
67
- return urlScenario;
68
- }
69
- if (content) {
70
- return this.recognizeByContent(content);
71
- }
72
- return urlScenario;
73
- }
74
- /**
75
- * 添加自定义场景规则
76
- */
77
- addCustomRule(pattern, scenario) {
78
- SCENARIO_PATTERNS.unshift({ pattern, scenario });
79
- }
80
- /**
81
- * 添加内容关键词
82
- */
83
- addContentKeyword(scenario, keywords) {
84
- if (CONTENT_KEYWORDS[scenario]) {
85
- CONTENT_KEYWORDS[scenario].push(...keywords);
86
- }
87
- }
88
- }
89
- /**
90
- * 单例导出
91
- */
92
- export const scenarioRecognizer = new ScenarioRecognizer();
93
- //# sourceMappingURL=scenario-recognizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scenario-recognizer.js","sourceRoot":"","sources":["../src/scenario-recognizer.ts"],"names":[],"mappings":"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"}