@12ui/design 0.2.26 → 0.2.28
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 +72 -87
- package/SKILL.md +5 -5
- package/dist/branch-client.d.ts +7 -0
- package/dist/branch-client.d.ts.map +1 -1
- package/dist/branch-client.js +1 -0
- package/dist/branch-client.js.map +1 -1
- package/dist/branch-completion.d.ts +8 -0
- package/dist/branch-completion.d.ts.map +1 -1
- package/dist/branch-completion.js +84 -16
- package/dist/branch-completion.js.map +1 -1
- package/dist/branch-execution.d.ts +8 -0
- package/dist/branch-execution.d.ts.map +1 -1
- package/dist/branch-execution.js +62 -11
- package/dist/branch-execution.js.map +1 -1
- package/dist/branch-identity.d.ts +10 -4
- package/dist/branch-identity.d.ts.map +1 -1
- package/dist/branch-identity.js +9 -6
- package/dist/branch-identity.js.map +1 -1
- package/dist/branch-page-conversion.d.ts +14 -8
- package/dist/branch-page-conversion.d.ts.map +1 -1
- package/dist/branch-page-conversion.js +32 -15
- package/dist/branch-page-conversion.js.map +1 -1
- package/dist/branch-page-packaging.d.ts +31 -0
- package/dist/branch-page-packaging.d.ts.map +1 -0
- package/dist/branch-page-packaging.js +86 -0
- package/dist/branch-page-packaging.js.map +1 -0
- package/dist/branch-plan.d.ts +44 -0
- package/dist/branch-plan.d.ts.map +1 -1
- package/dist/branch-plan.js +89 -18
- package/dist/branch-plan.js.map +1 -1
- package/dist/branch-progress.d.ts +22 -0
- package/dist/branch-progress.d.ts.map +1 -1
- package/dist/branch-progress.js +46 -8
- package/dist/branch-progress.js.map +1 -1
- package/dist/branch-run-record.d.ts +36 -1
- package/dist/branch-run-record.d.ts.map +1 -1
- package/dist/branch-run-record.js.map +1 -1
- package/dist/branch-status.d.ts +2 -0
- package/dist/branch-status.d.ts.map +1 -1
- package/dist/branch-status.js +60 -15
- package/dist/branch-status.js.map +1 -1
- package/dist/branch-winner.d.ts +13 -15
- package/dist/branch-winner.d.ts.map +1 -1
- package/dist/branch-winner.js +25 -77
- package/dist/branch-winner.js.map +1 -1
- package/dist/cli-auth-command.d.ts.map +1 -1
- package/dist/cli-auth-command.js +5 -0
- package/dist/cli-auth-command.js.map +1 -1
- package/dist/cli-auth-onboarding.d.ts +12 -0
- package/dist/cli-auth-onboarding.d.ts.map +1 -0
- package/dist/cli-auth-onboarding.js +21 -0
- package/dist/cli-auth-onboarding.js.map +1 -0
- package/dist/cli-branch-command.d.ts +14 -19
- package/dist/cli-branch-command.d.ts.map +1 -1
- package/dist/cli-branch-command.js +207 -137
- package/dist/cli-branch-command.js.map +1 -1
- package/dist/cli-capabilities.d.ts +10 -51
- package/dist/cli-capabilities.d.ts.map +1 -1
- package/dist/cli-capabilities.js +13 -26
- package/dist/cli-capabilities.js.map +1 -1
- package/dist/cli-cli-command.d.ts +3 -0
- package/dist/cli-cli-command.d.ts.map +1 -1
- package/dist/cli-cli-command.js +15 -3
- package/dist/cli-cli-command.js.map +1 -1
- package/dist/cli-conversion-derivation.d.ts +30 -0
- package/dist/cli-conversion-derivation.d.ts.map +1 -0
- package/dist/{cli-export-command.js → cli-conversion-derivation.js} +178 -110
- package/dist/cli-conversion-derivation.js.map +1 -0
- package/dist/cli-conversion-output-directory.d.ts +5 -0
- package/dist/cli-conversion-output-directory.d.ts.map +1 -0
- package/dist/{cli-export-output-directory.js → cli-conversion-output-directory.js} +10 -10
- package/dist/cli-conversion-output-directory.js.map +1 -0
- package/dist/cli-convert-command.d.ts +9 -0
- package/dist/cli-convert-command.d.ts.map +1 -1
- package/dist/cli-convert-command.js +528 -158
- package/dist/cli-convert-command.js.map +1 -1
- package/dist/cli-corpus-command.d.ts.map +1 -1
- package/dist/cli-corpus-command.js +77 -10
- package/dist/cli-corpus-command.js.map +1 -1
- package/dist/cli-corpus-reference-downloads.d.ts +5 -0
- package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
- package/dist/cli-corpus-reference-downloads.js +18 -7
- package/dist/cli-corpus-reference-downloads.js.map +1 -1
- package/dist/cli-corpus-run.d.ts +9 -0
- package/dist/cli-corpus-run.d.ts.map +1 -1
- package/dist/cli-corpus-run.js +18 -0
- package/dist/cli-corpus-run.js.map +1 -1
- package/dist/cli-detach.d.ts +12 -4
- package/dist/cli-detach.d.ts.map +1 -1
- package/dist/cli-detach.js +49 -17
- package/dist/cli-detach.js.map +1 -1
- package/dist/cli-draft-command.d.ts +44 -61
- package/dist/cli-draft-command.d.ts.map +1 -1
- package/dist/cli-draft-command.js +307 -180
- package/dist/cli-draft-command.js.map +1 -1
- package/dist/cli-help/conversion.d.ts +30 -0
- package/dist/cli-help/conversion.d.ts.map +1 -0
- package/dist/cli-help/conversion.js +55 -0
- package/dist/cli-help/conversion.js.map +1 -0
- package/dist/cli-help/design.d.ts +74 -0
- package/dist/cli-help/design.d.ts.map +1 -0
- package/dist/cli-help/design.js +131 -0
- package/dist/cli-help/design.js.map +1 -0
- package/dist/cli-help/index.d.ts +224 -0
- package/dist/cli-help/index.d.ts.map +1 -0
- package/dist/cli-help/index.js +32 -0
- package/dist/cli-help/index.js.map +1 -0
- package/dist/cli-help/meta.d.ts +24 -0
- package/dist/cli-help/meta.d.ts.map +1 -0
- package/dist/cli-help/meta.js +30 -0
- package/dist/cli-help/meta.js.map +1 -0
- package/dist/cli-help/render.d.ts +4 -0
- package/dist/cli-help/render.d.ts.map +1 -0
- package/dist/cli-help/render.js +28 -0
- package/dist/cli-help/render.js.map +1 -0
- package/dist/cli-help/setup.d.ts +93 -0
- package/dist/cli-help/setup.d.ts.map +1 -0
- package/dist/cli-help/setup.js +142 -0
- package/dist/cli-help/setup.js.map +1 -0
- package/dist/cli-help/types.d.ts +10 -0
- package/dist/cli-help/types.d.ts.map +1 -0
- package/dist/cli-help/types.js +2 -0
- package/dist/cli-help/types.js.map +1 -0
- package/dist/cli-next-command.d.ts +11 -8
- package/dist/cli-next-command.d.ts.map +1 -1
- package/dist/cli-next-command.js +288 -88
- package/dist/cli-next-command.js.map +1 -1
- package/dist/cli-output-paths.d.ts +2 -23
- package/dist/cli-output-paths.d.ts.map +1 -1
- package/dist/cli-output-paths.js +2 -36
- package/dist/cli-output-paths.js.map +1 -1
- package/dist/cli-package-command.d.ts +1 -0
- package/dist/cli-package-command.d.ts.map +1 -1
- package/dist/cli-package-command.js +107 -34
- package/dist/cli-package-command.js.map +1 -1
- package/dist/cli-pending-auth.d.ts +20 -0
- package/dist/cli-pending-auth.d.ts.map +1 -0
- package/dist/cli-pending-auth.js +160 -0
- package/dist/cli-pending-auth.js.map +1 -0
- package/dist/cli-progress.d.ts +256 -75
- package/dist/cli-progress.d.ts.map +1 -1
- package/dist/cli-progress.js +425 -98
- package/dist/cli-progress.js.map +1 -1
- package/dist/cli-run.d.ts +2 -0
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +56 -75
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-skill-command.d.ts +3 -0
- package/dist/cli-skill-command.d.ts.map +1 -1
- package/dist/cli-skill-command.js +26 -3
- package/dist/cli-skill-command.js.map +1 -1
- package/dist/cli-usage.d.ts +17 -8
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +55 -40
- package/dist/cli-usage.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -2
- package/dist/config.js.map +1 -1
- package/dist/conversion-client.d.ts +4 -0
- package/dist/conversion-client.d.ts.map +1 -1
- package/dist/conversion-client.js +23 -3
- package/dist/conversion-client.js.map +1 -1
- package/dist/conversion-outputs.d.ts +11 -0
- package/dist/conversion-outputs.d.ts.map +1 -1
- package/dist/conversion-outputs.js +13 -1
- package/dist/conversion-outputs.js.map +1 -1
- package/dist/conversion-receipt.d.ts +1 -1
- package/dist/conversion-receipt.js +1 -1
- package/dist/conversion-recovery.d.ts +20 -0
- package/dist/conversion-recovery.d.ts.map +1 -0
- package/dist/conversion-recovery.js +61 -0
- package/dist/conversion-recovery.js.map +1 -0
- package/dist/conversion-status-contract.js +1 -1
- package/dist/conversion-status-contract.js.map +1 -1
- package/dist/credential-setup.d.ts +9 -1
- package/dist/credential-setup.d.ts.map +1 -1
- package/dist/credential-setup.js +13 -1
- package/dist/credential-setup.js.map +1 -1
- package/dist/draft-adoption.d.ts +9 -3
- package/dist/draft-adoption.d.ts.map +1 -1
- package/dist/draft-adoption.js +26 -41
- package/dist/draft-adoption.js.map +1 -1
- package/dist/draft-identity.d.ts +9 -12
- package/dist/draft-identity.d.ts.map +1 -1
- package/dist/draft-identity.js +0 -0
- package/dist/draft-identity.js.map +1 -1
- package/dist/draft-run.d.ts +9 -19
- package/dist/draft-run.d.ts.map +1 -1
- package/dist/draft-run.js +67 -95
- package/dist/draft-run.js.map +1 -1
- package/dist/draft-workspace.d.ts +26 -18
- package/dist/draft-workspace.d.ts.map +1 -1
- package/dist/draft-workspace.js +16 -5
- package/dist/draft-workspace.js.map +1 -1
- package/dist/hosted-draft-identity.d.ts +20 -0
- package/dist/hosted-draft-identity.d.ts.map +1 -0
- package/dist/hosted-draft-identity.js +30 -0
- package/dist/hosted-draft-identity.js.map +1 -0
- package/dist/hosted-draft-run.d.ts +60 -0
- package/dist/hosted-draft-run.d.ts.map +1 -0
- package/dist/hosted-draft-run.js +97 -0
- package/dist/hosted-draft-run.js.map +1 -0
- package/dist/legacy-codex-cleanup.d.ts +13 -0
- package/dist/legacy-codex-cleanup.d.ts.map +1 -1
- package/dist/legacy-codex-cleanup.js +83 -0
- package/dist/legacy-codex-cleanup.js.map +1 -1
- package/dist/legacy-skill-catalog.d.ts +2 -2
- package/dist/legacy-skill-catalog.d.ts.map +1 -1
- package/dist/legacy-skill-catalog.js +76 -5
- package/dist/legacy-skill-catalog.js.map +1 -1
- package/dist/login-auth.d.ts +38 -0
- package/dist/login-auth.d.ts.map +1 -1
- package/dist/login-auth.js +67 -16
- package/dist/login-auth.js.map +1 -1
- package/dist/mcp-tool-definitions.js +1 -1
- package/dist/mcp-tool-definitions.js.map +1 -1
- package/dist/next-target.d.ts +1 -4
- package/dist/next-target.d.ts.map +1 -1
- package/dist/next-target.js +5 -9
- package/dist/next-target.js.map +1 -1
- package/dist/next-wait-lease.d.ts +17 -0
- package/dist/next-wait-lease.d.ts.map +1 -0
- package/dist/next-wait-lease.js +92 -0
- package/dist/next-wait-lease.js.map +1 -0
- package/dist/operation-poll-policy.d.ts +89 -0
- package/dist/operation-poll-policy.d.ts.map +1 -0
- package/dist/operation-poll-policy.js +99 -0
- package/dist/operation-poll-policy.js.map +1 -0
- package/dist/package-client.d.ts +30 -0
- package/dist/package-client.d.ts.map +1 -1
- package/dist/package-client.js +48 -9
- package/dist/package-client.js.map +1 -1
- package/dist/package-submission.d.ts +17 -0
- package/dist/package-submission.d.ts.map +1 -1
- package/dist/package-submission.js +43 -2
- package/dist/package-submission.js.map +1 -1
- package/dist/pending-auth-store.d.ts +15 -0
- package/dist/pending-auth-store.d.ts.map +1 -0
- package/dist/pending-auth-store.js +90 -0
- package/dist/pending-auth-store.js.map +1 -0
- package/dist/responsive-quality.d.ts +2 -2
- package/dist/responsive-quality.js +2 -2
- package/dist/run-journal-commands.d.ts.map +1 -1
- package/dist/run-journal-commands.js +30 -78
- package/dist/run-journal-commands.js.map +1 -1
- package/dist/run-journal-in-flight.d.ts +2 -2
- package/dist/run-journal-in-flight.d.ts.map +1 -1
- package/dist/run-journal-in-flight.js +0 -0
- package/dist/run-journal-in-flight.js.map +1 -1
- package/dist/skill-installer.d.ts +2 -2
- package/dist/skill-installer.d.ts.map +1 -1
- package/dist/skill-installer.js +2 -2
- package/dist/skill-installer.js.map +1 -1
- package/open-design.json +3 -3
- package/package.json +1 -1
- package/skills/12ui-design/SKILL.md +62 -0
- package/skills/12ui-design/agents/openai.yaml +6 -0
- package/skills/12ui-design/inspire.md +11 -0
- package/dist/cli-create-command.d.ts +0 -59
- package/dist/cli-create-command.d.ts.map +0 -1
- package/dist/cli-create-command.js +0 -354
- package/dist/cli-create-command.js.map +0 -1
- package/dist/cli-export-command.d.ts +0 -26
- package/dist/cli-export-command.d.ts.map +0 -1
- package/dist/cli-export-command.js.map +0 -1
- package/dist/cli-export-output-directory.d.ts +0 -5
- package/dist/cli-export-output-directory.d.ts.map +0 -1
- package/dist/cli-export-output-directory.js.map +0 -1
- package/dist/cli-image-batch-command.d.ts +0 -29
- package/dist/cli-image-batch-command.d.ts.map +0 -1
- package/dist/cli-image-batch-command.js +0 -236
- package/dist/cli-image-batch-command.js.map +0 -1
- package/dist/cli-image-batch-materialize.d.ts +0 -27
- package/dist/cli-image-batch-materialize.d.ts.map +0 -1
- package/dist/cli-image-batch-materialize.js +0 -41
- package/dist/cli-image-batch-materialize.js.map +0 -1
- package/dist/cli-image-batch-resume.d.ts +0 -36
- package/dist/cli-image-batch-resume.d.ts.map +0 -1
- package/dist/cli-image-batch-resume.js +0 -176
- package/dist/cli-image-batch-resume.js.map +0 -1
- package/dist/cli-image-command.d.ts +0 -10
- package/dist/cli-image-command.d.ts.map +0 -1
- package/dist/cli-image-command.js +0 -106
- package/dist/cli-image-command.js.map +0 -1
- package/dist/cli-select-command.d.ts +0 -16
- package/dist/cli-select-command.d.ts.map +0 -1
- package/dist/cli-select-command.js +0 -60
- package/dist/cli-select-command.js.map +0 -1
- package/dist/create-identity.d.ts +0 -25
- package/dist/create-identity.d.ts.map +0 -1
- package/dist/create-identity.js +0 -0
- package/dist/create-identity.js.map +0 -1
- package/dist/draft-prompts.d.ts +0 -35
- package/dist/draft-prompts.d.ts.map +0 -1
- package/dist/draft-prompts.js +0 -51
- package/dist/draft-prompts.js.map +0 -1
- package/dist/image-batch-status.d.ts +0 -42
- package/dist/image-batch-status.d.ts.map +0 -1
- package/dist/image-batch-status.js +0 -143
- package/dist/image-batch-status.js.map +0 -1
- package/dist/image-generation-batch-attempt.d.ts +0 -28
- package/dist/image-generation-batch-attempt.d.ts.map +0 -1
- package/dist/image-generation-batch-attempt.js +0 -48
- package/dist/image-generation-batch-attempt.js.map +0 -1
- package/dist/image-generation-batch-manifest.d.ts +0 -25
- package/dist/image-generation-batch-manifest.d.ts.map +0 -1
- package/dist/image-generation-batch-manifest.js +0 -97
- package/dist/image-generation-batch-manifest.js.map +0 -1
- package/dist/image-generation-completion.d.ts +0 -43
- package/dist/image-generation-completion.d.ts.map +0 -1
- package/dist/image-generation-completion.js +0 -54
- package/dist/image-generation-completion.js.map +0 -1
- package/dist/image-generation-error.d.ts +0 -3
- package/dist/image-generation-error.d.ts.map +0 -1
- package/dist/image-generation-error.js +0 -30
- package/dist/image-generation-error.js.map +0 -1
- package/dist/image-generation-evidence.d.ts +0 -43
- package/dist/image-generation-evidence.d.ts.map +0 -1
- package/dist/image-generation-evidence.js +0 -28
- package/dist/image-generation-evidence.js.map +0 -1
- package/dist/image-generation-fs.d.ts +0 -3
- package/dist/image-generation-fs.d.ts.map +0 -1
- package/dist/image-generation-fs.js +0 -23
- package/dist/image-generation-fs.js.map +0 -1
- package/dist/image-generation-output.d.ts +0 -3
- package/dist/image-generation-output.d.ts.map +0 -1
- package/dist/image-generation-output.js +0 -51
- package/dist/image-generation-output.js.map +0 -1
- package/dist/image-generation-request.d.ts +0 -43
- package/dist/image-generation-request.d.ts.map +0 -1
- package/dist/image-generation-request.js +0 -52
- package/dist/image-generation-request.js.map +0 -1
- package/dist/image-generation-resume.d.ts +0 -49
- package/dist/image-generation-resume.d.ts.map +0 -1
- package/dist/image-generation-resume.js +0 -96
- package/dist/image-generation-resume.js.map +0 -1
- package/dist/image-generation-run.d.ts +0 -46
- package/dist/image-generation-run.d.ts.map +0 -1
- package/dist/image-generation-run.js +0 -158
- package/dist/image-generation-run.js.map +0 -1
- package/dist/image-generation-staging.d.ts +0 -25
- package/dist/image-generation-staging.d.ts.map +0 -1
- package/dist/image-generation-staging.js +0 -80
- package/dist/image-generation-staging.js.map +0 -1
- package/dist/image-generation-usage.d.ts +0 -75
- package/dist/image-generation-usage.d.ts.map +0 -1
- package/dist/image-generation-usage.js +0 -219
- package/dist/image-generation-usage.js.map +0 -1
- package/dist/image-provider-preflight.d.ts +0 -21
- package/dist/image-provider-preflight.d.ts.map +0 -1
- package/dist/image-provider-preflight.js +0 -184
- package/dist/image-provider-preflight.js.map +0 -1
- package/dist/selection-record.d.ts +0 -97
- package/dist/selection-record.d.ts.map +0 -1
- package/dist/selection-record.js +0 -138
- package/dist/selection-record.js.map +0 -1
- package/skills/design/SKILL.md +0 -116
- package/skills/design/agents/openai.yaml +0 -8
- package/skills/design/assets/large-logo.svg +0 -3
- package/skills/design/assets/small-400px.png +0 -0
package/dist/selection-record.js
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
|
-
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { readBatchAttempt, imageBatchAttemptPath } from './image-generation-batch-attempt.js';
|
|
4
|
-
import { imageAttemptPath } from './image-generation-evidence.js';
|
|
5
|
-
import { readImageGenerationAttemptFile } from './image-generation-staging.js';
|
|
6
|
-
/**
|
|
7
|
-
* `selection.json`, version 6 — the same contract the skill used to ask an
|
|
8
|
-
* agent to hand-assemble from four other files. Every field here is copied
|
|
9
|
-
* from durable evidence the run already wrote, which is the point: a record
|
|
10
|
-
* assembled by hand can disagree with the run it describes, and this one
|
|
11
|
-
* cannot.
|
|
12
|
-
*
|
|
13
|
-
* The recommendation protocol is preserved exactly: `recommended` when the
|
|
14
|
-
* winner is the recommended candidate, `override` when it is not (and then a
|
|
15
|
-
* specific reason is required), `no-recommendation` when the run indicated
|
|
16
|
-
* none.
|
|
17
|
-
*/
|
|
18
|
-
export const SELECTION_RECORD_VERSION = 6;
|
|
19
|
-
/**
|
|
20
|
-
* What the run itself recommends, derived rather than re-declared.
|
|
21
|
-
*
|
|
22
|
-
* `12ui draft` pairs candidate A with the corpus's top-ranked reference, B with
|
|
23
|
-
* the second, and so on (`draft-run.ts` sorts by ordinal before pairing), so the
|
|
24
|
-
* head of the ranking IS the run's recommendation and the run directory has held
|
|
25
|
-
* it all along. `--recommended` asked the caller to type back a fact the record
|
|
26
|
-
* beside it already stated, which is how the two drift apart.
|
|
27
|
-
*
|
|
28
|
-
* A candidate that never landed cannot be the recommendation, so the head is
|
|
29
|
-
* the highest-ranked candidate with an image on disk. A run where none landed
|
|
30
|
-
* indicates nothing, and says so.
|
|
31
|
-
*/
|
|
32
|
-
const recommendationFromRun = (candidates) => {
|
|
33
|
-
const landed = candidates.find((candidate) => candidate.sha256 !== null);
|
|
34
|
-
return landed
|
|
35
|
-
? { candidateId: landed.id, source: 'corpus-rank-1' }
|
|
36
|
-
: { candidateId: null, source: null };
|
|
37
|
-
};
|
|
38
|
-
export const buildSelectionRecord = async (args) => {
|
|
39
|
-
const now = args.now ?? (() => new Date());
|
|
40
|
-
const { draft } = args;
|
|
41
|
-
if (!draft.generation.candidates.some((candidate) => candidate.id === args.winner)) {
|
|
42
|
-
throw new Error(`Candidate ${args.winner} is not in this run. It has`
|
|
43
|
-
+ ` ${draft.generation.candidates.map((candidate) => candidate.id).join(', ')}.`);
|
|
44
|
-
}
|
|
45
|
-
const batchAttemptPath = imageBatchAttemptPath(draft.generation.manifestPath);
|
|
46
|
-
const batch = await readBatchAttempt(batchAttemptPath);
|
|
47
|
-
const candidates = await Promise.all(draft.generation.candidates.map(async (candidate) => {
|
|
48
|
-
const attemptEvidencePath = imageAttemptPath(candidate.outputPath);
|
|
49
|
-
const attempt = await readImageGenerationAttemptFile(attemptEvidencePath);
|
|
50
|
-
const bytes = await readFile(candidate.outputPath).catch(() => null);
|
|
51
|
-
return {
|
|
52
|
-
id: candidate.id,
|
|
53
|
-
path: candidate.outputPath,
|
|
54
|
-
sha256: attempt?.outputSha256
|
|
55
|
-
?? (bytes ? createHash('sha256').update(bytes).digest('hex') : null),
|
|
56
|
-
prompt: candidate.prompt,
|
|
57
|
-
promptSha256: candidate.promptSha256,
|
|
58
|
-
directionReferenceId: candidate.referenceId,
|
|
59
|
-
direction: candidate.direction,
|
|
60
|
-
generationReferencePath: candidate.referencePath,
|
|
61
|
-
generationReferenceSha256: candidate.referenceSha256,
|
|
62
|
-
referenceMode: draft.referenceMode,
|
|
63
|
-
provider: attempt?.provider ?? batch?.provider ?? null,
|
|
64
|
-
idempotencyKey: candidate.idempotencyKey,
|
|
65
|
-
// Only ever the recorded CLI value, never an assumed guarantee.
|
|
66
|
-
providerIdempotencyEnforced: attempt?.providerIdempotencyEnforced === true,
|
|
67
|
-
attemptEvidencePath,
|
|
68
|
-
rejectionReasons: [],
|
|
69
|
-
};
|
|
70
|
-
}));
|
|
71
|
-
const recommendation = recommendationFromRun(candidates);
|
|
72
|
-
const selectionSource = recommendation.candidateId === null
|
|
73
|
-
? 'no-recommendation'
|
|
74
|
-
: recommendation.candidateId === args.winner
|
|
75
|
-
? 'recommended'
|
|
76
|
-
: 'override';
|
|
77
|
-
if (selectionSource === 'override' && !args.reason.trim()) {
|
|
78
|
-
throw new Error('Overriding the recommended candidate requires a specific reason');
|
|
79
|
-
}
|
|
80
|
-
const reskin = draft.mode === 'structure-preserving-reskin';
|
|
81
|
-
return {
|
|
82
|
-
version: SELECTION_RECORD_VERSION,
|
|
83
|
-
createdAt: now().toISOString(),
|
|
84
|
-
requestSummary: draft.query,
|
|
85
|
-
viewportMode: 'first-viewport',
|
|
86
|
-
designMode: draft.mode,
|
|
87
|
-
redesignSource: {
|
|
88
|
-
originalPath: draft.redesignSource?.path ?? null,
|
|
89
|
-
originalSha256: draft.redesignSource?.sha256 ?? null,
|
|
90
|
-
preparedPath: draft.redesignSource?.path ?? null,
|
|
91
|
-
preparedSha256: draft.redesignSource?.sha256 ?? null,
|
|
92
|
-
preparation: 'none',
|
|
93
|
-
},
|
|
94
|
-
contract: { preserve: [], change: [] },
|
|
95
|
-
referencePolicy: {
|
|
96
|
-
retrieval: draft.redesignSource ? 'text-and-redesign-source' : 'text-only',
|
|
97
|
-
generation: reskin ? 'redesign-source-only' : 'one-corpus-image-per-candidate',
|
|
98
|
-
imagesPerGeneration: 1,
|
|
99
|
-
},
|
|
100
|
-
corpus: {
|
|
101
|
-
query: draft.corpus.query,
|
|
102
|
-
mode: draft.corpus.mode,
|
|
103
|
-
fallback: null,
|
|
104
|
-
idempotencyKey: draft.corpus.idempotencyKey,
|
|
105
|
-
setId: draft.corpus.setId,
|
|
106
|
-
references: draft.corpus.references.map((reference) => ({
|
|
107
|
-
id: reference.id,
|
|
108
|
-
path: reference.path,
|
|
109
|
-
sha256: reference.sha256,
|
|
110
|
-
aspect: reference.aspect,
|
|
111
|
-
})),
|
|
112
|
-
},
|
|
113
|
-
generation: {
|
|
114
|
-
referenceMode: draft.referenceMode,
|
|
115
|
-
manifestPath: draft.generation.manifestPath,
|
|
116
|
-
manifestSha256: draft.generation.manifestSha256,
|
|
117
|
-
batchAttemptPath,
|
|
118
|
-
},
|
|
119
|
-
candidates,
|
|
120
|
-
recommendation,
|
|
121
|
-
winner: args.winner,
|
|
122
|
-
selectionSource,
|
|
123
|
-
selectionOverrideReason: selectionSource === 'override' ? args.reason.trim() : null,
|
|
124
|
-
rationale: args.reason.trim(),
|
|
125
|
-
};
|
|
126
|
-
};
|
|
127
|
-
export const writeSelectionRecord = async (file, record) => {
|
|
128
|
-
await writeFile(file, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
129
|
-
};
|
|
130
|
-
export const readSelectionRecord = async (file) => {
|
|
131
|
-
try {
|
|
132
|
-
return JSON.parse(await readFile(file, 'utf8'));
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
return undefined;
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
//# sourceMappingURL=selection-record.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selection-record.js","sourceRoot":"","sources":["../src/selection-record.ts"],"names":[],"mappings":"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"}
|
package/skills/design/SKILL.md
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: design
|
|
3
|
-
description: "Required for any non-trivial UI work (web, app, mobile): drafts
|
|
4
|
-
distinctive corpus-grounded design candidates as images, expands one approved
|
|
5
|
-
design into every screen of a page, site, or app, converts a finished PNG,
|
|
6
|
-
JPEG, or WebP into production HTML, app code, PDF, PSD, PPTX, Sketch, SVG, or
|
|
7
|
-
raster output, and searches the 12ui design corpus for reference imagery."
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Design
|
|
11
|
-
|
|
12
|
-
If the `12ui` CLI is not present, run `npx -y @12ui/design skill install --skill design` once.
|
|
13
|
-
|
|
14
|
-
Code-generating models converge on a narrow band of visual defaults and cannot
|
|
15
|
-
see that convergence from inside it. Corpus-grounded generation explores
|
|
16
|
-
genuinely different directions, and converting the chosen image preserves one
|
|
17
|
-
with near-pixel fidelity — faster and truer than coding it by hand.
|
|
18
|
-
|
|
19
|
-
Start where you already are: a finished design image goes to §3, a rough concept
|
|
20
|
-
to §1, reference imagery as the deliverable to §5. Each command prints the next,
|
|
21
|
-
and `12ui <command> --help` prints every flag and its choices — read it rather
|
|
22
|
-
than guess.
|
|
23
|
-
|
|
24
|
-
## 1. Explore
|
|
25
|
-
|
|
26
|
-
12ui draft --query "<product, audience, surface, goal, personality>"
|
|
27
|
-
|
|
28
|
-
Four diverse corpus references, one candidate steered by each. Creates the run
|
|
29
|
-
directory and prints its path — pass it to every later command. Already holding
|
|
30
|
-
the finished design? Build it, do not redraw it: §3. Only to redraw an existing
|
|
31
|
-
interface, add `--redesign-source`. For more slots, or a direction or reference
|
|
32
|
-
each:
|
|
33
|
-
|
|
34
|
-
12ui create claim --concept "<product, audience, surface, goal, personality; 1200 chars max>" \
|
|
35
|
-
--candidates '[{"slot":"a","direction":"<short>","referenceId":"gen-<corpus-id>"}]'
|
|
36
|
-
12ui create dispatch <run-id>
|
|
37
|
-
12ui create download <run-id> --out-dir <directory>
|
|
38
|
-
|
|
39
|
-
Directions must be meaningfully different: four paraphrases of one idea buy four
|
|
40
|
-
of the same design. A run holds 1-96 candidates in slots `a`-`cr`, and one
|
|
41
|
-
returning `failed` is a settled, paid outcome, not a transient error.
|
|
42
|
-
|
|
43
|
-
## 2. Select
|
|
44
|
-
|
|
45
|
-
12ui select <run-dir> --winner B --reason "<rationale>"
|
|
46
|
-
|
|
47
|
-
Prefer the recommended candidate; overriding it needs a stated reason.
|
|
48
|
-
|
|
49
|
-
## 3. Convert
|
|
50
|
-
|
|
51
|
-
12ui convert <source-image> --export html
|
|
52
|
-
12ui convert <source-image> --output layerdoc
|
|
53
|
-
|
|
54
|
-
The first converts and exports the responsive page in one command, billing $1.00
|
|
55
|
-
past the free daily allowance. The second stops at the structured document: ask
|
|
56
|
-
for it when that is the deliverable, and do not buy an export nobody asked for.
|
|
57
|
-
|
|
58
|
-
Derive further formats from that conversion instead of converting again:
|
|
59
|
-
|
|
60
|
-
12ui export <conversion-id> --output html_fixed,svg,pdf --out-dir <dir> \
|
|
61
|
-
--idempotency-key <stable-key>
|
|
62
|
-
|
|
63
|
-
All but `html` are free, deterministic, and parallel; reusing a key replays
|
|
64
|
-
finished work rather than buying it twice. `--help` lists every output; the code
|
|
65
|
-
outputs take a profile of this shape (`--app-profile` for native):
|
|
66
|
-
|
|
67
|
-
--web-profile '{"version":1,"framework":"react","styling":"tailwind","language":"typescript","packaging":"page"}'
|
|
68
|
-
|
|
69
|
-
Ordered viewports of one continuous page are ONE package conversion — separate
|
|
70
|
-
conversions lose page order and stitching. Take the manifest from the tool and
|
|
71
|
-
read the rules it prints:
|
|
72
|
-
|
|
73
|
-
12ui convert package --template > package.json
|
|
74
|
-
12ui convert package --manifest package.json --out-dir <dir>
|
|
75
|
-
|
|
76
|
-
## 4. Branch
|
|
77
|
-
|
|
78
|
-
Whenever the deliverable is more than one viewport — a full page, a multi-route
|
|
79
|
-
site, an app with several states — expand the approved design rather than
|
|
80
|
-
re-deriving it per screen. A single fold is a plain convert (§3).
|
|
81
|
-
|
|
82
|
-
12ui branch execute <run-dir> --scope page|site --convert html \
|
|
83
|
-
--concept "<what the rest of the surface must cover; 1200 chars max>"
|
|
84
|
-
|
|
85
|
-
`--scope page` grows that screen into the rest of its page, `--scope site` adds
|
|
86
|
-
sibling routes and app states, and `--convert html` converts each page as one
|
|
87
|
-
ordered package. The starting design is viewport 1 already — the candidate
|
|
88
|
-
`12ui select` recorded, or `--winner-run <run-id> --winner-slot <slot>` in a
|
|
89
|
-
fresh directory.
|
|
90
|
-
|
|
91
|
-
12ui next <run-dir>
|
|
92
|
-
|
|
93
|
-
Execute returns immediately; `next` reports progress and the next command,
|
|
94
|
-
`--wait` blocks instead of polling, and `12ui branch resume` continues an
|
|
95
|
-
interrupted run, replaying already-settled screens for free. Wait for it rather
|
|
96
|
-
than building the same pages by hand in the meantime — they are already being
|
|
97
|
-
produced and paid for. Screens land in `<run-dir>/branch/screens/` and per-page
|
|
98
|
-
HTML in `<run-dir>/branch/pages/`.
|
|
99
|
-
|
|
100
|
-
## 5. Search
|
|
101
|
-
|
|
102
|
-
12ui corpus inspire --query "<product, audience, surface, goal, personality>" \
|
|
103
|
-
--out-dir .12ui/<slug>/references
|
|
104
|
-
|
|
105
|
-
The corpus is already explored, ranked, and diversified, so this returns real
|
|
106
|
-
references rather than another model's guess. Preserve the returned order; the
|
|
107
|
-
ranking is the product, and `manifest.json` is the completion record. `--mode`
|
|
108
|
-
trades query adherence against exploration (`balanced` is the default),
|
|
109
|
-
`--reference-image` ranks against an existing interface, and
|
|
110
|
-
`12ui corpus resume --out-dir <dir>` continues an interrupted search.
|
|
111
|
-
|
|
112
|
-
## 6. Integrate
|
|
113
|
-
|
|
114
|
-
The exported HTML is the page: keep its document, structure, and bindings and
|
|
115
|
-
build around it — routing, copy, state, interactions — rather than re-authoring
|
|
116
|
-
the markup around mined assets.
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Design"
|
|
3
|
-
short_description: "Use the 12ui design framework to quickly create high quality UI"
|
|
4
|
-
icon_small: "./assets/small-400px.png"
|
|
5
|
-
icon_large: "./assets/large-logo.svg"
|
|
6
|
-
default_prompt: "Use $design to create a new homepage for this project."
|
|
7
|
-
policy:
|
|
8
|
-
allow_implicit_invocation: true
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" version="1.1" role="img" aria-label="design logo">
|
|
2
|
-
<path d="M 224.200 118.200 C 223.272 119.128, 223 183.857, 223 403.459 L 223 687.517 268.145 732.759 C 309.721 774.423, 317.070 781.044, 316.971 776.750 C 316.956 776.063, 317.045 681.309, 317.170 566.186 C 317.303 444.836, 317.773 356.640, 318.291 356.320 C 319.219 355.746, 326.251 362.815, 345.827 384 C 352.180 390.875, 364.155 403.535, 372.439 412.133 C 380.722 420.731, 392.675 433.319, 399 440.106 C 409.608 451.490, 414.997 457.252, 430.230 473.500 C 433.324 476.800, 438.926 482.689, 442.678 486.587 C 446.430 490.485, 454.225 498.809, 460 505.083 C 471.145 517.193, 481.371 528.035, 492 539.009 C 495.575 542.700, 500.750 548.193, 503.500 551.216 C 509.464 557.770, 530.250 579.957, 541.650 591.936 C 546.132 596.646, 551.532 602.385, 553.650 604.689 C 555.767 606.994, 561.796 613.519, 567.047 619.189 C 572.298 624.860, 578.823 631.942, 581.547 634.927 C 584.271 637.912, 590.325 644.251, 595 649.014 C 599.675 653.776, 605.314 659.659, 607.532 662.086 C 609.750 664.514, 614.444 669.650, 617.964 673.500 C 621.484 677.350, 630.469 686.977, 637.932 694.893 C 656.487 714.576, 657.810 715.991, 663.395 722.124 C 669.791 729.148, 693.049 753.918, 699.731 760.822 C 702.608 763.794, 707.424 768.910, 710.434 772.189 C 716.269 778.547, 719.225 779.441, 721.398 775.503 C 722.004 774.405, 724.638 770.741, 727.250 767.361 C 729.862 763.982, 732 760.750, 732 760.180 C 732 759.609, 732.563 758.536, 733.250 757.794 C 735.648 755.208, 738.724 750.445, 739.427 748.231 C 739.816 747.004, 740.510 746, 740.970 746 C 741.429 746, 742.300 744.762, 742.905 743.250 C 743.511 741.737, 744.893 739.150, 745.978 737.500 C 749.986 731.405, 764 703.988, 764 702.244 C 764 701.694, 764.675 700.685, 765.500 700 C 766.325 699.315, 767 697.740, 767 696.500 C 767 695.260, 767.675 693.685, 768.500 693 C 769.325 692.315, 770 691.016, 770 690.113 C 770 689.209, 770.900 686.791, 772 684.739 C 773.100 682.686, 774 680.288, 774 679.408 C 774 678.528, 774.620 676.614, 775.378 675.154 C 777.797 670.493, 781 661.530, 781 659.422 C 781 658.300, 781.661 656.509, 782.468 655.441 C 783.276 654.374, 783.951 652.714, 783.968 651.754 C 783.986 650.794, 784.835 647.419, 785.856 644.254 C 790.992 628.333, 796.267 604.086, 798.530 586 C 799.252 580.225, 800.395 572.575, 801.069 569 C 801.908 564.547, 802.300 549.587, 802.313 521.500 C 802.328 487.688, 802.056 479.361, 800.766 474 C 799.905 470.425, 798.907 464.575, 798.548 461 C 797.875 454.290, 797.207 450.634, 791.929 424.750 C 791.341 421.863, 790.396 418.150, 789.830 416.500 C 789.265 414.850, 788.357 411.250, 787.812 408.500 C 787.268 405.750, 786.465 403.050, 786.027 402.500 C 785.589 401.950, 784.894 399.927, 784.482 398.004 C 784.070 396.081, 783.175 393.156, 782.492 391.504 C 781.810 389.852, 780.195 385.125, 778.903 381 C 777.612 376.875, 775.980 372.612, 775.278 371.527 C 774.575 370.443, 774 368.630, 774 367.500 C 774 366.370, 773.386 364.557, 772.635 363.473 C 771.884 362.388, 770.931 360.375, 770.518 359 C 769.709 356.307, 760.535 336.474, 758.954 334 C 758.427 333.175, 757.523 331.375, 756.946 330 C 754.532 324.250, 745.249 306.921, 744.089 306 C 743.743 305.725, 742.909 304.375, 742.237 303 C 741.565 301.625, 740.449 299.644, 739.757 298.598 C 738.585 296.825, 730.391 284.656, 724.203 275.500 C 719.622 268.721, 707.830 253.691, 701 245.925 C 694.092 238.071, 670.847 214.538, 662.500 206.949 C 656.883 201.841, 626.460 178, 625.560 178 C 625.241 178, 622.847 176.527, 620.240 174.727 C 617.633 172.927, 614.375 170.897, 613 170.216 C 611.625 169.536, 609.150 168.090, 607.500 167.004 C 605.850 165.918, 603.600 164.550, 602.500 163.963 C 601.400 163.377, 598.700 161.830, 596.500 160.526 C 590.790 157.140, 568.255 146, 567.117 146 C 566.592 146, 564.888 145.380, 563.331 144.622 C 556.942 141.513, 542.989 136.003, 541.481 135.994 C 540.941 135.990, 539.243 135.332, 537.708 134.531 C 536.172 133.730, 533.289 132.770, 531.301 132.397 C 529.313 132.024, 526.519 131.110, 525.093 130.365 C 523.667 129.621, 521.317 129.010, 519.872 129.006 C 518.427 129.003, 515.727 128.380, 513.872 127.623 C 512.017 126.866, 508.250 125.933, 505.500 125.550 C 502.750 125.167, 498.572 124.212, 496.215 123.427 C 493.858 122.642, 490.030 122, 487.708 122 C 485.387 122, 481.915 121.508, 479.993 120.908 C 478.072 120.307, 467.050 119.205, 455.500 118.458 C 426.905 116.610, 226.014 116.386, 224.200 118.200 M 223.667 721.667 C 223.300 722.033, 223 764.532, 223 816.108 C 223 886.115, 223.294 910.063, 224.159 910.598 C 224.796 910.992, 267.096 911.449, 318.159 911.614 C 410.313 911.912, 411 911.900, 411 909.922 C 411 908.657, 402.031 898.914, 386.412 883.215 C 308.657 805.059, 224.798 721, 224.583 721 C 224.445 721, 224.033 721.300, 223.667 721.667" stroke="none" fill="#000" fill-rule="evenodd"/>
|
|
3
|
-
</svg>
|
|
Binary file
|