mindheal 1.0.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.
- package/.env.example +48 -0
- package/CHANGELOG.md +27 -0
- package/LICENSE +21 -0
- package/README.md +481 -0
- package/dist/cjs/ai/ai-provider.js +46 -0
- package/dist/cjs/ai/ai-provider.js.map +1 -0
- package/dist/cjs/ai/anthropic-provider.js +106 -0
- package/dist/cjs/ai/anthropic-provider.js.map +1 -0
- package/dist/cjs/ai/azure-openai-provider.js +130 -0
- package/dist/cjs/ai/azure-openai-provider.js.map +1 -0
- package/dist/cjs/ai/bedrock-provider.js +183 -0
- package/dist/cjs/ai/bedrock-provider.js.map +1 -0
- package/dist/cjs/ai/deepseek-provider.js +118 -0
- package/dist/cjs/ai/deepseek-provider.js.map +1 -0
- package/dist/cjs/ai/gemini-provider.js +129 -0
- package/dist/cjs/ai/gemini-provider.js.map +1 -0
- package/dist/cjs/ai/groq-provider.js +118 -0
- package/dist/cjs/ai/groq-provider.js.map +1 -0
- package/dist/cjs/ai/meta-provider.js +118 -0
- package/dist/cjs/ai/meta-provider.js.map +1 -0
- package/dist/cjs/ai/ollama-provider.js +127 -0
- package/dist/cjs/ai/ollama-provider.js.map +1 -0
- package/dist/cjs/ai/openai-provider.js +117 -0
- package/dist/cjs/ai/openai-provider.js.map +1 -0
- package/dist/cjs/ai/perplexity-provider.js +118 -0
- package/dist/cjs/ai/perplexity-provider.js.map +1 -0
- package/dist/cjs/ai/prompt-templates.js +174 -0
- package/dist/cjs/ai/prompt-templates.js.map +1 -0
- package/dist/cjs/ai/qwen-provider.js +118 -0
- package/dist/cjs/ai/qwen-provider.js.map +1 -0
- package/dist/cjs/analytics/healing-analytics.js +263 -0
- package/dist/cjs/analytics/healing-analytics.js.map +1 -0
- package/dist/cjs/cli/init.js +517 -0
- package/dist/cjs/cli/init.js.map +1 -0
- package/dist/cjs/config/config-loader.js +135 -0
- package/dist/cjs/config/config-loader.js.map +1 -0
- package/dist/cjs/config/defaults.js +109 -0
- package/dist/cjs/config/defaults.js.map +1 -0
- package/dist/cjs/core/dom-snapshot.js +280 -0
- package/dist/cjs/core/dom-snapshot.js.map +1 -0
- package/dist/cjs/core/enterprise-strategy.js +702 -0
- package/dist/cjs/core/enterprise-strategy.js.map +1 -0
- package/dist/cjs/core/healer.js +283 -0
- package/dist/cjs/core/healer.js.map +1 -0
- package/dist/cjs/core/interceptor.js +945 -0
- package/dist/cjs/core/interceptor.js.map +1 -0
- package/dist/cjs/core/locator-analyzer.js +172 -0
- package/dist/cjs/core/locator-analyzer.js.map +1 -0
- package/dist/cjs/core/locator-strategies.js +891 -0
- package/dist/cjs/core/locator-strategies.js.map +1 -0
- package/dist/cjs/core/self-heal-cache.js +178 -0
- package/dist/cjs/core/self-heal-cache.js.map +1 -0
- package/dist/cjs/core/smart-retry.js +248 -0
- package/dist/cjs/core/smart-retry.js.map +1 -0
- package/dist/cjs/core/visual-verification.js +262 -0
- package/dist/cjs/core/visual-verification.js.map +1 -0
- package/dist/cjs/git/code-modifier.js +184 -0
- package/dist/cjs/git/code-modifier.js.map +1 -0
- package/dist/cjs/git/git-operations.js +145 -0
- package/dist/cjs/git/git-operations.js.map +1 -0
- package/dist/cjs/git/pr-creator.js +190 -0
- package/dist/cjs/git/pr-creator.js.map +1 -0
- package/dist/cjs/index.js +97 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/rag/context-retriever.js +289 -0
- package/dist/cjs/rag/context-retriever.js.map +1 -0
- package/dist/cjs/rag/embeddings.js +82 -0
- package/dist/cjs/rag/embeddings.js.map +1 -0
- package/dist/cjs/rag/knowledge-store.js +159 -0
- package/dist/cjs/rag/knowledge-store.js.map +1 -0
- package/dist/cjs/reporters/heal-report.js +279 -0
- package/dist/cjs/reporters/heal-report.js.map +1 -0
- package/dist/cjs/reporters/heal-reporter.js +294 -0
- package/dist/cjs/reporters/heal-reporter.js.map +1 -0
- package/dist/cjs/server/review-server.js +166 -0
- package/dist/cjs/server/review-server.js.map +1 -0
- package/dist/cjs/server/routes.js +92 -0
- package/dist/cjs/server/routes.js.map +1 -0
- package/dist/cjs/utils/environment.js +57 -0
- package/dist/cjs/utils/environment.js.map +1 -0
- package/dist/cjs/utils/file-lock.js +136 -0
- package/dist/cjs/utils/file-lock.js.map +1 -0
- package/dist/cjs/utils/file-utils.js +49 -0
- package/dist/cjs/utils/file-utils.js.map +1 -0
- package/dist/cjs/utils/logger.js +78 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/esm/ai/ai-provider.js +44 -0
- package/dist/esm/ai/ai-provider.js.map +1 -0
- package/dist/esm/ai/anthropic-provider.js +104 -0
- package/dist/esm/ai/anthropic-provider.js.map +1 -0
- package/dist/esm/ai/azure-openai-provider.js +128 -0
- package/dist/esm/ai/azure-openai-provider.js.map +1 -0
- package/dist/esm/ai/bedrock-provider.js +181 -0
- package/dist/esm/ai/bedrock-provider.js.map +1 -0
- package/dist/esm/ai/deepseek-provider.js +116 -0
- package/dist/esm/ai/deepseek-provider.js.map +1 -0
- package/dist/esm/ai/gemini-provider.js +127 -0
- package/dist/esm/ai/gemini-provider.js.map +1 -0
- package/dist/esm/ai/groq-provider.js +116 -0
- package/dist/esm/ai/groq-provider.js.map +1 -0
- package/dist/esm/ai/meta-provider.js +116 -0
- package/dist/esm/ai/meta-provider.js.map +1 -0
- package/dist/esm/ai/ollama-provider.js +125 -0
- package/dist/esm/ai/ollama-provider.js.map +1 -0
- package/dist/esm/ai/openai-provider.js +115 -0
- package/dist/esm/ai/openai-provider.js.map +1 -0
- package/dist/esm/ai/perplexity-provider.js +116 -0
- package/dist/esm/ai/perplexity-provider.js.map +1 -0
- package/dist/esm/ai/prompt-templates.js +171 -0
- package/dist/esm/ai/prompt-templates.js.map +1 -0
- package/dist/esm/ai/qwen-provider.js +116 -0
- package/dist/esm/ai/qwen-provider.js.map +1 -0
- package/dist/esm/analytics/healing-analytics.js +261 -0
- package/dist/esm/analytics/healing-analytics.js.map +1 -0
- package/dist/esm/cli/init.js +495 -0
- package/dist/esm/cli/init.js.map +1 -0
- package/dist/esm/config/config-loader.js +132 -0
- package/dist/esm/config/config-loader.js.map +1 -0
- package/dist/esm/config/defaults.js +107 -0
- package/dist/esm/config/defaults.js.map +1 -0
- package/dist/esm/core/dom-snapshot.js +278 -0
- package/dist/esm/core/dom-snapshot.js.map +1 -0
- package/dist/esm/core/enterprise-strategy.js +695 -0
- package/dist/esm/core/enterprise-strategy.js.map +1 -0
- package/dist/esm/core/healer.js +281 -0
- package/dist/esm/core/healer.js.map +1 -0
- package/dist/esm/core/interceptor.js +940 -0
- package/dist/esm/core/interceptor.js.map +1 -0
- package/dist/esm/core/locator-analyzer.js +169 -0
- package/dist/esm/core/locator-analyzer.js.map +1 -0
- package/dist/esm/core/locator-strategies.js +882 -0
- package/dist/esm/core/locator-strategies.js.map +1 -0
- package/dist/esm/core/self-heal-cache.js +176 -0
- package/dist/esm/core/self-heal-cache.js.map +1 -0
- package/dist/esm/core/smart-retry.js +246 -0
- package/dist/esm/core/smart-retry.js.map +1 -0
- package/dist/esm/core/visual-verification.js +260 -0
- package/dist/esm/core/visual-verification.js.map +1 -0
- package/dist/esm/git/code-modifier.js +182 -0
- package/dist/esm/git/code-modifier.js.map +1 -0
- package/dist/esm/git/git-operations.js +143 -0
- package/dist/esm/git/git-operations.js.map +1 -0
- package/dist/esm/git/pr-creator.js +188 -0
- package/dist/esm/git/pr-creator.js.map +1 -0
- package/dist/esm/index.js +37 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/rag/context-retriever.js +287 -0
- package/dist/esm/rag/context-retriever.js.map +1 -0
- package/dist/esm/rag/embeddings.js +77 -0
- package/dist/esm/rag/embeddings.js.map +1 -0
- package/dist/esm/rag/knowledge-store.js +157 -0
- package/dist/esm/rag/knowledge-store.js.map +1 -0
- package/dist/esm/reporters/heal-report.js +277 -0
- package/dist/esm/reporters/heal-report.js.map +1 -0
- package/dist/esm/reporters/heal-reporter.js +290 -0
- package/dist/esm/reporters/heal-reporter.js.map +1 -0
- package/dist/esm/server/review-server.js +164 -0
- package/dist/esm/server/review-server.js.map +1 -0
- package/dist/esm/server/routes.js +90 -0
- package/dist/esm/server/routes.js.map +1 -0
- package/dist/esm/utils/environment.js +53 -0
- package/dist/esm/utils/environment.js.map +1 -0
- package/dist/esm/utils/file-lock.js +134 -0
- package/dist/esm/utils/file-lock.js.map +1 -0
- package/dist/esm/utils/file-utils.js +43 -0
- package/dist/esm/utils/file-utils.js.map +1 -0
- package/dist/esm/utils/logger.js +75 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/types/ai/ai-provider.d.ts +4 -0
- package/dist/types/ai/ai-provider.d.ts.map +1 -0
- package/dist/types/ai/anthropic-provider.d.ts +11 -0
- package/dist/types/ai/anthropic-provider.d.ts.map +1 -0
- package/dist/types/ai/azure-openai-provider.d.ts +13 -0
- package/dist/types/ai/azure-openai-provider.d.ts.map +1 -0
- package/dist/types/ai/bedrock-provider.d.ts +14 -0
- package/dist/types/ai/bedrock-provider.d.ts.map +1 -0
- package/dist/types/ai/deepseek-provider.d.ts +12 -0
- package/dist/types/ai/deepseek-provider.d.ts.map +1 -0
- package/dist/types/ai/gemini-provider.d.ts +12 -0
- package/dist/types/ai/gemini-provider.d.ts.map +1 -0
- package/dist/types/ai/groq-provider.d.ts +12 -0
- package/dist/types/ai/groq-provider.d.ts.map +1 -0
- package/dist/types/ai/meta-provider.d.ts +12 -0
- package/dist/types/ai/meta-provider.d.ts.map +1 -0
- package/dist/types/ai/ollama-provider.d.ts +10 -0
- package/dist/types/ai/ollama-provider.d.ts.map +1 -0
- package/dist/types/ai/openai-provider.d.ts +11 -0
- package/dist/types/ai/openai-provider.d.ts.map +1 -0
- package/dist/types/ai/perplexity-provider.d.ts +12 -0
- package/dist/types/ai/perplexity-provider.d.ts.map +1 -0
- package/dist/types/ai/prompt-templates.d.ts +11 -0
- package/dist/types/ai/prompt-templates.d.ts.map +1 -0
- package/dist/types/ai/qwen-provider.d.ts +12 -0
- package/dist/types/ai/qwen-provider.d.ts.map +1 -0
- package/dist/types/analytics/healing-analytics.d.ts +36 -0
- package/dist/types/analytics/healing-analytics.d.ts.map +1 -0
- package/dist/types/cli/init.d.ts +15 -0
- package/dist/types/cli/init.d.ts.map +1 -0
- package/dist/types/config/config-loader.d.ts +4 -0
- package/dist/types/config/config-loader.d.ts.map +1 -0
- package/dist/types/config/defaults.d.ts +3 -0
- package/dist/types/config/defaults.d.ts.map +1 -0
- package/dist/types/core/dom-snapshot.d.ts +12 -0
- package/dist/types/core/dom-snapshot.d.ts.map +1 -0
- package/dist/types/core/enterprise-strategy.d.ts +56 -0
- package/dist/types/core/enterprise-strategy.d.ts.map +1 -0
- package/dist/types/core/healer.d.ts +52 -0
- package/dist/types/core/healer.d.ts.map +1 -0
- package/dist/types/core/interceptor.d.ts +64 -0
- package/dist/types/core/interceptor.d.ts.map +1 -0
- package/dist/types/core/locator-analyzer.d.ts +31 -0
- package/dist/types/core/locator-analyzer.d.ts.map +1 -0
- package/dist/types/core/locator-strategies.d.ts +45 -0
- package/dist/types/core/locator-strategies.d.ts.map +1 -0
- package/dist/types/core/self-heal-cache.d.ts +51 -0
- package/dist/types/core/self-heal-cache.d.ts.map +1 -0
- package/dist/types/core/smart-retry.d.ts +64 -0
- package/dist/types/core/smart-retry.d.ts.map +1 -0
- package/dist/types/core/visual-verification.d.ts +46 -0
- package/dist/types/core/visual-verification.d.ts.map +1 -0
- package/dist/types/git/code-modifier.d.ts +51 -0
- package/dist/types/git/code-modifier.d.ts.map +1 -0
- package/dist/types/git/git-operations.d.ts +40 -0
- package/dist/types/git/git-operations.d.ts.map +1 -0
- package/dist/types/git/pr-creator.d.ts +27 -0
- package/dist/types/git/pr-creator.d.ts.map +1 -0
- package/dist/types/index.d.ts +40 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/rag/context-retriever.d.ts +69 -0
- package/dist/types/rag/context-retriever.d.ts.map +1 -0
- package/dist/types/rag/embeddings.d.ts +32 -0
- package/dist/types/rag/embeddings.d.ts.map +1 -0
- package/dist/types/rag/index.d.ts +12 -0
- package/dist/types/rag/index.d.ts.map +1 -0
- package/dist/types/rag/knowledge-store.d.ts +38 -0
- package/dist/types/rag/knowledge-store.d.ts.map +1 -0
- package/dist/types/reporters/heal-report.d.ts +29 -0
- package/dist/types/reporters/heal-report.d.ts.map +1 -0
- package/dist/types/reporters/heal-reporter.d.ts +49 -0
- package/dist/types/reporters/heal-reporter.d.ts.map +1 -0
- package/dist/types/server/review-server.d.ts +20 -0
- package/dist/types/server/review-server.d.ts.map +1 -0
- package/dist/types/server/routes.d.ts +4 -0
- package/dist/types/server/routes.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +433 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/environment.d.ts +10 -0
- package/dist/types/utils/environment.d.ts.map +1 -0
- package/dist/types/utils/file-lock.d.ts +37 -0
- package/dist/types/utils/file-lock.d.ts.map +1 -0
- package/dist/types/utils/file-utils.d.ts +7 -0
- package/dist/types/utils/file-utils.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +9 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enterprise-strategy.js","sources":["../../../../src/core/enterprise-strategy.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
import { captureDOMSnapshot } from './dom-snapshot.js';
|
|
2
|
+
import { runStrategy } from './locator-strategies.js';
|
|
3
|
+
import { getLocatorHash } from './locator-analyzer.js';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Generates a unique event ID using a timestamp and random hex suffix.
|
|
8
|
+
*/
|
|
9
|
+
function generateEventId() {
|
|
10
|
+
const timestamp = Date.now().toString(36);
|
|
11
|
+
const random = Math.random().toString(36).substring(2, 10);
|
|
12
|
+
return `heal_${timestamp}_${random}`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The healing engine that orchestrates locator recovery.
|
|
16
|
+
*
|
|
17
|
+
* Executes strategies in the order defined by the configuration and stops
|
|
18
|
+
* on the first result whose confidence meets or exceeds the configured threshold.
|
|
19
|
+
*
|
|
20
|
+
* Pipeline order: cache -> attribute -> text -> role -> css -> xpath -> ai
|
|
21
|
+
*/
|
|
22
|
+
class Healer {
|
|
23
|
+
constructor(config, aiProvider, cache, contextRetriever, smartRetry, visualVerifier, analytics) {
|
|
24
|
+
this.config = config;
|
|
25
|
+
this.aiProvider = aiProvider;
|
|
26
|
+
this.cache = cache;
|
|
27
|
+
this.contextRetriever = contextRetriever ?? null;
|
|
28
|
+
this.smartRetry = smartRetry ?? null;
|
|
29
|
+
this.visualVerifier = visualVerifier ?? null;
|
|
30
|
+
this.analytics = analytics ?? null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Attempts to heal a broken locator by running configured strategies in order.
|
|
34
|
+
*
|
|
35
|
+
* @param page - Playwright Page instance for DOM inspection.
|
|
36
|
+
* @param originalLocator - The locator that failed to resolve.
|
|
37
|
+
* @param action - The Playwright action that was attempted (e.g. "click", "fill").
|
|
38
|
+
* @param error - The original error that triggered healing.
|
|
39
|
+
* @returns A HealingResult describing what happened, including all attempts.
|
|
40
|
+
*/
|
|
41
|
+
async heal(page, originalLocator, action, error) {
|
|
42
|
+
const eventId = generateEventId();
|
|
43
|
+
const overallStart = Date.now();
|
|
44
|
+
const attempts = [];
|
|
45
|
+
const threshold = this.config.healing.confidenceThreshold;
|
|
46
|
+
logger.info(`[${eventId}] Healing started for "${originalLocator.playwrightExpression}" ` +
|
|
47
|
+
`(action: ${action})`);
|
|
48
|
+
logger.debug(`[${eventId}] Original error: ${error.message}`);
|
|
49
|
+
// Smart retry: wait for network idle before healing (page may still be loading)
|
|
50
|
+
if (this.smartRetry) {
|
|
51
|
+
await this.smartRetry.waitForNetworkIdle(page);
|
|
52
|
+
await this.smartRetry.waitForDOMStable(page);
|
|
53
|
+
}
|
|
54
|
+
// Capture a DOM snapshot once and reuse it across strategies.
|
|
55
|
+
let domSnapshot;
|
|
56
|
+
try {
|
|
57
|
+
domSnapshot = await captureDOMSnapshot(page, undefined, this.config.healing.domSnapshotDepth ?? 3);
|
|
58
|
+
}
|
|
59
|
+
catch (snapshotError) {
|
|
60
|
+
const msg = snapshotError instanceof Error ? snapshotError.message : String(snapshotError);
|
|
61
|
+
logger.error(`[${eventId}] DOM snapshot capture failed: ${msg}`);
|
|
62
|
+
return this.buildFailureResult(originalLocator, attempts, overallStart);
|
|
63
|
+
}
|
|
64
|
+
const strategies = this.config.healing.strategies;
|
|
65
|
+
for (const strategyName of strategies) {
|
|
66
|
+
logger.debug(`[${eventId}] Trying strategy: ${strategyName}`);
|
|
67
|
+
try {
|
|
68
|
+
const attempt = await this.executeStrategy(strategyName, page, originalLocator, domSnapshot, action, error);
|
|
69
|
+
attempts.push(attempt);
|
|
70
|
+
if (attempt.locator && attempt.confidence >= threshold) {
|
|
71
|
+
// Verify the healed locator actually resolves on the page before accepting.
|
|
72
|
+
const verified = await this.verifyLocator(page, attempt.locator);
|
|
73
|
+
if (verified) {
|
|
74
|
+
// Visual verification: ensure the healed element is visually correct.
|
|
75
|
+
if (this.visualVerifier) {
|
|
76
|
+
const visualResult = await this.visualVerifier.verify(page, attempt.locator, eventId);
|
|
77
|
+
if (!visualResult.verified) {
|
|
78
|
+
logger.warn(`[${eventId}] Visual verification failed for strategy "${strategyName}". Continuing.`);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
logger.info(`[${eventId}] Healed by "${strategyName}" with confidence ${attempt.confidence}: ` +
|
|
83
|
+
`${attempt.locator.playwrightExpression}`);
|
|
84
|
+
// Persist to cache for future runs.
|
|
85
|
+
this.cacheResult(originalLocator, attempt.locator, strategyName, attempt.confidence, domSnapshot.url);
|
|
86
|
+
return {
|
|
87
|
+
success: true,
|
|
88
|
+
originalLocator,
|
|
89
|
+
healedLocator: attempt.locator,
|
|
90
|
+
strategy: strategyName,
|
|
91
|
+
confidence: attempt.confidence,
|
|
92
|
+
reasoning: this.buildReasoning(strategyName, attempt, originalLocator),
|
|
93
|
+
duration: Date.now() - overallStart,
|
|
94
|
+
attempts,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
logger.debug(`[${eventId}] Strategy "${strategyName}" produced a locator that did not resolve. Continuing.`);
|
|
98
|
+
}
|
|
99
|
+
else if (attempt.locator) {
|
|
100
|
+
logger.debug(`[${eventId}] Strategy "${strategyName}" below threshold ` +
|
|
101
|
+
`(${attempt.confidence} < ${threshold})`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
logger.debug(`[${eventId}] Strategy "${strategyName}" found no candidate`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (strategyError) {
|
|
108
|
+
const msg = strategyError instanceof Error ? strategyError.message : String(strategyError);
|
|
109
|
+
logger.error(`[${eventId}] Strategy "${strategyName}" threw: ${msg}`);
|
|
110
|
+
attempts.push({
|
|
111
|
+
strategy: strategyName,
|
|
112
|
+
locator: null,
|
|
113
|
+
confidence: 0,
|
|
114
|
+
duration: 0,
|
|
115
|
+
error: msg,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
logger.warn(`[${eventId}] All strategies exhausted. Healing failed for "${originalLocator.playwrightExpression}"`);
|
|
120
|
+
return this.buildFailureResult(originalLocator, attempts, overallStart);
|
|
121
|
+
}
|
|
122
|
+
// ── Strategy dispatch ───────────────────────────────────────────────────────
|
|
123
|
+
/**
|
|
124
|
+
* Executes a single named strategy and returns the attempt result.
|
|
125
|
+
* The "cache" and "ai" strategies are handled specially; everything else
|
|
126
|
+
* delegates to the shared `runStrategy` dispatcher.
|
|
127
|
+
*/
|
|
128
|
+
async executeStrategy(name, page, originalLocator, domSnapshot, action, error) {
|
|
129
|
+
const start = Date.now();
|
|
130
|
+
if (name === 'cache') {
|
|
131
|
+
return this.cacheStrategy(originalLocator, domSnapshot.url, start);
|
|
132
|
+
}
|
|
133
|
+
if (name === 'ai') {
|
|
134
|
+
return this.aiStrategy(originalLocator, domSnapshot, action, error, start);
|
|
135
|
+
}
|
|
136
|
+
// All other strategies are handled by the locator-strategies module.
|
|
137
|
+
return runStrategy(name, page, originalLocator, domSnapshot);
|
|
138
|
+
}
|
|
139
|
+
// ── Cache strategy ──────────────────────────────────────────────────────────
|
|
140
|
+
cacheStrategy(originalLocator, pageUrl, startTime) {
|
|
141
|
+
if (!this.config.healing.cacheHeals) {
|
|
142
|
+
return { strategy: 'cache', locator: null, confidence: 0, duration: Date.now() - startTime };
|
|
143
|
+
}
|
|
144
|
+
const hash = getLocatorHash(originalLocator, pageUrl);
|
|
145
|
+
const cached = this.cache.get(hash);
|
|
146
|
+
if (cached) {
|
|
147
|
+
logger.debug(`Cache hit for hash ${hash}, confidence ${cached.confidence}`);
|
|
148
|
+
const locator = {
|
|
149
|
+
type: cached.healedType,
|
|
150
|
+
selector: cached.healedSelector,
|
|
151
|
+
playwrightExpression: cached.healedExpression,
|
|
152
|
+
};
|
|
153
|
+
return {
|
|
154
|
+
strategy: 'cache',
|
|
155
|
+
locator,
|
|
156
|
+
confidence: cached.confidence,
|
|
157
|
+
duration: Date.now() - startTime,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return { strategy: 'cache', locator: null, confidence: 0, duration: Date.now() - startTime };
|
|
161
|
+
}
|
|
162
|
+
// ── AI strategy ─────────────────────────────────────────────────────────────
|
|
163
|
+
async aiStrategy(originalLocator, domSnapshot, action, error, startTime) {
|
|
164
|
+
if (!this.aiProvider) {
|
|
165
|
+
logger.debug('AI strategy skipped: no AI provider configured');
|
|
166
|
+
return { strategy: 'ai', locator: null, confidence: 0, duration: Date.now() - startTime };
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
// Retrieve RAG context to enhance the AI prompt
|
|
170
|
+
let ragContext;
|
|
171
|
+
if (this.contextRetriever) {
|
|
172
|
+
ragContext = this.contextRetriever.retrieve(originalLocator, domSnapshot.url, action, error.message);
|
|
173
|
+
if (ragContext.length > 0) {
|
|
174
|
+
logger.debug(`AI strategy enriched with ${ragContext.length} RAG context chunk(s)`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const response = await this.aiProvider.suggestLocator({
|
|
178
|
+
originalLocator,
|
|
179
|
+
domSnapshot: domSnapshot.html,
|
|
180
|
+
pageUrl: domSnapshot.url,
|
|
181
|
+
action,
|
|
182
|
+
errorMessage: error.message,
|
|
183
|
+
ragContext,
|
|
184
|
+
});
|
|
185
|
+
const locator = {
|
|
186
|
+
type: response.locatorType,
|
|
187
|
+
selector: response.selector,
|
|
188
|
+
playwrightExpression: response.playwrightExpression,
|
|
189
|
+
};
|
|
190
|
+
return {
|
|
191
|
+
strategy: 'ai',
|
|
192
|
+
locator,
|
|
193
|
+
confidence: response.confidence,
|
|
194
|
+
duration: Date.now() - startTime,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
catch (aiError) {
|
|
198
|
+
const msg = aiError instanceof Error ? aiError.message : String(aiError);
|
|
199
|
+
logger.error(`AI strategy failed: ${msg}`);
|
|
200
|
+
return {
|
|
201
|
+
strategy: 'ai',
|
|
202
|
+
locator: null,
|
|
203
|
+
confidence: 0,
|
|
204
|
+
duration: Date.now() - startTime,
|
|
205
|
+
error: msg,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// ── Locator verification ────────────────────────────────────────────────────
|
|
210
|
+
/**
|
|
211
|
+
* Verifies that a proposed healed locator actually resolves to at least one
|
|
212
|
+
* element on the page. Uses a short timeout to avoid blocking.
|
|
213
|
+
*/
|
|
214
|
+
async verifyLocator(page, locator) {
|
|
215
|
+
try {
|
|
216
|
+
const resolved = page.locator(locator.selector);
|
|
217
|
+
const count = await resolved.count();
|
|
218
|
+
if (count === 0) {
|
|
219
|
+
logger.debug(`Verification failed: "${locator.selector}" resolved 0 elements`);
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
if (count > 1) {
|
|
223
|
+
logger.debug(`Verification warning: "${locator.selector}" resolved ${count} elements (using first)`);
|
|
224
|
+
}
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// ── Cache persistence ───────────────────────────────────────────────────────
|
|
232
|
+
cacheResult(original, healed, strategy, confidence, pageUrl) {
|
|
233
|
+
if (!this.config.healing.cacheHeals)
|
|
234
|
+
return;
|
|
235
|
+
const hash = getLocatorHash(original, pageUrl);
|
|
236
|
+
let urlPattern;
|
|
237
|
+
try {
|
|
238
|
+
const parsed = new URL(pageUrl);
|
|
239
|
+
urlPattern = `${parsed.origin}${parsed.pathname}`;
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
urlPattern = pageUrl;
|
|
243
|
+
}
|
|
244
|
+
this.cache.set(hash, {
|
|
245
|
+
originalSelector: original.selector,
|
|
246
|
+
originalType: original.type,
|
|
247
|
+
healedSelector: healed.selector,
|
|
248
|
+
healedType: healed.type,
|
|
249
|
+
healedExpression: healed.playwrightExpression,
|
|
250
|
+
pageUrlPattern: urlPattern,
|
|
251
|
+
confidence,
|
|
252
|
+
strategy,
|
|
253
|
+
createdAt: Date.now(),
|
|
254
|
+
usageCount: 1,
|
|
255
|
+
lastUsed: Date.now(),
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
259
|
+
buildReasoning(strategy, attempt, original) {
|
|
260
|
+
const healed = attempt.locator;
|
|
261
|
+
if (!healed)
|
|
262
|
+
return 'No healed locator produced.';
|
|
263
|
+
return (`Strategy "${strategy}" healed "${original.playwrightExpression}" -> ` +
|
|
264
|
+
`"${healed.playwrightExpression}" with confidence ${attempt.confidence}.`);
|
|
265
|
+
}
|
|
266
|
+
buildFailureResult(originalLocator, attempts, overallStart) {
|
|
267
|
+
return {
|
|
268
|
+
success: false,
|
|
269
|
+
originalLocator,
|
|
270
|
+
healedLocator: null,
|
|
271
|
+
strategy: null,
|
|
272
|
+
confidence: 0,
|
|
273
|
+
reasoning: 'All healing strategies failed to find a suitable replacement locator.',
|
|
274
|
+
duration: Date.now() - overallStart,
|
|
275
|
+
attempts,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
export { Healer };
|
|
281
|
+
//# sourceMappingURL=healer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healer.js","sources":["../../../../src/core/healer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|