@extenshi/cli 0.21.0 → 0.23.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 (128) hide show
  1. package/README.md +4 -0
  2. package/dist/amo-source-detect.d.ts +18 -0
  3. package/dist/amo-source-detect.d.ts.map +1 -0
  4. package/dist/amo-source-detect.js +41 -0
  5. package/dist/amo-source-detect.js.map +1 -0
  6. package/dist/amo-source.d.ts +41 -0
  7. package/dist/amo-source.d.ts.map +1 -0
  8. package/dist/amo-source.js +240 -0
  9. package/dist/amo-source.js.map +1 -0
  10. package/dist/amowebstore-md.d.ts +38 -0
  11. package/dist/amowebstore-md.d.ts.map +1 -0
  12. package/dist/amowebstore-md.js +118 -0
  13. package/dist/amowebstore-md.js.map +1 -0
  14. package/dist/auto-evidence.d.ts +154 -0
  15. package/dist/auto-evidence.d.ts.map +1 -0
  16. package/dist/auto-evidence.js +297 -0
  17. package/dist/auto-evidence.js.map +1 -0
  18. package/dist/cli.d.ts.map +1 -1
  19. package/dist/cli.js +366 -11
  20. package/dist/cli.js.map +1 -1
  21. package/dist/domain.d.ts +40 -0
  22. package/dist/domain.d.ts.map +1 -0
  23. package/dist/domain.js +64 -0
  24. package/dist/domain.js.map +1 -0
  25. package/dist/edgewebstore-md.d.ts +26 -0
  26. package/dist/edgewebstore-md.d.ts.map +1 -0
  27. package/dist/edgewebstore-md.js +95 -0
  28. package/dist/edgewebstore-md.js.map +1 -0
  29. package/dist/evidence-ingest.d.ts +60 -0
  30. package/dist/evidence-ingest.d.ts.map +1 -0
  31. package/dist/evidence-ingest.js +141 -0
  32. package/dist/evidence-ingest.js.map +1 -0
  33. package/dist/extension-localization.d.ts +6 -1
  34. package/dist/extension-localization.d.ts.map +1 -1
  35. package/dist/extension-localization.js +4 -0
  36. package/dist/extension-localization.js.map +1 -1
  37. package/dist/firefox-rdp.d.ts +55 -0
  38. package/dist/firefox-rdp.d.ts.map +1 -0
  39. package/dist/firefox-rdp.js +203 -0
  40. package/dist/firefox-rdp.js.map +1 -0
  41. package/dist/gecko-id.d.ts +55 -0
  42. package/dist/gecko-id.d.ts.map +1 -0
  43. package/dist/gecko-id.js +132 -0
  44. package/dist/gecko-id.js.map +1 -0
  45. package/dist/generate-listing.d.ts +19 -8
  46. package/dist/generate-listing.d.ts.map +1 -1
  47. package/dist/generate-listing.js +66 -18
  48. package/dist/generate-listing.js.map +1 -1
  49. package/dist/icon.d.ts +18 -0
  50. package/dist/icon.d.ts.map +1 -1
  51. package/dist/icon.js +29 -20
  52. package/dist/icon.js.map +1 -1
  53. package/dist/landing-page.d.ts +22 -4
  54. package/dist/landing-page.d.ts.map +1 -1
  55. package/dist/landing-page.js +14 -11
  56. package/dist/landing-page.js.map +1 -1
  57. package/dist/landing-sections.d.ts +332 -0
  58. package/dist/landing-sections.d.ts.map +1 -0
  59. package/dist/landing-sections.js +1071 -0
  60. package/dist/landing-sections.js.map +1 -0
  61. package/dist/listing.d.ts +15 -0
  62. package/dist/listing.d.ts.map +1 -1
  63. package/dist/listing.js +1 -1
  64. package/dist/listing.js.map +1 -1
  65. package/dist/media.d.ts +42 -0
  66. package/dist/media.d.ts.map +1 -0
  67. package/dist/media.js +96 -0
  68. package/dist/media.js.map +1 -0
  69. package/dist/package.d.ts +163 -0
  70. package/dist/package.d.ts.map +1 -0
  71. package/dist/package.js +500 -0
  72. package/dist/package.js.map +1 -0
  73. package/dist/page.d.ts +110 -21
  74. package/dist/page.d.ts.map +1 -1
  75. package/dist/page.js +240 -10
  76. package/dist/page.js.map +1 -1
  77. package/dist/pay-contract.d.ts +42 -11
  78. package/dist/pay-contract.d.ts.map +1 -1
  79. package/dist/pay-contract.js +31 -0
  80. package/dist/pay-contract.js.map +1 -1
  81. package/dist/pay-test-cycle.d.ts +40 -0
  82. package/dist/pay-test-cycle.d.ts.map +1 -0
  83. package/dist/pay-test-cycle.js +207 -0
  84. package/dist/pay-test-cycle.js.map +1 -0
  85. package/dist/pay.d.ts +1 -1
  86. package/dist/pay.d.ts.map +1 -1
  87. package/dist/pay.js +1 -0
  88. package/dist/pay.js.map +1 -1
  89. package/dist/project.d.ts +69 -1
  90. package/dist/project.d.ts.map +1 -1
  91. package/dist/project.js +363 -54
  92. package/dist/project.js.map +1 -1
  93. package/dist/publish.d.ts +33 -0
  94. package/dist/publish.d.ts.map +1 -1
  95. package/dist/publish.js +113 -2
  96. package/dist/publish.js.map +1 -1
  97. package/dist/review-checks.d.ts +13 -0
  98. package/dist/review-checks.d.ts.map +1 -1
  99. package/dist/review-checks.js.map +1 -1
  100. package/dist/review-risk.d.ts +10 -1
  101. package/dist/review-risk.d.ts.map +1 -1
  102. package/dist/review-risk.js +1 -0
  103. package/dist/review-risk.js.map +1 -1
  104. package/dist/scan.d.ts +3 -2
  105. package/dist/scan.d.ts.map +1 -1
  106. package/dist/scan.js +4 -2
  107. package/dist/scan.js.map +1 -1
  108. package/dist/screenshots-scenes.d.ts +1383 -0
  109. package/dist/screenshots-scenes.d.ts.map +1 -0
  110. package/dist/screenshots-scenes.js +276 -0
  111. package/dist/screenshots-scenes.js.map +1 -0
  112. package/dist/screenshots.d.ts +143 -0
  113. package/dist/screenshots.d.ts.map +1 -0
  114. package/dist/screenshots.js +558 -0
  115. package/dist/screenshots.js.map +1 -0
  116. package/dist/smoke.d.ts +81 -0
  117. package/dist/smoke.d.ts.map +1 -0
  118. package/dist/smoke.js +491 -0
  119. package/dist/smoke.js.map +1 -0
  120. package/dist/store-assets.d.ts +139 -0
  121. package/dist/store-assets.d.ts.map +1 -0
  122. package/dist/store-assets.js +582 -0
  123. package/dist/store-assets.js.map +1 -0
  124. package/dist/zip.d.ts +57 -0
  125. package/dist/zip.d.ts.map +1 -0
  126. package/dist/zip.js +134 -0
  127. package/dist/zip.js.map +1 -0
  128. package/package.json +7 -6
package/dist/page.d.ts CHANGED
@@ -14,6 +14,7 @@
14
14
  */
15
15
  import { z } from 'zod';
16
16
  import { type LandingForm } from './landing-page.js';
17
+ import { type LandingProblem } from './landing-sections.js';
17
18
  /** Landing config file schema: LandingForm fields, same limits as the MCP tool. */
18
19
  export declare const landingConfigSchema: z.ZodObject<{
19
20
  extensionName: z.ZodString;
@@ -49,50 +50,77 @@ export declare const landingConfigSchema: z.ZodObject<{
49
50
  }>, "many">>;
50
51
  logoSvg: z.ZodOptional<z.ZodString>;
51
52
  logoUrl: z.ZodOptional<z.ZodString>;
53
+ schemaVersion: z.ZodOptional<z.ZodLiteral<2>>;
54
+ sections: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
55
+ tokens: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
56
+ seo: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
57
+ defaultLocale: z.ZodOptional<z.ZodString>;
58
+ locales: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
59
+ ui: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
60
+ uninstallUrl: z.ZodOptional<z.ZodString>;
61
+ termsUrl: z.ZodOptional<z.ZodString>;
52
62
  }, "strip", z.ZodTypeAny, {
53
63
  description: string;
54
64
  extensionName: string;
65
+ features: {
66
+ description: string;
67
+ title: string;
68
+ }[];
55
69
  tagline: string;
56
- accentColor: string;
57
- theme: "light" | "dark";
58
70
  chromeUrl: string;
59
- firefoxUrl: string;
60
71
  edgeUrl: string;
72
+ firefoxUrl: string;
73
+ accentColor: string;
74
+ theme: "light" | "dark";
61
75
  privacyPolicyUrl: string;
62
76
  supportUrl: string;
63
- features: {
64
- description: string;
65
- title: string;
66
- }[];
67
- homepageUrl?: string | undefined;
68
- logoUrl?: string | undefined;
69
- logoSvg?: string | undefined;
77
+ defaultLocale?: string | undefined;
78
+ locales?: Record<string, Record<string, unknown>> | undefined;
79
+ schemaVersion?: 2 | undefined;
80
+ ui?: Record<string, string> | undefined;
70
81
  screenshots?: {
71
82
  url: string;
72
83
  alt: string;
73
84
  }[] | undefined;
85
+ seo?: Record<string, unknown> | undefined;
86
+ sections?: Record<string, unknown>[] | undefined;
87
+ uninstallUrl?: string | undefined;
88
+ termsUrl?: string | undefined;
89
+ homepageUrl?: string | undefined;
90
+ logoUrl?: string | undefined;
91
+ logoSvg?: string | undefined;
92
+ tokens?: Record<string, unknown> | undefined;
74
93
  }, {
75
94
  extensionName: string;
76
95
  description?: string | undefined;
96
+ defaultLocale?: string | undefined;
97
+ locales?: Record<string, Record<string, unknown>> | undefined;
98
+ schemaVersion?: 2 | undefined;
99
+ ui?: Record<string, string> | undefined;
100
+ screenshots?: {
101
+ url: string;
102
+ alt?: string | undefined;
103
+ }[] | undefined;
104
+ features?: {
105
+ title: string;
106
+ description?: string | undefined;
107
+ }[] | undefined;
77
108
  tagline?: string | undefined;
78
- accentColor?: string | undefined;
79
- theme?: "light" | "dark" | undefined;
109
+ seo?: Record<string, unknown> | undefined;
110
+ sections?: Record<string, unknown>[] | undefined;
111
+ uninstallUrl?: string | undefined;
112
+ termsUrl?: string | undefined;
80
113
  chromeUrl?: string | undefined;
81
- firefoxUrl?: string | undefined;
82
114
  edgeUrl?: string | undefined;
115
+ firefoxUrl?: string | undefined;
116
+ accentColor?: string | undefined;
117
+ theme?: "light" | "dark" | undefined;
83
118
  privacyPolicyUrl?: string | undefined;
84
119
  supportUrl?: string | undefined;
85
- features?: {
86
- title: string;
87
- description?: string | undefined;
88
- }[] | undefined;
89
120
  homepageUrl?: string | undefined;
90
121
  logoUrl?: string | undefined;
91
122
  logoSvg?: string | undefined;
92
- screenshots?: {
93
- url: string;
94
- alt?: string | undefined;
95
- }[] | undefined;
123
+ tokens?: Record<string, unknown> | undefined;
96
124
  }>;
97
125
  export interface PageGenerateOptions {
98
126
  config: string;
@@ -103,10 +131,23 @@ export interface PageGenerateResult {
103
131
  outPath: string;
104
132
  bytes: number;
105
133
  warnings: string[];
134
+ /** Schema v2: every problem with its path and fix. */
135
+ problems?: LandingProblem[];
136
+ /** Schema v2 with locales: the extra pages written next to outPath. */
137
+ localePaths?: string[];
106
138
  }
107
139
  /** Parse a config file body: a bare form, or a saved `{ form }` tool-state row. */
108
140
  export declare function parseLandingConfig(raw: string): LandingForm;
141
+ /** Print problems to stderr, errors first, each with its fix. */
142
+ export declare function reportProblems(problems: readonly LandingProblem[]): void;
109
143
  export declare function runPageGenerate(opts: PageGenerateOptions): Promise<PageGenerateResult>;
144
+ /** `extenshi page validate`: the shared rules, offline. Hosted-only rules (image hosts, store locales, Pay SKUs) need `page preview`. */
145
+ export declare function runPageValidate(opts: {
146
+ config: string;
147
+ }): Promise<{
148
+ ok: boolean;
149
+ problems: LandingProblem[];
150
+ }>;
110
151
  export interface PageRegisterOptions {
111
152
  project: string;
112
153
  url: string;
@@ -119,7 +160,17 @@ export interface PagePublishOptions {
119
160
  logo?: string;
120
161
  /** commander's --no-homepage sets this to false. */
121
162
  homepage?: boolean;
163
+ /** Upload local screenshot / logoUrl paths to the project's public media store first. */
164
+ uploadLocal?: boolean;
122
165
  }
166
+ /**
167
+ * `--upload-local`: replace every local screenshot path (and a local `logoUrl`)
168
+ * with the stable public URL `extenshi media upload` returns. Paths resolve
169
+ * against the config file's directory. Exported for tests.
170
+ */
171
+ export declare function uploadLocalMedia(form: LandingForm, projectId: string, configPath: string, upload?: (projectId: string, file: string) => Promise<{
172
+ url: string;
173
+ }>): Promise<string[]>;
123
174
  /**
124
175
  * `extenshi page publish`: host the page on page.extenshi.io. Sends the form —
125
176
  * the BFF renders it with the same builder — never the HTML file.
@@ -128,4 +179,42 @@ export declare function runPagePublish(opts: PagePublishOptions): Promise<Record
128
179
  export declare function runPageUnpublish(opts: {
129
180
  project: string;
130
181
  }): Promise<Record<string, unknown>>;
182
+ export interface PageDraftOptions {
183
+ project: string;
184
+ out?: string;
185
+ chromeUrl?: string;
186
+ firefoxUrl?: string;
187
+ edgeUrl?: string;
188
+ }
189
+ /**
190
+ * `extenshi page draft`: a schema-v2 homepage drafted by the server from the
191
+ * project state (manifest, published page, media, Pay offers, hosted artifacts),
192
+ * written as a config for `page preview` / `page publish`. Writes nothing on the server.
193
+ */
194
+ export declare function runPageDraft(opts: PageDraftOptions): Promise<Record<string, unknown>>;
195
+ export interface PagePreviewOptions {
196
+ project: string;
197
+ config: string;
198
+ locale?: string;
199
+ out?: string;
200
+ /** Also save a full-page PNG (needs Playwright + Chromium, like `extenshi screenshots`). */
201
+ screenshot?: string;
202
+ logo?: string;
203
+ }
204
+ /**
205
+ * `extenshi page preview`: the server validates and renders the config exactly
206
+ * as publish would. Writes the HTML (and optionally a screenshot) locally;
207
+ * exits non-zero with every problem and its fix when publish would refuse it.
208
+ */
209
+ export declare function runPagePreview(opts: PagePreviewOptions, shoot?: (html: string, file: string) => Promise<void>): Promise<Record<string, unknown>>;
210
+ /** Full-page PNG of a rendered page in headless Chromium (Playwright from the project or the CLI install). */
211
+ export declare function screenshotHtml(html: string, file: string): Promise<void>;
212
+ export declare function runPageVersions(opts: {
213
+ project: string;
214
+ }): Promise<Record<string, unknown>>;
215
+ export declare function runPageRollback(opts: {
216
+ project: string;
217
+ version: string;
218
+ homepage?: boolean;
219
+ }): Promise<Record<string, unknown>>;
131
220
  //# sourceMappingURL=page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAIN,KAAK,WAAW,EAIhB,MAAM,mBAAmB,CAAA;AAe1B,mFAAmF;AACnF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2B9B,CAAA;AAEF,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,EAAE,CAAA;CAClB;AAgBD,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAoB3D;AA2BD,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc5F;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAYD,wBAAsB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAejG;AAED,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AAID;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAgC/F;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlG"}
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
package/dist/page.js CHANGED
@@ -12,13 +12,17 @@
12
12
  * it; a registered homepage feeds HOMEPAGE_URL in the integration config.
13
13
  * Extenshi does not host the page itself.
14
14
  */
15
- import { readFile, stat, writeFile } from 'node:fs/promises';
15
+ import { mkdir, mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises';
16
+ import os from 'node:os';
16
17
  import path from 'node:path';
17
18
  import { z } from 'zod';
18
19
  import { loadConfig } from './config.js';
19
20
  import { InvalidInputError } from './expected-error.js';
20
- import { buildLandingPage, DEFAULT_LANDING_FORM, LANDING_LIMITS, landingFormToInput, landingLogoSvgProblem, landingPageWarnings, } from './landing-page.js';
21
+ import { DEFAULT_LANDING_FORM, LANDING_LIMITS, landingFormToInput, landingLogoSvgProblem, landingPageWarnings, } from './landing-page.js';
22
+ import { LANDING_V2_LIMITS, landingFormProblems, renderLandingLocales, } from './landing-sections.js';
23
+ import { uploadMediaFile } from './media.js';
21
24
  import { projectRequest } from './project.js';
25
+ import { loadPlaywright } from './screenshots.js';
22
26
  const MAX_CONFIG_BYTES = 1024 * 1024;
23
27
  const MAX_RASTER_LOGO_BYTES = 256 * 1024;
24
28
  const RASTER_LOGO_TYPES = {
@@ -55,6 +59,17 @@ export const landingConfigSchema = z.object({
55
59
  .optional(),
56
60
  logoSvg: text(LANDING_LIMITS.logoSvgBytes).optional(),
57
61
  logoUrl: text(LANDING_LIMITS.logoUrl).optional(),
62
+ // Schema v2 (landing-sections.ts). Shapes only — the rules are
63
+ // landingFormProblems, shared with the MCP tools and the server.
64
+ schemaVersion: z.literal(2).optional(),
65
+ sections: z.array(z.record(z.unknown())).max(LANDING_V2_LIMITS.sections).optional(),
66
+ tokens: z.record(z.unknown()).optional(),
67
+ seo: z.record(z.unknown()).optional(),
68
+ defaultLocale: text(35).optional(),
69
+ locales: z.record(text(35), z.record(z.unknown())).optional(),
70
+ ui: z.record(text(40), text(LANDING_V2_LIMITS.shortText)).optional(),
71
+ uninstallUrl: text(LANDING_LIMITS.url).optional(),
72
+ termsUrl: text(LANDING_LIMITS.url).optional(),
58
73
  });
59
74
  async function readLocalFile(file, label, limit) {
60
75
  const resolved = path.resolve(process.cwd(), file);
@@ -94,6 +109,12 @@ export function parseLandingConfig(raw) {
94
109
  form.screenshots = screenshots;
95
110
  return form;
96
111
  }
112
+ /** Print problems to stderr, errors first, each with its fix. */
113
+ export function reportProblems(problems) {
114
+ for (const p of [...problems].sort((a, b) => a.severity === b.severity ? 0 : a.severity === 'error' ? -1 : 1)) {
115
+ process.stderr.write(` ${p.severity}: ${p.path}: ${p.message}\n fix: ${p.fix}\n`);
116
+ }
117
+ }
97
118
  async function applyLogoFile(form, logo) {
98
119
  const ext = path.extname(logo).toLowerCase();
99
120
  if (ext === '.svg') {
@@ -122,16 +143,49 @@ export async function runPageGenerate(opts) {
122
143
  if (opts.logo)
123
144
  await applyLogoFile(form, opts.logo);
124
145
  const input = landingFormToInput(form);
125
- const html = buildLandingPage(input);
126
- const warnings = landingPageWarnings(input);
146
+ const pages = renderLandingLocales(form);
147
+ const html = pages[0]?.html ?? '';
127
148
  const outPath = path.resolve(process.cwd(), opts.out ?? 'index.html');
128
149
  await writeFile(outPath, html, 'utf8');
129
150
  const bytes = Buffer.byteLength(html, 'utf8');
130
151
  process.stderr.write(`Landing page written to ${outPath} (${bytes} bytes)\n`);
131
- for (const warning of warnings)
132
- process.stderr.write(` warning: ${warning}\n`);
152
+ const localePaths = [];
153
+ for (const page of pages.slice(1)) {
154
+ const file = path.join(path.dirname(outPath), page.slug, path.basename(outPath));
155
+ await mkdir(path.dirname(file), { recursive: true });
156
+ await writeFile(file, page.html, 'utf8');
157
+ localePaths.push(file);
158
+ process.stderr.write(` ${page.locale} page written to ${file}\n`);
159
+ }
160
+ const problems = landingFormProblems(form);
161
+ const v2 = form.schemaVersion === 2;
162
+ const warnings = v2
163
+ ? problems.filter((p) => p.severity === 'warning').map((p) => `${p.path}: ${p.message}`)
164
+ : landingPageWarnings(input);
165
+ if (v2 || problems.length)
166
+ reportProblems(problems);
167
+ else
168
+ for (const warning of warnings)
169
+ process.stderr.write(` warning: ${warning}\n`);
133
170
  process.stderr.write(`Next:\n${GENERATE_NEXT_STEPS.map((s, i) => ` ${i + 1}. ${s}`).join('\n')}\n`);
134
- return { outPath, bytes, warnings };
171
+ return {
172
+ outPath,
173
+ bytes,
174
+ warnings,
175
+ ...(v2 || problems.length ? { problems } : {}),
176
+ ...(localePaths.length ? { localePaths } : {}),
177
+ };
178
+ }
179
+ /** `extenshi page validate`: the shared rules, offline. Hosted-only rules (image hosts, store locales, Pay SKUs) need `page preview`. */
180
+ export async function runPageValidate(opts) {
181
+ const raw = (await readLocalFile(opts.config, 'Landing config', MAX_CONFIG_BYTES)).toString('utf8');
182
+ const problems = landingFormProblems(parseLandingConfig(raw));
183
+ const ok = !problems.some((p) => p.severity === 'error');
184
+ console.log(JSON.stringify({ ok, problems }, null, 2));
185
+ reportProblems(problems);
186
+ if (!ok)
187
+ throw new InvalidInputError(`The landing config has ${problems.filter((p) => p.severity === 'error').length} error(s) — see the fixes above.`);
188
+ return { ok, problems };
135
189
  }
136
190
  const registerSchema = z.object({
137
191
  projectId: z.string().uuid({ message: '--project must be a project UUID' }),
@@ -157,6 +211,69 @@ export async function runPageRegister(opts) {
157
211
  }
158
212
  return result;
159
213
  }
214
+ /** A path, not a URL: no scheme (screenshots/popup.png, ./shots/1.png, C:\\shots\\1.png). */
215
+ const isLocalPath = (value) => !/^[a-z][a-z0-9+.-]*:/i.test(value.trim()) || /^[a-z]:[\\/]/i.test(value.trim());
216
+ /**
217
+ * `--upload-local`: replace every local screenshot path (and a local `logoUrl`)
218
+ * with the stable public URL `extenshi media upload` returns. Paths resolve
219
+ * against the config file's directory. Exported for tests.
220
+ */
221
+ export async function uploadLocalMedia(form, projectId, configPath, upload = uploadMediaFile) {
222
+ const base = path.dirname(path.resolve(process.cwd(), configPath));
223
+ const uploaded = [];
224
+ const done = new Map();
225
+ const swap = async (value) => {
226
+ const file = path.resolve(base, value.trim());
227
+ let url = done.get(file);
228
+ if (!url) {
229
+ url = (await upload(projectId, file)).url;
230
+ done.set(file, url);
231
+ uploaded.push(`${path.relative(process.cwd(), file)} → ${url}`);
232
+ }
233
+ return url;
234
+ };
235
+ for (const shot of form.screenshots ?? []) {
236
+ if (isLocalPath(shot.url))
237
+ shot.url = await swap(shot.url);
238
+ }
239
+ if (form.logoUrl && isLocalPath(form.logoUrl))
240
+ form.logoUrl = await swap(form.logoUrl);
241
+ // Schema v2: screenshots sections, og:image, and localized screenshots.
242
+ const shotIds = new Set();
243
+ for (const section of (form.sections ?? [])) {
244
+ if (section?.type !== 'screenshots' || !Array.isArray(section.items))
245
+ continue;
246
+ shotIds.add(section.id);
247
+ for (const item of section.items)
248
+ if (item?.url && isLocalPath(item.url))
249
+ item.url = await swap(item.url);
250
+ }
251
+ if (form.seo?.ogImageUrl && isLocalPath(form.seo.ogImageUrl))
252
+ form.seo.ogImageUrl = await swap(form.seo.ogImageUrl);
253
+ for (const entry of Object.values(form.locales ?? {})) {
254
+ for (const [id, over] of Object.entries(entry?.sections ?? {})) {
255
+ const items = over.items;
256
+ if (!shotIds.has(id) || !Array.isArray(items))
257
+ continue;
258
+ for (const item of items)
259
+ if (typeof item?.url === 'string' && item.url && isLocalPath(item.url))
260
+ item.url = await swap(item.url);
261
+ }
262
+ }
263
+ return uploaded;
264
+ }
265
+ /** Every image URL a hosted page will load that is still a local path. */
266
+ function localImagePaths(form) {
267
+ const out = (form.screenshots ?? []).map((s) => s.url).filter((u) => !/^https:\/\//i.test(u.trim()));
268
+ for (const section of (form.sections ?? [])) {
269
+ if (section?.type !== 'screenshots' || !Array.isArray(section.items))
270
+ continue;
271
+ for (const item of section.items)
272
+ if (item?.url && isLocalPath(item.url))
273
+ out.push(item.url);
274
+ }
275
+ return out;
276
+ }
160
277
  const projectIdSchema = z.string().uuid({ message: '--project must be a project UUID' });
161
278
  /**
162
279
  * `extenshi page publish`: host the page on page.extenshi.io. Sends the form —
@@ -170,10 +287,15 @@ export async function runPagePublish(opts) {
170
287
  const form = parseLandingConfig(raw);
171
288
  if (opts.logo)
172
289
  await applyLogoFile(form, opts.logo);
173
- const local = (form.screenshots ?? []).filter((s) => !/^https:\/\//i.test(s.url.trim()));
290
+ if (opts.uploadLocal) {
291
+ for (const line of await uploadLocalMedia(form, projectId.data, opts.config))
292
+ process.stderr.write(` uploaded ${line}\n`);
293
+ }
294
+ const local = localImagePaths(form);
174
295
  if (local.length) {
175
- throw new InvalidInputError(`Hosted pages cannot show local screenshots (${local.map((s) => s.url).join(', ')}). Use store ` +
176
- 'screenshot URLs or upload them in the Dojo Page generator, or host the file yourself with ' +
296
+ throw new InvalidInputError(`Hosted pages cannot show local screenshots (${local.join(', ')}). Pass ` +
297
+ "--upload-local to upload them to the project's public media store (or run `extenshi media upload`), " +
298
+ 'use store screenshot URLs or Dojo Page generator uploads, or host the file yourself with ' +
177
299
  '`extenshi page generate` + `extenshi page register`.');
178
300
  }
179
301
  const result = await projectRequest(await loadConfig(), 'agentPublishLandingPage', { projectId: projectId.data, form, registerAsHomepage: opts.homepage !== false }, true);
@@ -181,6 +303,9 @@ export async function runPagePublish(opts) {
181
303
  const warnings = Array.isArray(result.warnings) ? result.warnings : [];
182
304
  for (const warning of warnings)
183
305
  process.stderr.write(` warning: ${warning}\n`);
306
+ const locales = Array.isArray(result.locales) ? result.locales : [];
307
+ for (const l of locales.slice(1))
308
+ process.stderr.write(` ${l.locale}: ${l.url}\n`);
184
309
  process.stderr.write(`Live at ${String(result.url)}. ${opts.homepage === false
185
310
  ? 'Homepage registration unchanged.'
186
311
  : 'Registered as the project homepage — regenerate the integration config (MCP get_project_state → integration.file) so HOMEPAGE_URL uses it.'}\n`);
@@ -194,4 +319,109 @@ export async function runPageUnpublish(opts) {
194
319
  console.log(JSON.stringify(result, null, 2));
195
320
  return result;
196
321
  }
322
+ const toOut = (file) => path.resolve(process.cwd(), file);
323
+ /**
324
+ * `extenshi page draft`: a schema-v2 homepage drafted by the server from the
325
+ * project state (manifest, published page, media, Pay offers, hosted artifacts),
326
+ * written as a config for `page preview` / `page publish`. Writes nothing on the server.
327
+ */
328
+ export async function runPageDraft(opts) {
329
+ const projectId = projectIdSchema.safeParse(opts.project);
330
+ if (!projectId.success)
331
+ throw new InvalidInputError(projectId.error.issues[0]?.message ?? 'Invalid --project');
332
+ const storeUrls = Object.fromEntries(Object.entries({ chrome: opts.chromeUrl, firefox: opts.firefoxUrl, edge: opts.edgeUrl }).filter(([, v]) => v));
333
+ const result = await projectRequest(await loadConfig(), 'agentDraftLandingPage', {
334
+ projectId: projectId.data,
335
+ ...(Object.keys(storeUrls).length ? { storeUrls } : {}),
336
+ });
337
+ const out = toOut(opts.out ?? 'landing.json');
338
+ await writeFile(out, `${JSON.stringify({ form: result.form }, null, '\t')}\n`, 'utf8');
339
+ process.stderr.write(`Draft written to ${out}\n`);
340
+ const sources = (result.sources ?? {});
341
+ for (const [field, source] of Object.entries(sources))
342
+ process.stderr.write(` ${field} ← ${source}\n`);
343
+ const todos = Array.isArray(result.todos) ? result.todos : [];
344
+ if (todos.length)
345
+ process.stderr.write(`To do:\n${todos.map((t) => ` - ${t}`).join('\n')}\n`);
346
+ if (Array.isArray(result.problems))
347
+ reportProblems(result.problems);
348
+ process.stderr.write(`Next: extenshi page preview --project ${projectId.data} --config ${opts.out ?? 'landing.json'}\n`);
349
+ return result;
350
+ }
351
+ /**
352
+ * `extenshi page preview`: the server validates and renders the config exactly
353
+ * as publish would. Writes the HTML (and optionally a screenshot) locally;
354
+ * exits non-zero with every problem and its fix when publish would refuse it.
355
+ */
356
+ export async function runPagePreview(opts, shoot = screenshotHtml) {
357
+ const projectId = projectIdSchema.safeParse(opts.project);
358
+ if (!projectId.success)
359
+ throw new InvalidInputError(projectId.error.issues[0]?.message ?? 'Invalid --project');
360
+ const raw = (await readLocalFile(opts.config, 'Landing config', MAX_CONFIG_BYTES)).toString('utf8');
361
+ const form = parseLandingConfig(raw);
362
+ if (opts.logo)
363
+ await applyLogoFile(form, opts.logo);
364
+ const result = await projectRequest(await loadConfig(), 'agentPreviewLandingPage', { projectId: projectId.data, form, ...(opts.locale ? { locale: opts.locale } : {}) }, true);
365
+ const problems = Array.isArray(result.problems) ? result.problems : [];
366
+ reportProblems(problems);
367
+ if (!result.ok) {
368
+ console.log(JSON.stringify({ ok: false, problems }, null, 2));
369
+ throw new InvalidInputError(`Publish would refuse this config (${problems.filter((p) => p.severity === 'error').length} error(s)) — see the fixes above.`);
370
+ }
371
+ const out = toOut(opts.out ?? 'preview.html');
372
+ await writeFile(out, String(result.html), 'utf8');
373
+ process.stderr.write(`Preview of ${String(result.url)} written to ${out} (${String(result.bytes)} bytes)\n`);
374
+ if (opts.screenshot) {
375
+ const png = toOut(opts.screenshot);
376
+ await shoot(String(result.html), png);
377
+ process.stderr.write(`Screenshot written to ${png}\n`);
378
+ }
379
+ const { html: _html, ...summary } = result;
380
+ console.log(JSON.stringify({ ...summary, htmlPath: out }, null, 2));
381
+ return result;
382
+ }
383
+ /** Full-page PNG of a rendered page in headless Chromium (Playwright from the project or the CLI install). */
384
+ export async function screenshotHtml(html, file) {
385
+ const pw = loadPlaywright();
386
+ const dir = await mkdtemp(path.join(os.tmpdir(), 'extenshi-page-'));
387
+ try {
388
+ const ctx = await pw.chromium.launchPersistentContext(dir, {
389
+ headless: true,
390
+ viewport: { width: 1280, height: 800 },
391
+ });
392
+ try {
393
+ const page = await ctx.newPage();
394
+ await page.setContent(html, { waitUntil: 'load', timeout: 30_000 });
395
+ await page.screenshot({ path: file, fullPage: true });
396
+ }
397
+ finally {
398
+ await ctx.close();
399
+ }
400
+ }
401
+ finally {
402
+ await rm(dir, { recursive: true, force: true });
403
+ }
404
+ }
405
+ export async function runPageVersions(opts) {
406
+ const projectId = projectIdSchema.safeParse(opts.project);
407
+ if (!projectId.success)
408
+ throw new InvalidInputError(projectId.error.issues[0]?.message ?? 'Invalid --project');
409
+ const result = await projectRequest(await loadConfig(), 'agentListLandingVersions', {
410
+ projectId: projectId.data,
411
+ });
412
+ console.log(JSON.stringify(result, null, 2));
413
+ return result;
414
+ }
415
+ export async function runPageRollback(opts) {
416
+ const projectId = projectIdSchema.safeParse(opts.project);
417
+ if (!projectId.success)
418
+ throw new InvalidInputError(projectId.error.issues[0]?.message ?? 'Invalid --project');
419
+ const versionNumber = Number(opts.version);
420
+ if (!Number.isInteger(versionNumber) || versionNumber < 1)
421
+ throw new InvalidInputError('--version must be a version number (see extenshi page versions)');
422
+ const result = await projectRequest(await loadConfig(), 'agentRollbackLandingPage', { projectId: projectId.data, versionNumber, registerAsHomepage: opts.homepage !== false }, true);
423
+ console.log(JSON.stringify(result, null, 2));
424
+ process.stderr.write(`Restored v${versionNumber} as v${String(result.versionNumber)} at ${String(result.url)}.\n`);
425
+ return result;
426
+ }
197
427
  //# sourceMappingURL=page.js.map
package/dist/page.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}