swipium 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/README.md +21 -6
  2. package/THREAT_MODEL.md +59 -0
  3. package/dist/appMap/codeIndex.js +37 -5
  4. package/dist/appMap/codeIndex.js.map +1 -1
  5. package/dist/appMap/diff.js +60 -0
  6. package/dist/appMap/diff.js.map +1 -0
  7. package/dist/appMap/query.js +22 -4
  8. package/dist/appMap/query.js.map +1 -1
  9. package/dist/automation/capabilities.js +167 -0
  10. package/dist/automation/capabilities.js.map +1 -0
  11. package/dist/automation/gestures.js +94 -0
  12. package/dist/automation/gestures.js.map +1 -0
  13. package/dist/automation/maestroIr.js +282 -0
  14. package/dist/automation/maestroIr.js.map +1 -0
  15. package/dist/automation/plan.js +268 -0
  16. package/dist/automation/plan.js.map +1 -0
  17. package/dist/automation/report.js +83 -0
  18. package/dist/automation/report.js.map +1 -0
  19. package/dist/automation/selectors.js +201 -0
  20. package/dist/automation/selectors.js.map +1 -0
  21. package/dist/automation/types.js +13 -0
  22. package/dist/automation/types.js.map +1 -0
  23. package/dist/automation/waits.js +91 -0
  24. package/dist/automation/waits.js.map +1 -0
  25. package/dist/automation/webview.js +81 -0
  26. package/dist/automation/webview.js.map +1 -0
  27. package/dist/drivers/WdaDriver.js +18 -5
  28. package/dist/drivers/WdaDriver.js.map +1 -1
  29. package/dist/explore/candidates.js +17 -0
  30. package/dist/explore/candidates.js.map +1 -1
  31. package/dist/explore/runner.js +29 -2
  32. package/dist/explore/runner.js.map +1 -1
  33. package/dist/flows/repair.js +363 -0
  34. package/dist/flows/repair.js.map +1 -0
  35. package/dist/interop/maestro.js +151 -0
  36. package/dist/interop/maestro.js.map +1 -0
  37. package/dist/lib/wda.js +17 -0
  38. package/dist/lib/wda.js.map +1 -1
  39. package/dist/mobileAudit/checks.js +251 -0
  40. package/dist/mobileAudit/checks.js.map +1 -0
  41. package/dist/mobileAudit/evidence.js +49 -0
  42. package/dist/mobileAudit/evidence.js.map +1 -0
  43. package/dist/mobileAudit/profiles.js +73 -0
  44. package/dist/mobileAudit/profiles.js.map +1 -0
  45. package/dist/mobileAudit/results.js +41 -0
  46. package/dist/mobileAudit/results.js.map +1 -0
  47. package/dist/mobileAudit/runner.js +229 -0
  48. package/dist/mobileAudit/runner.js.map +1 -0
  49. package/dist/oracle/failures.js +1 -0
  50. package/dist/oracle/failures.js.map +1 -1
  51. package/dist/oracle/locator.js +177 -0
  52. package/dist/oracle/locator.js.map +1 -0
  53. package/dist/orchestration/envelope.js.map +1 -1
  54. package/dist/prompts/index.js +10 -0
  55. package/dist/prompts/index.js.map +1 -1
  56. package/dist/report/export.js +3 -1
  57. package/dist/report/export.js.map +1 -1
  58. package/dist/server.js +49 -2
  59. package/dist/server.js.map +1 -1
  60. package/dist/services/build.js +15 -2
  61. package/dist/services/build.js.map +1 -1
  62. package/dist/services/prepareIos.js +34 -4
  63. package/dist/services/prepareIos.js.map +1 -1
  64. package/dist/services/report.js +26 -9
  65. package/dist/services/report.js.map +1 -1
  66. package/dist/session/store.js.map +1 -1
  67. package/dist/suite/pom.js +24 -9
  68. package/dist/suite/pom.js.map +1 -1
  69. package/dist/testSuite/exporter.js +70 -0
  70. package/dist/testSuite/exporter.js.map +1 -0
  71. package/dist/testSuite/lint.js +53 -0
  72. package/dist/testSuite/lint.js.map +1 -0
  73. package/dist/tools/act.js +23 -2
  74. package/dist/tools/act.js.map +1 -1
  75. package/dist/tools/appControl.js +176 -0
  76. package/dist/tools/appControl.js.map +1 -0
  77. package/dist/tools/capabilities.js +75 -4
  78. package/dist/tools/capabilities.js.map +1 -1
  79. package/dist/tools/device.js +151 -0
  80. package/dist/tools/device.js.map +1 -0
  81. package/dist/tools/flow.js +67 -1
  82. package/dist/tools/flow.js.map +1 -1
  83. package/dist/tools/flowRepair.js +66 -0
  84. package/dist/tools/flowRepair.js.map +1 -0
  85. package/dist/tools/history.js +56 -0
  86. package/dist/tools/history.js.map +1 -0
  87. package/dist/tools/idling.js +104 -0
  88. package/dist/tools/idling.js.map +1 -0
  89. package/dist/tools/inputCapabilities.js +30 -0
  90. package/dist/tools/inputCapabilities.js.map +1 -0
  91. package/dist/tools/issues.js +218 -0
  92. package/dist/tools/issues.js.map +1 -0
  93. package/dist/tools/jobs.js +12 -1
  94. package/dist/tools/jobs.js.map +1 -1
  95. package/dist/tools/locator.js +57 -0
  96. package/dist/tools/locator.js.map +1 -0
  97. package/dist/tools/maestro.js +78 -0
  98. package/dist/tools/maestro.js.map +1 -0
  99. package/dist/tools/metro.js +260 -0
  100. package/dist/tools/metro.js.map +1 -0
  101. package/dist/tools/mobileAudit.js +115 -0
  102. package/dist/tools/mobileAudit.js.map +1 -0
  103. package/dist/tools/network.js +97 -5
  104. package/dist/tools/network.js.map +1 -1
  105. package/dist/tools/permissions.js +149 -0
  106. package/dist/tools/permissions.js.map +1 -0
  107. package/dist/tools/screenInfo.js +70 -0
  108. package/dist/tools/screenInfo.js.map +1 -0
  109. package/dist/tools/screenRecord.js +215 -6
  110. package/dist/tools/screenRecord.js.map +1 -1
  111. package/dist/tools/seed.js +101 -0
  112. package/dist/tools/seed.js.map +1 -0
  113. package/dist/tools/state.js +83 -0
  114. package/dist/tools/state.js.map +1 -1
  115. package/dist/tools/suite.js +49 -1
  116. package/dist/tools/suite.js.map +1 -1
  117. package/dist/tools/testSuite.js +233 -0
  118. package/dist/tools/testSuite.js.map +1 -0
  119. package/dist/tools/testThis.js +11 -3
  120. package/dist/tools/testThis.js.map +1 -1
  121. package/dist/tools/visual.js +139 -0
  122. package/dist/tools/visual.js.map +1 -0
  123. package/dist/tools/visualText.js +61 -0
  124. package/dist/tools/visualText.js.map +1 -0
  125. package/dist/tools/wait.js +58 -0
  126. package/dist/tools/wait.js.map +1 -0
  127. package/dist/version.js +54 -3
  128. package/dist/version.js.map +1 -1
  129. package/docs/README.md +4 -4
  130. package/docs/mcp-server.md +3 -3
  131. package/docs/tools.md +111 -2
  132. package/package.json +3 -2
@@ -0,0 +1,229 @@
1
+ // SWIPIUM-REQ-08 — executable mobile-audit runner. Orchestrates the existing driver capabilities
2
+ // (health, snapshot, network, first-run, guided exploration) into a profile-based audit that
3
+ // produces honest, evidence-backed check results and records issue-ledger entries. It NEVER claims
4
+ // a check passed without observed evidence, never purchases / bypasses OTP / deletes real accounts,
5
+ // and always restores network it changed.
6
+ import { recordObservation } from '../issues/index.js';
7
+ import { queryIssues } from '../issues/index.js';
8
+ import { restoreNetwork } from '../tools/network.js';
9
+ import { runFirstRun } from '../firstRun/firstRunRunner.js';
10
+ import { checksForProfile } from './profiles.js';
11
+ import * as C from './checks.js';
12
+ import { snapshotText, foreground } from './evidence.js';
13
+ import { auditReleaseImpact } from './results.js';
14
+ function platformOf(driver) {
15
+ return driver.kind === 'wda' || driver.kind === 'simulator' ? 'ios' : 'android';
16
+ }
17
+ function environmentOf(session, platform) {
18
+ if (session.headless !== undefined)
19
+ return platform === 'ios' ? 'simulator' : 'emulator';
20
+ return process.env.CI ? 'ci' : 'unknown';
21
+ }
22
+ export async function runMobileAudit(sessions, session, driver, opts) {
23
+ const platform = platformOf(driver);
24
+ const environment = environmentOf(session, platform);
25
+ const ev = { sessions, session, driver, appId: session.appId };
26
+ const issueIds = [];
27
+ const recurrenceWarnings = [];
28
+ let state = 'completed';
29
+ // Record a fail/blocked check as an issue (the check IS the classifier → forceCategory). Returns
30
+ // the issue id, or undefined when the check has no category (pure environment/setup gap).
31
+ const recordIssue = async (title, raw) => {
32
+ if (raw.status !== 'fail' && raw.status !== 'blocked')
33
+ return undefined;
34
+ if (!raw.category)
35
+ return undefined;
36
+ const fg = raw.screenId ?? (await foreground(ev));
37
+ const res = recordObservation(session.root, {
38
+ title: `audit: ${title}`,
39
+ summary: raw.reason ?? title,
40
+ screenPurpose: fg,
41
+ workflow: raw.workflow ?? title,
42
+ steps: raw.nextStep ? [raw.nextStep] : undefined,
43
+ }, opts.now, { environment, forceCategory: raw.category, severityHint: raw.severity }, {
44
+ appId: session.appId,
45
+ platform,
46
+ environment,
47
+ sourceRevision: opts.sourceRevision,
48
+ run: { sessionId: session.id, reportUri: opts.reportUri },
49
+ links: { evidenceRefs: raw.evidenceUris.map((uri) => ({ kind: 'evidence', uri })), appMapRefs: [{ screenId: fg }] },
50
+ });
51
+ if (res.recurrenceMessage)
52
+ recurrenceWarnings.push(res.recurrenceMessage);
53
+ return res.issueId;
54
+ };
55
+ const checks = [];
56
+ const finalize = async (id, title, raw) => {
57
+ const issueId = await recordIssue(title, raw);
58
+ if (issueId)
59
+ issueIds.push(issueId);
60
+ checks.push({ id, title, profile: opts.profile, status: raw.status, category: raw.category, severity: raw.severity, issueId, reason: raw.reason, evidenceUris: raw.evidenceUris, workflow: raw.workflow, screenId: raw.screenId, nextStep: raw.nextStep });
61
+ };
62
+ const profilesToRun = opts.profile === 'release_gate' ? ['smoke', 'account_cycle', 'store_compliance', 'resilience'] : [opts.profile];
63
+ for (const prof of profilesToRun) {
64
+ if (prof === 'smoke') {
65
+ await finalize('launch', 'App launch + main screen', await C.checkLaunch(ev));
66
+ await finalize('health_scan', 'Crash / RedBox / log scan', await C.checkHealthScan(ev));
67
+ await finalize('navigation', 'Basic navigation', await C.checkNavigation(ev));
68
+ }
69
+ else if (prof === 'store_compliance') {
70
+ const text = await snapshotText(ev);
71
+ await finalize('privacy_link', 'Privacy Policy link', await C.checkPrivacyLink(ev, text));
72
+ await finalize('terms_link', 'Terms link', await C.checkTermsLink(ev, text));
73
+ await finalize('account_deletion', 'Account deletion path', await C.checkAccountDeletion(ev, text));
74
+ await finalize('subscription_management', 'Subscription management / restore', await C.checkSubscriptionManagement(ev, text));
75
+ await finalize('paywall', 'Paywall classification', await C.checkPaywall(ev, text));
76
+ await finalize('external_links', 'External links', C.checkExternalLinks());
77
+ }
78
+ else if (prof === 'resilience') {
79
+ try {
80
+ await finalize('offline_entry', 'Offline entry', await C.checkOfflineEntry(ev));
81
+ await finalize('network_restoration', 'Network restoration', await C.checkNetworkRestoration(ev));
82
+ await finalize('process_relaunch', 'Process kill / relaunch', await C.checkProcessRelaunch(ev));
83
+ await finalize('rotation', 'Rotation', C.checkRotation());
84
+ }
85
+ finally {
86
+ // GUARANTEED network restore — even if a resilience check threw (REQ-08 safety).
87
+ try {
88
+ await driver.setAirplane(false);
89
+ await restoreNetwork(sessions, session, driver);
90
+ }
91
+ catch {
92
+ /* best-effort */
93
+ }
94
+ }
95
+ }
96
+ else if (prof === 'account_cycle') {
97
+ const acState = await runAccountCycle(sessions, session, driver, opts, finalize);
98
+ if (acState !== 'completed' && state === 'completed')
99
+ state = acState;
100
+ }
101
+ }
102
+ // Recurrence: a previously-fixed blocker/high issue reopened this run is a release blocker.
103
+ const reopened = queryIssues(session.root, opts.now, { includeSuppressed: false }).recurrenceCandidates;
104
+ const blockingRecurrence = reopened.some((r) => (r.severity === 'blocker' || r.severity === 'high') && (r.category === 'app_bug' || r.category === 'blocker_app_bug'));
105
+ for (const r of reopened)
106
+ if (r.lastRecurrenceMessage && !recurrenceWarnings.includes(r.lastRecurrenceMessage))
107
+ recurrenceWarnings.push(r.lastRecurrenceMessage);
108
+ // release_gate adds locator readiness + an explicit issue-ledger recurrence check. The recurrence
109
+ // check POINTS AT the existing reopened issue (no duplicate issue is created); plan/execute agree.
110
+ if (opts.profile === 'release_gate') {
111
+ await finalize('locator_readiness', 'Accessibility / test IDs', await C.checkLocatorReadiness(ev));
112
+ if (reopened.length === 0) {
113
+ checks.push({ id: 'issue_recurrence', title: 'Issue-ledger recurrence', profile: 'release_gate', status: 'pass', reason: 'no previously-fixed issue has regressed', evidenceUris: [] });
114
+ }
115
+ else {
116
+ const top = reopened.find((r) => r.severity === 'blocker' || r.severity === 'high') ?? reopened[0];
117
+ const blocking = top.severity === 'blocker' || top.severity === 'high';
118
+ checks.push({
119
+ id: 'issue_recurrence',
120
+ title: 'Issue-ledger recurrence',
121
+ profile: 'release_gate',
122
+ status: blocking ? 'fail' : 'blocked',
123
+ category: top.category,
124
+ severity: top.severity,
125
+ issueId: top.issueId, // link to the EXISTING reopened issue, not a new one
126
+ reason: top.lastRecurrenceMessage ?? `${reopened.length} previously-fixed issue(s) regressed`,
127
+ evidenceUris: [],
128
+ nextStep: 'A regressed blocker/high issue blocks release; re-fix and re-verify.',
129
+ });
130
+ }
131
+ }
132
+ const releaseImpact = auditReleaseImpact(checks, blockingRecurrence);
133
+ return { profile: opts.profile, state, releaseImpact, checks, issueIds, recurrenceWarnings };
134
+ }
135
+ /** Bounded, honest account-cycle: create (first-run) → logout (controlled explore). Steps that
136
+ * cannot be confirmed are reported blocked/needs_input/skipped, never a false pass. */
137
+ async function runAccountCycle(sessions, session, driver, opts, finalize) {
138
+ if (!opts.allowGeneratedData) {
139
+ const blocked = { status: 'blocked', category: 'missing_test_data', severity: 'medium', reason: 'account-cycle needs generated disposable-account data; re-run with allowGeneratedData in a test/staging environment', evidenceUris: [], workflow: 'account_cycle' };
140
+ await finalize('create_account', 'Create account', blocked);
141
+ await finalize('logout', 'Logout', { status: 'skipped', reason: 'account not created', evidenceUris: [] });
142
+ await finalize('login_again', 'Login again', { status: 'skipped', reason: 'account not created', evidenceUris: [] });
143
+ await finalize('forgot_password', 'Forgot password surface', { status: 'skipped', reason: 'account not created', evidenceUris: [] });
144
+ return 'needs_input';
145
+ }
146
+ let createResult;
147
+ let runState = 'completed';
148
+ try {
149
+ const fr = await runFirstRun(sessions, session, driver, { mode: 'until_home', allowGeneratedAccount: true });
150
+ switch (fr.accountOutcome) {
151
+ case 'created':
152
+ case 'used_provided_credentials':
153
+ createResult = { status: 'pass', reason: `account ${fr.accountOutcome} (${fr.pathTaken ?? 'auth'})`, evidenceUris: fr.evidenceUris, workflow: 'account_cycle' };
154
+ break;
155
+ case 'reached_verification':
156
+ createResult = { status: 'blocked', category: 'hard_gate', severity: 'medium', reason: 'account creation reached an OTP/verification gate (needs a real code)', evidenceUris: fr.evidenceUris, workflow: 'account_cycle' };
157
+ runState = 'needs_input';
158
+ break;
159
+ case 'refused_unsafe':
160
+ createResult = { status: 'blocked', category: 'missing_test_data', severity: 'medium', reason: fr.stoppedReason || 'environment unsafe for generated account creation', evidenceUris: fr.evidenceUris, workflow: 'account_cycle' };
161
+ runState = 'unsafe';
162
+ break;
163
+ default:
164
+ createResult = { status: 'blocked', reason: `account creation ${fr.accountOutcome}: ${fr.stoppedReason}`, evidenceUris: fr.evidenceUris, workflow: 'account_cycle' };
165
+ }
166
+ }
167
+ catch (e) {
168
+ createResult = { status: 'fail', category: 'app_bug', severity: 'high', reason: `account creation errored: ${String(e.message ?? e)}`, evidenceUris: [], workflow: 'account_cycle' };
169
+ }
170
+ await finalize('create_account', 'Create account', createResult);
171
+ // Logout is attempted only through the controlled disposable-account exploration (logout permitted
172
+ // there; delete/pay/send stay refused). We cannot positively confirm a logout without app-specific
173
+ // oracles, so the outcome is honest: skipped/blocked unless the create step already failed.
174
+ if (createResult.status === 'pass') {
175
+ // Controlled logout: find + tap a logout control (disposable account only) and READ the resulting
176
+ // logged-out auth surface immediately — without a full exploration that would auto-re-login via the
177
+ // stored generated credentials and hide the forgot-password entrypoint (REQ-08 account-cycle bug).
178
+ const ev = { sessions, session, driver, appId: session.appId };
179
+ let loggedOutText = '';
180
+ try {
181
+ const lo = await C.findAndTapLogout(ev, true);
182
+ loggedOutText = lo.loggedOutText;
183
+ if (lo.tapped && lo.authSurface)
184
+ await finalize('logout', 'Logout', { status: 'pass', reason: 'logged out — reached a logged-out auth surface', evidenceUris: [], workflow: 'account_cycle' });
185
+ else if (lo.tapped)
186
+ await finalize('logout', 'Logout', { status: 'skipped', reason: 'tapped a logout control but did not clearly reach a logged-out auth surface — confirm manually', evidenceUris: [], workflow: 'account_cycle' });
187
+ else
188
+ await finalize('logout', 'Logout', { status: 'fail', category: 'improvement', severity: 'low', reason: 'no logout control found on the post-login screens', evidenceUris: [], workflow: 'account_cycle', nextStep: 'Expose a logout control once signed in.' });
189
+ }
190
+ catch (e) {
191
+ await finalize('logout', 'Logout', { status: 'fail', category: 'app_bug', severity: 'high', reason: `logout attempt errored: ${String(e.message ?? e)}`, evidenceUris: [], workflow: 'account_cycle' });
192
+ }
193
+ // Forgot-password is evaluated on the LOGGED-OUT auth surface captured above (right after logout),
194
+ // BEFORE login_again returns to home — otherwise a valid "Forgot password?" link on the login
195
+ // screen would be falsely reported missing. Finalized after login_again to keep output order.
196
+ const forgotResult = C.checkForgotPassword(loggedOutText);
197
+ // Login again: re-run first-run, which now reuses the generated credentials (hasProvidedCredentials
198
+ // → login intent). Pass ONLY when an authenticated/home state is observed; OTP/MFA → needs_input.
199
+ try {
200
+ const fr2 = await runFirstRun(sessions, session, driver, { mode: 'until_home', allowGeneratedAccount: true });
201
+ let login;
202
+ if (fr2.state === 'completed')
203
+ login = { status: 'pass', reason: `re-authenticated to home with the generated account (${fr2.pathTaken ?? 'login'})`, evidenceUris: fr2.evidenceUris, workflow: 'account_cycle' };
204
+ else if (fr2.accountOutcome === 'reached_verification')
205
+ login = { status: 'blocked', category: 'hard_gate', severity: 'medium', reason: 'login-again hit an OTP/verification gate (needs a real code)', evidenceUris: fr2.evidenceUris, workflow: 'account_cycle' };
206
+ else if (fr2.needsInput)
207
+ login = { status: 'blocked', category: 'hard_gate', severity: 'medium', reason: `login-again needs input: ${fr2.needsInput.reason}`, evidenceUris: fr2.evidenceUris, workflow: 'account_cycle' };
208
+ else
209
+ login = { status: 'fail', category: 'app_bug', severity: 'high', reason: `could not log back in with the generated account (${fr2.state}: ${fr2.stoppedReason})`, evidenceUris: fr2.evidenceUris, workflow: 'account_cycle' };
210
+ await finalize('login_again', 'Login again', login);
211
+ }
212
+ catch (e) {
213
+ await finalize('login_again', 'Login again', { status: 'fail', category: 'app_bug', severity: 'high', reason: `login-again errored: ${String(e.message ?? e)}`, evidenceUris: [], workflow: 'account_cycle' });
214
+ }
215
+ // Finalize forgot-password with the evidence captured on the logged-out surface (above).
216
+ await finalize('forgot_password', 'Forgot password surface', forgotResult);
217
+ }
218
+ else {
219
+ for (const [id, title] of [['logout', 'Logout'], ['login_again', 'Login again'], ['forgot_password', 'Forgot password surface']]) {
220
+ await finalize(id, title, { status: 'skipped', reason: 'account not established this run', evidenceUris: [], workflow: 'account_cycle' });
221
+ }
222
+ }
223
+ return runState;
224
+ }
225
+ /** Plan-only: the profile checklist + account-cycle safety, without driving the device. */
226
+ export function planMobileAudit(profile) {
227
+ return { checks: checksForProfile(profile) };
228
+ }
229
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/mobileAudit/runner.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,7 @@ export const FAILURES = {
112
112
  // --- roadmap §10: build-from-source ---
113
113
  BUILD_COMMAND_UNAVAILABLE: { bucket: 'environment', severity: 'high', retrySafe: true, owner: 'environment', summary: 'No build command is available for this framework/platform', recovery: 'Install the required toolchain (Gradle/Xcode/Flutter/Expo CLI) or provide a prebuilt artifact.' },
114
114
  BUILD_FAILED: { bucket: 'environment', severity: 'high', retrySafe: false, owner: 'app', selfFixable: false, summary: 'Build from source failed', recovery: 'Open the build log artifact, fix the compile/config error, then re-run the build. A build failure is NOT a test failure.' },
115
+ BUILD_ARTIFACT_UNRESOLVED_AFTER_SUCCESS: { bucket: 'environment', severity: 'high', retrySafe: true, owner: 'swipium', selfFixable: true, summary: 'Build succeeded but Swipium could not resolve the produced app', recovery: 'The build command succeeded. This is an artifact-resolution gap, not an app build failure. Pass an explicit artifact path, or for Expo iOS point Swipium at the .app under Xcode DerivedData.' },
115
116
  BUILD_TIMED_OUT: { bucket: 'environment', severity: 'high', retrySafe: true, owner: 'environment', summary: 'Build exceeded its time budget', recovery: 'Increase the build timeout, warm caches, or build once manually then re-run Swipium against the artifact.' },
116
117
  DEPENDENCY_INSTALL_REQUIRED: { bucket: 'environment', severity: 'medium', retrySafe: true, owner: 'environment', summary: 'Dependencies must be installed before building', recovery: 'Run the project install step (npm/yarn/pnpm install, pod install, flutter pub get), then re-run the build.' },
117
118
  EXPO_PREBUILD_REQUIRED: { bucket: 'environment', severity: 'medium', retrySafe: true, owner: 'swipium', selfFixable: true, summary: 'Expo project has no native android/ios directories', recovery: 'Run `npx expo prebuild` (or build with `npx expo run:*` which prebuilds) before a native build.' },
@@ -1 +1 @@
1
- {"version":3,"file":"failures.js","sourceRoot":"","sources":["../../src/oracle/failures.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,iGAAiG;AACjG,6FAA6F;AAC7F,sFAAsF;AACtF,8DAA8D;AAC9D,EAAE;AACF,4CAA4C;AAC5C,qDAAqD;AACrD,gFAAgF;AAChF,oFAAoF;AACpF,mGAAmG;AACnG,kGAAkG;AAsJlG,MAAM,CAAC,MAAM,QAAQ,GAAqC;IACxD,YAAY,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,wBAAwB,EAAE,QAAQ,EAAE,kFAAkF,EAAE;IACxM,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,yEAAyE,EAAE;IACxL,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,wFAAwF,EAAE;IAC3N,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,qFAAqF,EAAE;IACtM,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IAClM,aAAa,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,yCAAyC,EAAE,QAAQ,EAAE,+FAA+F,EAAE;IACvO,YAAY,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gGAAgG,EAAE;IAClN,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IACzM,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,8GAA8G,EAAE;IAE7O,SAAS,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAChM,WAAW,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,iFAAiF,EAAE;IACpN,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,QAAQ,EAAE,2EAA2E,EAAE;IAC7M,UAAU,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mDAAmD,EAAE,QAAQ,EAAE,2JAA2J,EAAE;IAC7S,cAAc,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gGAAgG,EAAE;IACvN,mBAAmB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,+CAA+C,EAAE,QAAQ,EAAE,sGAAsG,EAAE;IAC7P,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,qDAAqD,EAAE,QAAQ,EAAE,qGAAqG,EAAE;IACxQ,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,gHAAgH,EAAE;IACxP,sBAAsB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,oGAAoG,EAAE;IAC7O,oBAAoB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,kEAAkE,EAAE;IACpM,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,+CAA+C,EAAE,QAAQ,EAAE,gHAAgH,EAAE;IACpQ,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE,QAAQ,EAAE,4EAA4E,EAAE;IACnN,eAAe,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,6DAA6D,EAAE;IACnM,2BAA2B,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,yCAAyC,EAAE,QAAQ,EAAE,qGAAqG,EAAE;IAC9P,eAAe,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,sDAAsD,EAAE;IAC/K,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,qDAAqD,EAAE;IAClM,eAAe,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,2DAA2D,EAAE,QAAQ,EAAE,2FAA2F,EAAE;IAC1P,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,sFAAsF,EAAE;IACxN,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,4CAA4C,EAAE,QAAQ,EAAE,sHAAsH,EAAE;IAC1Q,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,8BAA8B,EAAE,QAAQ,EAAE,yFAAyF,EAAE;IAC5N,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,4GAA4G,EAAE;IAC3P,eAAe,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,yGAAyG,EAAE;IACrP,gBAAgB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE,QAAQ,EAAE,wGAAwG,EAAE;IACtP,uBAAuB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,kDAAkD,EAAE,QAAQ,EAAE,oFAAoF,EAAE;IACvP,iBAAiB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE,QAAQ,EAAE,kGAAkG,EAAE;IACzP,oBAAoB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,oDAAoD,EAAE,QAAQ,EAAE,8GAA8G,EAAE;IACzQ,iBAAiB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,qEAAqE,EAAE,QAAQ,EAAE,8FAA8F,EAAE;IAC3Q,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,iEAAiE,EAAE,QAAQ,EAAE,kHAAkH,EAAE;IACzR,iBAAiB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,sCAAsC,EAAE,QAAQ,EAAE,iGAAiG,EAAE;IAChP,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,qEAAqE,EAAE;IAClM,WAAW,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,uDAAuD,EAAE,QAAQ,EAAE,8GAA8G,EAAE;IACvQ,wBAAwB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,gDAAgD,EAAE,QAAQ,EAAE,wHAAwH,EAAE;IACrR,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,6CAA6C,EAAE,QAAQ,EAAE,mHAAmH,EAAE;IAC5Q,2BAA2B,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,6DAA6D,EAAE,QAAQ,EAAE,wHAAwH,EAAE;IACxT,6BAA6B,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mEAAmE,EAAE,QAAQ,EAAE,oIAAoI,EAAE;IAC9U,6BAA6B,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kDAAkD,EAAE,QAAQ,EAAE,gIAAgI,EAAE;IAErT,SAAS,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,uCAAuC,EAAE,QAAQ,EAAE,uFAAuF,EAAE;IAChO,eAAe,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE,QAAQ,EAAE,uEAAuE,EAAE;IAC1N,cAAc,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,6CAA6C,EAAE,QAAQ,EAAE,+IAA+I,EAAE;IAEnS,kBAAkB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,mDAAmD,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IACxN,oBAAoB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,iHAAiH,EAAE;IAC3P,eAAe,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,EAAE,QAAQ,EAAE,qEAAqE,EAAE;IAC1M,iBAAiB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,uDAAuD,EAAE,QAAQ,EAAE,0FAA0F,EAAE;IAC5P,eAAe,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,QAAQ,EAAE,uFAAuF,EAAE;IACvO,SAAS,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,uCAAuC,EAAE,QAAQ,EAAE,iDAAiD,EAAE;IACxL,gBAAgB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,6GAA6G,EAAE;IAC5P,kBAAkB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,0JAA0J,EAAE;IAC/S,iBAAiB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,oGAAoG,EAAE;IACtO,oBAAoB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE,QAAQ,EAAE,uGAAuG,EAAE;IACzP,oBAAoB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,QAAQ,EAAE,uFAAuF,EAAE;IACnO,sBAAsB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,4CAA4C,EAAE,QAAQ,EAAE,kHAAkH,EAAE;IAC/Q,mBAAmB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,gEAAgE,EAAE,QAAQ,EAAE,yHAAyH,EAAE;IACtS,sBAAsB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,wFAAwF,EAAE;IACrO,cAAc,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,kCAAkC,EAAE,QAAQ,EAAE,+FAA+F,EAAE;IAC1O,mBAAmB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IACnN,YAAY,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,2CAA2C,EAAE,QAAQ,EAAE,6DAA6D,EAAE;IAC9M,mBAAmB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,gDAAgD,EAAE,QAAQ,EAAE,6IAA6I,EAAE;IAExS,mBAAmB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,sDAAsD,EAAE,QAAQ,EAAE,gGAAgG,EAAE;IACjQ,mBAAmB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,qFAAqF,EAAE;IAC9O,mBAAmB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,0DAA0D,EAAE,QAAQ,EAAE,8GAA8G,EAAE;IAClS,qBAAqB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oEAAoE,EAAE,QAAQ,EAAE,qHAAqH,EAAE;IAErT,yCAAyC;IACzC,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,wDAAwD,EAAE,QAAQ,EAAE,sHAAsH,EAAE;IACpS,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iDAAiD,EAAE,QAAQ,EAAE,sFAAsF,EAAE;IACtQ,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IAChN,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oCAAoC,EAAE,QAAQ,EAAE,yHAAyH,EAAE;IAEvR,qDAAqD;IACrD,iBAAiB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,wDAAwD,EAAE,QAAQ,EAAE,uFAAuF,EAAE;IAC1R,4BAA4B,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,+DAA+D,EAAE,QAAQ,EAAE,sFAAsF,EAAE;IACvR,uCAAuC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,2CAA2C,EAAE,QAAQ,EAAE,4GAA4G,EAAE;IACpS,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,0CAA0C,EAAE,QAAQ,EAAE,0GAA0G,EAAE;IACjR,oBAAoB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,oDAAoD,EAAE,QAAQ,EAAE,+HAA+H,EAAE;IAClT,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,2CAA2C,EAAE,QAAQ,EAAE,6GAA6G,EAAE;IACxR,sBAAsB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,+EAA+E,EAAE,QAAQ,EAAE,4GAA4G,EAAE;IAC5T,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gCAAgC,EAAE,QAAQ,EAAE,8FAA8F,EAAE;IAC3P,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gDAAgD,EAAE,QAAQ,EAAE,mGAAmG,EAAE;IACnR,4BAA4B,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,yDAAyD,EAAE,QAAQ,EAAE,8JAA8J,EAAE;IAC/V,0BAA0B,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,oEAAoE,EAAE,QAAQ,EAAE,4JAA4J,EAAE;IACrX,sBAAsB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,iHAAiH,EAAE;IAC1R,uBAAuB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,wDAAwD,EAAE,QAAQ,EAAE,uHAAuH,EAAE;IAClT,qBAAqB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iDAAiD,EAAE,QAAQ,EAAE,qFAAqF,EAAE;IAChQ,oBAAoB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uDAAuD,EAAE,QAAQ,EAAE,qGAAqG,EAAE;IACrR,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,8CAA8C,EAAE,QAAQ,EAAE,wGAAwG,EAAE;IACnR,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,oCAAoC,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IAE7P,6CAA6C;IAC7C,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,6DAA6D,EAAE,QAAQ,EAAE,oGAAoG,EAAE;IAC9R,gCAAgC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kEAAkE,EAAE,QAAQ,EAAE,mIAAmI,EAAE;IAC1U,8BAA8B,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qEAAqE,EAAE,QAAQ,EAAE,sGAAsG,EAAE;IAC9S,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,2DAA2D,EAAE,QAAQ,EAAE,qGAAqG,EAAE;IAE9R,yCAAyC;IACzC,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,2DAA2D,EAAE,QAAQ,EAAE,gGAAgG,EAAE;IAC/R,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,0HAA0H,EAAE;IACxR,eAAe,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gCAAgC,EAAE,QAAQ,EAAE,2GAA2G,EAAE;IACrQ,2BAA2B,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,gDAAgD,EAAE,QAAQ,EAAE,4GAA4G,EAAE;IACpS,sBAAsB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,oDAAoD,EAAE,QAAQ,EAAE,iGAAiG,EAAE;IACvS,aAAa,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,+FAA+F,EAAE;IACrO,iBAAiB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mGAAmG,EAAE;IAC3O,oBAAoB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,6EAA6E,EAAE;IAE3N,+BAA+B;IAC/B,cAAc,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,2CAA2C,EAAE,QAAQ,EAAE,+DAA+D,EAAE;IAClP,YAAY,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,kDAAkD,EAAE,QAAQ,EAAE,4FAA4F,EAAE;IACrQ,kBAAkB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAmC,EAAE,QAAQ,EAAE,6EAA6E,EAAE;IAC5P,iBAAiB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,wCAAwC,EAAE,QAAQ,EAAE,yHAAyH,EAAE;IAE7R,+CAA+C;IAC/C,uBAAuB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,qFAAqF,EAAE,QAAQ,EAAE,qIAAqI,EAAE;IAC1V,oBAAoB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,0CAA0C,EAAE,QAAQ,EAAE,+GAA+G,EAAE;IACtR,qBAAqB,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,yDAAyD,EAAE,QAAQ,EAAE,uHAAuH,EAAE;IAC/S,aAAa,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uCAAuC,EAAE,QAAQ,EAAE,2GAA2G,EAAE;IACvQ,iBAAiB,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uCAAuC,EAAE,QAAQ,EAAE,uGAAuG,EAAE;IAEvQ,OAAO,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,uEAAuE,EAAE;CAC5L,CAAC;AAEF,iGAAiG;AACjG,MAAM,eAAe,GAAwC;IAC3D,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,MAAM;CACvB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,IAAiB;IAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC;AAC7C,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC,CAAC,OAAO,cAAc,CAAC;QAC3C,KAAK,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC;QACzB,KAAK,sBAAsB,CAAC,CAAC,OAAO,kBAAkB,CAAC;QACvD,KAAK,iBAAiB,CAAC,CAAC,OAAO,iBAAiB,CAAC;QACjD,KAAK,mBAAmB,CAAC,CAAC,OAAO,mBAAmB,CAAC;QACrD,KAAK,cAAc,CAAC,CAAC,OAAO,cAAc,CAAC;QAC3C,KAAK,WAAW,CAAC,CAAC,OAAO,QAAQ,CAAC;QAClC,KAAK,iBAAiB,CAAC,CAAC,OAAO,QAAQ,CAAC;QACxC,KAAK,oBAAoB,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACnD,KAAK,eAAe,CAAC,CAAC,OAAO,gBAAgB,CAAC;QAC9C,KAAK,uBAAuB,CAAC,CAAC,OAAO,eAAe,CAAC;QACrD,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACrD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS,CAAC,CAAC,OAAO,SAAS,CAAC;QACjC,KAAK,mBAAmB,CAAC,CAAC,OAAO,cAAc,CAAC;QAChD,KAAK,qBAAqB,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACpD,KAAK,gBAAgB,CAAC,CAAC,OAAO,gBAAgB,CAAC;QAC/C,OAAO,CAAC,CAAC,OAAO,gBAAgB,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAoB,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAK3H,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,UAAU,MAAM,CACpB,IAAiB,EACjB,OAAyG,EAAE;IAE3G,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,OAAO,CACZ;QACE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK;QACxC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC5C,WAAW,EAAE,IAAI;KAClB;IACD,0FAA0F;IAC1F,wFAAwF;IACxF,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAC9G,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"failures.js","sourceRoot":"","sources":["../../src/oracle/failures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ // Locator suggestions + durability scoring (NEXT-PLAN: Locator And Maintainability). For each
2
+ // element, recommend the most durable way to target it and score how brittle that is, following
3
+ // the QA-standard priority: accessibility id / content-desc > resource-id / test tag > stable
4
+ // visible text > relative structure > coordinate/image (last resort). The screen-level
5
+ // "automation readiness" grade tells a developer how much of the UI needs testIDs.
6
+ const TIER_DURABILITY = {
7
+ accessibility: 95,
8
+ resource_id: 88,
9
+ visible_text: 60,
10
+ structure: 30,
11
+ coordinate: 10,
12
+ };
13
+ // Framework-noise resource ids that aren't durable QA handles.
14
+ const NOISE_ID = /(^android:id\/)|(:id\/(content|action_bar|decor_content_parent|navigationBarBackground|statusBarBackground)$)/i;
15
+ const isMeaningful = (s) => !!s && s.trim().length > 0;
16
+ function roleStem(role) {
17
+ const cleaned = role.split('.').pop()?.replace(/^XCUIElementType/i, '') || role;
18
+ const stem = cleaned.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '');
19
+ return stem || 'element';
20
+ }
21
+ function textStem(value) {
22
+ if (!isMeaningful(value))
23
+ return null;
24
+ const stem = value.toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '').slice(0, 40).replace(/_+$/g, '');
25
+ return stem.length >= 2 ? stem : null;
26
+ }
27
+ function refStem(ref) {
28
+ return ref.replace(/[^a-z0-9]+/gi, '_').replace(/^_+|_+$/g, '').toLowerCase() || 'control';
29
+ }
30
+ function suggestedHandle(el, platform) {
31
+ const label = textStem(el.label) ?? textStem(el.text);
32
+ const role = roleStem(el.role);
33
+ const suffix = platform === 'ios' ? role : `${role}_testid`;
34
+ return label ? `${label}_${suffix}` : `${role}_${refStem(el.ref)}`;
35
+ }
36
+ function dynamicTextReason(value) {
37
+ if (!isMeaningful(value))
38
+ return null;
39
+ const text = value.trim();
40
+ if (text.length > 60)
41
+ return 'text is long and likely to change with content or localization';
42
+ if (/\b\d{1,2}[:/.-]\d{1,2}([:/.-]\d{2,4})?\b/.test(text))
43
+ return 'text contains a date/time-like value';
44
+ if (/\b\d+(?:[.,]\d+)?\b/.test(text) && /[$€£¥%]|\b(items?|results?|messages?|notifications?|total|balance|km|mi|min|sec|hours?)\b/i.test(text))
45
+ return 'text contains count, currency, percent, or measurement data';
46
+ if (/[0-9a-f]{8,}/i.test(text))
47
+ return 'text contains an id/hash-like token';
48
+ return null;
49
+ }
50
+ export function suggestLocator(el, opts = {}) {
51
+ const platform = opts.platform ?? 'generic';
52
+ const base = { ref: el.ref, role: el.role };
53
+ if (platform === 'ios') {
54
+ // iOS/XCUITest priority: accessibilityIdentifier first. Labels/names are useful, but copy
55
+ // and localization often change them; clickable controls without identifiers still need work.
56
+ if (isMeaningful(el.id) && !NOISE_ID.test(el.id)) {
57
+ return { ...base, platform, locatorKind: 'accessibility_identifier', tier: 'accessibility', durability: TIER_DURABILITY.accessibility, locator: el.id, rationale: 'accessibilityIdentifier — preferred durable iOS/XCUITest locator', needsTestId: false };
58
+ }
59
+ if (isMeaningful(el.label)) {
60
+ return { ...base, platform, locatorKind: 'accessibility_label', tier: 'accessibility', durability: 78, locator: el.label, rationale: 'accessibility label/name — usable, but add an accessibilityIdentifier for CI-stable iOS flows', needsTestId: el.clickable, suggestedTestId: el.clickable ? suggestedHandle(el, platform) : undefined };
61
+ }
62
+ if (isMeaningful(el.text)) {
63
+ const short = el.text.trim().length <= 2 || /^\d+$/.test(el.text.trim());
64
+ return { ...base, platform, locatorKind: 'visible_text', tier: 'visible_text', durability: short ? 35 : 58, locator: el.text, rationale: short ? 'visible value/text is short or numeric — brittle on iOS; add an accessibilityIdentifier' : 'visible value/text — usable but copy/localization dependent; prefer accessibilityIdentifier', needsTestId: el.clickable, suggestedTestId: el.clickable ? suggestedHandle(el, platform) : undefined };
65
+ }
66
+ if (el.clickable) {
67
+ return { ...base, platform, locatorKind: 'structure', tier: 'structure', durability: TIER_DURABILITY.structure, locator: null, rationale: 'hittable control has no accessibilityIdentifier, label, or text — predicate/class-chain/coordinates only; add an accessibilityIdentifier', needsTestId: true, suggestedTestId: suggestedHandle(el, platform) };
68
+ }
69
+ return { ...base, platform, locatorKind: 'coordinate', tier: 'coordinate', durability: TIER_DURABILITY.coordinate, locator: null, rationale: 'no durable iOS handle — visual/coordinate targeting only', needsTestId: el.clickable, suggestedTestId: el.clickable ? suggestedHandle(el, platform) : undefined };
70
+ }
71
+ // 1) accessibility id / content description (most durable; survives copy + layout changes)
72
+ if (isMeaningful(el.label)) {
73
+ return { ...base, platform, locatorKind: 'accessibility_label', tier: 'accessibility', durability: TIER_DURABILITY.accessibility, locator: el.label, rationale: 'content-desc / accessibility label — durable and a11y-friendly', needsTestId: false };
74
+ }
75
+ // 2) resource-id / test tag (durable when it's a real testID, not framework noise)
76
+ if (isMeaningful(el.id) && !NOISE_ID.test(el.id)) {
77
+ return { ...base, platform, locatorKind: 'resource_id', tier: 'resource_id', durability: TIER_DURABILITY.resource_id, locator: el.id, rationale: 'resource-id / testID — durable', needsTestId: false };
78
+ }
79
+ // 3) stable visible text (works, but copy/localization can change it)
80
+ if (isMeaningful(el.text)) {
81
+ const short = el.text.trim().length <= 2 || /^\d+$/.test(el.text.trim());
82
+ return { ...base, platform, locatorKind: 'visible_text', tier: 'visible_text', durability: short ? 40 : TIER_DURABILITY.visible_text, locator: el.text, rationale: short ? 'visible text, but very short/numeric — brittle; add a testID' : 'visible text — usable but breaks if copy/localization changes', needsTestId: el.clickable, suggestedTestId: el.clickable ? suggestedHandle(el, platform) : undefined };
83
+ }
84
+ // 4) relative structure (no handle at all on an interactive control)
85
+ if (el.clickable) {
86
+ return { ...base, platform, locatorKind: 'structure', tier: 'structure', durability: TIER_DURABILITY.structure, locator: null, rationale: 'clickable but has no id/label/text — only structural/coordinate targeting; add a testID', needsTestId: true, suggestedTestId: suggestedHandle(el, platform) };
87
+ }
88
+ // 5) coordinate / image (last resort)
89
+ return { ...base, platform, locatorKind: 'coordinate', tier: 'coordinate', durability: TIER_DURABILITY.coordinate, locator: null, rationale: 'no durable handle — coordinate/image match only', needsTestId: el.clickable, suggestedTestId: el.clickable ? suggestedHandle(el, platform) : undefined };
90
+ }
91
+ export function automationReadiness(suggestions, elements, opts = {}) {
92
+ const platform = opts.platform ?? 'generic';
93
+ const interactive = elements.filter((e) => e.clickable);
94
+ const byRef = new Map(suggestions.map((s) => [s.ref, s]));
95
+ const durable = interactive.filter((e) => {
96
+ const s = byRef.get(e.ref);
97
+ if (platform === 'ios')
98
+ return s?.locatorKind === 'accessibility_identifier';
99
+ const t = s?.tier;
100
+ return t === 'accessibility' || t === 'resource_id';
101
+ });
102
+ const durablePct = interactive.length ? Math.round((durable.length / interactive.length) * 100) : 100;
103
+ const grade = durablePct >= 90 ? 'A' : durablePct >= 70 ? 'B' : durablePct >= 50 ? 'C' : 'D';
104
+ const needTestIds = suggestions
105
+ .filter((s) => s.needsTestId)
106
+ .map((s) => ({ ref: s.ref, role: s.role, hint: byRef.get(s.ref)?.locator ? `currently targeted by ${byRef.get(s.ref).tier}: "${byRef.get(s.ref).locator}"` : 'no durable handle', suggestedTestId: s.suggestedTestId }));
107
+ return { grade, durablePct, interactiveCount: interactive.length, durableCount: durable.length, needTestIds, platform };
108
+ }
109
+ export function locatorReadinessIssues(suggestions, elements, opts = {}) {
110
+ const platform = opts.platform ?? 'generic';
111
+ const issues = [];
112
+ const byRef = new Map(elements.map((e) => [e.ref, e]));
113
+ if (platform === 'ios') {
114
+ const missing = suggestions.filter((s) => s.needsTestId && byRef.get(s.ref)?.clickable);
115
+ if (missing.length) {
116
+ const nameCounts = missing.reduce((acc, s) => {
117
+ if (s.suggestedTestId)
118
+ acc[s.suggestedTestId] = (acc[s.suggestedTestId] ?? 0) + 1;
119
+ return acc;
120
+ }, {});
121
+ issues.push({
122
+ code: 'IOS_MISSING_ACCESSIBILITY_IDENTIFIER',
123
+ severity: 'warn',
124
+ message: `${missing.length} interactive iOS control(s) lack a stable accessibilityIdentifier.`,
125
+ refs: missing.map((s) => s.ref),
126
+ suggestion: 'Add SwiftUI .accessibilityIdentifier(...), UIKit accessibilityIdentifier, or React Native testID for these controls.',
127
+ suggestedTestIds: missing
128
+ .filter((s) => s.suggestedTestId)
129
+ .map((s) => ({ ref: s.ref, name: nameCounts[s.suggestedTestId] > 1 ? `${s.suggestedTestId}_${refStem(s.ref)}` : s.suggestedTestId })),
130
+ });
131
+ }
132
+ const labels = new Map();
133
+ for (const e of elements) {
134
+ const label = e.label?.trim();
135
+ if (!label || !e.clickable)
136
+ continue;
137
+ const key = label.toLowerCase();
138
+ labels.set(key, [...(labels.get(key) ?? []), e.ref]);
139
+ }
140
+ for (const [label, refs] of labels) {
141
+ if (refs.length < 2)
142
+ continue;
143
+ issues.push({
144
+ code: 'IOS_DUPLICATE_LABEL',
145
+ severity: 'warn',
146
+ message: `Duplicate iOS accessibility label "${label}" appears on ${refs.length} interactive controls.`,
147
+ refs,
148
+ suggestion: 'Keep user-facing labels, but give each control a unique accessibilityIdentifier for automation.',
149
+ });
150
+ }
151
+ const dynamicText = suggestions
152
+ .filter((s) => s.locatorKind === 'visible_text' || s.locatorKind === 'accessibility_label')
153
+ .map((s) => ({ suggestion: s, reason: dynamicTextReason(s.locator ?? undefined) }))
154
+ .filter((x) => !!x.reason);
155
+ if (dynamicText.length) {
156
+ issues.push({
157
+ code: 'DYNAMIC_TEXT_LOCATOR',
158
+ severity: 'warn',
159
+ message: `${dynamicText.length} iOS locator candidate(s) depend on dynamic text.`,
160
+ refs: dynamicText.map((x) => x.suggestion.ref),
161
+ suggestion: 'Avoid dynamic labels/text in CI flows; add stable accessibilityIdentifier values and target those instead.',
162
+ });
163
+ }
164
+ }
165
+ const coordinateOnly = suggestions.filter((s) => s.tier === 'structure' || s.tier === 'coordinate');
166
+ if (coordinateOnly.length) {
167
+ issues.push({
168
+ code: 'COORDINATE_ONLY',
169
+ severity: 'warn',
170
+ message: `${coordinateOnly.length} element(s) have no semantic locator and would require structure, image, or coordinates.`,
171
+ refs: coordinateOnly.map((s) => s.ref),
172
+ suggestion: platform === 'ios' ? 'Add accessibilityIdentifier values before relying on these controls in CI.' : 'Add testID/resource-id/content-desc values before relying on these controls in CI.',
173
+ });
174
+ }
175
+ return issues;
176
+ }
177
+ //# sourceMappingURL=locator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locator.js","sourceRoot":"","sources":["../../src/oracle/locator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/orchestration/envelope.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,8FAA8F;AAC9F,6FAA6F;AAC7F,8FAA8F;AAC9F,uDAAuD;AACvD,EAAE;AACF,8FAA8F;AAC9F,8FAA8F;AAC9F,yDAAyD;AAEzD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAoB,MAAM,uBAAuB,CAAC;AAkEhG;oFACoF;AACpF,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,QAAgC;IACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAmB,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,+DAA+D;YACzE,GAAG,QAAQ;SACZ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,YAAY,CAAC,IAAmB,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,aAAa,CAAC,IAAmB,CAAC;QACjD,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,QAAQ;KACZ,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,qBAAqB,CAAC,KAAoB;IACxD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;QAChC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,EAAE;QACtD,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;QAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;QACxC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,IAAI,IAAI;KAC3D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/orchestration/envelope.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,8FAA8F;AAC9F,6FAA6F;AAC7F,8FAA8F;AAC9F,uDAAuD;AACvD,EAAE;AACF,8FAA8F;AAC9F,8FAA8F;AAC9F,yDAAyD;AAEzD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAoB,MAAM,uBAAuB,CAAC;AAmEhG;oFACoF;AACpF,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,QAAgC;IACjF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAmB,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,+DAA+D;YACzE,GAAG,QAAQ;SACZ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE,YAAY,CAAC,IAAmB,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,aAAa,CAAC,IAAmB,CAAC;QACjD,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,GAAG,QAAQ;KACZ,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,qBAAqB,CAAC,KAAoB;IACxD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;QAChC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,IAAI,EAAE;QACtD,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;QAC5C,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;QACxC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,IAAI,IAAI;KAC3D,CAAC;AACJ,CAAC"}
@@ -22,6 +22,16 @@ export function registerPrompts(server) {
22
22
  `2. Call qa_start_session${projectRoot ? ` { projectRoot: "${projectRoot}" }` : ''}.\n` +
23
23
  `3. Call qa_detect_context, then qa_plan with the sessionId.\n` +
24
24
  `4. Summarize: is it READY, PARTIAL, or BLOCKED? List the exact missing items (APK, device, credentials) and the recommended budget profile. Do not start testing yet.`));
25
+ server.registerPrompt('swipium_guardrail_validation', {
26
+ title: 'Validate safety guardrails',
27
+ description: 'Confirm Swipium refuses an unsafe destructive action (bundle-loss) on a debug RN/Expo build.',
28
+ argsSchema: { projectRoot: z.string().optional() },
29
+ }, ({ projectRoot }) => userText(`Validate Swipium's destructive-action guardrails (do NOT override them).\n\n` +
30
+ `1. qa_start_session${projectRoot ? ` { projectRoot: "${projectRoot}", ` : ' { '}profile: "guardrail" }.\n` +
31
+ `2. qa_plan — confirm fresh_start appears under UNSAFE with reason bundle_cache_loss for a debug RN/Expo build.\n` +
32
+ `3. qa_prepare_target to get the app running.\n` +
33
+ `4. Attempt qa_app_control { action: "fresh_start" } WITHOUT acknowledgeBundleRisk — expect a refusal (bundle_cache_loss), not execution.\n` +
34
+ `5. qa_report and confirm destructiveGuardrail shows the action was refused, not executed. Report PASS only if it was refused.`));
25
35
  server.registerPrompt('swipium_full_smoke', {
26
36
  title: 'Run a full smoke test',
27
37
  description: 'Plan, prepare, run the top ready workflows, and produce a report.',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}