nativeapptemplate-agent 0.3.2 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +36 -13
  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/types.d.ts +14 -0
  7. package/dist/agents/types.d.ts.map +1 -1
  8. package/dist/agents/workers/android.d.ts.map +1 -1
  9. package/dist/agents/workers/android.js +27 -3
  10. package/dist/agents/workers/android.js.map +1 -1
  11. package/dist/agents/workers/copy.d.ts +1 -0
  12. package/dist/agents/workers/copy.d.ts.map +1 -1
  13. package/dist/agents/workers/copy.js +23 -4
  14. package/dist/agents/workers/copy.js.map +1 -1
  15. package/dist/agents/workers/ios.d.ts.map +1 -1
  16. package/dist/agents/workers/ios.js +23 -3
  17. package/dist/agents/workers/ios.js.map +1 -1
  18. package/dist/agents/workers/rails.d.ts.map +1 -1
  19. package/dist/agents/workers/rails.js +6 -1
  20. package/dist/agents/workers/rails.js.map +1 -1
  21. package/dist/app-domain.d.ts +32 -0
  22. package/dist/app-domain.d.ts.map +1 -0
  23. package/dist/app-domain.js +93 -0
  24. package/dist/app-domain.js.map +1 -0
  25. package/dist/dispatch.d.ts +7 -0
  26. package/dist/dispatch.d.ts.map +1 -1
  27. package/dist/dispatch.js +61 -10
  28. package/dist/dispatch.js.map +1 -1
  29. package/dist/env-bridge.d.ts +1 -0
  30. package/dist/env-bridge.d.ts.map +1 -1
  31. package/dist/env-bridge.js +53 -16
  32. package/dist/env-bridge.js.map +1 -1
  33. package/dist/index.d.ts +4 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +55 -9
  36. package/dist/index.js.map +1 -1
  37. package/dist/mcp.d.ts +5 -1
  38. package/dist/mcp.d.ts.map +1 -1
  39. package/dist/mcp.js +43 -16
  40. package/dist/mcp.js.map +1 -1
  41. package/dist/mobile.d.ts +1 -1
  42. package/dist/mobile.d.ts.map +1 -1
  43. package/dist/mobile.js +3 -3
  44. package/dist/mobile.js.map +1 -1
  45. package/dist/preflight.d.ts +27 -0
  46. package/dist/preflight.d.ts.map +1 -0
  47. package/dist/preflight.js +106 -0
  48. package/dist/preflight.js.map +1 -0
  49. package/dist/report/collect.d.ts +5 -0
  50. package/dist/report/collect.d.ts.map +1 -1
  51. package/dist/report/collect.js +15 -0
  52. package/dist/report/collect.js.map +1 -1
  53. package/dist/report/model.d.ts +14 -0
  54. package/dist/report/model.d.ts.map +1 -1
  55. package/dist/report/render.d.ts.map +1 -1
  56. package/dist/report/render.js +69 -6
  57. package/dist/report/render.js.map +1 -1
  58. package/dist/report/theme.d.ts +1 -1
  59. package/dist/report/theme.d.ts.map +1 -1
  60. package/dist/report/theme.js +1 -0
  61. package/dist/report/theme.js.map +1 -1
  62. package/dist/run-options.d.ts +7 -0
  63. package/dist/run-options.d.ts.map +1 -0
  64. package/dist/run-options.js +24 -0
  65. package/dist/run-options.js.map +1 -0
  66. package/dist/validation/autoformat.d.ts +9 -0
  67. package/dist/validation/autoformat.d.ts.map +1 -0
  68. package/dist/validation/autoformat.js +131 -0
  69. package/dist/validation/autoformat.js.map +1 -0
  70. package/dist/validation/launch.d.ts +23 -2
  71. package/dist/validation/launch.d.ts.map +1 -1
  72. package/dist/validation/launch.js +47 -18
  73. package/dist/validation/launch.js.map +1 -1
  74. package/dist/validation/layer1.d.ts.map +1 -1
  75. package/dist/validation/layer1.js +4 -0
  76. package/dist/validation/layer1.js.map +1 -1
  77. package/dist/validation/protected-references.d.ts +2 -0
  78. package/dist/validation/protected-references.d.ts.map +1 -0
  79. package/dist/validation/protected-references.js +18 -0
  80. package/dist/validation/protected-references.js.map +1 -0
  81. package/dist/validation/run-step.d.ts +16 -0
  82. package/dist/validation/run-step.d.ts.map +1 -0
  83. package/dist/validation/run-step.js +49 -0
  84. package/dist/validation/run-step.js.map +1 -0
  85. package/dist/validation/scenarios/queue.d.ts.map +1 -1
  86. package/dist/validation/scenarios/queue.js +7 -3
  87. package/dist/validation/scenarios/queue.js.map +1 -1
  88. package/dist/validation/stage2-judge.d.ts +4 -2
  89. package/dist/validation/stage2-judge.d.ts.map +1 -1
  90. package/dist/validation/stage2-judge.js +79 -4
  91. package/dist/validation/stage2-judge.js.map +1 -1
  92. package/dist/validation/test-suites.d.ts +10 -0
  93. package/dist/validation/test-suites.d.ts.map +1 -0
  94. package/dist/validation/test-suites.js +135 -0
  95. package/dist/validation/test-suites.js.map +1 -0
  96. package/package.json +1 -1
  97. package/scripts/ruby/rename.rb +97 -2
@@ -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"}
@@ -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"}
@@ -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"}