@12ui/design 0.2.80 → 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 +2 -0
- 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 +11 -0
- 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.d.ts +8 -7
- package/dist/slate-browser-host.d.ts.map +1 -1
- package/dist/slate-browser-host.js +13 -10
- package/dist/slate-browser-host.js.map +1 -1
- package/dist/slate-browser-server.d.ts.map +1 -1
- package/dist/slate-browser-server.js +10 -4
- 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 +7 -8
- 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
|
@@ -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":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import sharp from 'sharp';
|
|
4
|
+
import { sha256Hex } from './slate-ids.js';
|
|
5
|
+
import { referenceFile } from './slate-paths.js';
|
|
6
|
+
import { gatherSiteReferences, SITE_TARGET } from './slate-site-references.js';
|
|
7
|
+
import { loadWorkspaceAt, mutateWorkspace, NoWrite } from './slate-workspace-store.js';
|
|
8
|
+
/**
|
|
9
|
+
* The local plugin's References tab: the same gathering as the hosted workspace's, started by the local MCP server the
|
|
10
|
+
* first time it shows a workspace with fewer than a dozen sites. Each site's screenshot is cached as that reference's
|
|
11
|
+
* pictures (`inspiration/<id>.ref.png` and `.thumb.png`), so the reference tool, the selection and the local runner's
|
|
12
|
+
* draws take it like any reference, and the record names it in `sites`.
|
|
13
|
+
*/
|
|
14
|
+
/** `site-` and 16 hex of sha256 of the page address without its fragment: the hosted server's id for the same page. */
|
|
15
|
+
const pageOf = (url) => {
|
|
16
|
+
const page = new URL(url);
|
|
17
|
+
page.hash = '';
|
|
18
|
+
return page.href;
|
|
19
|
+
};
|
|
20
|
+
export const localSiteId = (url) => `site-${sha256Hex(pageOf(url)).slice(0, 16)}`;
|
|
21
|
+
const writePng = async (file, jpeg) => {
|
|
22
|
+
await mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
|
|
23
|
+
await writeFile(file, await sharp(jpeg).png().toBuffer(), { mode: 0o600 });
|
|
24
|
+
};
|
|
25
|
+
export const addLocalSite = async (root, site) => {
|
|
26
|
+
const id = localSiteId(site.url);
|
|
27
|
+
// The same page again keeps its first screenshot.
|
|
28
|
+
if (((await loadWorkspaceAt(root, () => new Date())).workspace.sites ?? []).some((entry) => entry.referenceId === id))
|
|
29
|
+
return id;
|
|
30
|
+
await writePng(referenceFile(root, id, 'ref'), site.image);
|
|
31
|
+
await writePng(referenceFile(root, id, 'thumb'), site.thumb);
|
|
32
|
+
const { width, height } = await sharp(site.image).metadata();
|
|
33
|
+
await mutateWorkspace(root, (workspace) => {
|
|
34
|
+
const sites = workspace.sites ?? [];
|
|
35
|
+
if (sites.some((entry) => entry.referenceId === id))
|
|
36
|
+
return new NoWrite(undefined);
|
|
37
|
+
workspace.sites = [...sites, { referenceId: id, url: pageOf(site.url), title: site.title.slice(0, 200), why: site.why ? site.why.slice(0, 500) : null }];
|
|
38
|
+
workspace.references[id] = { referenceId: id, aspect: 'landscape', width: width ?? null, height: height ?? null, description: site.title.slice(0, 200), uiType: 'website' };
|
|
39
|
+
return undefined;
|
|
40
|
+
});
|
|
41
|
+
return id;
|
|
42
|
+
};
|
|
43
|
+
const started = new Set();
|
|
44
|
+
/** Gather once per workspace per server process; a workspace that already has its sites gathers nothing. */
|
|
45
|
+
export const startLocalReferences = (root, env = process.env) => {
|
|
46
|
+
if (started.has(root))
|
|
47
|
+
return;
|
|
48
|
+
started.add(root);
|
|
49
|
+
void (async () => {
|
|
50
|
+
const { workspace } = await loadWorkspaceAt(root, () => new Date());
|
|
51
|
+
const existing = (workspace.sites ?? []).map((site) => site.url);
|
|
52
|
+
if (existing.length >= SITE_TARGET)
|
|
53
|
+
return;
|
|
54
|
+
await gatherSiteReferences({
|
|
55
|
+
brief: workspace.brief.concept,
|
|
56
|
+
existing,
|
|
57
|
+
env,
|
|
58
|
+
progress: (line) => { process.stderr.write(`${line}\n`); },
|
|
59
|
+
push: async (site) => { await addLocalSite(root, site); },
|
|
60
|
+
});
|
|
61
|
+
})().catch((error) => { process.stderr.write(`12ui references: stopped: ${error instanceof Error ? error.message : String(error)}\n`); });
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=slate-site-references-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-site-references-local.js","sourceRoot":"","sources":["../src/slate-site-references-local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The suggest step of the References tab: the person's own agent CLI, with live web search, names real websites that
|
|
3
|
+
* are relevant to the design request. Several run at once, each from its own angle, so the tab mixes direct
|
|
4
|
+
* competitors, the best of the category and design-forward neighbours. It costs the person their own agent's usage and
|
|
5
|
+
* nothing on 12ui.
|
|
6
|
+
*
|
|
7
|
+
* Codex runs `codex exec` without the person's config (their instructions and MCP servers are not this task's), in a
|
|
8
|
+
* read-only sandbox, ephemeral, with web search live and a JSON schema for the answer. Claude runs `claude -p` with
|
|
9
|
+
* only its web tools.
|
|
10
|
+
*/
|
|
11
|
+
export type SiteSuggestion = {
|
|
12
|
+
url: string;
|
|
13
|
+
name: string;
|
|
14
|
+
why: string;
|
|
15
|
+
angle: SuggestAngle;
|
|
16
|
+
};
|
|
17
|
+
export type SuggestAngle = 'competitors' | 'best' | 'adjacent';
|
|
18
|
+
export type SuggestEngine = {
|
|
19
|
+
kind: 'codex' | 'claude';
|
|
20
|
+
binary: string;
|
|
21
|
+
};
|
|
22
|
+
export declare const SUGGEST_ANGLES: readonly SuggestAngle[];
|
|
23
|
+
export declare const SITES_PER_ANGLE = 6;
|
|
24
|
+
export declare const suggestPrompt: (brief: string, angle: SuggestAngle) => string;
|
|
25
|
+
/** Claude when this runs under Claude Code, else Codex; whichever exists when the preferred one does not. */
|
|
26
|
+
export declare const chooseSuggestEngine: (env: NodeJS.ProcessEnv) => SuggestEngine | null;
|
|
27
|
+
/** The first JSON object in a text that has a `sites` list. */
|
|
28
|
+
export declare const parseSites: (text: string, angle: SuggestAngle) => SiteSuggestion[];
|
|
29
|
+
/** One angle's suggestions; an agent that fails or answers nothing gives none. */
|
|
30
|
+
export declare const suggestSites: (args: {
|
|
31
|
+
engine: SuggestEngine;
|
|
32
|
+
brief: string;
|
|
33
|
+
angle: SuggestAngle;
|
|
34
|
+
env: NodeJS.ProcessEnv;
|
|
35
|
+
}) => Promise<SiteSuggestion[]>;
|
|
36
|
+
//# sourceMappingURL=slate-site-references-suggest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slate-site-references-suggest.d.ts","sourceRoot":"","sources":["../src/slate-site-references-suggest.ts"],"names":[],"mappings":"AAQA;;;;;;;;;GASG;AAEH,MAAM,MAAM,cAAc,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAC7F,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,MAAM,GAAG,UAAU,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAwC,CAAC;AAC3F,eAAO,MAAM,eAAe,IAAI,CAAC;AASjC,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,OAAO,YAAY,KAAG,MAOvD,CAAC;AAiCb,6GAA6G;AAC7G,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,CAAC,UAAU,KAAG,aAAa,GAAG,IAO5E,CAAC;AAcF,+DAA+D;AAC/D,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,OAAO,YAAY,KAAG,cAAc,EAwB5E,CAAC;AAgCF,kFAAkF;AAClF,eAAO,MAAM,YAAY,GAAU,MAAM;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,KAAG,OAAO,CAAC,cAAc,EAAE,CAKxJ,CAAC"}
|