playwright-intelligence-engine 0.0.0-stage → 2.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/LICENSE +191 -0
- package/README.md +229 -3
- package/bin/pw-intel.js +37 -0
- package/dist/authoring/author.d.ts +83 -0
- package/dist/authoring/author.d.ts.map +1 -0
- package/dist/authoring/generation-contract.d.ts +90 -0
- package/dist/authoring/generation-contract.d.ts.map +1 -0
- package/dist/authoring/hybrid-author.d.ts +6 -0
- package/dist/authoring/hybrid-author.d.ts.map +1 -0
- package/dist/authoring/index.d.ts +7 -0
- package/dist/authoring/index.d.ts.map +1 -0
- package/dist/authoring/llm-author.d.ts +28 -0
- package/dist/authoring/llm-author.d.ts.map +1 -0
- package/dist/authoring/naming/index.d.ts +4 -0
- package/dist/authoring/naming/index.d.ts.map +1 -0
- package/dist/authoring/naming/name-plan.d.ts +45 -0
- package/dist/authoring/naming/name-plan.d.ts.map +1 -0
- package/dist/authoring/naming/name-planner.d.ts +25 -0
- package/dist/authoring/naming/name-planner.d.ts.map +1 -0
- package/dist/authoring/naming/naming-linter.d.ts +20 -0
- package/dist/authoring/naming/naming-linter.d.ts.map +1 -0
- package/dist/authoring/template-author.d.ts +6 -0
- package/dist/authoring/template-author.d.ts.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/collectors/collector-interface.d.ts +7 -0
- package/dist/collectors/collector-interface.d.ts.map +1 -0
- package/dist/collectors/environment-collector.d.ts +12 -0
- package/dist/collectors/environment-collector.d.ts.map +1 -0
- package/dist/collectors/error-collector.d.ts +18 -0
- package/dist/collectors/error-collector.d.ts.map +1 -0
- package/dist/collectors/git-diff-collector.d.ts +20 -0
- package/dist/collectors/git-diff-collector.d.ts.map +1 -0
- package/dist/collectors/live-browser-collector.d.ts +45 -0
- package/dist/collectors/live-browser-collector.d.ts.map +1 -0
- package/dist/collectors/network-collector.d.ts +28 -0
- package/dist/collectors/network-collector.d.ts.map +1 -0
- package/dist/collectors/static-ast-collector.d.ts +32 -0
- package/dist/collectors/static-ast-collector.d.ts.map +1 -0
- package/dist/collectors/trace-collector.d.ts +12 -0
- package/dist/collectors/trace-collector.d.ts.map +1 -0
- package/dist/config/project-config.d.ts +33 -0
- package/dist/config/project-config.d.ts.map +1 -0
- package/dist/core/errors/engine-errors.d.ts +34 -0
- package/dist/core/errors/engine-errors.d.ts.map +1 -0
- package/dist/core/types/diagnostic-context.d.ts +151 -0
- package/dist/core/types/diagnostic-context.d.ts.map +1 -0
- package/dist/core/types/repair-evidence.d.ts +56 -0
- package/dist/core/types/repair-evidence.d.ts.map +1 -0
- package/dist/core/version.d.ts +13 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/diagnostics/diagnostic-contract.d.ts +52 -0
- package/dist/diagnostics/diagnostic-contract.d.ts.map +1 -0
- package/dist/diagnostics/diagnostic-report.d.ts +11 -0
- package/dist/diagnostics/diagnostic-report.d.ts.map +1 -0
- package/dist/diagnostics/evidence-correlator.d.ts +22 -0
- package/dist/diagnostics/evidence-correlator.d.ts.map +1 -0
- package/dist/diagnostics/external-failure-evidence.d.ts +18 -0
- package/dist/diagnostics/external-failure-evidence.d.ts.map +1 -0
- package/dist/diagnostics/failure-category.d.ts +4 -0
- package/dist/diagnostics/failure-category.d.ts.map +1 -0
- package/dist/diagnostics/failure-classifier.d.ts +58 -0
- package/dist/diagnostics/failure-classifier.d.ts.map +1 -0
- package/dist/evaluation/evaluation-scorecard.d.ts +72 -0
- package/dist/evaluation/evaluation-scorecard.d.ts.map +1 -0
- package/dist/evaluation/repository-inspector.d.ts +21 -0
- package/dist/evaluation/repository-inspector.d.ts.map +1 -0
- package/dist/evaluation/repository-runner.d.ts +24 -0
- package/dist/evaluation/repository-runner.d.ts.map +1 -0
- package/dist/evidence/evidence-model.d.ts +88 -0
- package/dist/evidence/evidence-model.d.ts.map +1 -0
- package/dist/evidence/evidence-normalizer.d.ts +19 -0
- package/dist/evidence/evidence-normalizer.d.ts.map +1 -0
- package/dist/evidence/evidence-redactor.d.ts +37 -0
- package/dist/evidence/evidence-redactor.d.ts.map +1 -0
- package/dist/framework/config-adapter.d.ts +28 -0
- package/dist/framework/config-adapter.d.ts.map +1 -0
- package/dist/gate/index.d.ts +21 -0
- package/dist/gate/index.d.ts.map +1 -0
- package/dist/gate/oracle.d.ts +26 -0
- package/dist/gate/oracle.d.ts.map +1 -0
- package/dist/gate/quality.d.ts +27 -0
- package/dist/gate/quality.d.ts.map +1 -0
- package/dist/gate/safety.d.ts +28 -0
- package/dist/gate/safety.d.ts.map +1 -0
- package/dist/generator/architecture-generator.d.ts +55 -0
- package/dist/generator/architecture-generator.d.ts.map +1 -0
- package/dist/generator/assertion-quality-gate.d.ts +18 -0
- package/dist/generator/assertion-quality-gate.d.ts.map +1 -0
- package/dist/generator/candidate-writer.d.ts +34 -0
- package/dist/generator/candidate-writer.d.ts.map +1 -0
- package/dist/generator/test-generator.d.ts +26 -0
- package/dist/generator/test-generator.d.ts.map +1 -0
- package/dist/governance/audit-log.d.ts +23 -0
- package/dist/governance/audit-log.d.ts.map +1 -0
- package/dist/governance/governance-policy.d.ts +24 -0
- package/dist/governance/governance-policy.d.ts.map +1 -0
- package/dist/governance/team-dashboard.d.ts +51 -0
- package/dist/governance/team-dashboard.d.ts.map +1 -0
- package/dist/governance/workflow-audit.d.ts +13 -0
- package/dist/governance/workflow-audit.d.ts.map +1 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20318 -0
- package/dist/integrations/ci-summary.d.ts +14 -0
- package/dist/integrations/ci-summary.d.ts.map +1 -0
- package/dist/integrations/playwright-report-adapter.d.ts +22 -0
- package/dist/integrations/playwright-report-adapter.d.ts.map +1 -0
- package/dist/integrations/quality-gate.d.ts +35 -0
- package/dist/integrations/quality-gate.d.ts.map +1 -0
- package/dist/integrations/sarif-report.d.ts +48 -0
- package/dist/integrations/sarif-report.d.ts.map +1 -0
- package/dist/intelligence/autonomous-repair-workflow.d.ts +31 -0
- package/dist/intelligence/autonomous-repair-workflow.d.ts.map +1 -0
- package/dist/intelligence/business-intent.d.ts +58 -0
- package/dist/intelligence/business-intent.d.ts.map +1 -0
- package/dist/intelligence/evidence-bundle.d.ts +364 -0
- package/dist/intelligence/evidence-bundle.d.ts.map +1 -0
- package/dist/intelligence/failure-clustering.d.ts +38 -0
- package/dist/intelligence/failure-clustering.d.ts.map +1 -0
- package/dist/intelligence/generation-agent.d.ts +120 -0
- package/dist/intelligence/generation-agent.d.ts.map +1 -0
- package/dist/intelligence/generation-verifier.d.ts +151 -0
- package/dist/intelligence/generation-verifier.d.ts.map +1 -0
- package/dist/intelligence/llm-proposal.d.ts +377 -0
- package/dist/intelligence/llm-proposal.d.ts.map +1 -0
- package/dist/intelligence/locator-disambiguation-engine.d.ts +38 -0
- package/dist/intelligence/locator-disambiguation-engine.d.ts.map +1 -0
- package/dist/intelligence/model-contract.d.ts +86 -0
- package/dist/intelligence/model-contract.d.ts.map +1 -0
- package/dist/intelligence/model-provider.d.ts +75 -0
- package/dist/intelligence/model-provider.d.ts.map +1 -0
- package/dist/intelligence/project-intelligence.d.ts +22 -0
- package/dist/intelligence/project-intelligence.d.ts.map +1 -0
- package/dist/intelligence/repair-agent.d.ts +46 -0
- package/dist/intelligence/repair-agent.d.ts.map +1 -0
- package/dist/intelligence/repository-profile.d.ts +131 -0
- package/dist/intelligence/repository-profile.d.ts.map +1 -0
- package/dist/intelligence/suite-intelligence.d.ts +59 -0
- package/dist/intelligence/suite-intelligence.d.ts.map +1 -0
- package/dist/intelligence/test-intelligence.d.ts +44 -0
- package/dist/intelligence/test-intelligence.d.ts.map +1 -0
- package/dist/intelligence/trace-proposal-workflow.d.ts +30 -0
- package/dist/intelligence/trace-proposal-workflow.d.ts.map +1 -0
- package/dist/intelligence/verified-llm-repair-workflow.d.ts +21 -0
- package/dist/intelligence/verified-llm-repair-workflow.d.ts.map +1 -0
- package/dist/intelligence/workflow-planner.d.ts +278 -0
- package/dist/intelligence/workflow-planner.d.ts.map +1 -0
- package/dist/mcp/server.d.ts +32 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/memory/stability-ledger.d.ts +46 -0
- package/dist/memory/stability-ledger.d.ts.map +1 -0
- package/dist/perception/app-model.d.ts +55 -0
- package/dist/perception/app-model.d.ts.map +1 -0
- package/dist/perception/crawler.d.ts +18 -0
- package/dist/perception/crawler.d.ts.map +1 -0
- package/dist/perception/index.d.ts +3 -0
- package/dist/perception/index.d.ts.map +1 -0
- package/dist/repair/approval-service.d.ts +139 -0
- package/dist/repair/approval-service.d.ts.map +1 -0
- package/dist/repair/assertion-hasher.d.ts +62 -0
- package/dist/repair/assertion-hasher.d.ts.map +1 -0
- package/dist/repair/ast-patcher.d.ts +36 -0
- package/dist/repair/ast-patcher.d.ts.map +1 -0
- package/dist/repair/browser-operation-executor.d.ts +27 -0
- package/dist/repair/browser-operation-executor.d.ts.map +1 -0
- package/dist/repair/diff-allowlist.d.ts +74 -0
- package/dist/repair/diff-allowlist.d.ts.map +1 -0
- package/dist/repair/intent-validator.d.ts +157 -0
- package/dist/repair/intent-validator.d.ts.map +1 -0
- package/dist/repair/repair-operations.d.ts +40 -0
- package/dist/repair/repair-operations.d.ts.map +1 -0
- package/dist/repair/repair-planner.d.ts +98 -0
- package/dist/repair/repair-planner.d.ts.map +1 -0
- package/dist/repair/repair-workflow.d.ts +42 -0
- package/dist/repair/repair-workflow.d.ts.map +1 -0
- package/dist/repair/safe-operation-compiler.d.ts +15 -0
- package/dist/repair/safe-operation-compiler.d.ts.map +1 -0
- package/dist/repair/source-mapper.d.ts +19 -0
- package/dist/repair/source-mapper.d.ts.map +1 -0
- package/dist/repair/statement-patcher.d.ts +75 -0
- package/dist/repair/statement-patcher.d.ts.map +1 -0
- package/dist/repair/verification-gates.d.ts +25 -0
- package/dist/repair/verification-gates.d.ts.map +1 -0
- package/dist/repair/workflow-plan.d.ts +35 -0
- package/dist/repair/workflow-plan.d.ts.map +1 -0
- package/dist/repair/workspace-promoter.d.ts +43 -0
- package/dist/repair/workspace-promoter.d.ts.map +1 -0
- package/dist/reproduce/diagnostic-rerunner.d.ts +40 -0
- package/dist/reproduce/diagnostic-rerunner.d.ts.map +1 -0
- package/dist/reproduce/direct-browser-investigator.d.ts +41 -0
- package/dist/reproduce/direct-browser-investigator.d.ts.map +1 -0
- package/dist/reproduce/interactive-workflow-runner.d.ts +43 -0
- package/dist/reproduce/interactive-workflow-runner.d.ts.map +1 -0
- package/dist/sandbox/dependency-strategy.d.ts +45 -0
- package/dist/sandbox/dependency-strategy.d.ts.map +1 -0
- package/dist/sandbox/execution-runner.d.ts +81 -0
- package/dist/sandbox/execution-runner.d.ts.map +1 -0
- package/dist/sandbox/worktree-manager.d.ts +51 -0
- package/dist/sandbox/worktree-manager.d.ts.map +1 -0
- package/dist/selector/abstention-policy.d.ts +34 -0
- package/dist/selector/abstention-policy.d.ts.map +1 -0
- package/dist/selector/candidate-extractor.d.ts +71 -0
- package/dist/selector/candidate-extractor.d.ts.map +1 -0
- package/dist/selector/live-locator-verifier.d.ts +28 -0
- package/dist/selector/live-locator-verifier.d.ts.map +1 -0
- package/dist/selector/repair-candidate-ranker.d.ts +10 -0
- package/dist/selector/repair-candidate-ranker.d.ts.map +1 -0
- package/dist/selector/selector-scorer.d.ts +43 -0
- package/dist/selector/selector-scorer.d.ts.map +1 -0
- package/dist/trace/adapters/adapter-registry.d.ts +18 -0
- package/dist/trace/adapters/adapter-registry.d.ts.map +1 -0
- package/dist/trace/adapters/trace-adapter.d.ts +21 -0
- package/dist/trace/adapters/trace-adapter.d.ts.map +1 -0
- package/dist/trace/adapters/unknown-adapter.d.ts +10 -0
- package/dist/trace/adapters/unknown-adapter.d.ts.map +1 -0
- package/dist/trace/adapters/v10-adapter.d.ts +10 -0
- package/dist/trace/adapters/v10-adapter.d.ts.map +1 -0
- package/dist/trace/adapters/v4-adapter.d.ts +11 -0
- package/dist/trace/adapters/v4-adapter.d.ts.map +1 -0
- package/dist/trace/adapters/v8-adapter.d.ts +10 -0
- package/dist/trace/adapters/v8-adapter.d.ts.map +1 -0
- package/dist/trace/adapters/v9-adapter.d.ts +10 -0
- package/dist/trace/adapters/v9-adapter.d.ts.map +1 -0
- package/dist/trace/archive-reader.d.ts +44 -0
- package/dist/trace/archive-reader.d.ts.map +1 -0
- package/dist/trace/snapshot-resolver.d.ts +55 -0
- package/dist/trace/snapshot-resolver.d.ts.map +1 -0
- package/dist/trace/trace-parser.d.ts +50 -0
- package/dist/trace/trace-parser.d.ts.map +1 -0
- package/dist/trace/version-detector.d.ts +20 -0
- package/dist/trace/version-detector.d.ts.map +1 -0
- package/package.json +76 -6
- package/skills/README.md +20 -0
- package/skills/pie-failure-investigation/SKILL.md +16 -0
- package/skills/pie-quality-engineer/SKILL.md +66 -0
- package/skills/pie-release-readiness/SKILL.md +22 -0
- package/skills/pie-repair-review/SKILL.md +21 -0
- package/skills/pie-trace-to-repair/SKILL.md +35 -0
- package/src/authoring/author.ts +81 -0
- package/src/authoring/generation-contract.ts +283 -0
- package/src/authoring/hybrid-author.ts +115 -0
- package/src/authoring/index.ts +7 -0
- package/src/authoring/llm-author.ts +282 -0
- package/src/authoring/naming/index.ts +4 -0
- package/src/authoring/naming/name-plan.ts +28 -0
- package/src/authoring/naming/name-planner.ts +339 -0
- package/src/authoring/naming/naming-linter.ts +292 -0
- package/src/authoring/template-author.ts +39 -0
- package/src/cli/index.ts +1172 -0
- package/src/collectors/collector-interface.ts +8 -0
- package/src/collectors/environment-collector.ts +103 -0
- package/src/collectors/error-collector.ts +177 -0
- package/src/collectors/git-diff-collector.ts +190 -0
- package/src/collectors/live-browser-collector.ts +412 -0
- package/src/collectors/network-collector.ts +90 -0
- package/src/collectors/static-ast-collector.ts +226 -0
- package/src/collectors/trace-collector.ts +66 -0
- package/src/config/project-config.ts +114 -0
- package/src/core/errors/engine-errors.ts +90 -0
- package/src/core/types/diagnostic-context.ts +94 -0
- package/src/core/types/repair-evidence.ts +45 -0
- package/src/core/version.ts +25 -0
- package/src/diagnostics/diagnostic-contract.ts +79 -0
- package/src/diagnostics/diagnostic-report.ts +204 -0
- package/src/diagnostics/evidence-correlator.ts +117 -0
- package/src/diagnostics/external-failure-evidence.ts +72 -0
- package/src/diagnostics/failure-category.ts +40 -0
- package/src/diagnostics/failure-classifier.ts +701 -0
- package/src/evaluation/evaluation-scorecard.ts +198 -0
- package/src/evaluation/repository-inspector.ts +143 -0
- package/src/evaluation/repository-runner.ts +197 -0
- package/src/evidence/evidence-model.ts +76 -0
- package/src/evidence/evidence-normalizer.ts +322 -0
- package/src/evidence/evidence-redactor.ts +218 -0
- package/src/framework/config-adapter.ts +131 -0
- package/src/gate/index.ts +43 -0
- package/src/gate/oracle.ts +69 -0
- package/src/gate/quality.ts +101 -0
- package/src/gate/safety.ts +94 -0
- package/src/generator/architecture-generator.ts +582 -0
- package/src/generator/assertion-quality-gate.ts +88 -0
- package/src/generator/candidate-writer.ts +288 -0
- package/src/generator/test-generator.ts +52 -0
- package/src/governance/audit-log.ts +115 -0
- package/src/governance/governance-policy.ts +72 -0
- package/src/governance/team-dashboard.ts +189 -0
- package/src/governance/workflow-audit.ts +72 -0
- package/src/index.ts +107 -0
- package/src/integrations/ci-summary.ts +37 -0
- package/src/integrations/playwright-report-adapter.ts +173 -0
- package/src/integrations/quality-gate.ts +95 -0
- package/src/integrations/sarif-report.ts +110 -0
- package/src/intelligence/autonomous-repair-workflow.ts +139 -0
- package/src/intelligence/business-intent.ts +163 -0
- package/src/intelligence/evidence-bundle.ts +300 -0
- package/src/intelligence/failure-clustering.ts +134 -0
- package/src/intelligence/generation-agent.ts +561 -0
- package/src/intelligence/generation-verifier.ts +1115 -0
- package/src/intelligence/llm-proposal.ts +519 -0
- package/src/intelligence/locator-disambiguation-engine.ts +331 -0
- package/src/intelligence/model-contract.ts +205 -0
- package/src/intelligence/model-provider.ts +348 -0
- package/src/intelligence/project-intelligence.ts +140 -0
- package/src/intelligence/repair-agent.ts +297 -0
- package/src/intelligence/repository-profile.ts +796 -0
- package/src/intelligence/suite-intelligence.ts +305 -0
- package/src/intelligence/test-intelligence.ts +136 -0
- package/src/intelligence/trace-proposal-workflow.ts +318 -0
- package/src/intelligence/verified-llm-repair-workflow.ts +48 -0
- package/src/intelligence/workflow-planner.ts +966 -0
- package/src/mcp/server.ts +970 -0
- package/src/memory/stability-ledger.ts +243 -0
- package/src/perception/app-model.ts +32 -0
- package/src/perception/crawler.ts +263 -0
- package/src/perception/index.ts +3 -0
- package/src/repair/approval-service.ts +541 -0
- package/src/repair/assertion-hasher.ts +386 -0
- package/src/repair/ast-patcher.ts +223 -0
- package/src/repair/browser-operation-executor.ts +263 -0
- package/src/repair/diff-allowlist.ts +612 -0
- package/src/repair/intent-validator.ts +761 -0
- package/src/repair/repair-operations.ts +65 -0
- package/src/repair/repair-planner.ts +467 -0
- package/src/repair/repair-workflow.ts +241 -0
- package/src/repair/safe-operation-compiler.ts +68 -0
- package/src/repair/source-mapper.ts +156 -0
- package/src/repair/statement-patcher.ts +544 -0
- package/src/repair/verification-gates.ts +46 -0
- package/src/repair/workflow-plan.ts +59 -0
- package/src/repair/workspace-promoter.ts +313 -0
- package/src/reproduce/diagnostic-rerunner.ts +287 -0
- package/src/reproduce/direct-browser-investigator.ts +208 -0
- package/src/reproduce/interactive-workflow-runner.ts +828 -0
- package/src/sandbox/dependency-strategy.ts +215 -0
- package/src/sandbox/execution-runner.ts +408 -0
- package/src/sandbox/worktree-manager.ts +287 -0
- package/src/selector/abstention-policy.ts +175 -0
- package/src/selector/candidate-extractor.ts +343 -0
- package/src/selector/live-locator-verifier.ts +139 -0
- package/src/selector/repair-candidate-ranker.ts +92 -0
- package/src/selector/selector-scorer.ts +344 -0
- package/src/trace/adapters/adapter-registry.ts +49 -0
- package/src/trace/adapters/trace-adapter.ts +28 -0
- package/src/trace/adapters/unknown-adapter.ts +50 -0
- package/src/trace/adapters/v10-adapter.ts +39 -0
- package/src/trace/adapters/v4-adapter.ts +31 -0
- package/src/trace/adapters/v8-adapter.ts +42 -0
- package/src/trace/adapters/v9-adapter.ts +39 -0
- package/src/trace/archive-reader.ts +246 -0
- package/src/trace/snapshot-resolver.ts +308 -0
- package/src/trace/trace-parser.ts +467 -0
- package/src/trace/version-detector.ts +81 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Node, CallExpression } from 'ts-morph';
|
|
2
|
+
export interface CompositeIntentFingerprint {
|
|
3
|
+
assertionFingerprint: string;
|
|
4
|
+
testBodyFingerprint: string;
|
|
5
|
+
fixtureFingerprint: string;
|
|
6
|
+
compositeHash: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class AssertionHasher {
|
|
9
|
+
/**
|
|
10
|
+
* Computes a canonical, whitespace-and-formatting-insensitive SHA-256 hash of all expect() assertions.
|
|
11
|
+
* Ensures that code repairs never mutate, delete, or weaken test assertions.
|
|
12
|
+
* Preserves exact whitespace and characters inside string literals.
|
|
13
|
+
*/
|
|
14
|
+
static computeFingerprint(testFilePath: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Discovers assertion identifiers imported from @playwright/test (e.g. `expect`, or aliased `expect as verify`).
|
|
17
|
+
*/
|
|
18
|
+
static discoverAssertionIdentifiers(sourceNode: Node): Set<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Computes SHA-256 of all assertion expressions in the file.
|
|
21
|
+
* Identifies assertions semantically (calls to expect(), expect.soft(), expect.poll(), or aliased verify()).
|
|
22
|
+
* Preserves exact string literal contents and argument ordering.
|
|
23
|
+
*/
|
|
24
|
+
static computeAssertionFingerprint(testFilePath: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Semantically identifies whether a CallExpression is an assertion API call (or part of an assertion chain).
|
|
27
|
+
*/
|
|
28
|
+
static isAssertionCall(callExpr: CallExpression, knownIdentifiers?: Set<string>): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Determines whether a CallExpression is the outermost assertion call in a chain.
|
|
31
|
+
* Prevents recording duplicate partial assertion calls (e.g. both `expect(x)` and `expect(x).toBe(y)`).
|
|
32
|
+
*/
|
|
33
|
+
static isOutermostAssertionCall(callExpr: CallExpression, knownIdentifiers?: Set<string>): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Computes SHA-256 structural fingerprint of test body statements, control flow, conditions and operators.
|
|
36
|
+
* Ensures statement sequence, logical operators, condition expressions, and argument structure remain invariant.
|
|
37
|
+
*/
|
|
38
|
+
static computeTestBodyFingerprint(testFilePath: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Computes SHA-256 of test fixtures, parameters, and input literals.
|
|
41
|
+
* Preserves exact ordering and associations (e.g. object property key-value pairs).
|
|
42
|
+
* Does NOT sort away key-value associations.
|
|
43
|
+
*/
|
|
44
|
+
static computeFixtureFingerprint(testFilePath: string): string;
|
|
45
|
+
/**
|
|
46
|
+
* Computes full composite intent fingerprint combining assertions, test structure, and fixtures.
|
|
47
|
+
*/
|
|
48
|
+
static computeCompositeFingerprint(testFilePath: string): CompositeIntentFingerprint;
|
|
49
|
+
/**
|
|
50
|
+
* Extracts canonical assertion records from in-memory source.
|
|
51
|
+
*/
|
|
52
|
+
static extractAssertionRecordsFromSource(sourceText: string, fileName?: string): any[];
|
|
53
|
+
/**
|
|
54
|
+
* Computes composite intent fingerprint directly from in-memory source code.
|
|
55
|
+
*/
|
|
56
|
+
static computeCompositeFingerprintFromSource(sourceText: string, fileName?: string): CompositeIntentFingerprint;
|
|
57
|
+
/**
|
|
58
|
+
* Canonicalizes an assertion node while strictly preserving string literals exactly.
|
|
59
|
+
*/
|
|
60
|
+
private static canonicalizeAssertion;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=assertion-hasher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assertion-hasher.d.ts","sourceRoot":"","sources":["../../src/repair/assertion-hasher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,IAAI,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGzD,MAAM,WAAW,0BAA0B;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B;;;;OAIG;IACH,OAAc,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7D;IAED;;OAEG;IACH,OAAc,4BAA4B,CAAC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAmBxE;IAED;;;;OAIG;IACH,OAAc,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAgBtE;IAED;;OAEG;IACH,OAAc,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAyB/F;IAED;;;OAGG;IACH,OAAc,wBAAwB,CAAC,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAkBxG;IAED;;;OAGG;IACH,OAAc,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA0DrE;IAED;;;;OAIG;IACH,OAAc,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA6BpE;IAED;;OAEG;IACH,OAAc,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,0BAA0B,CAgB1F;IAED;;OAEG;IACH,OAAc,iCAAiC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,SAAsB,GAAG,GAAG,EAAE,CAWzG;IAED;;OAEG;IACH,OAAc,qCAAqC,CACjD,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAsB,GAC7B,0BAA0B,CA4F5B;IAED;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAwBrC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface PatchTarget {
|
|
2
|
+
filePath: string;
|
|
3
|
+
className: string;
|
|
4
|
+
memberName: string;
|
|
5
|
+
replacementExpression: string;
|
|
6
|
+
}
|
|
7
|
+
export type SupportedPOMPattern = 'property-initializer' | 'getter-return' | 'constructor-assignment' | 'parameterless-factory' | 'locator-constant';
|
|
8
|
+
export interface PatchResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
pattern: SupportedPOMPattern;
|
|
11
|
+
originalExpression: string;
|
|
12
|
+
replacementExpression: string;
|
|
13
|
+
patchedSource?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class AstPatcher {
|
|
16
|
+
private project;
|
|
17
|
+
constructor(tsConfigFilePath?: string);
|
|
18
|
+
static generateDiff(originalText: string, patchedText: string, fileName?: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Surgical AST modification targeting Page Object locator definitions in-memory.
|
|
21
|
+
* Does NOT write to disk, enabling sandboxed validation and atomic diff checking.
|
|
22
|
+
*/
|
|
23
|
+
patchPageObjectInMemory(sourceText: string, target: Omit<PatchTarget, 'filePath'>): {
|
|
24
|
+
patchedSource: string;
|
|
25
|
+
pattern: SupportedPOMPattern;
|
|
26
|
+
originalExpression: string;
|
|
27
|
+
diff: string;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Surgical AST modification targeting Page Object locator definitions.
|
|
31
|
+
* Performs in-memory patch validation, then atomically writes to disk
|
|
32
|
+
* using a temporary file and atomic rename to guarantee transactional consistency.
|
|
33
|
+
*/
|
|
34
|
+
patchPageObject(target: PatchTarget): PatchResult;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ast-patcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast-patcher.d.ts","sourceRoot":"","sources":["../../src/repair/ast-patcher.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,mBAAmB,GAC3B,sBAAsB,GACtB,eAAe,GACf,wBAAwB,GACxB,uBAAuB,GACvB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAU;IAEzB,YAAY,gBAAgB,CAAC,EAAE,MAAM,EAWpC;IAED,OAAc,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,SAAc,GAAG,MAAM,CAapG;IAED;;;OAGG;IACI,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GAAG;QACzF,aAAa,EAAE,MAAM,CAAC;QACtB,OAAO,EAAE,mBAAmB,CAAC;QAC7B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;KACd,CA0GA;IAED;;;;OAIG;IACI,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAwCvD;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { LocatorPlan } from '../selector/candidate-extractor.js';
|
|
2
|
+
import { LiveVerificationResult } from '../selector/live-locator-verifier.js';
|
|
3
|
+
import { RepairOperation } from './repair-operations.js';
|
|
4
|
+
export type BrowserOperationStatus = 'VERIFIED' | 'FAILED' | 'ABSTAINED';
|
|
5
|
+
export interface BrowserOperationExecutionInput {
|
|
6
|
+
pageOrFrame: any;
|
|
7
|
+
operation: unknown;
|
|
8
|
+
targetPlan?: LocatorPlan | undefined;
|
|
9
|
+
replacementPlan?: LocatorPlan | undefined;
|
|
10
|
+
overlayPlan?: LocatorPlan | undefined;
|
|
11
|
+
allowInteraction?: boolean | undefined;
|
|
12
|
+
}
|
|
13
|
+
export interface BrowserOperationExecutionResult {
|
|
14
|
+
status: BrowserOperationStatus;
|
|
15
|
+
kind: RepairOperation['kind'];
|
|
16
|
+
action: 'verify' | 'click' | 'none';
|
|
17
|
+
verification?: LiveVerificationResult | undefined;
|
|
18
|
+
evidence: string[];
|
|
19
|
+
reason?: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Executes only the browser-safe subset of allowlisted repair operations.
|
|
23
|
+
* It accepts typed LocatorPlans rather than evaluating model-generated strings.
|
|
24
|
+
* Source mutation remains a separate AST/worktree/approval lifecycle.
|
|
25
|
+
*/
|
|
26
|
+
export declare function executeBrowserOperation(input: BrowserOperationExecutionInput): Promise<BrowserOperationExecutionResult>;
|
|
27
|
+
//# sourceMappingURL=browser-operation-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-operation-executor.d.ts","sourceRoot":"","sources":["../../src/repair/browser-operation-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAuB,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAC;AAGlF,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,GAAG,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAC1C,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACpC,YAAY,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAClD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAyJD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAiF7H"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export interface DiffAllowlistTarget {
|
|
2
|
+
originalSource: string;
|
|
3
|
+
patchedSource: string;
|
|
4
|
+
targetClassName: string;
|
|
5
|
+
targetMemberName: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DiffAllowlistResult {
|
|
8
|
+
isAllowed: boolean;
|
|
9
|
+
reason?: string | undefined;
|
|
10
|
+
modifiedMember?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
export declare class DiffAllowlistValidator {
|
|
13
|
+
private static readonly APPROVED_LOCATOR_METHODS;
|
|
14
|
+
/**
|
|
15
|
+
* Validates that ONLY the authorized locator member within the specified Page Object was modified.
|
|
16
|
+
* Compares the COMPLETE AST of the source file:
|
|
17
|
+
* - Prohibits modifying or adding imports.
|
|
18
|
+
* - Prohibits adding, removing, or modifying top-level functions, variables, interfaces, enums, type aliases.
|
|
19
|
+
* - Prohibits adding or removing class members (properties, methods, getters, setters, constructors).
|
|
20
|
+
* - Prohibits modifying class inheritance, decorators, or modifiers.
|
|
21
|
+
* - Validates that the replacement expression conforms strictly to the approved Playwright locator grammar.
|
|
22
|
+
*/
|
|
23
|
+
static validate(target: DiffAllowlistTarget): DiffAllowlistResult;
|
|
24
|
+
private static readonly APPROVED_OPTION_KEYS;
|
|
25
|
+
private static isLiteralValue;
|
|
26
|
+
/**
|
|
27
|
+
* Recursively validates an argument node passed into a locator method call.
|
|
28
|
+
* Strictly disallows identifiers (process.env), arbitrary function calls,
|
|
29
|
+
* arrow functions, dynamic property accesses, and executable code.
|
|
30
|
+
*/
|
|
31
|
+
private static validateArgumentNode;
|
|
32
|
+
/**
|
|
33
|
+
* Validates a locator call chain expression recursively, including all arguments.
|
|
34
|
+
*/
|
|
35
|
+
private static validateLocatorCallChain;
|
|
36
|
+
/**
|
|
37
|
+
* Validates that a replacement expression is strictly a safe Playwright locator call AST.
|
|
38
|
+
* Rejects arbitrary statements, process calls, functions, or unapproved methods.
|
|
39
|
+
*/
|
|
40
|
+
static validateLocatorGrammar(expressionText: string): {
|
|
41
|
+
isValid: boolean;
|
|
42
|
+
reason?: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Asserts diff allowlist compliance, throwing UnauthorizedAstModificationError if violated.
|
|
46
|
+
*/
|
|
47
|
+
static assertAllowed(target: DiffAllowlistTarget): void;
|
|
48
|
+
}
|
|
49
|
+
export interface StatementDiffAllowlistTarget {
|
|
50
|
+
originalSource: string;
|
|
51
|
+
patchedSource: string;
|
|
52
|
+
operation?: string | undefined;
|
|
53
|
+
targetLine?: number | undefined;
|
|
54
|
+
}
|
|
55
|
+
export interface StatementDiffAllowlistResult {
|
|
56
|
+
isAllowed: boolean;
|
|
57
|
+
reason?: string | undefined;
|
|
58
|
+
}
|
|
59
|
+
export declare class StatementDiffAllowlistValidator {
|
|
60
|
+
private static readonly DISALLOWED_SECURITY_TOKENS;
|
|
61
|
+
/**
|
|
62
|
+
* Validates that ONLY approved statement-level modifications (timing synchronizations,
|
|
63
|
+
* event-driven wait replacements, readiness checks, or inline locator repairs) were applied to the test spec AST.
|
|
64
|
+
*
|
|
65
|
+
* Guarantees:
|
|
66
|
+
* - No arbitrary code execution or dangerous APIs.
|
|
67
|
+
* - No unauthorized third-party module imports.
|
|
68
|
+
* - Top-level declarations (functions, classes, interfaces, types) remain invariant.
|
|
69
|
+
* - Test block structure and test descriptions remain invariant.
|
|
70
|
+
*/
|
|
71
|
+
static validate(target: StatementDiffAllowlistTarget): StatementDiffAllowlistResult;
|
|
72
|
+
static assertAllowed(target: StatementDiffAllowlistTarget): void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=diff-allowlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-allowlist.d.ts","sourceRoot":"","sources":["../../src/repair/diff-allowlist.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAc7C;IAEH;;;;;;;;OAQG;IACH,OAAc,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CA4NvE;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAezC;IAEH,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAwDnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA0CvC;;;OAGG;IACH,OAAc,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAsDlG;IAED;;OAEG;IACH,OAAc,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAK7D;CACF;AAED,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,qBAAa,+BAA+B;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CAUhD;IAEF;;;;;;;;;OASG;IACH,OAAc,QAAQ,CAAC,MAAM,EAAE,4BAA4B,GAAG,4BAA4B,CAoGzF;IAED,OAAc,aAAa,CAAC,MAAM,EAAE,4BAA4B,GAAG,IAAI,CAKtE;CACF"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { CompositeIntentFingerprint } from './assertion-hasher.js';
|
|
2
|
+
import { ResolvedElement } from '../trace/snapshot-resolver.js';
|
|
3
|
+
export interface ValidationTarget {
|
|
4
|
+
testFilePath: string;
|
|
5
|
+
originalFingerprint: string;
|
|
6
|
+
candidateElement: ResolvedElement;
|
|
7
|
+
intendedAction: string;
|
|
8
|
+
originalSelector?: string | undefined;
|
|
9
|
+
businessOracleStatus?: 'verified' | 'contradicted' | 'unavailable' | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface VerifiedExecutionProof {
|
|
12
|
+
proposalId?: string | undefined;
|
|
13
|
+
worktreeId: string;
|
|
14
|
+
repositoryIdentity?: string | undefined;
|
|
15
|
+
originalSourceHash?: string | undefined;
|
|
16
|
+
modifiedSourceHash?: string | undefined;
|
|
17
|
+
diffHash?: string | undefined;
|
|
18
|
+
targetTestIdentity?: string | undefined;
|
|
19
|
+
testFilePath: string;
|
|
20
|
+
command: string;
|
|
21
|
+
exitCode: number;
|
|
22
|
+
stdout: string;
|
|
23
|
+
stderr: string;
|
|
24
|
+
passed: boolean;
|
|
25
|
+
executionOutcome?: 'PASS' | 'FAIL' | undefined;
|
|
26
|
+
durationMs: number;
|
|
27
|
+
targetTestEvidence?: string[] | undefined;
|
|
28
|
+
regressionEvidence?: string[] | undefined;
|
|
29
|
+
assertionIntegrityValid?: boolean | undefined;
|
|
30
|
+
timestamp: number;
|
|
31
|
+
proofVersion?: string | undefined;
|
|
32
|
+
}
|
|
33
|
+
export interface PreflightProposalTarget {
|
|
34
|
+
testFilePath: string;
|
|
35
|
+
originalCompositeFingerprint: CompositeIntentFingerprint;
|
|
36
|
+
candidateElement: ResolvedElement;
|
|
37
|
+
intendedAction: string;
|
|
38
|
+
originalSelector?: string | undefined;
|
|
39
|
+
businessOracleStatus?: 'verified' | 'contradicted' | 'unavailable' | undefined;
|
|
40
|
+
}
|
|
41
|
+
export interface PreflightProposalResult {
|
|
42
|
+
isValid: boolean;
|
|
43
|
+
assertionsPreserved: boolean;
|
|
44
|
+
testBodyPreserved: boolean;
|
|
45
|
+
fixturesPreserved: boolean;
|
|
46
|
+
identityAndActionPreserved: boolean;
|
|
47
|
+
summary: string;
|
|
48
|
+
reason?: string | undefined;
|
|
49
|
+
}
|
|
50
|
+
export interface VerifiedAuthorizationTarget {
|
|
51
|
+
testFilePath: string;
|
|
52
|
+
originalCompositeFingerprint: CompositeIntentFingerprint;
|
|
53
|
+
pageObjectOriginalSource: string;
|
|
54
|
+
pageObjectPatchedSource: string;
|
|
55
|
+
pageObjectClassName: string;
|
|
56
|
+
targetMemberName: string;
|
|
57
|
+
candidateElement: ResolvedElement;
|
|
58
|
+
intendedAction: string;
|
|
59
|
+
originalSelector?: string | undefined;
|
|
60
|
+
executionProof: VerifiedExecutionProof;
|
|
61
|
+
businessOracleStatus?: 'verified' | 'contradicted' | 'unavailable' | undefined;
|
|
62
|
+
}
|
|
63
|
+
export interface VerifiedAuthorizationResult {
|
|
64
|
+
isAuthorized: boolean;
|
|
65
|
+
assertionsPreserved: boolean;
|
|
66
|
+
testBodyPreserved: boolean;
|
|
67
|
+
fixturesPreserved: boolean;
|
|
68
|
+
identityAndActionPreserved: boolean;
|
|
69
|
+
diffAllowlistPassed: boolean;
|
|
70
|
+
executionVerified: boolean;
|
|
71
|
+
summary: string;
|
|
72
|
+
reason?: string | undefined;
|
|
73
|
+
}
|
|
74
|
+
export interface IntentV2ValidationTarget {
|
|
75
|
+
testFilePath: string;
|
|
76
|
+
originalCompositeFingerprint: CompositeIntentFingerprint;
|
|
77
|
+
pageObjectOriginalSource?: string | undefined;
|
|
78
|
+
pageObjectPatchedSource?: string | undefined;
|
|
79
|
+
pageObjectClassName?: string | undefined;
|
|
80
|
+
targetMemberName?: string | undefined;
|
|
81
|
+
candidateElement: ResolvedElement;
|
|
82
|
+
intendedAction: string;
|
|
83
|
+
originalSelector?: string | undefined;
|
|
84
|
+
executionPassed?: boolean | undefined;
|
|
85
|
+
executionProof?: VerifiedExecutionProof | undefined;
|
|
86
|
+
mode?: 'pre-flight' | 'authorization' | undefined;
|
|
87
|
+
strict?: boolean | undefined;
|
|
88
|
+
businessOracleStatus?: 'verified' | 'contradicted' | 'unavailable' | undefined;
|
|
89
|
+
pattern?: string | undefined;
|
|
90
|
+
}
|
|
91
|
+
export interface IntentValidationResult {
|
|
92
|
+
isValid: boolean;
|
|
93
|
+
assertionPreserved: boolean;
|
|
94
|
+
actionSemanticsValid: boolean;
|
|
95
|
+
identityPreserved: boolean;
|
|
96
|
+
reason?: string | undefined;
|
|
97
|
+
}
|
|
98
|
+
export interface IntentV2ValidationResult {
|
|
99
|
+
isValid: boolean;
|
|
100
|
+
assertionsPreserved: boolean;
|
|
101
|
+
testBodyPreserved: boolean;
|
|
102
|
+
fixturesPreserved: boolean;
|
|
103
|
+
identityAndActionPreserved: boolean;
|
|
104
|
+
diffAllowlistPassed: boolean;
|
|
105
|
+
executionVerified: boolean;
|
|
106
|
+
reason?: string | undefined;
|
|
107
|
+
summary: string;
|
|
108
|
+
}
|
|
109
|
+
export declare class IntentValidator {
|
|
110
|
+
private static readonly CONFLICTING_ACTION_PAIRS;
|
|
111
|
+
/**
|
|
112
|
+
* Validates whether candidate element preserves genuine business identity
|
|
113
|
+
* without substituting contradictory actions (e.g. replacing 'Submit' with 'Cancel').
|
|
114
|
+
*/
|
|
115
|
+
static verifyTargetIdentity(originalSelector: string | undefined, candidate: ResolvedElement): {
|
|
116
|
+
isPreserved: boolean;
|
|
117
|
+
reason?: string;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Backward-compatible validation for simple assertion and identity checks.
|
|
121
|
+
*/
|
|
122
|
+
static validate(target: ValidationTarget): IntentValidationResult;
|
|
123
|
+
/**
|
|
124
|
+
* Evaluates proposal pre-flight invariant: V_pre = A ∧ T ∧ F ∧ I
|
|
125
|
+
* Used strictly for in-memory planning without claiming mutation authorization.
|
|
126
|
+
*/
|
|
127
|
+
static validateProposal(target: PreflightProposalTarget): PreflightProposalResult;
|
|
128
|
+
/**
|
|
129
|
+
* Evaluates strict production authorization invariant: V = A ∧ T ∧ F ∧ I ∧ D ∧ E
|
|
130
|
+
* Unconditionally fails closed if any evidence is missing or execution proof fails.
|
|
131
|
+
*/
|
|
132
|
+
static authorizeVerifiedRepair(target: VerifiedAuthorizationTarget): VerifiedAuthorizationResult;
|
|
133
|
+
/**
|
|
134
|
+
* INVARIANT: Input Data Integrity.
|
|
135
|
+
* Tests are executable business specifications. Repairing a broken locator or timing
|
|
136
|
+
* issue MUST NOT mutate business input parameters (quantities, credentials, search queries, prices).
|
|
137
|
+
*/
|
|
138
|
+
static validateInputDataIntegrity(originalSource: string, patchedSource: string): {
|
|
139
|
+
isValid: boolean;
|
|
140
|
+
reason?: string;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* INVARIANT: Workflow Step Integrity.
|
|
144
|
+
* Repairs must not delete, add, or reorder intermediate workflow steps (e.g. swapping or skipping checkout steps).
|
|
145
|
+
*/
|
|
146
|
+
static validateWorkflowStepIntegrity(originalSource: string, patchedSource: string): {
|
|
147
|
+
isValid: boolean;
|
|
148
|
+
reason?: string;
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Unified v2 entry point. Preserves backward compatibility while enforcing fail-closed
|
|
152
|
+
* authorization when mode !== 'pre-flight'.
|
|
153
|
+
*/
|
|
154
|
+
static validateV2(target: IntentV2ValidationTarget): IntentV2ValidationResult;
|
|
155
|
+
private static checkActionSemantics;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=intent-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent-validator.d.ts","sourceRoot":"","sources":["../../src/repair/intent-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const RepairOperationKindSchema: z.ZodEnum<{
|
|
3
|
+
abstain: "abstain";
|
|
4
|
+
add_frame_scope: "add_frame_scope";
|
|
5
|
+
add_shadow_scope: "add_shadow_scope";
|
|
6
|
+
dismiss_overlay: "dismiss_overlay";
|
|
7
|
+
replace_locator: "replace_locator";
|
|
8
|
+
replace_select_with_combobox_flow: "replace_select_with_combobox_flow";
|
|
9
|
+
replace_unstable_wait_with_state_wait: "replace_unstable_wait_with_state_wait";
|
|
10
|
+
satisfy_prerequisite: "satisfy_prerequisite";
|
|
11
|
+
}>;
|
|
12
|
+
export type RepairOperationKind = z.infer<typeof RepairOperationKindSchema>;
|
|
13
|
+
export declare const RepairOperationSchema: z.ZodObject<{
|
|
14
|
+
kind: z.ZodEnum<{
|
|
15
|
+
abstain: "abstain";
|
|
16
|
+
add_frame_scope: "add_frame_scope";
|
|
17
|
+
add_shadow_scope: "add_shadow_scope";
|
|
18
|
+
dismiss_overlay: "dismiss_overlay";
|
|
19
|
+
replace_locator: "replace_locator";
|
|
20
|
+
replace_select_with_combobox_flow: "replace_select_with_combobox_flow";
|
|
21
|
+
replace_unstable_wait_with_state_wait: "replace_unstable_wait_with_state_wait";
|
|
22
|
+
satisfy_prerequisite: "satisfy_prerequisite";
|
|
23
|
+
}>;
|
|
24
|
+
target: z.ZodOptional<z.ZodString>;
|
|
25
|
+
locator: z.ZodOptional<z.ZodString>;
|
|
26
|
+
frameLocator: z.ZodOptional<z.ZodString>;
|
|
27
|
+
shadowPath: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
28
|
+
prerequisite: z.ZodOptional<z.ZodString>;
|
|
29
|
+
steps: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
export type RepairOperation = z.infer<typeof RepairOperationSchema>;
|
|
33
|
+
export interface RepairOperationValidation {
|
|
34
|
+
isValid: boolean;
|
|
35
|
+
reason?: string;
|
|
36
|
+
operation?: RepairOperation;
|
|
37
|
+
}
|
|
38
|
+
export declare function validateRepairOperation(input: unknown): RepairOperationValidation;
|
|
39
|
+
export declare function isSourceMutationOperation(operation: RepairOperation): boolean;
|
|
40
|
+
//# sourceMappingURL=repair-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-operations.d.ts","sourceRoot":"","sources":["../../src/repair/repair-operations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;EASpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;kBASvB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAaD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,CAcjF;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAE7E"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { StatementPatchPlan } from './statement-patcher.js';
|
|
2
|
+
import { CompositeIntentFingerprint } from './assertion-hasher.js';
|
|
3
|
+
import { IntentV2ValidationResult, VerifiedExecutionProof } from './intent-validator.js';
|
|
4
|
+
import { RepairEvidence } from '../core/types/repair-evidence.js';
|
|
5
|
+
import { ResolvedElement } from '../trace/snapshot-resolver.js';
|
|
6
|
+
import { ExecutionResult } from '../sandbox/execution-runner.js';
|
|
7
|
+
import { BusinessIntent, BusinessOracleResult } from '../intelligence/business-intent.js';
|
|
8
|
+
export type RepairLifecycleState = 'ANALYZED' | 'PROPOSED' | 'PATCHED_IN_ISOLATION' | 'INTENT_VALIDATED' | 'TARGET_TEST_PASSED' | 'AFFECTED_TESTS_PASSED' | 'FULL_SUITE_PASSED' | 'READY_FOR_APPROVAL' | 'REJECTED';
|
|
9
|
+
export interface RepairProposal {
|
|
10
|
+
state: RepairLifecycleState;
|
|
11
|
+
originalActionId: string;
|
|
12
|
+
originalSelector: string;
|
|
13
|
+
replacementSelector: string;
|
|
14
|
+
candidateElement: ResolvedElement;
|
|
15
|
+
candidateScore: number;
|
|
16
|
+
testFilePath: string;
|
|
17
|
+
pomFilePath: string;
|
|
18
|
+
className: string;
|
|
19
|
+
memberName: string;
|
|
20
|
+
intendedAction: string;
|
|
21
|
+
originalCompositeFingerprint: CompositeIntentFingerprint;
|
|
22
|
+
proposedPatchedSource: string;
|
|
23
|
+
originalSource: string;
|
|
24
|
+
pattern: string;
|
|
25
|
+
fullDiff?: string | undefined;
|
|
26
|
+
diffAllowlistPassed: boolean;
|
|
27
|
+
businessIntent?: BusinessIntent | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface RepairVerificationInput {
|
|
30
|
+
proposal: RepairProposal;
|
|
31
|
+
worktreePath: string;
|
|
32
|
+
worktreeId: string;
|
|
33
|
+
workspaceRoot?: string | undefined;
|
|
34
|
+
configPath?: string | undefined;
|
|
35
|
+
project?: string | undefined;
|
|
36
|
+
businessOracleStatus?: 'verified' | 'contradicted' | 'unavailable' | undefined;
|
|
37
|
+
}
|
|
38
|
+
export interface VerifiedRepairResult {
|
|
39
|
+
state: RepairLifecycleState;
|
|
40
|
+
evidence: RepairEvidence;
|
|
41
|
+
executionResult: ExecutionResult;
|
|
42
|
+
intentValidation: IntentV2ValidationResult;
|
|
43
|
+
executionProof: VerifiedExecutionProof;
|
|
44
|
+
isReadyForApproval: boolean;
|
|
45
|
+
businessOracleResults?: BusinessOracleResult[] | undefined;
|
|
46
|
+
}
|
|
47
|
+
export interface RepairPlanInput {
|
|
48
|
+
originalActionId: string;
|
|
49
|
+
originalSelector: string;
|
|
50
|
+
candidateElement: ResolvedElement;
|
|
51
|
+
candidateScore: number;
|
|
52
|
+
testFilePath: string;
|
|
53
|
+
pomFilePath: string;
|
|
54
|
+
className: string;
|
|
55
|
+
memberName: string;
|
|
56
|
+
intendedAction: string;
|
|
57
|
+
replacementSelector?: string | undefined;
|
|
58
|
+
worktreeId?: string | undefined;
|
|
59
|
+
}
|
|
60
|
+
export interface StatementRepairPlanInput {
|
|
61
|
+
originalActionId: string;
|
|
62
|
+
originalSelector?: string | undefined;
|
|
63
|
+
testFilePath: string;
|
|
64
|
+
plan: StatementPatchPlan;
|
|
65
|
+
candidateElement?: ResolvedElement | undefined;
|
|
66
|
+
candidateScore?: number | undefined;
|
|
67
|
+
intendedAction?: string | undefined;
|
|
68
|
+
worktreeId?: string | undefined;
|
|
69
|
+
}
|
|
70
|
+
export declare class RepairPlanner {
|
|
71
|
+
/**
|
|
72
|
+
* Generates a modern, user-centric Playwright locator expression prioritizing getByRole and getByTestId.
|
|
73
|
+
* Employs robust string escaping; avoids bare tag fallbacks.
|
|
74
|
+
*/
|
|
75
|
+
static generateSelectorExpression(el: ResolvedElement, pageProperty?: string): string;
|
|
76
|
+
/**
|
|
77
|
+
* Generates a verified in-memory statement patch proposal using StatementPatcher.
|
|
78
|
+
* Enables healing of inline test statements, timing synchronization, and sleep elimination.
|
|
79
|
+
*/
|
|
80
|
+
static planStatementRepair(input: StatementRepairPlanInput): RepairProposal;
|
|
81
|
+
/**
|
|
82
|
+
* Stage 1 & 2: Analyzes candidate and generates an in-memory repair proposal.
|
|
83
|
+
* Does NOT modify source files on disk. Does NOT claim repair success.
|
|
84
|
+
*/
|
|
85
|
+
static planRepair(input: RepairPlanInput): RepairProposal;
|
|
86
|
+
/**
|
|
87
|
+
* Stages 3-8: Applies patch strictly inside the isolated Git worktree, runs test execution,
|
|
88
|
+
* validates Intent Invariant v2 with actual execution proof, and derives verified evidence.
|
|
89
|
+
*/
|
|
90
|
+
static executeAndVerifyInWorktree(input: RepairVerificationInput): Promise<VerifiedRepairResult>;
|
|
91
|
+
/**
|
|
92
|
+
* Backward-compatible planAndExecute wrapper.
|
|
93
|
+
* Generates in-memory repair proposal and validates intent in-memory.
|
|
94
|
+
* Strictly PROHIBITS direct disk mutation without isolated worktree execution.
|
|
95
|
+
*/
|
|
96
|
+
static planAndExecute(input: RepairPlanInput): RepairEvidence;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=repair-planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-planner.d.ts","sourceRoot":"","sources":["../../src/repair/repair-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CorrelatedEvidence } from '../diagnostics/evidence-correlator.js';
|
|
2
|
+
import { StagedProposal } from './approval-service.js';
|
|
3
|
+
import { RepairProposal, VerifiedRepairResult } from './repair-planner.js';
|
|
4
|
+
import { WorktreeInfo } from '../sandbox/worktree-manager.js';
|
|
5
|
+
export type RepairWorkflowStatus = 'ABSTAINED' | 'INPUT_REQUIRED' | 'OPERATION_PROPOSAL_ONLY' | 'PROPOSAL_READY' | 'VERIFIED_READY_FOR_APPROVAL' | 'REJECTED';
|
|
6
|
+
export interface RepairWorkflowInput {
|
|
7
|
+
tracePath: string;
|
|
8
|
+
workspaceRoot?: string | undefined;
|
|
9
|
+
errorContextPath?: string | undefined;
|
|
10
|
+
testFilePath?: string | undefined;
|
|
11
|
+
pomFilePath?: string | undefined;
|
|
12
|
+
className?: string | undefined;
|
|
13
|
+
memberName?: string | undefined;
|
|
14
|
+
configPath?: string | undefined;
|
|
15
|
+
project?: string | undefined;
|
|
16
|
+
execute?: boolean | undefined;
|
|
17
|
+
worktreeId?: string | undefined;
|
|
18
|
+
operation?: unknown;
|
|
19
|
+
requireOperationTargetMatch?: boolean | undefined;
|
|
20
|
+
}
|
|
21
|
+
export interface RepairWorkflowResult {
|
|
22
|
+
status: RepairWorkflowStatus;
|
|
23
|
+
correlated: CorrelatedEvidence;
|
|
24
|
+
proposedLocator?: string | undefined;
|
|
25
|
+
candidate?: {
|
|
26
|
+
locatorExpression: string;
|
|
27
|
+
score: number;
|
|
28
|
+
element: RepairProposal['candidateElement'];
|
|
29
|
+
} | undefined;
|
|
30
|
+
proposal?: RepairProposal | undefined;
|
|
31
|
+
stagedProposal?: StagedProposal | undefined;
|
|
32
|
+
worktree?: WorktreeInfo | undefined;
|
|
33
|
+
verification?: VerifiedRepairResult | undefined;
|
|
34
|
+
reason?: string | undefined;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Trace-to-repair bridge. It is proposal-only by default. `execute: true`
|
|
38
|
+
* creates a dedicated worktree and runs the existing verification lifecycle;
|
|
39
|
+
* it never writes the active workspace or issues an approval token.
|
|
40
|
+
*/
|
|
41
|
+
export declare function runRepairWorkflow(input: RepairWorkflowInput): Promise<RepairWorkflowResult>;
|
|
42
|
+
//# sourceMappingURL=repair-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repair-workflow.d.ts","sourceRoot":"","sources":["../../src/repair/repair-workflow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAsB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAI/F,OAAO,EAAmB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAiB,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAK/E,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,gBAAgB,GAAG,yBAAyB,GAAG,gBAAgB,GAAG,6BAA6B,GAAG,UAAU,CAAC;AAE9J,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE;QACV,iBAAiB,EAAE,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,cAAc,CAAC,kBAAkB,CAAC,CAAC;KAC7C,GAAG,SAAS,CAAC;IACd,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACtC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAkDD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyIjG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { RepairOperation } from './repair-operations.js';
|
|
2
|
+
export type SafeOperationReadiness = 'READY_FOR_ISOLATED_VERIFICATION' | 'PROPOSAL_ONLY' | 'ABSTAIN';
|
|
3
|
+
export interface CompiledSafeOperation {
|
|
4
|
+
readiness: SafeOperationReadiness;
|
|
5
|
+
kind: RepairOperation['kind'];
|
|
6
|
+
target?: string | undefined;
|
|
7
|
+
replacementLocator?: string | undefined;
|
|
8
|
+
reason: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Converts allowlisted workflow operations into immutable locator proposals.
|
|
12
|
+
* It never writes source files and never claims browser execution succeeded.
|
|
13
|
+
*/
|
|
14
|
+
export declare function compileSafeRepairOperation(input: unknown): CompiledSafeOperation;
|
|
15
|
+
//# sourceMappingURL=safe-operation-compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-operation-compiler.d.ts","sourceRoot":"","sources":["../../src/repair/safe-operation-compiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAC;AAElF,MAAM,MAAM,sBAAsB,GAAG,iCAAiC,GAAG,eAAe,GAAG,SAAS,CAAC;AAErG,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,sBAAsB,CAAC;IAClC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAgBD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,CAoChF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FailedAction } from '../core/types/diagnostic-context.js';
|
|
2
|
+
export interface RepairSourceMapping {
|
|
3
|
+
testFilePath: string;
|
|
4
|
+
pomFilePath: string;
|
|
5
|
+
className: string;
|
|
6
|
+
memberName: string;
|
|
7
|
+
confidence: number;
|
|
8
|
+
evidence: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Finds a unique Page Object locator for a failed trace action. This is
|
|
12
|
+
* intentionally selector-based and fail-closed; it does not infer a class or
|
|
13
|
+
* member from naming conventions when the selector evidence is absent.
|
|
14
|
+
*/
|
|
15
|
+
export declare function discoverRepairSourceMapping(input: {
|
|
16
|
+
workspaceRoot: string;
|
|
17
|
+
failedAction: FailedAction;
|
|
18
|
+
}): Promise<RepairSourceMapping | undefined>;
|
|
19
|
+
//# sourceMappingURL=source-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-mapper.d.ts","sourceRoot":"","sources":["../../src/repair/source-mapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqFD;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAkD3C"}
|