@chen-rmag/ai-runner 0.1.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 (102) hide show
  1. package/README.md +263 -0
  2. package/SUMMARY_USAGE.md +359 -0
  3. package/TOOLS_INTEGRATION_SUMMARY.md +206 -0
  4. package/dist/agents/error-analyzer.d.ts +62 -0
  5. package/dist/agents/error-analyzer.d.ts.map +1 -0
  6. package/dist/agents/error-analyzer.js +168 -0
  7. package/dist/agents/error-analyzer.js.map +1 -0
  8. package/dist/agents/heal-agent.d.ts +30 -0
  9. package/dist/agents/heal-agent.d.ts.map +1 -0
  10. package/dist/agents/heal-agent.js +76 -0
  11. package/dist/agents/heal-agent.js.map +1 -0
  12. package/dist/agents/healer.d.ts +73 -0
  13. package/dist/agents/healer.d.ts.map +1 -0
  14. package/dist/agents/healer.js +538 -0
  15. package/dist/agents/healer.js.map +1 -0
  16. package/dist/agents/langgraph-agent.d.ts +44 -0
  17. package/dist/agents/langgraph-agent.d.ts.map +1 -0
  18. package/dist/agents/langgraph-agent.js +328 -0
  19. package/dist/agents/langgraph-agent.js.map +1 -0
  20. package/dist/agents/react-agent.d.ts +52 -0
  21. package/dist/agents/react-agent.d.ts.map +1 -0
  22. package/dist/agents/react-agent.js +262 -0
  23. package/dist/agents/react-agent.js.map +1 -0
  24. package/dist/agents/tools/form.d.ts +22 -0
  25. package/dist/agents/tools/form.d.ts.map +1 -0
  26. package/dist/agents/tools/form.js +134 -0
  27. package/dist/agents/tools/form.js.map +1 -0
  28. package/dist/agents/tools/index.d.ts +13 -0
  29. package/dist/agents/tools/index.d.ts.map +1 -0
  30. package/dist/agents/tools/index.js +33 -0
  31. package/dist/agents/tools/index.js.map +1 -0
  32. package/dist/agents/tools/navigate.d.ts +22 -0
  33. package/dist/agents/tools/navigate.d.ts.map +1 -0
  34. package/dist/agents/tools/navigate.js +74 -0
  35. package/dist/agents/tools/navigate.js.map +1 -0
  36. package/dist/agents/tools/snapshot.d.ts +22 -0
  37. package/dist/agents/tools/snapshot.d.ts.map +1 -0
  38. package/dist/agents/tools/snapshot.js +110 -0
  39. package/dist/agents/tools/snapshot.js.map +1 -0
  40. package/dist/agents/tools/verify.d.ts +34 -0
  41. package/dist/agents/tools/verify.d.ts.map +1 -0
  42. package/dist/agents/tools/verify.js +169 -0
  43. package/dist/agents/tools/verify.js.map +1 -0
  44. package/dist/agents/tools/wait.d.ts +22 -0
  45. package/dist/agents/tools/wait.d.ts.map +1 -0
  46. package/dist/agents/tools/wait.js +104 -0
  47. package/dist/agents/tools/wait.js.map +1 -0
  48. package/dist/agents/types.d.ts +51 -0
  49. package/dist/agents/types.d.ts.map +1 -0
  50. package/dist/agents/types.js +6 -0
  51. package/dist/agents/types.js.map +1 -0
  52. package/dist/core/ai-heal.d.ts +89 -0
  53. package/dist/core/ai-heal.d.ts.map +1 -0
  54. package/dist/core/ai-heal.js +468 -0
  55. package/dist/core/ai-heal.js.map +1 -0
  56. package/dist/core/execution-engine.d.ts +16 -0
  57. package/dist/core/execution-engine.d.ts.map +1 -0
  58. package/dist/core/execution-engine.js +44 -0
  59. package/dist/core/execution-engine.js.map +1 -0
  60. package/dist/core/runner.d.ts +195 -0
  61. package/dist/core/runner.d.ts.map +1 -0
  62. package/dist/core/runner.js +658 -0
  63. package/dist/core/runner.js.map +1 -0
  64. package/dist/index.d.ts +8 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +11 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/types/external.d.ts +6 -0
  69. package/dist/types/external.d.ts.map +1 -0
  70. package/dist/types/external.js +7 -0
  71. package/dist/types/external.js.map +1 -0
  72. package/dist/types/index.d.ts +153 -0
  73. package/dist/types/index.d.ts.map +1 -0
  74. package/dist/types/index.js +26 -0
  75. package/dist/types/index.js.map +1 -0
  76. package/dist/utils/object-registry.d.ts +48 -0
  77. package/dist/utils/object-registry.d.ts.map +1 -0
  78. package/dist/utils/object-registry.js +133 -0
  79. package/dist/utils/object-registry.js.map +1 -0
  80. package/package.json +37 -0
  81. package/playwright.config.ts +38 -0
  82. package/src/agents/heal-agent.ts +85 -0
  83. package/src/agents/healer.ts +619 -0
  84. package/src/agents/tools/EXAMPLES.md +347 -0
  85. package/src/agents/tools/README.md +207 -0
  86. package/src/agents/tools/form.ts +138 -0
  87. package/src/agents/tools/index.ts +29 -0
  88. package/src/agents/tools/navigate.ts +69 -0
  89. package/src/agents/tools/snapshot.ts +109 -0
  90. package/src/agents/tools/verify.ts +168 -0
  91. package/src/agents/tools/wait.ts +103 -0
  92. package/src/agents/types.ts +79 -0
  93. package/src/core/runner.ts +756 -0
  94. package/src/index.ts +29 -0
  95. package/src/types/external.ts +7 -0
  96. package/src/types/index.ts +200 -0
  97. package/tests/agent/test-heal-agent.spec.ts +81 -0
  98. package/tests/tools/README.md +227 -0
  99. package/tests/tools/TEST_SUMMARY.md +214 -0
  100. package/tests/tools/quick-test.ts +88 -0
  101. package/tests/tools/tools.test.ts +491 -0
  102. package/tsconfig.json +22 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/core/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ai-runner SDK 主入口
3
+ * 提供 AI 驱动的测试运行能力
4
+ */
5
+ export type { AIHealConfig, ExecutionContext, ExecutionResult, HealContext, HealSummary, HealingDetail, RunStepOptions, VariableBindings } from './types';
6
+ export { Runner } from './core/runner';
7
+ export type { HealAgentState, HealAgentResult, HealAgentConfig } from './agents/types';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,YAAY,EACV,cAAc,EACd,eAAe,EACf,eAAe,EAChB,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * ai-runner SDK 主入口
4
+ * 提供 AI 驱动的测试运行能力
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Runner = void 0;
8
+ // 核心类
9
+ var runner_1 = require("./core/runner");
10
+ Object.defineProperty(exports, "Runner", { enumerable: true, get: function () { return runner_1.Runner; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAeH,MAAM;AACN,wCAAuC;AAA9B,gGAAA,MAAM,OAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 外部类型定义
3
+ * 直接从 core-infra 导入
4
+ */
5
+ export type { ModelConfig, ModelProvider } from '@ai-test/core-infra/dist/types';
6
+ //# sourceMappingURL=external.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../../src/types/external.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * 外部类型定义
4
+ * 直接从 core-infra 导入
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=external.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.js","sourceRoot":"","sources":["../../src/types/external.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * ai-heal 核心类型定义 (MVP)
3
+ * 保持简洁,只包含必要的类型
4
+ */
5
+ import type { Page, BrowserContext } from 'playwright';
6
+ /**
7
+ * 变量包装器,支持跨作用域赋值
8
+ */
9
+ export declare class Ref<T> {
10
+ value: T;
11
+ constructor(value: T);
12
+ get current(): T;
13
+ set current(value: T);
14
+ }
15
+ /**
16
+ * AIHeal 配置选项
17
+ */
18
+ export interface AIHealConfig {
19
+ /** 测试用例 ID */
20
+ testCaseId?: string;
21
+ /** 项目 ID */
22
+ projectId?: string;
23
+ /** 手动注入的脚本内容 */
24
+ scriptContent?: string;
25
+ /** 是否自动保存修复后的脚本 */
26
+ enableAutoSave?: boolean;
27
+ /** 最大自愈重试次数 */
28
+ /** 模型配置 ID(用于加载模型配置) */
29
+ modelConfigId?: string;
30
+ /** Agent 最大执行步数 */
31
+ agentMaxSteps?: number;
32
+ /** 是否开启调试模式 */
33
+ debugMode?: boolean;
34
+ }
35
+ /**
36
+ * 执行上下文,包含用户的 Playwright 对象
37
+ */
38
+ export interface ExecutionContext {
39
+ context: BrowserContext;
40
+ page: Page;
41
+ }
42
+ /**
43
+ * 变量绑定映射
44
+ */
45
+ export type VariableBindings = Record<string, Ref<any>>;
46
+ /**
47
+ * runStep 选项
48
+ */
49
+ export interface RunStepOptions {
50
+ /** 步骤描述,用于 AI 理解 */
51
+ description: string;
52
+ /** 需要传递的变量绑定 */
53
+ variables?: VariableBindings;
54
+ /** Playwright 上下文对象 */
55
+ context?: ExecutionContext;
56
+ }
57
+ /**
58
+ * ReAct 循环步骤记录
59
+ */
60
+ export interface ReActStep {
61
+ /** 步骤序号 */
62
+ stepNumber: number;
63
+ /** 步骤类型 */
64
+ stepType: 'thought' | 'action' | 'observation' | 'reflection';
65
+ /** 时间戳 */
66
+ timestamp: number;
67
+ /** LLM 的思考内容(thought 步骤) */
68
+ thought?: string;
69
+ /** 工具调用信息(action 步骤) */
70
+ toolCall?: {
71
+ name: string;
72
+ input: any;
73
+ };
74
+ /** 工具执行结果(observation 步骤) */
75
+ toolResult?: {
76
+ output: string;
77
+ success: boolean;
78
+ duration?: number;
79
+ };
80
+ /** 反思内容(reflection 步骤) */
81
+ reflection?: string;
82
+ }
83
+ /**
84
+ * 单次自愈过程的上下文信息
85
+ */
86
+ export interface HealContext {
87
+ /** 时间戳 */
88
+ timestamp: number;
89
+ /** 步骤描述 */
90
+ stepDescription: string;
91
+ /** 错误对象 */
92
+ error?: Error;
93
+ /** 堆栈信息 */
94
+ stackTrace?: string;
95
+ /** 原始代码 */
96
+ originalCode: string;
97
+ /** 恢复尝试次数 */
98
+ recoveryAttempts: number;
99
+ /** 变量快照(执行前) */
100
+ variablesBefore: Record<string, any>;
101
+ /** 变量快照(执行后) */
102
+ variablesAfter: Record<string, any>;
103
+ /** 是否成功 */
104
+ success: boolean;
105
+ /** 自愈耗时 */
106
+ healingTime?: number;
107
+ /** ReAct 循环详细记录(如果使用了 Agent) */
108
+ reactSteps?: ReActStep[];
109
+ /** Agent 的推理过程总结 */
110
+ reasoning?: string;
111
+ /** Agent 执行的总步数 */
112
+ agentSteps?: number;
113
+ }
114
+ /**
115
+ * 代码执行结果
116
+ */
117
+ export interface ExecutionResult {
118
+ /** 是否成功 */
119
+ success: boolean;
120
+ /** 返回值 */
121
+ returnValue: any;
122
+ /** 局部变量 */
123
+ locals: Record<string, any>;
124
+ /** 错误信息 */
125
+ error?: Error;
126
+ }
127
+ /**
128
+ * 自愈摘要信息
129
+ */
130
+ export interface HealSummary {
131
+ /** 总步骤数 */
132
+ totalSteps: number;
133
+ /** 自愈成功的步骤数 */
134
+ healedSteps: number;
135
+ /** 修复后的脚本 */
136
+ modifiedScript?: string;
137
+ /** 自愈详情列表 */
138
+ healingDetails: HealingDetail[];
139
+ }
140
+ /**
141
+ * 单次自愈详情
142
+ */
143
+ export interface HealingDetail {
144
+ /** 步骤描述 */
145
+ step: string;
146
+ /** 错误信息 */
147
+ error: string;
148
+ /** 恢复时间 */
149
+ recoveryTime: number;
150
+ /** LLM 交互次数 */
151
+ llmInteractions: number;
152
+ }
153
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * ai-heal 核心类型定义 (MVP)
4
+ * 保持简洁,只包含必要的类型
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Ref = void 0;
8
+ // ============================================================================
9
+ // Ref<T>: 变量包装器
10
+ // ============================================================================
11
+ /**
12
+ * 变量包装器,支持跨作用域赋值
13
+ */
14
+ class Ref {
15
+ constructor(value) {
16
+ this.value = value;
17
+ }
18
+ get current() {
19
+ return this.value;
20
+ }
21
+ set current(value) {
22
+ this.value = value;
23
+ }
24
+ }
25
+ exports.Ref = Ref;
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E;;GAEG;AACH,MAAa,GAAG;IACd,YAAmB,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAE/B,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,KAAQ;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAVD,kBAUC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 对象注册表
3
+ * 用于管理无法序列化的 Playwright 对象
4
+ */
5
+ /**
6
+ * 对象注册表类
7
+ */
8
+ export declare class ObjectRegistry {
9
+ private objects;
10
+ private counter;
11
+ /**
12
+ * 注册对象并返回引用
13
+ */
14
+ register(obj: any): string;
15
+ /**
16
+ * 获取已注册的对象
17
+ */
18
+ get(ref: string): any;
19
+ /**
20
+ * 序列化对象
21
+ * - Playwright 对象返回引用
22
+ * - 普通对象直接返回
23
+ */
24
+ serialize(obj: any): any;
25
+ /**
26
+ * 反序列化对象
27
+ * - 引用从注册表获取实际对象
28
+ * - 普通数据直接返回
29
+ */
30
+ deserialize(data: any): any;
31
+ /**
32
+ * 判断是否是 Playwright 对象
33
+ */
34
+ private isPlaywrightObject;
35
+ /**
36
+ * 生成唯一引用
37
+ */
38
+ private generateRef;
39
+ /**
40
+ * 清理注册表
41
+ */
42
+ clear(): void;
43
+ /**
44
+ * 获取注册对象数量
45
+ */
46
+ get size(): number;
47
+ }
48
+ //# sourceMappingURL=object-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-registry.d.ts","sourceRoot":"","sources":["../../src/utils/object-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,OAAO,CAAK;IAEpB;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAM1B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAIrB;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAoCxB;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG;IA6B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ /**
3
+ * 对象注册表
4
+ * 用于管理无法序列化的 Playwright 对象
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ObjectRegistry = void 0;
8
+ /**
9
+ * 对象注册表类
10
+ */
11
+ class ObjectRegistry {
12
+ constructor() {
13
+ this.objects = new Map();
14
+ this.counter = 0;
15
+ }
16
+ /**
17
+ * 注册对象并返回引用
18
+ */
19
+ register(obj) {
20
+ const ref = this.generateRef();
21
+ this.objects.set(ref, obj);
22
+ return ref;
23
+ }
24
+ /**
25
+ * 获取已注册的对象
26
+ */
27
+ get(ref) {
28
+ return this.objects.get(ref);
29
+ }
30
+ /**
31
+ * 序列化对象
32
+ * - Playwright 对象返回引用
33
+ * - 普通对象直接返回
34
+ */
35
+ serialize(obj) {
36
+ // null 或 undefined
37
+ if (obj === null || obj === undefined) {
38
+ return obj;
39
+ }
40
+ // 基础类型
41
+ if (typeof obj !== 'object') {
42
+ return obj;
43
+ }
44
+ // 数组
45
+ if (Array.isArray(obj)) {
46
+ return obj.map(item => this.serialize(item));
47
+ }
48
+ // 检查是否是 Playwright 对象
49
+ const constructorName = obj.constructor?.name;
50
+ if (this.isPlaywrightObject(constructorName)) {
51
+ // 返回对象引用
52
+ return {
53
+ __type: 'playwright_object',
54
+ className: constructorName,
55
+ ref: this.register(obj)
56
+ };
57
+ }
58
+ // 普通对象,递归序列化
59
+ const serialized = {};
60
+ for (const [key, value] of Object.entries(obj)) {
61
+ serialized[key] = this.serialize(value);
62
+ }
63
+ return serialized;
64
+ }
65
+ /**
66
+ * 反序列化对象
67
+ * - 引用从注册表获取实际对象
68
+ * - 普通数据直接返回
69
+ */
70
+ deserialize(data) {
71
+ // null 或 undefined
72
+ if (data === null || data === undefined) {
73
+ return data;
74
+ }
75
+ // 基础类型
76
+ if (typeof data !== 'object') {
77
+ return data;
78
+ }
79
+ // 数组
80
+ if (Array.isArray(data)) {
81
+ return data.map(item => this.deserialize(item));
82
+ }
83
+ // Playwright 对象引用
84
+ if (data.__type === 'playwright_object') {
85
+ return this.get(data.ref);
86
+ }
87
+ // 普通对象,递归反序列化
88
+ const deserialized = {};
89
+ for (const [key, value] of Object.entries(data)) {
90
+ deserialized[key] = this.deserialize(value);
91
+ }
92
+ return deserialized;
93
+ }
94
+ /**
95
+ * 判断是否是 Playwright 对象
96
+ */
97
+ isPlaywrightObject(className) {
98
+ const playwrightClasses = [
99
+ 'Page',
100
+ 'BrowserContext',
101
+ 'Browser',
102
+ 'Frame',
103
+ 'ElementHandle',
104
+ 'JSHandle',
105
+ 'Locator',
106
+ 'Request',
107
+ 'Response',
108
+ 'Route'
109
+ ];
110
+ return playwrightClasses.includes(className);
111
+ }
112
+ /**
113
+ * 生成唯一引用
114
+ */
115
+ generateRef() {
116
+ return `ref_${Date.now()}_${this.counter++}`;
117
+ }
118
+ /**
119
+ * 清理注册表
120
+ */
121
+ clear() {
122
+ this.objects.clear();
123
+ this.counter = 0;
124
+ }
125
+ /**
126
+ * 获取注册对象数量
127
+ */
128
+ get size() {
129
+ return this.objects.size;
130
+ }
131
+ }
132
+ exports.ObjectRegistry = ObjectRegistry;
133
+ //# sourceMappingURL=object-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-registry.js","sourceRoot":"","sources":["../../src/utils/object-registry.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@chen-rmag/ai-runner",
3
+ "version": "0.1.0",
4
+ "description": "AI-powered self-healing SDK for Playwright test scripts",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "watch": "tsc --watch",
10
+ "test": "playwright test",
11
+ "test:poc": "playwright test src/poc/",
12
+ "test:ui": "playwright test --ui",
13
+ "test:debug": "playwright test --debug",
14
+ "lint": "eslint src --ext .ts",
15
+ "prepublishOnly": "npm run build"
16
+ },
17
+ "keywords": [
18
+ "playwright",
19
+ "self-healing",
20
+ "ai",
21
+ "test-automation",
22
+ "auto-recovery"
23
+ ],
24
+ "author": "AI Test Team",
25
+ "license": "MIT",
26
+ "dependencies": {
27
+ "@anthropic-ai/sdk": "^0.71.2",
28
+ "@langchain/anthropic": "^1.3.10",
29
+ "@langchain/core": "^1.1.15",
30
+ "@langchain/langgraph": "^1.0.15"
31
+ },
32
+ "devDependencies": {
33
+ "@playwright/test": "^1.40.0",
34
+ "@types/node": "^20.0.0",
35
+ "typescript": "^5.0.0"
36
+ }
37
+ }
@@ -0,0 +1,38 @@
1
+ import { defineConfig, devices } from '@playwright/test';
2
+
3
+ /**
4
+ * Playwright 配置文件
5
+ */
6
+ export default defineConfig({
7
+ testDir: './',
8
+ testMatch: [
9
+ '**/*.spec.ts',
10
+ '**/*.test.ts'
11
+ ],
12
+ fullyParallel: false,
13
+ forbidOnly: !!process.env.CI,
14
+ retries: 0,
15
+ workers: 1,
16
+ reporter: [
17
+ ['list'],
18
+ ['html', { open: 'never', outputFolder: 'playwright-report' }]
19
+ ],
20
+ use: {
21
+ baseURL: 'https://example.com',
22
+ trace: 'retain-on-failure',
23
+ screenshot: 'only-on-failure',
24
+ video: 'retain-on-failure',
25
+ // 默认使用有头模式,方便调试
26
+ // 可通过环境变量 HEADED=true 控制
27
+ headless: false,
28
+ },
29
+ projects: [
30
+ {
31
+ name: 'chromium',
32
+ use: {
33
+ ...devices['Desktop Chrome'],
34
+ // 调试模式下使用慢速动作
35
+ },
36
+ },
37
+ ],
38
+ });
@@ -0,0 +1,85 @@
1
+ /**
2
+ * 自愈 Agent
3
+ * 使用 LangChain 的 Healer 执行 ReAct 循环
4
+ */
5
+
6
+ import type { HealAgentState, HealAgentResult, HealAgentConfig } from './types';
7
+ import { Healer } from './healer';
8
+
9
+ /**
10
+ * 自愈 Agent
11
+ * 使用 LLM + ReAct 循环实现智能自愈
12
+ */
13
+ export class HealAgent {
14
+ private config: HealAgentConfig;
15
+ private healer?: Healer;
16
+
17
+ constructor(config: HealAgentConfig = {}) {
18
+ this.config = {
19
+ maxSteps: config.maxSteps ?? 20,
20
+ debugMode: config.debugMode ?? false,
21
+ model: config.model,
22
+ setVariable: config.setVariable,
23
+ getAllVariables: config.getAllVariables
24
+ };
25
+
26
+ // 如果提供了模型配置,初始化 Healer
27
+ if (this.config.model) {
28
+ this.healer = new Healer(this.config.model, {
29
+ maxSteps: this.config.maxSteps,
30
+ debugMode: this.config.debugMode,
31
+ setVariable: this.config.setVariable,
32
+ getAllVariables: this.config.getAllVariables
33
+ });
34
+ }
35
+ }
36
+
37
+ /**
38
+ * 执行自愈
39
+ *
40
+ * 使用 Healer 通过 ReAct 循环执行自愈任务
41
+ * - Thought: 分析错误和目标
42
+ * - Action: 调用 Playwright 工具执行操作
43
+ * - Observation: 观察工具执行结果
44
+ * - Reflection: 判断是否继续或结束
45
+ * - 循环直到成功或达到最大步数
46
+ */
47
+ async heal(state: HealAgentState): Promise<HealAgentResult> {
48
+ this.log('[HealAgent] ========== 开始自愈流程 ==========');
49
+ this.log(`[HealAgent] 目标: ${state.objective}`);
50
+ this.log(`[HealAgent] 错误: ${state.error}`);
51
+ this.log(`[HealAgent] 最大步数: ${state.maxSteps || this.config.maxSteps}`);
52
+ this.log(`[HealAgent] 模式: ${this.healer ? 'LLM Healer' : '未配置'}`);
53
+
54
+ if (!this.healer) {
55
+ const errorMsg = 'Healer 未初始化,请提供 model 配置';
56
+ this.log(`[HealAgent] ❌ ${errorMsg}`);
57
+
58
+ return {
59
+ success: false,
60
+ errorMessage: errorMsg,
61
+ reasoning: '未配置模型,无法执行自愈',
62
+ steps: 0,
63
+ updatedVariables: {}
64
+ };
65
+ }
66
+
67
+ this.log('[HealAgent] 使用 Healer(LLM Agent)');
68
+ const result = await this.healer.execute(state);
69
+
70
+ this.log(`[HealAgent] 执行结果: ${result.success ? '成功 ✅' : '失败 ❌'}`);
71
+ this.log(`[HealAgent] 执行步数: ${result.steps}`);
72
+ this.log('[HealAgent] ========== 自愈流程结束 ==========\n');
73
+
74
+ return result;
75
+ }
76
+
77
+ /**
78
+ * 日志输出
79
+ */
80
+ private log(message: string): void {
81
+ if (this.config.debugMode) {
82
+ console.log(message);
83
+ }
84
+ }
85
+ }