prowl-tools 0.1.6 → 0.1.7

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/dist/lib.d.cts CHANGED
@@ -327,7 +327,7 @@ type StepResult = {
327
327
  type AssertionResult = {
328
328
  type: string;
329
329
  value?: string | boolean;
330
- status: "pass" | "fail";
330
+ status: "pass" | "fail" | "skipped";
331
331
  error?: string;
332
332
  };
333
333
  type RunArtifacts = {
@@ -544,13 +544,57 @@ declare function parseMacSelector(selector: string): MacQuery;
544
544
  /** Wrap a live {@link MacHelperClient} as a {@link SessionDriver}. */
545
545
  declare function createMacDriver(client: MacHelperClient, options?: MacDriverOptions): SessionDriver;
546
546
 
547
- declare function macdriverBuildInstructions(): string;
547
+ /** Basename of the helper executable, in the tarball and on disk. */
548
+ declare const HELPER_BINARY = "prowl-macdriver";
549
+ /** Pinned helper version. A CLI release always installs this exact version. */
550
+ declare const MACDRIVER_VERSION = "0.1.0";
551
+ /** GitHub `owner/repo` that hosts the helper releases. */
552
+ declare const MACDRIVER_REPO = "prowl-tools/prowl";
553
+ /** Code-signing identifier assigned to release builds. */
554
+ declare const MACDRIVER_SIGNING_IDENTIFIER = "tools.prowl.macdriver";
555
+ /** Developer ID Application common-name prefix expected on release builds. */
556
+ declare const MACDRIVER_SIGNING_AUTHORITY_PREFIX = "Developer ID Application: Genkei Labs";
557
+ /** Accepted helper release version token. */
558
+ declare const MACDRIVER_VERSION_PATTERN: RegExp;
559
+ /** Validate the helper release version before using it in URLs or paths. */
560
+ declare function validateMacdriverVersion(version: string): string;
561
+ /** Git tag for a helper version — the release the workflow builds. */
562
+ declare function macdriverReleaseTag(version?: string): string;
563
+ /** Release asset file name for the universal (arm64 + x86_64) binary zip. */
564
+ declare function macdriverAssetName(version?: string): string;
565
+ /** Release asset file name for the SHA-256 checksum sidecar. */
566
+ declare function macdriverChecksumName(version?: string): string;
567
+ /** Download URL for a named asset of the pinned release (follows redirects). */
568
+ declare function macdriverAssetUrl(assetName: string, version?: string): string;
569
+ /** Root of all user-level installs: `~/.prowl/macdriver`. */
570
+ declare function macdriverInstallRoot(homedir?: string): string;
571
+ /** Directory that holds a specific installed version. */
572
+ declare function macdriverVersionDir(version?: string, homedir?: string): string;
573
+ /** Absolute path to the installed helper binary for a version. */
574
+ declare function macdriverInstalledBinary(version?: string, homedir?: string): string;
575
+
548
576
  /**
549
- * Resolve the helper binary path. Order: `PROWL_MACDRIVER_BIN`, then the
550
- * release then debug build under `macdriver/.build/`. Throws with build
551
- * instructions when none is found.
577
+ * Guidance shown when the helper can't be resolved. Leads with the
578
+ * two-minute `prowl macdriver install` path; source build and the
579
+ * `PROWL_MACDRIVER_BIN` override are the contributor fallbacks.
552
580
  */
553
- declare function resolveHelperBinary(env?: NodeJS.ProcessEnv): string;
581
+ declare function macdriverBuildInstructions(): string;
582
+ type ResolveHelperOptions = {
583
+ /** Home directory for the user-level install lookup (defaults to `os.homedir()`). */
584
+ homedir?: string;
585
+ };
586
+ /**
587
+ * Resolve the helper binary path. Search order (documented in the README's
588
+ * macOS Target section):
589
+ * 1. `PROWL_MACDRIVER_BIN` env override (absolute path to the binary);
590
+ * 2. the user-level install of the pinned version at
591
+ * `~/.prowl/macdriver/<MACDRIVER_VERSION>/prowl-macdriver`
592
+ * (what `prowl macdriver install` writes);
593
+ * 3. the contributor's repo-local source build under `macdriver/.build/`
594
+ * (`release` then `debug`).
595
+ * Throws with install-first guidance when none is found.
596
+ */
597
+ declare function resolveHelperBinary(env?: NodeJS.ProcessEnv, options?: ResolveHelperOptions): string;
554
598
  /** Default per-request deadline for the helper transport. */
555
599
  declare const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
556
600
  type SpawnMacHelperOptions = {
@@ -594,6 +638,119 @@ declare function launchMacSession(options: LaunchMacOptions): Promise<MacSession
594
638
  /** Quit the target app (best effort) and shut the helper down. */
595
639
  declare function closeMacSession(session: MacSession): Promise<void>;
596
640
 
641
+ /** Minimal shape of the `fetch` responses this module consumes. */
642
+ interface FetchResponseLike {
643
+ ok: boolean;
644
+ status: number;
645
+ arrayBuffer(): Promise<ArrayBuffer>;
646
+ text(): Promise<string>;
647
+ }
648
+ /** A `fetch`-like function; the real global `fetch` satisfies it. */
649
+ type FetchLike$2 = (url: string, init?: {
650
+ redirect?: "follow" | "error" | "manual";
651
+ }) => Promise<FetchResponseLike>;
652
+ /** Extracts the binary out of a downloaded zip into `destDir`. */
653
+ type Extractor = (zipPath: string, destDir: string) => Promise<void>;
654
+ /** Lists the raw path entries in a downloaded zip before extraction. */
655
+ type ArchiveLister = (zipPath: string) => Promise<string[]>;
656
+ /** Verifies the code signature of an installed binary; throws if invalid. */
657
+ type SignatureVerifier = (binaryPath: string) => Promise<void>;
658
+ interface CommandResult {
659
+ stdout?: string | Buffer;
660
+ stderr?: string | Buffer;
661
+ }
662
+ type CommandRunner = (file: string, args: string[]) => Promise<CommandResult>;
663
+ /** Parse the hex digest out of a `shasum`-style `.sha256` file. */
664
+ declare function parseChecksumFile(text: string): string;
665
+ /** SHA-256 of a buffer, lowercase hex. */
666
+ declare function sha256Hex(bytes: Buffer): string;
667
+ /** Default archive lister: `zipinfo -1`, used before any extraction happens. */
668
+ declare const zipinfoArchiveLister: ArchiveLister;
669
+ /** Validate the zip member list before extraction. */
670
+ declare function validateMacdriverArchiveEntries(entries: string[]): void;
671
+ /** Default extractor: Apple's `ditto`, which preserves the code signature. */
672
+ declare const dittoExtractor: Extractor;
673
+ interface CodesignDetails {
674
+ identifier: string | null;
675
+ authorities: string[];
676
+ teamIdentifier: string | null;
677
+ }
678
+ declare function parseCodesignDetails(text: string): CodesignDetails;
679
+ declare function verifyMacdriverSignature(binaryPath: string, run?: CommandRunner): Promise<void>;
680
+ /**
681
+ * Default signature verifier: fail closed unless `codesign` verifies the
682
+ * signature, the identity matches the release contract, and Gatekeeper accepts
683
+ * the executable through `spctl --assess --type execute`.
684
+ */
685
+ declare const codesignVerifier: SignatureVerifier;
686
+ interface DownloadOptions {
687
+ version?: string;
688
+ fetchImpl?: FetchLike$2;
689
+ }
690
+ /**
691
+ * Download the pinned release's universal-binary zip and verify its SHA-256
692
+ * against the released `.sha256` sidecar. Returns the verified zip bytes.
693
+ * Throws a clear, actionable error on a 404 (no release cut yet) or a checksum
694
+ * mismatch.
695
+ */
696
+ declare function downloadAndVerify(options?: DownloadOptions): Promise<Buffer>;
697
+ interface InstallOptions {
698
+ version?: string;
699
+ force?: boolean;
700
+ homedir?: string;
701
+ fetchImpl?: FetchLike$2;
702
+ listArchiveEntries?: ArchiveLister;
703
+ extract?: Extractor;
704
+ verifySignature?: SignatureVerifier;
705
+ }
706
+ interface InstallResult {
707
+ version: string;
708
+ binaryPath: string;
709
+ alreadyInstalled: boolean;
710
+ }
711
+ /**
712
+ * Install the pinned helper to `~/.prowl/macdriver/<version>/prowl-macdriver`
713
+ * (0755). Returns `alreadyInstalled: true` (a no-op) when the binary is already
714
+ * present and `force` is not set. The downloaded archive is inspected before
715
+ * extraction, extracted into a temporary staging directory, and moved into place
716
+ * only after the staged helper passes file and signature verification.
717
+ */
718
+ declare function installMacdriver(options?: InstallOptions): Promise<InstallResult>;
719
+ interface InstalledVersion {
720
+ version: string;
721
+ binaryPath: string;
722
+ }
723
+ interface MacdriverStatus {
724
+ /** The binary Prowl would use now, and how it was found. */
725
+ resolved: {
726
+ path: string;
727
+ source: "env" | "user-install" | "source-build";
728
+ } | null;
729
+ /** The pinned version the CLI targets. */
730
+ pinnedVersion: string;
731
+ /** All versions found under `~/.prowl/macdriver/`. */
732
+ installed: InstalledVersion[];
733
+ /** Version string the resolved binary reports, or null if it couldn't run. */
734
+ probedVersion: string | null;
735
+ }
736
+ /** Probe a helper binary's `version` output; null if it can't be run/parsed. */
737
+ type VersionProbe = (binaryPath: string) => Promise<string | null>;
738
+ /** Default probe: run `<binary> version` and parse the `prowl-macdriver X.Y.Z` line. */
739
+ declare const runVersionProbe: VersionProbe;
740
+ interface StatusOptions {
741
+ env?: NodeJS.ProcessEnv;
742
+ homedir?: string;
743
+ probe?: VersionProbe;
744
+ }
745
+ /**
746
+ * Gather the state `prowl macdriver status` reports: the resolved binary and
747
+ * how it was found, every installed version, and the resolved binary's probed
748
+ * version. Pure aside from filesystem reads and the (injectable) probe.
749
+ */
750
+ declare function collectMacdriverStatus(options?: StatusOptions): Promise<MacdriverStatus>;
751
+ /** Static TCC-permission guidance printed after install / in status. */
752
+ declare function tccGuidance(): string;
753
+
597
754
  /** The selector kinds the native dialect understands. */
598
755
  type NativeSelectorKind = "id" | "label" | "text" | "role" | "focused";
599
756
  /**
@@ -2454,4 +2611,4 @@ type GenerateOptions = {
2454
2611
  };
2455
2612
  declare function generateHunt(options: GenerateOptions): Promise<string>;
2456
2613
 
2457
- export { ANDROID_INTERACTIVE_CLASSES, ANDROID_KEYCODES, ANDROID_MATCH_DIALECT, type AdbDevice, type AdbResult, type AdbRunner, type AdbSpawner, type AgentApks, type AgentConnector, type AnalysisResult, type AnalyzeAndroidOptions, type AnalyzeIosOptions, type AnalyzeMacOptions, type AndroidAgentClient, type AndroidAnalysisElement, type AndroidAnalysisResult, type AndroidDriverOptions, type AndroidLocator, type AndroidQuery, type AndroidSession, type AndroidTarget, type AndroidUiNode, type AndroidUiSource, type AssertScreenshotStep, type Assertion, type AssertionResult, type BrowserChannel, type BrowserEngine, type BugFailure, type BugLogSummary, type CiFailureCluster, type CiFlakyHunt, type CiHuntResult, type CiResult, type CiStatus, type Config, DEFAULT_AGENT_REQUEST_TIMEOUT_MS, DEFAULT_ANALYZE_TREE_DEPTH, DEFAULT_FLAKY_THRESHOLD, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SIMULATOR_LOCK_ROOT, DEFAULT_WDA_REQUEST_TIMEOUT_MS, type EvalScriptStep, type FailureCluster, type FetchLike$1 as FetchLike, type FlakyScore, type GenerateOptions, type HealResult, type HistoryEntry, type HistoryFile, type Hunt, INTERACTIVE_ROLES, IOS_INTERACTIVE_TYPES, IOS_MATCH_DIALECT, IOS_PRESS_KEYS, IOS_WINDOW_TYPE, type IfStep, type IosAgentClient, type IosAgentConnector, type IosAnalysisElement, type IosAnalysisResult, type IosAnalysisWindow, type IosDriverOptions, type IosLocator, type IosQuery, type IosSession, type IosTarget, type IosUiNode, type IosUiSource, type LaunchAndroidOptions, type LaunchIosOptions, type LaunchMacOptions, MACOS_MATCH_DIALECT, type MacAnalysisElement, type MacAnalysisResult, type MacAnalysisWindow, type MacAxNode, type MacDriverOptions, type MacHelperClient, type MacQuery, type MacSession, type MacosTarget, type MockRouteStep, NATIVE_ATTRIBUTE_MAP, type NativeMatchDialect, type NativeMatchOptions, type NativeNode, type NativePlatform, type NativeRankFields, type NativeSelector, type NativeSelectorKind, type PageElement, type PageForm, type PageLink, type RankFlakyOptions, type ReliabilityConfig, type RepeatStep, type ReserveSimulatorOptions, type ResolveWdaTestRunOptions, type RunArtifacts, type RunOptions, type RunResult, type RunScriptStep, type RunSuiteHooks, type RunSuiteOptions, type RunSuiteResult, type SelectorKindMapping, type SimDevice, type SimctlResult, type SimctlRunner, type SimulatorReservation, SpawnMacHelperClient, type SpawnMacHelperOptions, type Step, type StepResult, type Target, UIA2_REMOTE_PORT, Uia2HttpError, Uia2Transport, type Uia2TransportOptions, type UnmockRouteStep, type UpdateBacklogOptions, type Viewport, WDA_RUNNER_BUNDLE_ID, WDA_USE_PORT_ENV, WEB_ONLY_STEP_TYPES, WdaHttpError, type WdaTestRunPreparer, WdaTransport, type WdaTransportOptions, type WebTarget, type XmlElement, analyzeAndroidApp, analyzeIosApp, analyzeMacApp, analyzePage, androidAppAllowedIdentities, androidNodeToNative, androidQueryToLocator, assertAndroidAppAllowed, assertIosAppAllowed, assertStepsSupportedByTarget, assertTargetAppAllowed, bootedDevices, bootedSimulators, buildHealCandidates, closeAndroidSession, closeIosSession, closeMacSession, clusterFailures, computeFlakeScore, configSchema, createAndroidDriver, createIosDriver, createMacDriver, createUia2AgentClient, createUia2Session, createWdaAgentClient, createWdaSession, decodeXmlEntities, defaultAgentConnector, defaultIosAgentConnector, defaultWdaTestRunPreparer, escapePredicateArg, escapeUiSelectorArg, extractElementId, extractFailures, extractSelectorIntent, findFreePort, generateHunt, healSelector, huntSchema, injectUsePortIntoXctestrun, interpolateHunt, iosAppAllowedIdentities, iosNodeToNative, iosQueryToLocator, isAndroidInteractive, isIosInteractive, launchAndroidSession, launchIosSession, launchMacSession, listDevices, listHunts, listSimulators, loadConfig, loadHunt, loadHuntMeta, loadHuntTags, macdriverBuildInstructions, matchAndroidSelector, matchIosSelector, matchNativeTree, nodeMatchesSelector, normalizeXcuiClassName, parseAaptPackage, parseAdbDevices, parseAndroidHierarchy, parseAndroidSelector, parseForwardPort, parseIosHierarchy, parseIosSelector, parseMacSelector, parseNativeSelector, parseSimctlDevices, parseSnapshot, parseXcodeVersion, parseXml, qualifyResourceId, quoteSelectorValue, rankAndroidSelectors, rankFlaky, rankIosSelectors, rankMacSelectors, rankNativeSelectors, readHistory, readHuntHistory, readIosBundleIdentifier, reserveSimulatorUdid, resolveAgentApks, resolveHelperBinary, resolveWdaProject, resolveWdaTestRun, runHunt, runSuite, selectDeviceSerial, selectSimulatorUdid, shortIosType, stepSchema, unquoteSelectorValue, unwrapAndroidTextSelector, unwrapIosTextSelector, unwrapNativeTextSelector, updateBacklogFromSuite, waitForAgentReady, waitForWdaReady, wdaCacheDir, wdaTestRunArgs, webOnlyReason };
2614
+ export { ANDROID_INTERACTIVE_CLASSES, ANDROID_KEYCODES, ANDROID_MATCH_DIALECT, type AdbDevice, type AdbResult, type AdbRunner, type AdbSpawner, type AgentApks, type AgentConnector, type AnalysisResult, type AnalyzeAndroidOptions, type AnalyzeIosOptions, type AnalyzeMacOptions, type AndroidAgentClient, type AndroidAnalysisElement, type AndroidAnalysisResult, type AndroidDriverOptions, type AndroidLocator, type AndroidQuery, type AndroidSession, type AndroidTarget, type AndroidUiNode, type AndroidUiSource, type ArchiveLister, type AssertScreenshotStep, type Assertion, type AssertionResult, type BrowserChannel, type BrowserEngine, type BugFailure, type BugLogSummary, type CiFailureCluster, type CiFlakyHunt, type CiHuntResult, type CiResult, type CiStatus, type CodesignDetails, type CommandResult, type CommandRunner, type Config, DEFAULT_AGENT_REQUEST_TIMEOUT_MS, DEFAULT_ANALYZE_TREE_DEPTH, DEFAULT_FLAKY_THRESHOLD, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SIMULATOR_LOCK_ROOT, DEFAULT_WDA_REQUEST_TIMEOUT_MS, type DownloadOptions, type EvalScriptStep, type Extractor, type FailureCluster, type FetchLike$1 as FetchLike, type FlakyScore, type GenerateOptions, HELPER_BINARY, type HealResult, type HistoryEntry, type HistoryFile, type Hunt, INTERACTIVE_ROLES, IOS_INTERACTIVE_TYPES, IOS_MATCH_DIALECT, IOS_PRESS_KEYS, IOS_WINDOW_TYPE, type IfStep, type InstallOptions, type InstallResult, type InstalledVersion, type IosAgentClient, type IosAgentConnector, type IosAnalysisElement, type IosAnalysisResult, type IosAnalysisWindow, type IosDriverOptions, type IosLocator, type IosQuery, type IosSession, type IosTarget, type IosUiNode, type IosUiSource, type LaunchAndroidOptions, type LaunchIosOptions, type LaunchMacOptions, MACDRIVER_REPO, MACDRIVER_SIGNING_AUTHORITY_PREFIX, MACDRIVER_SIGNING_IDENTIFIER, MACDRIVER_VERSION, MACDRIVER_VERSION_PATTERN, MACOS_MATCH_DIALECT, type MacAnalysisElement, type MacAnalysisResult, type MacAnalysisWindow, type MacAxNode, type MacDriverOptions, type MacHelperClient, type MacQuery, type MacSession, type MacdriverStatus, type MacosTarget, type MockRouteStep, NATIVE_ATTRIBUTE_MAP, type NativeMatchDialect, type NativeMatchOptions, type NativeNode, type NativePlatform, type NativeRankFields, type NativeSelector, type NativeSelectorKind, type PageElement, type PageForm, type PageLink, type RankFlakyOptions, type ReliabilityConfig, type RepeatStep, type ReserveSimulatorOptions, type ResolveHelperOptions, type ResolveWdaTestRunOptions, type RunArtifacts, type RunOptions, type RunResult, type RunScriptStep, type RunSuiteHooks, type RunSuiteOptions, type RunSuiteResult, type SelectorKindMapping, type SignatureVerifier, type SimDevice, type SimctlResult, type SimctlRunner, type SimulatorReservation, SpawnMacHelperClient, type SpawnMacHelperOptions, type StatusOptions, type Step, type StepResult, type Target, UIA2_REMOTE_PORT, Uia2HttpError, Uia2Transport, type Uia2TransportOptions, type UnmockRouteStep, type UpdateBacklogOptions, type VersionProbe, type Viewport, WDA_RUNNER_BUNDLE_ID, WDA_USE_PORT_ENV, WEB_ONLY_STEP_TYPES, WdaHttpError, type WdaTestRunPreparer, WdaTransport, type WdaTransportOptions, type WebTarget, type XmlElement, analyzeAndroidApp, analyzeIosApp, analyzeMacApp, analyzePage, androidAppAllowedIdentities, androidNodeToNative, androidQueryToLocator, assertAndroidAppAllowed, assertIosAppAllowed, assertStepsSupportedByTarget, assertTargetAppAllowed, bootedDevices, bootedSimulators, buildHealCandidates, closeAndroidSession, closeIosSession, closeMacSession, clusterFailures, codesignVerifier, collectMacdriverStatus, computeFlakeScore, configSchema, createAndroidDriver, createIosDriver, createMacDriver, createUia2AgentClient, createUia2Session, createWdaAgentClient, createWdaSession, decodeXmlEntities, defaultAgentConnector, defaultIosAgentConnector, defaultWdaTestRunPreparer, dittoExtractor, downloadAndVerify, escapePredicateArg, escapeUiSelectorArg, extractElementId, extractFailures, extractSelectorIntent, findFreePort, generateHunt, healSelector, huntSchema, injectUsePortIntoXctestrun, installMacdriver, interpolateHunt, iosAppAllowedIdentities, iosNodeToNative, iosQueryToLocator, isAndroidInteractive, isIosInteractive, launchAndroidSession, launchIosSession, launchMacSession, listDevices, listHunts, listSimulators, loadConfig, loadHunt, loadHuntMeta, loadHuntTags, macdriverAssetName, macdriverAssetUrl, macdriverBuildInstructions, macdriverChecksumName, macdriverInstallRoot, macdriverInstalledBinary, macdriverReleaseTag, macdriverVersionDir, matchAndroidSelector, matchIosSelector, matchNativeTree, nodeMatchesSelector, normalizeXcuiClassName, parseAaptPackage, parseAdbDevices, parseAndroidHierarchy, parseAndroidSelector, parseChecksumFile, parseCodesignDetails, parseForwardPort, parseIosHierarchy, parseIosSelector, parseMacSelector, parseNativeSelector, parseSimctlDevices, parseSnapshot, parseXcodeVersion, parseXml, qualifyResourceId, quoteSelectorValue, rankAndroidSelectors, rankFlaky, rankIosSelectors, rankMacSelectors, rankNativeSelectors, readHistory, readHuntHistory, readIosBundleIdentifier, reserveSimulatorUdid, resolveAgentApks, resolveHelperBinary, resolveWdaProject, resolveWdaTestRun, runHunt, runSuite, runVersionProbe, selectDeviceSerial, selectSimulatorUdid, sha256Hex, shortIosType, stepSchema, tccGuidance, unquoteSelectorValue, unwrapAndroidTextSelector, unwrapIosTextSelector, unwrapNativeTextSelector, updateBacklogFromSuite, validateMacdriverArchiveEntries, validateMacdriverVersion, verifyMacdriverSignature, waitForAgentReady, waitForWdaReady, wdaCacheDir, wdaTestRunArgs, webOnlyReason, zipinfoArchiveLister };
package/dist/lib.d.ts CHANGED
@@ -327,7 +327,7 @@ type StepResult = {
327
327
  type AssertionResult = {
328
328
  type: string;
329
329
  value?: string | boolean;
330
- status: "pass" | "fail";
330
+ status: "pass" | "fail" | "skipped";
331
331
  error?: string;
332
332
  };
333
333
  type RunArtifacts = {
@@ -544,13 +544,57 @@ declare function parseMacSelector(selector: string): MacQuery;
544
544
  /** Wrap a live {@link MacHelperClient} as a {@link SessionDriver}. */
545
545
  declare function createMacDriver(client: MacHelperClient, options?: MacDriverOptions): SessionDriver;
546
546
 
547
- declare function macdriverBuildInstructions(): string;
547
+ /** Basename of the helper executable, in the tarball and on disk. */
548
+ declare const HELPER_BINARY = "prowl-macdriver";
549
+ /** Pinned helper version. A CLI release always installs this exact version. */
550
+ declare const MACDRIVER_VERSION = "0.1.0";
551
+ /** GitHub `owner/repo` that hosts the helper releases. */
552
+ declare const MACDRIVER_REPO = "prowl-tools/prowl";
553
+ /** Code-signing identifier assigned to release builds. */
554
+ declare const MACDRIVER_SIGNING_IDENTIFIER = "tools.prowl.macdriver";
555
+ /** Developer ID Application common-name prefix expected on release builds. */
556
+ declare const MACDRIVER_SIGNING_AUTHORITY_PREFIX = "Developer ID Application: Genkei Labs";
557
+ /** Accepted helper release version token. */
558
+ declare const MACDRIVER_VERSION_PATTERN: RegExp;
559
+ /** Validate the helper release version before using it in URLs or paths. */
560
+ declare function validateMacdriverVersion(version: string): string;
561
+ /** Git tag for a helper version — the release the workflow builds. */
562
+ declare function macdriverReleaseTag(version?: string): string;
563
+ /** Release asset file name for the universal (arm64 + x86_64) binary zip. */
564
+ declare function macdriverAssetName(version?: string): string;
565
+ /** Release asset file name for the SHA-256 checksum sidecar. */
566
+ declare function macdriverChecksumName(version?: string): string;
567
+ /** Download URL for a named asset of the pinned release (follows redirects). */
568
+ declare function macdriverAssetUrl(assetName: string, version?: string): string;
569
+ /** Root of all user-level installs: `~/.prowl/macdriver`. */
570
+ declare function macdriverInstallRoot(homedir?: string): string;
571
+ /** Directory that holds a specific installed version. */
572
+ declare function macdriverVersionDir(version?: string, homedir?: string): string;
573
+ /** Absolute path to the installed helper binary for a version. */
574
+ declare function macdriverInstalledBinary(version?: string, homedir?: string): string;
575
+
548
576
  /**
549
- * Resolve the helper binary path. Order: `PROWL_MACDRIVER_BIN`, then the
550
- * release then debug build under `macdriver/.build/`. Throws with build
551
- * instructions when none is found.
577
+ * Guidance shown when the helper can't be resolved. Leads with the
578
+ * two-minute `prowl macdriver install` path; source build and the
579
+ * `PROWL_MACDRIVER_BIN` override are the contributor fallbacks.
552
580
  */
553
- declare function resolveHelperBinary(env?: NodeJS.ProcessEnv): string;
581
+ declare function macdriverBuildInstructions(): string;
582
+ type ResolveHelperOptions = {
583
+ /** Home directory for the user-level install lookup (defaults to `os.homedir()`). */
584
+ homedir?: string;
585
+ };
586
+ /**
587
+ * Resolve the helper binary path. Search order (documented in the README's
588
+ * macOS Target section):
589
+ * 1. `PROWL_MACDRIVER_BIN` env override (absolute path to the binary);
590
+ * 2. the user-level install of the pinned version at
591
+ * `~/.prowl/macdriver/<MACDRIVER_VERSION>/prowl-macdriver`
592
+ * (what `prowl macdriver install` writes);
593
+ * 3. the contributor's repo-local source build under `macdriver/.build/`
594
+ * (`release` then `debug`).
595
+ * Throws with install-first guidance when none is found.
596
+ */
597
+ declare function resolveHelperBinary(env?: NodeJS.ProcessEnv, options?: ResolveHelperOptions): string;
554
598
  /** Default per-request deadline for the helper transport. */
555
599
  declare const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
556
600
  type SpawnMacHelperOptions = {
@@ -594,6 +638,119 @@ declare function launchMacSession(options: LaunchMacOptions): Promise<MacSession
594
638
  /** Quit the target app (best effort) and shut the helper down. */
595
639
  declare function closeMacSession(session: MacSession): Promise<void>;
596
640
 
641
+ /** Minimal shape of the `fetch` responses this module consumes. */
642
+ interface FetchResponseLike {
643
+ ok: boolean;
644
+ status: number;
645
+ arrayBuffer(): Promise<ArrayBuffer>;
646
+ text(): Promise<string>;
647
+ }
648
+ /** A `fetch`-like function; the real global `fetch` satisfies it. */
649
+ type FetchLike$2 = (url: string, init?: {
650
+ redirect?: "follow" | "error" | "manual";
651
+ }) => Promise<FetchResponseLike>;
652
+ /** Extracts the binary out of a downloaded zip into `destDir`. */
653
+ type Extractor = (zipPath: string, destDir: string) => Promise<void>;
654
+ /** Lists the raw path entries in a downloaded zip before extraction. */
655
+ type ArchiveLister = (zipPath: string) => Promise<string[]>;
656
+ /** Verifies the code signature of an installed binary; throws if invalid. */
657
+ type SignatureVerifier = (binaryPath: string) => Promise<void>;
658
+ interface CommandResult {
659
+ stdout?: string | Buffer;
660
+ stderr?: string | Buffer;
661
+ }
662
+ type CommandRunner = (file: string, args: string[]) => Promise<CommandResult>;
663
+ /** Parse the hex digest out of a `shasum`-style `.sha256` file. */
664
+ declare function parseChecksumFile(text: string): string;
665
+ /** SHA-256 of a buffer, lowercase hex. */
666
+ declare function sha256Hex(bytes: Buffer): string;
667
+ /** Default archive lister: `zipinfo -1`, used before any extraction happens. */
668
+ declare const zipinfoArchiveLister: ArchiveLister;
669
+ /** Validate the zip member list before extraction. */
670
+ declare function validateMacdriverArchiveEntries(entries: string[]): void;
671
+ /** Default extractor: Apple's `ditto`, which preserves the code signature. */
672
+ declare const dittoExtractor: Extractor;
673
+ interface CodesignDetails {
674
+ identifier: string | null;
675
+ authorities: string[];
676
+ teamIdentifier: string | null;
677
+ }
678
+ declare function parseCodesignDetails(text: string): CodesignDetails;
679
+ declare function verifyMacdriverSignature(binaryPath: string, run?: CommandRunner): Promise<void>;
680
+ /**
681
+ * Default signature verifier: fail closed unless `codesign` verifies the
682
+ * signature, the identity matches the release contract, and Gatekeeper accepts
683
+ * the executable through `spctl --assess --type execute`.
684
+ */
685
+ declare const codesignVerifier: SignatureVerifier;
686
+ interface DownloadOptions {
687
+ version?: string;
688
+ fetchImpl?: FetchLike$2;
689
+ }
690
+ /**
691
+ * Download the pinned release's universal-binary zip and verify its SHA-256
692
+ * against the released `.sha256` sidecar. Returns the verified zip bytes.
693
+ * Throws a clear, actionable error on a 404 (no release cut yet) or a checksum
694
+ * mismatch.
695
+ */
696
+ declare function downloadAndVerify(options?: DownloadOptions): Promise<Buffer>;
697
+ interface InstallOptions {
698
+ version?: string;
699
+ force?: boolean;
700
+ homedir?: string;
701
+ fetchImpl?: FetchLike$2;
702
+ listArchiveEntries?: ArchiveLister;
703
+ extract?: Extractor;
704
+ verifySignature?: SignatureVerifier;
705
+ }
706
+ interface InstallResult {
707
+ version: string;
708
+ binaryPath: string;
709
+ alreadyInstalled: boolean;
710
+ }
711
+ /**
712
+ * Install the pinned helper to `~/.prowl/macdriver/<version>/prowl-macdriver`
713
+ * (0755). Returns `alreadyInstalled: true` (a no-op) when the binary is already
714
+ * present and `force` is not set. The downloaded archive is inspected before
715
+ * extraction, extracted into a temporary staging directory, and moved into place
716
+ * only after the staged helper passes file and signature verification.
717
+ */
718
+ declare function installMacdriver(options?: InstallOptions): Promise<InstallResult>;
719
+ interface InstalledVersion {
720
+ version: string;
721
+ binaryPath: string;
722
+ }
723
+ interface MacdriverStatus {
724
+ /** The binary Prowl would use now, and how it was found. */
725
+ resolved: {
726
+ path: string;
727
+ source: "env" | "user-install" | "source-build";
728
+ } | null;
729
+ /** The pinned version the CLI targets. */
730
+ pinnedVersion: string;
731
+ /** All versions found under `~/.prowl/macdriver/`. */
732
+ installed: InstalledVersion[];
733
+ /** Version string the resolved binary reports, or null if it couldn't run. */
734
+ probedVersion: string | null;
735
+ }
736
+ /** Probe a helper binary's `version` output; null if it can't be run/parsed. */
737
+ type VersionProbe = (binaryPath: string) => Promise<string | null>;
738
+ /** Default probe: run `<binary> version` and parse the `prowl-macdriver X.Y.Z` line. */
739
+ declare const runVersionProbe: VersionProbe;
740
+ interface StatusOptions {
741
+ env?: NodeJS.ProcessEnv;
742
+ homedir?: string;
743
+ probe?: VersionProbe;
744
+ }
745
+ /**
746
+ * Gather the state `prowl macdriver status` reports: the resolved binary and
747
+ * how it was found, every installed version, and the resolved binary's probed
748
+ * version. Pure aside from filesystem reads and the (injectable) probe.
749
+ */
750
+ declare function collectMacdriverStatus(options?: StatusOptions): Promise<MacdriverStatus>;
751
+ /** Static TCC-permission guidance printed after install / in status. */
752
+ declare function tccGuidance(): string;
753
+
597
754
  /** The selector kinds the native dialect understands. */
598
755
  type NativeSelectorKind = "id" | "label" | "text" | "role" | "focused";
599
756
  /**
@@ -2454,4 +2611,4 @@ type GenerateOptions = {
2454
2611
  };
2455
2612
  declare function generateHunt(options: GenerateOptions): Promise<string>;
2456
2613
 
2457
- export { ANDROID_INTERACTIVE_CLASSES, ANDROID_KEYCODES, ANDROID_MATCH_DIALECT, type AdbDevice, type AdbResult, type AdbRunner, type AdbSpawner, type AgentApks, type AgentConnector, type AnalysisResult, type AnalyzeAndroidOptions, type AnalyzeIosOptions, type AnalyzeMacOptions, type AndroidAgentClient, type AndroidAnalysisElement, type AndroidAnalysisResult, type AndroidDriverOptions, type AndroidLocator, type AndroidQuery, type AndroidSession, type AndroidTarget, type AndroidUiNode, type AndroidUiSource, type AssertScreenshotStep, type Assertion, type AssertionResult, type BrowserChannel, type BrowserEngine, type BugFailure, type BugLogSummary, type CiFailureCluster, type CiFlakyHunt, type CiHuntResult, type CiResult, type CiStatus, type Config, DEFAULT_AGENT_REQUEST_TIMEOUT_MS, DEFAULT_ANALYZE_TREE_DEPTH, DEFAULT_FLAKY_THRESHOLD, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SIMULATOR_LOCK_ROOT, DEFAULT_WDA_REQUEST_TIMEOUT_MS, type EvalScriptStep, type FailureCluster, type FetchLike$1 as FetchLike, type FlakyScore, type GenerateOptions, type HealResult, type HistoryEntry, type HistoryFile, type Hunt, INTERACTIVE_ROLES, IOS_INTERACTIVE_TYPES, IOS_MATCH_DIALECT, IOS_PRESS_KEYS, IOS_WINDOW_TYPE, type IfStep, type IosAgentClient, type IosAgentConnector, type IosAnalysisElement, type IosAnalysisResult, type IosAnalysisWindow, type IosDriverOptions, type IosLocator, type IosQuery, type IosSession, type IosTarget, type IosUiNode, type IosUiSource, type LaunchAndroidOptions, type LaunchIosOptions, type LaunchMacOptions, MACOS_MATCH_DIALECT, type MacAnalysisElement, type MacAnalysisResult, type MacAnalysisWindow, type MacAxNode, type MacDriverOptions, type MacHelperClient, type MacQuery, type MacSession, type MacosTarget, type MockRouteStep, NATIVE_ATTRIBUTE_MAP, type NativeMatchDialect, type NativeMatchOptions, type NativeNode, type NativePlatform, type NativeRankFields, type NativeSelector, type NativeSelectorKind, type PageElement, type PageForm, type PageLink, type RankFlakyOptions, type ReliabilityConfig, type RepeatStep, type ReserveSimulatorOptions, type ResolveWdaTestRunOptions, type RunArtifacts, type RunOptions, type RunResult, type RunScriptStep, type RunSuiteHooks, type RunSuiteOptions, type RunSuiteResult, type SelectorKindMapping, type SimDevice, type SimctlResult, type SimctlRunner, type SimulatorReservation, SpawnMacHelperClient, type SpawnMacHelperOptions, type Step, type StepResult, type Target, UIA2_REMOTE_PORT, Uia2HttpError, Uia2Transport, type Uia2TransportOptions, type UnmockRouteStep, type UpdateBacklogOptions, type Viewport, WDA_RUNNER_BUNDLE_ID, WDA_USE_PORT_ENV, WEB_ONLY_STEP_TYPES, WdaHttpError, type WdaTestRunPreparer, WdaTransport, type WdaTransportOptions, type WebTarget, type XmlElement, analyzeAndroidApp, analyzeIosApp, analyzeMacApp, analyzePage, androidAppAllowedIdentities, androidNodeToNative, androidQueryToLocator, assertAndroidAppAllowed, assertIosAppAllowed, assertStepsSupportedByTarget, assertTargetAppAllowed, bootedDevices, bootedSimulators, buildHealCandidates, closeAndroidSession, closeIosSession, closeMacSession, clusterFailures, computeFlakeScore, configSchema, createAndroidDriver, createIosDriver, createMacDriver, createUia2AgentClient, createUia2Session, createWdaAgentClient, createWdaSession, decodeXmlEntities, defaultAgentConnector, defaultIosAgentConnector, defaultWdaTestRunPreparer, escapePredicateArg, escapeUiSelectorArg, extractElementId, extractFailures, extractSelectorIntent, findFreePort, generateHunt, healSelector, huntSchema, injectUsePortIntoXctestrun, interpolateHunt, iosAppAllowedIdentities, iosNodeToNative, iosQueryToLocator, isAndroidInteractive, isIosInteractive, launchAndroidSession, launchIosSession, launchMacSession, listDevices, listHunts, listSimulators, loadConfig, loadHunt, loadHuntMeta, loadHuntTags, macdriverBuildInstructions, matchAndroidSelector, matchIosSelector, matchNativeTree, nodeMatchesSelector, normalizeXcuiClassName, parseAaptPackage, parseAdbDevices, parseAndroidHierarchy, parseAndroidSelector, parseForwardPort, parseIosHierarchy, parseIosSelector, parseMacSelector, parseNativeSelector, parseSimctlDevices, parseSnapshot, parseXcodeVersion, parseXml, qualifyResourceId, quoteSelectorValue, rankAndroidSelectors, rankFlaky, rankIosSelectors, rankMacSelectors, rankNativeSelectors, readHistory, readHuntHistory, readIosBundleIdentifier, reserveSimulatorUdid, resolveAgentApks, resolveHelperBinary, resolveWdaProject, resolveWdaTestRun, runHunt, runSuite, selectDeviceSerial, selectSimulatorUdid, shortIosType, stepSchema, unquoteSelectorValue, unwrapAndroidTextSelector, unwrapIosTextSelector, unwrapNativeTextSelector, updateBacklogFromSuite, waitForAgentReady, waitForWdaReady, wdaCacheDir, wdaTestRunArgs, webOnlyReason };
2614
+ export { ANDROID_INTERACTIVE_CLASSES, ANDROID_KEYCODES, ANDROID_MATCH_DIALECT, type AdbDevice, type AdbResult, type AdbRunner, type AdbSpawner, type AgentApks, type AgentConnector, type AnalysisResult, type AnalyzeAndroidOptions, type AnalyzeIosOptions, type AnalyzeMacOptions, type AndroidAgentClient, type AndroidAnalysisElement, type AndroidAnalysisResult, type AndroidDriverOptions, type AndroidLocator, type AndroidQuery, type AndroidSession, type AndroidTarget, type AndroidUiNode, type AndroidUiSource, type ArchiveLister, type AssertScreenshotStep, type Assertion, type AssertionResult, type BrowserChannel, type BrowserEngine, type BugFailure, type BugLogSummary, type CiFailureCluster, type CiFlakyHunt, type CiHuntResult, type CiResult, type CiStatus, type CodesignDetails, type CommandResult, type CommandRunner, type Config, DEFAULT_AGENT_REQUEST_TIMEOUT_MS, DEFAULT_ANALYZE_TREE_DEPTH, DEFAULT_FLAKY_THRESHOLD, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_SIMULATOR_LOCK_ROOT, DEFAULT_WDA_REQUEST_TIMEOUT_MS, type DownloadOptions, type EvalScriptStep, type Extractor, type FailureCluster, type FetchLike$1 as FetchLike, type FlakyScore, type GenerateOptions, HELPER_BINARY, type HealResult, type HistoryEntry, type HistoryFile, type Hunt, INTERACTIVE_ROLES, IOS_INTERACTIVE_TYPES, IOS_MATCH_DIALECT, IOS_PRESS_KEYS, IOS_WINDOW_TYPE, type IfStep, type InstallOptions, type InstallResult, type InstalledVersion, type IosAgentClient, type IosAgentConnector, type IosAnalysisElement, type IosAnalysisResult, type IosAnalysisWindow, type IosDriverOptions, type IosLocator, type IosQuery, type IosSession, type IosTarget, type IosUiNode, type IosUiSource, type LaunchAndroidOptions, type LaunchIosOptions, type LaunchMacOptions, MACDRIVER_REPO, MACDRIVER_SIGNING_AUTHORITY_PREFIX, MACDRIVER_SIGNING_IDENTIFIER, MACDRIVER_VERSION, MACDRIVER_VERSION_PATTERN, MACOS_MATCH_DIALECT, type MacAnalysisElement, type MacAnalysisResult, type MacAnalysisWindow, type MacAxNode, type MacDriverOptions, type MacHelperClient, type MacQuery, type MacSession, type MacdriverStatus, type MacosTarget, type MockRouteStep, NATIVE_ATTRIBUTE_MAP, type NativeMatchDialect, type NativeMatchOptions, type NativeNode, type NativePlatform, type NativeRankFields, type NativeSelector, type NativeSelectorKind, type PageElement, type PageForm, type PageLink, type RankFlakyOptions, type ReliabilityConfig, type RepeatStep, type ReserveSimulatorOptions, type ResolveHelperOptions, type ResolveWdaTestRunOptions, type RunArtifacts, type RunOptions, type RunResult, type RunScriptStep, type RunSuiteHooks, type RunSuiteOptions, type RunSuiteResult, type SelectorKindMapping, type SignatureVerifier, type SimDevice, type SimctlResult, type SimctlRunner, type SimulatorReservation, SpawnMacHelperClient, type SpawnMacHelperOptions, type StatusOptions, type Step, type StepResult, type Target, UIA2_REMOTE_PORT, Uia2HttpError, Uia2Transport, type Uia2TransportOptions, type UnmockRouteStep, type UpdateBacklogOptions, type VersionProbe, type Viewport, WDA_RUNNER_BUNDLE_ID, WDA_USE_PORT_ENV, WEB_ONLY_STEP_TYPES, WdaHttpError, type WdaTestRunPreparer, WdaTransport, type WdaTransportOptions, type WebTarget, type XmlElement, analyzeAndroidApp, analyzeIosApp, analyzeMacApp, analyzePage, androidAppAllowedIdentities, androidNodeToNative, androidQueryToLocator, assertAndroidAppAllowed, assertIosAppAllowed, assertStepsSupportedByTarget, assertTargetAppAllowed, bootedDevices, bootedSimulators, buildHealCandidates, closeAndroidSession, closeIosSession, closeMacSession, clusterFailures, codesignVerifier, collectMacdriverStatus, computeFlakeScore, configSchema, createAndroidDriver, createIosDriver, createMacDriver, createUia2AgentClient, createUia2Session, createWdaAgentClient, createWdaSession, decodeXmlEntities, defaultAgentConnector, defaultIosAgentConnector, defaultWdaTestRunPreparer, dittoExtractor, downloadAndVerify, escapePredicateArg, escapeUiSelectorArg, extractElementId, extractFailures, extractSelectorIntent, findFreePort, generateHunt, healSelector, huntSchema, injectUsePortIntoXctestrun, installMacdriver, interpolateHunt, iosAppAllowedIdentities, iosNodeToNative, iosQueryToLocator, isAndroidInteractive, isIosInteractive, launchAndroidSession, launchIosSession, launchMacSession, listDevices, listHunts, listSimulators, loadConfig, loadHunt, loadHuntMeta, loadHuntTags, macdriverAssetName, macdriverAssetUrl, macdriverBuildInstructions, macdriverChecksumName, macdriverInstallRoot, macdriverInstalledBinary, macdriverReleaseTag, macdriverVersionDir, matchAndroidSelector, matchIosSelector, matchNativeTree, nodeMatchesSelector, normalizeXcuiClassName, parseAaptPackage, parseAdbDevices, parseAndroidHierarchy, parseAndroidSelector, parseChecksumFile, parseCodesignDetails, parseForwardPort, parseIosHierarchy, parseIosSelector, parseMacSelector, parseNativeSelector, parseSimctlDevices, parseSnapshot, parseXcodeVersion, parseXml, qualifyResourceId, quoteSelectorValue, rankAndroidSelectors, rankFlaky, rankIosSelectors, rankMacSelectors, rankNativeSelectors, readHistory, readHuntHistory, readIosBundleIdentifier, reserveSimulatorUdid, resolveAgentApks, resolveHelperBinary, resolveWdaProject, resolveWdaTestRun, runHunt, runSuite, runVersionProbe, selectDeviceSerial, selectSimulatorUdid, sha256Hex, shortIosType, stepSchema, tccGuidance, unquoteSelectorValue, unwrapAndroidTextSelector, unwrapIosTextSelector, unwrapNativeTextSelector, updateBacklogFromSuite, validateMacdriverArchiveEntries, validateMacdriverVersion, verifyMacdriverSignature, waitForAgentReady, waitForWdaReady, wdaCacheDir, wdaTestRunArgs, webOnlyReason, zipinfoArchiveLister };
package/dist/lib.js CHANGED
@@ -8,11 +8,17 @@ import {
8
8
  DEFAULT_REQUEST_TIMEOUT_MS,
9
9
  DEFAULT_SIMULATOR_LOCK_ROOT,
10
10
  DEFAULT_WDA_REQUEST_TIMEOUT_MS,
11
+ HELPER_BINARY,
11
12
  INTERACTIVE_ROLES,
12
13
  IOS_INTERACTIVE_TYPES,
13
14
  IOS_MATCH_DIALECT,
14
15
  IOS_PRESS_KEYS,
15
16
  IOS_WINDOW_TYPE,
17
+ MACDRIVER_REPO,
18
+ MACDRIVER_SIGNING_AUTHORITY_PREFIX,
19
+ MACDRIVER_SIGNING_IDENTIFIER,
20
+ MACDRIVER_VERSION,
21
+ MACDRIVER_VERSION_PATTERN,
16
22
  MACOS_MATCH_DIALECT,
17
23
  NATIVE_ATTRIBUTE_MAP,
18
24
  SpawnMacHelperClient,
@@ -42,6 +48,8 @@ import {
42
48
  closeIosSession,
43
49
  closeMacSession,
44
50
  clusterFailures,
51
+ codesignVerifier,
52
+ collectMacdriverStatus,
45
53
  computeFlakeScore,
46
54
  createAndroidDriver,
47
55
  createIosDriver,
@@ -54,6 +62,8 @@ import {
54
62
  defaultAgentConnector,
55
63
  defaultIosAgentConnector,
56
64
  defaultWdaTestRunPreparer,
65
+ dittoExtractor,
66
+ downloadAndVerify,
57
67
  escapePredicateArg,
58
68
  escapeUiSelectorArg,
59
69
  extractElementId,
@@ -63,6 +73,7 @@ import {
63
73
  generateHunt,
64
74
  healSelector,
65
75
  injectUsePortIntoXctestrun,
76
+ installMacdriver,
66
77
  interpolateHunt,
67
78
  iosAppAllowedIdentities,
68
79
  iosNodeToNative,
@@ -74,7 +85,14 @@ import {
74
85
  launchMacSession,
75
86
  listDevices,
76
87
  listSimulators,
88
+ macdriverAssetName,
89
+ macdriverAssetUrl,
77
90
  macdriverBuildInstructions,
91
+ macdriverChecksumName,
92
+ macdriverInstallRoot,
93
+ macdriverInstalledBinary,
94
+ macdriverReleaseTag,
95
+ macdriverVersionDir,
78
96
  matchAndroidSelector,
79
97
  matchIosSelector,
80
98
  matchNativeTree,
@@ -84,6 +102,8 @@ import {
84
102
  parseAdbDevices,
85
103
  parseAndroidHierarchy,
86
104
  parseAndroidSelector,
105
+ parseChecksumFile,
106
+ parseCodesignDetails,
87
107
  parseForwardPort,
88
108
  parseIosHierarchy,
89
109
  parseIosSelector,
@@ -110,20 +130,27 @@ import {
110
130
  resolveWdaTestRun,
111
131
  runHunt,
112
132
  runSuite,
133
+ runVersionProbe,
113
134
  selectDeviceSerial,
114
135
  selectSimulatorUdid,
136
+ sha256Hex,
115
137
  shortIosType,
138
+ tccGuidance,
116
139
  unquoteSelectorValue,
117
140
  unwrapAndroidTextSelector,
118
141
  unwrapIosTextSelector,
119
142
  unwrapNativeTextSelector,
120
143
  updateBacklogFromSuite,
144
+ validateMacdriverArchiveEntries,
145
+ validateMacdriverVersion,
146
+ verifyMacdriverSignature,
121
147
  waitForAgentReady,
122
148
  waitForWdaReady,
123
149
  wdaCacheDir,
124
150
  wdaTestRunArgs,
125
- webOnlyReason
126
- } from "./chunk-5KQR3IR3.js";
151
+ webOnlyReason,
152
+ zipinfoArchiveLister
153
+ } from "./chunk-R7NUH44M.js";
127
154
  import {
128
155
  configSchema,
129
156
  huntSchema,
@@ -133,7 +160,7 @@ import {
133
160
  loadHuntMeta,
134
161
  loadHuntTags,
135
162
  stepSchema
136
- } from "./chunk-WHAMB4TY.js";
163
+ } from "./chunk-O3OUTZ2P.js";
137
164
  export {
138
165
  ANDROID_INTERACTIVE_CLASSES,
139
166
  ANDROID_KEYCODES,
@@ -144,11 +171,17 @@ export {
144
171
  DEFAULT_REQUEST_TIMEOUT_MS,
145
172
  DEFAULT_SIMULATOR_LOCK_ROOT,
146
173
  DEFAULT_WDA_REQUEST_TIMEOUT_MS,
174
+ HELPER_BINARY,
147
175
  INTERACTIVE_ROLES,
148
176
  IOS_INTERACTIVE_TYPES,
149
177
  IOS_MATCH_DIALECT,
150
178
  IOS_PRESS_KEYS,
151
179
  IOS_WINDOW_TYPE,
180
+ MACDRIVER_REPO,
181
+ MACDRIVER_SIGNING_AUTHORITY_PREFIX,
182
+ MACDRIVER_SIGNING_IDENTIFIER,
183
+ MACDRIVER_VERSION,
184
+ MACDRIVER_VERSION_PATTERN,
152
185
  MACOS_MATCH_DIALECT,
153
186
  NATIVE_ATTRIBUTE_MAP,
154
187
  SpawnMacHelperClient,
@@ -178,6 +211,8 @@ export {
178
211
  closeIosSession,
179
212
  closeMacSession,
180
213
  clusterFailures,
214
+ codesignVerifier,
215
+ collectMacdriverStatus,
181
216
  computeFlakeScore,
182
217
  configSchema,
183
218
  createAndroidDriver,
@@ -191,6 +226,8 @@ export {
191
226
  defaultAgentConnector,
192
227
  defaultIosAgentConnector,
193
228
  defaultWdaTestRunPreparer,
229
+ dittoExtractor,
230
+ downloadAndVerify,
194
231
  escapePredicateArg,
195
232
  escapeUiSelectorArg,
196
233
  extractElementId,
@@ -201,6 +238,7 @@ export {
201
238
  healSelector,
202
239
  huntSchema,
203
240
  injectUsePortIntoXctestrun,
241
+ installMacdriver,
204
242
  interpolateHunt,
205
243
  iosAppAllowedIdentities,
206
244
  iosNodeToNative,
@@ -217,7 +255,14 @@ export {
217
255
  loadHunt,
218
256
  loadHuntMeta,
219
257
  loadHuntTags,
258
+ macdriverAssetName,
259
+ macdriverAssetUrl,
220
260
  macdriverBuildInstructions,
261
+ macdriverChecksumName,
262
+ macdriverInstallRoot,
263
+ macdriverInstalledBinary,
264
+ macdriverReleaseTag,
265
+ macdriverVersionDir,
221
266
  matchAndroidSelector,
222
267
  matchIosSelector,
223
268
  matchNativeTree,
@@ -227,6 +272,8 @@ export {
227
272
  parseAdbDevices,
228
273
  parseAndroidHierarchy,
229
274
  parseAndroidSelector,
275
+ parseChecksumFile,
276
+ parseCodesignDetails,
230
277
  parseForwardPort,
231
278
  parseIosHierarchy,
232
279
  parseIosSelector,
@@ -253,19 +300,26 @@ export {
253
300
  resolveWdaTestRun,
254
301
  runHunt,
255
302
  runSuite,
303
+ runVersionProbe,
256
304
  selectDeviceSerial,
257
305
  selectSimulatorUdid,
306
+ sha256Hex,
258
307
  shortIosType,
259
308
  stepSchema,
309
+ tccGuidance,
260
310
  unquoteSelectorValue,
261
311
  unwrapAndroidTextSelector,
262
312
  unwrapIosTextSelector,
263
313
  unwrapNativeTextSelector,
264
314
  updateBacklogFromSuite,
315
+ validateMacdriverArchiveEntries,
316
+ validateMacdriverVersion,
317
+ verifyMacdriverSignature,
265
318
  waitForAgentReady,
266
319
  waitForWdaReady,
267
320
  wdaCacheDir,
268
321
  wdaTestRunArgs,
269
- webOnlyReason
322
+ webOnlyReason,
323
+ zipinfoArchiveLister
270
324
  };
271
325
  //# sourceMappingURL=lib.js.map
@@ -10,7 +10,7 @@ import {
10
10
  loadHuntTags,
11
11
  resolveViewport,
12
12
  warnLegacyConfigDir
13
- } from "./chunk-WHAMB4TY.js";
13
+ } from "./chunk-O3OUTZ2P.js";
14
14
  export {
15
15
  CONFIG_DIR,
16
16
  LEGACY_CONFIG_DIR,
@@ -24,4 +24,4 @@ export {
24
24
  resolveViewport,
25
25
  warnLegacyConfigDir
26
26
  };
27
- //# sourceMappingURL=loader-PBBYV3U7.js.map
27
+ //# sourceMappingURL=loader-X37URHUV.js.map
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # Run it: prowl run hello
7
7
  #
8
- # Browse more hunt templates at https://hub.prowl.tools
8
+ # See .prowl/hunts/login-flow.yml for a fuller example (auth, secrets, assertions).
9
9
 
10
10
  name: hello
11
11
  description: Verify the target app loads successfully