@12ui/design 0.2.81 → 0.2.82
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 +7 -6
- package/SKILL.md +1 -1
- package/dist/cli-capabilities.d.ts +2 -2
- package/dist/cli-capabilities.js +2 -2
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-help/index.d.ts +2 -2
- package/dist/cli-help/workflow.d.ts +2 -2
- package/dist/cli-help/workflow.js +4 -4
- package/dist/cli-help/workflow.js.map +1 -1
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +5 -4
- package/dist/cli-usage.js.map +1 -1
- package/dist/mcp-workflow-tools.js +2 -2
- package/dist/mcp-workflow-tools.js.map +1 -1
- package/dist/review-files-server.d.ts +8 -0
- package/dist/review-files-server.d.ts.map +1 -0
- package/dist/review-files-server.js +133 -0
- package/dist/review-files-server.js.map +1 -0
- package/dist/review-page-assets.d.ts +1 -1
- package/dist/review-page-assets.d.ts.map +1 -1
- package/dist/review-page-assets.js +3 -1
- package/dist/review-page-assets.js.map +1 -1
- package/dist/review-page.d.ts +8 -1
- package/dist/review-page.d.ts.map +1 -1
- package/dist/review-page.js +32 -21
- package/dist/review-page.js.map +1 -1
- package/dist/review-server-guard.d.ts +33 -0
- package/dist/review-server-guard.d.ts.map +1 -0
- package/dist/review-server-guard.js +65 -0
- package/dist/review-server-guard.js.map +1 -0
- package/dist/review-server.d.ts +2 -0
- package/dist/review-server.d.ts.map +1 -1
- package/dist/review-server.js +45 -74
- package/dist/review-server.js.map +1 -1
- package/dist/workflow/adapter-12ui.js +1 -1
- package/dist/workflow/adapter-12ui.js.map +1 -1
- package/dist/workflow/adapters.d.ts.map +1 -1
- package/dist/workflow/adapters.js +3 -3
- package/dist/workflow/adapters.js.map +1 -1
- package/dist/workflow/providers.js +2 -2
- package/dist/workflow/providers.js.map +1 -1
- package/dist/workflow/routing.d.ts +8 -1
- package/dist/workflow/routing.d.ts.map +1 -1
- package/dist/workflow/routing.js +9 -2
- package/dist/workflow/routing.js.map +1 -1
- package/dist/workflow/types.d.ts +5 -2
- package/dist/workflow/types.d.ts.map +1 -1
- package/dist/workflow/types.js.map +1 -1
- package/dist/workflow-transport.d.ts.map +1 -1
- package/dist/workflow-transport.js +4 -2
- package/dist/workflow-transport.js.map +1 -1
- package/open-design.json +2 -2
- package/package.json +1 -1
package/dist/review-page.js
CHANGED
|
@@ -25,8 +25,13 @@ const mediaAt = (file) => {
|
|
|
25
25
|
return 'image';
|
|
26
26
|
return 'layerdoc';
|
|
27
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* A run's own files are served from the review's second origin (`review-files-server.ts`), which holds no session
|
|
30
|
+
* token and takes no POST, so a run's HTML runs normally there (module scripts, its own fetches and fonts, storage)
|
|
31
|
+
* and still cannot read this page or act as it. `files` is that origin, e.g. `http://127.0.0.1:52011`.
|
|
32
|
+
*/
|
|
28
33
|
const mediaFrame = (args) => {
|
|
29
|
-
const url = reviewFileUrl(args.run, args.media.path)
|
|
34
|
+
const url = `${args.files}${reviewFileUrl(args.run, args.media.path)}`;
|
|
30
35
|
if (args.media.kind === 'image') {
|
|
31
36
|
return `<a class="preview preview--image" href="${url}" target="_blank" rel="noreferrer">
|
|
32
37
|
<img src="${url}" alt="${escapeHtml(args.label)}">
|
|
@@ -34,7 +39,7 @@ const mediaFrame = (args) => {
|
|
|
34
39
|
}
|
|
35
40
|
if (args.media.kind === 'html') {
|
|
36
41
|
return `<div class="preview preview--html">
|
|
37
|
-
<iframe src="${url}" title="${escapeHtml(args.label)}" loading="lazy" sandbox="allow-scripts"></iframe>
|
|
42
|
+
<iframe src="${url}" title="${escapeHtml(args.label)}" loading="lazy" sandbox="allow-scripts allow-same-origin"></iframe>
|
|
38
43
|
<a class="open" href="${url}" target="_blank" rel="noreferrer">Open</a>
|
|
39
44
|
</div>`;
|
|
40
45
|
}
|
|
@@ -60,7 +65,7 @@ const changedRegionStrip = (edit) => {
|
|
|
60
65
|
</div>`;
|
|
61
66
|
}).join('')}</div>`;
|
|
62
67
|
};
|
|
63
|
-
const comparison = (run, item) => {
|
|
68
|
+
const comparison = (files, run, item) => {
|
|
64
69
|
if (!item.latestEdit)
|
|
65
70
|
return '';
|
|
66
71
|
const originalPath = path.resolve(run.root, item.latestEdit.original);
|
|
@@ -71,6 +76,7 @@ const comparison = (run, item) => {
|
|
|
71
76
|
<section>
|
|
72
77
|
<p class="eyebrow">Original</p>
|
|
73
78
|
${mediaFrame({
|
|
79
|
+
files,
|
|
74
80
|
run,
|
|
75
81
|
media: { kind: mediaAt(originalPath), path: originalPath },
|
|
76
82
|
label: `${item.title}, original`,
|
|
@@ -79,6 +85,7 @@ const comparison = (run, item) => {
|
|
|
79
85
|
<section>
|
|
80
86
|
<p class="eyebrow">Edited</p>
|
|
81
87
|
${mediaFrame({
|
|
88
|
+
files,
|
|
82
89
|
run,
|
|
83
90
|
media: { kind: 'html', path: editedPath },
|
|
84
91
|
label: `${item.title}, edited`,
|
|
@@ -88,13 +95,13 @@ const comparison = (run, item) => {
|
|
|
88
95
|
${changedRegionStrip(item.latestEdit)}
|
|
89
96
|
<p class="edit-receipt">Applied “${escapeHtml(item.latestEdit.prompt)}” · ${escapeHtml(cost)} base · ${operations.length} ${operations.length === 1 ? 'edit' : 'edits'}${operations.length > 0 ? ` · ${escapeHtml(operations.join(', '))}` : ''}</p>`;
|
|
90
97
|
};
|
|
91
|
-
const branchSequence = (run, item) => {
|
|
98
|
+
const branchSequence = (files, run, item) => {
|
|
92
99
|
if (!item.branchPage || item.branchPage.screens.length === 0)
|
|
93
100
|
return '';
|
|
94
101
|
return `<section class="screen-sequence">
|
|
95
102
|
<p class="eyebrow">Plan sequence</p>
|
|
96
103
|
<div class="sequence-track">${item.branchPage.screens.map((screen) => `<figure class="screen">
|
|
97
|
-
${mediaFrame({ run, media: screen.media, label: `${item.title}, ${screen.label}` })}
|
|
104
|
+
${mediaFrame({ files, run, media: screen.media, label: `${item.title}, ${screen.label}` })}
|
|
98
105
|
<figcaption>
|
|
99
106
|
<p class="eyebrow">${screen.winner ? 'Winner' : escapeHtml(screen.label)}</p>
|
|
100
107
|
<h5>${escapeHtml(screen.direction)}</h5>
|
|
@@ -151,7 +158,7 @@ const editPanel = (model, run, item) => {
|
|
|
151
158
|
</div>
|
|
152
159
|
</form>`;
|
|
153
160
|
};
|
|
154
|
-
const historyPanel = (run, item) => {
|
|
161
|
+
const historyPanel = (files, run, item) => {
|
|
155
162
|
const history = item.editHistory ?? [];
|
|
156
163
|
if (history.length === 0)
|
|
157
164
|
return '';
|
|
@@ -159,11 +166,11 @@ const historyPanel = (run, item) => {
|
|
|
159
166
|
<ol>${history.map((edit) => {
|
|
160
167
|
const result = path.resolve(run.root, edit.resultPath ?? edit.html);
|
|
161
168
|
const cost = edit.cost ? usd(edit.cost.baseUsd) : 'price not recorded';
|
|
162
|
-
return `<li>“${escapeHtml(edit.prompt)}” · ${escapeHtml(cost)} · <a href="${reviewFileUrl(run, result)}" target="_blank" rel="noreferrer">Open result</a></li>`;
|
|
169
|
+
return `<li>“${escapeHtml(edit.prompt)}” · ${escapeHtml(cost)} · <a href="${files}${reviewFileUrl(run, result)}" target="_blank" rel="noreferrer">Open result</a></li>`;
|
|
163
170
|
}).join('')}</ol>
|
|
164
171
|
</details>`;
|
|
165
172
|
};
|
|
166
|
-
const itemCard = (model, run, item) => {
|
|
173
|
+
const itemCard = (files, model, run, item) => {
|
|
167
174
|
const branch = item.group === 'branch-pages';
|
|
168
175
|
const mode = item.editQuote?.mode === 'convert-then-edit' ? 'Converts first' : item.editSource ? 'Edits directly' : '';
|
|
169
176
|
return `<article class="item ${branch || item.group === 'pages' || item.group === 'conversions' ? 'item--wide' : ''}" id="${escapeHtml(item.id)}">
|
|
@@ -178,14 +185,14 @@ const itemCard = (model, run, item) => {
|
|
|
178
185
|
${item.feedback?.mark ? `<span class="mark-chip">${escapeHtml(item.feedback.mark)}</span>` : ''}
|
|
179
186
|
</div>
|
|
180
187
|
</header>
|
|
181
|
-
${branchSequence(run, item)}
|
|
188
|
+
${branchSequence(files, run, item)}
|
|
182
189
|
${branch
|
|
183
|
-
? `<section class="published-page"><p class="eyebrow">Exported page · drag the lower edge to resize</p>${mediaFrame({ run, media: item.media, label: item.title })}</section>${comparison(run, item)}`
|
|
184
|
-
: item.latestEdit ? comparison(run, item) : mediaFrame({ run, media: item.media, label: item.title })}
|
|
190
|
+
? `<section class="published-page"><p class="eyebrow">Exported page · drag the lower edge to resize</p>${mediaFrame({ files, run, media: item.media, label: item.title })}</section>${comparison(files, run, item)}`
|
|
191
|
+
: item.latestEdit ? comparison(files, run, item) : mediaFrame({ files, run, media: item.media, label: item.title })}
|
|
185
192
|
<div class="controls">
|
|
186
193
|
${feedbackPanel(run, item)}
|
|
187
194
|
${editPanel(model, run, item)}
|
|
188
|
-
${historyPanel(run, item)}
|
|
195
|
+
${historyPanel(files, run, item)}
|
|
189
196
|
</div>
|
|
190
197
|
</article>`;
|
|
191
198
|
};
|
|
@@ -206,7 +213,7 @@ const prototypeAction = (model, run, label) => {
|
|
|
206
213
|
<span class="status" role="status"></span>
|
|
207
214
|
</form>`;
|
|
208
215
|
};
|
|
209
|
-
const prototypePanel = (model, run) => {
|
|
216
|
+
const prototypePanel = (files, model, run) => {
|
|
210
217
|
if (!run.branch)
|
|
211
218
|
return '';
|
|
212
219
|
const prototype = run.branch.prototype;
|
|
@@ -220,7 +227,7 @@ const prototypePanel = (model, run) => {
|
|
|
220
227
|
<header><p class="eyebrow">Missing destinations</p><h3>${prototype.holdings.length} ${prototype.holdings.length === 1 ? 'gap' : 'gaps'} surfaced by navigation</h3><p>Each action is explicit. It claims one matching draft, converts it with Standard, adds the real page, then rebuilds the prototype.</p></header>
|
|
221
228
|
<div class="holding-grid">${prototype.holdings.map((holding) => `<article class="holding-card">
|
|
222
229
|
<div class="item-head"><div><p class="eyebrow">Holding page</p><h4>${escapeHtml(holding.title)}</h4></div></div>
|
|
223
|
-
${mediaFrame({ run, media: { kind: 'html', path: holding.path }, label: `${holding.title} holding page` })}
|
|
230
|
+
${mediaFrame({ files, run, media: { kind: 'html', path: holding.path }, label: `${holding.title} holding page` })}
|
|
224
231
|
${model.prototypeAvailable ? `<form class="edit" data-fill-gap data-run="${escapeHtml(run.id)}" data-holding="${escapeHtml(holding.slug)}">
|
|
225
232
|
<p class="edit-note">Generates this destination from the approved winner, converts it, and rebuilds the prototype. Nothing runs until you press the button.</p>
|
|
226
233
|
<div class="save-row"><button type="submit" class="apply">Fill this gap · ${escapeHtml(usd(REVIEW_PROTOTYPE_GAP_BASE_USD))}+</button><span class="status" role="status"></span></div>
|
|
@@ -229,11 +236,11 @@ const prototypePanel = (model, run) => {
|
|
|
229
236
|
</section>`;
|
|
230
237
|
return `<section class="prototype-panel">
|
|
231
238
|
<div class="prototype-copy"><p class="eyebrow">Interactive branch</p><h3>Prototype</h3><p>Open it, resize it, and follow the real navigation. The manifest records deterministic precedence, model labels, gates, and warnings.</p>${prototypeAction(model, run, 'Rebuild prototype')}</div>
|
|
232
|
-
${mediaFrame({ run, media: prototype.index, label: `${run.label} prototype` })}
|
|
239
|
+
${mediaFrame({ files, run, media: prototype.index, label: `${run.label} prototype` })}
|
|
233
240
|
${holdings}
|
|
234
241
|
</section>`;
|
|
235
242
|
};
|
|
236
|
-
const runSection = (model, run) => {
|
|
243
|
+
const runSection = (files, model, run) => {
|
|
237
244
|
const groups = [...new Set(run.items.map((item) => item.group))];
|
|
238
245
|
return `<section class="run" id="${escapeHtml(run.id)}">
|
|
239
246
|
<header class="run-head">
|
|
@@ -247,22 +254,26 @@ const runSection = (model, run) => {
|
|
|
247
254
|
</div>
|
|
248
255
|
<span class="count">${run.items.length} ${run.items.length === 1 ? 'item' : 'items'}</span>
|
|
249
256
|
</header>
|
|
250
|
-
${prototypePanel(model, run)}
|
|
257
|
+
${prototypePanel(files, model, run)}
|
|
251
258
|
${groups.map((group) => `<section class="group group--${group}">
|
|
252
259
|
<h3>${groupLabels[group]}</h3>
|
|
253
|
-
<div class="items">${run.items.filter((item) => item.group === group).map((item) => itemCard(model, run, item)).join('')}</div>
|
|
260
|
+
<div class="items">${run.items.filter((item) => item.group === group).map((item) => itemCard(files, model, run, item)).join('')}</div>
|
|
254
261
|
</section>`).join('')}
|
|
255
262
|
</section>`;
|
|
256
263
|
};
|
|
257
|
-
|
|
264
|
+
/**
|
|
265
|
+
* `token` is the serving session's secret (`review-server-guard.ts`): the page's actions send it with every POST.
|
|
266
|
+
* `files` is the origin the run files are served from (`review-files-server.ts`), never this page's own.
|
|
267
|
+
*/
|
|
268
|
+
export const renderReviewPage = (model, session) => {
|
|
258
269
|
const itemCount = model.runs.reduce((total, run) => total + run.items.length, 0);
|
|
259
270
|
const marked = model.runs.reduce((total, run) => (total + run.items.filter((item) => item.feedback?.mark).length), 0);
|
|
260
271
|
const body = model.runs.length > 0
|
|
261
|
-
? model.runs.map((run) => runSection(model, run)).join('')
|
|
272
|
+
? model.runs.map((run) => runSection(session.files, model, run)).join('')
|
|
262
273
|
: '<section class="empty"><h2>No stored runs found</h2><p>Pass a run directory, or use <code>12ui review --all</code> from the project that owns its <code>.12ui</code> runs.</p></section>';
|
|
263
274
|
return `<!doctype html>
|
|
264
275
|
<html lang="en">
|
|
265
|
-
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>12ui review</title><style>${REVIEW_PAGE_STYLES}</style></head>
|
|
276
|
+
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="12ui-review-token" content="${escapeHtml(session.token)}"><title>12ui review</title><style>${REVIEW_PAGE_STYLES}</style></head>
|
|
266
277
|
<body>
|
|
267
278
|
<header class="mast">
|
|
268
279
|
<div class="brand"><span class="brand-mark">12</span><div><h1>12ui review</h1><p>Review the design, edit what is structured, and leave exact feedback.</p></div></div>
|
package/dist/review-page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-page.js","sourceRoot":"","sources":["../src/review-page.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-page.js","sourceRoot":"","sources":["../src/review-page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { IncomingMessage } from 'node:http';
|
|
2
|
+
/**
|
|
3
|
+
* WHO MAY CALL THE REVIEW SERVER. `12ui review` listens on loopback, and its POST routes write feedback and spend
|
|
4
|
+
* 12ui credits (edits, prototype labels, gap fills), so any web page the user visits could otherwise POST to it, and a
|
|
5
|
+
* DNS-rebound page could read its own copy of the review page (gate 0.2.80). Every request must name this server's
|
|
6
|
+
* own host, a request that carries an Origin must come from that host, and every POST must carry this session's
|
|
7
|
+
* token and be JSON (which a cross-origin page cannot send without a preflight this server never answers). The token
|
|
8
|
+
* is generated when the server starts and reaches only the page this server serves. The workspace server
|
|
9
|
+
* (`slate-browser-server.ts`) holds the same line.
|
|
10
|
+
*/
|
|
11
|
+
export declare const REVIEW_TOKEN_HEADER = "x-12ui-token";
|
|
12
|
+
/** One session's secret: 24 random bytes, base64url, safe to place in an HTML attribute. */
|
|
13
|
+
export declare const newReviewToken: () => string;
|
|
14
|
+
export declare class ReviewAccessError extends Error {
|
|
15
|
+
readonly status: number;
|
|
16
|
+
readonly code: string;
|
|
17
|
+
constructor(status: number, code: string, message: string);
|
|
18
|
+
}
|
|
19
|
+
/** Refuses a request that is not this server's own page talking to it; returns nothing when it is. */
|
|
20
|
+
export declare const assertReviewAccess: (request: IncomingMessage, args: {
|
|
21
|
+
port: number;
|
|
22
|
+
token: string;
|
|
23
|
+
}) => void;
|
|
24
|
+
/**
|
|
25
|
+
* WHO MAY READ A RUN'S FILES. They are served from a second loopback origin (`review-files-server.ts`) that holds no
|
|
26
|
+
* token and changes nothing, so a run's own HTML runs there as a normal page and still cannot read the review page or
|
|
27
|
+
* act as it. Every request must name that origin's own host (a DNS-rebound name cannot read the user's files), and
|
|
28
|
+
* only reads are taken.
|
|
29
|
+
*/
|
|
30
|
+
export declare const assertReviewFileAccess: (request: IncomingMessage, args: {
|
|
31
|
+
port: number;
|
|
32
|
+
}) => void;
|
|
33
|
+
//# sourceMappingURL=review-server-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-server-guard.d.ts","sourceRoot":"","sources":["../src/review-server-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD;;;;;;;;GAQG;AAEH,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,4FAA4F;AAC5F,eAAO,MAAM,cAAc,QAAO,MAA+C,CAAC;AAElF,qBAAa,iBAAkB,SAAQ,KAAK;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAArC,MAAM,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAG5E;AASD,sGAAsG;AACtG,eAAO,MAAM,kBAAkB,GAAI,SAAS,eAAe,EAAE,MAAM;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,KAAG,IAiBpG,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,eAAe,EAAE,MAAM;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,IAQzF,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { randomBytes, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* WHO MAY CALL THE REVIEW SERVER. `12ui review` listens on loopback, and its POST routes write feedback and spend
|
|
4
|
+
* 12ui credits (edits, prototype labels, gap fills), so any web page the user visits could otherwise POST to it, and a
|
|
5
|
+
* DNS-rebound page could read its own copy of the review page (gate 0.2.80). Every request must name this server's
|
|
6
|
+
* own host, a request that carries an Origin must come from that host, and every POST must carry this session's
|
|
7
|
+
* token and be JSON (which a cross-origin page cannot send without a preflight this server never answers). The token
|
|
8
|
+
* is generated when the server starts and reaches only the page this server serves. The workspace server
|
|
9
|
+
* (`slate-browser-server.ts`) holds the same line.
|
|
10
|
+
*/
|
|
11
|
+
export const REVIEW_TOKEN_HEADER = 'x-12ui-token';
|
|
12
|
+
/** One session's secret: 24 random bytes, base64url, safe to place in an HTML attribute. */
|
|
13
|
+
export const newReviewToken = () => randomBytes(24).toString('base64url');
|
|
14
|
+
export class ReviewAccessError extends Error {
|
|
15
|
+
status;
|
|
16
|
+
code;
|
|
17
|
+
constructor(status, code, message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.status = status;
|
|
20
|
+
this.code = code;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const sameToken = (given, token) => {
|
|
24
|
+
if (given === undefined)
|
|
25
|
+
return false;
|
|
26
|
+
const a = Buffer.from(given);
|
|
27
|
+
const b = Buffer.from(token);
|
|
28
|
+
return a.length === b.length && timingSafeEqual(a, b);
|
|
29
|
+
};
|
|
30
|
+
/** Refuses a request that is not this server's own page talking to it; returns nothing when it is. */
|
|
31
|
+
export const assertReviewAccess = (request, args) => {
|
|
32
|
+
const host = request.headers.host;
|
|
33
|
+
if (host !== `127.0.0.1:${args.port}` && host !== `localhost:${args.port}`) {
|
|
34
|
+
throw new ReviewAccessError(403, 'host_refused', 'This review is only served to the address 12ui review printed.');
|
|
35
|
+
}
|
|
36
|
+
const origin = request.headers.origin;
|
|
37
|
+
if (origin !== undefined && origin !== `http://${host}`) {
|
|
38
|
+
throw new ReviewAccessError(403, 'origin_refused', 'Cross-origin requests are refused.');
|
|
39
|
+
}
|
|
40
|
+
if (request.method !== 'POST')
|
|
41
|
+
return;
|
|
42
|
+
const given = request.headers[REVIEW_TOKEN_HEADER];
|
|
43
|
+
if (!sameToken(typeof given === 'string' ? given : undefined, args.token)) {
|
|
44
|
+
throw new ReviewAccessError(401, 'token_required', 'Reload the review page that 12ui review opened: its actions carry this session\'s token.');
|
|
45
|
+
}
|
|
46
|
+
if (!/^application\/json(\s*;.*)?$/iu.test(request.headers['content-type'] ?? '')) {
|
|
47
|
+
throw new ReviewAccessError(415, 'json_required', 'The request must be JSON.');
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* WHO MAY READ A RUN'S FILES. They are served from a second loopback origin (`review-files-server.ts`) that holds no
|
|
52
|
+
* token and changes nothing, so a run's own HTML runs there as a normal page and still cannot read the review page or
|
|
53
|
+
* act as it. Every request must name that origin's own host (a DNS-rebound name cannot read the user's files), and
|
|
54
|
+
* only reads are taken.
|
|
55
|
+
*/
|
|
56
|
+
export const assertReviewFileAccess = (request, args) => {
|
|
57
|
+
const host = request.headers.host;
|
|
58
|
+
if (host !== `127.0.0.1:${args.port}` && host !== `localhost:${args.port}`) {
|
|
59
|
+
throw new ReviewAccessError(403, 'host_refused', 'These run files are only served to the address the review page links.');
|
|
60
|
+
}
|
|
61
|
+
if (request.method !== 'GET' && request.method !== 'HEAD') {
|
|
62
|
+
throw new ReviewAccessError(405, 'read_only', 'Run files are read-only.');
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=review-server-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-server-guard.js","sourceRoot":"","sources":["../src/review-server-guard.ts"],"names":[],"mappings":"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"}
|
package/dist/review-server.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export type ReviewPrototypeRunner = (args: {
|
|
|
7
7
|
export type ReviewServer = {
|
|
8
8
|
url: string;
|
|
9
9
|
port: number;
|
|
10
|
+
/** The run files' own origin (`review-files-server.ts`), e.g. `http://127.0.0.1:52011`; it holds no token. */
|
|
11
|
+
filesUrl: string;
|
|
10
12
|
/** Set when the first discovery trimmed ("showing N of M ...") or skipped unreadable runs. */
|
|
11
13
|
notice?: string;
|
|
12
14
|
close: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-server.d.ts","sourceRoot":"","sources":["../src/review-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"review-server.d.ts","sourceRoot":"","sources":["../src/review-server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AA8D1E,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvB,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,8GAA8G;IAC9G,QAAQ,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAU,SAAS;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;CAC/C,KAAG,OAAO,CAAC,YAAY,CA8KvB,CAAC"}
|
package/dist/review-server.js
CHANGED
|
@@ -1,27 +1,11 @@
|
|
|
1
|
-
import { createReadStream } from 'node:fs';
|
|
2
|
-
import { realpath, stat } from 'node:fs/promises';
|
|
3
1
|
import http from 'node:http';
|
|
4
2
|
import path from 'node:path';
|
|
5
3
|
import { discoverReviewModel } from './review-discovery.js';
|
|
4
|
+
import { startReviewFilesServer } from './review-files-server.js';
|
|
6
5
|
import { discoveryNotice } from './review-run-roots.js';
|
|
7
6
|
import { renderReviewPage } from './review-page.js';
|
|
7
|
+
import { assertReviewAccess, newReviewToken } from './review-server-guard.js';
|
|
8
8
|
import { saveReviewFeedback } from './review-store.js';
|
|
9
|
-
const CONTENT_TYPES = {
|
|
10
|
-
'.avif': 'image/avif',
|
|
11
|
-
'.css': 'text/css; charset=utf-8',
|
|
12
|
-
'.gif': 'image/gif',
|
|
13
|
-
'.html': 'text/html; charset=utf-8',
|
|
14
|
-
'.jpeg': 'image/jpeg',
|
|
15
|
-
'.jpg': 'image/jpeg',
|
|
16
|
-
'.js': 'text/javascript; charset=utf-8',
|
|
17
|
-
'.json': 'application/json; charset=utf-8',
|
|
18
|
-
'.png': 'image/png',
|
|
19
|
-
'.svg': 'image/svg+xml',
|
|
20
|
-
'.ttf': 'font/ttf',
|
|
21
|
-
'.webp': 'image/webp',
|
|
22
|
-
'.woff': 'font/woff',
|
|
23
|
-
'.woff2': 'font/woff2',
|
|
24
|
-
};
|
|
25
9
|
const sendJson = (response, status, value) => {
|
|
26
10
|
response.writeHead(status, {
|
|
27
11
|
'content-type': 'application/json; charset=utf-8',
|
|
@@ -29,13 +13,14 @@ const sendJson = (response, status, value) => {
|
|
|
29
13
|
});
|
|
30
14
|
response.end(`${JSON.stringify(value)}\n`);
|
|
31
15
|
};
|
|
32
|
-
|
|
16
|
+
/** The page loads run files only from their own origin (`review-files-server.ts`), and talks only to this one. */
|
|
17
|
+
const sendPage = (response, page, files, head = false) => {
|
|
33
18
|
const bytes = Buffer.from(page, 'utf8');
|
|
34
19
|
response.writeHead(200, {
|
|
35
20
|
'content-type': 'text/html; charset=utf-8',
|
|
36
21
|
'content-length': bytes.byteLength,
|
|
37
22
|
'cache-control': 'no-store',
|
|
38
|
-
'content-security-policy':
|
|
23
|
+
'content-security-policy': `default-src 'self'; img-src 'self' ${files} data: https:; frame-src ${files}; style-src 'unsafe-inline'; script-src 'unsafe-inline'; connect-src 'self'`,
|
|
39
24
|
});
|
|
40
25
|
response.end(head ? undefined : bytes);
|
|
41
26
|
};
|
|
@@ -73,45 +58,6 @@ const requestedRun = (model, runId) => {
|
|
|
73
58
|
throw new Error('This review run no longer exists');
|
|
74
59
|
return run;
|
|
75
60
|
};
|
|
76
|
-
const serveRunFile = async (args) => {
|
|
77
|
-
const segments = args.pathname.split('/').slice(2).map((segment) => decodeURIComponent(segment));
|
|
78
|
-
const runId = segments.shift();
|
|
79
|
-
const run = args.model.runs.find((candidate) => candidate.id === runId);
|
|
80
|
-
if (!run || segments.length === 0 || segments.some((segment) => (!segment
|
|
81
|
-
|| segment === '.'
|
|
82
|
-
|| segment === '..'
|
|
83
|
-
|| segment.startsWith('.')
|
|
84
|
-
|| segment.includes('/')
|
|
85
|
-
|| segment.includes('\\')))) {
|
|
86
|
-
args.response.writeHead(404).end('not found');
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
const root = await realpath(run.root).catch(() => null);
|
|
90
|
-
const candidate = path.resolve(run.root, ...segments);
|
|
91
|
-
const file = await realpath(candidate).catch(() => null);
|
|
92
|
-
if (!root || !file || (file !== root && !file.startsWith(`${root}${path.sep}`))) {
|
|
93
|
-
args.response.writeHead(403).end('forbidden');
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (path.relative(root, file).split(path.sep).some((segment) => segment.startsWith('.'))) {
|
|
97
|
-
args.response.writeHead(404).end('not found');
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
const details = await stat(file).catch(() => null);
|
|
101
|
-
if (!details?.isFile()) {
|
|
102
|
-
args.response.writeHead(404).end('not found');
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
args.response.writeHead(200, {
|
|
106
|
-
'content-type': CONTENT_TYPES[path.extname(file).toLowerCase()] ?? 'application/octet-stream',
|
|
107
|
-
'content-length': details.size,
|
|
108
|
-
'cache-control': 'no-store',
|
|
109
|
-
});
|
|
110
|
-
if (args.method === 'HEAD')
|
|
111
|
-
args.response.end();
|
|
112
|
-
else
|
|
113
|
-
createReadStream(file).pipe(args.response);
|
|
114
|
-
};
|
|
115
61
|
export const startReviewServer = async (options) => {
|
|
116
62
|
const discovery = {
|
|
117
63
|
...(options.target ? { target: options.target } : {}),
|
|
@@ -123,10 +69,16 @@ export const startReviewServer = async (options) => {
|
|
|
123
69
|
};
|
|
124
70
|
let model = await discoverReviewModel(discovery);
|
|
125
71
|
const activePrototypeRuns = new Set();
|
|
72
|
+
// This session's secret, embedded only in the page this server serves (`review-server-guard.ts`).
|
|
73
|
+
const token = newReviewToken();
|
|
74
|
+
let port = 0;
|
|
126
75
|
const refresh = async () => {
|
|
127
76
|
model = await discoverReviewModel(discovery);
|
|
128
77
|
return model;
|
|
129
78
|
};
|
|
79
|
+
const files = await startReviewFilesServer(() => model);
|
|
80
|
+
/** The files origin under the loopback name the page was asked for, so the page and its files stay one site. */
|
|
81
|
+
const filesOrigin = (request) => (`http://${request.headers.host?.startsWith('localhost:') ? 'localhost' : '127.0.0.1'}:${files.port}`);
|
|
130
82
|
const server = http.createServer(async (request, response) => {
|
|
131
83
|
const method = request.method ?? 'GET';
|
|
132
84
|
let pathname;
|
|
@@ -137,13 +89,18 @@ export const startReviewServer = async (options) => {
|
|
|
137
89
|
response.writeHead(400).end('bad request');
|
|
138
90
|
return;
|
|
139
91
|
}
|
|
92
|
+
try {
|
|
93
|
+
assertReviewAccess(request, { port, token });
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
const refused = error;
|
|
97
|
+
sendJson(response, refused.status, { ok: false, code: refused.code, error: refused.message });
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
140
100
|
try {
|
|
141
101
|
if ((method === 'GET' || method === 'HEAD') && (pathname === '/' || pathname === '/index.html')) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
if ((method === 'GET' || method === 'HEAD') && pathname.startsWith('/files/')) {
|
|
146
|
-
await serveRunFile({ model, pathname, method, response });
|
|
102
|
+
const origin = filesOrigin(request);
|
|
103
|
+
sendPage(response, renderReviewPage(await refresh(), { token, files: origin }), origin, method === 'HEAD');
|
|
147
104
|
return;
|
|
148
105
|
}
|
|
149
106
|
if (method === 'POST' && pathname === '/api/feedback') {
|
|
@@ -255,25 +212,39 @@ export const startReviewServer = async (options) => {
|
|
|
255
212
|
});
|
|
256
213
|
}
|
|
257
214
|
});
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
215
|
+
try {
|
|
216
|
+
await new Promise((resolve, reject) => {
|
|
217
|
+
server.once('error', reject);
|
|
218
|
+
server.listen(options.port ?? 0, '127.0.0.1', () => resolve());
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
await files.close();
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
262
225
|
const address = server.address();
|
|
263
226
|
if (!address || typeof address === 'string') {
|
|
264
227
|
await new Promise((resolve) => server.close(() => resolve()));
|
|
228
|
+
await files.close();
|
|
265
229
|
throw new Error('Review server did not bind a local TCP port');
|
|
266
230
|
}
|
|
231
|
+
port = address.port;
|
|
267
232
|
return {
|
|
268
233
|
url: `http://127.0.0.1:${address.port}`,
|
|
269
234
|
port: address.port,
|
|
235
|
+
filesUrl: `http://127.0.0.1:${files.port}`,
|
|
270
236
|
...(discoveryNotice(model) ? { notice: discoveryNotice(model) } : {}),
|
|
271
|
-
close:
|
|
272
|
-
|
|
273
|
-
reject
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
237
|
+
close: async () => {
|
|
238
|
+
await Promise.all([
|
|
239
|
+
new Promise((resolve, reject) => {
|
|
240
|
+
server.close((error) => { if (error)
|
|
241
|
+
reject(error);
|
|
242
|
+
else
|
|
243
|
+
resolve(); });
|
|
244
|
+
}),
|
|
245
|
+
files.close(),
|
|
246
|
+
]);
|
|
247
|
+
},
|
|
277
248
|
};
|
|
278
249
|
};
|
|
279
250
|
//# sourceMappingURL=review-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-server.js","sourceRoot":"","sources":["../src/review-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-server.js","sourceRoot":"","sources":["../src/review-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ export async function executeTwelveUi(request, context) {
|
|
|
30
30
|
const env = context.env ?? process.env;
|
|
31
31
|
const apiKey = env.TWELVE_UI_API_KEY?.trim();
|
|
32
32
|
if (!apiKey)
|
|
33
|
-
throw new WorkflowError('credential-required', 'TWELVE_UI_API_KEY is required for
|
|
33
|
+
throw new WorkflowError('credential-required', 'TWELVE_UI_API_KEY is required for the 12ui API.');
|
|
34
34
|
if (!context.idempotencyKey?.trim())
|
|
35
35
|
throw new WorkflowError('idempotency-required', 'A durable operation idempotency key is required for 12ui.');
|
|
36
36
|
let origin;
|