page-action-cache 1.0.4 → 2.0.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/README.md +399 -0
- package/dist/browser-action-executor.d.ts +87 -0
- package/dist/browser-action-executor.d.ts.map +1 -0
- package/dist/browser-action-executor.js +283 -0
- package/dist/browser-action-executor.js.map +1 -0
- package/dist/cache-invalidation.d.ts +128 -0
- package/dist/cache-invalidation.d.ts.map +1 -0
- package/dist/cache-invalidation.js +262 -0
- package/dist/cache-invalidation.js.map +1 -0
- package/dist/cache-manager.d.ts +83 -0
- package/dist/cache-manager.d.ts.map +1 -0
- package/dist/cache-manager.js +184 -0
- package/dist/cache-manager.js.map +1 -0
- package/dist/index.d.ts +7 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +249 -31
- package/dist/index.js.map +1 -1
- package/dist/multi-level-cache.d.ts +127 -0
- package/dist/multi-level-cache.d.ts.map +1 -0
- package/dist/multi-level-cache.js +362 -0
- package/dist/multi-level-cache.js.map +1 -0
- package/dist/scenario-recognizer.d.ts +17 -27
- package/dist/scenario-recognizer.d.ts.map +1 -1
- package/dist/scenario-recognizer.js +63 -183
- package/dist/scenario-recognizer.js.map +1 -1
- package/dist/types.d.ts +38 -312
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -4
- package/dist/types.js.map +1 -1
- package/dist/variable-extractor.d.ts +56 -0
- package/dist/variable-extractor.d.ts.map +1 -0
- package/dist/variable-extractor.js +159 -0
- package/dist/variable-extractor.js.map +1 -0
- package/openclaw.plugin.json +12 -190
- package/package.json +29 -45
- package/src/browser-action-executor.ts +337 -0
- package/src/cache-invalidation.ts +338 -0
- package/src/cache-manager.ts +211 -0
- package/src/index.ts +306 -0
- package/src/multi-level-cache.ts +478 -0
- package/src/scenario-recognizer.ts +121 -0
- package/src/types-mock.d.ts +18 -0
- package/src/types.ts +66 -0
- package/src/variable-extractor.ts +204 -0
- package/dist/actions-executor.d.ts +0 -62
- package/dist/actions-executor.d.ts.map +0 -1
- package/dist/actions-executor.js +0 -339
- package/dist/actions-executor.js.map +0 -1
- package/dist/cache-invalidator.d.ts +0 -70
- package/dist/cache-invalidator.d.ts.map +0 -1
- package/dist/cache-invalidator.js +0 -212
- package/dist/cache-invalidator.js.map +0 -1
- package/dist/cache-store.d.ts +0 -80
- package/dist/cache-store.d.ts.map +0 -1
- package/dist/cache-store.js +0 -361
- package/dist/cache-store.js.map +0 -1
- package/dist/cache-strategy.d.ts +0 -65
- package/dist/cache-strategy.d.ts.map +0 -1
- package/dist/cache-strategy.js +0 -237
- package/dist/cache-strategy.js.map +0 -1
- package/dist/hooks-entry.d.ts +0 -29
- package/dist/hooks-entry.d.ts.map +0 -1
- package/dist/hooks-entry.js +0 -83
- package/dist/hooks-entry.js.map +0 -1
- package/dist/hooks.d.ts +0 -10
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js +0 -277
- package/dist/hooks.js.map +0 -1
- package/dist/security-policy.d.ts +0 -62
- package/dist/security-policy.d.ts.map +0 -1
- package/dist/security-policy.js +0 -219
- package/dist/security-policy.js.map +0 -1
- package/dist/tools.d.ts +0 -209
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -383
- package/dist/tools.js.map +0 -1
- package/dist/ux-enhancer.d.ts +0 -60
- package/dist/ux-enhancer.d.ts.map +0 -1
- package/dist/ux-enhancer.js +0 -218
- package/dist/ux-enhancer.js.map +0 -1
- package/dist/variable-resolver.d.ts +0 -28
- package/dist/variable-resolver.d.ts.map +0 -1
- package/dist/variable-resolver.js +0 -201
- package/dist/variable-resolver.js.map +0 -1
- package/docs/API.md +0 -555
- package/docs/IMPLEMENTATION.md +0 -1792
- package/docs/INTEGRATION.md +0 -387
- package/docs/README.md +0 -183
- package/skills/page-action-cache/SKILL.md +0 -216
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEtF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/F;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,CAAC;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAChE,iBAAiB,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B"}
|
package/dist/types.js
CHANGED
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variable Extractor - Page Action Cache
|
|
3
|
+
* 变量提取器 - 从用户输入中提取动态变量
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 提取的变量
|
|
7
|
+
*/
|
|
8
|
+
export interface ExtractedVariable {
|
|
9
|
+
name: string;
|
|
10
|
+
value: string;
|
|
11
|
+
description: string;
|
|
12
|
+
confidence: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 变量提取结果
|
|
16
|
+
*/
|
|
17
|
+
export interface ExtractionResult {
|
|
18
|
+
variables: ExtractedVariable[];
|
|
19
|
+
rawText: string;
|
|
20
|
+
confidence: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 变量提取器
|
|
24
|
+
*/
|
|
25
|
+
export declare class VariableExtractor {
|
|
26
|
+
private customRules;
|
|
27
|
+
/**
|
|
28
|
+
* 从文本中提取变量
|
|
29
|
+
*/
|
|
30
|
+
extract(text: string): ExtractionResult;
|
|
31
|
+
/**
|
|
32
|
+
* 计算单个变量的置信度
|
|
33
|
+
*/
|
|
34
|
+
private calculateConfidence;
|
|
35
|
+
/**
|
|
36
|
+
* 计算整体置信度
|
|
37
|
+
*/
|
|
38
|
+
private calculateOverallConfidence;
|
|
39
|
+
/**
|
|
40
|
+
* 添加自定义变量规则
|
|
41
|
+
*/
|
|
42
|
+
addCustomRule(name: string, pattern: RegExp, description: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* 获取变量替换模板
|
|
45
|
+
*/
|
|
46
|
+
getTemplate(variables: ExtractedVariable[]): string;
|
|
47
|
+
/**
|
|
48
|
+
* 验证变量值
|
|
49
|
+
*/
|
|
50
|
+
validate(variableName: string, value: string): boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 单例导出
|
|
54
|
+
*/
|
|
55
|
+
export declare const variableExtractor: VariableExtractor;
|
|
56
|
+
//# sourceMappingURL=variable-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-extractor.d.ts","sourceRoot":"","sources":["../src/variable-extractor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAsB;IAEzC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAkCvC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAWlC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAIvE;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM;IAUnD;;OAEG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;CAMvD;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variable Extractor - Page Action Cache
|
|
3
|
+
* 变量提取器 - 从用户输入中提取动态变量
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 常见变量规则
|
|
7
|
+
*/
|
|
8
|
+
const VARIABLE_RULES = [
|
|
9
|
+
{
|
|
10
|
+
name: 'email',
|
|
11
|
+
pattern: /([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/g,
|
|
12
|
+
description: '电子邮件地址'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'phone',
|
|
16
|
+
pattern: /(\d{11}|\d{3}[-.\s]?\d{4}[-.\s]?\d{4}|\+?[\d\s-]{10,})/g,
|
|
17
|
+
description: '电话号码'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'date',
|
|
21
|
+
pattern: /(\d{4}[-/年]\d{1,2}[-/月]\d{1,2}日?|\d{1,2}[-/]\d{1,2}[-/]\d{4})/g,
|
|
22
|
+
description: '日期'
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'time',
|
|
26
|
+
pattern: /(\d{1,2}:\d{2}(:\d{2})?)/g,
|
|
27
|
+
description: '时间'
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'number',
|
|
31
|
+
pattern: /(\d+(?:,\d{3})*(?:\.\d+)?)/g,
|
|
32
|
+
description: '数字'
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'url',
|
|
36
|
+
pattern: /(https?:\/\/[^\s<>"]+|www\.[^\s<>"]+)/g,
|
|
37
|
+
description: '网址'
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'amount',
|
|
41
|
+
pattern: /(?:¥|\$|¥|€|£)?\s*(\d+(?:,\d{3})*(?:\.\d{2})?)\s*(?:元|dollars?|euros?|pounds?)?/gi,
|
|
42
|
+
description: '金额'
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'username',
|
|
46
|
+
pattern: /(?:用户名|username|user|account)\s*[::]?\s*([^\s,,]+)/gi,
|
|
47
|
+
description: '用户名'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'password',
|
|
51
|
+
pattern: /(?:密码|password|pwd)\s*[::]?\s*([^\s,,]+)/gi,
|
|
52
|
+
description: '密码'
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'product_name',
|
|
56
|
+
pattern: /(?:商品|产品|product|item)\s*[::]?\s*([^\n,,]+)/gi,
|
|
57
|
+
description: '商品名称'
|
|
58
|
+
}
|
|
59
|
+
];
|
|
60
|
+
/**
|
|
61
|
+
* 变量提取器
|
|
62
|
+
*/
|
|
63
|
+
export class VariableExtractor {
|
|
64
|
+
customRules = [];
|
|
65
|
+
/**
|
|
66
|
+
* 从文本中提取变量
|
|
67
|
+
*/
|
|
68
|
+
extract(text) {
|
|
69
|
+
const variables = [];
|
|
70
|
+
const seenValues = new Set();
|
|
71
|
+
// 应用内置规则
|
|
72
|
+
for (const rule of [...VARIABLE_RULES, ...this.customRules]) {
|
|
73
|
+
const matches = text.matchAll(rule.pattern);
|
|
74
|
+
for (const match of matches) {
|
|
75
|
+
const value = match[1] || match[0];
|
|
76
|
+
// 避免重复提取相同值
|
|
77
|
+
const key = `${rule.name}:${value}`;
|
|
78
|
+
if (seenValues.has(key)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
seenValues.add(key);
|
|
82
|
+
variables.push({
|
|
83
|
+
name: rule.name,
|
|
84
|
+
value: value.trim(),
|
|
85
|
+
description: rule.description,
|
|
86
|
+
confidence: this.calculateConfidence(text, rule.pattern)
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
variables,
|
|
92
|
+
rawText: text,
|
|
93
|
+
confidence: this.calculateOverallConfidence(variables)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 计算单个变量的置信度
|
|
98
|
+
*/
|
|
99
|
+
calculateConfidence(text, pattern) {
|
|
100
|
+
const matches = text.match(pattern);
|
|
101
|
+
if (!matches)
|
|
102
|
+
return 0;
|
|
103
|
+
// 匹配次数越多,置信度越高
|
|
104
|
+
const matchCount = matches.length;
|
|
105
|
+
let confidence = Math.min(matchCount * 0.3, 1.0);
|
|
106
|
+
// 如果匹配的值周围有特定关键词,提高置信度
|
|
107
|
+
const contextKeywords = ['填写', '输入', '请输入', 'enter', 'fill in', 'please'];
|
|
108
|
+
for (const keyword of contextKeywords) {
|
|
109
|
+
if (text.toLowerCase().includes(keyword.toLowerCase())) {
|
|
110
|
+
confidence = Math.min(confidence + 0.2, 1.0);
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return confidence;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 计算整体置信度
|
|
118
|
+
*/
|
|
119
|
+
calculateOverallConfidence(variables) {
|
|
120
|
+
if (variables.length === 0)
|
|
121
|
+
return 0;
|
|
122
|
+
const avgConfidence = variables.reduce((sum, v) => sum + v.confidence, 0) / variables.length;
|
|
123
|
+
// 变量数量适中时置信度更高(避免过多或过少)
|
|
124
|
+
const countFactor = variables.length >= 2 && variables.length <= 5 ? 1.0 : 0.8;
|
|
125
|
+
return Math.min(avgConfidence * countFactor, 1.0);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 添加自定义变量规则
|
|
129
|
+
*/
|
|
130
|
+
addCustomRule(name, pattern, description) {
|
|
131
|
+
this.customRules.push({ name, pattern, description });
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* 获取变量替换模板
|
|
135
|
+
*/
|
|
136
|
+
getTemplate(variables) {
|
|
137
|
+
if (variables.length === 0)
|
|
138
|
+
return '';
|
|
139
|
+
let template = '';
|
|
140
|
+
for (const v of variables) {
|
|
141
|
+
template += `${v.description}: {{${v.name}}}\n`;
|
|
142
|
+
}
|
|
143
|
+
return template.trim();
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* 验证变量值
|
|
147
|
+
*/
|
|
148
|
+
validate(variableName, value) {
|
|
149
|
+
const rule = [...VARIABLE_RULES, ...this.customRules].find(r => r.name === variableName);
|
|
150
|
+
if (!rule)
|
|
151
|
+
return false;
|
|
152
|
+
return rule.pattern.test(value);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* 单例导出
|
|
157
|
+
*/
|
|
158
|
+
export const variableExtractor = new VariableExtractor();
|
|
159
|
+
//# sourceMappingURL=variable-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-extractor.js","sourceRoot":"","sources":["../src/variable-extractor.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,208 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "page-action-cache",
|
|
3
3
|
"name": "Page Action Cache",
|
|
4
|
-
"version": "1.0.
|
|
5
|
-
"description": "
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "Page Action Cache - Browser Client API extension for OpenClaw",
|
|
6
6
|
"author": "OpenClaw",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"kind": "extension",
|
|
9
|
-
"main": "
|
|
9
|
+
"main": "dist/index.js",
|
|
10
10
|
"exports": {
|
|
11
|
-
".":
|
|
12
|
-
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./src/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./tools": {
|
|
16
|
+
"types": "./src/tools.d.ts",
|
|
17
|
+
"default": "./dist/tools.js"
|
|
18
|
+
}
|
|
13
19
|
},
|
|
14
20
|
"configSchema": {
|
|
15
21
|
"type": "object",
|
|
16
|
-
"additionalProperties": false,
|
|
17
22
|
"properties": {
|
|
18
23
|
"enabled": {
|
|
19
24
|
"type": "boolean",
|
|
20
25
|
"default": true,
|
|
21
|
-
"description": "
|
|
22
|
-
},
|
|
23
|
-
"autoUseCache": {
|
|
24
|
-
"type": "boolean",
|
|
25
|
-
"default": true,
|
|
26
|
-
"description": "Automatically use cached actions when available"
|
|
27
|
-
},
|
|
28
|
-
"scenarioRecognitionEnabled": {
|
|
29
|
-
"type": "boolean",
|
|
30
|
-
"default": true,
|
|
31
|
-
"description": "Enable automatic scenario recognition (login, search, checkout, etc.)"
|
|
32
|
-
},
|
|
33
|
-
"llmClassificationThreshold": {
|
|
34
|
-
"type": "number",
|
|
35
|
-
"default": 70,
|
|
36
|
-
"minimum": 0,
|
|
37
|
-
"maximum": 100,
|
|
38
|
-
"description": "Confidence threshold for LLM-based scenario classification (0-100)"
|
|
39
|
-
},
|
|
40
|
-
"cacheLevelStrategy": {
|
|
41
|
-
"type": "string",
|
|
42
|
-
"enum": ["auto", "l3-only", "l2-only", "l1-only"],
|
|
43
|
-
"default": "auto",
|
|
44
|
-
"description": "Cache level strategy: auto (default), l3-only (scenario-level only), l2-only (flow-level only), l1-only (atomic-level only)"
|
|
45
|
-
},
|
|
46
|
-
"defaultCacheLevel": {
|
|
47
|
-
"type": "string",
|
|
48
|
-
"enum": ["L3", "L2", "L1"],
|
|
49
|
-
"default": "L3",
|
|
50
|
-
"description": "Default cache level when no scenario is recognized"
|
|
51
|
-
},
|
|
52
|
-
"pageChangeDetectionEnabled": {
|
|
53
|
-
"type": "boolean",
|
|
54
|
-
"default": true,
|
|
55
|
-
"description": "Enable automatic page change detection to invalidate stale caches"
|
|
56
|
-
},
|
|
57
|
-
"changeInvalidationThreshold": {
|
|
58
|
-
"type": "number",
|
|
59
|
-
"default": 80,
|
|
60
|
-
"minimum": 0,
|
|
61
|
-
"maximum": 100,
|
|
62
|
-
"description": "Page change confidence threshold for cache invalidation (0-100)"
|
|
63
|
-
},
|
|
64
|
-
"invalidationStrategy": {
|
|
65
|
-
"type": "string",
|
|
66
|
-
"enum": ["soft", "hard"],
|
|
67
|
-
"default": "soft",
|
|
68
|
-
"description": "Cache invalidation strategy: soft (mark stale, allow override) or hard (immediately delete)"
|
|
69
|
-
},
|
|
70
|
-
"variableExtractionEnabled": {
|
|
71
|
-
"type": "boolean",
|
|
72
|
-
"default": true,
|
|
73
|
-
"description": "Enable automatic variable extraction from user input (username, password, etc.)"
|
|
74
|
-
},
|
|
75
|
-
"allowUserConfirmVariables": {
|
|
76
|
-
"type": "boolean",
|
|
77
|
-
"default": false,
|
|
78
|
-
"description": "Allow user confirmation for extracted variables before execution"
|
|
79
|
-
},
|
|
80
|
-
"encryptSensitiveCache": {
|
|
81
|
-
"type": "boolean",
|
|
82
|
-
"default": false,
|
|
83
|
-
"description": "Encrypt sensitive cache entries (passwords, tokens) using AES-256-GCM"
|
|
84
|
-
},
|
|
85
|
-
"accessControlEnabled": {
|
|
86
|
-
"type": "boolean",
|
|
87
|
-
"default": false,
|
|
88
|
-
"description": "Enable access control for sensitive cache operations"
|
|
89
|
-
},
|
|
90
|
-
"logSanitizationEnabled": {
|
|
91
|
-
"type": "boolean",
|
|
92
|
-
"default": true,
|
|
93
|
-
"description": "Automatically redact sensitive data from logs"
|
|
94
|
-
},
|
|
95
|
-
"showCacheStatusToUser": {
|
|
96
|
-
"type": "boolean",
|
|
97
|
-
"default": true,
|
|
98
|
-
"description": "Display cache hit/miss status to users"
|
|
99
|
-
},
|
|
100
|
-
"enableUserCacheConfirmation": {
|
|
101
|
-
"type": "boolean",
|
|
102
|
-
"default": false,
|
|
103
|
-
"description": "Require user confirmation before using cached actions"
|
|
104
|
-
},
|
|
105
|
-
"enableUserForcedRefresh": {
|
|
106
|
-
"type": "boolean",
|
|
107
|
-
"default": true,
|
|
108
|
-
"description": "Allow users to force refresh specific cache entries"
|
|
109
|
-
},
|
|
110
|
-
"enableUserCacheErrorReport": {
|
|
111
|
-
"type": "boolean",
|
|
112
|
-
"default": true,
|
|
113
|
-
"description": "Enable user reporting of cache execution errors"
|
|
114
|
-
},
|
|
115
|
-
"trackExecutionStats": {
|
|
116
|
-
"type": "boolean",
|
|
117
|
-
"default": true,
|
|
118
|
-
"description": "Track execution statistics (hit rate, saved tokens, saved time)"
|
|
119
|
-
},
|
|
120
|
-
"statsUpdateInterval": {
|
|
121
|
-
"type": "number",
|
|
122
|
-
"default": 60,
|
|
123
|
-
"minimum": 10,
|
|
124
|
-
"description": "Statistics update interval in seconds (minimum 10)"
|
|
26
|
+
"description": "启用页面操作缓存功能"
|
|
125
27
|
}
|
|
126
28
|
}
|
|
127
|
-
},
|
|
128
|
-
"uiHints": {
|
|
129
|
-
"enabled": {
|
|
130
|
-
"label": "Enable Cache Extension",
|
|
131
|
-
"description": "Enable or disable the page action cache extension"
|
|
132
|
-
},
|
|
133
|
-
"autoUseCache": {
|
|
134
|
-
"label": "Auto Use Cache",
|
|
135
|
-
"description": "Automatically use cached actions when available"
|
|
136
|
-
},
|
|
137
|
-
"scenarioRecognitionEnabled": {
|
|
138
|
-
"label": "Scenario Recognition",
|
|
139
|
-
"description": "Enable automatic scenario recognition (login, search, checkout, etc.)"
|
|
140
|
-
},
|
|
141
|
-
"cacheLevelStrategy": {
|
|
142
|
-
"label": "Cache Strategy",
|
|
143
|
-
"description": "Cache level strategy (auto, l3-only, l2-only, l1-only)"
|
|
144
|
-
},
|
|
145
|
-
"encryptSensitiveCache": {
|
|
146
|
-
"label": "Encrypt Sensitive Data",
|
|
147
|
-
"description": "Encrypt sensitive cache entries (passwords, tokens)",
|
|
148
|
-
"sensitive": false
|
|
149
|
-
},
|
|
150
|
-
"showCacheStatusToUser": {
|
|
151
|
-
"label": "Show Cache Status",
|
|
152
|
-
"description": "Display cache hit/miss status to users"
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
"tools": [
|
|
156
|
-
{
|
|
157
|
-
"name": "execute_cached",
|
|
158
|
-
"label": "Execute Cached Actions",
|
|
159
|
-
"description": "Execute cached page action sequences, skipping LLM analysis. Significantly reduces token consumption and operation latency."
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"name": "cache_stats",
|
|
163
|
-
"label": "Cache Statistics",
|
|
164
|
-
"description": "View cache statistics including hit rate, saved tokens, and saved time."
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
"name": "cache_list",
|
|
168
|
-
"label": "List Cache Entries",
|
|
169
|
-
"description": "List all cached page action entries with their metadata."
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
"name": "cache_clear",
|
|
173
|
-
"label": "Clear Cache",
|
|
174
|
-
"description": "Clear all cached page action entries."
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
"name": "scenario_list",
|
|
178
|
-
"label": "List Scenarios",
|
|
179
|
-
"description": "List all recognized scenarios with their match patterns."
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
"name": "force_refresh",
|
|
183
|
-
"label": "Force Refresh Cache",
|
|
184
|
-
"description": "Force refresh a specific cache entry by URL and viewport."
|
|
185
|
-
}
|
|
186
|
-
],
|
|
187
|
-
"hooks": [
|
|
188
|
-
{
|
|
189
|
-
"name": "before_tool_call",
|
|
190
|
-
"description": "Scenario recognition and cache interception"
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
"name": "after_tool_call",
|
|
194
|
-
"description": "Save LLM analysis results to cache"
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
"name": "before_prompt_build",
|
|
198
|
-
"description": "Inject cache usage guide into prompts"
|
|
199
|
-
}
|
|
200
|
-
],
|
|
201
|
-
"runtime": {
|
|
202
|
-
"node": ">=18.0.0"
|
|
203
|
-
},
|
|
204
|
-
"openclaw": {
|
|
205
|
-
"minVersion": "2026.2.0",
|
|
206
|
-
"extensions": ["./dist/hooks-entry.js"]
|
|
207
29
|
}
|
|
208
30
|
}
|
package/package.json
CHANGED
|
@@ -1,45 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "page-action-cache",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Page
|
|
5
|
-
"keywords": [
|
|
6
|
-
"automation",
|
|
7
|
-
"browser",
|
|
8
|
-
"cache",
|
|
9
|
-
"extension",
|
|
10
|
-
"openclaw"
|
|
11
|
-
],
|
|
12
|
-
"license": "MIT",
|
|
13
|
-
"author": "OpenClaw",
|
|
14
|
-
"repository": {
|
|
15
|
-
"type": "git",
|
|
16
|
-
"url": "https://github.com/openclaw/openclaw.git",
|
|
17
|
-
"directory": "extensions/page-action-cache"
|
|
18
|
-
},
|
|
19
|
-
"files": [
|
|
20
|
-
"dist/",
|
|
21
|
-
"skills/",
|
|
22
|
-
"docs/",
|
|
23
|
-
"package.json",
|
|
24
|
-
"openclaw.plugin.json"
|
|
25
|
-
],
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "Page Action Cache - OpenClaw extension using Browser Client API",
|
|
26
5
|
"type": "module",
|
|
27
|
-
"main": "dist/
|
|
6
|
+
"main": "dist/index.js",
|
|
28
7
|
"exports": {
|
|
29
8
|
".": {
|
|
30
|
-
"types": "./
|
|
9
|
+
"types": "./src/index.d.ts",
|
|
31
10
|
"default": "./dist/index.js"
|
|
32
11
|
},
|
|
33
|
-
"./
|
|
34
|
-
"types": "./
|
|
35
|
-
"default": "./dist/
|
|
12
|
+
"./tools": {
|
|
13
|
+
"types": "./src/tools.d.ts",
|
|
14
|
+
"default": "./dist/tools.js"
|
|
36
15
|
}
|
|
37
16
|
},
|
|
38
17
|
"scripts": {
|
|
39
18
|
"build": "tsc",
|
|
40
|
-
"
|
|
41
|
-
"test": "vitest",
|
|
42
|
-
"typecheck": "tsc --noEmit"
|
|
19
|
+
"test": "vitest"
|
|
43
20
|
},
|
|
44
21
|
"devDependencies": {
|
|
45
22
|
"@types/node": "^20.0.0",
|
|
@@ -54,21 +31,28 @@
|
|
|
54
31
|
"optional": true
|
|
55
32
|
}
|
|
56
33
|
},
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"dist",
|
|
65
|
-
"**/node_modules/**"
|
|
66
|
-
]
|
|
67
|
-
}
|
|
68
|
-
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist/",
|
|
36
|
+
"src/",
|
|
37
|
+
"tools/",
|
|
38
|
+
"package.json",
|
|
39
|
+
"openclaw.plugin.json"
|
|
40
|
+
],
|
|
69
41
|
"openclaw": {
|
|
70
42
|
"extensions": [
|
|
71
|
-
"./dist/
|
|
72
|
-
]
|
|
43
|
+
"./dist/index.js"
|
|
44
|
+
],
|
|
45
|
+
"minVersion": "2026.2.0",
|
|
46
|
+
"kind": "extension",
|
|
47
|
+
"configSchema": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"properties": {
|
|
50
|
+
"enabled": {
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"default": true,
|
|
53
|
+
"description": "启用页面操作缓存功能"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
73
57
|
}
|
|
74
58
|
}
|