@12ui/design 0.2.79 → 0.2.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/SKILL.md +2 -8
- package/dist/cli-help/design.d.ts +1 -1
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +0 -1
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +1 -1
- package/dist/cli-workspace-draw.d.ts.map +1 -1
- package/dist/cli-workspace-draw.js +2 -0
- package/dist/cli-workspace-draw.js.map +1 -1
- package/dist/cli-workspace-runner.d.ts.map +1 -1
- package/dist/cli-workspace-runner.js +2 -1
- package/dist/cli-workspace-runner.js.map +1 -1
- package/dist/corpus-client.d.ts +3 -0
- package/dist/corpus-client.d.ts.map +1 -1
- package/dist/corpus-client.js +32 -1
- package/dist/corpus-client.js.map +1 -1
- package/dist/corpus-public-renditions.d.ts +33 -0
- package/dist/corpus-public-renditions.d.ts.map +1 -0
- package/dist/corpus-public-renditions.js +55 -0
- package/dist/corpus-public-renditions.js.map +1 -0
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +25 -1
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/mcp-slate-command.d.ts +0 -2
- package/dist/mcp-slate-command.d.ts.map +1 -1
- package/dist/mcp-slate-command.js +0 -4
- package/dist/mcp-slate-command.js.map +1 -1
- package/dist/mcp-slate-resource.d.ts.map +1 -1
- package/dist/mcp-slate-resource.js +6 -4
- package/dist/mcp-slate-resource.js.map +1 -1
- package/dist/mcp-slate-tool-defs.d.ts.map +1 -1
- package/dist/mcp-slate-tool-defs.js +8 -6
- package/dist/mcp-slate-tool-defs.js.map +1 -1
- package/dist/mcp-slate-tools.d.ts.map +1 -1
- package/dist/mcp-slate-tools.js +8 -1
- package/dist/mcp-slate-tools.js.map +1 -1
- package/dist/mcp-slate-ui-copy.d.ts +88 -208
- package/dist/mcp-slate-ui-copy.d.ts.map +1 -1
- package/dist/mcp-slate-ui-copy.js +58 -159
- package/dist/mcp-slate-ui-copy.js.map +1 -1
- package/dist/mcp-slate-ui-locales/de-DE.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/de-DE.js +44 -83
- package/dist/mcp-slate-ui-locales/de-DE.js.map +1 -1
- package/dist/mcp-slate-ui-locales/es-419.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/es-419.js +44 -83
- package/dist/mcp-slate-ui-locales/es-419.js.map +1 -1
- package/dist/mcp-slate-ui-locales/es-ES.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/es-ES.js +44 -83
- package/dist/mcp-slate-ui-locales/es-ES.js.map +1 -1
- package/dist/mcp-slate-ui-locales/fr-FR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/fr-FR.js +44 -83
- package/dist/mcp-slate-ui-locales/fr-FR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/hi-IN.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/hi-IN.js +44 -83
- package/dist/mcp-slate-ui-locales/hi-IN.js.map +1 -1
- package/dist/mcp-slate-ui-locales/it-IT.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/it-IT.js +44 -83
- package/dist/mcp-slate-ui-locales/it-IT.js.map +1 -1
- package/dist/mcp-slate-ui-locales/ja-JP.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/ja-JP.js +44 -83
- package/dist/mcp-slate-ui-locales/ja-JP.js.map +1 -1
- package/dist/mcp-slate-ui-locales/ko-KR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/ko-KR.js +44 -83
- package/dist/mcp-slate-ui-locales/ko-KR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/pt-BR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/pt-BR.js +44 -83
- package/dist/mcp-slate-ui-locales/pt-BR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-CN.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-CN.js +44 -83
- package/dist/mcp-slate-ui-locales/zh-CN.js.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-TW.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-TW.js +44 -83
- package/dist/mcp-slate-ui-locales/zh-TW.js.map +1 -1
- package/dist/mcp-slate-ui-script-bridge.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-bridge.js +19 -7
- package/dist/mcp-slate-ui-script-bridge.js.map +1 -1
- package/dist/mcp-slate-ui-script-browser.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-browser.js +0 -3
- package/dist/mcp-slate-ui-script-browser.js.map +1 -1
- package/dist/mcp-slate-ui-script-designs.d.ts +17 -0
- package/dist/mcp-slate-ui-script-designs.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-designs.js +365 -0
- package/dist/mcp-slate-ui-script-designs.js.map +1 -0
- package/dist/mcp-slate-ui-script-edit.d.ts +9 -0
- package/dist/mcp-slate-ui-script-edit.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-edit.js +71 -0
- package/dist/mcp-slate-ui-script-edit.js.map +1 -0
- package/dist/mcp-slate-ui-script-inline.d.ts +3 -9
- package/dist/mcp-slate-ui-script-inline.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inline.js +28 -155
- package/dist/mcp-slate-ui-script-inline.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts +13 -12
- package/dist/mcp-slate-ui-script-inspiration-collage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-collage.js +24 -24
- package/dist/mcp-slate-ui-script-inspiration-collage.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-gallery.d.ts +23 -0
- package/dist/mcp-slate-ui-script-inspiration-gallery.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-gallery.js +221 -0
- package/dist/mcp-slate-ui-script-inspiration-gallery.js.map +1 -0
- package/dist/mcp-slate-ui-script-inspiration-grid.d.ts +14 -21
- package/dist/mcp-slate-ui-script-inspiration-grid.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration-grid.js +124 -196
- package/dist/mcp-slate-ui-script-inspiration-grid.js.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration.d.ts +8 -9
- package/dist/mcp-slate-ui-script-inspiration.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-inspiration.js +213 -130
- package/dist/mcp-slate-ui-script-inspiration.js.map +1 -1
- package/dist/mcp-slate-ui-script-l10n.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-l10n.js +2 -0
- package/dist/mcp-slate-ui-script-l10n.js.map +1 -1
- package/dist/mcp-slate-ui-script-more.d.ts +4 -33
- package/dist/mcp-slate-ui-script-more.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-more.js +6 -279
- package/dist/mcp-slate-ui-script-more.js.map +1 -1
- package/dist/mcp-slate-ui-script-pause.d.ts +10 -6
- package/dist/mcp-slate-ui-script-pause.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-pause.js +45 -30
- package/dist/mcp-slate-ui-script-pause.js.map +1 -1
- package/dist/mcp-slate-ui-script-references.d.ts +19 -0
- package/dist/mcp-slate-ui-script-references.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-references.js +102 -0
- package/dist/mcp-slate-ui-script-references.js.map +1 -0
- package/dist/mcp-slate-ui-script-remote.d.ts +13 -12
- package/dist/mcp-slate-ui-script-remote.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-remote.js +46 -27
- package/dist/mcp-slate-ui-script-remote.js.map +1 -1
- package/dist/mcp-slate-ui-script-scribble.d.ts +2 -2
- package/dist/mcp-slate-ui-script-scribble.js +7 -7
- package/dist/mcp-slate-ui-script-select.d.ts +4 -9
- package/dist/mcp-slate-ui-script-select.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-select.js +13 -37
- package/dist/mcp-slate-ui-script-select.js.map +1 -1
- package/dist/mcp-slate-ui-script-stage.d.ts +4 -10
- package/dist/mcp-slate-ui-script-stage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-stage.js +28 -141
- package/dist/mcp-slate-ui-script-stage.js.map +1 -1
- package/dist/mcp-slate-ui-script-state.d.ts +1 -1
- package/dist/mcp-slate-ui-script-state.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-state.js +9 -4
- package/dist/mcp-slate-ui-script-state.js.map +1 -1
- package/dist/mcp-slate-ui-script-viewer.d.ts +18 -0
- package/dist/mcp-slate-ui-script-viewer.d.ts.map +1 -0
- package/dist/mcp-slate-ui-script-viewer.js +405 -0
- package/dist/mcp-slate-ui-script-viewer.js.map +1 -0
- package/dist/mcp-slate-ui-script.d.ts +4 -5
- package/dist/mcp-slate-ui-script.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script.js +12 -13
- package/dist/mcp-slate-ui-script.js.map +1 -1
- package/dist/mcp-slate-ui-styles-designs.d.ts +10 -0
- package/dist/mcp-slate-ui-styles-designs.d.ts.map +1 -0
- package/dist/mcp-slate-ui-styles-designs.js +121 -0
- package/dist/mcp-slate-ui-styles-designs.js.map +1 -0
- package/dist/mcp-slate-ui-styles-inspiration.d.ts +13 -13
- package/dist/mcp-slate-ui-styles-inspiration.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-inspiration.js +67 -33
- package/dist/mcp-slate-ui-styles-inspiration.js.map +1 -1
- package/dist/mcp-slate-ui-styles-pause.d.ts +2 -2
- package/dist/mcp-slate-ui-styles-pause.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-pause.js +4 -8
- package/dist/mcp-slate-ui-styles-pause.js.map +1 -1
- package/dist/mcp-slate-ui-styles-stage.d.ts +3 -22
- package/dist/mcp-slate-ui-styles-stage.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-stage.js +6 -74
- package/dist/mcp-slate-ui-styles-stage.js.map +1 -1
- package/dist/mcp-slate-ui-styles.d.ts +12 -19
- package/dist/mcp-slate-ui-styles.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles.js +97 -100
- package/dist/mcp-slate-ui-styles.js.map +1 -1
- package/dist/mcp-slate-ui.d.ts +12 -12
- package/dist/mcp-slate-ui.d.ts.map +1 -1
- package/dist/mcp-slate-ui.js +24 -23
- package/dist/mcp-slate-ui.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/slate-actions.d.ts +22 -1
- package/dist/slate-actions.d.ts.map +1 -1
- package/dist/slate-actions.js +46 -2
- package/dist/slate-actions.js.map +1 -1
- package/dist/slate-browser-host-script.d.ts +2 -1
- package/dist/slate-browser-host-script.d.ts.map +1 -1
- package/dist/slate-browser-host-script.js +4 -3
- package/dist/slate-browser-host-script.js.map +1 -1
- package/dist/slate-browser-host.d.ts +21 -2
- package/dist/slate-browser-host.d.ts.map +1 -1
- package/dist/slate-browser-host.js +38 -5
- package/dist/slate-browser-host.js.map +1 -1
- package/dist/slate-browser-server.d.ts +2 -2
- package/dist/slate-browser-server.d.ts.map +1 -1
- package/dist/slate-browser-server.js +13 -12
- package/dist/slate-browser-server.js.map +1 -1
- package/dist/slate-commit.d.ts.map +1 -1
- package/dist/slate-commit.js +12 -5
- package/dist/slate-commit.js.map +1 -1
- package/dist/slate-handoff.d.ts.map +1 -1
- package/dist/slate-handoff.js +2 -3
- package/dist/slate-handoff.js.map +1 -1
- package/dist/slate-ids.d.ts +2 -1
- package/dist/slate-ids.d.ts.map +1 -1
- package/dist/slate-ids.js +3 -2
- package/dist/slate-ids.js.map +1 -1
- package/dist/slate-reference-ids.d.ts.map +1 -1
- package/dist/slate-reference-ids.js +1 -0
- package/dist/slate-reference-ids.js.map +1 -1
- package/dist/slate-round-prompt.d.ts +19 -0
- package/dist/slate-round-prompt.d.ts.map +1 -1
- package/dist/slate-round-prompt.js +22 -0
- package/dist/slate-round-prompt.js.map +1 -1
- package/dist/slate-round-runner.d.ts.map +1 -1
- package/dist/slate-round-runner.js +16 -12
- package/dist/slate-round-runner.js.map +1 -1
- package/dist/slate-round-search.d.ts.map +1 -1
- package/dist/slate-round-search.js +2 -0
- package/dist/slate-round-search.js.map +1 -1
- package/dist/slate-runtime.d.ts +3 -0
- package/dist/slate-runtime.d.ts.map +1 -1
- package/dist/slate-runtime.js +1 -0
- package/dist/slate-runtime.js.map +1 -1
- package/dist/slate-site-references-capture.d.ts +20 -0
- package/dist/slate-site-references-capture.d.ts.map +1 -0
- package/dist/slate-site-references-capture.js +119 -0
- package/dist/slate-site-references-capture.js.map +1 -0
- package/dist/slate-site-references-client.d.ts +35 -0
- package/dist/slate-site-references-client.d.ts.map +1 -0
- package/dist/slate-site-references-client.js +36 -0
- package/dist/slate-site-references-client.js.map +1 -0
- package/dist/slate-site-references-local.d.ts +6 -0
- package/dist/slate-site-references-local.d.ts.map +1 -0
- package/dist/slate-site-references-local.js +63 -0
- package/dist/slate-site-references-local.js.map +1 -0
- package/dist/slate-site-references-suggest.d.ts +36 -0
- package/dist/slate-site-references-suggest.d.ts.map +1 -0
- package/dist/slate-site-references-suggest.js +144 -0
- package/dist/slate-site-references-suggest.js.map +1 -0
- package/dist/slate-site-references.d.ts +57 -0
- package/dist/slate-site-references.d.ts.map +1 -0
- package/dist/slate-site-references.js +129 -0
- package/dist/slate-site-references.js.map +1 -0
- package/dist/slate-view-contract.d.ts +29 -1
- package/dist/slate-view-contract.d.ts.map +1 -1
- package/dist/slate-view.d.ts.map +1 -1
- package/dist/slate-view.js +5 -0
- package/dist/slate-view.js.map +1 -1
- package/dist/slate-workspace-parse.d.ts +2 -0
- package/dist/slate-workspace-parse.d.ts.map +1 -1
- package/dist/slate-workspace-parse.js +20 -3
- package/dist/slate-workspace-parse.js.map +1 -1
- package/dist/slate-workspace-types.d.ts +17 -2
- package/dist/slate-workspace-types.d.ts.map +1 -1
- package/dist/workspace-draw-messages.d.ts +27 -5
- package/dist/workspace-draw-messages.d.ts.map +1 -1
- package/dist/workspace-draw-messages.js +29 -3
- package/dist/workspace-draw-messages.js.map +1 -1
- package/dist/workspace-draw-run.d.ts +12 -0
- package/dist/workspace-draw-run.d.ts.map +1 -1
- package/dist/workspace-draw-run.js +47 -18
- package/dist/workspace-draw-run.js.map +1 -1
- package/dist/workspace-draw-types.d.ts +2 -1
- package/dist/workspace-draw-types.d.ts.map +1 -1
- package/dist/workspace-draw-types.js +1 -0
- package/dist/workspace-draw-types.js.map +1 -1
- package/dist/workspace-runner-main.d.ts +5 -0
- package/dist/workspace-runner-main.d.ts.map +1 -1
- package/dist/workspace-runner-main.js +15 -3
- package/dist/workspace-runner-main.js.map +1 -1
- package/open-design.json +2 -13
- package/package.json +1 -1
- package/skills/12ui-design/SKILL.md +8 -11
- package/skills/12ui-design/scene.md +3 -9
- package/dist/mcp-slate-ui-script-dialog.d.ts +0 -21
- package/dist/mcp-slate-ui-script-dialog.d.ts.map +0 -1
- package/dist/mcp-slate-ui-script-dialog.js +0 -351
- package/dist/mcp-slate-ui-script-dialog.js.map +0 -1
- package/dist/mcp-slate-ui-script-progress.d.ts +0 -7
- package/dist/mcp-slate-ui-script-progress.d.ts.map +0 -1
- package/dist/mcp-slate-ui-script-progress.js +0 -9
- package/dist/mcp-slate-ui-script-progress.js.map +0 -1
- package/dist/mcp-slate-ui-styles-dialog.d.ts +0 -20
- package/dist/mcp-slate-ui-styles-dialog.d.ts.map +0 -1
- package/dist/mcp-slate-ui-styles-dialog.js +0 -87
- package/dist/mcp-slate-ui-styles-dialog.js.map +0 -1
|
@@ -17,6 +17,24 @@ export declare const roundFrame: (aspect: SlateAspect) => RoundFrame;
|
|
|
17
17
|
* 14 real calls, against 0 of 4 without it.
|
|
18
18
|
*/
|
|
19
19
|
export declare const frameSentence: (frame: RoundFrame, hasReference: boolean) => string;
|
|
20
|
+
/**
|
|
21
|
+
* One page of a branch: another screen of the same product, drawn from the design it grows from (the one attached
|
|
22
|
+
* image) so the identity carries over, as the named page (the person's name, or one of the default pages, which a
|
|
23
|
+
* product without that page draws as its closest equivalent). The hosted workspace's `branchPagePrompt`
|
|
24
|
+
* (workers/api/src/slate/plan/prompts.ts) is the same words.
|
|
25
|
+
*/
|
|
26
|
+
export declare const branchPagePrompt: (args: {
|
|
27
|
+
aspect: SlateAspect;
|
|
28
|
+
concept: string;
|
|
29
|
+
page: string;
|
|
30
|
+
pages: readonly string[];
|
|
31
|
+
}) => string;
|
|
32
|
+
/**
|
|
33
|
+
* The sentence a website reference adds: its screenshot shows a real company's brand, so the draw takes structure and
|
|
34
|
+
* style only. The hosted workspace's `SITE_REFERENCE_SENTENCE` (workers/api/src/slate/plan/prompts.ts) is the same
|
|
35
|
+
* words, held equal by a drift test there.
|
|
36
|
+
*/
|
|
37
|
+
export declare const SITE_REFERENCE_SENTENCE = "The attached image is a screenshot of a real website: use it for structure and style only, and give the design the brief's own product name and invented copy, never the website's brand, logo, wordmark or text.";
|
|
20
38
|
/**
|
|
21
39
|
* One option's prompt. A root or new round's option draws from a reference of any shape, so it ends by naming its
|
|
22
40
|
* frame (`frameSentence`); a like round draws from its parent, already in the frame's shape, and is unchanged.
|
|
@@ -26,5 +44,6 @@ export declare const optionPrompt: (args: {
|
|
|
26
44
|
concept: string;
|
|
27
45
|
like: boolean;
|
|
28
46
|
label: string;
|
|
47
|
+
siteReference?: boolean;
|
|
29
48
|
}) => string;
|
|
30
49
|
//# sourceMappingURL=slate-round-prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-round-prompt.d.ts","sourceRoot":"","sources":["../src/slate-round-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,KAAG,UAEhD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,EAAE,cAAc,OAAO,KAAG,MAGxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,
|
|
1
|
+
{"version":3,"file":"slate-round-prompt.d.ts","sourceRoot":"","sources":["../src/slate-round-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,eAAO,MAAM,UAAU,GAAI,QAAQ,WAAW,KAAG,UAEhD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,EAAE,cAAc,OAAO,KAAG,MAGxE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,KAAG,MAQ/G,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,sNAAwN,CAAC;AAE7P;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,MAapI,CAAC"}
|
|
@@ -9,6 +9,27 @@ export const frameSentence = (frame, hasReference) => {
|
|
|
9
9
|
const shape = frame.width > frame.height ? 'landscape' : frame.width < frame.height ? 'portrait' : 'square';
|
|
10
10
|
return `Make the image ${shape}, exactly ${frame.width}×${frame.height} pixels${hasReference ? ', whatever the shape of the attached image' : ''}.`;
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* One page of a branch: another screen of the same product, drawn from the design it grows from (the one attached
|
|
14
|
+
* image) so the identity carries over, as the named page (the person's name, or one of the default pages, which a
|
|
15
|
+
* product without that page draws as its closest equivalent). The hosted workspace's `branchPagePrompt`
|
|
16
|
+
* (workers/api/src/slate/plan/prompts.ts) is the same words.
|
|
17
|
+
*/
|
|
18
|
+
export const branchPagePrompt = (args) => [
|
|
19
|
+
`Design one complete ${args.aspect} user-interface image: another page of the product in the attached design.`,
|
|
20
|
+
`Brief: ${args.concept}.`,
|
|
21
|
+
'The attached image is the approved design: keep its product, brand, navigation, typography, colours, spacing and components exactly, so the new page reads as the same site or app.',
|
|
22
|
+
`This page is: ${args.page} (or, if this product has no such page, its closest equivalent).`,
|
|
23
|
+
...(args.pages.length > 1 ? [`The other new pages are ${args.pages.filter((p) => p !== args.page).join(', ')}; this one must differ from them and from the screen shown.`] : []),
|
|
24
|
+
'Return one finished interface image with realistic content: no device frame, no watermark.',
|
|
25
|
+
frameSentence(roundFrame(args.aspect), false),
|
|
26
|
+
].join(' ');
|
|
27
|
+
/**
|
|
28
|
+
* The sentence a website reference adds: its screenshot shows a real company's brand, so the draw takes structure and
|
|
29
|
+
* style only. The hosted workspace's `SITE_REFERENCE_SENTENCE` (workers/api/src/slate/plan/prompts.ts) is the same
|
|
30
|
+
* words, held equal by a drift test there.
|
|
31
|
+
*/
|
|
32
|
+
export const SITE_REFERENCE_SENTENCE = 'The attached image is a screenshot of a real website: use it for structure and style only, and give the design the brief\'s own product name and invented copy, never the website\'s brand, logo, wordmark or text.';
|
|
12
33
|
/**
|
|
13
34
|
* One option's prompt. A root or new round's option draws from a reference of any shape, so it ends by naming its
|
|
14
35
|
* frame (`frameSentence`); a like round draws from its parent, already in the frame's shape, and is unchanged.
|
|
@@ -21,6 +42,7 @@ export const optionPrompt = (args) => {
|
|
|
21
42
|
`Design one complete ${args.aspect} user-interface image for this product.`,
|
|
22
43
|
`Brief: ${args.concept}.`,
|
|
23
44
|
references,
|
|
45
|
+
...(args.siteReference && !args.like ? [SITE_REFERENCE_SENTENCE] : []),
|
|
24
46
|
`Option ${args.label} must look clearly different from the other options of this round.`,
|
|
25
47
|
'Return one finished interface image with realistic content: no device frame, no watermark.',
|
|
26
48
|
...(args.like ? [] : [frameSentence(roundFrame(args.aspect), true)]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-round-prompt.js","sourceRoot":"","sources":["../src/slate-round-prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAc,EAAE,CAAC,CAC7D,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAC5I,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,YAAqB,EAAU,EAAE;IAChF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5G,OAAO,kBAAkB,KAAK,aAAa,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,UAAU,YAAY,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACtJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"slate-round-prompt.js","sourceRoot":"","sources":["../src/slate-round-prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAc,EAAE,CAAC,CAC7D,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAC5I,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,YAAqB,EAAU,EAAE;IAChF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5G,OAAO,kBAAkB,KAAK,aAAa,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,UAAU,YAAY,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AACtJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAsF,EAAU,EAAE,CAAC;IAClI,uBAAuB,IAAI,CAAC,MAAM,4EAA4E;IAC9G,UAAU,IAAI,CAAC,OAAO,GAAG;IACzB,qLAAqL;IACrL,iBAAiB,IAAI,CAAC,IAAI,kEAAkE;IAC5F,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChL,4FAA4F;IAC5F,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;CAC9C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,qNAAqN,CAAC;AAE7P;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAqG,EAAU,EAAE;IAC5I,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;QAC1B,CAAC,CAAC,+QAA+Q;QACjR,CAAC,CAAC,2IAA2I,CAAC;IAChJ,OAAO;QACL,uBAAuB,IAAI,CAAC,MAAM,yCAAyC;QAC3E,UAAU,IAAI,CAAC,OAAO,GAAG;QACzB,UAAU;QACV,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,UAAU,IAAI,CAAC,KAAK,oEAAoE;QACxF,4FAA4F;QAC5F,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;KACrE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-round-runner.d.ts","sourceRoot":"","sources":["../src/slate-round-runner.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"slate-round-runner.d.ts","sourceRoot":"","sources":["../src/slate-round-runner.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,OAAO,EAAoB,MAAM,4BAA4B,CAAC;AA2G5E,eAAO,MAAM,QAAQ,GAAU,KAAK,SAAS,EAAE,IAAI,OAAO,KAAG,OAAO,CAAC,OAAO,CAmC3E,CAAC"}
|
|
@@ -2,7 +2,7 @@ import sharp from 'sharp';
|
|
|
2
2
|
import { generationVersionId, sha256Hex, slotOfCandidate } from './slate-ids.js';
|
|
3
3
|
import { versionImageFile } from './slate-paths.js';
|
|
4
4
|
import { ensureReferenceImage } from './slate-reference-store.js';
|
|
5
|
-
import { optionPrompt, roundFrame } from './slate-round-prompt.js';
|
|
5
|
+
import { branchPagePrompt, optionPrompt, roundFrame } from './slate-round-prompt.js';
|
|
6
6
|
import { chooseReferences } from './slate-round-search.js';
|
|
7
7
|
import { failure, ledger, patchOp, setPhase, } from './slate-runner-context.js';
|
|
8
8
|
import { imageFailure } from './slate-runner-failure.js';
|
|
@@ -13,11 +13,14 @@ const pendingSlots = async (env, params) => {
|
|
|
13
13
|
const { workspace } = await loadWorkspaceAt(env.root, env.clock.now);
|
|
14
14
|
return workspace.candidates
|
|
15
15
|
.filter((candidate) => candidate.roundId === params.roundId && candidate.versionIds.length === 0 && candidate.error === null)
|
|
16
|
-
.flatMap((candidate) => (candidate.referenceId ? [{
|
|
16
|
+
.flatMap((candidate) => (candidate.referenceId || params.mode === 'branch' ? [{
|
|
17
17
|
candidateId: candidate.candidateId,
|
|
18
18
|
slot: slotOfCandidate(candidate.candidateId),
|
|
19
19
|
label: candidate.label,
|
|
20
20
|
referenceId: candidate.referenceId,
|
|
21
|
+
site: (workspace.sites ?? []).some((site) => site.referenceId === candidate.referenceId),
|
|
22
|
+
page: candidate.page ?? null,
|
|
23
|
+
index: params.candidateIds.indexOf(candidate.candidateId),
|
|
21
24
|
}] : []));
|
|
22
25
|
};
|
|
23
26
|
const recordOptionFailure = async (env, slot, reason) => {
|
|
@@ -31,21 +34,21 @@ const recordOptionFailure = async (env, slot, reason) => {
|
|
|
31
34
|
await env.log({ event: 'option_failed', slot: slot.slot, reason: reason.message });
|
|
32
35
|
};
|
|
33
36
|
const drawOption = async (env, params, slot, references, from) => {
|
|
34
|
-
const
|
|
35
|
-
|
|
37
|
+
const branch = params.mode === 'branch';
|
|
38
|
+
const reference = slot.referenceId ? references.get(slot.referenceId) : undefined;
|
|
39
|
+
if (!branch && (!reference || reference instanceof Error)) {
|
|
36
40
|
await recordOptionFailure(env, slot, { message: 'The inspiration image could not be fetched.', code: 'inspiration_fetch_failed' });
|
|
37
41
|
return;
|
|
38
42
|
}
|
|
39
43
|
const callId = `slate-${env.opId}-${slot.slot}`;
|
|
40
44
|
const frame = roundFrame(params.aspect);
|
|
45
|
+
const prompt = branch
|
|
46
|
+
? branchPagePrompt({ aspect: params.aspect, concept: params.concept, page: slot.page ?? params.pages?.[slot.index] ?? 'Detail', pages: params.pages ?? [] })
|
|
47
|
+
: optionPrompt({ aspect: params.aspect, concept: params.concept, like: from !== null, label: slot.label, siteReference: slot.site });
|
|
48
|
+
const images = branch ? [from] : from ? [from, reference] : [reference];
|
|
41
49
|
try {
|
|
42
50
|
await ledger(env, { event: 'call_started', callId, slot: slot.slot });
|
|
43
|
-
const result = await env.executor.generate({
|
|
44
|
-
callId,
|
|
45
|
-
prompt: optionPrompt({ aspect: params.aspect, concept: params.concept, like: from !== null, label: slot.label }),
|
|
46
|
-
images: from ? [from, reference] : [reference],
|
|
47
|
-
expected: frame,
|
|
48
|
-
});
|
|
51
|
+
const result = await env.executor.generate({ callId, prompt, images, expected: frame });
|
|
49
52
|
const png = await sharp(result.png, { animated: false, failOn: 'warning' }).png().toBuffer();
|
|
50
53
|
const facts = await sharp(png).metadata();
|
|
51
54
|
const sha256 = sha256Hex(png);
|
|
@@ -92,13 +95,14 @@ const failureDetail = (error) => {
|
|
|
92
95
|
};
|
|
93
96
|
export const runRound = async (env, op) => {
|
|
94
97
|
const params = op.params;
|
|
95
|
-
|
|
98
|
+
// A branch draws from its design alone, so it never searches.
|
|
99
|
+
const refusal = params.mode === 'branch' ? null : await chooseReferences(env, params);
|
|
96
100
|
if (refusal)
|
|
97
101
|
return refusal;
|
|
98
102
|
const slots = await pendingSlots(env, params);
|
|
99
103
|
await setPhase(env, 'fetching');
|
|
100
104
|
const references = new Map();
|
|
101
|
-
await Promise.all([...new Set(slots.
|
|
105
|
+
await Promise.all([...new Set(slots.flatMap((slot) => (slot.referenceId ? [slot.referenceId] : [])))].map(async (referenceId) => {
|
|
102
106
|
try {
|
|
103
107
|
references.set(referenceId, (await ensureReferenceImage({ root: env.root, corpus: env.corpus, referenceId, size: 'ref' })).bytes);
|
|
104
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-round-runner.js","sourceRoot":"","sources":["../src/slate-round-runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"slate-round-runner.js","sourceRoot":"","sources":["../src/slate-round-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-round-search.d.ts","sourceRoot":"","sources":["../src/slate-round-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"slate-round-search.d.ts","sourceRoot":"","sources":["../src/slate-round-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAIlG,OAAO,EAAsC,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG7G,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAevF,eAAO,MAAM,YAAY,GAAI,MAAM,qBAAqB,KAAG,kBAQzD,CAAC;AAEH,wFAAwF;AACxF,eAAO,MAAM,gBAAgB,GAAU,KAAK,SAAS,EAAE,QAAQ,gBAAgB,KAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CA+CvG,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MAX_CORPUS_REFERENCE_IMAGE_BYTES } from './corpus-client.js';
|
|
2
2
|
import { corpusFailure } from './slate-corpus.js';
|
|
3
3
|
import { SlateError } from './slate-errors.js';
|
|
4
|
+
import { referenceRenditionFields } from './corpus-public-renditions.js';
|
|
4
5
|
import { failure, ledger, patchOp, setPhase } from './slate-runner-context.js';
|
|
5
6
|
import { readVersionBytes } from './slate-versions.js';
|
|
6
7
|
import { findRound, loadWorkspaceAt } from './slate-workspace-store.js';
|
|
@@ -20,6 +21,7 @@ export const metaFromItem = (item) => ({
|
|
|
20
21
|
height: Number.isSafeInteger(item.height) && (item.height ?? 0) > 0 ? item.height : null,
|
|
21
22
|
description: typeof item.description === 'string' ? item.description.slice(0, 2_000) : null,
|
|
22
23
|
uiType: typeof item.uiType === 'string' ? item.uiType.slice(0, 200) : null,
|
|
24
|
+
...referenceRenditionFields(item.thumb, item.ref),
|
|
23
25
|
});
|
|
24
26
|
/** The references for this round, recorded. `null` means the round already had them. */
|
|
25
27
|
export const chooseReferences = async (env, params) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-round-search.js","sourceRoot":"","sources":["../src/slate-round-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAA8B,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAgC,MAAM,2BAA2B,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGxE;;;;;;;GAOG;AAEH,MAAM,eAAe,GAAG,CAAC,KAAc,EAAgC,EAAE,CAAC,CACxE,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CACjE,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAA2B,EAAsB,EAAE,CAAC,CAAC;IAChF,WAAW,EAAE,IAAI,CAAC,EAAE;IACpB,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,CAAC,IAAI;IACrF,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC,IAAI;IACzF,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;IAC3F,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"slate-round-search.js","sourceRoot":"","sources":["../src/slate-round-search.ts"],"names":[],"mappings":"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"}
|
package/dist/slate-runtime.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export type SlateToolContext = {
|
|
|
21
21
|
corpus?: () => SlateCorpus;
|
|
22
22
|
/** Whether Design and Edit can run here; the default asks the local Codex CLI (cached for a minute). */
|
|
23
23
|
probeLocalImage?: SlateImageProbe;
|
|
24
|
+
/** Gathers the References tab's websites for a workspace the screen shows (`12ui mcp` passes the real one). */
|
|
25
|
+
gatherReferences?: (root: string) => void;
|
|
24
26
|
};
|
|
25
27
|
export type SlateRuntime = {
|
|
26
28
|
stateRoot: string;
|
|
@@ -29,6 +31,7 @@ export type SlateRuntime = {
|
|
|
29
31
|
corpus: () => SlateCorpus;
|
|
30
32
|
/** Never throws: a probe that fails is a not-ready answer with the reason. */
|
|
31
33
|
localImage: () => Promise<LocalImageState>;
|
|
34
|
+
gatherReferences: (root: string) => void;
|
|
32
35
|
cwd?: string;
|
|
33
36
|
tempRoot?: string;
|
|
34
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-runtime.d.ts","sourceRoot":"","sources":["../src/slate-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;;GAKG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,WAAW,CAAC;IAC3B,wGAAwG;IACxG,eAAe,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"slate-runtime.d.ts","sourceRoot":"","sources":["../src/slate-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;;;GAKG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,WAAW,CAAC;IAC3B,wGAAwG;IACxG,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,+GAA+G;IAC/G,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,MAAM,WAAW,CAAC;IAC1B,8EAA8E;IAC9E,UAAU,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,SAAS,gBAAgB,KAAG,YAoBxD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,cAkB5C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAIlE,CAAC"}
|
package/dist/slate-runtime.js
CHANGED
|
@@ -12,6 +12,7 @@ export const slateRuntime = (context) => {
|
|
|
12
12
|
now,
|
|
13
13
|
launchRunner: context.launchRunner ?? spawnSlateRunner,
|
|
14
14
|
corpus: context.corpus ?? lazyCorpus(),
|
|
15
|
+
gatherReferences: context.gatherReferences ?? (() => undefined),
|
|
15
16
|
localImage: async () => {
|
|
16
17
|
try {
|
|
17
18
|
return await probe();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slate-runtime.js","sourceRoot":"","sources":["../src/slate-runtime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAwB,MAAM,wBAAwB,CAAC;AAErG,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"slate-runtime.js","sourceRoot":"","sources":["../src/slate-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The capture step of the References tab: each suggested site opened headless in the Playwright Chromium the CLI
|
|
3
|
+
* already ships, at a desktop viewport, and photographed above the fold once the page has settled, with a trivial
|
|
4
|
+
* cookie banner accepted first. A page that does not open, answers an error, or stays blank is skipped (null).
|
|
5
|
+
*/
|
|
6
|
+
export declare const CAPTURE_VIEWPORT: {
|
|
7
|
+
readonly width: 1440;
|
|
8
|
+
readonly height: 900;
|
|
9
|
+
};
|
|
10
|
+
export type CapturedSite = {
|
|
11
|
+
image: Buffer;
|
|
12
|
+
thumb: Buffer;
|
|
13
|
+
title: string;
|
|
14
|
+
finalUrl: string;
|
|
15
|
+
};
|
|
16
|
+
export declare const openSiteCapture: () => Promise<{
|
|
17
|
+
capture: (url: string) => Promise<CapturedSite | null>;
|
|
18
|
+
close: () => Promise<void>;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=slate-site-references-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-site-references-capture.d.ts","sourceRoot":"","sources":["../src/slate-site-references-capture.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,eAAO,MAAM,gBAAgB;;;CAAwC,CAAC;AAUtE,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AA4E7F,eAAO,MAAM,eAAe,QAAa,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAwCtI,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import sharp from 'sharp';
|
|
2
|
+
import { resolvePrototypeBrowserProvisioning } from './prototype-browsers.js';
|
|
3
|
+
/**
|
|
4
|
+
* The capture step of the References tab: each suggested site opened headless in the Playwright Chromium the CLI
|
|
5
|
+
* already ships, at a desktop viewport, and photographed above the fold once the page has settled, with a trivial
|
|
6
|
+
* cookie banner accepted first. A page that does not open, answers an error, or stays blank is skipped (null).
|
|
7
|
+
*/
|
|
8
|
+
export const CAPTURE_VIEWPORT = { width: 1440, height: 900 };
|
|
9
|
+
const THUMB_WIDTH = 640;
|
|
10
|
+
const GOTO_TIMEOUT_MS = 25_000;
|
|
11
|
+
const LOAD_WAIT_MS = 10_000;
|
|
12
|
+
const IDLE_WAIT_MS = 4_000;
|
|
13
|
+
/** Marketing pop-ups arrive on a timer (atlascoffeeclub.com's email form shows about 11 s after navigation): keep looking until then. */
|
|
14
|
+
const POPUP_SETTLE_MS = 13_000;
|
|
15
|
+
/** A real desktop Chrome's user agent: some sites turn a "HeadlessChrome" one away. */
|
|
16
|
+
const USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36';
|
|
17
|
+
/**
|
|
18
|
+
* Page scripts, as plain source so no transpiler helper leaks into the page. CLEAR_OVERLAYS accepts a cookie banner and
|
|
19
|
+
* closes an overlay (a newsletter or region pop-up) when either is plainly marked and sits in fixed chrome or a dialog,
|
|
20
|
+
* looking into open shadow roots too, and answers how many it clicked. A close control may be icon-only: a button whose
|
|
21
|
+
* aria-label or title says close or dismiss, or a close-classed element inside a dialog or modal. HIDE_OVERLAYS then
|
|
22
|
+
* hides a fixed, viewport-sized dialog or modal that is still up. HAS_CONTENT answers whether the page painted.
|
|
23
|
+
*/
|
|
24
|
+
const CLEAR_OVERLAYS = String.raw `(() => {
|
|
25
|
+
var known = ["#onetrust-accept-btn-handler", "#CybotCookiebotDialogBodyLevelButtonLevelOptinAllowAll", "#truste-consent-button", "[data-testid=uc-accept-all-button]", ".cc-allow", ".cky-btn-accept", "#didomi-notice-agree-button"];
|
|
26
|
+
var accept = /^(accept|accept all|accept all cookies|accept cookies|allow all|allow all cookies|allow cookies|i agree|i accept|agree|agree and close|got it|ok|okay|i understand)$/i;
|
|
27
|
+
var dismiss = /^(no thanks|no, thanks|no thank you|not now|maybe later|close|close dialog|close modal|dismiss|×|✕|x|no thank you, i'm fine here|no thanks, i'm fine here|stay here)$/i;
|
|
28
|
+
var roots = [document];
|
|
29
|
+
document.querySelectorAll("*").forEach(function (node) { if (node.shadowRoot) roots.push(node.shadowRoot); });
|
|
30
|
+
function visible(node) { var box = node.getBoundingClientRect(); return box.width > 0 && box.height > 0 && getComputedStyle(node).visibility !== "hidden"; }
|
|
31
|
+
function label(node) { return ((node.textContent || "").replace(/\s+/g, " ").trim() || node.getAttribute("aria-label") || node.value || "").trim(); }
|
|
32
|
+
function overlaid(node) {
|
|
33
|
+
for (var at = node; at && at.nodeType === 1; at = at.parentElement || (at.getRootNode && at.getRootNode().host) || null) {
|
|
34
|
+
var position = getComputedStyle(at).position;
|
|
35
|
+
if (position === "fixed" || position === "sticky" || at.getAttribute("role") === "dialog" || at.getAttribute("aria-modal") === "true") return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
function iconClose(node) {
|
|
40
|
+
var name = node.getAttribute("aria-label") || node.getAttribute("title") || "";
|
|
41
|
+
return /\b(close|dismiss)\b/i.test(name) && node.tagName !== "A";
|
|
42
|
+
}
|
|
43
|
+
function closeClassed(node) {
|
|
44
|
+
return /(^|[\s_-])close([\s_-]|$)/i.test(String(node.getAttribute("class") || "")) && !!node.closest("[role=dialog], [aria-modal=true], [class*=modal], [class*=popup], [class*=dialog]");
|
|
45
|
+
}
|
|
46
|
+
var clicked = 0;
|
|
47
|
+
roots.forEach(function (root) {
|
|
48
|
+
known.forEach(function (selector) { var node = root.querySelector(selector); if (node && visible(node)) { node.click(); clicked += 1; } });
|
|
49
|
+
root.querySelectorAll("button, [role=button], a, input[type=button], input[type=submit]").forEach(function (node) {
|
|
50
|
+
if (!visible(node)) return;
|
|
51
|
+
var text = label(node);
|
|
52
|
+
// A link only ever accepts: a close word on a link (an X profile, say) could leave the page.
|
|
53
|
+
if ((accept.test(text) || (dismiss.test(text) && node.tagName !== "A") || iconClose(node)) && overlaid(node)) { node.click(); clicked += 1; }
|
|
54
|
+
});
|
|
55
|
+
root.querySelectorAll("[class*=close]").forEach(function (node) {
|
|
56
|
+
if (visible(node) && closeClassed(node) && node.tagName !== "A" && !node.querySelector("button, [role=button]")) { node.click(); clicked += 1; }
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
return clicked;
|
|
60
|
+
})()`;
|
|
61
|
+
const HIDE_OVERLAYS = String.raw `(() => {
|
|
62
|
+
var hidden = 0;
|
|
63
|
+
var marked = /modal|popup|dialog|overlay|backdrop|lightbox/i;
|
|
64
|
+
document.querySelectorAll("body *").forEach(function (node) {
|
|
65
|
+
var style = getComputedStyle(node);
|
|
66
|
+
if (style.position !== "fixed" || style.display === "none" || style.visibility === "hidden") return;
|
|
67
|
+
var box = node.getBoundingClientRect();
|
|
68
|
+
if (box.width < innerWidth * 0.9 || box.height < innerHeight * 0.9) return;
|
|
69
|
+
var named = node.getAttribute("role") === "dialog" || node.getAttribute("aria-modal") === "true" || marked.test(String(node.getAttribute("class") || "") + " " + node.id);
|
|
70
|
+
if (named) { node.style.setProperty("display", "none", "important"); hidden += 1; }
|
|
71
|
+
});
|
|
72
|
+
return hidden;
|
|
73
|
+
})()`;
|
|
74
|
+
const HAS_CONTENT = '((document.body && document.body.innerText || "").trim().length > 40 || document.images.length > 2)';
|
|
75
|
+
const quietly = async (work) => { await work.catch(() => undefined); };
|
|
76
|
+
export const openSiteCapture = async () => {
|
|
77
|
+
const provisioning = await resolvePrototypeBrowserProvisioning();
|
|
78
|
+
process.env.PLAYWRIGHT_BROWSERS_PATH = provisioning.browsersPath;
|
|
79
|
+
const { chromium } = await import('@playwright/test');
|
|
80
|
+
const browser = await chromium.launch();
|
|
81
|
+
const capture = async (url) => {
|
|
82
|
+
const context = await browser.newContext({ viewport: CAPTURE_VIEWPORT, deviceScaleFactor: 1, userAgent: USER_AGENT, locale: 'en-US', colorScheme: 'light' });
|
|
83
|
+
try {
|
|
84
|
+
const page = await context.newPage();
|
|
85
|
+
const startedAt = Date.now();
|
|
86
|
+
const response = await page.goto(url, { waitUntil: 'domcontentloaded', timeout: GOTO_TIMEOUT_MS });
|
|
87
|
+
if (!response || response.status() >= 400)
|
|
88
|
+
return null;
|
|
89
|
+
await quietly(page.waitForLoadState('load', { timeout: LOAD_WAIT_MS }));
|
|
90
|
+
await quietly(page.waitForLoadState('networkidle', { timeout: IDLE_WAIT_MS }));
|
|
91
|
+
// Banners and pop-ups often arrive a moment after load, some on a timer: clear them, then look again until the
|
|
92
|
+
// settle time has passed.
|
|
93
|
+
for (let pass = 0; pass === 0 || Date.now() - startedAt < POPUP_SETTLE_MS; pass += 1) {
|
|
94
|
+
await page.waitForTimeout(pass === 0 ? 800 : 1_000);
|
|
95
|
+
await page.evaluate(CLEAR_OVERLAYS).catch(() => 0);
|
|
96
|
+
// A pop-up that listens for Escape closes with it.
|
|
97
|
+
await quietly(page.keyboard.press('Escape'));
|
|
98
|
+
}
|
|
99
|
+
// A dialog that survived every click is hidden rather than photographed.
|
|
100
|
+
await quietly(page.evaluate(HIDE_OVERLAYS));
|
|
101
|
+
// Above the fold: a click or a focus may have scrolled the page.
|
|
102
|
+
await quietly(page.evaluate('window.scrollTo(0, 0)'));
|
|
103
|
+
await page.waitForTimeout(500);
|
|
104
|
+
if (!(await page.evaluate(HAS_CONTENT).catch(() => false)))
|
|
105
|
+
return null;
|
|
106
|
+
const image = await page.screenshot({ type: 'jpeg', quality: 82, clip: { x: 0, y: 0, ...CAPTURE_VIEWPORT } });
|
|
107
|
+
const thumb = await sharp(image).resize({ width: THUMB_WIDTH }).jpeg({ quality: 78, mozjpeg: true }).toBuffer();
|
|
108
|
+
return { image, thumb, title: (await page.title().catch(() => '')).trim(), finalUrl: page.url() };
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
await quietly(context.close());
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
return { capture, close: async () => { await quietly(browser.close()); } };
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=slate-site-references-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-site-references-capture.js","sourceRoot":"","sources":["../src/slate-site-references-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type DrawFetch } from './workspace-draw-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* The References tab's two calls on design.12ui.com, authenticated by the workspace's upload token like the draw
|
|
4
|
+
* command's: what to look for (the brief, and the sites already added), and one captured site.
|
|
5
|
+
*/
|
|
6
|
+
export type SitesBrief = {
|
|
7
|
+
concept: string;
|
|
8
|
+
corpusQuery: string | null;
|
|
9
|
+
sites: {
|
|
10
|
+
id: string;
|
|
11
|
+
url: string;
|
|
12
|
+
}[];
|
|
13
|
+
max: number;
|
|
14
|
+
};
|
|
15
|
+
export type SitePush = {
|
|
16
|
+
url: string;
|
|
17
|
+
title: string;
|
|
18
|
+
why: string;
|
|
19
|
+
image: Buffer;
|
|
20
|
+
thumb: Buffer;
|
|
21
|
+
};
|
|
22
|
+
export declare const createSitesClient: (args: {
|
|
23
|
+
origin: string;
|
|
24
|
+
token: string;
|
|
25
|
+
cliVersion: string;
|
|
26
|
+
fetch?: DrawFetch;
|
|
27
|
+
}) => {
|
|
28
|
+
brief: () => Promise<SitesBrief>;
|
|
29
|
+
push: (site: SitePush) => Promise<{
|
|
30
|
+
id: string;
|
|
31
|
+
replayed: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
};
|
|
34
|
+
export type SitesClient = ReturnType<typeof createSitesClient>;
|
|
35
|
+
//# sourceMappingURL=slate-site-references-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-site-references-client.d.ts","sourceRoot":"","sources":["../src/slate-site-references-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5G;;;GAGG;AAEH,MAAM,MAAM,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5H,MAAM,MAAM,QAAQ,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjG,eAAO,MAAM,iBAAiB,GAAI,MAAM;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE;iBAa3F,OAAO,CAAC,UAAU,CAAC;iBAUjB,QAAQ,KAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;CAW3E,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { CLI_HEADER, NO_REDIRECT, PUSH_HEADER, readBody } from './workspace-draw-client.js';
|
|
2
|
+
export const createSitesClient = (args) => {
|
|
3
|
+
const fetcher = args.fetch ?? ((url, init) => fetch(url, init));
|
|
4
|
+
const url = `${args.origin}/api/v1/slate/sites`;
|
|
5
|
+
const headers = { [PUSH_HEADER]: args.token, [CLI_HEADER]: args.cliVersion };
|
|
6
|
+
const call = async (init) => {
|
|
7
|
+
const response = await fetcher(url, { ...init, redirect: NO_REDIRECT, headers: { ...headers, ...init.headers } });
|
|
8
|
+
const body = await readBody(response);
|
|
9
|
+
if (!response.ok || !body || typeof body !== 'object')
|
|
10
|
+
throw new Error(`${url} answered ${response.status}${typeof body === 'object' && body ? ` ${JSON.stringify(body.error ?? '')}` : ''}`);
|
|
11
|
+
return body;
|
|
12
|
+
};
|
|
13
|
+
return {
|
|
14
|
+
brief: async () => {
|
|
15
|
+
const body = await call({ method: 'GET' });
|
|
16
|
+
const brief = (body.brief ?? {});
|
|
17
|
+
return {
|
|
18
|
+
concept: typeof brief.concept === 'string' ? brief.concept : '',
|
|
19
|
+
corpusQuery: typeof brief.corpusQuery === 'string' ? brief.corpusQuery : null,
|
|
20
|
+
sites: Array.isArray(body.sites) ? body.sites : [],
|
|
21
|
+
max: typeof body.max === 'number' ? body.max : 12,
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
push: async (site) => {
|
|
25
|
+
const form = new FormData();
|
|
26
|
+
form.append('url', site.url);
|
|
27
|
+
form.append('title', site.title);
|
|
28
|
+
form.append('why', site.why);
|
|
29
|
+
form.append('image', new Blob([new Uint8Array(site.image)], { type: 'image/jpeg' }), 'image.jpg');
|
|
30
|
+
form.append('thumb', new Blob([new Uint8Array(site.thumb)], { type: 'image/jpeg' }), 'thumb.jpg');
|
|
31
|
+
const body = await call({ method: 'POST', body: form });
|
|
32
|
+
return { id: String(body.id), replayed: body.replayed === true };
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=slate-site-references-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-site-references-client.js","sourceRoot":"","sources":["../src/slate-site-references-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAkB,MAAM,4BAA4B,CAAC;AAU5G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAA8E,EAAE,EAAE;IAClH,MAAM,OAAO,GAAc,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,qBAAqB,CAAC;IAChD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IAE7E,MAAM,IAAI,GAAG,KAAK,EAAE,IAAiB,EAAoC,EAAE;QACzE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAI,IAAI,CAAC,OAA8C,EAAE,EAAE,CAAC,CAAC;QAC1J,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,aAAa,QAAQ,CAAC,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAE,IAA4B,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvN,OAAO,IAA+B,CAAC;IACzC,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,KAAK,IAAyB,EAAE;YACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAiD,CAAC;YACjF,OAAO;gBACL,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC/D,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;gBAC7E,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAsC,CAAC,CAAC,CAAC,EAAE;gBACnF,GAAG,EAAE,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;aAClD,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAc,EAA8C,EAAE;YACzE,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAClG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;YAClG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SitePush } from './slate-site-references-client.js';
|
|
2
|
+
export declare const localSiteId: (url: string) => string;
|
|
3
|
+
export declare const addLocalSite: (root: string, site: SitePush) => Promise<string>;
|
|
4
|
+
/** Gather once per workspace per server process; a workspace that already has its sites gathers nothing. */
|
|
5
|
+
export declare const startLocalReferences: (root: string, env?: NodeJS.ProcessEnv) => void;
|
|
6
|
+
//# sourceMappingURL=slate-site-references-local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-site-references-local.d.ts","sourceRoot":"","sources":["../src/slate-site-references-local.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAgBlE,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAAuD,CAAC;AAOlG,eAAO,MAAM,YAAY,GAAU,MAAM,MAAM,EAAE,MAAM,QAAQ,KAAG,OAAO,CAAC,MAAM,CAe/E,CAAC;AAIF,4GAA4G;AAC5G,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,MAAK,MAAM,CAAC,UAAwB,KAAG,IAezF,CAAC"}
|