@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
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { stringFlag } from './cli-arguments.js';
|
|
4
|
-
import { usageRefusal } from './cli-usage.js';
|
|
5
|
-
import { dispatchImageGeneration, markImageGenerationDispatched, reserveImageGeneration, } from './image-generation-run.js';
|
|
6
|
-
import { IMAGE_GENERATION_ASPECTS, IMAGE_GENERATION_REFERENCE_MODES, isImageGenerationAspect, isImageGenerationReferenceMode, prepareImageGenerationRequest, } from './image-generation-request.js';
|
|
7
|
-
import { materializeImageGeneration } from './image-generation-staging.js';
|
|
8
|
-
import { IMAGE_GENERATION_PROVIDERS, isImageGenerationProvider, preflightImageProvider, } from './image-provider-preflight.js';
|
|
9
|
-
import { normalizeOptionalIdempotencyKey } from './idempotency-key.js';
|
|
10
|
-
const referenceFlag = (flags) => {
|
|
11
|
-
const numbered = ['reference-1', 'reference-2', 'reference-3', 'reference-4']
|
|
12
|
-
.filter((name) => stringFlag(flags, name) !== undefined);
|
|
13
|
-
if (numbered.length > 0) {
|
|
14
|
-
throw new Error('Numbered reference flags are not supported; use exactly one --reference <file>');
|
|
15
|
-
}
|
|
16
|
-
const value = stringFlag(flags, 'reference')?.trim();
|
|
17
|
-
if (!value)
|
|
18
|
-
throw new Error('--reference is required');
|
|
19
|
-
return value;
|
|
20
|
-
};
|
|
21
|
-
const promptInput = async (flags) => {
|
|
22
|
-
const inline = stringFlag(flags, 'prompt');
|
|
23
|
-
const file = stringFlag(flags, 'prompt-file');
|
|
24
|
-
if ((inline === undefined) === (file === undefined)) {
|
|
25
|
-
throw new Error('image generate requires exactly one of --prompt or --prompt-file');
|
|
26
|
-
}
|
|
27
|
-
if (inline !== undefined) {
|
|
28
|
-
const prompt = inline.trim();
|
|
29
|
-
if (!prompt)
|
|
30
|
-
throw new Error('--prompt must not be empty');
|
|
31
|
-
return { prompt, source: { kind: 'inline' } };
|
|
32
|
-
}
|
|
33
|
-
const promptPath = path.resolve(file);
|
|
34
|
-
const prompt = (await readFile(promptPath, 'utf8')).trim();
|
|
35
|
-
if (!prompt)
|
|
36
|
-
throw new Error('--prompt-file must not be empty');
|
|
37
|
-
return { prompt, source: { kind: 'file', path: promptPath } };
|
|
38
|
-
};
|
|
39
|
-
export const runImageCommand = async (action, flags, dependencies = {}) => {
|
|
40
|
-
if (action !== 'generate') {
|
|
41
|
-
throw usageRefusal({
|
|
42
|
-
reason: `${action ? `\`${action}\` is not` : 'No action was given, and'}`
|
|
43
|
-
+ ' a `12ui image` action. The actions are generate and generate-batch.',
|
|
44
|
-
code: 'image_generate_usage',
|
|
45
|
-
verb: ['image'],
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
const outputPath = path.resolve(stringFlag(flags, 'out') ?? '');
|
|
49
|
-
const projectRoot = path.resolve(stringFlag(flags, 'project-root') ?? '');
|
|
50
|
-
if (!stringFlag(flags, 'out'))
|
|
51
|
-
throw new Error('--out is required');
|
|
52
|
-
if (!stringFlag(flags, 'project-root'))
|
|
53
|
-
throw new Error('--project-root is required');
|
|
54
|
-
const { prompt, source: promptSource } = await promptInput(flags);
|
|
55
|
-
const referencePath = path.resolve(referenceFlag(flags));
|
|
56
|
-
if (path.extname(outputPath).toLowerCase() !== '.png') {
|
|
57
|
-
throw new Error('--out must end in .png because image generate always writes PNG bytes');
|
|
58
|
-
}
|
|
59
|
-
const providerValue = stringFlag(flags, 'provider') ?? 'auto';
|
|
60
|
-
if (!isImageGenerationProvider(providerValue)) {
|
|
61
|
-
throw new Error(`--provider must be one of: ${IMAGE_GENERATION_PROVIDERS.join(', ')}`);
|
|
62
|
-
}
|
|
63
|
-
const aspectValue = stringFlag(flags, 'aspect') ?? 'landscape';
|
|
64
|
-
if (!isImageGenerationAspect(aspectValue)) {
|
|
65
|
-
throw new Error(`--aspect must be one of: ${IMAGE_GENERATION_ASPECTS.join(', ')}`);
|
|
66
|
-
}
|
|
67
|
-
const referenceMode = stringFlag(flags, 'reference-mode') ?? 'inspiration';
|
|
68
|
-
if (!isImageGenerationReferenceMode(referenceMode)) {
|
|
69
|
-
throw new Error(`--reference-mode must be one of: ${IMAGE_GENERATION_REFERENCE_MODES.join(', ')}`);
|
|
70
|
-
}
|
|
71
|
-
const idempotencyKey = normalizeOptionalIdempotencyKey(stringFlag(flags, 'idempotency-key'), '--idempotency-key');
|
|
72
|
-
if (!idempotencyKey)
|
|
73
|
-
throw new Error('--idempotency-key is required');
|
|
74
|
-
const request = await prepareImageGenerationRequest({
|
|
75
|
-
prompt,
|
|
76
|
-
promptSource,
|
|
77
|
-
referencePath,
|
|
78
|
-
outputPath,
|
|
79
|
-
projectRoot,
|
|
80
|
-
provider: providerValue,
|
|
81
|
-
aspect: aspectValue,
|
|
82
|
-
referenceMode,
|
|
83
|
-
idempotencyKey,
|
|
84
|
-
});
|
|
85
|
-
const preflight = await (dependencies.preflight ?? preflightImageProvider)({
|
|
86
|
-
provider: providerValue,
|
|
87
|
-
projectRoot,
|
|
88
|
-
});
|
|
89
|
-
const reserved = await reserveImageGeneration({ request, preflight });
|
|
90
|
-
await markImageGenerationDispatched(reserved);
|
|
91
|
-
try {
|
|
92
|
-
const result = await dispatchImageGeneration(reserved, { generate: dependencies.generate });
|
|
93
|
-
// The PNG and its completed ledger entry appear together. Until this
|
|
94
|
-
// returns, the destination directory holds neither.
|
|
95
|
-
await materializeImageGeneration(outputPath);
|
|
96
|
-
console.log(JSON.stringify(result, null, 2));
|
|
97
|
-
return { outputPath };
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
// Terminal failures still owe the caller their evidence at the documented
|
|
101
|
-
// path, even though there is no image to deliver.
|
|
102
|
-
await materializeImageGeneration(outputPath).catch(() => undefined);
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
//# sourceMappingURL=cli-image-command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-image-command.js","sourceRoot":"","sources":["../src/cli-image-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { type CliFlags } from './cli-arguments.js';
|
|
2
|
-
/**
|
|
3
|
-
* `12ui select` — the choice, recorded.
|
|
4
|
-
*
|
|
5
|
-
* The judgement stays the model's: it has to look at four images and say which
|
|
6
|
-
* one and why. Assembling the evidence around that judgement does not, and used
|
|
7
|
-
* to be a contract the skill asked an agent to fill in from four other files by
|
|
8
|
-
* hand.
|
|
9
|
-
*/
|
|
10
|
-
export type SelectCommandResult = {
|
|
11
|
-
runDir: string;
|
|
12
|
-
selection: string;
|
|
13
|
-
winner: string;
|
|
14
|
-
};
|
|
15
|
-
export declare const runSelectCommand: (runDirArgument: string | undefined, flags: CliFlags) => Promise<SelectCommandResult>;
|
|
16
|
-
//# sourceMappingURL=cli-select-command.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-select-command.d.ts","sourceRoot":"","sources":["../src/cli-select-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAW/D;;;;;;;GAOG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,gBAAgB,MAAM,GAAG,SAAS,EAClC,OAAO,QAAQ,KACd,OAAO,CAAC,mBAAmB,CA6D7B,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { stringFlag } from './cli-arguments.js';
|
|
2
|
-
import { CliRefusal } from './cli-refusal.js';
|
|
3
|
-
import { usageRefusal } from './cli-usage.js';
|
|
4
|
-
import { MAX_CONCEPT_CHARACTERS } from './concept-input.js';
|
|
5
|
-
import { draftPaths, readDraftRecord } from './draft-workspace.js';
|
|
6
|
-
import { buildSelectionRecord, readSelectionRecord, writeSelectionRecord, } from './selection-record.js';
|
|
7
|
-
export const runSelectCommand = async (runDirArgument, flags) => {
|
|
8
|
-
if (!runDirArgument) {
|
|
9
|
-
throw usageRefusal({
|
|
10
|
-
reason: 'A selection is recorded in the run directory it belongs to, and none was named.'
|
|
11
|
-
+ ' `12ui draft` prints it as its first line.',
|
|
12
|
-
code: 'select_usage',
|
|
13
|
-
verb: ['select'],
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
const winner = stringFlag(flags, 'winner')?.trim();
|
|
17
|
-
const reason = stringFlag(flags, 'reason')?.trim();
|
|
18
|
-
if (!winner || !reason) {
|
|
19
|
-
throw usageRefusal({
|
|
20
|
-
reason: `A selection is a candidate and the judgement behind it; ${!winner && !reason
|
|
21
|
-
? 'neither was given'
|
|
22
|
-
: `--${winner ? 'reason' : 'winner'} was not given`}.`,
|
|
23
|
-
code: 'select_usage',
|
|
24
|
-
verb: ['select'],
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
const paths = draftPaths(runDirArgument);
|
|
28
|
-
const draft = await readDraftRecord(paths.draftRecord);
|
|
29
|
-
if (!draft) {
|
|
30
|
-
throw new CliRefusal(`No draft run in ${paths.runDir} — there is nothing to select from, and nothing has failed.`
|
|
31
|
-
+ ' Start one with `12ui draft --query "<product, audience, surface, goal, personality>"`.', 'select_no_draft');
|
|
32
|
-
}
|
|
33
|
-
const existing = await readSelectionRecord(paths.selection);
|
|
34
|
-
if (existing) {
|
|
35
|
-
throw new CliRefusal(`A selection already exists at ${paths.selection}: candidate ${existing.winner}. Read it`
|
|
36
|
-
+ ' rather than choosing again, or start a new draft to explore other directions.', 'select_already_recorded');
|
|
37
|
-
}
|
|
38
|
-
// The recommendation is a fact the run already holds — the candidate steered
|
|
39
|
-
// by the corpus's own top-ranked reference — so it is read from the run
|
|
40
|
-
// rather than re-declared on the command line. `--recommended`,
|
|
41
|
-
// `--recommendation-source`, and `--reject` are gone in 0.2.20: zero uses
|
|
42
|
-
// anywhere, and `--reject` could never do what its own doc comment showed
|
|
43
|
-
// (the parser is last-wins, so it only ever carried one entry).
|
|
44
|
-
const record = await buildSelectionRecord({ draft, winner, reason });
|
|
45
|
-
await writeSelectionRecord(paths.selection, record);
|
|
46
|
-
console.log(JSON.stringify({
|
|
47
|
-
runDir: paths.runDir,
|
|
48
|
-
selection: paths.selection,
|
|
49
|
-
winner: record.winner,
|
|
50
|
-
winnerPath: record.candidates.find((candidate) => candidate.id === record.winner)?.path,
|
|
51
|
-
selectionSource: record.selectionSource,
|
|
52
|
-
nextAction: `Convert the winner alone with \`12ui convert ${paths.candidatesDir}/${record.winner}.png`
|
|
53
|
-
+ ' --export html`, or grow the whole surface with'
|
|
54
|
-
+ ` \`12ui branch execute ${paths.runDir}`
|
|
55
|
-
+ ` --concept "<what the rest must cover, ${MAX_CONCEPT_CHARACTERS} chars max>"`
|
|
56
|
-
+ ' --scope page|site --convert html`.',
|
|
57
|
-
}, null, 2));
|
|
58
|
-
return { runDir: paths.runDir, selection: paths.selection, winner: record.winner };
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=cli-select-command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-select-command.js","sourceRoot":"","sources":["../src/cli-select-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The derived identity for a hosted create run.
|
|
3
|
-
*
|
|
4
|
-
* The hosted API demands a caller-minted `Idempotency-Key` on the claim, and
|
|
5
|
-
* until now no tool derived one — so the design-draft skill had to teach key
|
|
6
|
-
* minting in prose, and a paraphrased key meant either a wedged claim
|
|
7
|
-
* (`409 idempotency_conflict`, same key with a changed body) or a second run
|
|
8
|
-
* bought for the same work (new key, same body). Deriving it from the request
|
|
9
|
-
* removes both from the caller's hands.
|
|
10
|
-
*/
|
|
11
|
-
export declare const CREATE_WORKFLOW_REVISION = "create-v1";
|
|
12
|
-
export type CreateCandidateSpecInput = {
|
|
13
|
-
slot: string;
|
|
14
|
-
direction?: string;
|
|
15
|
-
referenceId?: string;
|
|
16
|
-
useReferenceImage?: boolean;
|
|
17
|
-
};
|
|
18
|
-
export declare const createRunKey: (args: {
|
|
19
|
-
concept: string;
|
|
20
|
-
aspect: string;
|
|
21
|
-
mode?: string;
|
|
22
|
-
candidates: readonly CreateCandidateSpecInput[];
|
|
23
|
-
referenceImageSha256?: string;
|
|
24
|
-
}) => string;
|
|
25
|
-
//# sourceMappingURL=create-identity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-identity.d.ts","sourceRoot":"","sources":["../src/create-identity.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,eAAO,MAAM,wBAAwB,cAAc,CAAC;AAEpD,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAmBF,eAAO,MAAM,YAAY,GAAI,MAAM;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,KAAG,MAcO,CAAC"}
|
package/dist/create-identity.js
DELETED
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-identity.js","sourceRoot":"","sources":["../src/create-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;GASG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAC;AASpD,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,UAAU,GAAG,EAAE,EAAU,EAAE,CAAC,CAC9D,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CACtE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,CAAC,SAAmC,EAAU,EAAE,CAAC;IAC1E,SAAS,CAAC,IAAI;IACd,SAAS,CAAC,SAAS,IAAI,EAAE;IACzB,SAAS,CAAC,WAAW,IAAI,EAAE;IAC3B,SAAS,CAAC,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;CACrD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAM5B,EAAU,EAAE,CAAC;IACZ,QAAQ;IACR,IAAI;IACJ,WAAW,CAAC;QACV,IAAI,CAAC,OAAO;QACZ,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI,IAAI,aAAa;QAC1B,IAAI,CAAC,oBAAoB,IAAI,EAAE;QAC/B,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;aACjB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aAC1D,GAAG,CAAC,kBAAkB,CAAC;aACvB,IAAI,CAAC,GAAG,CAAC;QACZ,wBAAwB;KACzB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACb,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
|
package/dist/draft-prompts.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { DraftCandidateId, DraftMode } from './draft-workspace.js';
|
|
2
|
-
/**
|
|
3
|
-
* The generation prompts, as code.
|
|
4
|
-
*
|
|
5
|
-
* These were prose in the skill: a template an agent filled in, plus rules
|
|
6
|
-
* about which image may be attached to which candidate. Prose is where they
|
|
7
|
-
* drifted — a model that paraphrases a template loses the constraints inside
|
|
8
|
-
* it. Here they are one function, so every draft run asks for the same thing
|
|
9
|
-
* and the caller supplies only the design problem.
|
|
10
|
-
*
|
|
11
|
-
* THE FOUR REFERENCES ARE THE FOUR DIRECTIONS. Diversity comes from retrieval,
|
|
12
|
-
* and each candidate is steered by the one image paired with it, so the prompt
|
|
13
|
-
* text is identical across candidates and carries no authored per-candidate
|
|
14
|
-
* "visual quality" at all. That is deliberate: a written direction is a second,
|
|
15
|
-
* weaker steering signal that competes with the image, and asking a model to
|
|
16
|
-
* author four of them puts the diversity back inside the model whose narrow
|
|
17
|
-
* defaults this whole flow exists to escape.
|
|
18
|
-
*
|
|
19
|
-
* The rules encoded below, each one previously a paragraph of prose:
|
|
20
|
-
* - ONE viewport per candidate, never a whole page squeezed into one canvas;
|
|
21
|
-
* - exactly ONE image reference per generation, never a composite;
|
|
22
|
-
* - the corpus image is loose inspiration, never a template to clone, and is
|
|
23
|
-
* never described back to the model in words;
|
|
24
|
-
* - a reskin preserves the source's structure and changes only its visual
|
|
25
|
-
* language, so the source is the sole reference for every candidate;
|
|
26
|
-
* - no device frame, no presentation mockup.
|
|
27
|
-
*/
|
|
28
|
-
export declare const DRAFT_PROMPT_REVISION = "draft-prompt-v2";
|
|
29
|
-
export declare const promptDigest: (prompt: string) => string;
|
|
30
|
-
export declare const draftCandidatePrompt: (args: {
|
|
31
|
-
query: string;
|
|
32
|
-
mode: DraftMode;
|
|
33
|
-
}) => string;
|
|
34
|
-
export declare const draftCandidateIdFor: (index: number) => DraftCandidateId;
|
|
35
|
-
//# sourceMappingURL=draft-prompts.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-prompts.d.ts","sourceRoot":"","sources":["../src/draft-prompts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAE7C,CAAC;AAIF,eAAO,MAAM,oBAAoB,GAAI,MAAM;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;CACjB,KAAG,MAkBH,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,KAAG,gBAEnD,CAAC"}
|
package/dist/draft-prompts.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
|
-
/**
|
|
3
|
-
* The generation prompts, as code.
|
|
4
|
-
*
|
|
5
|
-
* These were prose in the skill: a template an agent filled in, plus rules
|
|
6
|
-
* about which image may be attached to which candidate. Prose is where they
|
|
7
|
-
* drifted — a model that paraphrases a template loses the constraints inside
|
|
8
|
-
* it. Here they are one function, so every draft run asks for the same thing
|
|
9
|
-
* and the caller supplies only the design problem.
|
|
10
|
-
*
|
|
11
|
-
* THE FOUR REFERENCES ARE THE FOUR DIRECTIONS. Diversity comes from retrieval,
|
|
12
|
-
* and each candidate is steered by the one image paired with it, so the prompt
|
|
13
|
-
* text is identical across candidates and carries no authored per-candidate
|
|
14
|
-
* "visual quality" at all. That is deliberate: a written direction is a second,
|
|
15
|
-
* weaker steering signal that competes with the image, and asking a model to
|
|
16
|
-
* author four of them puts the diversity back inside the model whose narrow
|
|
17
|
-
* defaults this whole flow exists to escape.
|
|
18
|
-
*
|
|
19
|
-
* The rules encoded below, each one previously a paragraph of prose:
|
|
20
|
-
* - ONE viewport per candidate, never a whole page squeezed into one canvas;
|
|
21
|
-
* - exactly ONE image reference per generation, never a composite;
|
|
22
|
-
* - the corpus image is loose inspiration, never a template to clone, and is
|
|
23
|
-
* never described back to the model in words;
|
|
24
|
-
* - a reskin preserves the source's structure and changes only its visual
|
|
25
|
-
* language, so the source is the sole reference for every candidate;
|
|
26
|
-
* - no device frame, no presentation mockup.
|
|
27
|
-
*/
|
|
28
|
-
export const DRAFT_PROMPT_REVISION = 'draft-prompt-v2';
|
|
29
|
-
export const promptDigest = (prompt) => (createHash('sha256').update(prompt).digest('hex'));
|
|
30
|
-
const collapse = (value) => value.replace(/\s+/gu, ' ').trim();
|
|
31
|
-
export const draftCandidatePrompt = (args) => {
|
|
32
|
-
const query = collapse(args.query);
|
|
33
|
-
if (args.mode === 'structure-preserving-reskin') {
|
|
34
|
-
return collapse(`
|
|
35
|
-
Reskin this interface for ${query}. Preserve the attached source's
|
|
36
|
-
information architecture, content hierarchy, primary actions, and
|
|
37
|
-
interactions. Change only its visual language: palette, typography,
|
|
38
|
-
spacing, and detail are yours to choose. Show the first viewport or
|
|
39
|
-
primary screen. Fill the canvas without a device or presentation frame.
|
|
40
|
-
`);
|
|
41
|
-
}
|
|
42
|
-
return collapse(`
|
|
43
|
-
Create one distinctive interface for ${query}. Show only the first
|
|
44
|
-
viewport, with the primary goal immediately clear. Use the attached image
|
|
45
|
-
as loose visual inspiration, not a template: take its feeling, not its
|
|
46
|
-
layout. Leave breathing room and choose the visual language yourself. Fill
|
|
47
|
-
the canvas without a device or presentation frame.
|
|
48
|
-
`);
|
|
49
|
-
};
|
|
50
|
-
export const draftCandidateIdFor = (index) => ['A', 'B', 'C', 'D'][index];
|
|
51
|
-
//# sourceMappingURL=draft-prompts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"draft-prompts.js","sourceRoot":"","sources":["../src/draft-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,CACtD,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAClD,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAE/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,IAGpC,EAAU,EAAE;IACX,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI,KAAK,6BAA6B,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC;kCACc,KAAK;;;;;KAKlC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;2CACyB,KAAK;;;;;GAK7C,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAoB,EAAE,CACrE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAC3B,CAAC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The motion surface for `image generate-batch`, read by `12ui next`.
|
|
3
|
-
*
|
|
4
|
-
* The batch deliberately keeps its output directory empty until it is terminal,
|
|
5
|
-
* which is correct for atomicity and disastrous for patience: a caller that can
|
|
6
|
-
* only observe an empty directory concludes the batch died. This reads the
|
|
7
|
-
* staging ledgers instead and reports what each candidate is actually doing and
|
|
8
|
-
* for how long, so the wait is legible without being interrupted.
|
|
9
|
-
*/
|
|
10
|
-
export type ImageBatchCandidateProgress = {
|
|
11
|
-
id: string;
|
|
12
|
-
status: 'complete' | 'generating' | 'prepared' | 'failed' | 'not-started';
|
|
13
|
-
outputPath: string;
|
|
14
|
-
startedAt?: string;
|
|
15
|
-
elapsedSeconds?: number;
|
|
16
|
-
typicalSeconds: number;
|
|
17
|
-
error?: string;
|
|
18
|
-
};
|
|
19
|
-
export type ImageBatchStatusReport = {
|
|
20
|
-
manifestPath: string;
|
|
21
|
-
batchAttemptFile: string;
|
|
22
|
-
completionPath: string;
|
|
23
|
-
complete: boolean;
|
|
24
|
-
/** No provider call was ever made. Not a failure, and not work in flight. */
|
|
25
|
-
neverDispatched: boolean;
|
|
26
|
-
counts: {
|
|
27
|
-
total: number;
|
|
28
|
-
complete: number;
|
|
29
|
-
generating: number;
|
|
30
|
-
prepared: number;
|
|
31
|
-
failed: number;
|
|
32
|
-
};
|
|
33
|
-
candidates: ImageBatchCandidateProgress[];
|
|
34
|
-
narrative: string;
|
|
35
|
-
nextAction?: string;
|
|
36
|
-
elapsedSeconds?: number;
|
|
37
|
-
};
|
|
38
|
-
export declare const summarizeImageBatchProgress: (args: {
|
|
39
|
-
manifestPath: string;
|
|
40
|
-
now?: number;
|
|
41
|
-
}) => Promise<ImageBatchStatusReport>;
|
|
42
|
-
//# sourceMappingURL=image-batch-status.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-batch-status.d.ts","sourceRoot":"","sources":["../src/image-batch-status.ts"],"names":[],"mappings":"AA+BA;;;;;;;;GAQG;AAEH,MAAM,MAAM,2BAA2B,GAAG;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAClG,UAAU,EAAE,2BAA2B,EAAE,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AA6CF,eAAO,MAAM,2BAA2B,GAAU,MAAM;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,KAAG,OAAO,CAAC,sBAAsB,CAqGjC,CAAC"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { OPERATION_DURATION_HINTS, elapsedAgainstTypical, formatDuration, narrateCounts, nextActionLine, secondsSince, } from './cli-progress.js';
|
|
4
|
-
import { imageBatchAttemptPath, readBatchAttempt, } from './image-generation-batch-attempt.js';
|
|
5
|
-
import { imageBatchCompletionPath, IMAGE_BATCH_COMPLETION_FILENAME, } from './image-generation-completion.js';
|
|
6
|
-
import { imageGenerationPathExists } from './image-generation-fs.js';
|
|
7
|
-
import { imageAttemptPath } from './image-generation-evidence.js';
|
|
8
|
-
import { readImageGenerationBatchManifest, resolveImageGenerationBatchRequests, } from './image-generation-batch-manifest.js';
|
|
9
|
-
import { imageGenerationStagedPaths, readImageGenerationAttemptFile, } from './image-generation-staging.js';
|
|
10
|
-
const candidateProgress = async (args) => {
|
|
11
|
-
const staged = imageGenerationStagedPaths(args.outputPath);
|
|
12
|
-
const [outputExists, finalAttempt, stagedAttempt] = await Promise.all([
|
|
13
|
-
imageGenerationPathExists(args.outputPath),
|
|
14
|
-
readImageGenerationAttemptFile(imageAttemptPath(args.outputPath)),
|
|
15
|
-
readImageGenerationAttemptFile(staged.stagedAttemptFile),
|
|
16
|
-
]);
|
|
17
|
-
const attempt = stagedAttempt ?? finalAttempt;
|
|
18
|
-
const base = {
|
|
19
|
-
id: args.id,
|
|
20
|
-
outputPath: args.outputPath,
|
|
21
|
-
typicalSeconds: OPERATION_DURATION_HINTS.imageCandidate,
|
|
22
|
-
};
|
|
23
|
-
if (outputExists && finalAttempt?.status === 'succeeded') {
|
|
24
|
-
return { ...base, status: 'complete' };
|
|
25
|
-
}
|
|
26
|
-
if (!attempt)
|
|
27
|
-
return { ...base, status: 'not-started' };
|
|
28
|
-
if (attempt.status === 'failed') {
|
|
29
|
-
return { ...base, status: 'failed', ...(attempt.error ? { error: attempt.error } : {}) };
|
|
30
|
-
}
|
|
31
|
-
if (attempt.status === 'succeeded')
|
|
32
|
-
return { ...base, status: 'complete' };
|
|
33
|
-
const startedAt = attempt.providerStartedAt ?? attempt.dispatchedAt;
|
|
34
|
-
const elapsedSeconds = secondsSince(startedAt, args.now);
|
|
35
|
-
return {
|
|
36
|
-
...base,
|
|
37
|
-
status: attempt.status === 'dispatched' ? 'generating' : 'prepared',
|
|
38
|
-
...(startedAt ? { startedAt } : {}),
|
|
39
|
-
...(elapsedSeconds === undefined ? {} : { elapsedSeconds: Math.round(elapsedSeconds) }),
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
const readCompletion = async (file) => {
|
|
43
|
-
try {
|
|
44
|
-
return JSON.parse(await readFile(file, 'utf8'));
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
export const summarizeImageBatchProgress = async (args) => {
|
|
51
|
-
const now = args.now ?? Date.now();
|
|
52
|
-
const manifestPath = path.resolve(args.manifestPath);
|
|
53
|
-
const { manifest } = await readImageGenerationBatchManifest(manifestPath);
|
|
54
|
-
const requests = resolveImageGenerationBatchRequests({ manifest, manifestPath });
|
|
55
|
-
const batchAttemptFile = imageBatchAttemptPath(manifestPath);
|
|
56
|
-
const attempt = await readBatchAttempt(batchAttemptFile);
|
|
57
|
-
const completionPath = imageBatchCompletionPath({
|
|
58
|
-
manifestPath,
|
|
59
|
-
outputPaths: requests.map((request) => request.outputPath),
|
|
60
|
-
});
|
|
61
|
-
const completion = await readCompletion(completionPath);
|
|
62
|
-
const candidates = await Promise.all(requests.map((request, index) => candidateProgress({
|
|
63
|
-
id: request.candidateId ?? String(index + 1),
|
|
64
|
-
outputPath: request.outputPath,
|
|
65
|
-
now,
|
|
66
|
-
})));
|
|
67
|
-
const counts = {
|
|
68
|
-
total: candidates.length,
|
|
69
|
-
complete: candidates.filter((candidate) => candidate.status === 'complete').length,
|
|
70
|
-
generating: candidates.filter((candidate) => candidate.status === 'generating').length,
|
|
71
|
-
prepared: candidates.filter((candidate) => (candidate.status === 'prepared' || candidate.status === 'not-started')).length,
|
|
72
|
-
failed: candidates.filter((candidate) => candidate.status === 'failed').length,
|
|
73
|
-
};
|
|
74
|
-
const elapsedSeconds = secondsSince(attempt?.dispatchedAt ?? attempt?.preparedAt, now);
|
|
75
|
-
// Nothing has been asked for yet. Reporting "0 complete, 4 waiting" with a
|
|
76
|
-
// check-again-in-30s next action would describe work that is not running, and
|
|
77
|
-
// a caller who waits on it eventually concludes generation is broken.
|
|
78
|
-
const neverDispatched = !completion
|
|
79
|
-
&& attempt === undefined
|
|
80
|
-
&& candidates.every((candidate) => candidate.status === 'not-started');
|
|
81
|
-
if (neverDispatched) {
|
|
82
|
-
return {
|
|
83
|
-
manifestPath,
|
|
84
|
-
batchAttemptFile,
|
|
85
|
-
completionPath,
|
|
86
|
-
complete: false,
|
|
87
|
-
neverDispatched: true,
|
|
88
|
-
counts,
|
|
89
|
-
candidates,
|
|
90
|
-
narrative: `This batch has never been dispatched: ${counts.total} candidate(s) are declared`
|
|
91
|
-
+ ' in the manifest and none has been requested. Nothing is running and nothing has failed.',
|
|
92
|
-
nextAction: `Run \`12ui image generate-batch --manifest ${manifestPath}\` to dispatch it.`
|
|
93
|
-
+ ` It blocks for about ${formatDuration(OPERATION_DURATION_HINTS.imageBatch)} and writes`
|
|
94
|
-
+ ' every candidate at once when it finishes.',
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
if (completion) {
|
|
98
|
-
return {
|
|
99
|
-
manifestPath,
|
|
100
|
-
batchAttemptFile,
|
|
101
|
-
completionPath,
|
|
102
|
-
complete: true,
|
|
103
|
-
neverDispatched: false,
|
|
104
|
-
counts,
|
|
105
|
-
candidates,
|
|
106
|
-
narrative: `Batch finished ${completion.status}: ${completion.succeededCount} of`
|
|
107
|
-
+ ` ${completion.candidateCount} candidate(s) generated. Every PNG, its attempt evidence,`
|
|
108
|
-
+ ` and ${IMAGE_BATCH_COMPLETION_FILENAME} are on disk.`,
|
|
109
|
-
...(elapsedSeconds === undefined ? {} : { elapsedSeconds: Math.round(elapsedSeconds) }),
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
const longest = Math.max(0, ...candidates.map((candidate) => candidate.elapsedSeconds ?? 0));
|
|
113
|
-
return {
|
|
114
|
-
manifestPath,
|
|
115
|
-
batchAttemptFile,
|
|
116
|
-
completionPath,
|
|
117
|
-
complete: false,
|
|
118
|
-
neverDispatched: false,
|
|
119
|
-
counts,
|
|
120
|
-
candidates,
|
|
121
|
-
narrative: `candidates: ${narrateCounts([
|
|
122
|
-
{ label: 'complete', count: counts.complete },
|
|
123
|
-
{
|
|
124
|
-
label: 'generating',
|
|
125
|
-
count: counts.generating,
|
|
126
|
-
...(counts.generating > 0
|
|
127
|
-
? { detail: elapsedAgainstTypical(longest, OPERATION_DURATION_HINTS.imageCandidate) }
|
|
128
|
-
: {}),
|
|
129
|
-
},
|
|
130
|
-
{ label: 'waiting to start', count: counts.prepared },
|
|
131
|
-
{ label: 'failed', count: counts.failed },
|
|
132
|
-
])}${elapsedSeconds === undefined ? '' : ` — ${formatDuration(elapsedSeconds)} into the batch`}`,
|
|
133
|
-
nextAction: nextActionLine({
|
|
134
|
-
what: 'A batch of four candidates',
|
|
135
|
-
typicalSeconds: OPERATION_DURATION_HINTS.imageBatch,
|
|
136
|
-
statusCommand: `12ui next ${manifestPath}`,
|
|
137
|
-
...(elapsedSeconds === undefined ? {} : { elapsedSeconds }),
|
|
138
|
-
waitHint: 'or leave `12ui image generate-batch` running, which blocks until every candidate lands',
|
|
139
|
-
}),
|
|
140
|
-
...(elapsedSeconds === undefined ? {} : { elapsedSeconds: Math.round(elapsedSeconds) }),
|
|
141
|
-
};
|
|
142
|
-
};
|
|
143
|
-
//# sourceMappingURL=image-batch-status.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-batch-status.js","sourceRoot":"","sources":["../src/image-batch-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { ImageGenerationResult } from './image-generation-run.js';
|
|
2
|
-
import type { ImageGenerationBatchAccounting } from './image-generation-usage.js';
|
|
3
|
-
import type { ImageProviderPreflight } from './image-provider-preflight.js';
|
|
4
|
-
export type ImageBatchAttempt = {
|
|
5
|
-
version: 2;
|
|
6
|
-
status: 'prepared' | 'dispatched' | 'succeeded' | 'failed';
|
|
7
|
-
manifestPath: string;
|
|
8
|
-
manifestSha256: string;
|
|
9
|
-
projectRoot: string;
|
|
10
|
-
requestedProvider: 'auto' | 'codex' | 'openai';
|
|
11
|
-
provider: ImageProviderPreflight['provider'];
|
|
12
|
-
model: ImageProviderPreflight['model'];
|
|
13
|
-
referenceMode: 'inspiration' | 'preserve-structure';
|
|
14
|
-
candidateIds: string[];
|
|
15
|
-
candidateAttemptFiles: string[];
|
|
16
|
-
preparedAt: string;
|
|
17
|
-
dispatchedAt?: string;
|
|
18
|
-
completedAt?: string;
|
|
19
|
-
completionPath?: string;
|
|
20
|
-
resumedAt?: string[];
|
|
21
|
-
results?: ImageGenerationResult[];
|
|
22
|
-
accounting?: ImageGenerationBatchAccounting;
|
|
23
|
-
errors?: string[];
|
|
24
|
-
};
|
|
25
|
-
export declare const imageBatchAttemptPath: (manifestPath: string) => string;
|
|
26
|
-
export declare const writeBatchAttempt: (file: string, attempt: ImageBatchAttempt, exclusive?: boolean) => Promise<void>;
|
|
27
|
-
export declare const readBatchAttempt: (file: string) => Promise<ImageBatchAttempt | undefined>;
|
|
28
|
-
//# sourceMappingURL=image-generation-batch-attempt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-generation-batch-attempt.d.ts","sourceRoot":"","sources":["../src/image-generation-batch-attempt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC/C,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC7C,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACvC,aAAa,EAAE,aAAa,GAAG,oBAAoB,CAAC;IACpD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,UAAU,CAAC,EAAE,8BAA8B,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,cAAc,MAAM,KAAG,MAE5D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,MAAM,EACZ,SAAS,iBAAiB,EAC1B,mBAAiB,KAChB,OAAO,CAAC,IAAI,CAqBd,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,KACX,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAevC,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
export const imageBatchAttemptPath = (manifestPath) => (`${manifestPath}.attempt.json`);
|
|
5
|
-
export const writeBatchAttempt = async (file, attempt, exclusive = false) => {
|
|
6
|
-
await mkdir(path.dirname(file), { recursive: true });
|
|
7
|
-
if (exclusive) {
|
|
8
|
-
await writeFile(file, `${JSON.stringify(attempt, null, 2)}\n`, {
|
|
9
|
-
encoding: 'utf8',
|
|
10
|
-
flag: 'wx',
|
|
11
|
-
mode: 0o600,
|
|
12
|
-
});
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
const temporary = `${file}.${randomUUID()}.tmp`;
|
|
16
|
-
try {
|
|
17
|
-
await writeFile(temporary, `${JSON.stringify(attempt, null, 2)}\n`, {
|
|
18
|
-
encoding: 'utf8',
|
|
19
|
-
flag: 'wx',
|
|
20
|
-
mode: 0o600,
|
|
21
|
-
});
|
|
22
|
-
await rename(temporary, file);
|
|
23
|
-
}
|
|
24
|
-
finally {
|
|
25
|
-
await rm(temporary, { force: true });
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
export const readBatchAttempt = async (file) => {
|
|
29
|
-
let source;
|
|
30
|
-
try {
|
|
31
|
-
source = await readFile(file, 'utf8');
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
if (error.code === 'ENOENT')
|
|
35
|
-
return undefined;
|
|
36
|
-
throw error;
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
const value = JSON.parse(source);
|
|
40
|
-
if (typeof value !== 'object' || value === null)
|
|
41
|
-
return undefined;
|
|
42
|
-
return value;
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=image-generation-batch-attempt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-generation-batch-attempt.js","sourceRoot":"","sources":["../src/image-generation-batch-attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,IAAI,MAAM,WAAW,CAAC;AA4B7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAoB,EAAU,EAAE,CAAC,CACrE,GAAG,YAAY,eAAe,CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,IAAY,EACZ,OAA0B,EAC1B,SAAS,GAAG,KAAK,EACF,EAAE;IACjB,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAC7D,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,MAAM,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAClE,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,IAAY,EAC4B,EAAE;IAC1C,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACzE,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAC;QAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAClE,OAAO,KAA0B,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC"}
|