mobile-agent-mcp 0.1.1 → 1.0.1
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/CHANGELOG.md +50 -0
- package/README.md +33 -82
- package/dist/cli.js +236 -7
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +43 -17
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -1
- package/dist/driver/artifacts.d.ts +17 -0
- package/dist/driver/artifacts.d.ts.map +1 -0
- package/dist/driver/artifacts.js +40 -0
- package/dist/driver/artifacts.js.map +1 -0
- package/dist/driver/diagnosis.d.ts +9 -0
- package/dist/driver/diagnosis.d.ts.map +1 -0
- package/dist/driver/diagnosis.js +72 -0
- package/dist/driver/diagnosis.js.map +1 -0
- package/dist/driver/doctor.d.ts +6 -0
- package/dist/driver/doctor.d.ts.map +1 -1
- package/dist/driver/doctor.js +20 -0
- package/dist/driver/doctor.js.map +1 -1
- package/dist/driver/exec.d.ts +1 -0
- package/dist/driver/exec.d.ts.map +1 -1
- package/dist/driver/exec.js +3 -0
- package/dist/driver/exec.js.map +1 -1
- package/dist/driver/flow-io.d.ts +8 -0
- package/dist/driver/flow-io.d.ts.map +1 -0
- package/dist/driver/flow-io.js +128 -0
- package/dist/driver/flow-io.js.map +1 -0
- package/dist/driver/flows.d.ts +3 -0
- package/dist/driver/flows.d.ts.map +1 -0
- package/dist/driver/flows.js +20 -0
- package/dist/driver/flows.js.map +1 -0
- package/dist/driver/logs.d.ts +33 -0
- package/dist/driver/logs.d.ts.map +1 -0
- package/dist/driver/logs.js +199 -0
- package/dist/driver/logs.js.map +1 -0
- package/dist/driver/maestro.d.ts +22 -2
- package/dist/driver/maestro.d.ts.map +1 -1
- package/dist/driver/maestro.js +139 -21
- package/dist/driver/maestro.js.map +1 -1
- package/dist/driver/metro.d.ts +5 -0
- package/dist/driver/metro.d.ts.map +1 -0
- package/dist/driver/metro.js +57 -0
- package/dist/driver/metro.js.map +1 -0
- package/dist/driver/screenshot.d.ts +3 -1
- package/dist/driver/screenshot.d.ts.map +1 -1
- package/dist/driver/screenshot.js +10 -1
- package/dist/driver/screenshot.js.map +1 -1
- package/dist/driver/simulator.d.ts +3 -0
- package/dist/driver/simulator.d.ts.map +1 -0
- package/dist/driver/simulator.js +66 -0
- package/dist/driver/simulator.js.map +1 -0
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +2 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +21 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -7
- package/dist/index.js.map +1 -1
- package/dist/mcp/resources.d.ts +15 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +31 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/serialize-result.d.ts +20 -0
- package/dist/mcp/serialize-result.d.ts.map +1 -0
- package/dist/mcp/serialize-result.js +61 -0
- package/dist/mcp/serialize-result.js.map +1 -0
- package/dist/mcp/tools/definitions.d.ts +7 -0
- package/dist/mcp/tools/definitions.d.ts.map +1 -0
- package/dist/mcp/tools/definitions.js +181 -0
- package/dist/mcp/tools/definitions.js.map +1 -0
- package/dist/mcp/tools/handlers.d.ts +5 -0
- package/dist/mcp/tools/handlers.d.ts.map +1 -0
- package/dist/mcp/tools/handlers.js +132 -0
- package/dist/mcp/tools/handlers.js.map +1 -0
- package/dist/mcp/tools.d.ts +3 -11
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2 -151
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp-server.js +15 -5
- package/dist/mcp-server.js.map +1 -1
- package/dist/results/format.d.ts +16 -0
- package/dist/results/format.d.ts.map +1 -0
- package/dist/results/format.js +95 -0
- package/dist/results/format.js.map +1 -0
- package/dist/results/types.d.ts +95 -0
- package/dist/results/types.d.ts.map +1 -0
- package/dist/results/types.js +5 -0
- package/dist/results/types.js.map +1 -0
- package/dist/runtime.d.ts +26 -4
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +110 -10
- package/dist/runtime.js.map +1 -1
- package/mobile-agent.config.example.json +5 -0
- package/package.json +8 -4
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import type { LogSource } from './driver/logs.js';
|
|
2
3
|
export declare const CONFIG_FILENAME = "mobile-agent.config.json";
|
|
3
4
|
export type Platform = 'ios' | 'android';
|
|
4
5
|
declare const ConfigFileSchema: z.ZodObject<{
|
|
@@ -22,6 +23,19 @@ declare const ConfigFileSchema: z.ZodObject<{
|
|
|
22
23
|
hostEnv?: string | undefined;
|
|
23
24
|
outputEnvKey?: string | undefined;
|
|
24
25
|
}>>;
|
|
26
|
+
log: z.ZodOptional<z.ZodObject<{
|
|
27
|
+
androidPackage: z.ZodOptional<z.ZodString>;
|
|
28
|
+
metroPort: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
filters: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
androidPackage?: string | undefined;
|
|
32
|
+
metroPort?: number | undefined;
|
|
33
|
+
filters?: string[] | undefined;
|
|
34
|
+
}, {
|
|
35
|
+
androidPackage?: string | undefined;
|
|
36
|
+
metroPort?: number | undefined;
|
|
37
|
+
filters?: string[] | undefined;
|
|
38
|
+
}>>;
|
|
25
39
|
maestro: z.ZodOptional<z.ZodObject<{
|
|
26
40
|
bin: z.ZodOptional<z.ZodString>;
|
|
27
41
|
defaultEnv: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
@@ -29,64 +43,74 @@ declare const ConfigFileSchema: z.ZodObject<{
|
|
|
29
43
|
ios: z.ZodOptional<z.ZodString>;
|
|
30
44
|
android: z.ZodOptional<z.ZodString>;
|
|
31
45
|
}, "strip", z.ZodTypeAny, {
|
|
32
|
-
ios?: string | undefined;
|
|
33
46
|
android?: string | undefined;
|
|
34
|
-
}, {
|
|
35
47
|
ios?: string | undefined;
|
|
48
|
+
}, {
|
|
36
49
|
android?: string | undefined;
|
|
50
|
+
ios?: string | undefined;
|
|
37
51
|
}>>;
|
|
38
52
|
}, "strip", z.ZodTypeAny, {
|
|
39
53
|
bin?: string | undefined;
|
|
40
54
|
defaultEnv?: Record<string, string> | undefined;
|
|
41
55
|
appId?: {
|
|
42
|
-
ios?: string | undefined;
|
|
43
56
|
android?: string | undefined;
|
|
57
|
+
ios?: string | undefined;
|
|
44
58
|
} | undefined;
|
|
45
59
|
}, {
|
|
46
60
|
bin?: string | undefined;
|
|
47
61
|
defaultEnv?: Record<string, string> | undefined;
|
|
48
62
|
appId?: {
|
|
49
|
-
ios?: string | undefined;
|
|
50
63
|
android?: string | undefined;
|
|
64
|
+
ios?: string | undefined;
|
|
51
65
|
} | undefined;
|
|
52
66
|
}>>;
|
|
53
67
|
}, "strip", z.ZodTypeAny, {
|
|
54
|
-
projectRoot?: string | undefined;
|
|
55
68
|
flowsDir?: string | undefined;
|
|
56
69
|
screenshotDir?: string | undefined;
|
|
70
|
+
maestro?: {
|
|
71
|
+
bin?: string | undefined;
|
|
72
|
+
defaultEnv?: Record<string, string> | undefined;
|
|
73
|
+
appId?: {
|
|
74
|
+
android?: string | undefined;
|
|
75
|
+
ios?: string | undefined;
|
|
76
|
+
} | undefined;
|
|
77
|
+
} | undefined;
|
|
57
78
|
smokeFlows?: string[] | undefined;
|
|
79
|
+
projectRoot?: string | undefined;
|
|
58
80
|
devServerUrl?: {
|
|
59
81
|
scheme?: string | undefined;
|
|
60
82
|
port?: number | undefined;
|
|
61
83
|
hostEnv?: string | undefined;
|
|
62
84
|
outputEnvKey?: string | undefined;
|
|
63
85
|
} | undefined;
|
|
86
|
+
log?: {
|
|
87
|
+
androidPackage?: string | undefined;
|
|
88
|
+
metroPort?: number | undefined;
|
|
89
|
+
filters?: string[] | undefined;
|
|
90
|
+
} | undefined;
|
|
91
|
+
}, {
|
|
92
|
+
flowsDir?: string | undefined;
|
|
93
|
+
screenshotDir?: string | undefined;
|
|
64
94
|
maestro?: {
|
|
65
95
|
bin?: string | undefined;
|
|
66
96
|
defaultEnv?: Record<string, string> | undefined;
|
|
67
97
|
appId?: {
|
|
68
|
-
ios?: string | undefined;
|
|
69
98
|
android?: string | undefined;
|
|
99
|
+
ios?: string | undefined;
|
|
70
100
|
} | undefined;
|
|
71
101
|
} | undefined;
|
|
72
|
-
}, {
|
|
73
|
-
projectRoot?: string | undefined;
|
|
74
|
-
flowsDir?: string | undefined;
|
|
75
|
-
screenshotDir?: string | undefined;
|
|
76
102
|
smokeFlows?: string[] | undefined;
|
|
103
|
+
projectRoot?: string | undefined;
|
|
77
104
|
devServerUrl?: {
|
|
78
105
|
scheme?: string | undefined;
|
|
79
106
|
port?: number | undefined;
|
|
80
107
|
hostEnv?: string | undefined;
|
|
81
108
|
outputEnvKey?: string | undefined;
|
|
82
109
|
} | undefined;
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
ios?: string | undefined;
|
|
88
|
-
android?: string | undefined;
|
|
89
|
-
} | undefined;
|
|
110
|
+
log?: {
|
|
111
|
+
androidPackage?: string | undefined;
|
|
112
|
+
metroPort?: number | undefined;
|
|
113
|
+
filters?: string[] | undefined;
|
|
90
114
|
} | undefined;
|
|
91
115
|
}>;
|
|
92
116
|
export type MobileAgentConfigFile = z.infer<typeof ConfigFileSchema>;
|
|
@@ -99,6 +123,7 @@ export interface ResolvedConfig {
|
|
|
99
123
|
maestroDefaultEnv: Record<string, string>;
|
|
100
124
|
maestroAppIds: Partial<Record<Platform, string>>;
|
|
101
125
|
devServerUrl: MobileAgentConfigFile['devServerUrl'];
|
|
126
|
+
log: MobileAgentConfigFile['log'];
|
|
102
127
|
configPath: string | null;
|
|
103
128
|
}
|
|
104
129
|
export declare function findConfigFile(startDir?: string): string | null;
|
|
@@ -111,5 +136,6 @@ export declare function loadConfig(options?: LoadConfigOptions): ResolvedConfig;
|
|
|
111
136
|
export declare function assertPlatform(value: string | undefined): Platform;
|
|
112
137
|
export declare function parseEnvPairs(pairs: string[] | undefined): Record<string, string>;
|
|
113
138
|
export declare function parsePorts(ports: string[]): number[];
|
|
139
|
+
export declare function parseLogSource(value: string | undefined): LogSource;
|
|
114
140
|
export {};
|
|
115
141
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;AAezC,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBpB,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,YAAY,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACpD,GAAG,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AA0CD,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAgB9E;AAOD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,cAAc,CAmD1E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAWlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjF;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CASpD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAWnE"}
|
package/dist/config.js
CHANGED
|
@@ -9,12 +9,18 @@ const DevServerUrlSchema = z.object({
|
|
|
9
9
|
hostEnv: z.string().min(1).optional(),
|
|
10
10
|
outputEnvKey: z.string().min(1).optional(),
|
|
11
11
|
});
|
|
12
|
+
const LogConfigSchema = z.object({
|
|
13
|
+
androidPackage: z.string().min(1).optional(),
|
|
14
|
+
metroPort: z.number().int().positive().max(65535).optional(),
|
|
15
|
+
filters: z.array(z.string().min(1)).optional(),
|
|
16
|
+
});
|
|
12
17
|
const ConfigFileSchema = z.object({
|
|
13
18
|
projectRoot: z.string().min(1).optional(),
|
|
14
19
|
flowsDir: z.string().min(1).optional(),
|
|
15
20
|
screenshotDir: z.string().min(1).optional(),
|
|
16
21
|
smokeFlows: z.array(z.string().min(1)).optional(),
|
|
17
22
|
devServerUrl: DevServerUrlSchema.optional(),
|
|
23
|
+
log: LogConfigSchema.optional(),
|
|
18
24
|
maestro: z
|
|
19
25
|
.object({
|
|
20
26
|
bin: z.string().min(1).optional(),
|
|
@@ -87,6 +93,7 @@ export function loadConfig(options = {}) {
|
|
|
87
93
|
const maestroDefaultEnv = fileConfig.maestro?.defaultEnv ?? {};
|
|
88
94
|
const maestroAppIds = fileConfig.maestro?.appId ?? {};
|
|
89
95
|
const devServerUrl = fileConfig.devServerUrl;
|
|
96
|
+
const log = fileConfig.log;
|
|
90
97
|
const smokeFlows = fileConfig.smokeFlows ?? [];
|
|
91
98
|
const resolved = {
|
|
92
99
|
projectRoot,
|
|
@@ -97,6 +104,7 @@ export function loadConfig(options = {}) {
|
|
|
97
104
|
maestroDefaultEnv,
|
|
98
105
|
maestroAppIds,
|
|
99
106
|
devServerUrl,
|
|
107
|
+
log,
|
|
100
108
|
configPath,
|
|
101
109
|
};
|
|
102
110
|
if (options.overrides) {
|
|
@@ -134,4 +142,13 @@ export function parsePorts(ports) {
|
|
|
134
142
|
return value;
|
|
135
143
|
});
|
|
136
144
|
}
|
|
145
|
+
export function parseLogSource(value) {
|
|
146
|
+
if (!value || value === 'auto') {
|
|
147
|
+
return 'auto';
|
|
148
|
+
}
|
|
149
|
+
if (value === 'metro' || value === 'logcat' || value === 'sim') {
|
|
150
|
+
return value;
|
|
151
|
+
}
|
|
152
|
+
throw new AgentError(`Unknown log source: ${value} (use metro, logcat, sim, or auto)`, ErrorCode.VALIDATION);
|
|
153
|
+
}
|
|
137
154
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Platform } from '../config.js';
|
|
2
|
+
import type { ScreenshotResult } from '../results/types.js';
|
|
3
|
+
export declare const SCREENSHOT_RESOURCE_URI = "mobile-agent://screenshot/latest";
|
|
4
|
+
export declare const MAX_INLINE_IMAGE_BYTES: number;
|
|
5
|
+
export declare class ArtifactRegistry {
|
|
6
|
+
private latestScreenshot;
|
|
7
|
+
recordScreenshot(result: ScreenshotResult): void;
|
|
8
|
+
getLatestScreenshot(): ScreenshotResult | null;
|
|
9
|
+
readScreenshotBase64(result: ScreenshotResult): {
|
|
10
|
+
data: string;
|
|
11
|
+
omitted?: 'too_large' | 'missing';
|
|
12
|
+
};
|
|
13
|
+
readLatestScreenshotBytes(): Buffer | null;
|
|
14
|
+
}
|
|
15
|
+
export declare function formatScreenshotSummary(result: ScreenshotResult): string;
|
|
16
|
+
export declare function makeScreenshotResult(path: string, platform: Platform): ScreenshotResult;
|
|
17
|
+
//# sourceMappingURL=artifacts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/driver/artifacts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,eAAO,MAAM,uBAAuB,qCAAqC,CAAC;AAC1E,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAEtD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,gBAAgB,CAAiC;IAEzD,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIhD,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IAI9C,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG;QAC9C,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;KACnC;IAaD,yBAAyB,IAAI,MAAM,GAAG,IAAI;CAO3C;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAExE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,CAMvF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
export const SCREENSHOT_RESOURCE_URI = 'mobile-agent://screenshot/latest';
|
|
3
|
+
export const MAX_INLINE_IMAGE_BYTES = 4 * 1024 * 1024;
|
|
4
|
+
export class ArtifactRegistry {
|
|
5
|
+
latestScreenshot = null;
|
|
6
|
+
recordScreenshot(result) {
|
|
7
|
+
this.latestScreenshot = result;
|
|
8
|
+
}
|
|
9
|
+
getLatestScreenshot() {
|
|
10
|
+
return this.latestScreenshot;
|
|
11
|
+
}
|
|
12
|
+
readScreenshotBase64(result) {
|
|
13
|
+
if (!fs.existsSync(result.path)) {
|
|
14
|
+
return { data: '', omitted: 'missing' };
|
|
15
|
+
}
|
|
16
|
+
const stat = fs.statSync(result.path);
|
|
17
|
+
if (stat.size > MAX_INLINE_IMAGE_BYTES) {
|
|
18
|
+
return { data: '', omitted: 'too_large' };
|
|
19
|
+
}
|
|
20
|
+
return { data: fs.readFileSync(result.path).toString('base64') };
|
|
21
|
+
}
|
|
22
|
+
readLatestScreenshotBytes() {
|
|
23
|
+
const latest = this.latestScreenshot;
|
|
24
|
+
if (!latest || !fs.existsSync(latest.path)) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return fs.readFileSync(latest.path);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function formatScreenshotSummary(result) {
|
|
31
|
+
return `Screenshot saved: ${result.path} (${result.platform})`;
|
|
32
|
+
}
|
|
33
|
+
export function makeScreenshotResult(path, platform) {
|
|
34
|
+
return {
|
|
35
|
+
path,
|
|
36
|
+
platform,
|
|
37
|
+
capturedAt: new Date().toISOString(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/driver/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,MAAM,CAAC,MAAM,uBAAuB,GAAG,kCAAkC,CAAC;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEtD,MAAM,OAAO,gBAAgB;IACnB,gBAAgB,GAA4B,IAAI,CAAC;IAEzD,gBAAgB,CAAC,MAAwB;QACvC,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACjC,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,oBAAoB,CAAC,MAAwB;QAI3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,GAAG,sBAAsB,EAAE,CAAC;YACvC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAC5C,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnE,CAAC;IAED,yBAAyB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACrC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,OAAO,qBAAqB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,QAAkB;IACnE,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Diagnosis } from '../results/types.js';
|
|
2
|
+
export interface DiagnosisInput {
|
|
3
|
+
maestroOutput: string;
|
|
4
|
+
logs: string;
|
|
5
|
+
errorCode?: string;
|
|
6
|
+
metroReachable?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function diagnoseFailure(input: DiagnosisInput): Diagnosis;
|
|
9
|
+
//# sourceMappingURL=diagnosis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosis.d.ts","sourceRoot":"","sources":["../../src/driver/diagnosis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,qBAAqB,CAAC;AAExE,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AA8ED,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAiBhE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const RULES = [
|
|
2
|
+
{
|
|
3
|
+
category: 'maestro_missing',
|
|
4
|
+
test: (input) => input.errorCode === 'MAESTRO_NOT_FOUND',
|
|
5
|
+
message: 'Maestro is not installed or not on PATH.',
|
|
6
|
+
suggestedTools: ['doctor'],
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
category: 'flow_not_found',
|
|
10
|
+
test: (input) => input.errorCode === 'FLOW_NOT_FOUND',
|
|
11
|
+
message: 'The requested Maestro flow was not found in flowsDir.',
|
|
12
|
+
suggestedTools: ['list_flows'],
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
category: 'simulator_not_booted',
|
|
16
|
+
test: (input) => /simctl|no booted|Unable to boot|booted device/i.test(input.maestroOutput) ||
|
|
17
|
+
/simctl|no booted|screencap failed/i.test(input.logs),
|
|
18
|
+
message: 'No booted iOS simulator detected.',
|
|
19
|
+
suggestedTools: ['boot_simulator', 'list_devices'],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
category: 'metro_unreachable',
|
|
23
|
+
test: (input) => input.metroReachable === false ||
|
|
24
|
+
/Unable to load script|Could not connect to development server|Metro not responding/i.test(`${input.maestroOutput}\n${input.logs}`),
|
|
25
|
+
message: 'Metro bundler is unreachable from the device or emulator.',
|
|
26
|
+
suggestedTools: ['metro_status', 'adb_reverse', 'reload_app'],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
category: 'element_not_found',
|
|
30
|
+
test: (input) => /Element not found|assertVisible|assertNotVisible|tapOn.*failed|No element/i.test(input.maestroOutput),
|
|
31
|
+
message: 'Maestro could not find the expected UI element.',
|
|
32
|
+
suggestedTools: ['screenshot', 'list_flows', 'validate_flow'],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
category: 'js_error',
|
|
36
|
+
test: (input) => /ReactNativeJS|RedBox|FATAL EXCEPTION|Invariant Violation|TypeError:|ReferenceError:/i.test(`${input.maestroOutput}\n${input.logs}`),
|
|
37
|
+
message: 'A JavaScript or native crash was detected in the logs.',
|
|
38
|
+
suggestedTools: ['collect_logs', 'screenshot'],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
category: 'app_not_running',
|
|
42
|
+
test: (input) => /logcat: no lines matched|pidof|App is not running|Process crashed|not installed/i.test(`${input.maestroOutput}\n${input.logs}`),
|
|
43
|
+
message: 'The app does not appear to be running on the device.',
|
|
44
|
+
suggestedTools: ['open_dev_url', 'open_url', 'doctor'],
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
function relevantTail(text, maxLines = 5) {
|
|
48
|
+
return text
|
|
49
|
+
.split('\n')
|
|
50
|
+
.map((line) => line.trim())
|
|
51
|
+
.filter(Boolean)
|
|
52
|
+
.slice(-maxLines)
|
|
53
|
+
.join('\n');
|
|
54
|
+
}
|
|
55
|
+
export function diagnoseFailure(input) {
|
|
56
|
+
for (const rule of RULES) {
|
|
57
|
+
if (rule.test(input)) {
|
|
58
|
+
return {
|
|
59
|
+
category: rule.category,
|
|
60
|
+
message: rule.message,
|
|
61
|
+
suggestedTools: rule.suggestedTools,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const tail = relevantTail(`${input.maestroOutput}\n${input.logs}`);
|
|
66
|
+
return {
|
|
67
|
+
category: 'unknown',
|
|
68
|
+
message: tail ? `Unclassified failure. Recent output:\n${tail}` : 'Unclassified failure.',
|
|
69
|
+
suggestedTools: ['collect_logs', 'screenshot', 'doctor'],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=diagnosis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosis.js","sourceRoot":"","sources":["../../src/driver/diagnosis.ts"],"names":[],"mappings":"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"}
|
package/dist/driver/doctor.d.ts
CHANGED
|
@@ -8,4 +8,10 @@ export interface DoctorCheck {
|
|
|
8
8
|
export declare function runDoctor(config: ResolvedConfig): DoctorCheck[];
|
|
9
9
|
export declare function formatDoctorReport(checks: DoctorCheck[]): string;
|
|
10
10
|
export declare function doctorHasFailures(checks: DoctorCheck[]): boolean;
|
|
11
|
+
export declare function formatDoctorJson(checks: DoctorCheck[]): string;
|
|
12
|
+
export declare function buildDoctorResult(checks: DoctorCheck[]): {
|
|
13
|
+
checks: DoctorCheck[];
|
|
14
|
+
hasFailures: boolean;
|
|
15
|
+
blockers: string[];
|
|
16
|
+
};
|
|
11
17
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/driver/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/driver/doctor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW,EAAE,CAgF/D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAMhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAEhE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAE9D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE;;;;EAOtD"}
|
package/dist/driver/doctor.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import { commandExists, runCommand } from './exec.js';
|
|
3
|
+
import { checkLogcatAvailable, checkMetroLog, checkSimLogAvailable } from './logs.js';
|
|
3
4
|
function push(checks, name, status, message) {
|
|
4
5
|
checks.push({ name, status, message });
|
|
5
6
|
}
|
|
@@ -49,6 +50,14 @@ export function runDoctor(config) {
|
|
|
49
50
|
else {
|
|
50
51
|
push(checks, 'smokeFlows', 'warn', 'Nothing in smokeFlows; run-all will fail');
|
|
51
52
|
}
|
|
53
|
+
if (config.log) {
|
|
54
|
+
const metro = checkMetroLog(config);
|
|
55
|
+
push(checks, 'log.metro', metro.ok ? 'ok' : 'warn', metro.message);
|
|
56
|
+
const logcat = checkLogcatAvailable();
|
|
57
|
+
push(checks, 'log.logcat', logcat.ok ? 'ok' : 'warn', logcat.message);
|
|
58
|
+
const sim = checkSimLogAvailable();
|
|
59
|
+
push(checks, 'log.sim', sim.ok ? 'ok' : 'warn', sim.message);
|
|
60
|
+
}
|
|
52
61
|
return checks;
|
|
53
62
|
}
|
|
54
63
|
export function formatDoctorReport(checks) {
|
|
@@ -61,4 +70,15 @@ export function formatDoctorReport(checks) {
|
|
|
61
70
|
export function doctorHasFailures(checks) {
|
|
62
71
|
return checks.some((check) => check.status === 'fail');
|
|
63
72
|
}
|
|
73
|
+
export function formatDoctorJson(checks) {
|
|
74
|
+
return JSON.stringify(buildDoctorResult(checks), null, 2);
|
|
75
|
+
}
|
|
76
|
+
export function buildDoctorResult(checks) {
|
|
77
|
+
const blockers = checks.filter((c) => c.status === 'fail').map((c) => `${c.name}: ${c.message}`);
|
|
78
|
+
return {
|
|
79
|
+
checks,
|
|
80
|
+
hasFailures: blockers.length > 0,
|
|
81
|
+
blockers,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
64
84
|
//# sourceMappingURL=doctor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/driver/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/driver/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/driver/exec.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export interface RunCommandOptions {
|
|
|
10
10
|
allowFailure?: boolean;
|
|
11
11
|
encoding?: BufferEncoding | 'buffer';
|
|
12
12
|
timeoutMs?: number;
|
|
13
|
+
maxBufferBytes?: number;
|
|
13
14
|
}
|
|
14
15
|
export declare function withMaestroPath(env?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
15
16
|
export declare function runCommand(command: string, args: string[], options?: RunCommandOptions): CommandResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/driver/exec.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/driver/exec.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAKvF;AAQD,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,iBAAsB,GAC9B,aAAa,CAqDf;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAQ/E"}
|
package/dist/driver/exec.js
CHANGED
|
@@ -14,17 +14,20 @@ function formatCommandFailure(command, args, result) {
|
|
|
14
14
|
}
|
|
15
15
|
export function runCommand(command, args, options = {}) {
|
|
16
16
|
const encoding = options.encoding ?? 'utf-8';
|
|
17
|
+
const maxBuffer = options.maxBufferBytes ?? 16 * 1024 * 1024;
|
|
17
18
|
const spawnOptions = encoding === 'buffer'
|
|
18
19
|
? {
|
|
19
20
|
cwd: options.cwd,
|
|
20
21
|
env: withMaestroPath(options.env),
|
|
21
22
|
timeout: options.timeoutMs,
|
|
23
|
+
maxBuffer,
|
|
22
24
|
}
|
|
23
25
|
: {
|
|
24
26
|
encoding,
|
|
25
27
|
cwd: options.cwd,
|
|
26
28
|
env: withMaestroPath(options.env),
|
|
27
29
|
timeout: options.timeoutMs,
|
|
30
|
+
maxBuffer,
|
|
28
31
|
};
|
|
29
32
|
const result = spawnSync(command, args, spawnOptions);
|
|
30
33
|
if (result.error) {
|
package/dist/driver/exec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/driver/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/driver/exec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ResolvedConfig } from '../config.js';
|
|
2
|
+
import type { ValidateFlowResult, WriteFlowResult } from '../results/types.js';
|
|
3
|
+
export type FlowTemplate = 'login' | 'deeplink' | 'smoke';
|
|
4
|
+
export declare function resolveFlowFilePath(config: ResolvedConfig, flow: string): string;
|
|
5
|
+
export declare function validateFlow(config: ResolvedConfig, flow: string): ValidateFlowResult;
|
|
6
|
+
export declare function writeFlow(config: ResolvedConfig, flow: string, content?: string, template?: FlowTemplate, overwrite?: boolean): WriteFlowResult;
|
|
7
|
+
export declare function resolveExistingFlowPath(config: ResolvedConfig, flow: string): string;
|
|
8
|
+
//# sourceMappingURL=flow-io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-io.d.ts","sourceRoot":"","sources":["../../src/driver/flow-io.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI/E,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AA6B1D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhF;AAsBD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAqDrF;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,YAAY,EACvB,SAAS,UAAQ,GAChB,eAAe,CAuBjB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpF"}
|