nativeapptemplate-agent 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +45 -15
  3. package/dist/agents/judge.d.ts.map +1 -1
  4. package/dist/agents/judge.js +8 -2
  5. package/dist/agents/judge.js.map +1 -1
  6. package/dist/agents/repair.d.ts +5 -0
  7. package/dist/agents/repair.d.ts.map +1 -1
  8. package/dist/agents/repair.js +9 -1
  9. package/dist/agents/repair.js.map +1 -1
  10. package/dist/agents/types.d.ts +14 -0
  11. package/dist/agents/types.d.ts.map +1 -1
  12. package/dist/agents/workers/android.d.ts.map +1 -1
  13. package/dist/agents/workers/android.js +27 -3
  14. package/dist/agents/workers/android.js.map +1 -1
  15. package/dist/agents/workers/copy.d.ts +1 -0
  16. package/dist/agents/workers/copy.d.ts.map +1 -1
  17. package/dist/agents/workers/copy.js +23 -4
  18. package/dist/agents/workers/copy.js.map +1 -1
  19. package/dist/agents/workers/ios.d.ts.map +1 -1
  20. package/dist/agents/workers/ios.js +23 -3
  21. package/dist/agents/workers/ios.js.map +1 -1
  22. package/dist/agents/workers/rails.d.ts.map +1 -1
  23. package/dist/agents/workers/rails.js +6 -1
  24. package/dist/agents/workers/rails.js.map +1 -1
  25. package/dist/app-domain.d.ts +32 -0
  26. package/dist/app-domain.d.ts.map +1 -0
  27. package/dist/app-domain.js +93 -0
  28. package/dist/app-domain.js.map +1 -0
  29. package/dist/dispatch.d.ts +7 -0
  30. package/dist/dispatch.d.ts.map +1 -1
  31. package/dist/dispatch.js +61 -10
  32. package/dist/dispatch.js.map +1 -1
  33. package/dist/env-bridge.d.ts +1 -0
  34. package/dist/env-bridge.d.ts.map +1 -1
  35. package/dist/env-bridge.js +53 -16
  36. package/dist/env-bridge.js.map +1 -1
  37. package/dist/index.d.ts +4 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +55 -9
  40. package/dist/index.js.map +1 -1
  41. package/dist/mcp.d.ts +5 -1
  42. package/dist/mcp.d.ts.map +1 -1
  43. package/dist/mcp.js +43 -16
  44. package/dist/mcp.js.map +1 -1
  45. package/dist/mobile.d.ts +1 -1
  46. package/dist/mobile.d.ts.map +1 -1
  47. package/dist/mobile.js +3 -3
  48. package/dist/mobile.js.map +1 -1
  49. package/dist/models.d.ts +6 -0
  50. package/dist/models.d.ts.map +1 -1
  51. package/dist/models.js +11 -0
  52. package/dist/models.js.map +1 -1
  53. package/dist/preflight.d.ts +27 -0
  54. package/dist/preflight.d.ts.map +1 -0
  55. package/dist/preflight.js +106 -0
  56. package/dist/preflight.js.map +1 -0
  57. package/dist/report/collect.d.ts +5 -0
  58. package/dist/report/collect.d.ts.map +1 -1
  59. package/dist/report/collect.js +15 -0
  60. package/dist/report/collect.js.map +1 -1
  61. package/dist/report/model.d.ts +14 -0
  62. package/dist/report/model.d.ts.map +1 -1
  63. package/dist/report/render.d.ts.map +1 -1
  64. package/dist/report/render.js +69 -6
  65. package/dist/report/render.js.map +1 -1
  66. package/dist/report/theme.d.ts +1 -1
  67. package/dist/report/theme.d.ts.map +1 -1
  68. package/dist/report/theme.js +1 -0
  69. package/dist/report/theme.js.map +1 -1
  70. package/dist/run-options.d.ts +7 -0
  71. package/dist/run-options.d.ts.map +1 -0
  72. package/dist/run-options.js +24 -0
  73. package/dist/run-options.js.map +1 -0
  74. package/dist/structured-output.d.ts +7 -0
  75. package/dist/structured-output.d.ts.map +1 -1
  76. package/dist/structured-output.js +10 -1
  77. package/dist/structured-output.js.map +1 -1
  78. package/dist/validation/autoformat.d.ts +9 -0
  79. package/dist/validation/autoformat.d.ts.map +1 -0
  80. package/dist/validation/autoformat.js +131 -0
  81. package/dist/validation/autoformat.js.map +1 -0
  82. package/dist/validation/launch.d.ts +23 -2
  83. package/dist/validation/launch.d.ts.map +1 -1
  84. package/dist/validation/launch.js +47 -18
  85. package/dist/validation/launch.js.map +1 -1
  86. package/dist/validation/layer1.d.ts.map +1 -1
  87. package/dist/validation/layer1.js +4 -0
  88. package/dist/validation/layer1.js.map +1 -1
  89. package/dist/validation/layer3.d.ts +1 -0
  90. package/dist/validation/layer3.d.ts.map +1 -1
  91. package/dist/validation/layer3.js +20 -3
  92. package/dist/validation/layer3.js.map +1 -1
  93. package/dist/validation/protected-references.d.ts +2 -0
  94. package/dist/validation/protected-references.d.ts.map +1 -0
  95. package/dist/validation/protected-references.js +18 -0
  96. package/dist/validation/protected-references.js.map +1 -0
  97. package/dist/validation/run-step.d.ts +16 -0
  98. package/dist/validation/run-step.d.ts.map +1 -0
  99. package/dist/validation/run-step.js +49 -0
  100. package/dist/validation/run-step.js.map +1 -0
  101. package/dist/validation/scenarios/queue.d.ts.map +1 -1
  102. package/dist/validation/scenarios/queue.js +7 -3
  103. package/dist/validation/scenarios/queue.js.map +1 -1
  104. package/dist/validation/stage2-judge.d.ts +4 -2
  105. package/dist/validation/stage2-judge.d.ts.map +1 -1
  106. package/dist/validation/stage2-judge.js +79 -4
  107. package/dist/validation/stage2-judge.js.map +1 -1
  108. package/dist/validation/test-suites.d.ts +10 -0
  109. package/dist/validation/test-suites.d.ts.map +1 -0
  110. package/dist/validation/test-suites.js +135 -0
  111. package/dist/validation/test-suites.js.map +1 -0
  112. package/package.json +1 -1
  113. package/scripts/ruby/rename.rb +97 -2
@@ -0,0 +1,131 @@
1
+ import { access, readdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { trace } from "../trace.js";
4
+ import { commandAvailable, runStep, tailLines, withMisePrefix } from "./run-step.js";
5
+ // The rename changes identifier lengths and alphabetical order, which the
6
+ // substrates' own lint configs then flag although the builds pass (#149):
7
+ // RuboCop Layout/HashAlignment when shopkeeper_auth becomes teammate_auth,
8
+ // ktlint import ordering when ShopkeeperLocaleUpdate becomes
9
+ // TeammateLocaleUpdate. Run each substrate's autocorrecting formatter on the
10
+ // generated project and report whatever it could not fix.
11
+ const BUNDLE_CHECK_TIMEOUT_MS = 120_000;
12
+ const BUNDLE_INSTALL_TIMEOUT_MS = 900_000;
13
+ const RUBOCOP_TIMEOUT_MS = 600_000;
14
+ const SPOTLESS_TIMEOUT_MS = 900_000;
15
+ const SWIFTFORMAT_TIMEOUT_MS = 300_000;
16
+ const OUTPUT_TAIL_LINES = 40;
17
+ // NATIVEAPPTEMPLATE_FORMAT=off skips the formatters (e.g. to save the
18
+ // Gradle/Bundler time on a quick run).
19
+ export function formattersEnabled() {
20
+ return (process.env['NATIVEAPPTEMPLATE_FORMAT'] ?? "").trim().toLowerCase() !== "off";
21
+ }
22
+ export async function runFormatter(platform, outDir, options = {}) {
23
+ if (!formattersEnabled())
24
+ return skipped(FORMATTER_COMMAND[platform], "NATIVEAPPTEMPLATE_FORMAT=off");
25
+ switch (platform) {
26
+ case "rails": return runRubocop(outDir, options);
27
+ case "android": return runSpotless(outDir, options);
28
+ case "ios": return runSwiftformat(outDir, options);
29
+ }
30
+ }
31
+ export function traceFormat(platform, result) {
32
+ if (result.status === "skipped") {
33
+ trace(platform, `formatter skipped (${result.command}): ${result.note ?? ""}`);
34
+ }
35
+ else if (result.status === "pass") {
36
+ trace(platform, `formatter: ${result.command} — clean (${(result.durationMs / 1000).toFixed(1)}s)`);
37
+ }
38
+ else {
39
+ trace(platform, `formatter: ${result.command} — issues left (exit ${result.exitCode ?? "none"})${result.note ? `: ${result.note}` : ""}`);
40
+ for (const line of (result.outputTail ?? "").split("\n"))
41
+ trace(platform, ` ${line}`);
42
+ }
43
+ }
44
+ const FORMATTER_COMMAND = {
45
+ rails: "bin/rubocop -a",
46
+ android: "./gradlew spotlessApply",
47
+ ios: "swiftformat",
48
+ };
49
+ async function runRubocop(outDir, options) {
50
+ if (!(await exists(join(outDir, "bin", "rubocop"))))
51
+ return skipped("bin/rubocop -a", "no bin/rubocop in the generated app");
52
+ const useMise = options.useMise ?? (await commandAvailable("mise", options.env));
53
+ const env = options.env;
54
+ // bin/rubocop loads the bundle; install it first as Layer 2 would.
55
+ if (await exists(join(outDir, "Gemfile"))) {
56
+ const check = await runStep(outDir, ["bundle", "check"], { timeoutMs: BUNDLE_CHECK_TIMEOUT_MS, useMise, ...(env ? { env } : {}) });
57
+ if (check.exitCode !== 0) {
58
+ const install = await runStep(outDir, ["bundle", "install"], { timeoutMs: BUNDLE_INSTALL_TIMEOUT_MS, useMise, ...(env ? { env } : {}) });
59
+ if (install.exitCode !== 0) {
60
+ return fromRun(withMisePrefix("bundle install", useMise), install, "RuboCop not run: bundle install failed");
61
+ }
62
+ }
63
+ }
64
+ const run = await runStep(outDir, ["bin/rubocop", "-a"], { timeoutMs: RUBOCOP_TIMEOUT_MS, useMise, ...(env ? { env } : {}) });
65
+ return fromRun(withMisePrefix("bin/rubocop -a", useMise), run);
66
+ }
67
+ async function runSpotless(outDir, options) {
68
+ if (!(await exists(join(outDir, "gradlew"))))
69
+ return skipped("./gradlew spotlessApply", "no ./gradlew wrapper in the generated app");
70
+ const run = await runStep(outDir, ["./gradlew", "spotlessApply", "--no-daemon"], {
71
+ timeoutMs: SPOTLESS_TIMEOUT_MS,
72
+ ...(options.env ? { env: options.env } : {}),
73
+ });
74
+ return fromRun("./gradlew spotlessApply", run);
75
+ }
76
+ async function runSwiftformat(outDir, options) {
77
+ // The iOS templates format their app sources only (`make format`:
78
+ // `swiftformat NativeAppTemplate`); their test targets aren't kept
79
+ // SwiftFormat-clean, so formatting "." would rewrite dozens of test files
80
+ // the rename never touched.
81
+ const target = (await appSourceDir(outDir)) ?? ".";
82
+ const command = `swiftformat ${target}`;
83
+ if (!(await commandAvailable("swiftformat", options.env)))
84
+ return skipped(command, "swiftformat not on PATH");
85
+ const run = await runStep(outDir, ["swiftformat", target], {
86
+ timeoutMs: SWIFTFORMAT_TIMEOUT_MS,
87
+ ...(options.env ? { env: options.env } : {}),
88
+ });
89
+ return fromRun(command, run);
90
+ }
91
+ // <Product>.xcodeproj's sibling <Product>/ directory, when there is one.
92
+ async function appSourceDir(outDir) {
93
+ let entries;
94
+ try {
95
+ entries = await readdir(outDir);
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ const project = entries.find((e) => e.endsWith(".xcodeproj"));
101
+ if (!project)
102
+ return null;
103
+ const name = project.slice(0, -".xcodeproj".length);
104
+ return entries.includes(name) ? name : null;
105
+ }
106
+ function fromRun(command, run, failNote) {
107
+ const pass = run.exitCode === 0;
108
+ const tail = tailLines(run.output, OUTPUT_TAIL_LINES);
109
+ return {
110
+ status: pass ? "pass" : "fail",
111
+ command,
112
+ exitCode: run.exitCode,
113
+ durationMs: run.durationMs,
114
+ ...(tail ? { outputTail: tail } : {}),
115
+ ...(!pass && failNote ? { note: failNote } : {}),
116
+ ...(!pass && !failNote && run.timedOut ? { note: "timed out" } : {}),
117
+ };
118
+ }
119
+ function skipped(command, note) {
120
+ return { status: "skipped", command, exitCode: null, durationMs: 0, note };
121
+ }
122
+ async function exists(path) {
123
+ try {
124
+ await access(path);
125
+ return true;
126
+ }
127
+ catch {
128
+ return false;
129
+ }
130
+ }
131
+ //# sourceMappingURL=autoformat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoformat.js","sourceRoot":"","sources":["../../src/validation/autoformat.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,28 @@ export type LaunchResult = {
3
3
  command: string;
4
4
  durationMs: number;
5
5
  error?: string;
6
+ warnings?: readonly string[];
6
7
  };
8
+ export declare const APP_UNDER_TEST_LOCALE = "en-US";
9
+ export declare const IOS_ENGLISH_LAUNCH_ARGS: readonly ["-AppleLanguages", "(en)", "-AppleLocale", "en_US"];
10
+ export declare function iosLaunchArgs(bundleId: string): readonly string[];
11
+ export declare function androidAppLocaleArgs(packageName: string): readonly string[];
12
+ export type RunResult = {
13
+ ok: boolean;
14
+ error?: string;
15
+ };
16
+ export type CaptureResult = {
17
+ ok: true;
18
+ stdout: string;
19
+ } | {
20
+ ok: false;
21
+ error: string;
22
+ };
23
+ export type LaunchExec = {
24
+ run(cmd: string, args: readonly string[], timeoutMs: number): Promise<RunResult>;
25
+ capture(cmd: string, args: readonly string[], timeoutMs: number): Promise<CaptureResult>;
26
+ };
27
+ export declare const defaultLaunchExec: LaunchExec;
7
28
  export type IosLaunchInput = {
8
29
  platform: "ios";
9
30
  appPath: string;
@@ -17,7 +38,7 @@ export type AndroidLaunchInput = {
17
38
  timeoutMs?: number;
18
39
  };
19
40
  export type LaunchInput = IosLaunchInput | AndroidLaunchInput;
20
- export declare function installAndLaunch(input: LaunchInput): Promise<LaunchResult>;
41
+ export declare function installAndLaunch(input: LaunchInput, exec?: LaunchExec): Promise<LaunchResult>;
21
42
  type AdbTargeting = {
22
43
  ok: true;
23
44
  serial?: string;
@@ -25,7 +46,7 @@ type AdbTargeting = {
25
46
  ok: false;
26
47
  error: string;
27
48
  };
28
- export declare function selectAdbTarget(adb: string, timeoutMs: number): Promise<AdbTargeting>;
49
+ export declare function selectAdbTarget(adb: string, timeoutMs: number, exec?: LaunchExec): Promise<AdbTargeting>;
29
50
  export declare function parseAdbDevices(stdout: string): readonly string[];
30
51
  export {};
31
52
  //# sourceMappingURL=launch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/validation/launch.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,kBAAkB,CAAC;AA+B9D,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAQhF;AAkGD,KAAK,YAAY,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAOjC,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB3F;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAejE"}
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../src/validation/launch.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,CAAC;AAKF,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,uBAAuB,+DAAgE,CAAC;AAErG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEjE;AAID,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE3E;AAED,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAIxF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1F,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAG/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,KAAK,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAgC9D,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,GAAE,UAA8B,GAAG,OAAO,CAAC,YAAY,CAAC,CAQtH;AAgHD,KAAK,YAAY,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAOjC,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,UAA8B,GAAG,OAAO,CAAC,YAAY,CAAC,CAiBjI;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAejE"}
@@ -1,6 +1,23 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { scrubbedEnv } from "../env.js";
3
3
  import { resolveAdbPath } from "../adb.js";
4
+ // Stage 2's scripted scenario waits for English UI text ("Welcome to", button
5
+ // labels), but the generated apps follow the device language. So the app
6
+ // under test is launched in English whatever the sim/emulator is set to (#159).
7
+ export const APP_UNDER_TEST_LOCALE = "en-US";
8
+ export const IOS_ENGLISH_LAUNCH_ARGS = ["-AppleLanguages", "(en)", "-AppleLocale", "en_US"];
9
+ export function iosLaunchArgs(bundleId) {
10
+ return ["simctl", "launch", "booted", bundleId, ...IOS_ENGLISH_LAUNCH_ARGS];
11
+ }
12
+ // Per-app locale (Android 13 / API 33+). The setting survives relaunches and
13
+ // is cleared by the next run's uninstall.
14
+ export function androidAppLocaleArgs(packageName) {
15
+ return ["shell", "cmd", "locale", "set-app-locales", packageName, "--locales", APP_UNDER_TEST_LOCALE];
16
+ }
17
+ export const defaultLaunchExec = {
18
+ run: (cmd, args, timeoutMs) => runOnce(cmd, args, timeoutMs),
19
+ capture: (cmd, args, timeoutMs) => runCapture(cmd, args, timeoutMs),
20
+ };
4
21
  const DEFAULT_TIMEOUT_MS = 60_000;
5
22
  // Install and launch the generated app on whatever sim/emulator is currently
6
23
  // booted. Discovery (finding the .app / .apk artifact, deriving the bundle ID
@@ -10,10 +27,11 @@ const DEFAULT_TIMEOUT_MS = 60_000;
10
27
  // Chain per platform (a best-effort uninstall runs first — see below):
11
28
  // iOS: xcrun simctl uninstall booted <bundleId> (best-effort)
12
29
  // xcrun simctl install booted <appPath>
13
- // xcrun simctl launch booted <bundleId>
30
+ // xcrun simctl launch booted <bundleId> -AppleLanguages "(en)" -AppleLocale en_US
14
31
  // Android: adb uninstall <package> (best-effort)
15
32
  // adb install -r <apkPath>
16
33
  // adb shell pm grant <package> POST_NOTIFICATIONS (best-effort)
34
+ // adb shell cmd locale set-app-locales <package> --locales en-US (API 33+; warns below)
17
35
  // adb shell monkey -p <package> -c android.intent.category.LAUNCHER 1
18
36
  //
19
37
  // The leading uninstall clears prior per-run state — notably a Keychain/app
@@ -29,24 +47,25 @@ const DEFAULT_TIMEOUT_MS = 60_000;
29
47
  // Screen-readiness polling is NOT done here; the caller should sleep briefly
30
48
  // before captureScreenshot() so the home screen has rendered. A future PR may
31
49
  // add an explicit ready-poll using accessibility tree or pixel diff.
32
- export async function installAndLaunch(input) {
50
+ export async function installAndLaunch(input, exec = defaultLaunchExec) {
33
51
  const timeoutMs = input.timeoutMs ?? DEFAULT_TIMEOUT_MS;
34
52
  switch (input.platform) {
35
53
  case "ios":
36
- return installAndLaunchIos(input.appPath, input.bundleId, timeoutMs);
54
+ return installAndLaunchIos(input.appPath, input.bundleId, timeoutMs, exec);
37
55
  case "android":
38
- return installAndLaunchAndroid(input.apkPath, input.packageName, timeoutMs);
56
+ return installAndLaunchAndroid(input.apkPath, input.packageName, timeoutMs, exec);
39
57
  }
40
58
  }
41
- async function installAndLaunchIos(appPath, bundleId, timeoutMs) {
59
+ async function installAndLaunchIos(appPath, bundleId, timeoutMs, exec) {
42
60
  const started = Date.now();
43
61
  const uninstallCmd = `xcrun simctl uninstall booted ${bundleId}`;
44
62
  const installCmd = `xcrun simctl install booted ${appPath}`;
45
- const launchCmd = `xcrun simctl launch booted ${bundleId}`;
63
+ const launchArgs = iosLaunchArgs(bundleId);
64
+ const launchCmd = `xcrun ${launchArgs.map((a) => (a.includes("(") ? `"${a}"` : a)).join(" ")}`;
46
65
  // Best-effort clean: drop any prior install (and its stale auth/Keychain
47
66
  // state) so this run starts fresh. Ignore errors (e.g. not installed yet).
48
- await runOnce("xcrun", ["simctl", "uninstall", "booted", bundleId], timeoutMs);
49
- const install = await runOnce("xcrun", ["simctl", "install", "booted", appPath], timeoutMs);
67
+ await exec.run("xcrun", ["simctl", "uninstall", "booted", bundleId], timeoutMs);
68
+ const install = await exec.run("xcrun", ["simctl", "install", "booted", appPath], timeoutMs);
50
69
  if (!install.ok) {
51
70
  return {
52
71
  ok: false,
@@ -55,7 +74,7 @@ async function installAndLaunchIos(appPath, bundleId, timeoutMs) {
55
74
  ...(install.error !== undefined ? { error: install.error } : {}),
56
75
  };
57
76
  }
58
- const launch = await runOnce("xcrun", ["simctl", "launch", "booted", bundleId], timeoutMs);
77
+ const launch = await exec.run("xcrun", launchArgs, timeoutMs);
59
78
  return {
60
79
  ok: launch.ok,
61
80
  command: `${uninstallCmd} ; ${installCmd} && ${launchCmd}`,
@@ -63,7 +82,7 @@ async function installAndLaunchIos(appPath, bundleId, timeoutMs) {
63
82
  ...(launch.ok || launch.error === undefined ? {} : { error: launch.error }),
64
83
  };
65
84
  }
66
- async function installAndLaunchAndroid(apkPath, packageName, timeoutMs) {
85
+ async function installAndLaunchAndroid(apkPath, packageName, timeoutMs, exec) {
67
86
  const adb = resolveAdbPath();
68
87
  const started = Date.now();
69
88
  // adb fails with "more than one device/emulator" when >1 device is
@@ -73,7 +92,7 @@ async function installAndLaunchAndroid(apkPath, packageName, timeoutMs) {
73
92
  // and are reproducible). If exactly one device, pass through with no
74
93
  // -s. If zero, fail fast with a useful error rather than letting adb
75
94
  // produce its terse "no devices/emulators found".
76
- const targeting = await selectAdbTarget(adb, timeoutMs);
95
+ const targeting = await selectAdbTarget(adb, timeoutMs, exec);
77
96
  if (!targeting.ok) {
78
97
  return {
79
98
  ok: false,
@@ -87,12 +106,13 @@ async function installAndLaunchAndroid(apkPath, packageName, timeoutMs) {
87
106
  const uninstallCmd = `${adb}${targetForCmd} uninstall ${packageName}`;
88
107
  const installCmd = `${adb}${targetForCmd} install -r ${apkPath}`;
89
108
  const grantCmd = `${adb}${targetForCmd} shell pm grant ${packageName} android.permission.POST_NOTIFICATIONS`;
109
+ const localeCmd = `${adb}${targetForCmd} ${androidAppLocaleArgs(packageName).join(" ")}`;
90
110
  const launchCmd = `${adb}${targetForCmd} shell monkey -p ${packageName} -c android.intent.category.LAUNCHER 1`;
91
111
  // Best-effort clean: clear prior app data (incl. stale auth) before
92
112
  // reinstalling. Ignore errors — `uninstall` fails when the package isn't
93
113
  // present (first run).
94
- await runOnce(adb, [...targetArgs, "uninstall", packageName], timeoutMs);
95
- const install = await runOnce(adb, [...targetArgs, "install", "-r", apkPath], timeoutMs);
114
+ await exec.run(adb, [...targetArgs, "uninstall", packageName], timeoutMs);
115
+ const install = await exec.run(adb, [...targetArgs, "install", "-r", apkPath], timeoutMs);
96
116
  if (!install.ok) {
97
117
  return {
98
118
  ok: false,
@@ -107,13 +127,22 @@ async function installAndLaunchAndroid(apkPath, packageName, timeoutMs) {
107
127
  // fails Layer 3's "renders-cleanly" rubric. Best-effort: on older API
108
128
  // levels (where it isn't a runtime permission) or apps that don't declare
109
129
  // it, `pm grant` errors — we ignore the result so it never blocks launch.
110
- await runOnce(adb, [...targetArgs, "shell", "pm", "grant", packageName, "android.permission.POST_NOTIFICATIONS"], timeoutMs);
111
- const launch = await runOnce(adb, [...targetArgs, "shell", "monkey", "-p", packageName, "-c", "android.intent.category.LAUNCHER", "1"], timeoutMs);
130
+ await exec.run(adb, [...targetArgs, "shell", "pm", "grant", packageName, "android.permission.POST_NOTIFICATIONS"], timeoutMs);
131
+ // Launch in English whatever the device language (#159). `cmd locale
132
+ // set-app-locales` needs Android 13 (API 33+); on older devices it fails —
133
+ // launch anyway and say so, since the app then follows the device language.
134
+ const warnings = [];
135
+ const locale = await exec.run(adb, [...targetArgs, ...androidAppLocaleArgs(packageName)], timeoutMs);
136
+ if (!locale.ok) {
137
+ warnings.push(`could not set ${packageName}'s app locale to ${APP_UNDER_TEST_LOCALE} (needs Android 13 / API 33+): ${locale.error ?? "unknown error"} — the app follows the device language, and Stage 2 needs it in English`);
138
+ }
139
+ const launch = await exec.run(adb, [...targetArgs, "shell", "monkey", "-p", packageName, "-c", "android.intent.category.LAUNCHER", "1"], timeoutMs);
112
140
  return {
113
141
  ok: launch.ok,
114
- command: `${uninstallCmd} ; ${installCmd} && ${grantCmd} && ${launchCmd}`,
142
+ command: `${uninstallCmd} ; ${installCmd} && ${grantCmd} && ${localeCmd} && ${launchCmd}`,
115
143
  durationMs: Date.now() - started,
116
144
  ...(launch.ok || launch.error === undefined ? {} : { error: launch.error }),
145
+ ...(warnings.length > 0 ? { warnings } : {}),
117
146
  };
118
147
  }
119
148
  // Picks the right `adb -s <serial>` target when multiple devices are
@@ -121,11 +150,11 @@ async function installAndLaunchAndroid(apkPath, packageName, timeoutMs) {
121
150
  // emulator-* (reliable, reproducible) > first device. Returns
122
151
  // { ok:true, serial:undefined } when exactly one device is attached
123
152
  // (no -s needed; adb defaults work fine).
124
- export async function selectAdbTarget(adb, timeoutMs) {
153
+ export async function selectAdbTarget(adb, timeoutMs, exec = defaultLaunchExec) {
125
154
  const override = process.env['NATIVEAPPTEMPLATE_ADB_SERIAL'];
126
155
  if (override)
127
156
  return { ok: true, serial: override };
128
- const list = await runCapture(adb, ["devices"], timeoutMs);
157
+ const list = await exec.capture(adb, ["devices"], timeoutMs);
129
158
  if (!list.ok) {
130
159
  return { ok: false, error: list.error ?? `${adb} devices failed` };
131
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/validation/launch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/validation/launch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"layer1.d.ts","sourceRoot":"","sources":["../../src/validation/layer1.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AAyCF,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAmCzE"}
1
+ {"version":3,"file":"layer1.d.ts","sourceRoot":"","sources":["../../src/validation/layer1.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B,CAAC;AAyCF,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAqCzE"}
@@ -1,5 +1,6 @@
1
1
  import { readdir, readFile, stat } from "node:fs/promises";
2
2
  import { extname, join, relative, basename, sep } from "node:path";
3
+ import { protectedSpans } from "./protected-references.js";
3
4
  const TEXT_EXTS = new Set([
4
5
  ".rb", ".erb", ".yml", ".yaml", ".json", ".md", ".gemspec", ".rake", ".ru",
5
6
  ".txt", ".sample", ".example", ".conf", ".html", ".css", ".scss", ".js", ".mjs",
@@ -51,12 +52,15 @@ export async function runLayer1(input) {
51
52
  const lines = content.split("\n");
52
53
  for (let i = 0; i < lines.length; i++) {
53
54
  const line = lines[i];
55
+ const kept = protectedSpans(line);
54
56
  regex.lastIndex = 0;
55
57
  let m;
56
58
  while ((m = regex.exec(line)) !== null) {
57
59
  const at = m.index;
58
60
  if (NON_DOMAIN_WORDS.some((w) => w.startsWith(m[0]) && line.startsWith(w, at)))
59
61
  continue;
62
+ if (kept.some(([start, end]) => at >= start && at < end))
63
+ continue;
60
64
  findings.push({
61
65
  token: m[0],
62
66
  file: relative(root, filePath),
@@ -1 +1 @@
1
- {"version":3,"file":"layer1.js","sourceRoot":"","sources":["../../src/validation/layer1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAmBnE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK;IAC1E,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM;IAC/E,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU;IACtF,kBAAkB,EAAE,YAAY,EAAE,WAAW;IAC7C,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM;IACxE,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc;IACjE,WAAW,EAAE,YAAY;IACzB,+EAA+E;IAC/E,8EAA8E;IAC9E,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU;IAClE,SAAS,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB;CAClE,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ;IAC9C,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ;IACzD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU;CACnD,CAAC,CAAC;AAEH,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,aAAa,GAAG,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAE7D,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,2EAA2E;AAC3E,4CAA4C;AAC5C,MAAM,gBAAgB,GAAG,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB;IAChD,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACvB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;YACpB,IAAI,CAAyB,CAAC;YAC9B,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;gBACnB,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAAE,SAAS;gBAC1F,QAAQ,CAAC,IAAI,CAAC;oBACZ,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oBACX,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;oBAC9B,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,IAAI,EAAE,IAAI;iBACX,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,OAAO,IAAI,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,GAAW,EAAE,IAAY;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtD,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC1C,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,CAAC;QACb,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"layer1.js","sourceRoot":"","sources":["../../src/validation/layer1.ts"],"names":[],"mappings":"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"}
@@ -40,4 +40,5 @@ export declare function parseVerdict(response: Anthropic.Beta.Messages.BetaMessa
40
40
  rationale: string;
41
41
  };
42
42
  export declare function runLayer3(input: Layer3Input): Promise<Layer3Result>;
43
+ export declare function firstThenTogether<T, R>(items: readonly T[], run: (item: T) => Promise<R>): Promise<R[]>;
43
44
  //# sourceMappingURL=layer3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"layer3.d.ts","sourceRoot":"","sources":["../../src/validation/layer3.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAO1C,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAcF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAcjB,CAAC;AAIX,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,GACzB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CA4BzD;AAID,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMhH;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAgCzE"}
1
+ {"version":3,"file":"layer3.d.ts","sourceRoot":"","sources":["../../src/validation/layer3.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAO1C,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAAC;AAcF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;CAcjB,CAAC;AAIX,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,eAAe,GACzB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,+BAA+B,CA4BzD;AAID,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAMhH;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAmCzE;AAID,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAK7G"}
@@ -78,8 +78,16 @@ export async function runLayer3(input) {
78
78
  const imageBase64 = png.toString("base64");
79
79
  const apiKey = process.env['NATIVEAPPTEMPLATE_AGENT_ANTHROPIC_KEY'] ?? process.env['ANTHROPIC_API_KEY'];
80
80
  const client = new Anthropic({ apiKey });
81
- const scores = await Promise.all(input.rubric.map(async (criterion) => {
82
- const samples = await Promise.all(Array.from({ length: samplesPerCriterion }, () => judgeOne(client, model, imageBase64, input.spec, criterion)));
81
+ // Every sample shares the cached prefix (system prompt + screenshot); only
82
+ // the criterion text after the breakpoint differs. Calls sent at the same
83
+ // time all miss the cache and each write it, so judge one sample first to
84
+ // write it, then send the rest together to read it (0.1× input instead of
85
+ // 1.25×).
86
+ const judge = (criterion) => judgeOne(client, model, imageBase64, input.spec, criterion);
87
+ const jobs = input.rubric.flatMap((criterion) => Array.from({ length: samplesPerCriterion }, () => criterion));
88
+ const verdicts = await firstThenTogether(jobs, judge);
89
+ const scores = input.rubric.map((criterion, index) => {
90
+ const samples = verdicts.slice(index * samplesPerCriterion, (index + 1) * samplesPerCriterion);
83
91
  const passCount = samples.filter((s) => s.pass).length;
84
92
  const median = passCount > samplesPerCriterion / 2;
85
93
  const winningSample = samples.find((s) => s.pass === median) ?? samples[0];
@@ -88,10 +96,19 @@ export async function runLayer3(input) {
88
96
  pass: median,
89
97
  rationale: winningSample.rationale,
90
98
  };
91
- }));
99
+ });
92
100
  const pass = scores.every((s) => s.pass);
93
101
  return { pass, scores };
94
102
  }
103
+ // Runs `run` on the first item alone, then on the rest at once; results keep
104
+ // the input order. Lets the first call write a prompt cache the others read.
105
+ export async function firstThenTogether(items, run) {
106
+ const [first, ...rest] = items;
107
+ if (first === undefined)
108
+ return [];
109
+ const head = await run(first);
110
+ return [head, ...(await Promise.all(rest.map(run)))];
111
+ }
95
112
  async function judgeOne(client, model, imageBase64, spec, criterion) {
96
113
  const response = await client.beta.messages.create(buildJudgeRequest(model, imageBase64, spec, criterion));
97
114
  trace("judge", `layer3 ${criterion.id}: ${usageLine(response, model)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"layer3.js","sourceRoot":"","sources":["../../src/validation/layer3.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layer3.js","sourceRoot":"","sources":["../../src/validation/layer3.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AA0BxE,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,4EAA4E;AAC5E,2CAA2C;AAC3C,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,aAAa,GAAG;;uJAEiI,CAAC;AAExJ,wEAAwE;AACxE,2EAA2E;AAC3E,yCAAyC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,2IAA2I;SACzJ;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qDAAqD;SACnE;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC/B,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAEX,6EAA6E;AAC7E,oCAAoC;AACpC,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,WAAmB,EACnB,IAAY,EACZ,SAA0B;IAE1B,OAAO;QACL,KAAK;QACL,UAAU,EAAE,UAAU;QACtB,MAAM,EAAE,aAAa;QACrB,aAAa,EAAE;YACb,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAoD,EAAE;SAC9F;QACD,KAAK,EAAE,CAAC,aAAa,CAAC;QACtB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;wBACtE,aAAa,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;qBACrC;oBACD;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,SAAS,IAAI,kBAAkB,SAAS,CAAC,QAAQ,EAAE;qBAC1D;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,qBAAqB;AACrB,MAAM,UAAU,YAAY,CAAC,QAA6C;IACxE,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,cAAc,CAA0C,CAAC;IACtG,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAkB;IAChD,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAEjD,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,IAAI,eAAe,CAAC;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,WAAW,CAAC;IAEzC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACxG,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,0EAA0E;IAC1E,0EAA0E;IAC1E,0EAA0E;IAC1E,UAAU;IACV,MAAM,KAAK,GAAG,CAAC,SAA0B,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1G,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/G,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAkB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,mBAAmB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC;QAC/F,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACvD,MAAM,MAAM,GAAG,SAAS,GAAG,mBAAmB,GAAG,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,CAAE,CAAC;QAC5E,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,aAAa,CAAC,SAAS;SACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAO,KAAmB,EAAE,GAA4B;IAC7F,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,MAAiB,EACjB,KAAa,EACb,WAAmB,EACnB,IAAY,EACZ,SAA0B;IAE1B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3G,KAAK,CAAC,OAAO,EAAE,UAAU,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IACxE,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAkB;IAC7C,OAAO;QACL,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,WAAW,EAAE,CAAC,CAAC,EAAE;YACjB,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function protectedSpans(line: string): Array<[start: number, end: number]>;
2
+ //# sourceMappingURL=protected-references.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-references.d.ts","sourceRoot":"","sources":["../../src/validation/protected-references.ts"],"names":[],"mappings":"AAYA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAIhF"}
@@ -0,0 +1,18 @@
1
+ // References to the template's own GitHub repos and the agent's name, which
2
+ // rename.rb leaves unchanged so generated apps keep working links
3
+ // (github.com/nativeapptemplate/NativeAppTemplate-iOS, not a dead
4
+ // github.com/orangebaton/OrangeBaton-iOS). Mirrors PROTECTED_REFERENCE in
5
+ // scripts/ruby/rename.rb; Layer 1 skips tokens inside these spans.
6
+ // nativeapptemplate.com domains and emails are deliberately not here: they are
7
+ // renamed to the app's own.
8
+ const PROTECTED_REFERENCE_SOURCE = [
9
+ String.raw `github\.com[/:]nativeapptemplate(?![A-Za-z0-9_-])(?:/[^\s)\]"'<>\x60]*)?`,
10
+ String.raw `(?<![A-Za-z0-9_-])nativeapptemplate-agent(?:-mcp)?(?![A-Za-z0-9_])`,
11
+ ].join("|");
12
+ export function protectedSpans(line) {
13
+ if (!line.includes("nativeapptemplate"))
14
+ return [];
15
+ const regex = new RegExp(PROTECTED_REFERENCE_SOURCE, "g");
16
+ return [...line.matchAll(regex)].map((m) => [m.index, m.index + m[0].length]);
17
+ }
18
+ //# sourceMappingURL=protected-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-references.js","sourceRoot":"","sources":["../../src/validation/protected-references.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,kEAAkE;AAClE,kEAAkE;AAClE,0EAA0E;AAC1E,mEAAmE;AACnE,+EAA+E;AAC/E,4BAA4B;AAC5B,MAAM,0BAA0B,GAAG;IACjC,MAAM,CAAC,GAAG,CAAA,0EAA0E;IACpF,MAAM,CAAC,GAAG,CAAA,oEAAoE;CAC/E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChF,CAAC"}
@@ -0,0 +1,16 @@
1
+ export type StepRun = {
2
+ exitCode: number | null;
3
+ durationMs: number;
4
+ timedOut: boolean;
5
+ output: string;
6
+ };
7
+ export type StepOptions = {
8
+ timeoutMs: number;
9
+ useMise?: boolean;
10
+ env?: NodeJS.ProcessEnv;
11
+ };
12
+ export declare function runStep(cwd: string, argv: readonly string[], options: StepOptions): Promise<StepRun>;
13
+ export declare function commandAvailable(bin: string, env?: NodeJS.ProcessEnv): Promise<boolean>;
14
+ export declare function tailLines(s: string, lines: number): string;
15
+ export declare function withMisePrefix(command: string, useMise: boolean): string;
16
+ //# sourceMappingURL=run-step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-step.d.ts","sourceRoot":"","sources":["../../src/validation/run-step.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CAAC;AAMF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BpG;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAMvF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAExE"}