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,106 @@
1
+ import { execFile } from "node:child_process";
2
+ import { resolveAdbPath } from "./adb.js";
3
+ import { scrubbedEnv } from "./env.js";
4
+ import { parseAdbDevices } from "./validation/launch.js";
5
+ export class PreflightError extends Error {
6
+ problems;
7
+ constructor(level, problems) {
8
+ super(`visual level ${level} needs a few things that aren't ready:\n${problems.map((p) => ` - ${p}`).join("\n")}`);
9
+ this.name = "PreflightError";
10
+ this.problems = problems;
11
+ }
12
+ }
13
+ export async function preflightVisual(level, deps = defaultPreflightDeps, env = process.env) {
14
+ if (level < 1)
15
+ return [];
16
+ const [ios, android, mise] = await Promise.all([
17
+ checkIos(deps, env),
18
+ checkAndroid(deps, env),
19
+ level >= 2 ? deps.hasMise() : Promise.resolve(true),
20
+ ]);
21
+ const problems = [ios, android].filter((p) => p !== undefined);
22
+ if (!mise) {
23
+ problems.push("`mise` isn't on PATH: visual level 2 boots the generated Rails API with `mise exec -- bin/dev` for the Stage 2 walk. Install it (https://mise.jdx.dev) or use --visual=1.");
24
+ }
25
+ return problems;
26
+ }
27
+ export async function assertVisualPreflight(level, deps, env) {
28
+ const problems = await preflightVisual(level, deps, env);
29
+ if (problems.length > 0)
30
+ throw new PreflightError(level, problems);
31
+ }
32
+ async function checkIos(deps, env) {
33
+ const list = await deps.bootedIosSimulators();
34
+ if (!list.ok)
35
+ return `couldn't list iOS simulators (xcrun simctl list devices booted): ${list.error}`;
36
+ const override = env["NATIVEAPPTEMPLATE_MOBILE_IOS_DEVICE"];
37
+ if (override) {
38
+ if (list.items.some((d) => d.udid === override || d.name === override))
39
+ return undefined;
40
+ const seen = list.items.map((d) => `${d.name} (${d.udid})`).join(", ") || "none";
41
+ return `NATIVEAPPTEMPLATE_MOBILE_IOS_DEVICE="${override}" is not a booted simulator (booted: ${seen}). Boot it or fix the variable.`;
42
+ }
43
+ if (list.items.length === 0) {
44
+ return 'no iOS simulator is booted. Boot one (e.g. `xcrun simctl boot "iPhone 17 Pro"`, or open Simulator.app), or use --visual=0.';
45
+ }
46
+ return undefined;
47
+ }
48
+ async function checkAndroid(deps, env) {
49
+ const list = await deps.adbDevices();
50
+ if (!list.ok)
51
+ return `couldn't list Android devices (adb devices): ${list.error}`;
52
+ const serial = env["NATIVEAPPTEMPLATE_ADB_SERIAL"];
53
+ if (serial && !list.items.includes(serial)) {
54
+ return `NATIVEAPPTEMPLATE_ADB_SERIAL="${serial}" is not attached (adb devices: ${list.items.join(", ") || "none"}). Boot it or fix the variable.`;
55
+ }
56
+ if (list.items.length === 0) {
57
+ return "no Android emulator or device is attached (adb devices lists none). Boot an emulator in Android Studio's Device Manager (or `emulator -avd <name>`), or use --visual=0.";
58
+ }
59
+ return undefined;
60
+ }
61
+ export const defaultPreflightDeps = {
62
+ async bootedIosSimulators() {
63
+ const out = await capture("xcrun", ["simctl", "list", "devices", "booted", "-j"]);
64
+ if (!out.ok)
65
+ return out;
66
+ try {
67
+ return { ok: true, items: parseBootedIosSimulators(out.stdout) };
68
+ }
69
+ catch (err) {
70
+ return { ok: false, error: `unreadable simctl output: ${err instanceof Error ? err.message : String(err)}` };
71
+ }
72
+ },
73
+ async adbDevices() {
74
+ const out = await capture(resolveAdbPath(), ["devices"]);
75
+ return out.ok ? { ok: true, items: parseAdbDevices(out.stdout) } : out;
76
+ },
77
+ async hasMise() {
78
+ return (await capture("mise", ["--version"])).ok;
79
+ },
80
+ };
81
+ // `xcrun simctl list devices booted -j`: {"devices": {"<runtime id>": [{udid, name, state}]}}.
82
+ // Only iOS runtimes count — a booted watchOS simulator can't run the app.
83
+ export function parseBootedIosSimulators(json) {
84
+ const parsed = JSON.parse(json);
85
+ const result = [];
86
+ for (const [runtime, devices] of Object.entries(parsed.devices ?? {})) {
87
+ if (!/\.iOS-/.test(runtime))
88
+ continue;
89
+ for (const d of devices) {
90
+ if (d.state === "Booted" && d.udid && d.name)
91
+ result.push({ udid: d.udid, name: d.name });
92
+ }
93
+ }
94
+ return result;
95
+ }
96
+ function capture(cmd, args) {
97
+ return new Promise((resolve) => {
98
+ execFile(cmd, [...args], { env: scrubbedEnv(), timeout: 30_000 }, (err, stdout, stderr) => {
99
+ if (err)
100
+ resolve({ ok: false, error: String(stderr).trim() || err.message });
101
+ else
102
+ resolve({ ok: true, stdout: String(stdout) });
103
+ });
104
+ });
105
+ }
106
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,14 @@ export type BuildRunReportInput = {
9
9
  agentVersion: string;
10
10
  judgeModel: string;
11
11
  visualLevel: 0 | 1 | 2;
12
+ testsEnabled?: boolean;
12
13
  startedAt: number;
13
14
  finishedAt: number;
14
15
  repairAttempts?: readonly RepairAttempt[];
16
+ appIds?: {
17
+ ios?: string;
18
+ android?: string;
19
+ };
15
20
  };
16
21
  export declare function buildRunReport(input: BuildRunReportInput): RunReport;
17
22
  export type WriteReportOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../src/report/collect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,KAAK,EAAY,aAAa,EAAE,SAAS,EAAW,MAAM,YAAY,CAAC;AAE9E,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C,CAAC;AAIF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAsCpE;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBtG;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAgBlE"}
1
+ {"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../src/report/collect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElF,OAAO,KAAK,EAAY,aAAa,EAAgB,SAAS,EAAW,MAAM,YAAY,CAAC;AAG5F,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAE1C,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC;AAIF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAwCpE;AAeD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBtG;AAID,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAgBlE"}
@@ -1,6 +1,7 @@
1
1
  import { copyFile, mkdir, readFile, writeFile } from "node:fs/promises";
2
2
  import { basename, isAbsolute, join, resolve } from "node:path";
3
3
  import { renderReport } from "./render.js";
4
+ import { appIdentifiers } from "../app-domain.js";
4
5
  // Pure assembly: fold the run's pieces into the single RunReport
5
6
  // aggregate. No I/O — writeReport handles disk.
6
7
  export function buildRunReport(input) {
@@ -12,9 +13,11 @@ export function buildRunReport(input) {
12
13
  agentVersion: input.agentVersion,
13
14
  judgeModel: input.judgeModel,
14
15
  visualLevel: input.visualLevel,
16
+ ...(input.testsEnabled ? { tests: true } : {}),
15
17
  startedAt: new Date(input.startedAt).toISOString(),
16
18
  finishedAt: new Date(input.finishedAt).toISOString(),
17
19
  durationMs: input.finishedAt - input.startedAt,
20
+ appDomain: runAppDomain(input.domain, input.appIds),
18
21
  },
19
22
  overallPass: input.judge.overallPass,
20
23
  verdict: verdictOf(input.judge),
@@ -42,6 +45,18 @@ export function buildRunReport(input) {
42
45
  : {}),
43
46
  };
44
47
  }
48
+ function runAppDomain(domain, appIds) {
49
+ const ids = appIdentifiers(domain.slug, domain.appDomain);
50
+ return {
51
+ domain: ids.domain,
52
+ custom: ids.custom,
53
+ bundleIdPrefix: ids.bundleIdPrefix,
54
+ androidPackagePrefix: ids.androidPackagePrefix,
55
+ ...(ids.androidRemapped.length > 0 ? { androidRemapped: ids.androidRemapped } : {}),
56
+ ...(appIds?.ios ? { iosBundleId: appIds.ios } : {}),
57
+ ...(appIds?.android ? { androidApplicationId: appIds.android } : {}),
58
+ };
59
+ }
45
60
  export async function writeReport(report, options) {
46
61
  const format = options.format ?? "both";
47
62
  const embed = options.embed ?? true;
@@ -1 +1 @@
1
- {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/report/collect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../src/report/collect.ts"],"names":[],"mappings":"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"}
@@ -26,9 +26,23 @@ export type RunMeta = {
26
26
  agentVersion: string;
27
27
  judgeModel: string;
28
28
  visualLevel: 0 | 1 | 2;
29
+ tests?: boolean;
29
30
  startedAt: string;
30
31
  finishedAt: string;
31
32
  durationMs: number;
33
+ appDomain?: RunAppDomain;
34
+ };
35
+ export type RunAppDomain = {
36
+ domain: string;
37
+ custom: boolean;
38
+ bundleIdPrefix: string;
39
+ androidPackagePrefix: string;
40
+ androidRemapped?: readonly {
41
+ label: string;
42
+ segment: string;
43
+ }[];
44
+ iosBundleId?: string;
45
+ androidApplicationId?: string;
32
46
  };
33
47
  export type RunReportEntity = {
34
48
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/report/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IAId,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACpD,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;KACtC,CAAC;IAGF,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAMF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/report/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IAId,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,MAAM,EAAE;QACN,UAAU,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACpD,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;KACtC,CAAC;IAGF,cAAc,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAE7B,eAAe,CAAC,EAAE,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAEhE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAMF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOtD,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,QAAa,GAAG,MAAM,CA4B7E"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOtD,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,GAAE,QAAa,GAAG,MAAM,CA8B7E"}
@@ -10,6 +10,8 @@ export function renderReport(report, assets = {}) {
10
10
  matrix(report),
11
11
  layer1Section(report),
12
12
  layer2Section(report),
13
+ formatSection(report),
14
+ testsSection(report),
13
15
  layer3Section(report, assets),
14
16
  reviewerSection(report),
15
17
  repairSection(report),
@@ -36,7 +38,7 @@ function head(report) {
36
38
  const badge = report.verdict === "pass"
37
39
  ? `<span class="badge pass">✓ Pass</span>`
38
40
  : report.verdict === "partial"
39
- ? `<span class="badge partial" title="Nothing failed, but Layer 3 (UI vision judge) did not run — set NATIVEAPPTEMPLATE_VISUAL=1">◐ Partial</span>`
41
+ ? `<span class="badge partial" title="Nothing failed, but Layer 3 (UI vision judge) did not run — re-run with --visual=1">◐ Partial</span>`
40
42
  : `<span class="badge fail">✗ Fail</span>`;
41
43
  const visual = m.visualLevel === 0 ? "off" : `level ${m.visualLevel}`;
42
44
  return `<header class="report-head">
@@ -44,10 +46,10 @@ ${badge}
44
46
  <h1>${esc(m.displayName)}</h1>
45
47
  <p class="spec">spec: <b>${esc(m.spec)}</b></p>
46
48
  <div class="meta">
47
- <span>slug: ${esc(m.slug)}</span>
49
+ <span>slug: ${esc(m.slug)}</span>${m.appDomain ? `\n<span>domain: ${esc(m.appDomain.domain)}${m.appDomain.custom ? "" : " (default)"}</span>` : ""}
48
50
  <span>agent v${esc(m.agentVersion)}</span>
49
51
  <span>judge: ${esc(m.judgeModel)}</span>
50
- <span>visual: ${visual}</span>
52
+ <span>visual: ${visual}</span>${m.tests ? "\n<span>tests: on</span>" : ""}
51
53
  <span>${fmtDuration(m.durationMs)}</span>
52
54
  <span>${esc(m.finishedAt)}</span>
53
55
  </div>
@@ -69,8 +71,18 @@ function computeGates(report) {
69
71
  ? gateOf("Layer 3 · semantic", l3, l3plats.length)
70
72
  : { label: "Layer 3 · semantic", value: "skipped", cls: "muted" },
71
73
  { label: "Reviewer · contract", value: reviewerPass ? "Pass" : "Fail", cls: reviewerPass ? "pass" : "fail" },
74
+ ...testsGate(plats),
72
75
  ];
73
76
  }
77
+ function testsGate(plats) {
78
+ const withTests = plats.filter((p) => p.tests !== undefined);
79
+ if (withTests.length === 0)
80
+ return [];
81
+ const ran = withTests.filter((p) => p.tests.status !== "skipped");
82
+ if (ran.length === 0)
83
+ return [{ label: "Test suites", value: "skipped", cls: "muted" }];
84
+ return [gateOf("Test suites", ran.filter((p) => p.tests.status === "pass").length, ran.length)];
85
+ }
74
86
  function gateOf(label, pass, total) {
75
87
  return { label, value: `${pass}/${total} pass`, cls: pass === total ? "pass" : "fail" };
76
88
  }
@@ -125,6 +137,38 @@ function layer2Section(report) {
125
137
  }).join("");
126
138
  return `<section><h2>Layer 2 — runtime (toolchain build/boot)</h2>${cards}</section>`;
127
139
  }
140
+ function formatSection(report) {
141
+ const plats = report.platforms.filter((p) => p.format !== undefined);
142
+ if (plats.length === 0)
143
+ return "";
144
+ const cards = plats.map((p) => {
145
+ const f = p.format;
146
+ const kv = f.status === "skipped"
147
+ ? `<p class="kv">command: <b>${esc(f.command)}</b><br>skipped: ${esc(f.note ?? "")}</p>`
148
+ : `<p class="kv">command: <b>${esc(f.command)}</b><br>exit: <b>${f.exitCode === null ? "—" : f.exitCode}</b> · <b>${fmtDuration(f.durationMs)}</b>${f.note ? ` · ${esc(f.note)}` : ""}</p>`;
149
+ const output = f.outputTail && f.status === "fail"
150
+ ? `<details open><summary>left after autocorrect</summary><pre>${esc(f.outputTail)}</pre></details>`
151
+ : "";
152
+ return statusCard(p.platform, f.status, kv + output);
153
+ }).join("");
154
+ return `<section><h2>Formatters — autocorrect after the rename (reported, not gated)</h2>${cards}</section>`;
155
+ }
156
+ function testsSection(report) {
157
+ const plats = report.platforms.filter((p) => p.tests !== undefined);
158
+ if (plats.length === 0)
159
+ return "";
160
+ const cards = plats.map((p) => {
161
+ const t = p.tests;
162
+ const kv = t.status === "skipped"
163
+ ? `<p class="kv">command: <b>${esc(t.command)}</b><br>skipped: ${esc(t.note ?? "")}</p>`
164
+ : `<p class="kv">command: <b>${esc(t.command)}</b><br>exit: <b>${t.exitCode === null ? "—" : t.exitCode}</b> · <b>${fmtDuration(t.durationMs)}</b>${t.note ? ` · ${esc(t.note)}` : ""}${t.summary ? `<br>result: <b>${esc(t.summary)}</b>` : ""}</p>`;
165
+ const output = t.outputTail && t.status === "fail"
166
+ ? `<details open><summary>output tail</summary><pre>${esc(t.outputTail)}</pre></details>`
167
+ : "";
168
+ return statusCard(p.platform, t.status, kv + output, "fail");
169
+ }).join("");
170
+ return `<section><h2>Test suites (NATIVEAPPTEMPLATE_TESTS=1)</h2>${cards}</section>`;
171
+ }
128
172
  function layer3Section(report, assets) {
129
173
  const plats = report.platforms.filter((p) => p.layer3 !== undefined);
130
174
  if (plats.length === 0)
@@ -188,11 +232,26 @@ function domainSection(report) {
188
232
  }).join("");
189
233
  return `<section><h2>Domain plan</h2>
190
234
  <div class="card"><h3>Rename plan</h3>${rename}</div>
191
- ${ents}</section>`;
235
+ ${appIdentifiersCard(report)}${ents}</section>`;
236
+ }
237
+ function appIdentifiersCard(report) {
238
+ const d = report.meta.appDomain;
239
+ if (!d)
240
+ return "";
241
+ const row = (label, value) => `<tr><td>${esc(label)}</td><td><code class="inline">${esc(value)}</code></td></tr>`;
242
+ const rows = [
243
+ row(d.custom ? "Domain (--domain)" : "Domain (default)", d.domain),
244
+ row(d.iosBundleId ? "iOS bundle ID" : "iOS bundle ID prefix", d.iosBundleId ?? d.bundleIdPrefix),
245
+ row(d.androidApplicationId ? "Android applicationId / package" : "Android package prefix", d.androidApplicationId ?? d.androidPackagePrefix),
246
+ ].join("");
247
+ const remapped = (d.androidRemapped ?? []).map((m) => `<p class="kv">Android package: <code class="inline">${esc(m.label)}</code> → <code class="inline">${esc(m.segment)}</code> (not a valid Java/Kotlin package segment as is)</p>`).join("");
248
+ return `<div class="card"><h3>App identifiers</h3><table class="rename"><tbody>${rows}</tbody></table>${remapped}</div>
249
+ `;
192
250
  }
193
251
  function footer(report) {
194
- const visualPrefix = report.meta.visualLevel > 0 ? `NATIVEAPPTEMPLATE_VISUAL=${report.meta.visualLevel} ` : "";
195
- const cmd = `${visualPrefix}npx nativeapptemplate-agent ${JSON.stringify(report.meta.spec)}`;
252
+ const visualFlag = report.meta.visualLevel > 0 ? ` --visual=${report.meta.visualLevel}` : "";
253
+ const testsFlag = report.meta.tests ? " --tests" : "";
254
+ const cmd = `npx nativeapptemplate-agent ${JSON.stringify(report.meta.spec)}${visualFlag}${testsFlag}`;
196
255
  return `<footer>
197
256
  <p>Reproduce this run:</p>
198
257
  <pre>${esc(cmd)}</pre>
@@ -204,6 +263,10 @@ function card(title, pass, inner) {
204
263
  const pill = pass ? `<span class="pill pass">pass</span>` : `<span class="pill fail">fail</span>`;
205
264
  return `<div class="card"><h3>${esc(title)} ${pill}</h3>${inner}</div>`;
206
265
  }
266
+ function statusCard(title, status, inner, failLabel = "issues left") {
267
+ const pill = status === "skipped" ? `<span class="pill skipped">skipped</span>` : status === "pass" ? `<span class="pill pass">pass</span>` : `<span class="pill fail">${esc(failLabel)}</span>`;
268
+ return `<div class="card"><h3>${esc(title)} ${pill}</h3>${inner}</div>`;
269
+ }
207
270
  function scoreTable(title, scores) {
208
271
  const rows = scores.map((s) => `<tr><td><code>${esc(s.criterionId)}</code></td><td>${s.pass ? `<span class="mark pass">✓</span>` : `<span class="mark fail">✗</span>`}</td><td>${esc(s.rationale)}</td></tr>`).join("");
209
272
  return `<table class="scores"><thead><tr><th colspan="3">${esc(title)}</th></tr><tr><th>Criterion</th><th>Verdict</th><th>Rationale</th></tr></thead><tbody>${rows}</tbody></table>`;
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const REPORT_CSS = "\n:root {\n --bg: #1f2933;\n --bg-2: #0b69a3;\n --panel: #243441;\n --panel-2: #1b2a38;\n --border: #3e4c59;\n --text: #f5f7fa;\n --muted: #9aa5b1;\n --accent: #40c3f7;\n --accent-2: #2bb0ed;\n --pass: #34d399;\n --fail: #f87171;\n --partial: #fbbf24;\n --na: #52606d;\n}\n* { box-sizing: border-box; }\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n background: linear-gradient(160deg, var(--bg) 0%, #14202a 60%, #0e1820 100%);\n color: var(--text);\n line-height: 1.5;\n padding: 32px 20px 80px;\n}\n.wrap { max-width: 1100px; margin: 0 auto; }\na { color: var(--accent); }\nheader.report-head {\n border-bottom: 1px solid var(--border);\n padding-bottom: 20px;\n margin-bottom: 28px;\n}\n.badge {\n display: inline-block;\n font-size: 13px;\n font-weight: 700;\n letter-spacing: 1px;\n padding: 6px 14px;\n border-radius: 20px;\n text-transform: uppercase;\n}\n.badge.pass { background: rgba(52,211,153,0.16); color: var(--pass); border: 1px solid rgba(52,211,153,0.4); }\n.badge.fail { background: rgba(248,113,113,0.16); color: var(--fail); border: 1px solid rgba(248,113,113,0.4); }\n.badge.partial { background: rgba(251,191,36,0.16); color: var(--partial); border: 1px solid rgba(251,191,36,0.4); }\nh1 { font-size: 30px; font-weight: 800; letter-spacing: -0.5px; margin: 14px 0 4px; }\n.spec { color: var(--muted); font-size: 16px; margin: 0 0 12px; }\n.spec b { color: var(--text); font-weight: 600; }\n.meta { color: var(--muted); font-size: 13px; font-family: \"SF Mono\", Menlo, monospace; }\n.meta span { margin-right: 16px; white-space: nowrap; }\nsection { margin: 30px 0; }\nh2 {\n font-size: 13px; text-transform: uppercase; letter-spacing: 1.2px;\n color: var(--accent); margin: 0 0 14px; font-weight: 700;\n}\n.gates { display: flex; flex-wrap: wrap; gap: 12px; }\n.gate {\n flex: 1 1 160px; background: var(--panel); border: 1px solid var(--border);\n border-radius: 12px; padding: 14px 16px;\n}\n.gate .label { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.6px; }\n.gate .value { font-size: 22px; font-weight: 800; margin-top: 4px; }\n.gate.pass .value { color: var(--pass); }\n.gate.fail .value { color: var(--fail); }\n.gate.muted .value { color: var(--muted); font-size: 15px; font-weight: 600; }\ntable { width: 100%; border-collapse: collapse; font-size: 14px; }\n.matrix th, .matrix td { padding: 10px 12px; text-align: center; border: 1px solid var(--border); }\n.matrix th:first-child, .matrix td:first-child { text-align: left; font-weight: 600; }\n.matrix thead th { background: var(--panel-2); color: var(--muted); font-weight: 600; text-transform: uppercase; font-size: 12px; letter-spacing: 0.5px; }\n.mark { font-weight: 800; font-size: 16px; }\n.mark.pass { color: var(--pass); }\n.mark.fail { color: var(--fail); }\n.mark.na { color: var(--na); }\n.card {\n background: var(--panel); border: 1px solid var(--border);\n border-radius: 12px; padding: 16px 18px; margin-bottom: 14px;\n}\n.card h3 { margin: 0 0 10px; font-size: 16px; display: flex; align-items: center; gap: 10px; }\n.pill { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 10px; text-transform: uppercase; letter-spacing: 0.5px; }\n.pill.pass { background: rgba(52,211,153,0.16); color: var(--pass); }\n.pill.fail { background: rgba(248,113,113,0.16); color: var(--fail); }\n.findings th, .findings td { padding: 7px 10px; text-align: left; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: top; }\n.findings th { color: var(--muted); font-weight: 600; }\n.findings code, code.inline { font-family: \"SF Mono\", Menlo, monospace; font-size: 12px; color: var(--accent); }\n.kv { font-family: \"SF Mono\", Menlo, monospace; font-size: 13px; color: var(--muted); }\n.kv b { color: var(--text); font-weight: 600; }\n.empty { color: var(--muted); font-style: italic; font-size: 13px; }\ndetails { margin-top: 10px; }\nsummary { cursor: pointer; color: var(--accent); font-size: 13px; }\npre {\n background: #0d1820; border: 1px solid var(--border); border-radius: 8px;\n padding: 12px; overflow-x: auto; font-size: 12px; color: #cbd2d9; margin: 10px 0 0;\n}\n.shots { display: flex; flex-wrap: wrap; gap: 14px; margin: 12px 0; }\n.shot { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: var(--panel-2); }\n.shot img { display: block; max-width: 240px; height: auto; }\n.shot .cap { font-size: 11px; color: var(--muted); padding: 6px 8px; font-family: \"SF Mono\", Menlo, monospace; }\n.shot.missing { padding: 24px; color: var(--muted); font-size: 12px; font-style: italic; max-width: 240px; }\n.scores th, .scores td { padding: 7px 10px; text-align: left; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: top; }\n.scores th { color: var(--muted); font-weight: 600; }\n.rename td { padding: 7px 10px; border-bottom: 1px solid var(--border); font-size: 13px; }\n.rename .arrow { color: var(--muted); padding: 0 8px; }\nfooter { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--border); color: var(--muted); font-size: 13px; }\nfooter pre { color: var(--text); }\n@media (max-width: 640px) {\n .gate { flex-basis: 100%; }\n .shot img { max-width: 100%; }\n}\n@media print {\n body { background: #fff; color: #111; }\n .card, .gate { break-inside: avoid; }\n}\n";
1
+ export declare const REPORT_CSS = "\n:root {\n --bg: #1f2933;\n --bg-2: #0b69a3;\n --panel: #243441;\n --panel-2: #1b2a38;\n --border: #3e4c59;\n --text: #f5f7fa;\n --muted: #9aa5b1;\n --accent: #40c3f7;\n --accent-2: #2bb0ed;\n --pass: #34d399;\n --fail: #f87171;\n --partial: #fbbf24;\n --na: #52606d;\n}\n* { box-sizing: border-box; }\nbody {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n background: linear-gradient(160deg, var(--bg) 0%, #14202a 60%, #0e1820 100%);\n color: var(--text);\n line-height: 1.5;\n padding: 32px 20px 80px;\n}\n.wrap { max-width: 1100px; margin: 0 auto; }\na { color: var(--accent); }\nheader.report-head {\n border-bottom: 1px solid var(--border);\n padding-bottom: 20px;\n margin-bottom: 28px;\n}\n.badge {\n display: inline-block;\n font-size: 13px;\n font-weight: 700;\n letter-spacing: 1px;\n padding: 6px 14px;\n border-radius: 20px;\n text-transform: uppercase;\n}\n.badge.pass { background: rgba(52,211,153,0.16); color: var(--pass); border: 1px solid rgba(52,211,153,0.4); }\n.badge.fail { background: rgba(248,113,113,0.16); color: var(--fail); border: 1px solid rgba(248,113,113,0.4); }\n.badge.partial { background: rgba(251,191,36,0.16); color: var(--partial); border: 1px solid rgba(251,191,36,0.4); }\nh1 { font-size: 30px; font-weight: 800; letter-spacing: -0.5px; margin: 14px 0 4px; }\n.spec { color: var(--muted); font-size: 16px; margin: 0 0 12px; }\n.spec b { color: var(--text); font-weight: 600; }\n.meta { color: var(--muted); font-size: 13px; font-family: \"SF Mono\", Menlo, monospace; }\n.meta span { margin-right: 16px; white-space: nowrap; }\nsection { margin: 30px 0; }\nh2 {\n font-size: 13px; text-transform: uppercase; letter-spacing: 1.2px;\n color: var(--accent); margin: 0 0 14px; font-weight: 700;\n}\n.gates { display: flex; flex-wrap: wrap; gap: 12px; }\n.gate {\n flex: 1 1 160px; background: var(--panel); border: 1px solid var(--border);\n border-radius: 12px; padding: 14px 16px;\n}\n.gate .label { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.6px; }\n.gate .value { font-size: 22px; font-weight: 800; margin-top: 4px; }\n.gate.pass .value { color: var(--pass); }\n.gate.fail .value { color: var(--fail); }\n.gate.muted .value { color: var(--muted); font-size: 15px; font-weight: 600; }\ntable { width: 100%; border-collapse: collapse; font-size: 14px; }\n.matrix th, .matrix td { padding: 10px 12px; text-align: center; border: 1px solid var(--border); }\n.matrix th:first-child, .matrix td:first-child { text-align: left; font-weight: 600; }\n.matrix thead th { background: var(--panel-2); color: var(--muted); font-weight: 600; text-transform: uppercase; font-size: 12px; letter-spacing: 0.5px; }\n.mark { font-weight: 800; font-size: 16px; }\n.mark.pass { color: var(--pass); }\n.mark.fail { color: var(--fail); }\n.mark.na { color: var(--na); }\n.card {\n background: var(--panel); border: 1px solid var(--border);\n border-radius: 12px; padding: 16px 18px; margin-bottom: 14px;\n}\n.card h3 { margin: 0 0 10px; font-size: 16px; display: flex; align-items: center; gap: 10px; }\n.pill { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 10px; text-transform: uppercase; letter-spacing: 0.5px; }\n.pill.pass { background: rgba(52,211,153,0.16); color: var(--pass); }\n.pill.fail { background: rgba(248,113,113,0.16); color: var(--fail); }\n.pill.skipped { background: rgba(154,165,177,0.16); color: var(--muted); }\n.findings th, .findings td { padding: 7px 10px; text-align: left; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: top; }\n.findings th { color: var(--muted); font-weight: 600; }\n.findings code, code.inline { font-family: \"SF Mono\", Menlo, monospace; font-size: 12px; color: var(--accent); }\n.kv { font-family: \"SF Mono\", Menlo, monospace; font-size: 13px; color: var(--muted); }\n.kv b { color: var(--text); font-weight: 600; }\n.empty { color: var(--muted); font-style: italic; font-size: 13px; }\ndetails { margin-top: 10px; }\nsummary { cursor: pointer; color: var(--accent); font-size: 13px; }\npre {\n background: #0d1820; border: 1px solid var(--border); border-radius: 8px;\n padding: 12px; overflow-x: auto; font-size: 12px; color: #cbd2d9; margin: 10px 0 0;\n}\n.shots { display: flex; flex-wrap: wrap; gap: 14px; margin: 12px 0; }\n.shot { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; background: var(--panel-2); }\n.shot img { display: block; max-width: 240px; height: auto; }\n.shot .cap { font-size: 11px; color: var(--muted); padding: 6px 8px; font-family: \"SF Mono\", Menlo, monospace; }\n.shot.missing { padding: 24px; color: var(--muted); font-size: 12px; font-style: italic; max-width: 240px; }\n.scores th, .scores td { padding: 7px 10px; text-align: left; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: top; }\n.scores th { color: var(--muted); font-weight: 600; }\n.rename td { padding: 7px 10px; border-bottom: 1px solid var(--border); font-size: 13px; }\n.rename .arrow { color: var(--muted); padding: 0 8px; }\nfooter { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--border); color: var(--muted); font-size: 13px; }\nfooter pre { color: var(--text); }\n@media (max-width: 640px) {\n .gate { flex-basis: 100%; }\n .shot img { max-width: 100%; }\n}\n@media print {\n body { background: #fff; color: #111; }\n .card, .gate { break-inside: avoid; }\n}\n";
2
2
  //# sourceMappingURL=theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/report/theme.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,uyKA+GtB,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/report/theme.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,UAAU,m3KAgHtB,CAAC"}
@@ -82,6 +82,7 @@ table { width: 100%; border-collapse: collapse; font-size: 14px; }
82
82
  .pill { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 10px; text-transform: uppercase; letter-spacing: 0.5px; }
83
83
  .pill.pass { background: rgba(52,211,153,0.16); color: var(--pass); }
84
84
  .pill.fail { background: rgba(248,113,113,0.16); color: var(--fail); }
85
+ .pill.skipped { background: rgba(154,165,177,0.16); color: var(--muted); }
85
86
  .findings th, .findings td { padding: 7px 10px; text-align: left; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: top; }
86
87
  .findings th { color: var(--muted); font-weight: 600; }
87
88
  .findings code, code.inline { font-family: "SF Mono", Menlo, monospace; font-size: 12px; color: var(--accent); }
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/report/theme.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kEAAkE;AAClE,qEAAqE;AACrE,wDAAwD;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+GzB,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/report/theme.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kEAAkE;AAClE,qEAAqE;AACrE,wDAAwD;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHzB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type VisualLevel = 0 | 1 | 2;
2
+ export declare function parseVisualLevel(raw: string): VisualLevel | undefined;
3
+ export declare function visualLevelFromEnv(env?: NodeJS.ProcessEnv): VisualLevel;
4
+ export declare function resolveVisualLevel(flag: VisualLevel | undefined, env?: NodeJS.ProcessEnv): VisualLevel;
5
+ export declare function testsFromEnv(env?: NodeJS.ProcessEnv): boolean;
6
+ export declare function resolveTests(flag: boolean | undefined, env?: NodeJS.ProcessEnv): boolean;
7
+ //# sourceMappingURL=run-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-options.d.ts","sourceRoot":"","sources":["../src/run-options.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEpC,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAGrE;AAID,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,CAGpF;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,CAEnH;AAED,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAG1E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAErG"}
@@ -0,0 +1,24 @@
1
+ // Per-run choice of the visual level and the test suites (#160). A CLI flag or
2
+ // MCP argument wins; without one, NATIVEAPPTEMPLATE_VISUAL /
3
+ // NATIVEAPPTEMPLATE_TESTS decide as before. Defaults: visual 0, no tests.
4
+ export function parseVisualLevel(raw) {
5
+ const v = raw.trim();
6
+ return v === "0" ? 0 : v === "1" ? 1 : v === "2" ? 2 : undefined;
7
+ }
8
+ // The environment variable's long-standing reading: anything but "1" or "2"
9
+ // (unset, "0", a typo) is level 0.
10
+ export function visualLevelFromEnv(env = process.env) {
11
+ const raw = env["NATIVEAPPTEMPLATE_VISUAL"] ?? "";
12
+ return raw === "2" ? 2 : raw === "1" ? 1 : 0;
13
+ }
14
+ export function resolveVisualLevel(flag, env = process.env) {
15
+ return flag ?? visualLevelFromEnv(env);
16
+ }
17
+ export function testsFromEnv(env = process.env) {
18
+ const raw = (env["NATIVEAPPTEMPLATE_TESTS"] ?? "").trim().toLowerCase();
19
+ return raw === "1" || raw === "on" || raw === "true";
20
+ }
21
+ export function resolveTests(flag, env = process.env) {
22
+ return flag ?? testsFromEnv(env);
23
+ }
24
+ //# sourceMappingURL=run-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-options.js","sourceRoot":"","sources":["../src/run-options.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6DAA6D;AAC7D,0EAA0E;AAI1E,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACrB,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,4EAA4E;AAC5E,mCAAmC;AACnC,MAAM,UAAU,kBAAkB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACrE,MAAM,GAAG,GAAG,GAAG,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAA6B,EAAE,MAAyB,OAAO,CAAC,GAAG;IACpG,OAAO,IAAI,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC/D,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxE,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAyB,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC1F,OAAO,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC"}
@@ -2,5 +2,12 @@ import type Anthropic from "@anthropic-ai/sdk";
2
2
  type BetaMessage = Anthropic.Beta.Messages.BetaMessage;
3
3
  export declare function readStructuredJson(response: BetaMessage, label: string): unknown;
4
4
  export declare function usageLine(response: BetaMessage, requestedModel: string): string;
5
+ export type TokenUsage = {
6
+ input_tokens: number;
7
+ output_tokens: number;
8
+ cache_creation_input_tokens?: number | null;
9
+ cache_read_input_tokens?: number | null;
10
+ };
11
+ export declare function tokenCounts(usage: TokenUsage): string;
5
12
  export {};
6
13
  //# sourceMappingURL=structured-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAE/C,KAAK,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAKvD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAqBhF;AAID,wBAAgB,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAG/E"}
1
+ {"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAE/C,KAAK,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAKvD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAqBhF;AAOD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAG/E;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,CAAC;AAGF,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIrD"}
@@ -25,8 +25,17 @@ export function readStructuredJson(response, label) {
25
25
  }
26
26
  // One trace line per call: tokens, plus the model that actually answered
27
27
  // (differs from the requested one when a refusal fallback served it).
28
+ // Cache writes/reads are billed separately from input_tokens (the judge's
29
+ // screenshot is cached, so most of its tokens land there); scripts/cost.sh
30
+ // parses this exact shape, so keep all four fields even when zero.
28
31
  export function usageLine(response, requestedModel) {
29
32
  const servedBy = response.model !== requestedModel ? ` (served by ${response.model})` : "";
30
- return `usage: ${response.usage.input_tokens} in / ${response.usage.output_tokens} out${servedBy}`;
33
+ return `usage: ${tokenCounts(response.usage)}${servedBy}`;
34
+ }
35
+ // "<in> in / <out> out / <write> cache-write / <read> cache-read"
36
+ export function tokenCounts(usage) {
37
+ const write = usage.cache_creation_input_tokens ?? 0;
38
+ const read = usage.cache_read_input_tokens ?? 0;
39
+ return `${usage.input_tokens} in / ${usage.output_tokens} out / ${write} cache-write / ${read} cache-read`;
31
40
  }
32
41
  //# sourceMappingURL=structured-output.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AAIA,sEAAsE;AACtE,4EAA4E;AAC5E,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,QAAqB,EAAE,KAAa;IACrE,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,IAAI,SAAS,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yDAAyD,QAAQ,GAAG,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wDAAwD,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;SAC1B,MAAM,CAAC,CAAC,CAAC,EAA8C,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAC5E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0CAA0C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,sEAAsE;AACtE,MAAM,UAAU,SAAS,CAAC,QAAqB,EAAE,cAAsB;IACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,eAAe,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO,UAAU,QAAQ,CAAC,KAAK,CAAC,YAAY,SAAS,QAAQ,CAAC,KAAK,CAAC,aAAa,OAAO,QAAQ,EAAE,CAAC;AACrG,CAAC"}
1
+ {"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AAIA,sEAAsE;AACtE,4EAA4E;AAC5E,8DAA8D;AAC9D,MAAM,UAAU,kBAAkB,CAAC,QAAqB,EAAE,KAAa;IACrE,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,QAAQ,IAAI,SAAS,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yDAAyD,QAAQ,GAAG,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,wDAAwD,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;SAC1B,MAAM,CAAC,CAAC,CAAC,EAA8C,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;SAC5E,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0CAA0C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,sEAAsE;AACtE,0EAA0E;AAC1E,2EAA2E;AAC3E,mEAAmE;AACnE,MAAM,UAAU,SAAS,CAAC,QAAqB,EAAE,cAAsB;IACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,eAAe,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,OAAO,UAAU,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,EAAE,CAAC;AAC5D,CAAC;AASD,kEAAkE;AAClE,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,2BAA2B,IAAI,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,uBAAuB,IAAI,CAAC,CAAC;IAChD,OAAO,GAAG,KAAK,CAAC,YAAY,SAAS,KAAK,CAAC,aAAa,UAAU,KAAK,kBAAkB,IAAI,aAAa,CAAC;AAC7G,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Platform, StepResult } from "../agents/types.js";
2
+ export type FormatterOptions = {
3
+ useMise?: boolean;
4
+ env?: NodeJS.ProcessEnv;
5
+ };
6
+ export declare function formattersEnabled(): boolean;
7
+ export declare function runFormatter(platform: Platform, outDir: string, options?: FormatterOptions): Promise<StepResult>;
8
+ export declare function traceFormat(platform: Platform, result: StepResult): void;
9
+ //# sourceMappingURL=autoformat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoformat.d.ts","sourceRoot":"","sources":["../../src/validation/autoformat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAiB/D,MAAM,MAAM,gBAAgB,GAAG;IAE7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,CAAC;AAIF,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAO1H;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CASxE"}