sela-core 1.0.7 → 1.0.8

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 (114) hide show
  1. package/dist/cli/ErrorHandler.d.ts +1 -1
  2. package/dist/cli/ErrorHandler.js +14 -14
  3. package/dist/cli/commands/bulk.d.ts +1 -1
  4. package/dist/cli/commands/bulk.d.ts.map +1 -1
  5. package/dist/cli/commands/bulk.js +51 -33
  6. package/dist/cli/commands/init.d.ts +1 -1
  7. package/dist/cli/commands/init.d.ts.map +1 -1
  8. package/dist/cli/commands/init.js +26 -18
  9. package/dist/cli/commands/showReport.d.ts +1 -1
  10. package/dist/cli/commands/showReport.d.ts.map +1 -1
  11. package/dist/cli/commands/showReport.js +12 -10
  12. package/dist/cli/commands/status.d.ts +1 -1
  13. package/dist/cli/commands/status.d.ts.map +1 -1
  14. package/dist/cli/commands/status.js +8 -8
  15. package/dist/cli/commands/sync.d.ts +1 -1
  16. package/dist/cli/commands/sync.d.ts.map +1 -1
  17. package/dist/cli/commands/sync.js +38 -30
  18. package/dist/cli/index.js +9 -9
  19. package/dist/cli/ui/DnaTable.d.ts +1 -1
  20. package/dist/cli/ui/DnaTable.d.ts.map +1 -1
  21. package/dist/cli/ui/DnaTable.js +23 -16
  22. package/dist/cli/ui/RefactorWizard.d.ts +3 -3
  23. package/dist/cli/ui/RefactorWizard.d.ts.map +1 -1
  24. package/dist/cli/ui/RefactorWizard.js +108 -82
  25. package/dist/config/ConfigLoader.d.ts +2 -2
  26. package/dist/config/ConfigLoader.d.ts.map +1 -1
  27. package/dist/config/ConfigLoader.js +15 -15
  28. package/dist/config/DryRunGuard.d.ts +1 -1
  29. package/dist/config/DryRunGuard.js +7 -7
  30. package/dist/config/SelaConfig.d.ts +12 -16
  31. package/dist/config/SelaConfig.d.ts.map +1 -1
  32. package/dist/config/SelaConfig.js +32 -26
  33. package/dist/engine/HealingRegistry.d.ts +1 -1
  34. package/dist/engine/HealingRegistry.js +3 -3
  35. package/dist/engine/SelaEngine.d.ts +1 -1
  36. package/dist/engine/SelaEngine.d.ts.map +1 -1
  37. package/dist/engine/SelaEngine.js +63 -49
  38. package/dist/errors/SelaError.d.ts +0 -1
  39. package/dist/errors/SelaError.d.ts.map +1 -1
  40. package/dist/errors/SelaError.js +6 -7
  41. package/dist/fixtures/expectProxy.d.ts +1 -1
  42. package/dist/fixtures/expectProxy.js +11 -11
  43. package/dist/fixtures/index.js +14 -14
  44. package/dist/fixtures/proxyTag.d.ts +1 -1
  45. package/dist/fixtures/proxyTag.js +3 -3
  46. package/dist/index.d.ts +8 -8
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +4 -4
  49. package/dist/reporter/SelaReporter.d.ts +45 -12
  50. package/dist/reporter/SelaReporter.d.ts.map +1 -1
  51. package/dist/reporter/SelaReporter.js +139 -39
  52. package/dist/services/ASTSourceUpdater.d.ts +3 -3
  53. package/dist/services/ASTSourceUpdater.d.ts.map +1 -1
  54. package/dist/services/ASTSourceUpdater.js +92 -68
  55. package/dist/services/ArgumentTypeAnalyzer.js +7 -7
  56. package/dist/services/BlastRadiusAnalyzer.d.ts.map +1 -1
  57. package/dist/services/BlastRadiusAnalyzer.js +5 -2
  58. package/dist/services/ChainValidator.js +22 -22
  59. package/dist/services/CrossFileHealer.js +7 -7
  60. package/dist/services/DefinitionTracer.d.ts +1 -1
  61. package/dist/services/DefinitionTracer.d.ts.map +1 -1
  62. package/dist/services/DefinitionTracer.js +28 -13
  63. package/dist/services/DnaEditorService.d.ts +2 -2
  64. package/dist/services/DnaEditorService.d.ts.map +1 -1
  65. package/dist/services/DnaEditorService.js +81 -62
  66. package/dist/services/DnaIndexService.d.ts +1 -1
  67. package/dist/services/DnaIndexService.d.ts.map +1 -1
  68. package/dist/services/DnaIndexService.js +14 -14
  69. package/dist/services/HealReportService.d.ts +6 -6
  70. package/dist/services/HealReportService.d.ts.map +1 -1
  71. package/dist/services/HealReportService.js +33 -29
  72. package/dist/services/HealingAdvisory.js +1 -1
  73. package/dist/services/HealingCacheService.d.ts +8 -8
  74. package/dist/services/HealingCacheService.d.ts.map +1 -1
  75. package/dist/services/HealingCacheService.js +24 -24
  76. package/dist/services/HealthReportService.d.ts +1 -1
  77. package/dist/services/HealthReportService.d.ts.map +1 -1
  78. package/dist/services/HealthReportService.js +25 -25
  79. package/dist/services/InitializerUpdater.js +2 -2
  80. package/dist/services/IntentAuditor.d.ts.map +1 -1
  81. package/dist/services/IntentAuditor.js +32 -21
  82. package/dist/services/InteractiveReview.d.ts +8 -17
  83. package/dist/services/InteractiveReview.d.ts.map +1 -1
  84. package/dist/services/InteractiveReview.js +31 -124
  85. package/dist/services/LLMService.d.ts +1 -1
  86. package/dist/services/LLMService.js +16 -16
  87. package/dist/services/PRAutomationService.d.ts +2 -2
  88. package/dist/services/PRAutomationService.d.ts.map +1 -1
  89. package/dist/services/PRAutomationService.js +43 -39
  90. package/dist/services/PendingPromptLedger.d.ts +2 -2
  91. package/dist/services/PendingPromptLedger.js +6 -6
  92. package/dist/services/ReportGenerator.d.ts +2 -2
  93. package/dist/services/ReportGenerator.d.ts.map +1 -1
  94. package/dist/services/ReportGenerator.js +5 -5
  95. package/dist/services/SafetyGuard.d.ts +3 -6
  96. package/dist/services/SafetyGuard.d.ts.map +1 -1
  97. package/dist/services/SafetyGuard.js +29 -106
  98. package/dist/services/SnapshotService.js +5 -5
  99. package/dist/services/SourceLinkService.d.ts +2 -2
  100. package/dist/services/SourceLinkService.d.ts.map +1 -1
  101. package/dist/services/SourceLinkService.js +31 -22
  102. package/dist/services/SourceUpdater.d.ts +1 -1
  103. package/dist/services/SourceUpdater.d.ts.map +1 -1
  104. package/dist/services/SourceUpdater.js +27 -26
  105. package/dist/services/TemplateDiffService.d.ts.map +1 -1
  106. package/dist/services/TemplateDiffService.js +18 -15
  107. package/dist/services/WorkspaceSnapshotService.d.ts +6 -6
  108. package/dist/services/WorkspaceSnapshotService.d.ts.map +1 -1
  109. package/dist/services/WorkspaceSnapshotService.js +10 -12
  110. package/dist/types/index.d.ts +1 -1
  111. package/dist/utils/IsolatedDiff.d.ts +2 -2
  112. package/dist/utils/IsolatedDiff.d.ts.map +1 -1
  113. package/dist/utils/IsolatedDiff.js +13 -10
  114. package/package.json +2 -2
@@ -4,18 +4,18 @@
4
4
  // Single source of truth for the "dry run" runtime gate.
5
5
  //
6
6
  // The flag is sourced from the `SELA_DRY_RUN` environment variable using the
7
- // strict parser in SelaConfig.parseEnvBoolean (no silent coercion bad
7
+ // strict parser in SelaConfig.parseEnvBoolean (no silent coercion - bad
8
8
  // values throw). The variable is re-read on every call so tests and
9
9
  // long-running processes can toggle it without restarting the engine.
10
10
  //
11
11
  // Two writer paths route through this guard:
12
12
  //
13
- // 1. SourceUpdater._coreUpdate every `fs.writeFileSync` to a spec/source
13
+ // 1. SourceUpdater._coreUpdate - every `fs.writeFileSync` to a spec/source
14
14
  // file. When dry-run is active the write is skipped and a console
15
15
  // breadcrumb is emitted with the absolute path that *would have* been
16
16
  // written.
17
17
  //
18
- // 2. ASTSourceUpdater._persistChanges wraps ts-morph `SourceFile.saveSync`.
18
+ // 2. ASTSourceUpdater._persistChanges - wraps ts-morph `SourceFile.saveSync`.
19
19
  // When dry-run is active the in-memory AST mutation stays, but the
20
20
  // `saveSync` call (which forwards to fs.writeFileSync inside ts-morph)
21
21
  // is skipped so the spec on disk is identical pre/post heal.
@@ -63,17 +63,17 @@ exports.DryRunGuard = {
63
63
  /**
64
64
  * Returns true when `SELA_DRY_RUN` is set to a truthy value in the current
65
65
  * process environment. Throws via `parseEnvBoolean` when the value is not
66
- * one of the accepted tokens fail-fast keeps misconfigured CI loud.
66
+ * one of the accepted tokens - fail-fast keeps misconfigured CI loud.
67
67
  */
68
68
  active(env = process.env) {
69
- return (0, SelaConfig_1.parseEnvBoolean)('SELA_DRY_RUN', env.SELA_DRY_RUN);
69
+ return (0, SelaConfig_1.parseEnvBoolean)("SELA_DRY_RUN", env.SELA_DRY_RUN);
70
70
  },
71
71
  /**
72
72
  * Centralised log line for skipped writes so the diff between a dry run
73
73
  * and a real run is auditable in test output and CI logs.
74
74
  */
75
75
  logSkippedWrite(label, target) {
76
- const display = target ? path.basename(target) : '<no-path>';
77
- console.log(`[Sela] 🌵 Dry Run skip ${label} → ${display}`);
76
+ const display = target ? path.basename(target) : "<no-path>";
77
+ console.log(`[Sela] 🌵 Dry Run - skip ${label} → ${display}`);
78
78
  },
79
79
  };
@@ -1,11 +1,11 @@
1
- export type PRStrategy = 'directCommit' | 'pr' | 'draftPR' | 'readOnly';
2
- export type BugAction = 'failCI' | 'createIssue' | 'labelOnly';
1
+ export type PRStrategy = "directCommit" | "pr" | "draftPR" | "readOnly";
2
+ export type BugAction = "failCI" | "createIssue" | "labelOnly";
3
3
  export interface SelaPRAutomationConfig {
4
4
  /** Master switch. Default: false (fully backward-compatible). */
5
5
  enabled?: boolean;
6
6
  /** Git-flow strategy. Default: 'readOnly' (safest). */
7
7
  strategy?: PRStrategy;
8
- /** Branches on which directCommit is FORBIDDEN auto-downgraded. */
8
+ /** Branches on which directCommit is FORBIDDEN - auto-downgraded. */
9
9
  protectedBranches?: string[];
10
10
  /** Trust-aware downgrade thresholds (0–100). 0 = never downgrade by that metric. */
11
11
  reviewThresholds?: {
@@ -14,7 +14,7 @@ export interface SelaPRAutomationConfig {
14
14
  /** Min auditor adjusted confidence required for directCommit. Below → downgrade. */
15
15
  minAuditorScoreForDirectCommit?: number;
16
16
  /** Strategy to downgrade TO. Default: 'draftPR'. */
17
- downgradeTo?: Exclude<PRStrategy, 'directCommit'>;
17
+ downgradeTo?: Exclude<PRStrategy, "directCommit">;
18
18
  };
19
19
  /** Behavior when SafetyGuard blocks a heal (PROTECTED events). Default: 'failCI'. */
20
20
  onBugDetected?: BugAction;
@@ -31,15 +31,13 @@ export interface SelaPRAutomationConfig {
31
31
  }
32
32
  export interface SelaConfig {
33
33
  /** Shorthand preset that expands to concrete threshold values. */
34
- healingPolicy?: 'conservative' | 'balanced' | 'aggressive';
34
+ healingPolicy?: "conservative" | "balanced" | "aggressive";
35
35
  /** Fine-grained threshold overrides. Explicit values always win over preset expansion. */
36
36
  thresholds?: {
37
37
  /** Minimum AI confidence to attempt a heal. Default: 85. Maps to CONFIDENCE_HARD_STOP. */
38
38
  minHealerConfidence?: number;
39
39
  /** How strictly the Intent Auditor treats SUSPICIOUS verdicts. Default: 'balanced'. */
40
- auditorStrictness?: 'strict' | 'balanced' | 'loose';
41
- /** Similarity floor for UNKNOWN-role assertion text changes. Default: 0.70. */
42
- assertionSimilarityFloor?: number;
40
+ auditorStrictness?: "strict" | "balanced" | "loose";
43
41
  };
44
42
  agenticDiscovery?: {
45
43
  enabled?: boolean;
@@ -47,7 +45,7 @@ export interface SelaConfig {
47
45
  forbiddenSelectors?: string[];
48
46
  };
49
47
  /** How healed selectors are persisted. Default: 'inPlace'. */
50
- updateStrategy?: 'inPlace' | 'commentOnly' | 'branch';
48
+ updateStrategy?: "inPlace" | "commentOnly" | "branch";
51
49
  /**
52
50
  * @deprecated Use `prAutomation.strategy = 'directCommit'` instead.
53
51
  * When `prAutomation.enabled` is true this flag is forced to false and
@@ -71,14 +69,12 @@ export interface ResolvedThresholds {
71
69
  confidenceHardStop: number;
72
70
  /** Confidence below which a heal is tagged REQUIRES_REVIEW instead of SAFE. */
73
71
  confidenceReviewThreshold: number;
74
- /** Similarity floor for UNKNOWN→UNKNOWN assertion text changes. */
75
- assertionSimilarityFloor: number;
76
72
  /** Minimum auditor confidence to treat a verdict as CONSISTENT. */
77
73
  auditorConfidenceMin: number;
78
74
  /** When true, SUSPICIOUS in assertion mode yields REQUIRES_REVIEW instead of BLOCKED. */
79
75
  allowSuspicious: boolean;
80
- /** The resolved strictness name used for policy-aware log messages. */
81
- auditorStrictness: 'strict' | 'balanced' | 'loose';
76
+ /** The resolved strictness name - used for policy-aware log messages. */
77
+ auditorStrictness: "strict" | "balanced" | "loose";
82
78
  }
83
79
  export interface ResolvedPRAutomation {
84
80
  enabled: boolean;
@@ -87,7 +83,7 @@ export interface ResolvedPRAutomation {
87
83
  reviewThresholds: {
88
84
  minConfidenceForDirectCommit: number;
89
85
  minAuditorScoreForDirectCommit: number;
90
- downgradeTo: Exclude<PRStrategy, 'directCommit'>;
86
+ downgradeTo: Exclude<PRStrategy, "directCommit">;
91
87
  };
92
88
  onBugDetected: BugAction;
93
89
  branchNameTemplate: string;
@@ -98,7 +94,7 @@ export interface ResolvedPRAutomation {
98
94
  }
99
95
  export interface ResolvedConfig {
100
96
  thresholds: ResolvedThresholds;
101
- updateStrategy: 'inPlace' | 'commentOnly' | 'branch';
97
+ updateStrategy: "inPlace" | "commentOnly" | "branch";
102
98
  autoCommit: boolean;
103
99
  dnaStoragePath: string;
104
100
  prAutomation: ResolvedPRAutomation;
@@ -116,7 +112,7 @@ export interface ResolvedConfig {
116
112
  */
117
113
  dryRun: boolean;
118
114
  /**
119
- * When true, the healing cache layer is bypassed every heal request
115
+ * When true, the healing cache layer is bypassed - every heal request
120
116
  * goes straight to the LLM. Sourced from `SELA_NO_CACHE` env var.
121
117
  */
122
118
  noCache: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"SelaConfig.d.ts","sourceRoot":"","sources":["../../src/config/SelaConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelaConfig.d.ts","sourceRoot":"","sources":["../../src/config/SelaConfig.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,18 @@ exports.resolveThresholds = resolveThresholds;
6
6
  exports.parseEnvBoolean = parseEnvBoolean;
7
7
  exports.resolveConfig = resolveConfig;
8
8
  const PRESET_MAP = {
9
- conservative: { minHealerConfidence: 92, auditorStrictness: 'strict', assertionSimilarityFloor: 0.85 },
10
- balanced: { minHealerConfidence: 85, auditorStrictness: 'balanced', assertionSimilarityFloor: 0.70 },
11
- aggressive: { minHealerConfidence: 75, auditorStrictness: 'loose', assertionSimilarityFloor: 0.55 },
9
+ conservative: {
10
+ minHealerConfidence: 92,
11
+ auditorStrictness: "strict",
12
+ },
13
+ balanced: {
14
+ minHealerConfidence: 85,
15
+ auditorStrictness: "balanced",
16
+ },
17
+ aggressive: {
18
+ minHealerConfidence: 75,
19
+ auditorStrictness: "loose",
20
+ },
12
21
  };
13
22
  const STRICTNESS_CONFIDENCE = {
14
23
  strict: 90,
@@ -26,15 +35,13 @@ function resolveThresholds(config) {
26
35
  // Explicit thresholds always win over preset expansion
27
36
  const merged = { ...fromPreset, ...config.thresholds };
28
37
  const minHealerConfidence = merged.minHealerConfidence ?? 85;
29
- const auditorStrictness = merged.auditorStrictness ?? 'balanced';
30
- const assertionSimilarityFloor = merged.assertionSimilarityFloor ?? 0.7;
38
+ const auditorStrictness = merged.auditorStrictness ?? "balanced";
31
39
  return {
32
40
  confidenceHardStop: minHealerConfidence,
33
41
  confidenceReviewThreshold: 95,
34
- assertionSimilarityFloor,
35
42
  auditorConfidenceMin: STRICTNESS_CONFIDENCE[auditorStrictness],
36
- // allowSuspicious is derived never independently settable to avoid footguns
37
- allowSuspicious: auditorStrictness === 'loose',
43
+ // allowSuspicious is derived - never independently settable to avoid footguns
44
+ allowSuspicious: auditorStrictness === "loose",
38
45
  auditorStrictness,
39
46
  };
40
47
  }
@@ -42,37 +49,36 @@ function resolvePRAutomation(config) {
42
49
  const pr = config.prAutomation ?? {};
43
50
  // Legacy bridge: autoCommit:true with no explicit prAutomation block
44
51
  // → enable prAutomation in directCommit mode. Explicit prAutomation always wins.
45
- const legacyEnabled = config.autoCommit === true &&
46
- config.prAutomation === undefined;
52
+ const legacyEnabled = config.autoCommit === true && config.prAutomation === undefined;
47
53
  const enabled = pr.enabled ?? legacyEnabled;
48
- const strategy = pr.strategy ?? (legacyEnabled ? 'directCommit' : 'readOnly');
54
+ const strategy = pr.strategy ?? (legacyEnabled ? "directCommit" : "readOnly");
49
55
  return {
50
56
  enabled,
51
57
  strategy,
52
- protectedBranches: pr.protectedBranches ?? ['main', 'master', 'release'],
58
+ protectedBranches: pr.protectedBranches ?? ["main", "master", "release"],
53
59
  reviewThresholds: {
54
60
  minConfidenceForDirectCommit: pr.reviewThresholds?.minConfidenceForDirectCommit ?? 0,
55
61
  minAuditorScoreForDirectCommit: pr.reviewThresholds?.minAuditorScoreForDirectCommit ?? 0,
56
- downgradeTo: pr.reviewThresholds?.downgradeTo ?? 'draftPR',
62
+ downgradeTo: pr.reviewThresholds?.downgradeTo ?? "draftPR",
57
63
  },
58
- onBugDetected: pr.onBugDetected ?? 'failCI',
59
- branchNameTemplate: pr.branchNameTemplate ?? 'sela/heal-${id}',
60
- titleTemplate: pr.titleTemplate ?? 'fix(sela): heal selector in ${fileName}',
64
+ onBugDetected: pr.onBugDetected ?? "failCI",
65
+ branchNameTemplate: pr.branchNameTemplate ?? "sela/heal-${id}",
66
+ titleTemplate: pr.titleTemplate ?? "fix(sela): heal selector in ${fileName}",
61
67
  bodyTemplate: pr.bodyTemplate ?? null,
62
68
  labels: pr.labels ?? [],
63
- reportArtifactPath: pr.reportArtifactPath ?? 'sela-report.html',
69
+ reportArtifactPath: pr.reportArtifactPath ?? "sela-report.html",
64
70
  };
65
71
  }
66
72
  // ═══════════════════════════════════════════════════════════════════
67
- // ENV FLAG PARSING strict, fail-fast
73
+ // ENV FLAG PARSING - strict, fail-fast
68
74
  //
69
75
  // Accepted truthy values (case-insensitive): "1", "true", "yes", "on".
70
76
  // Accepted falsy values (case-insensitive): "0", "false", "no", "off", "".
71
77
  // Anything else → throws so misconfigured CI environments fail loudly
72
78
  // instead of silently running the wrong mode.
73
79
  // ═══════════════════════════════════════════════════════════════════
74
- const ENV_TRUTHY = new Set(['1', 'true', 'yes', 'on']);
75
- const ENV_FALSY = new Set(['0', 'false', 'no', 'off', '']);
80
+ const ENV_TRUTHY = new Set(["1", "true", "yes", "on"]);
81
+ const ENV_FALSY = new Set(["0", "false", "no", "off", ""]);
76
82
  function parseEnvBoolean(varName, rawValue) {
77
83
  if (rawValue === undefined)
78
84
  return false;
@@ -89,18 +95,18 @@ function resolveConfig(config, env = process.env) {
89
95
  // When prAutomation owns the git pipeline, suppress per-heal git side-effects
90
96
  // in SourceUpdater (autoCommit + updateStrategy:'branch') to avoid double-commits.
91
97
  const suppressLegacyGit = prAutomation.enabled;
92
- const requestedUpdateStrategy = config.updateStrategy ?? 'inPlace';
93
- const updateStrategy = suppressLegacyGit && requestedUpdateStrategy === 'branch'
94
- ? 'inPlace'
98
+ const requestedUpdateStrategy = config.updateStrategy ?? "inPlace";
99
+ const updateStrategy = suppressLegacyGit && requestedUpdateStrategy === "branch"
100
+ ? "inPlace"
95
101
  : requestedUpdateStrategy;
96
102
  const autoCommit = suppressLegacyGit ? false : (config.autoCommit ?? false);
97
- const dryRun = parseEnvBoolean('SELA_DRY_RUN', env.SELA_DRY_RUN);
98
- const noCache = parseEnvBoolean('SELA_NO_CACHE', env.SELA_NO_CACHE);
103
+ const dryRun = parseEnvBoolean("SELA_DRY_RUN", env.SELA_DRY_RUN);
104
+ const noCache = parseEnvBoolean("SELA_NO_CACHE", env.SELA_NO_CACHE);
99
105
  return {
100
106
  thresholds: resolveThresholds(config),
101
107
  updateStrategy,
102
108
  autoCommit,
103
- dnaStoragePath: config.dnaStoragePath ?? 'fixwright-snapshots',
109
+ dnaStoragePath: config.dnaStoragePath ?? "fixwright-snapshots",
104
110
  prAutomation,
105
111
  agenticDiscovery: {
106
112
  enabled: config.agenticDiscovery?.enabled ?? false,
@@ -29,7 +29,7 @@ export declare class HealingRegistry {
29
29
  /**
30
30
  * Resolve a selector within a specific call-site context.
31
31
  * Falls back to a context-free lookup ONLY when the fingerprint
32
- * has no entry prevents poisoning while still enabling same-file reuse.
32
+ * has no entry - prevents poisoning while still enabling same-file reuse.
33
33
  */
34
34
  resolveSelector(selector: string, ctx?: SelectorContext): string;
35
35
  private walkChain;
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // src/engine/HealingRegistry.ts full replacement
2
+ // src/engine/HealingRegistry.ts - full replacement
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.HealingRegistry = void 0;
5
5
  const crypto_1 = require("crypto");
@@ -60,7 +60,7 @@ class HealingRegistry {
60
60
  /**
61
61
  * Resolve a selector within a specific call-site context.
62
62
  * Falls back to a context-free lookup ONLY when the fingerprint
63
- * has no entry prevents poisoning while still enabling same-file reuse.
63
+ * has no entry - prevents poisoning while still enabling same-file reuse.
64
64
  */
65
65
  resolveSelector(selector, ctx) {
66
66
  if (ctx) {
@@ -72,7 +72,7 @@ class HealingRegistry {
72
72
  return resolved;
73
73
  }
74
74
  }
75
- return selector; // No global fallback intentional
75
+ return selector; // No global fallback - intentional
76
76
  }
77
77
  walkChain(selector, store) {
78
78
  let current = selector;
@@ -36,7 +36,7 @@ export declare class SelaEngine {
36
36
  * `gitUnifiedDiff` payload yet.
37
37
  *
38
38
  * Carefully skips the diff preamble (--- a/file, +++ b/file, "diff ",
39
- * "index ", rename headers) those lines would otherwise be mistaken for
39
+ * "index ", rename headers) - those lines would otherwise be mistaken for
40
40
  * a -/+ change pair and produce nonsense like the original "line replaced
41
41
  * by itself" output. Real change lines only count once the parser has seen
42
42
  * a "@@" hunk header.
@@ -1 +1 @@
1
- {"version":3,"file":"SelaEngine.d.ts","sourceRoot":"","sources":["../../src/engine/SelaEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAQxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAe,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AA+DhE,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,mBAAmB,CAAmB;IAC9C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,eAAe,CAAkC;;IAqBnD,YAAY,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiDnB,IAAI,CACR,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EACpB,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,QAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAykBlB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,aAAa;IAarB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,2BAA2B;IA4BnC,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,oBAAoB;IAuC5B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;YAgItB,aAAa;IAsB3B,OAAO,CAAC,0BAA0B;IAiClC,OAAO,CAAC,WAAW;IA6Bb,wBAAwB,CAC5B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CAqBnB;AAED,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"SelaEngine.d.ts","sourceRoot":"","sources":["../../src/engine/SelaEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAaxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,EAAe,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAmEhE,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,mBAAmB,CAAmB;IAC9C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,eAAe,CAAkC;;IAqBnD,YAAY,CAChB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiDnB,IAAI,CACR,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EACpB,mBAAmB,EAAE,MAAM,EAC3B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,QAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC;IAilBlB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,aAAa;IAerB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,2BAA2B;IA4BnC,OAAO,CAAC,yBAAyB;IAmCjC,OAAO,CAAC,kBAAkB;IA8D1B,OAAO,CAAC,oBAAoB;IAyD5B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;YAqItB,aAAa;IAsB3B,OAAO,CAAC,0BAA0B;IAiClC,OAAO,CAAC,WAAW;IA6Bb,wBAAwB,CAC5B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM;CAqBnB;AAED,OAAO,EAAE,CAAC"}