@12ui/design 0.2.48 → 0.2.50
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/SKILL.md +1 -1
- package/dist/cli-draft-command.d.ts +11 -5
- package/dist/cli-draft-command.d.ts.map +1 -1
- package/dist/cli-draft-command.js +37 -35
- package/dist/cli-draft-command.js.map +1 -1
- package/dist/cli-help/design.d.ts +10 -0
- package/dist/cli-help/design.d.ts.map +1 -1
- package/dist/cli-help/design.js +29 -0
- package/dist/cli-help/design.js.map +1 -1
- package/dist/cli-help/index.d.ts +11 -0
- package/dist/cli-help/index.d.ts.map +1 -1
- package/dist/cli-help/index.js +18 -2
- package/dist/cli-help/index.js.map +1 -1
- package/dist/cli-next-command.d.ts.map +1 -1
- package/dist/cli-next-command.js +26 -14
- package/dist/cli-next-command.js.map +1 -1
- package/dist/cli-progress.d.ts +2 -0
- package/dist/cli-progress.d.ts.map +1 -1
- package/dist/cli-progress.js +2 -0
- package/dist/cli-progress.js.map +1 -1
- package/dist/cli-redesign-command.d.ts +42 -0
- package/dist/cli-redesign-command.d.ts.map +1 -0
- package/dist/cli-redesign-command.js +469 -0
- package/dist/cli-redesign-command.js.map +1 -0
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +8 -0
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +8 -1
- package/dist/cli-usage.js.map +1 -1
- package/dist/draft-dispatch-attempt.d.ts +0 -7
- package/dist/draft-dispatch-attempt.d.ts.map +1 -1
- package/dist/draft-dispatch-attempt.js +1 -25
- package/dist/draft-dispatch-attempt.js.map +1 -1
- package/dist/draft-identity.d.ts +2 -0
- package/dist/draft-identity.d.ts.map +1 -1
- package/dist/draft-identity.js +1 -0
- package/dist/draft-identity.js.map +1 -1
- package/dist/draft-run.d.ts +2 -0
- package/dist/draft-run.d.ts.map +1 -1
- package/dist/draft-run.js +4 -3
- package/dist/draft-run.js.map +1 -1
- package/dist/redesign-capture.d.ts +49 -0
- package/dist/redesign-capture.d.ts.map +1 -0
- package/dist/redesign-capture.js +135 -0
- package/dist/redesign-capture.js.map +1 -0
- package/dist/redesign-plan-client.d.ts +32 -0
- package/dist/redesign-plan-client.d.ts.map +1 -0
- package/dist/redesign-plan-client.js +80 -0
- package/dist/redesign-plan-client.js.map +1 -0
- package/dist/redesign-plan-identity.d.ts +8 -0
- package/dist/redesign-plan-identity.d.ts.map +1 -0
- package/dist/redesign-plan-identity.js +15 -0
- package/dist/redesign-plan-identity.js.map +1 -0
- package/dist/redesign-plan.d.ts +30 -0
- package/dist/redesign-plan.d.ts.map +1 -0
- package/dist/redesign-plan.js +99 -0
- package/dist/redesign-plan.js.map +1 -0
- package/dist/redesign-workspace.d.ts +116 -0
- package/dist/redesign-workspace.d.ts.map +1 -0
- package/dist/redesign-workspace.js +157 -0
- package/dist/redesign-workspace.js.map +1 -0
- package/dist/run-journal-commands.d.ts.map +1 -1
- package/dist/run-journal-commands.js +10 -0
- package/dist/run-journal-commands.js.map +1 -1
- package/open-design.json +2 -2
- package/package.json +2 -2
- package/prototype-kit/build.mjs +9 -3
- package/prototype-kit/lib/action-target.mjs +26 -0
- package/prototype-kit/lib/local-document.mjs +16 -0
- package/prototype-kit/lib/runtime-check.mjs +83 -19
- package/prototype-kit/lib/shell-runtime-equivalence.mjs +41 -0
- package/prototype-kit/polish/harm.mjs +27 -5
- package/prototype-kit/polish/measure.mjs +101 -5
- package/prototype-kit/polish/overrides.mjs +32 -3
- package/prototype-kit/polish/polish.mjs +23 -11
- package/prototype-kit/polish/rules/align.mjs +73 -3
- package/prototype-kit/polish/rules/left-rail.mjs +2 -3
- package/prototype-kit/polish/rules/section-breathing.mjs +0 -1
- package/prototype-kit/polish/tests/fixtures/align/expect.json +1 -1
- package/prototype-kit/polish/tests/fixtures/align/fire.html +4 -1
- package/prototype-kit/polish/tests/fixtures/align/silent.html +8 -0
- package/prototype-kit/polish/tests/fixtures/align/zoom-constrained.html +17 -0
- package/prototype-kit/polish/tests/fixtures/harm/left-rail-contained.html +16 -0
- package/prototype-kit/polish/tests/fixtures/harm/left-rail-overflow.html +16 -0
- package/prototype-kit/polish/tests/fixtures/harm/nested-actions.html +6 -0
- package/prototype-kit/polish/tests/fixtures/harm/unidentified-parent.html +3 -0
- package/prototype-kit/polish/tests/fixtures/shell-seam/fire.html +1 -1
- package/prototype-kit/polish/tests/harm-check.mjs +131 -2
- package/prototype-kit/polish/tests/rules-check.mjs +7 -2
- package/prototype-kit/runtime/proto.js +4 -1
- package/prototype-kit/tests/adversarial-runtime.mjs +3 -0
- package/prototype-kit/tests/align-rule-check.mjs +105 -0
- package/prototype-kit/tests/fixtures/interaction-runtime/review-bottom-action.html +8 -0
- package/prototype-kit/tests/offline-check.mjs +17 -1
- package/prototype-kit/tests/rules-check.mjs +67 -1
- package/prototype-kit/tests/shell-stitching-runtime.mjs +15 -8
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { BRANCH_PAGE_CONCURRENCY_DEFAULT, OPERATION_DURATION_HINTS, branchRunEstimateSeconds, } from './cli-progress.js';
|
|
2
|
+
/**
|
|
3
|
+
* What `--dry-run` reports for every stage: nothing here reaches the network.
|
|
4
|
+
* `pageCount` is the caller's `--pages` request (or the default), never a
|
|
5
|
+
* discovered count — discovery itself is a network call, and a plan must
|
|
6
|
+
* price a run before it makes one. Numeric ceilings intentionally use the
|
|
7
|
+
* same admission/catalog boundaries as the hosted services: corpus and
|
|
8
|
+
* planning reservations, a conservative hosted-image bound, the published
|
|
9
|
+
* Standard conversion price, and the prototype-label reservation. Actual
|
|
10
|
+
* provider spend is read separately from `12ui spend`; this is the
|
|
11
|
+
* pre-dispatch cap guard.
|
|
12
|
+
*/
|
|
13
|
+
const CORPUS_SEARCH_CEILING_USD = 0.0055;
|
|
14
|
+
/** One metered hosted direction-planning call before corpus retrieval. */
|
|
15
|
+
const REDESIGN_DIRECTION_PLAN_CEILING_USD = 0.02;
|
|
16
|
+
/** The hosted create claim still derives one visible direction per candidate. */
|
|
17
|
+
const DRAFT_DIRECTIONS_CEILING_USD = 0.02;
|
|
18
|
+
const DRAFT_CANDIDATE_PRICE_USD = 0.06;
|
|
19
|
+
/** Three-reference gpt-image-2 medium admission bound, rounded upward. */
|
|
20
|
+
const BRANCH_IMAGE_CEILING_USD = 0.3;
|
|
21
|
+
const BRANCH_PLAN_CEILING_USD = 0.06;
|
|
22
|
+
const CONVERSION_PRICE_USD = {
|
|
23
|
+
fast: 0.05,
|
|
24
|
+
standard: 0.45,
|
|
25
|
+
pro: 0.9,
|
|
26
|
+
};
|
|
27
|
+
const PROTOTYPE_LABEL_CEILING_USD = 0.02;
|
|
28
|
+
const usd = (value) => Number(value.toFixed(6));
|
|
29
|
+
export const buildRedesignPlan = (args) => {
|
|
30
|
+
const branchEstimate = branchRunEstimateSeconds({
|
|
31
|
+
pages: 1,
|
|
32
|
+
concurrency: BRANCH_PAGE_CONCURRENCY_DEFAULT,
|
|
33
|
+
convert: true,
|
|
34
|
+
});
|
|
35
|
+
const stages = [
|
|
36
|
+
{
|
|
37
|
+
stage: 'capture',
|
|
38
|
+
paid: false,
|
|
39
|
+
wouldBuy: `nothing — up to ${args.pageCount} full-height screenshot(s) from a local browser`,
|
|
40
|
+
typicalSeconds: args.pageCount * 8,
|
|
41
|
+
plannedCostUsd: 0,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
stage: 'plan',
|
|
45
|
+
paid: true,
|
|
46
|
+
wouldBuy: '1 hosted direction plan, including explicit retention and a corpus query',
|
|
47
|
+
typicalSeconds: OPERATION_DURATION_HINTS.redesignDirectionPlan,
|
|
48
|
+
plannedCostUsd: REDESIGN_DIRECTION_PLAN_CEILING_USD,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
stage: 'draft',
|
|
52
|
+
paid: true,
|
|
53
|
+
wouldBuy: `${args.candidateCount} hosted draft candidate(s), generated from 1 captured reference image`,
|
|
54
|
+
typicalSeconds: OPERATION_DURATION_HINTS.hostedDraftCandidate,
|
|
55
|
+
plannedCostUsd: usd(CORPUS_SEARCH_CEILING_USD
|
|
56
|
+
+ DRAFT_DIRECTIONS_CEILING_USD
|
|
57
|
+
+ args.candidateCount * DRAFT_CANDIDATE_PRICE_USD),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
stage: 'pick',
|
|
61
|
+
paid: false,
|
|
62
|
+
wouldBuy: 'nothing — selects one already-generated candidate by --slot',
|
|
63
|
+
typicalSeconds: 1,
|
|
64
|
+
plannedCostUsd: 0,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
stage: 'branch',
|
|
68
|
+
paid: true,
|
|
69
|
+
wouldBuy: `${args.pageCount} branch execute run(s) (scope page, --convert html --prototype),`
|
|
70
|
+
+ ` capped at ${args.maxScreens} generated continuation screen(s) per captured page`,
|
|
71
|
+
typicalSeconds: branchEstimate.ceiling * args.pageCount,
|
|
72
|
+
plannedCostUsd: usd(args.pageCount * (BRANCH_PLAN_CEILING_USD
|
|
73
|
+
+ args.maxScreens * BRANCH_IMAGE_CEILING_USD
|
|
74
|
+
+ (args.maxScreens + 1) * CONVERSION_PRICE_USD[args.conversionModel]
|
|
75
|
+
+ (args.maxScreens + 1) * PROTOTYPE_LABEL_CEILING_USD)),
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
stage: 'polish',
|
|
79
|
+
paid: false,
|
|
80
|
+
wouldBuy: `nothing — applies the retained deterministic polish rules to ${args.pageCount}`
|
|
81
|
+
+ ' already-built prototype(s)',
|
|
82
|
+
typicalSeconds: args.pageCount * 10,
|
|
83
|
+
plannedCostUsd: 0,
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
return {
|
|
87
|
+
url: args.url,
|
|
88
|
+
direction: args.direction,
|
|
89
|
+
pageCount: args.pageCount,
|
|
90
|
+
candidateCount: args.candidateCount,
|
|
91
|
+
maxScreens: args.maxScreens,
|
|
92
|
+
conversionModel: args.conversionModel,
|
|
93
|
+
stages,
|
|
94
|
+
typicalSecondsTotal: stages.reduce((total, stage) => total + stage.typicalSeconds, 0),
|
|
95
|
+
plannedCostUsdTotal: usd(stages.reduce((total, stage) => total + stage.plannedCostUsd, 0)),
|
|
96
|
+
pricingBasis: 'Pre-dispatch ceilings; live actuals come from 12ui spend.',
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=redesign-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redesign-plan.js","sourceRoot":"","sources":["../src/redesign-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAI3B;;;;;;;;;;GAUG;AAEH,MAAM,yBAAyB,GAAG,MAAM,CAAC;AACzC,0EAA0E;AAC1E,MAAM,mCAAmC,GAAG,IAAI,CAAC;AACjD,iFAAiF;AACjF,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAC1C,MAAM,yBAAyB,GAAG,IAAI,CAAC;AACvC,0EAA0E;AAC1E,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,oBAAoB,GAAoC;IAC5D,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,GAAG;CACT,CAAC;AACF,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEzC,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAuBhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAOjC,EAAgB,EAAE;IACjB,MAAM,cAAc,GAAG,wBAAwB,CAAC;QAC9C,KAAK,EAAE,CAAC;QACR,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,MAAM,MAAM,GAAwB;QAClC;YACE,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,mBAAmB,IAAI,CAAC,SAAS,iDAAiD;YAC5F,cAAc,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC;YAClC,cAAc,EAAE,CAAC;SAClB;QACD;YACE,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,0EAA0E;YACpF,cAAc,EAAE,wBAAwB,CAAC,qBAAqB;YAC9D,cAAc,EAAE,mCAAmC;SACpD;QACD;YACE,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,GAAG,IAAI,CAAC,cAAc,uEAAuE;YACvG,cAAc,EAAE,wBAAwB,CAAC,oBAAoB;YAC7D,cAAc,EAAE,GAAG,CACjB,yBAAyB;kBACvB,4BAA4B;kBAC5B,IAAI,CAAC,cAAc,GAAG,yBAAyB,CAClD;SACF;QACD;YACE,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,6DAA6D;YACvE,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;SAClB;QACD;YACE,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,kEAAkE;kBACzF,cAAc,IAAI,CAAC,UAAU,qDAAqD;YACtF,cAAc,EAAE,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS;YACvD,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CACnC,uBAAuB;kBACrB,IAAI,CAAC,UAAU,GAAG,wBAAwB;kBAC1C,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC;kBAClE,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,2BAA2B,CACtD,CAAC;SACH;QACD;YACE,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,gEAAgE,IAAI,CAAC,SAAS,EAAE;kBACtF,6BAA6B;YACjC,cAAc,EAAE,IAAI,CAAC,SAAS,GAAG,EAAE;YACnC,cAAc,EAAE,CAAC;SAClB;KACF,CAAC;IACF,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,MAAM;QACN,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QACrF,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAC1F,YAAY,EAAE,2DAA2D;KAC1E,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { CreateRetainPolicy } from './branch-client.js';
|
|
2
|
+
import type { ConversionModel } from './conversion-models.js';
|
|
3
|
+
/**
|
|
4
|
+
* The run directory `12ui redesign` creates and every stage reads and writes.
|
|
5
|
+
*
|
|
6
|
+
* Mirrors `draft-workspace.ts`: minted under the system temp root by
|
|
7
|
+
* `mkdtemp`, printed as the command's first line, never nested inside the
|
|
8
|
+
* caller's working directory. `redesign.json` is the one record every stage
|
|
9
|
+
* reads before it decides whether it has work left to do, so `--from` can
|
|
10
|
+
* resume without re-deriving what an earlier stage already settled.
|
|
11
|
+
*/
|
|
12
|
+
export declare const REDESIGN_RECORD_FILENAME = "redesign.json";
|
|
13
|
+
export declare const REDESIGN_CAPTURE_DIRECTORY = "capture";
|
|
14
|
+
export declare const REDESIGN_DRAFT_DIRECTORY = "draft";
|
|
15
|
+
export declare const REDESIGN_BRANCH_DIRECTORY = "branch";
|
|
16
|
+
export declare const REDESIGN_STAGES: readonly ["capture", "plan", "draft", "pick", "branch", "polish"];
|
|
17
|
+
export type RedesignStage = typeof REDESIGN_STAGES[number];
|
|
18
|
+
export declare const isRedesignStage: (value: string) => value is RedesignStage;
|
|
19
|
+
/** `https://example.com/pricing` -> `example-com`. */
|
|
20
|
+
export declare const redesignSlug: (url: string) => string;
|
|
21
|
+
export type RedesignPaths = {
|
|
22
|
+
runDir: string;
|
|
23
|
+
captureDir: string;
|
|
24
|
+
draftDir: string;
|
|
25
|
+
branchDir: string;
|
|
26
|
+
record: string;
|
|
27
|
+
};
|
|
28
|
+
export declare const redesignPaths: (runDir: string) => RedesignPaths;
|
|
29
|
+
export declare const createRedesignWorkspace: (args: {
|
|
30
|
+
url: string;
|
|
31
|
+
/** Overridden only by tests; production always uses the system temp root. */
|
|
32
|
+
root?: string;
|
|
33
|
+
}) => Promise<RedesignPaths>;
|
|
34
|
+
export type RedesignCapturedPageRecord = {
|
|
35
|
+
id: string;
|
|
36
|
+
url: string;
|
|
37
|
+
path: string;
|
|
38
|
+
sha256: string;
|
|
39
|
+
bytes: number;
|
|
40
|
+
width: number;
|
|
41
|
+
height: number;
|
|
42
|
+
};
|
|
43
|
+
export type RedesignPickRecord = {
|
|
44
|
+
slot: string;
|
|
45
|
+
imagePath: string;
|
|
46
|
+
sha256: string;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* A metered hosted direction plan. This is intentionally distinct from the
|
|
50
|
+
* local `RedesignPlan` dry-run cost estimate in `redesign-plan.ts`.
|
|
51
|
+
*/
|
|
52
|
+
export type RedesignDirectionPlanRecord = {
|
|
53
|
+
concept: string;
|
|
54
|
+
retain: CreateRetainPolicy;
|
|
55
|
+
corpusQuery: string;
|
|
56
|
+
/** Provider-issued paid-effect identity; copied without reconstruction. */
|
|
57
|
+
effectIdentity: string;
|
|
58
|
+
replayed: boolean;
|
|
59
|
+
degradation?: {
|
|
60
|
+
reasons: string[];
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
export type RedesignBranchPageRecord = {
|
|
64
|
+
pageId: string;
|
|
65
|
+
branchDir: string;
|
|
66
|
+
status: string;
|
|
67
|
+
completionPath: string;
|
|
68
|
+
};
|
|
69
|
+
export type RedesignPolishPageRecord = {
|
|
70
|
+
pageId: string;
|
|
71
|
+
branchDir: string;
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* What each stage settled, so `--from` reloads prior work instead of
|
|
76
|
+
* re-deriving or re-buying it. Every field is optional because the record
|
|
77
|
+
* grows one stage at a time; a stage that has not run yet is simply absent.
|
|
78
|
+
*/
|
|
79
|
+
export type RedesignRecord = {
|
|
80
|
+
version: 1;
|
|
81
|
+
createdAt: string;
|
|
82
|
+
runDir: string;
|
|
83
|
+
url: string;
|
|
84
|
+
direction: string;
|
|
85
|
+
requestedPages: number;
|
|
86
|
+
/** Maximum generated continuation screens for each captured page. */
|
|
87
|
+
requestedMaxScreens?: number;
|
|
88
|
+
requestedConversionModel?: ConversionModel;
|
|
89
|
+
capture?: {
|
|
90
|
+
pages: RedesignCapturedPageRecord[];
|
|
91
|
+
};
|
|
92
|
+
plan?: RedesignDirectionPlanRecord;
|
|
93
|
+
draft?: {
|
|
94
|
+
runDir: string;
|
|
95
|
+
runId: string;
|
|
96
|
+
};
|
|
97
|
+
pick?: RedesignPickRecord;
|
|
98
|
+
branch?: {
|
|
99
|
+
pages: RedesignBranchPageRecord[];
|
|
100
|
+
};
|
|
101
|
+
polish?: {
|
|
102
|
+
pages: RedesignPolishPageRecord[];
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
export declare const readRedesignRecord: (file: string) => Promise<RedesignRecord | undefined>;
|
|
106
|
+
export declare const writeRedesignRecord: (file: string, record: RedesignRecord) => Promise<void>;
|
|
107
|
+
/** Read the record, or start a fresh one when this is the first stage to run. */
|
|
108
|
+
export declare const loadOrStartRedesignRecord: (args: {
|
|
109
|
+
paths: RedesignPaths;
|
|
110
|
+
url: string;
|
|
111
|
+
direction: string;
|
|
112
|
+
requestedPages: number;
|
|
113
|
+
requestedMaxScreens?: number;
|
|
114
|
+
requestedConversionModel?: ConversionModel;
|
|
115
|
+
}) => Promise<RedesignRecord>;
|
|
116
|
+
//# sourceMappingURL=redesign-workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redesign-workspace.d.ts","sourceRoot":"","sources":["../src/redesign-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { mkdtemp, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
/**
|
|
5
|
+
* The run directory `12ui redesign` creates and every stage reads and writes.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors `draft-workspace.ts`: minted under the system temp root by
|
|
8
|
+
* `mkdtemp`, printed as the command's first line, never nested inside the
|
|
9
|
+
* caller's working directory. `redesign.json` is the one record every stage
|
|
10
|
+
* reads before it decides whether it has work left to do, so `--from` can
|
|
11
|
+
* resume without re-deriving what an earlier stage already settled.
|
|
12
|
+
*/
|
|
13
|
+
export const REDESIGN_RECORD_FILENAME = 'redesign.json';
|
|
14
|
+
export const REDESIGN_CAPTURE_DIRECTORY = 'capture';
|
|
15
|
+
export const REDESIGN_DRAFT_DIRECTORY = 'draft';
|
|
16
|
+
export const REDESIGN_BRANCH_DIRECTORY = 'branch';
|
|
17
|
+
export const REDESIGN_STAGES = ['capture', 'plan', 'draft', 'pick', 'branch', 'polish'];
|
|
18
|
+
export const isRedesignStage = (value) => (REDESIGN_STAGES.includes(value));
|
|
19
|
+
/** `https://example.com/pricing` -> `example-com`. */
|
|
20
|
+
export const redesignSlug = (url) => {
|
|
21
|
+
const host = (() => {
|
|
22
|
+
try {
|
|
23
|
+
return new URL(url).hostname;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return url;
|
|
27
|
+
}
|
|
28
|
+
})();
|
|
29
|
+
const slug = host
|
|
30
|
+
.toLowerCase()
|
|
31
|
+
.replace(/[^a-z0-9]+/gu, '-')
|
|
32
|
+
.replace(/^-+|-+$/gu, '')
|
|
33
|
+
.slice(0, 32);
|
|
34
|
+
return slug || 'redesign';
|
|
35
|
+
};
|
|
36
|
+
export const redesignPaths = (runDir) => {
|
|
37
|
+
const resolved = path.resolve(runDir);
|
|
38
|
+
return {
|
|
39
|
+
runDir: resolved,
|
|
40
|
+
captureDir: path.join(resolved, REDESIGN_CAPTURE_DIRECTORY),
|
|
41
|
+
draftDir: path.join(resolved, REDESIGN_DRAFT_DIRECTORY),
|
|
42
|
+
branchDir: path.join(resolved, REDESIGN_BRANCH_DIRECTORY),
|
|
43
|
+
record: path.join(resolved, REDESIGN_RECORD_FILENAME),
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export const createRedesignWorkspace = async (args) => {
|
|
47
|
+
const root = args.root ?? os.tmpdir();
|
|
48
|
+
const runDir = await mkdtemp(path.join(root, `12ui-redesign-${redesignSlug(args.url)}-`));
|
|
49
|
+
return redesignPaths(runDir);
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Persisted redesign records are resumable inputs, so project them onto the
|
|
53
|
+
* current schema instead of carrying unknown fields from an older CLI into
|
|
54
|
+
* every subsequent write.
|
|
55
|
+
*/
|
|
56
|
+
const currentRedesignRecord = (record) => ({
|
|
57
|
+
version: record.version,
|
|
58
|
+
createdAt: record.createdAt,
|
|
59
|
+
runDir: record.runDir,
|
|
60
|
+
url: record.url,
|
|
61
|
+
direction: record.direction,
|
|
62
|
+
requestedPages: record.requestedPages,
|
|
63
|
+
...(record.requestedMaxScreens === undefined
|
|
64
|
+
? {}
|
|
65
|
+
: { requestedMaxScreens: record.requestedMaxScreens }),
|
|
66
|
+
...(record.requestedConversionModel === undefined
|
|
67
|
+
? {}
|
|
68
|
+
: { requestedConversionModel: record.requestedConversionModel }),
|
|
69
|
+
...(record.capture ? {
|
|
70
|
+
capture: {
|
|
71
|
+
pages: record.capture.pages.map((page) => ({
|
|
72
|
+
id: page.id,
|
|
73
|
+
url: page.url,
|
|
74
|
+
path: page.path,
|
|
75
|
+
sha256: page.sha256,
|
|
76
|
+
bytes: page.bytes,
|
|
77
|
+
width: page.width,
|
|
78
|
+
height: page.height,
|
|
79
|
+
})),
|
|
80
|
+
},
|
|
81
|
+
} : {}),
|
|
82
|
+
...(record.plan ? {
|
|
83
|
+
plan: {
|
|
84
|
+
concept: record.plan.concept,
|
|
85
|
+
retain: {
|
|
86
|
+
include: record.plan.retain.include,
|
|
87
|
+
exclude: record.plan.retain.exclude,
|
|
88
|
+
...(record.plan.retain.notes === undefined ? {} : { notes: record.plan.retain.notes }),
|
|
89
|
+
},
|
|
90
|
+
corpusQuery: record.plan.corpusQuery,
|
|
91
|
+
effectIdentity: record.plan.effectIdentity,
|
|
92
|
+
replayed: record.plan.replayed,
|
|
93
|
+
...(record.plan.degradation === undefined ? {} : {
|
|
94
|
+
degradation: { reasons: record.plan.degradation.reasons },
|
|
95
|
+
}),
|
|
96
|
+
},
|
|
97
|
+
} : {}),
|
|
98
|
+
...(record.draft ? { draft: { runDir: record.draft.runDir, runId: record.draft.runId } } : {}),
|
|
99
|
+
...(record.pick ? {
|
|
100
|
+
pick: {
|
|
101
|
+
slot: record.pick.slot,
|
|
102
|
+
imagePath: record.pick.imagePath,
|
|
103
|
+
sha256: record.pick.sha256,
|
|
104
|
+
},
|
|
105
|
+
} : {}),
|
|
106
|
+
...(record.branch ? {
|
|
107
|
+
branch: {
|
|
108
|
+
pages: record.branch.pages.map((page) => ({
|
|
109
|
+
pageId: page.pageId,
|
|
110
|
+
branchDir: page.branchDir,
|
|
111
|
+
status: page.status,
|
|
112
|
+
completionPath: page.completionPath,
|
|
113
|
+
})),
|
|
114
|
+
},
|
|
115
|
+
} : {}),
|
|
116
|
+
...(record.polish ? {
|
|
117
|
+
polish: {
|
|
118
|
+
pages: record.polish.pages.map((page) => ({
|
|
119
|
+
pageId: page.pageId,
|
|
120
|
+
branchDir: page.branchDir,
|
|
121
|
+
enabled: page.enabled,
|
|
122
|
+
})),
|
|
123
|
+
},
|
|
124
|
+
} : {}),
|
|
125
|
+
});
|
|
126
|
+
export const readRedesignRecord = async (file) => {
|
|
127
|
+
try {
|
|
128
|
+
return currentRedesignRecord(JSON.parse(await readFile(file, 'utf8')));
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
export const writeRedesignRecord = async (file, record) => {
|
|
135
|
+
await writeFile(file, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
136
|
+
};
|
|
137
|
+
/** Read the record, or start a fresh one when this is the first stage to run. */
|
|
138
|
+
export const loadOrStartRedesignRecord = async (args) => {
|
|
139
|
+
const existing = await readRedesignRecord(args.paths.record);
|
|
140
|
+
if (existing)
|
|
141
|
+
return existing;
|
|
142
|
+
return {
|
|
143
|
+
version: 1,
|
|
144
|
+
createdAt: new Date().toISOString(),
|
|
145
|
+
runDir: args.paths.runDir,
|
|
146
|
+
url: args.url,
|
|
147
|
+
direction: args.direction,
|
|
148
|
+
requestedPages: args.requestedPages,
|
|
149
|
+
...(args.requestedMaxScreens === undefined
|
|
150
|
+
? {}
|
|
151
|
+
: { requestedMaxScreens: args.requestedMaxScreens }),
|
|
152
|
+
...(args.requestedConversionModel === undefined
|
|
153
|
+
? {}
|
|
154
|
+
: { requestedConversionModel: args.requestedConversionModel }),
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=redesign-workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redesign-workspace.js","sourceRoot":"","sources":["../src/redesign-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-journal-commands.d.ts","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AAEH,KAAK,iBAAiB,GAAG,CACvB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,QAAQ,KACZ,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEtD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;CACnE,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AA0D7F;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,
|
|
1
|
+
{"version":3,"file":"run-journal-commands.d.ts","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AAEH,KAAK,iBAAiB,GAAG,CACvB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,QAAQ,KACZ,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEtD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;CACnE,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AA0D7F;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAuK5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,SAAS,MAAM,EAAE,EAC1B,OAAO,QAAQ,KACd,iBAAiB,GAAG,SAEtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,MAAM;IACzC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,KAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAkBhC,CAAC"}
|
|
@@ -167,6 +167,16 @@ export const RUN_JOURNAL_COMMANDS = [
|
|
|
167
167
|
skip: 'Reads the account ledger over the network and writes nothing locally. There is no run'
|
|
168
168
|
+ ' and no workspace to record.',
|
|
169
169
|
},
|
|
170
|
+
{
|
|
171
|
+
cmd: 'redesign',
|
|
172
|
+
matches: is('redesign'),
|
|
173
|
+
paid: true,
|
|
174
|
+
terminalOnSuccess: true,
|
|
175
|
+
workspace: outDir,
|
|
176
|
+
// Mints its own run directory when --out-dir is omitted, exactly like
|
|
177
|
+
// `draft`; the start line is held until the command binds it.
|
|
178
|
+
lateWorkspace: true,
|
|
179
|
+
},
|
|
170
180
|
{
|
|
171
181
|
cmd: 'capabilities',
|
|
172
182
|
matches: is('capabilities'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-journal-commands.js","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-journal-commands.js","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"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"}
|
package/open-design.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"specVersion": "1.0.0",
|
|
4
4
|
"name": "12ui-design",
|
|
5
5
|
"title": "12UI Design",
|
|
6
|
-
"version": "0.2.
|
|
6
|
+
"version": "0.2.50",
|
|
7
7
|
"description": "Explore corpus-grounded interface directions, choose one, and convert it into production-ready responsive or native artifacts with 12UI.",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Just Every",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"command": "npx",
|
|
50
50
|
"args": [
|
|
51
51
|
"-y",
|
|
52
|
-
"@12ui/design@0.2.
|
|
52
|
+
"@12ui/design@0.2.50",
|
|
53
53
|
"mcp"
|
|
54
54
|
]
|
|
55
55
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@12ui/design",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "The canonical 12ui CLI, SDK, MCP server, and visual interface design skills",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"start": "node dist/cli.js",
|
|
24
24
|
"test": "vitest",
|
|
25
25
|
"test:run": "vitest run",
|
|
26
|
-
"test:prototype": "node prototype-kit/polish/tests/rules-check.mjs && node prototype-kit/polish/tests/harm-check.mjs && node prototype-kit/polish/tests/breathing-check.mjs && node prototype-kit/polish/tests/report-check.mjs && node prototype-kit/tests/rules-check.mjs && node prototype-kit/tests/offline-check.mjs && node prototype-kit/tests/shell-stitching-runtime.mjs && node prototype-kit/tests/adversarial-runtime.mjs --assert",
|
|
26
|
+
"test:prototype": "node prototype-kit/polish/tests/rules-check.mjs && node prototype-kit/polish/tests/harm-check.mjs && node prototype-kit/polish/tests/breathing-check.mjs && node prototype-kit/polish/tests/report-check.mjs && node prototype-kit/tests/rules-check.mjs && node prototype-kit/tests/offline-check.mjs && node prototype-kit/tests/shell-stitching-runtime.mjs && node prototype-kit/tests/shell-stitching-runtime.mjs --reintroduce-defect && node prototype-kit/tests/adversarial-runtime.mjs --assert",
|
|
27
27
|
"typecheck": "tsc --noEmit && tsc -p tsconfig.type-tests.json",
|
|
28
28
|
"prepublishOnly": "npm run build"
|
|
29
29
|
},
|
package/prototype-kit/build.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import fs from 'node:fs';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { parseHTML } from 'linkedom';
|
|
6
6
|
import { resolveDropdownAction } from './lib/actions.mjs';
|
|
7
|
-
import { restoreActionPointerReachability } from './lib/action-target.mjs';
|
|
7
|
+
import { restoreActionPointerReachability, selectUniqueActionOwners } from './lib/action-target.mjs';
|
|
8
8
|
import {
|
|
9
9
|
HOLDING_SHELL_ATTRIBUTE,
|
|
10
10
|
holdingBlockGeometry,
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
shellPlacementCss,
|
|
14
14
|
} from './lib/holding-composition.mjs';
|
|
15
15
|
import { injectReviewFraming } from './lib/review-framing.mjs';
|
|
16
|
+
import { removeRemoteHeadLinks } from './lib/local-document.mjs';
|
|
16
17
|
import {
|
|
17
18
|
isolateTransplantedShell,
|
|
18
19
|
rulesFor,
|
|
@@ -156,6 +157,7 @@ const report = {
|
|
|
156
157
|
unbound: [],
|
|
157
158
|
invalidDropdowns: [],
|
|
158
159
|
actionDemotions: [],
|
|
160
|
+
duplicateActionOwners: [],
|
|
159
161
|
shellSizeDelta: [],
|
|
160
162
|
shellAmbiguities: model.shellAmbiguities || [],
|
|
161
163
|
suppressedShellOverlaps: [],
|
|
@@ -234,7 +236,9 @@ function actionsFor(s) {
|
|
|
234
236
|
if (a) acts.set(c.id, a);
|
|
235
237
|
else report.counts.none++;
|
|
236
238
|
}
|
|
237
|
-
|
|
239
|
+
const normalized = selectUniqueActionOwners(loadDoc(s.file).document, acts);
|
|
240
|
+
report.duplicateActionOwners.push(...normalized.removed.map((removal) => ({ state: s.stateId, ...removal })));
|
|
241
|
+
return normalized.actions;
|
|
238
242
|
}
|
|
239
243
|
|
|
240
244
|
function bindAction(el, action) {
|
|
@@ -410,6 +414,7 @@ for (const u of units) {
|
|
|
410
414
|
const cfg = { unit: u.id, states: u.states.map((s) => s.stateId), tokens: model.tokens, contentFile: `${u.id}.json`, activeNav: activeNav?.text || null };
|
|
411
415
|
document.body.insertAdjacentHTML('beforeend', `<script id="proto-state" type="application/json">${JSON.stringify(cfg).replace(/</g, '\\u003c')}</script><script src="proto.js"></script>`);
|
|
412
416
|
if (review) injectReviewFraming(document, review);
|
|
417
|
+
removeRemoteHeadLinks(document);
|
|
413
418
|
fs.writeFileSync(path.join(outDir, outputFileOfUnit(u)), '<!doctype html>\n' + document.documentElement.outerHTML);
|
|
414
419
|
fs.writeFileSync(path.join(outDir, 'content', u.id + '.json'), JSON.stringify(content, null, 1));
|
|
415
420
|
report.units.push({
|
|
@@ -612,6 +617,7 @@ for (const u of units) {
|
|
|
612
617
|
const cfg = { unit: hslug, holding: true, holdingBands: bandDeclarations, tokens: model.tokens, contentFile: null, activeNav: navMatch?.text || null };
|
|
613
618
|
document.body.insertAdjacentHTML('beforeend', `<script id="proto-state" type="application/json">${JSON.stringify(cfg)}</script><script src="proto.js"></script>`);
|
|
614
619
|
if (review) injectReviewFraming(document, review);
|
|
620
|
+
removeRemoteHeadLinks(document);
|
|
615
621
|
fs.writeFileSync(path.join(outDir, outputFile), '<!doctype html>\n' + document.documentElement.outerHTML);
|
|
616
622
|
}
|
|
617
623
|
console.error(`holding pages: ${usedHoldings.size}`);
|
|
@@ -623,5 +629,5 @@ fs.writeFileSync(path.join(outDir, 'index.html'), `<!doctype html><meta http-equ
|
|
|
623
629
|
const manifestHoldings = review
|
|
624
630
|
? [...usedHoldings.entries()].map(([holding, title]) => [holding.replace(/\.html$/, ''), title])
|
|
625
631
|
: [...usedHoldings.entries()];
|
|
626
|
-
fs.writeFileSync(path.join(outDir, 'proto-manifest.json'), JSON.stringify({ units: report.units, nav: navRows.map((n) => ({ text: n.text, target: n.target, holding: n.holding, rowId: n.rowId })), holdings: manifestHoldings, counts: report.counts, unbound: report.unbound, invalidDropdowns: report.invalidDropdowns, ...(report.actionDemotions.length > 0 ? { actionDemotions: report.actionDemotions } : {}), shellSizeDelta: report.shellSizeDelta, shellAmbiguities: report.shellAmbiguities, suppressedShellOverlaps: report.suppressedShellOverlaps, skippedShellTransplants: report.skippedShellTransplants, replacedShellActions: report.replacedShellActions, shellActionRemaps: report.shellActionRemaps, scriptDirections: states.map(({ stateId, scriptDirection, writingMode }) => ({ stateId, scriptDirection, writingMode })), canonicalShell: model.canonicalShell, canonicalShellPage: report.canonicalShellPage, shellConsistency: report.shellConsistency, ...(review ? { review } : {}) }, null, 1));
|
|
632
|
+
fs.writeFileSync(path.join(outDir, 'proto-manifest.json'), JSON.stringify({ units: report.units, nav: navRows.map((n) => ({ text: n.text, target: n.target, holding: n.holding, rowId: n.rowId })), holdings: manifestHoldings, counts: report.counts, unbound: report.unbound, invalidDropdowns: report.invalidDropdowns, ...(report.actionDemotions.length > 0 ? { actionDemotions: report.actionDemotions } : {}), ...(report.duplicateActionOwners.length > 0 ? { duplicateActionOwners: report.duplicateActionOwners } : {}), shellSizeDelta: report.shellSizeDelta, shellAmbiguities: report.shellAmbiguities, suppressedShellOverlaps: report.suppressedShellOverlaps, skippedShellTransplants: report.skippedShellTransplants, replacedShellActions: report.replacedShellActions, shellActionRemaps: report.shellActionRemaps, scriptDirections: states.map(({ stateId, scriptDirection, writingMode }) => ({ stateId, scriptDirection, writingMode })), canonicalShell: model.canonicalShell, canonicalShellPage: report.canonicalShellPage, shellConsistency: report.shellConsistency, ...(review ? { review } : {}) }, null, 1));
|
|
627
633
|
console.error('counts', JSON.stringify(report.counts), 'unbound', report.unbound.length);
|
|
@@ -8,3 +8,29 @@ export function restoreActionPointerReachability(element) {
|
|
|
8
8
|
element.setAttribute('data-proto-pointer-restored', 'true');
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Give one semantic action to one rendered owner. A label response can name
|
|
14
|
+
* both a layout wrapper and one or more controls inside it. When descendants
|
|
15
|
+
* carry the same action kind, only the terminal-most elements are real action
|
|
16
|
+
* targets; retaining the wrapper adds a duplicate listener and an impossible
|
|
17
|
+
* hit-test identity. Different nested action kinds remain independent.
|
|
18
|
+
*/
|
|
19
|
+
export function selectUniqueActionOwners(document, actions) {
|
|
20
|
+
const selected = new Map(actions);
|
|
21
|
+
const removed = [];
|
|
22
|
+
for (const [wrapperId, wrapperAction] of actions) {
|
|
23
|
+
const wrapper = document.getElementById(wrapperId);
|
|
24
|
+
if (!wrapper) continue;
|
|
25
|
+
const descendants = [...wrapper.querySelectorAll('[id]')].filter((candidate) => (
|
|
26
|
+
actions.get(candidate.id)?.action === wrapperAction.action
|
|
27
|
+
));
|
|
28
|
+
if (descendants.length === 0) continue;
|
|
29
|
+
const ownerIds = descendants.filter((candidate) => ![...candidate.querySelectorAll('[id]')].some((nested) => (
|
|
30
|
+
actions.get(nested.id)?.action === wrapperAction.action
|
|
31
|
+
))).map((candidate) => candidate.id);
|
|
32
|
+
selected.delete(wrapperId);
|
|
33
|
+
removed.push({ wrapperId, ownerIds, action: wrapperAction.action });
|
|
34
|
+
}
|
|
35
|
+
return { actions: selected, removed };
|
|
36
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const REMOTE_HREF = /^(?:https?:)?\/\//iu;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Prototype files are owner-review artifacts that must open directly from
|
|
5
|
+
* disk. Remote head links turn an otherwise self-contained page into a noisy
|
|
6
|
+
* runtime failure when the review browser correctly blocks the network.
|
|
7
|
+
*/
|
|
8
|
+
export function removeRemoteHeadLinks(document) {
|
|
9
|
+
let removed = 0;
|
|
10
|
+
for (const link of document.querySelectorAll('head link[href]')) {
|
|
11
|
+
if (!REMOTE_HREF.test(link.getAttribute('href')?.trim() ?? '')) continue;
|
|
12
|
+
link.remove();
|
|
13
|
+
removed += 1;
|
|
14
|
+
}
|
|
15
|
+
return removed;
|
|
16
|
+
}
|