agent-device 0.7.21 → 0.7.22
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/README.md +42 -0
- package/dist/src/224.js +2 -0
- package/dist/src/274.js +1 -0
- package/dist/src/331.js +3 -0
- package/dist/src/bin.d.ts +1 -0
- package/dist/src/bin.js +63 -59
- package/dist/src/cli-client-commands.d.ts +8 -0
- package/dist/src/cli.d.ts +6 -0
- package/dist/src/client-normalizers.d.ts +21 -0
- package/dist/src/client-types.d.ts +265 -0
- package/dist/src/client.d.ts +5 -0
- package/dist/src/core/app-events.d.ts +8 -0
- package/dist/src/core/batch.d.ts +17 -0
- package/dist/src/core/capabilities.d.ts +3 -0
- package/dist/src/core/dispatch-payload.d.ts +1 -0
- package/dist/src/core/dispatch-resolve.d.ts +28 -0
- package/dist/src/core/dispatch-series.d.ts +7 -0
- package/dist/src/core/dispatch.d.ts +34 -0
- package/dist/src/core/open-target.d.ts +4 -0
- package/dist/src/core/settings-contract.d.ts +8 -0
- package/dist/src/daemon/action-utils.d.ts +3 -0
- package/dist/src/daemon/app-log-android.d.ts +4 -0
- package/dist/src/daemon/app-log-ios.d.ts +6 -0
- package/dist/src/daemon/app-log-process.d.ts +15 -0
- package/dist/src/daemon/app-log-stream.d.ts +19 -0
- package/dist/src/daemon/app-log.d.ts +28 -0
- package/dist/src/daemon/artifact-archive.d.ts +12 -0
- package/dist/src/daemon/artifact-download.d.ts +12 -0
- package/dist/src/daemon/artifact-materialization.d.ts +17 -0
- package/dist/src/daemon/artifact-registry.d.ts +12 -0
- package/dist/src/daemon/config.d.ts +16 -0
- package/dist/src/daemon/context.d.ts +22 -0
- package/dist/src/daemon/device-ready.d.ts +6 -0
- package/dist/src/daemon/handlers/find.d.ts +40 -0
- package/dist/src/daemon/handlers/install-source.d.ts +10 -0
- package/dist/src/daemon/handlers/interaction.d.ts +14 -0
- package/dist/src/daemon/handlers/lease.d.ts +8 -0
- package/dist/src/daemon/handlers/parse-utils.d.ts +3 -0
- package/dist/src/daemon/handlers/record-trace.d.ts +15 -0
- package/dist/src/daemon/handlers/session-replay-heal.d.ts +8 -0
- package/dist/src/daemon/handlers/session-replay-script.d.ts +3 -0
- package/dist/src/daemon/handlers/session.d.ts +67 -0
- package/dist/src/daemon/handlers/snapshot.d.ts +32 -0
- package/dist/src/daemon/http-server.d.ts +26 -0
- package/dist/src/daemon/is-predicates.d.ts +14 -0
- package/dist/src/daemon/lease-context.d.ts +9 -0
- package/dist/src/daemon/lease-registry.d.ts +63 -0
- package/dist/src/daemon/materialized-path-registry.d.ts +15 -0
- package/dist/src/daemon/network-log.d.ts +32 -0
- package/dist/src/daemon/request-cancel.d.ts +9 -0
- package/dist/src/daemon/request-router.d.ts +17 -0
- package/dist/src/daemon/runtime-hints.d.ts +19 -0
- package/dist/src/daemon/script-utils.d.ts +15 -0
- package/dist/src/daemon/scroll-planner.d.ts +12 -0
- package/dist/src/daemon/selectors.d.ts +65 -0
- package/dist/src/daemon/server-lifecycle.d.ts +23 -0
- package/dist/src/daemon/session-routing.d.ts +3 -0
- package/dist/src/daemon/session-selector.d.ts +3 -0
- package/dist/src/daemon/session-store.d.ts +32 -0
- package/dist/src/daemon/snapshot-diff.d.ts +20 -0
- package/dist/src/daemon/snapshot-processing.d.ts +8 -0
- package/dist/src/daemon/transport.d.ts +6 -0
- package/dist/src/daemon/types.d.ts +115 -0
- package/dist/src/daemon/upload-registry.d.ts +7 -0
- package/dist/src/daemon/upload.d.ts +5 -0
- package/dist/src/daemon-client.d.ts +38 -0
- package/dist/src/daemon.d.ts +1 -0
- package/dist/src/daemon.js +36 -36
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +1 -0
- package/dist/src/platforms/android/adb.d.ts +5 -0
- package/dist/src/platforms/android/app-lifecycle.d.ts +30 -0
- package/dist/src/platforms/android/device-input-state.d.ts +19 -0
- package/dist/src/platforms/android/devices.d.ts +22 -0
- package/dist/src/platforms/android/index.d.ts +7 -0
- package/dist/src/platforms/android/input-actions.d.ts +12 -0
- package/dist/src/platforms/android/install-artifact.d.ts +11 -0
- package/dist/src/platforms/android/manifest.d.ts +1 -0
- package/dist/src/platforms/android/notifications.d.ts +11 -0
- package/dist/src/platforms/android/open-target.d.ts +4 -0
- package/dist/src/platforms/android/settings.d.ts +3 -0
- package/dist/src/platforms/android/snapshot.d.ts +8 -0
- package/dist/src/platforms/android/ui-hierarchy.d.ts +21 -0
- package/dist/src/platforms/appearance.d.ts +2 -0
- package/dist/src/platforms/boot-diagnostics.d.ts +14 -0
- package/dist/src/platforms/install-source.d.ts +26 -0
- package/dist/src/platforms/ios/apps.d.ts +34 -0
- package/dist/src/platforms/ios/config.d.ts +9 -0
- package/dist/src/platforms/ios/devicectl.d.ts +13 -0
- package/dist/src/platforms/ios/devices.d.ts +39 -0
- package/dist/src/platforms/ios/ensure-simulator.d.ts +18 -0
- package/dist/src/platforms/ios/index.d.ts +3 -0
- package/dist/src/platforms/ios/install-artifact.d.ts +18 -0
- package/dist/src/platforms/ios/launch-diagnostics.d.ts +11 -0
- package/dist/src/platforms/ios/plist.d.ts +1 -0
- package/dist/src/platforms/ios/runner-client.d.ts +36 -0
- package/dist/src/platforms/ios/runner-errors.d.ts +20 -0
- package/dist/src/platforms/ios/runner-session.d.ts +25 -0
- package/dist/src/platforms/ios/runner-transport.d.ts +10 -0
- package/dist/src/platforms/ios/runner-xctestrun.d.ts +18 -0
- package/dist/src/platforms/ios/screenshot.d.ts +13 -0
- package/dist/src/platforms/ios/simctl.d.ts +7 -0
- package/dist/src/platforms/ios/simulator.d.ts +11 -0
- package/dist/src/platforms/permission-utils.d.ts +9 -0
- package/dist/src/upload-client.d.ts +7 -0
- package/dist/src/utils/args.d.ts +15 -0
- package/dist/src/utils/command-schema.d.ts +93 -0
- package/dist/src/utils/device-isolation.d.ts +3 -0
- package/dist/src/utils/device.d.ts +27 -0
- package/dist/src/utils/diagnostics.d.ts +30 -0
- package/dist/src/utils/errors.d.ts +26 -0
- package/dist/src/utils/exec.d.ts +32 -0
- package/dist/src/utils/finders.d.ts +12 -0
- package/dist/src/utils/interactive.d.ts +1 -0
- package/dist/src/utils/interactors.d.ts +31 -0
- package/dist/src/utils/json-input.d.ts +1 -0
- package/dist/src/utils/keyed-lock.d.ts +1 -0
- package/dist/src/utils/output.d.ts +25 -0
- package/dist/src/utils/payload-input.d.ts +12 -0
- package/dist/src/utils/process-identity.d.ts +11 -0
- package/dist/src/utils/retry.d.ts +54 -0
- package/dist/src/utils/snapshot-lines.d.ts +12 -0
- package/dist/src/utils/snapshot.d.ts +42 -0
- package/dist/src/utils/timeouts.d.ts +3 -0
- package/dist/src/utils/version.d.ts +2 -0
- package/package.json +9 -1
- package/skills/agent-device/references/session-management.md +1 -1
- package/dist/src/678.js +0 -3
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createAgentDeviceClient, type AgentDeviceClient, type AgentDeviceClientConfig, type AgentDeviceDevice, type AgentDeviceIdentifiers, type AgentDeviceSelectionOptions, type AgentDeviceSession, type AgentDeviceSessionDevice, type AppCloseOptions, type AppCloseResult, type AppDeployOptions, type AppDeployResult, type AppInstallFromSourceOptions, type AppInstallFromSourceResult, type AppOpenOptions, type AppOpenResult, type CaptureScreenshotOptions, type CaptureScreenshotResult, type CaptureSnapshotOptions, type CaptureSnapshotResult, type EnsureSimulatorOptions, type EnsureSimulatorResult, type MaterializationReleaseOptions, type MaterializationReleaseResult, type RuntimeResult, type RuntimeSetOptions, type RuntimeShowOptions, type SessionCloseResult, type StartupPerfSample, } from './client.ts';
|
|
2
|
+
export { AppError, type NormalizedError } from './utils/errors.ts';
|
|
3
|
+
export type { SessionRuntimeHints } from './daemon/types.ts';
|
|
4
|
+
export type { SnapshotNode } from './utils/snapshot.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{AppError}from"./331.js";export{createAgentDeviceClient}from"./224.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export declare function adbArgs(device: DeviceInfo, args: string[]): string[];
|
|
3
|
+
export declare function ensureAdb(): Promise<void>;
|
|
4
|
+
export declare function isClipboardShellUnsupported(stdout: string, stderr: string): boolean;
|
|
5
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export declare function resolveAndroidApp(device: DeviceInfo, app: string): Promise<{
|
|
3
|
+
type: 'intent' | 'package';
|
|
4
|
+
value: string;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function listAndroidApps(device: DeviceInfo, filter?: 'user-installed' | 'all'): Promise<Array<{
|
|
7
|
+
package: string;
|
|
8
|
+
name: string;
|
|
9
|
+
}>>;
|
|
10
|
+
export declare function inferAndroidAppName(packageName: string): string;
|
|
11
|
+
export declare function getAndroidAppState(device: DeviceInfo): Promise<{
|
|
12
|
+
package?: string;
|
|
13
|
+
activity?: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function openAndroidApp(device: DeviceInfo, app: string, activity?: string): Promise<void>;
|
|
16
|
+
export declare function isAmStartError(stdout: string, stderr: string): boolean;
|
|
17
|
+
export declare function parseAndroidLaunchComponent(stdout: string): string | null;
|
|
18
|
+
export declare function openAndroidDevice(device: DeviceInfo): Promise<void>;
|
|
19
|
+
export declare function closeAndroidApp(device: DeviceInfo, app: string): Promise<void>;
|
|
20
|
+
export declare function installAndroidInstallablePath(device: DeviceInfo, installablePath: string): Promise<void>;
|
|
21
|
+
export declare function installAndroidApp(device: DeviceInfo, appPath: string): Promise<{
|
|
22
|
+
archivePath?: string;
|
|
23
|
+
installablePath: string;
|
|
24
|
+
packageName?: string;
|
|
25
|
+
appName?: string;
|
|
26
|
+
launchTarget?: string;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function reinstallAndroidApp(device: DeviceInfo, app: string, appPath: string): Promise<{
|
|
29
|
+
package: string;
|
|
30
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
type AndroidKeyboardType = 'text' | 'number' | 'email' | 'phone' | 'password' | 'datetime' | 'unknown';
|
|
3
|
+
export type AndroidKeyboardState = {
|
|
4
|
+
visible: boolean;
|
|
5
|
+
inputType?: string;
|
|
6
|
+
type?: AndroidKeyboardType;
|
|
7
|
+
};
|
|
8
|
+
export declare function getAndroidKeyboardState(device: DeviceInfo): Promise<AndroidKeyboardState>;
|
|
9
|
+
export declare function dismissAndroidKeyboard(device: DeviceInfo): Promise<{
|
|
10
|
+
attempts: number;
|
|
11
|
+
wasVisible: boolean;
|
|
12
|
+
dismissed: boolean;
|
|
13
|
+
visible: boolean;
|
|
14
|
+
inputType?: string;
|
|
15
|
+
type?: AndroidKeyboardType;
|
|
16
|
+
}>;
|
|
17
|
+
export declare function readAndroidClipboardText(device: DeviceInfo): Promise<string>;
|
|
18
|
+
export declare function writeAndroidClipboardText(device: DeviceInfo, text: string): Promise<void>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
type AndroidDeviceDiscoveryOptions = {
|
|
3
|
+
serialAllowlist?: ReadonlySet<string>;
|
|
4
|
+
};
|
|
5
|
+
export declare function parseAndroidTargetFromCharacteristics(rawOutput: string): 'tv' | null;
|
|
6
|
+
export declare function parseAndroidFeatureListForTv(rawOutput: string): boolean;
|
|
7
|
+
export declare function listAndroidDevices(options?: AndroidDeviceDiscoveryOptions): Promise<DeviceInfo[]>;
|
|
8
|
+
export declare function parseAndroidAvdList(rawOutput: string): string[];
|
|
9
|
+
export declare function resolveAndroidAvdName(avdNames: string[], requestedName: string): string | undefined;
|
|
10
|
+
export declare function ensureAndroidEmulatorBooted(params: {
|
|
11
|
+
avdName: string;
|
|
12
|
+
serial?: string;
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
headless?: boolean;
|
|
15
|
+
}): Promise<DeviceInfo>;
|
|
16
|
+
export declare function ensureAndroidEmulatorHeadlessBooted(params: {
|
|
17
|
+
avdName: string;
|
|
18
|
+
serial?: string;
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
}): Promise<DeviceInfo>;
|
|
21
|
+
export declare function waitForAndroidBoot(serial: string, timeoutMs?: number): Promise<void>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ensureAdb } from './adb.ts';
|
|
2
|
+
export { resolveAndroidApp, listAndroidApps, inferAndroidAppName, getAndroidAppState, openAndroidApp, isAmStartError, parseAndroidLaunchComponent, openAndroidDevice, closeAndroidApp, installAndroidInstallablePath, installAndroidApp, reinstallAndroidApp, } from './app-lifecycle.ts';
|
|
3
|
+
export { pressAndroid, swipeAndroid, backAndroid, homeAndroid, appSwitcherAndroid, longPressAndroid, typeAndroid, focusAndroid, fillAndroid, scrollAndroid, scrollIntoViewAndroid, } from './input-actions.ts';
|
|
4
|
+
export { type AndroidKeyboardState, getAndroidKeyboardState, dismissAndroidKeyboard, readAndroidClipboardText, writeAndroidClipboardText, } from './device-input-state.ts';
|
|
5
|
+
export { setAndroidSetting } from './settings.ts';
|
|
6
|
+
export { pushAndroidNotification } from './notifications.ts';
|
|
7
|
+
export { snapshotAndroid, screenshotAndroid } from './snapshot.ts';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export declare function pressAndroid(device: DeviceInfo, x: number, y: number): Promise<void>;
|
|
3
|
+
export declare function swipeAndroid(device: DeviceInfo, x1: number, y1: number, x2: number, y2: number, durationMs?: number): Promise<void>;
|
|
4
|
+
export declare function backAndroid(device: DeviceInfo): Promise<void>;
|
|
5
|
+
export declare function homeAndroid(device: DeviceInfo): Promise<void>;
|
|
6
|
+
export declare function appSwitcherAndroid(device: DeviceInfo): Promise<void>;
|
|
7
|
+
export declare function longPressAndroid(device: DeviceInfo, x: number, y: number, durationMs?: number): Promise<void>;
|
|
8
|
+
export declare function typeAndroid(device: DeviceInfo, text: string): Promise<void>;
|
|
9
|
+
export declare function focusAndroid(device: DeviceInfo, x: number, y: number): Promise<void>;
|
|
10
|
+
export declare function fillAndroid(device: DeviceInfo, x: number, y: number, text: string): Promise<void>;
|
|
11
|
+
export declare function scrollAndroid(device: DeviceInfo, direction: string, amount?: number): Promise<void>;
|
|
12
|
+
export declare function scrollIntoViewAndroid(device: DeviceInfo, text: string): Promise<void>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type MaterializeInstallSource } from '../install-source.ts';
|
|
2
|
+
export type PreparedAndroidInstallArtifact = {
|
|
3
|
+
archivePath?: string;
|
|
4
|
+
installablePath: string;
|
|
5
|
+
packageName?: string;
|
|
6
|
+
cleanup: () => Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
export declare function prepareAndroidInstallArtifact(source: MaterializeInstallSource, options?: {
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
resolveIdentity?: boolean;
|
|
11
|
+
}): Promise<PreparedAndroidInstallArtifact>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function resolveAndroidArchivePackageName(archivePath: string): Promise<string | undefined>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
type AndroidBroadcastPayload = {
|
|
3
|
+
action?: string;
|
|
4
|
+
receiver?: string;
|
|
5
|
+
extras?: Record<string, unknown>;
|
|
6
|
+
};
|
|
7
|
+
export declare function pushAndroidNotification(device: DeviceInfo, packageName: string, payload: AndroidBroadcastPayload): Promise<{
|
|
8
|
+
action: string;
|
|
9
|
+
extrasCount: number;
|
|
10
|
+
}>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export type AndroidAppTargetKind = 'package' | 'binary' | 'other';
|
|
2
|
+
export declare function classifyAndroidAppTarget(target: string): AndroidAppTargetKind;
|
|
3
|
+
export declare function looksLikeAndroidPackageName(value: string): boolean;
|
|
4
|
+
export declare function formatAndroidInstalledPackageRequiredMessage(target: string): string;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
import { type PermissionSettingOptions } from '../permission-utils.ts';
|
|
3
|
+
export declare function setAndroidSetting(device: DeviceInfo, setting: string, state: string, appPackage?: string, options?: PermissionSettingOptions): Promise<void>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
import type { RawSnapshotNode, SnapshotOptions } from '../../utils/snapshot.ts';
|
|
3
|
+
export declare function snapshotAndroid(device: DeviceInfo, options?: SnapshotOptions): Promise<{
|
|
4
|
+
nodes: RawSnapshotNode[];
|
|
5
|
+
truncated?: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function screenshotAndroid(device: DeviceInfo, outPath: string): Promise<void>;
|
|
8
|
+
export declare function dumpUiHierarchy(device: DeviceInfo): Promise<string>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { RawSnapshotNode, Rect, SnapshotOptions } from '../../utils/snapshot.ts';
|
|
2
|
+
export declare function findBounds(xml: string, query: string): {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
} | null;
|
|
6
|
+
export declare function parseUiHierarchy(xml: string, maxNodes: number, options: SnapshotOptions): {
|
|
7
|
+
nodes: RawSnapshotNode[];
|
|
8
|
+
truncated?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function readNodeAttributes(node: string): {
|
|
11
|
+
text: string | null;
|
|
12
|
+
desc: string | null;
|
|
13
|
+
resourceId: string | null;
|
|
14
|
+
className: string | null;
|
|
15
|
+
bounds: string | null;
|
|
16
|
+
clickable?: boolean;
|
|
17
|
+
enabled?: boolean;
|
|
18
|
+
focusable?: boolean;
|
|
19
|
+
focused?: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare function parseBounds(bounds: string | null): Rect | undefined;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type BootFailureReason = 'IOS_BOOT_TIMEOUT' | 'IOS_RUNNER_CONNECT_TIMEOUT' | 'IOS_TOOL_MISSING' | 'ANDROID_BOOT_TIMEOUT' | 'ADB_TRANSPORT_UNAVAILABLE' | 'CI_RESOURCE_STARVATION_SUSPECTED' | 'BOOT_COMMAND_FAILED' | 'UNKNOWN';
|
|
2
|
+
type BootDiagnosticContext = {
|
|
3
|
+
platform?: 'ios' | 'android';
|
|
4
|
+
phase?: 'boot' | 'connect' | 'transport';
|
|
5
|
+
};
|
|
6
|
+
export declare function classifyBootFailure(input: {
|
|
7
|
+
error?: unknown;
|
|
8
|
+
message?: string;
|
|
9
|
+
stdout?: string;
|
|
10
|
+
stderr?: string;
|
|
11
|
+
context?: BootDiagnosticContext;
|
|
12
|
+
}): BootFailureReason;
|
|
13
|
+
export declare function bootFailureHint(reason: BootFailureReason): string;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export type MaterializeInstallSource = {
|
|
2
|
+
kind: 'url';
|
|
3
|
+
url: string;
|
|
4
|
+
headers?: Record<string, string>;
|
|
5
|
+
} | {
|
|
6
|
+
kind: 'path';
|
|
7
|
+
path: string;
|
|
8
|
+
};
|
|
9
|
+
type MaterializeInstallableOptions = {
|
|
10
|
+
source: MaterializeInstallSource;
|
|
11
|
+
isInstallablePath: (candidatePath: string, stat: {
|
|
12
|
+
isFile(): boolean;
|
|
13
|
+
isDirectory(): boolean;
|
|
14
|
+
}) => boolean;
|
|
15
|
+
installableLabel: string;
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
downloadTimeoutMs?: number;
|
|
18
|
+
};
|
|
19
|
+
export type MaterializedInstallable = {
|
|
20
|
+
archivePath?: string;
|
|
21
|
+
installablePath: string;
|
|
22
|
+
cleanup: () => Promise<void>;
|
|
23
|
+
};
|
|
24
|
+
export declare function materializeInstallablePath(options: MaterializeInstallableOptions): Promise<MaterializedInstallable>;
|
|
25
|
+
export declare function expandSourcePath(inputPath: string): string;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
import { type PermissionSettingOptions } from '../permission-utils.ts';
|
|
3
|
+
import { type IosAppInfo } from './devicectl.ts';
|
|
4
|
+
export { screenshotIos, shouldFallbackToRunnerForIosScreenshot, shouldRetryIosSimulatorScreenshot, } from './screenshot.ts';
|
|
5
|
+
type InstallIosAppOptions = {
|
|
6
|
+
appIdentifierHint?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function resolveIosApp(device: DeviceInfo, app: string): Promise<string>;
|
|
9
|
+
export declare function openIosApp(device: DeviceInfo, app: string, options?: {
|
|
10
|
+
appBundleId?: string;
|
|
11
|
+
url?: string;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function openIosDevice(device: DeviceInfo): Promise<void>;
|
|
14
|
+
export declare function closeIosApp(device: DeviceInfo, app: string): Promise<void>;
|
|
15
|
+
export declare function uninstallIosApp(device: DeviceInfo, app: string): Promise<{
|
|
16
|
+
bundleId: string;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function installIosApp(device: DeviceInfo, appPath: string, options?: InstallIosAppOptions): Promise<{
|
|
19
|
+
archivePath?: string;
|
|
20
|
+
installablePath: string;
|
|
21
|
+
bundleId?: string;
|
|
22
|
+
appName?: string;
|
|
23
|
+
launchTarget?: string;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function reinstallIosApp(device: DeviceInfo, app: string, appPath: string): Promise<{
|
|
26
|
+
bundleId: string;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function installIosInstallablePath(device: DeviceInfo, installablePath: string): Promise<void>;
|
|
29
|
+
export declare function readIosClipboardText(device: DeviceInfo): Promise<string>;
|
|
30
|
+
export declare function writeIosClipboardText(device: DeviceInfo, text: string): Promise<void>;
|
|
31
|
+
export declare function pushIosNotification(device: DeviceInfo, bundleId: string, payload: Record<string, unknown>): Promise<void>;
|
|
32
|
+
export declare function setIosSetting(device: DeviceInfo, setting: string, state: string, appBundleId?: string, options?: PermissionSettingOptions): Promise<void>;
|
|
33
|
+
export declare function listIosApps(device: DeviceInfo, filter?: 'user-installed' | 'all'): Promise<IosAppInfo[]>;
|
|
34
|
+
export declare function listSimulatorApps(device: DeviceInfo): Promise<IosAppInfo[]>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const IOS_BOOT_TIMEOUT_MS: number;
|
|
2
|
+
export declare const IOS_SIMCTL_LIST_TIMEOUT_MS: number;
|
|
3
|
+
export declare const IOS_APP_LAUNCH_TIMEOUT_MS: number;
|
|
4
|
+
export declare const IOS_DEVICECTL_TIMEOUT_MS: number;
|
|
5
|
+
export declare const IOS_SIMULATOR_SCREENSHOT_TIMEOUT_MS: number;
|
|
6
|
+
export declare const IOS_RUNNER_SCREENSHOT_COPY_TIMEOUT_MS: number;
|
|
7
|
+
export declare const IOS_SIMULATOR_SCREENSHOT_RETRY_MAX_ATTEMPTS = 5;
|
|
8
|
+
export declare const IOS_SIMULATOR_SCREENSHOT_RETRY_BASE_DELAY_MS = 1000;
|
|
9
|
+
export declare const IOS_SIMULATOR_SCREENSHOT_RETRY_MAX_DELAY_MS = 5000;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export type IosAppInfo = {
|
|
3
|
+
bundleId: string;
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function runIosDevicectl(args: string[], context: {
|
|
7
|
+
action: string;
|
|
8
|
+
deviceId: string;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
export declare function listIosDeviceApps(device: DeviceInfo, filter: 'user-installed' | 'all'): Promise<IosAppInfo[]>;
|
|
11
|
+
export declare function parseIosDeviceAppsPayload(payload: unknown): IosAppInfo[];
|
|
12
|
+
export declare const IOS_DEVICECTL_DEFAULT_HINT = "Ensure the iOS device is unlocked, trusted, and available in Xcode > Devices, then retry.";
|
|
13
|
+
export declare function resolveIosDevicectlHint(stdout: string, stderr: string): string | null;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { DeviceInfo, DeviceTarget } from '../../utils/device.ts';
|
|
2
|
+
type DevicectlAppleDevice = {
|
|
3
|
+
identifier?: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
hardwareProperties?: {
|
|
6
|
+
platform?: string;
|
|
7
|
+
udid?: string;
|
|
8
|
+
productType?: string;
|
|
9
|
+
};
|
|
10
|
+
deviceProperties?: {
|
|
11
|
+
name?: string;
|
|
12
|
+
productType?: string;
|
|
13
|
+
deviceType?: string;
|
|
14
|
+
};
|
|
15
|
+
connectionProperties?: {
|
|
16
|
+
tunnelState?: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
type IosDeviceDiscoveryOptions = {
|
|
20
|
+
simulatorSetPath?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function isAppleProductType(productType: string): boolean;
|
|
23
|
+
export declare function isAppleTvProductType(productType: string): boolean;
|
|
24
|
+
export declare function resolveAppleTargetFromDevicectlDevice(device: DevicectlAppleDevice): DeviceTarget;
|
|
25
|
+
export declare function isSupportedAppleDevicectlDevice(device: DevicectlAppleDevice): boolean;
|
|
26
|
+
type FindBootableSimulatorOptions = IosDeviceDiscoveryOptions & {
|
|
27
|
+
target?: DeviceTarget;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Finds an available iOS simulator by querying simctl directly. This is used
|
|
31
|
+
* as a fallback when `listIosDevices` returned no simulators (e.g. all filtered
|
|
32
|
+
* out) or only a physical device. Only simulators with `isAvailable: true` are
|
|
33
|
+
* considered so the caller can safely boot the result.
|
|
34
|
+
*
|
|
35
|
+
* Returns `null` when no suitable simulator can be found.
|
|
36
|
+
*/
|
|
37
|
+
export declare function findBootableIosSimulator(options?: FindBootableSimulatorOptions): Promise<DeviceInfo | null>;
|
|
38
|
+
export declare function listIosDevices(options?: IosDeviceDiscoveryOptions): Promise<DeviceInfo[]>;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export type EnsureSimulatorResult = {
|
|
3
|
+
udid: string;
|
|
4
|
+
device: string;
|
|
5
|
+
runtime: string;
|
|
6
|
+
created: boolean;
|
|
7
|
+
booted: boolean;
|
|
8
|
+
};
|
|
9
|
+
type EnsureSimulatorOptions = {
|
|
10
|
+
deviceName: string;
|
|
11
|
+
runtime?: string;
|
|
12
|
+
simulatorSetPath?: string | null;
|
|
13
|
+
reuseExisting: boolean;
|
|
14
|
+
boot: boolean;
|
|
15
|
+
ensureReady: (device: DeviceInfo) => Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
export declare function ensureSimulatorExists(options: EnsureSimulatorOptions): Promise<EnsureSimulatorResult>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { closeIosApp, installIosApp, installIosInstallablePath, listIosApps, listSimulatorApps, openIosApp, openIosDevice, pushIosNotification, readIosClipboardText, reinstallIosApp, resolveIosApp, screenshotIos, setIosSetting, uninstallIosApp, writeIosClipboardText, } from './apps.ts';
|
|
2
|
+
export { ensureBootedSimulator } from './simulator.ts';
|
|
3
|
+
export { parseIosDeviceAppsPayload, type IosAppInfo, } from './devicectl.ts';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type MaterializeInstallSource } from '../install-source.ts';
|
|
2
|
+
type InstallIosArtifactOptions = {
|
|
3
|
+
appIdentifierHint?: string;
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
};
|
|
6
|
+
export type PreparedIosInstallArtifact = {
|
|
7
|
+
archivePath?: string;
|
|
8
|
+
installablePath: string;
|
|
9
|
+
bundleId?: string;
|
|
10
|
+
appName?: string;
|
|
11
|
+
cleanup: () => Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
export declare function prepareIosInstallArtifact(source: MaterializeInstallSource, options?: InstallIosArtifactOptions): Promise<PreparedIosInstallArtifact>;
|
|
14
|
+
export declare function readIosBundleInfo(appBundlePath: string): Promise<{
|
|
15
|
+
bundleId?: string;
|
|
16
|
+
appName?: string;
|
|
17
|
+
}>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export type LaunchFailureReason = 'ARCH_MISMATCH' | 'APP_NOT_INSTALLED' | 'PERSISTENT_LAUNCH_FAIL' | 'UNKNOWN';
|
|
3
|
+
type LaunchProbeResult = {
|
|
4
|
+
installed: boolean;
|
|
5
|
+
simulatorCompatible?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function isSimulatorLaunchFBSError(error: unknown): boolean;
|
|
8
|
+
export declare function probeSimulatorLaunchContext(device: DeviceInfo, bundleId: string): Promise<LaunchProbeResult>;
|
|
9
|
+
export declare function classifyLaunchFailure(probe: LaunchProbeResult): LaunchFailureReason;
|
|
10
|
+
export declare function launchFailureHint(reason: LaunchFailureReason): string;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function readInfoPlistString(infoPlistPath: string, key: string): Promise<string | undefined>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export type RunnerCommand = {
|
|
3
|
+
command: 'tap' | 'tapSeries' | 'longPress' | 'drag' | 'dragSeries' | 'type' | 'swipe' | 'findText' | 'snapshot' | 'screenshot' | 'back' | 'home' | 'appSwitcher' | 'alert' | 'pinch' | 'recordStart' | 'recordStop' | 'shutdown';
|
|
4
|
+
appBundleId?: string;
|
|
5
|
+
text?: string;
|
|
6
|
+
action?: 'get' | 'accept' | 'dismiss';
|
|
7
|
+
x?: number;
|
|
8
|
+
y?: number;
|
|
9
|
+
count?: number;
|
|
10
|
+
intervalMs?: number;
|
|
11
|
+
doubleTap?: boolean;
|
|
12
|
+
pauseMs?: number;
|
|
13
|
+
pattern?: 'one-way' | 'ping-pong';
|
|
14
|
+
x2?: number;
|
|
15
|
+
y2?: number;
|
|
16
|
+
durationMs?: number;
|
|
17
|
+
direction?: 'up' | 'down' | 'left' | 'right';
|
|
18
|
+
scale?: number;
|
|
19
|
+
outPath?: string;
|
|
20
|
+
fps?: number;
|
|
21
|
+
interactiveOnly?: boolean;
|
|
22
|
+
compact?: boolean;
|
|
23
|
+
depth?: number;
|
|
24
|
+
scope?: string;
|
|
25
|
+
raw?: boolean;
|
|
26
|
+
clearFirst?: boolean;
|
|
27
|
+
};
|
|
28
|
+
export declare function runIosRunnerCommand(device: DeviceInfo, command: RunnerCommand, options?: {
|
|
29
|
+
verbose?: boolean;
|
|
30
|
+
logPath?: string;
|
|
31
|
+
traceLogPath?: string;
|
|
32
|
+
requestId?: string;
|
|
33
|
+
}): Promise<Record<string, unknown>>;
|
|
34
|
+
export { isRetryableRunnerError, shouldRetryRunnerConnectError, resolveRunnerEarlyExitHint, } from './runner-errors.ts';
|
|
35
|
+
export { resolveRunnerDestination, resolveRunnerBuildDestination, resolveRunnerMaxConcurrentDestinationsFlag, resolveRunnerSigningBuildSettings, resolveRunnerBundleBuildSettings, assertSafeDerivedCleanup, IOS_RUNNER_CONTAINER_BUNDLE_IDS, } from './runner-xctestrun.ts';
|
|
36
|
+
export { stopIosRunnerSession, abortAllIosRunnerSessions, stopAllIosRunnerSessions, } from './runner-session.ts';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AppError } from '../../utils/errors.ts';
|
|
2
|
+
import type { RunnerCommand } from './runner-client.ts';
|
|
3
|
+
import type { RunnerSession } from './runner-session.ts';
|
|
4
|
+
export declare function isRetryableRunnerError(err: unknown): boolean;
|
|
5
|
+
export declare function shouldRetryRunnerConnectError(error: unknown): boolean;
|
|
6
|
+
export declare function resolveRunnerEarlyExitHint(message: string, stdout: string, stderr: string): string;
|
|
7
|
+
export declare function buildRunnerConnectError(params: {
|
|
8
|
+
port: number;
|
|
9
|
+
endpoints: string[];
|
|
10
|
+
logPath?: string;
|
|
11
|
+
lastError: unknown;
|
|
12
|
+
}): AppError;
|
|
13
|
+
export declare function buildRunnerEarlyExitError(params: {
|
|
14
|
+
session: RunnerSession;
|
|
15
|
+
port: number;
|
|
16
|
+
logPath?: string;
|
|
17
|
+
}): Promise<AppError>;
|
|
18
|
+
export declare function resolveSigningFailureHint(error: AppError): string | undefined;
|
|
19
|
+
export declare function isReadOnlyRunnerCommand(command: RunnerCommand['command']): boolean;
|
|
20
|
+
export declare function assertRunnerRequestActive(requestId: string | undefined): void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ExecResult, type ExecBackgroundResult } from '../../utils/exec.ts';
|
|
2
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
3
|
+
import type { RunnerCommand } from './runner-client.ts';
|
|
4
|
+
export type RunnerSession = {
|
|
5
|
+
device: DeviceInfo;
|
|
6
|
+
deviceId: string;
|
|
7
|
+
port: number;
|
|
8
|
+
xctestrunPath: string;
|
|
9
|
+
jsonPath: string;
|
|
10
|
+
testPromise: Promise<ExecResult>;
|
|
11
|
+
child: ExecBackgroundResult['child'];
|
|
12
|
+
ready: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function ensureRunnerSession(device: DeviceInfo, options: {
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
logPath?: string;
|
|
17
|
+
traceLogPath?: string;
|
|
18
|
+
}): Promise<RunnerSession>;
|
|
19
|
+
export declare function stopRunnerSession(session: RunnerSession): Promise<void>;
|
|
20
|
+
export declare function stopIosRunnerSession(deviceId: string): Promise<void>;
|
|
21
|
+
export declare function abortAllIosRunnerSessions(): Promise<void>;
|
|
22
|
+
export declare function stopAllIosRunnerSessions(): Promise<void>;
|
|
23
|
+
export declare function validateRunnerDevice(device: DeviceInfo): void;
|
|
24
|
+
export declare function executeRunnerCommandWithSession(device: DeviceInfo, session: RunnerSession, command: RunnerCommand, logPath: string | undefined, timeoutMs: number, signal?: AbortSignal): Promise<Record<string, unknown>>;
|
|
25
|
+
export declare function parseRunnerResponse(response: Response, session: RunnerSession, logPath?: string): Promise<Record<string, unknown>>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
import type { RunnerCommand } from './runner-client.ts';
|
|
3
|
+
import type { RunnerSession } from './runner-session.ts';
|
|
4
|
+
export declare const RUNNER_STARTUP_TIMEOUT_MS: number;
|
|
5
|
+
export declare const RUNNER_COMMAND_TIMEOUT_MS: number;
|
|
6
|
+
export declare const RUNNER_DESTINATION_TIMEOUT_SECONDS: number;
|
|
7
|
+
export declare function waitForRunner(device: DeviceInfo, port: number, command: RunnerCommand, logPath?: string, timeoutMs?: number, session?: RunnerSession, signal?: AbortSignal): Promise<Response>;
|
|
8
|
+
export declare function getFreePort(): Promise<number>;
|
|
9
|
+
export declare function logChunk(chunk: string, logPath?: string, traceLogPath?: string, verbose?: boolean): void;
|
|
10
|
+
export declare function cleanupTempFile(filePath: string): void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export declare const runnerPrepProcesses: Set<import("child_process").ChildProcess>;
|
|
3
|
+
export declare const IOS_RUNNER_CONTAINER_BUNDLE_IDS: string[];
|
|
4
|
+
export declare function ensureXctestrun(device: DeviceInfo, options: {
|
|
5
|
+
verbose?: boolean;
|
|
6
|
+
logPath?: string;
|
|
7
|
+
traceLogPath?: string;
|
|
8
|
+
}): Promise<string>;
|
|
9
|
+
export declare function prepareXctestrunWithEnv(xctestrunPath: string, envVars: Record<string, string>, suffix: string): Promise<{
|
|
10
|
+
xctestrunPath: string;
|
|
11
|
+
jsonPath: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function resolveRunnerDestination(device: DeviceInfo): string;
|
|
14
|
+
export declare function resolveRunnerBuildDestination(device: DeviceInfo): string;
|
|
15
|
+
export declare function resolveRunnerMaxConcurrentDestinationsFlag(device: DeviceInfo): string;
|
|
16
|
+
export declare function resolveRunnerSigningBuildSettings(env?: NodeJS.ProcessEnv, forDevice?: boolean): string[];
|
|
17
|
+
export declare function resolveRunnerBundleBuildSettings(env?: NodeJS.ProcessEnv): string[];
|
|
18
|
+
export declare function assertSafeDerivedCleanup(derivedPath: string, env?: NodeJS.ProcessEnv): void;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
type SimulatorScreenshotFlowDeps = {
|
|
3
|
+
ensureBooted: (device: DeviceInfo) => Promise<void>;
|
|
4
|
+
captureWithRetry: (device: DeviceInfo, outPath: string) => Promise<void>;
|
|
5
|
+
captureWithRunner: (device: DeviceInfo, outPath: string, appBundleId?: string) => Promise<void>;
|
|
6
|
+
shouldFallbackToRunner: (error: unknown) => boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function screenshotIos(device: DeviceInfo, outPath: string, appBundleId?: string): Promise<void>;
|
|
9
|
+
export declare function captureSimulatorScreenshotWithFallback(device: DeviceInfo, outPath: string, appBundleId?: string, deps?: SimulatorScreenshotFlowDeps): Promise<void>;
|
|
10
|
+
export declare function resolveSimulatorRunnerScreenshotCandidatePaths(containerPath: string, remoteFileName: string): string[];
|
|
11
|
+
export declare function shouldFallbackToRunnerForIosScreenshot(error: unknown): boolean;
|
|
12
|
+
export declare function shouldRetryIosSimulatorScreenshot(error: unknown): boolean;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
type SimctlArgsOptions = {
|
|
3
|
+
simulatorSetPath?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function buildSimctlArgs(args: string[], options?: SimctlArgsOptions): string[];
|
|
6
|
+
export declare function buildSimctlArgsForDevice(device: DeviceInfo, args: string[]): string[];
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DeviceInfo } from '../../utils/device.ts';
|
|
2
|
+
export declare function ensureSimulator(device: DeviceInfo, command: string): void;
|
|
3
|
+
export declare function focusIosSimulatorWindow(): Promise<void>;
|
|
4
|
+
export declare function ensureBootedSimulator(device: DeviceInfo): Promise<void>;
|
|
5
|
+
export declare function shutdownSimulator(device: DeviceInfo): Promise<{
|
|
6
|
+
success: boolean;
|
|
7
|
+
exitCode: number;
|
|
8
|
+
stdout: string;
|
|
9
|
+
stderr: string;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function getSimulatorState(deviceOrUdid: DeviceInfo | string): Promise<string | null>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type PermissionAction = 'grant' | 'deny' | 'reset';
|
|
2
|
+
export type PermissionTarget = 'camera' | 'microphone' | 'photos' | 'contacts' | 'contacts-limited' | 'notifications' | 'calendar' | 'location' | 'location-always' | 'media-library' | 'motion' | 'reminders' | 'siri';
|
|
3
|
+
export type PermissionSettingOptions = {
|
|
4
|
+
permissionTarget?: string;
|
|
5
|
+
permissionMode?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare const PERMISSION_TARGETS: readonly PermissionTarget[];
|
|
8
|
+
export declare function parsePermissionAction(action: string): PermissionAction;
|
|
9
|
+
export declare function parsePermissionTarget(value: string | undefined): PermissionTarget;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CliFlags } from './command-schema.ts';
|
|
2
|
+
type ParsedArgs = {
|
|
3
|
+
command: string | null;
|
|
4
|
+
positionals: string[];
|
|
5
|
+
flags: CliFlags;
|
|
6
|
+
warnings: string[];
|
|
7
|
+
};
|
|
8
|
+
type ParseArgsOptions = {
|
|
9
|
+
strictFlags?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function parseArgs(argv: string[], options?: ParseArgsOptions): ParsedArgs;
|
|
12
|
+
export declare function toDaemonFlags(flags: CliFlags): Omit<CliFlags, 'json' | 'help' | 'version'>;
|
|
13
|
+
export declare function usage(): string;
|
|
14
|
+
export declare function usageForCommand(command: string): string | null;
|
|
15
|
+
export {};
|