@12ui/design 0.2.27 → 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-completion.d.ts.map +1 -1
- package/dist/branch-completion.js +37 -14
- package/dist/branch-completion.js.map +1 -1
- package/dist/branch-execution.d.ts.map +1 -1
- package/dist/branch-execution.js +28 -8
- 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 +9 -8
- package/dist/branch-page-conversion.d.ts.map +1 -1
- package/dist/branch-page-conversion.js +8 -2
- 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 +6 -0
- package/dist/branch-plan.d.ts.map +1 -1
- package/dist/branch-plan.js +6 -1
- 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 +33 -8
- package/dist/branch-progress.js.map +1 -1
- package/dist/branch-run-record.d.ts +9 -0
- 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.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/package-client.d.ts +30 -0
- package/dist/package-client.d.ts.map +1 -1
- 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 +13 -0
- 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/draft-run.js
CHANGED
|
@@ -1,136 +1,111 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
1
|
+
import { mkdir } from 'node:fs/promises';
|
|
3
2
|
import path from 'node:path';
|
|
4
3
|
import { downloadCorpusInspiration } from './cli-corpus-run.js';
|
|
5
|
-
import {
|
|
4
|
+
import { INSPIRATION_MANIFEST_FILE, } from './cli-corpus-types.js';
|
|
6
5
|
import { loadCorpusReferenceImage } from './cli-corpus-reference-image.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { DRAFT_CANDIDATE_IDS,
|
|
10
|
-
/**
|
|
11
|
-
* Everything `12ui draft` does before a single image is bought: one corpus
|
|
12
|
-
* search, four references paired one-to-one with four candidates, a generation
|
|
13
|
-
* manifest with derived keys, and a durable record of all of it.
|
|
14
|
-
*
|
|
15
|
-
* This is the step that used to be five screens of skill prose. Each rule it
|
|
16
|
-
* encodes was previously an instruction a model could paraphrase away.
|
|
17
|
-
*/
|
|
6
|
+
import { draftCorpusKey } from './draft-identity.js';
|
|
7
|
+
import { hostedDraftRunKey, } from './hosted-draft-identity.js';
|
|
8
|
+
import { DRAFT_CANDIDATE_IDS, writeDraftRecord, } from './draft-workspace.js';
|
|
9
|
+
/** Hosted draft preparation: one corpus search, one service run claim, no local provider. */
|
|
18
10
|
export const DRAFT_CANDIDATE_COUNT = 4;
|
|
19
|
-
|
|
11
|
+
export const DRAFT_CANDIDATE_COUNT_MINIMUM = 2;
|
|
12
|
+
export const DRAFT_CANDIDATE_COUNT_MAXIMUM = DRAFT_CANDIDATE_IDS.length;
|
|
20
13
|
const DRAFT_CORPUS_MODE = 'balanced';
|
|
21
|
-
/**
|
|
22
|
-
* The one corpus key a draft run spends against. It lives here rather than
|
|
23
|
-
* inline at the call site because `12ui draft` now derives it a second time,
|
|
24
|
-
* before the run directory exists, to decide whether an incomplete previous
|
|
25
|
-
* directory is the SAME run and can be continued in place.
|
|
26
|
-
*/
|
|
27
14
|
export const draftRunCorpusKey = (args) => draftCorpusKey({
|
|
28
15
|
query: args.query,
|
|
29
16
|
mode: DRAFT_CORPUS_MODE,
|
|
30
|
-
count: DRAFT_CANDIDATE_COUNT,
|
|
17
|
+
count: args.candidateCount ?? DRAFT_CANDIDATE_COUNT,
|
|
31
18
|
redesignSourceSha256: args.redesignSourceSha256 ?? null,
|
|
32
19
|
});
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
const readInspirationItems = async (referencesDir) => {
|
|
42
|
-
try {
|
|
43
|
-
const evidence = JSON.parse(await readFile(path.join(referencesDir, INSPIRATION_EVIDENCE_FILE), 'utf8'));
|
|
44
|
-
return Object.fromEntries((evidence.response?.items ?? []).map((item) => [
|
|
45
|
-
item.id,
|
|
46
|
-
{ uiType: item.uiType ?? null, description: item.description ?? null },
|
|
47
|
-
]));
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Provenance labels are a convenience; their absence never blocks a run.
|
|
51
|
-
return {};
|
|
20
|
+
const draftSlotFor = (index) => String.fromCharCode('a'.charCodeAt(0) + index);
|
|
21
|
+
const assertClaimedSlots = (expected, actual) => {
|
|
22
|
+
const expectedSlots = expected.map((candidate) => candidate.slot);
|
|
23
|
+
const actualSlots = actual.candidates.map((candidate) => candidate.slot);
|
|
24
|
+
if (JSON.stringify(expectedSlots) !== JSON.stringify(actualSlots)) {
|
|
25
|
+
throw new Error(`Hosted draft ${actual.id} returned slots ${actualSlots.join(', ') || '(none)'};`
|
|
26
|
+
+ ` expected ${expectedSlots.join(', ')}`);
|
|
52
27
|
}
|
|
53
28
|
};
|
|
54
29
|
export const prepareDraftRun = async (input) => {
|
|
55
30
|
const now = input.now ?? (() => new Date());
|
|
56
31
|
const manifest = await downloadCorpusInspiration({
|
|
57
32
|
client: input.client,
|
|
58
|
-
request: { q: input.query, mode: DRAFT_CORPUS_MODE, k:
|
|
33
|
+
request: { q: input.query, mode: DRAFT_CORPUS_MODE, k: input.candidateCount },
|
|
59
34
|
outDir: input.paths.referencesDir,
|
|
60
35
|
origin: input.origin,
|
|
61
36
|
idempotencyKey: draftRunCorpusKey({
|
|
62
37
|
query: input.query,
|
|
38
|
+
candidateCount: input.candidateCount,
|
|
63
39
|
redesignSourceSha256: input.redesignSource?.sha256 ?? null,
|
|
64
40
|
}),
|
|
65
|
-
// A redesign conditions RETRIEVAL on the existing screen; whether it also
|
|
66
|
-
// conditions generation is the difference between the two modes below.
|
|
67
41
|
...(input.redesignSource
|
|
68
42
|
? { referenceImage: await loadCorpusReferenceImage(input.redesignSource.path) }
|
|
69
43
|
: {}),
|
|
70
44
|
now,
|
|
71
45
|
});
|
|
72
46
|
const references = [...manifest.references].sort((left, right) => left.ordinal - right.ordinal);
|
|
73
|
-
if (references.length <
|
|
47
|
+
if (references.length < input.candidateCount) {
|
|
74
48
|
throw new Error(`The corpus returned ${references.length} reference(s) for this query and a draft needs`
|
|
75
|
-
+ ` ${
|
|
76
|
-
+ '
|
|
49
|
+
+ ` ${input.candidateCount}. Broaden the concept and run 12ui draft again; no hosted image`
|
|
50
|
+
+ ' slot has been dispatched.');
|
|
77
51
|
}
|
|
78
|
-
const labels = await readInspirationItems(input.paths.referencesDir);
|
|
79
|
-
// A reskin conditions every candidate on the source and takes its diversity
|
|
80
|
-
// from nothing else; the other modes pair one corpus image per candidate.
|
|
81
52
|
const reskin = input.mode === 'structure-preserving-reskin';
|
|
82
|
-
const
|
|
83
|
-
|
|
53
|
+
const requestCandidates = DRAFT_CANDIDATE_IDS
|
|
54
|
+
.slice(0, input.candidateCount)
|
|
55
|
+
.map((_id, index) => reskin
|
|
56
|
+
? { slot: draftSlotFor(index), useReferenceImage: true }
|
|
57
|
+
: { slot: draftSlotFor(index), referenceId: references[index].id });
|
|
58
|
+
let referenceImage;
|
|
59
|
+
if (reskin) {
|
|
60
|
+
if (!input.redesignSource)
|
|
61
|
+
throw new Error('A reskin requires --redesign-source');
|
|
62
|
+
const loaded = await loadCorpusReferenceImage(input.redesignSource.path);
|
|
63
|
+
referenceImage = {
|
|
64
|
+
data: Buffer.from(loaded.input.bytes).toString('base64'),
|
|
65
|
+
mediaType: loaded.input.mediaType,
|
|
66
|
+
sha256: loaded.evidence.sha256,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const hostedMode = reskin ? 'preserve-structure' : 'inspiration';
|
|
70
|
+
const idempotencyKey = hostedDraftRunKey({
|
|
71
|
+
concept: input.query,
|
|
72
|
+
aspect: input.aspect,
|
|
73
|
+
mode: hostedMode,
|
|
74
|
+
candidates: requestCandidates,
|
|
75
|
+
...(referenceImage ? { referenceImageSha256: referenceImage.sha256 } : {}),
|
|
76
|
+
});
|
|
77
|
+
const hosted = await input.hostedClient.startCreateRun({
|
|
78
|
+
concept: input.query,
|
|
79
|
+
aspect: input.aspect,
|
|
80
|
+
mode: hostedMode,
|
|
81
|
+
candidates: requestCandidates,
|
|
82
|
+
...(referenceImage ? { referenceImage } : {}),
|
|
83
|
+
}, idempotencyKey);
|
|
84
|
+
assertClaimedSlots(requestCandidates, hosted);
|
|
84
85
|
await mkdir(input.paths.candidatesDir, { recursive: true });
|
|
85
|
-
const candidates = DRAFT_CANDIDATE_IDS
|
|
86
|
+
const candidates = DRAFT_CANDIDATE_IDS
|
|
87
|
+
.slice(0, input.candidateCount)
|
|
88
|
+
.map((id, index) => {
|
|
86
89
|
const reference = references[index];
|
|
87
|
-
const
|
|
88
|
-
? { path: input.redesignSource.path, sha256: input.redesignSource.sha256 }
|
|
89
|
-
: { path: reference.file, sha256: reference.sha256 };
|
|
90
|
+
const serviceCandidate = hosted.candidates[index];
|
|
90
91
|
return {
|
|
91
92
|
id,
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
promptSha256: promptDigest(prompt),
|
|
93
|
+
slot: serviceCandidate.slot,
|
|
94
|
+
direction: serviceCandidate.direction,
|
|
95
95
|
outputPath: path.join(input.paths.candidatesDir, `${id}.png`),
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
// In a reskin every candidate shares the source, so the paired corpus
|
|
100
|
-
// reference still distinguishes the four purchases.
|
|
101
|
-
referenceSha256: reference.sha256,
|
|
102
|
-
aspect: input.aspect,
|
|
103
|
-
referenceMode,
|
|
104
|
-
}),
|
|
105
|
-
referenceId: reference.id,
|
|
106
|
-
referencePath: generationReference.path,
|
|
107
|
-
referenceSha256: generationReference.sha256,
|
|
96
|
+
referenceId: reskin ? null : reference.id,
|
|
97
|
+
referencePath: reskin ? input.redesignSource.path : reference.file,
|
|
98
|
+
referenceSha256: reskin ? input.redesignSource.sha256 : reference.sha256,
|
|
108
99
|
};
|
|
109
100
|
});
|
|
110
|
-
const batchManifest = {
|
|
111
|
-
version: 1,
|
|
112
|
-
projectRoot: input.projectRoot,
|
|
113
|
-
provider: input.provider,
|
|
114
|
-
aspect: input.aspect,
|
|
115
|
-
referenceMode,
|
|
116
|
-
candidates: candidates.map((candidate) => ({
|
|
117
|
-
id: candidate.id,
|
|
118
|
-
prompt: candidate.prompt,
|
|
119
|
-
reference: path.relative(input.paths.runDir, candidate.referencePath),
|
|
120
|
-
out: path.relative(input.paths.runDir, candidate.outputPath),
|
|
121
|
-
idempotencyKey: candidate.idempotencyKey,
|
|
122
|
-
})),
|
|
123
|
-
};
|
|
124
|
-
const serialized = `${JSON.stringify(batchManifest, null, 2)}\n`;
|
|
125
|
-
await writeFile(input.paths.generationManifest, serialized, { encoding: 'utf8', mode: 0o600 });
|
|
126
101
|
const record = {
|
|
127
|
-
version:
|
|
102
|
+
version: 2,
|
|
128
103
|
createdAt: now().toISOString(),
|
|
129
104
|
runDir: input.paths.runDir,
|
|
130
105
|
query: input.query,
|
|
131
106
|
mode: input.mode,
|
|
132
107
|
aspect: input.aspect,
|
|
133
|
-
referenceMode,
|
|
108
|
+
referenceMode: reskin ? 'preserve-structure' : 'inspiration',
|
|
134
109
|
origin: input.origin,
|
|
135
110
|
redesignSource: input.redesignSource
|
|
136
111
|
? { path: input.redesignSource.path, sha256: input.redesignSource.sha256 }
|
|
@@ -149,16 +124,13 @@ export const prepareDraftRun = async (input) => {
|
|
|
149
124
|
aspect: reference.aspect,
|
|
150
125
|
})),
|
|
151
126
|
},
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
provider: input.provider,
|
|
127
|
+
hosted: {
|
|
128
|
+
runId: hosted.id,
|
|
129
|
+
idempotencyKey,
|
|
156
130
|
candidates,
|
|
157
131
|
},
|
|
158
132
|
};
|
|
159
133
|
await writeDraftRecord(input.paths.draftRecord, record);
|
|
160
134
|
return record;
|
|
161
135
|
};
|
|
162
|
-
export const draftRunPaths = draftPaths;
|
|
163
|
-
export { draftCandidateIdFor };
|
|
164
136
|
//# sourceMappingURL=draft-run.js.map
|
package/dist/draft-run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft-run.js","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"draft-run.js","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
export declare const DRAFT_RECORD_FILENAME = "draft.json";
|
|
13
13
|
export declare const DRAFT_REFERENCES_DIRECTORY = "references";
|
|
14
14
|
export declare const DRAFT_CANDIDATES_DIRECTORY = "candidates";
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
15
|
+
export declare const DRAFT_DISPATCH_ATTEMPT_FILENAME = "draft.dispatch.json";
|
|
16
|
+
export declare const DRAFT_COMPLETION_FILENAME = "draft.complete.json";
|
|
17
|
+
export declare const DRAFT_LOG_FILENAME = "draft.log";
|
|
17
18
|
export declare const DRAFT_BRANCH_DIRECTORY = "branch";
|
|
18
|
-
export declare const DRAFT_CANDIDATE_IDS: readonly ["A", "B", "C", "D"];
|
|
19
|
+
export declare const DRAFT_CANDIDATE_IDS: readonly ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"];
|
|
19
20
|
export type DraftCandidateId = typeof DRAFT_CANDIDATE_IDS[number];
|
|
20
21
|
export type DraftMode = 'new-interface' | 'exploratory-redesign' | 'structure-preserving-reskin';
|
|
21
22
|
/** `Editorial architecture homepage` -> `editorial-architecture-homepage`. */
|
|
@@ -24,9 +25,10 @@ export type DraftPaths = {
|
|
|
24
25
|
runDir: string;
|
|
25
26
|
referencesDir: string;
|
|
26
27
|
candidatesDir: string;
|
|
27
|
-
generationManifest: string;
|
|
28
28
|
draftRecord: string;
|
|
29
|
-
|
|
29
|
+
dispatchAttempt: string;
|
|
30
|
+
completion: string;
|
|
31
|
+
log: string;
|
|
30
32
|
branchDir: string;
|
|
31
33
|
};
|
|
32
34
|
export declare const draftPaths: (runDir: string) => DraftPaths;
|
|
@@ -37,22 +39,17 @@ export declare const createDraftWorkspace: (args: {
|
|
|
37
39
|
}) => Promise<DraftPaths>;
|
|
38
40
|
export type DraftCandidateRecord = {
|
|
39
41
|
id: DraftCandidateId;
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
* the direction, and describing it back to the model would flatten it.
|
|
44
|
-
*/
|
|
42
|
+
/** Stable lower-case slot used by the hosted create API. */
|
|
43
|
+
slot: string;
|
|
44
|
+
/** Service-derived, visibly grounded direction. */
|
|
45
45
|
direction: string;
|
|
46
|
-
prompt: string;
|
|
47
|
-
promptSha256: string;
|
|
48
46
|
outputPath: string;
|
|
49
|
-
idempotencyKey: string;
|
|
50
47
|
referenceId: string | null;
|
|
51
48
|
referencePath: string;
|
|
52
49
|
referenceSha256: string;
|
|
53
50
|
};
|
|
54
51
|
export type DraftRecord = {
|
|
55
|
-
version:
|
|
52
|
+
version: 2;
|
|
56
53
|
createdAt: string;
|
|
57
54
|
runDir: string;
|
|
58
55
|
query: string;
|
|
@@ -78,13 +75,24 @@ export type DraftRecord = {
|
|
|
78
75
|
aspect: string;
|
|
79
76
|
}[];
|
|
80
77
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
provider: 'auto' | 'codex' | 'openai';
|
|
78
|
+
hosted: {
|
|
79
|
+
runId: string;
|
|
80
|
+
idempotencyKey: string;
|
|
85
81
|
candidates: DraftCandidateRecord[];
|
|
86
82
|
};
|
|
87
83
|
};
|
|
84
|
+
export type DraftCompletionRecord = {
|
|
85
|
+
version: 1;
|
|
86
|
+
runId: string;
|
|
87
|
+
completedAt: string;
|
|
88
|
+
candidates: {
|
|
89
|
+
slot: string;
|
|
90
|
+
path: string;
|
|
91
|
+
sha256: string;
|
|
92
|
+
bytes: number;
|
|
93
|
+
}[];
|
|
94
|
+
};
|
|
88
95
|
export declare const writeDraftRecord: (file: string, record: DraftRecord) => Promise<void>;
|
|
96
|
+
export declare const writeDraftCompletion: (file: string, record: DraftCompletionRecord) => Promise<void>;
|
|
89
97
|
export declare const readDraftRecord: (file: string) => Promise<DraftRecord | undefined>;
|
|
90
98
|
//# sourceMappingURL=draft-workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft-workspace.d.ts","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAClD,eAAO,MAAM,0BAA0B,eAAe,CAAC;AACvD,eAAO,MAAM,0BAA0B,eAAe,CAAC;AACvD,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"draft-workspace.d.ts","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/draft-workspace.js
CHANGED
|
@@ -15,10 +15,14 @@ import path from 'node:path';
|
|
|
15
15
|
export const DRAFT_RECORD_FILENAME = 'draft.json';
|
|
16
16
|
export const DRAFT_REFERENCES_DIRECTORY = 'references';
|
|
17
17
|
export const DRAFT_CANDIDATES_DIRECTORY = 'candidates';
|
|
18
|
-
export const
|
|
19
|
-
export const
|
|
18
|
+
export const DRAFT_DISPATCH_ATTEMPT_FILENAME = 'draft.dispatch.json';
|
|
19
|
+
export const DRAFT_COMPLETION_FILENAME = 'draft.complete.json';
|
|
20
|
+
export const DRAFT_LOG_FILENAME = 'draft.log';
|
|
20
21
|
export const DRAFT_BRANCH_DIRECTORY = 'branch';
|
|
21
|
-
export const DRAFT_CANDIDATE_IDS = [
|
|
22
|
+
export const DRAFT_CANDIDATE_IDS = [
|
|
23
|
+
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
|
|
24
|
+
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
|
|
25
|
+
];
|
|
22
26
|
/** `Editorial architecture homepage` -> `editorial-architecture-homepage`. */
|
|
23
27
|
export const draftSlug = (query) => {
|
|
24
28
|
const slug = query
|
|
@@ -39,9 +43,10 @@ export const draftPaths = (runDir) => {
|
|
|
39
43
|
runDir: resolved,
|
|
40
44
|
referencesDir: path.join(resolved, DRAFT_REFERENCES_DIRECTORY),
|
|
41
45
|
candidatesDir: path.join(resolved, DRAFT_CANDIDATES_DIRECTORY),
|
|
42
|
-
generationManifest: path.join(resolved, DRAFT_GENERATION_MANIFEST),
|
|
43
46
|
draftRecord: path.join(resolved, DRAFT_RECORD_FILENAME),
|
|
44
|
-
|
|
47
|
+
dispatchAttempt: path.join(resolved, DRAFT_DISPATCH_ATTEMPT_FILENAME),
|
|
48
|
+
completion: path.join(resolved, DRAFT_COMPLETION_FILENAME),
|
|
49
|
+
log: path.join(resolved, DRAFT_LOG_FILENAME),
|
|
45
50
|
branchDir: path.join(resolved, DRAFT_BRANCH_DIRECTORY),
|
|
46
51
|
};
|
|
47
52
|
};
|
|
@@ -53,6 +58,12 @@ export const createDraftWorkspace = async (args) => {
|
|
|
53
58
|
export const writeDraftRecord = async (file, record) => {
|
|
54
59
|
await writeFile(file, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
55
60
|
};
|
|
61
|
+
export const writeDraftCompletion = async (file, record) => {
|
|
62
|
+
await writeFile(file, `${JSON.stringify(record, null, 2)}\n`, {
|
|
63
|
+
encoding: 'utf8',
|
|
64
|
+
mode: 0o600,
|
|
65
|
+
});
|
|
66
|
+
};
|
|
56
67
|
export const readDraftRecord = async (file) => {
|
|
57
68
|
try {
|
|
58
69
|
return JSON.parse(await readFile(file, 'utf8'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"draft-workspace.js","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC;AACvD,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,
|
|
1
|
+
{"version":3,"file":"draft-workspace.js","sourceRoot":"","sources":["../src/draft-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Stable identity for one service-owned draft purchase. */
|
|
2
|
+
export declare const HOSTED_DRAFT_WORKFLOW_REVISION = "hosted-draft-v1";
|
|
3
|
+
export type HostedDraftCandidateSpecInput = {
|
|
4
|
+
slot: string;
|
|
5
|
+
direction?: string;
|
|
6
|
+
referenceId?: string;
|
|
7
|
+
useReferenceImage?: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* The same hosted request always claims the same run, however its candidate
|
|
11
|
+
* objects happened to be ordered or spaced by the caller.
|
|
12
|
+
*/
|
|
13
|
+
export declare const hostedDraftRunKey: (args: {
|
|
14
|
+
concept: string;
|
|
15
|
+
aspect: string;
|
|
16
|
+
mode?: string;
|
|
17
|
+
candidates: readonly HostedDraftCandidateSpecInput[];
|
|
18
|
+
referenceImageSha256?: string;
|
|
19
|
+
}) => string;
|
|
20
|
+
//# sourceMappingURL=hosted-draft-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-draft-identity.d.ts","sourceRoot":"","sources":["../src/hosted-draft-identity.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,eAAO,MAAM,8BAA8B,oBAAoB,CAAC;AAEhE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAaF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,KAAG,MAcO,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
/** Stable identity for one service-owned draft purchase. */
|
|
3
|
+
export const HOSTED_DRAFT_WORKFLOW_REVISION = 'hosted-draft-v1';
|
|
4
|
+
const shortDigest = (value, characters = 32) => (createHash('sha256').update(value).digest('hex').slice(0, characters));
|
|
5
|
+
const canonicalCandidate = (candidate) => [
|
|
6
|
+
candidate.slot,
|
|
7
|
+
candidate.direction ?? '',
|
|
8
|
+
candidate.referenceId ?? '',
|
|
9
|
+
candidate.useReferenceImage === true ? 'upload' : '',
|
|
10
|
+
].join('\0');
|
|
11
|
+
/**
|
|
12
|
+
* The same hosted request always claims the same run, however its candidate
|
|
13
|
+
* objects happened to be ordered or spaced by the caller.
|
|
14
|
+
*/
|
|
15
|
+
export const hostedDraftRunKey = (args) => [
|
|
16
|
+
'draft',
|
|
17
|
+
'hosted-v1',
|
|
18
|
+
shortDigest([
|
|
19
|
+
args.concept,
|
|
20
|
+
args.aspect,
|
|
21
|
+
args.mode ?? 'inspiration',
|
|
22
|
+
args.referenceImageSha256 ?? '',
|
|
23
|
+
[...args.candidates]
|
|
24
|
+
.sort((left, right) => left.slot.localeCompare(right.slot))
|
|
25
|
+
.map(canonicalCandidate)
|
|
26
|
+
.join('\u0001'),
|
|
27
|
+
HOSTED_DRAFT_WORKFLOW_REVISION,
|
|
28
|
+
].join('\u0002')),
|
|
29
|
+
].join(':');
|
|
30
|
+
//# sourceMappingURL=hosted-draft-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-draft-identity.js","sourceRoot":"","sources":["../src/hosted-draft-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,8BAA8B,GAAG,iBAAiB,CAAC;AAShE,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,MAAM,kBAAkB,GAAG,CAAC,SAAwC,EAAU,EAAE,CAAC;IAC/E,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,IAAI,CAAC,CAAC;AAEb;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAMjC,EAAU,EAAE,CAAC;IACZ,OAAO;IACP,WAAW;IACX,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,QAAQ,CAAC;QACjB,8BAA8B;KAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;CAClB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { BranchRunEnvelope, TwelveUiBranchClient } from './branch-client.js';
|
|
2
|
+
/** One hosted draft image, generated by the service rather than this machine. */
|
|
3
|
+
export declare const HOSTED_DRAFT_CANDIDATE_DURATION_SECONDS: 150;
|
|
4
|
+
export type HostedDraftCounts = {
|
|
5
|
+
pending: number;
|
|
6
|
+
dispatched: number;
|
|
7
|
+
succeeded: number;
|
|
8
|
+
failed: number;
|
|
9
|
+
};
|
|
10
|
+
export declare const summarizeHostedDraftRun: (run: BranchRunEnvelope) => HostedDraftCounts;
|
|
11
|
+
export declare const hostedDraftRunIsSettled: (run: BranchRunEnvelope) => boolean;
|
|
12
|
+
type HostedDraftDispatchClient = Pick<TwelveUiBranchClient, 'getRun' | 'dispatchScreen'>;
|
|
13
|
+
export type HostedDraftDispatchResult = {
|
|
14
|
+
run: BranchRunEnvelope;
|
|
15
|
+
dispatched: string[];
|
|
16
|
+
failures: {
|
|
17
|
+
slot: string;
|
|
18
|
+
error: string;
|
|
19
|
+
}[];
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Dispatch only slots which have never started.
|
|
23
|
+
*
|
|
24
|
+
* `dispatched`, `succeeded`, and `failed` are all durable service states. A
|
|
25
|
+
* resume observes them and never posts those slots again; the service remains
|
|
26
|
+
* the paid-effect and ledger authority.
|
|
27
|
+
*/
|
|
28
|
+
export declare const dispatchHostedDraftSlots: (args: {
|
|
29
|
+
client: HostedDraftDispatchClient;
|
|
30
|
+
runId: string;
|
|
31
|
+
}) => Promise<HostedDraftDispatchResult>;
|
|
32
|
+
type HostedDraftReadClient = Pick<TwelveUiBranchClient, 'getRun'>;
|
|
33
|
+
export declare const waitForHostedDraftRun: (args: {
|
|
34
|
+
client: HostedDraftReadClient;
|
|
35
|
+
run: BranchRunEnvelope;
|
|
36
|
+
timeoutMs?: number;
|
|
37
|
+
pollIntervalMs?: number;
|
|
38
|
+
now?: () => number;
|
|
39
|
+
sleep?: (milliseconds: number) => Promise<void>;
|
|
40
|
+
onProgress?: (run: BranchRunEnvelope) => void;
|
|
41
|
+
}) => Promise<BranchRunEnvelope>;
|
|
42
|
+
type HostedDraftDownloadClient = Pick<TwelveUiBranchClient, 'downloadScreen'>;
|
|
43
|
+
export type HostedDraftCandidatePath = {
|
|
44
|
+
slot: string;
|
|
45
|
+
outputPath: string;
|
|
46
|
+
};
|
|
47
|
+
export type HostedDraftDownloadedFile = {
|
|
48
|
+
slot: string;
|
|
49
|
+
path: string;
|
|
50
|
+
sha256: string;
|
|
51
|
+
bytes: number;
|
|
52
|
+
};
|
|
53
|
+
/** Download settled service images without overwriting a changed local artifact. */
|
|
54
|
+
export declare const downloadHostedDraftCandidates: (args: {
|
|
55
|
+
client: HostedDraftDownloadClient;
|
|
56
|
+
run: BranchRunEnvelope;
|
|
57
|
+
candidates: readonly HostedDraftCandidatePath[];
|
|
58
|
+
}) => Promise<HostedDraftDownloadedFile[]>;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=hosted-draft-run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hosted-draft-run.d.ts","sourceRoot":"","sources":["../src/hosted-draft-run.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAG5B,iFAAiF;AACjF,eAAO,MAAM,uCAAuC,KAEnD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,KAAK,iBAAiB,KAAG,iBAIhE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,KAAK,iBAAiB,KAAG,OAGhE,CAAC;AAEF,KAAK,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC;AAEzF,MAAM,MAAM,yBAAyB,GAAG;IACtC,GAAG,EAAE,iBAAiB,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,GAAU,MAAM;IACnD,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,OAAO,CAAC,yBAAyB,CAqBpC,CAAC;AAEF,KAAK,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAElE,eAAO,MAAM,qBAAqB,GAAU,MAAM;IAChD,MAAM,EAAE,qBAAqB,CAAC;IAC9B,GAAG,EAAE,iBAAiB,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC/C,KAAG,OAAO,CAAC,iBAAiB,CAY5B,CAAC;AAEF,KAAK,yBAAyB,GAAG,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5E,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAsBF,oFAAoF;AACpF,eAAO,MAAM,6BAA6B,GAAU,MAAM;IACxD,MAAM,EAAE,yBAAyB,CAAC;IAClC,GAAG,EAAE,iBAAiB,CAAC;IACvB,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;CACjD,KAAG,OAAO,CAAC,yBAAyB,EAAE,CAoBtC,CAAC"}
|