@12ui/design 0.2.20 → 0.2.21

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.
Files changed (100) hide show
  1. package/dist/branch-progress.js +1 -1
  2. package/dist/branch-progress.js.map +1 -1
  3. package/dist/cli-auth-command.d.ts.map +1 -1
  4. package/dist/cli-auth-command.js +7 -1
  5. package/dist/cli-auth-command.js.map +1 -1
  6. package/dist/cli-branch-command.d.ts +0 -1
  7. package/dist/cli-branch-command.d.ts.map +1 -1
  8. package/dist/cli-branch-command.js +16 -41
  9. package/dist/cli-branch-command.js.map +1 -1
  10. package/dist/cli-capabilities.d.ts +6 -5
  11. package/dist/cli-capabilities.d.ts.map +1 -1
  12. package/dist/cli-capabilities.js +6 -5
  13. package/dist/cli-capabilities.js.map +1 -1
  14. package/dist/cli-cli-command.d.ts.map +1 -1
  15. package/dist/cli-cli-command.js +7 -1
  16. package/dist/cli-cli-command.js.map +1 -1
  17. package/dist/cli-convert-command.d.ts +12 -0
  18. package/dist/cli-convert-command.d.ts.map +1 -1
  19. package/dist/cli-convert-command.js +70 -12
  20. package/dist/cli-convert-command.js.map +1 -1
  21. package/dist/cli-corpus-command.d.ts.map +1 -1
  22. package/dist/cli-corpus-command.js +7 -6
  23. package/dist/cli-corpus-command.js.map +1 -1
  24. package/dist/cli-create-command.d.ts +35 -1
  25. package/dist/cli-create-command.d.ts.map +1 -1
  26. package/dist/cli-create-command.js +40 -24
  27. package/dist/cli-create-command.js.map +1 -1
  28. package/dist/cli-detach.js +2 -2
  29. package/dist/cli-detach.js.map +1 -1
  30. package/dist/cli-draft-command.d.ts +23 -7
  31. package/dist/cli-draft-command.d.ts.map +1 -1
  32. package/dist/cli-draft-command.js +38 -12
  33. package/dist/cli-draft-command.js.map +1 -1
  34. package/dist/cli-export-command.d.ts.map +1 -1
  35. package/dist/cli-export-command.js +19 -1
  36. package/dist/cli-export-command.js.map +1 -1
  37. package/dist/cli-image-batch-command.d.ts +0 -6
  38. package/dist/cli-image-batch-command.d.ts.map +1 -1
  39. package/dist/cli-image-batch-command.js +7 -15
  40. package/dist/cli-image-batch-command.js.map +1 -1
  41. package/dist/cli-image-command.d.ts.map +1 -1
  42. package/dist/cli-image-command.js +7 -7
  43. package/dist/cli-image-command.js.map +1 -1
  44. package/dist/cli-next-command.d.ts +51 -0
  45. package/dist/cli-next-command.d.ts.map +1 -0
  46. package/dist/cli-next-command.js +152 -0
  47. package/dist/cli-next-command.js.map +1 -0
  48. package/dist/cli-output-paths.d.ts +20 -0
  49. package/dist/cli-output-paths.d.ts.map +1 -1
  50. package/dist/cli-output-paths.js +30 -0
  51. package/dist/cli-output-paths.js.map +1 -1
  52. package/dist/cli-package-command.d.ts +0 -1
  53. package/dist/cli-package-command.d.ts.map +1 -1
  54. package/dist/cli-package-command.js +11 -5
  55. package/dist/cli-package-command.js.map +1 -1
  56. package/dist/cli-run.d.ts.map +1 -1
  57. package/dist/cli-run.js +15 -12
  58. package/dist/cli-run.js.map +1 -1
  59. package/dist/cli-select-command.d.ts +0 -1
  60. package/dist/cli-select-command.d.ts.map +1 -1
  61. package/dist/cli-select-command.js +25 -35
  62. package/dist/cli-select-command.js.map +1 -1
  63. package/dist/cli-skill-command.d.ts.map +1 -1
  64. package/dist/cli-skill-command.js +7 -2
  65. package/dist/cli-skill-command.js.map +1 -1
  66. package/dist/cli-usage.d.ts +69 -2
  67. package/dist/cli-usage.d.ts.map +1 -1
  68. package/dist/cli-usage.js +119 -37
  69. package/dist/cli-usage.js.map +1 -1
  70. package/dist/image-batch-status.d.ts +1 -1
  71. package/dist/image-batch-status.js +1 -1
  72. package/dist/image-batch-status.js.map +1 -1
  73. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  74. package/dist/legacy-skill-catalog.js +59 -10
  75. package/dist/legacy-skill-catalog.js.map +1 -1
  76. package/dist/mcp-convert.d.ts +32 -0
  77. package/dist/mcp-convert.d.ts.map +1 -0
  78. package/dist/mcp-convert.js +118 -0
  79. package/dist/mcp-convert.js.map +1 -0
  80. package/dist/next-target.d.ts +56 -0
  81. package/dist/next-target.d.ts.map +1 -0
  82. package/dist/next-target.js +72 -0
  83. package/dist/next-target.js.map +1 -0
  84. package/dist/run-journal-commands.d.ts +10 -0
  85. package/dist/run-journal-commands.d.ts.map +1 -1
  86. package/dist/run-journal-commands.js +35 -26
  87. package/dist/run-journal-commands.js.map +1 -1
  88. package/dist/selection-record.d.ts +7 -5
  89. package/dist/selection-record.d.ts.map +1 -1
  90. package/dist/selection-record.js +21 -4
  91. package/dist/selection-record.js.map +1 -1
  92. package/dist/server.d.ts.map +1 -1
  93. package/dist/server.js +7 -78
  94. package/dist/server.js.map +1 -1
  95. package/package.json +1 -1
  96. package/skills/design/SKILL.md +5 -8
  97. package/skills/design-branch/SKILL.md +12 -16
  98. package/skills/design-convert/SKILL.md +10 -15
  99. package/skills/design-draft/SKILL.md +24 -43
  100. package/skills/design-search/SKILL.md +4 -7
@@ -0,0 +1,56 @@
1
+ /**
2
+ * What one argument to `12ui next` names.
3
+ *
4
+ * "What is happening and what do I do" had five spellings with three argument
5
+ * shapes — a positional directory, a positional hosted id, and `--manifest`
6
+ * pointing at a file — and a measured run used two of them on one run and still
7
+ * did not know what to do. The shapes are all still real; only the caller's
8
+ * obligation to know which one they are in is gone. This module holds the whole
9
+ * of that decision, so the dispatcher and the run journal resolve it the same
10
+ * way rather than twice.
11
+ *
12
+ * Deliberately dependency-light: the run journal resolves a target before any
13
+ * command module loads, and it must never be the reason a dispatch throws.
14
+ */
15
+ export type NextTarget = {
16
+ kind: 'create';
17
+ runId: string;
18
+ } | {
19
+ kind: 'branch';
20
+ directory: string;
21
+ } | {
22
+ kind: 'draft';
23
+ directory: string;
24
+ } | {
25
+ kind: 'image-batch';
26
+ manifestPath: string;
27
+ } | {
28
+ kind: 'conversion';
29
+ conversionId: string;
30
+ }
31
+ /**
32
+ * A path that exists but holds no run record still carries `directory`: the
33
+ * caller named a durable place, and the refusal about it belongs in that
34
+ * place's journal rather than nowhere.
35
+ */
36
+ | {
37
+ kind: 'unknown';
38
+ given: string;
39
+ resolved: string;
40
+ directory?: string;
41
+ };
42
+ /**
43
+ * Resolved in the order a caller means them.
44
+ *
45
+ * A draft run directory that has started branching answers about the branch:
46
+ * the branch is what is moving, and the draft half is already terminal. That
47
+ * ordering is the one judgement here, and it is the same judgement
48
+ * `resolveBranchDirectory` makes for `branch execute <run-dir>`.
49
+ */
50
+ export declare const resolveNextTarget: (given: string) => Promise<NextTarget>;
51
+ /**
52
+ * The durable directory a target's record lives in, for the run journal. A
53
+ * hosted run has none — it is the service's, not this machine's.
54
+ */
55
+ export declare const nextTargetWorkspace: (target: NextTarget) => string | undefined;
56
+ //# sourceMappingURL=next-target.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-target.d.ts","sourceRoot":"","sources":["../src/next-target.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE;AAC9C;;;;GAIG;GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAqB7E;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,UAAU,CAwBzE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,UAAU,KAAG,MAAM,GAAG,SAYjE,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { stat } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { BRANCH_ATTEMPT_FILENAME, BRANCH_COMPLETION_FILENAME, } from './branch-run-record.js';
4
+ import { BRANCH_PROGRESS_FILENAME } from './branch-progress.js';
5
+ import { DRAFT_BRANCH_DIRECTORY, DRAFT_GENERATION_MANIFEST, DRAFT_RECORD_FILENAME, } from './draft-workspace.js';
6
+ /** Hosted create/branch runs mint this shape, and nothing else does. */
7
+ const HOSTED_RUN_ID = /^crt-[a-f0-9]{40}$/u;
8
+ /** A conversion is `12ui resume`'s argument, not this command's. */
9
+ const CONVERSION_ID = /^cnv-/u;
10
+ const BRANCH_RECORDS = [
11
+ BRANCH_ATTEMPT_FILENAME,
12
+ BRANCH_COMPLETION_FILENAME,
13
+ BRANCH_PROGRESS_FILENAME,
14
+ ];
15
+ const exists = async (file) => (stat(file).then(() => true).catch(() => false));
16
+ const holdsAny = async (directory, names) => ((await Promise.all(names.map((name) => exists(path.join(directory, name))))).some(Boolean));
17
+ /**
18
+ * Resolved in the order a caller means them.
19
+ *
20
+ * A draft run directory that has started branching answers about the branch:
21
+ * the branch is what is moving, and the draft half is already terminal. That
22
+ * ordering is the one judgement here, and it is the same judgement
23
+ * `resolveBranchDirectory` makes for `branch execute <run-dir>`.
24
+ */
25
+ export const resolveNextTarget = async (given) => {
26
+ const trimmed = given.trim();
27
+ if (HOSTED_RUN_ID.test(trimmed))
28
+ return { kind: 'create', runId: trimmed };
29
+ if (CONVERSION_ID.test(trimmed))
30
+ return { kind: 'conversion', conversionId: trimmed };
31
+ const resolved = path.resolve(trimmed);
32
+ const entry = await stat(resolved).catch(() => null);
33
+ if (entry?.isFile())
34
+ return { kind: 'image-batch', manifestPath: resolved };
35
+ if (entry?.isDirectory()) {
36
+ if (await holdsAny(resolved, BRANCH_RECORDS))
37
+ return { kind: 'branch', directory: resolved };
38
+ const branchDir = path.join(resolved, DRAFT_BRANCH_DIRECTORY);
39
+ if (await holdsAny(branchDir, BRANCH_RECORDS))
40
+ return { kind: 'branch', directory: branchDir };
41
+ if (await exists(path.join(resolved, DRAFT_RECORD_FILENAME))) {
42
+ return { kind: 'draft', directory: resolved };
43
+ }
44
+ if (await exists(path.join(resolved, DRAFT_GENERATION_MANIFEST))) {
45
+ return { kind: 'image-batch', manifestPath: path.join(resolved, DRAFT_GENERATION_MANIFEST) };
46
+ }
47
+ }
48
+ return {
49
+ kind: 'unknown',
50
+ given: trimmed,
51
+ resolved,
52
+ ...(entry?.isDirectory() ? { directory: resolved } : {}),
53
+ };
54
+ };
55
+ /**
56
+ * The durable directory a target's record lives in, for the run journal. A
57
+ * hosted run has none — it is the service's, not this machine's.
58
+ */
59
+ export const nextTargetWorkspace = (target) => {
60
+ switch (target.kind) {
61
+ case 'branch':
62
+ case 'draft':
63
+ return target.directory;
64
+ case 'image-batch':
65
+ return path.dirname(target.manifestPath);
66
+ case 'unknown':
67
+ return target.directory;
68
+ default:
69
+ return undefined;
70
+ }
71
+ };
72
+ //# sourceMappingURL=next-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-target.js","sourceRoot":"","sources":["../src/next-target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AA8B9B,wEAAwE;AACxE,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAC5C,oEAAoE;AACpE,MAAM,aAAa,GAAG,QAAQ,CAAC;AAE/B,MAAM,cAAc,GAAG;IACrB,uBAAuB;IACvB,0BAA0B;IAC1B,wBAAwB;CAChB,CAAC;AAEX,MAAM,MAAM,GAAG,KAAK,EAAE,IAAY,EAAoB,EAAE,CAAC,CACvD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAC/C,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,SAAiB,EAAE,KAAwB,EAAoB,EAAE,CAAC,CACxF,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAC3F,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,KAAa,EAAuB,EAAE;IAC5E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC3E,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,KAAK,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;IAC5E,IAAI,KAAK,EAAE,WAAW,EAAE,EAAE,CAAC;QACzB,IAAI,MAAM,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;QAC9D,IAAI,MAAM,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC/F,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAChD,CAAC;QACD,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,OAAO;QACd,QAAQ;QACR,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAkB,EAAsB,EAAE;IAC5E,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC,CAAC"}
@@ -39,6 +39,16 @@ export type RunJournalCommand = {
39
39
  } & Partial<JournaledCommand> | JournaledCommand & {
40
40
  skip?: undefined;
41
41
  });
42
+ /**
43
+ * The MCP server's one paid tool, under the name its journal lines carry.
44
+ *
45
+ * It is declared here rather than in `server.ts` because this file is the
46
+ * enumeration of the surface: a paid path that journals under a name this table
47
+ * has never heard of is exactly the hole the table exists to close. The server
48
+ * itself has no argv and no long-lived workspace, so it opens one journal per
49
+ * tool call in the directory that call writes to.
50
+ */
51
+ export declare const MCP_CONVERT_JOURNAL_CMD = "mcp design.convert";
42
52
  export declare const RUN_JOURNAL_COMMANDS: readonly RunJournalCommand[];
43
53
  export declare const runJournalCommandFor: (command: readonly string[], flags: CliFlags) => RunJournalCommand | undefined;
44
54
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"run-journal-commands.d.ts","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AAEH,KAAK,iBAAiB,GAAG,CACvB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,QAAQ,KACZ,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEtD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;CACnE,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAkD7F,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAiM5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,SAAS,MAAM,EAAE,EAC1B,OAAO,QAAQ,KACd,iBAAiB,GAAG,SAEtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,MAAM;IACzC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,KAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAkBhC,CAAC"}
1
+ {"version":3,"file":"run-journal-commands.d.ts","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AAEH,KAAK,iBAAiB,GAAG,CACvB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,QAAQ,KACZ,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEtD,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,wEAAwE;IACxE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;CAC7E,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC;CACnE,GAAG,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAyD7F;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAwL5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,SAAS,MAAM,EAAE,EAC1B,OAAO,QAAQ,KACd,iBAAiB,GAAG,SAEtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,MAAM;IACzC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,KAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAkBhC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import path from 'node:path';
2
2
  import { booleanFlag, stringFlag } from './cli-arguments.js';
3
3
  import { resolveBranchDirectory } from './cli-branch-command.js';
4
+ import { nextTargetWorkspace, resolveNextTarget } from './next-target.js';
4
5
  /** `--wait` keeps the work in this shell; `--dry-run` starts nothing at all. */
5
6
  const detachesByDefault = (flags) => (!booleanFlag(flags, 'wait') && !booleanFlag(flags, 'dry-run'));
6
7
  const resolved = (value) => (value?.trim() ? path.resolve(value.trim()) : undefined);
@@ -25,6 +26,13 @@ const conversionOutputDirectory = (command, flags) => {
25
26
  const input = resolved(command[1]);
26
27
  return input ? path.dirname(input) : undefined;
27
28
  };
29
+ /** `12ui next` takes one argument of three shapes; one module decides which. */
30
+ const nextWorkspace = async (command) => {
31
+ const given = command[1]?.trim();
32
+ if (!given)
33
+ return undefined;
34
+ return nextTargetWorkspace(await resolveNextTarget(given));
35
+ };
28
36
  const branchDirectory = async (command, flags) => {
29
37
  const flagValue = stringFlag(flags, 'out-dir')?.trim();
30
38
  const positional = command[2]?.trim();
@@ -37,6 +45,16 @@ const branchDirectory = async (command, flags) => {
37
45
  return directory.branchDir;
38
46
  };
39
47
  const is = (...tokens) => (command) => (tokens.every((token, index) => command[index] === token));
48
+ /**
49
+ * The MCP server's one paid tool, under the name its journal lines carry.
50
+ *
51
+ * It is declared here rather than in `server.ts` because this file is the
52
+ * enumeration of the surface: a paid path that journals under a name this table
53
+ * has never heard of is exactly the hole the table exists to close. The server
54
+ * itself has no argv and no long-lived workspace, so it opens one journal per
55
+ * tool call in the directory that call writes to.
56
+ */
57
+ export const MCP_CONVERT_JOURNAL_CMD = 'mcp design.convert';
40
58
  export const RUN_JOURNAL_COMMANDS = [
41
59
  {
42
60
  cmd: 'help',
@@ -93,13 +111,6 @@ export const RUN_JOURNAL_COMMANDS = [
93
111
  workspace: manifestDirectory,
94
112
  detached: detachesByDefault,
95
113
  },
96
- {
97
- cmd: 'image batch-status',
98
- matches: is('image', 'batch-status'),
99
- paid: false,
100
- terminalOnSuccess: false,
101
- workspace: manifestDirectory,
102
- },
103
114
  {
104
115
  cmd: 'image generate',
105
116
  matches: is('image', 'generate'),
@@ -112,13 +123,6 @@ export const RUN_JOURNAL_COMMANDS = [
112
123
  matches: is('image'),
113
124
  skip: 'An unrecognized image action refuses before it resolves a directory.',
114
125
  },
115
- {
116
- cmd: 'draft status',
117
- matches: is('draft', 'status'),
118
- paid: false,
119
- terminalOnSuccess: false,
120
- workspace: (command) => resolved(command[2]),
121
- },
122
126
  {
123
127
  cmd: 'draft',
124
128
  matches: is('draft'),
@@ -154,17 +158,20 @@ export const RUN_JOURNAL_COMMANDS = [
154
158
  workspace: branchDirectory,
155
159
  detached: detachesByDefault,
156
160
  },
157
- {
158
- cmd: 'branch status',
159
- matches: is('branch', 'status'),
160
- paid: false,
161
- terminalOnSuccess: false,
162
- workspace: branchDirectory,
163
- },
164
161
  {
165
162
  cmd: 'branch',
166
163
  matches: is('branch'),
167
- skip: 'An unrecognized branch action refuses before it resolves a directory.',
164
+ skip: 'An unrecognized branch action, and the retired `branch status`, refuse before they'
165
+ + ' resolve a directory.',
166
+ },
167
+ {
168
+ // One reader for every run shape, so its journal line is the one that can
169
+ // settle whether the run this workspace holds is over.
170
+ cmd: 'next',
171
+ matches: is('next'),
172
+ paid: false,
173
+ terminalOnSuccess: false,
174
+ workspace: nextWorkspace,
168
175
  },
169
176
  {
170
177
  cmd: 'export',
@@ -190,8 +197,8 @@ export const RUN_JOURNAL_COMMANDS = [
190
197
  {
191
198
  cmd: 'create',
192
199
  matches: is('create'),
193
- skip: 'claim, dispatch, and status act on a hosted run and write no local'
194
- + ' workspace; only `create download` has an --out-dir.',
200
+ skip: 'claim and dispatch act on a hosted run and write no local workspace;'
201
+ + ' only `create download` has an --out-dir.',
195
202
  },
196
203
  {
197
204
  cmd: 'convert package',
@@ -225,8 +232,10 @@ export const RUN_JOURNAL_COMMANDS = [
225
232
  {
226
233
  cmd: 'mcp',
227
234
  matches: is('mcp'),
228
- skip: 'Serves the MCP protocol on stdio. Each tool call it serves runs the'
229
- + ' library directly and owns no run directory of its own.',
235
+ skip: 'The server process owns no workspace: it serves the MCP protocol on'
236
+ + ' stdio for as long as a client is attached. Each paid tool call it'
237
+ + ' serves opens its own journal in the directory it writes to — see'
238
+ + ` \`${MCP_CONVERT_JOURNAL_CMD}\` in server.ts.`,
230
239
  },
231
240
  ];
232
241
  export const runJournalCommandFor = (command, flags) => (RUN_JOURNAL_COMMANDS.find((entry) => entry.matches(command, flags)));
@@ -1 +1 @@
1
- {"version":3,"file":"run-journal-commands.js","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-journal-commands.js","sourceRoot":"","sources":["../src/run-journal-commands.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,13 @@ export type SelectionRecord = {
68
68
  idempotencyKey: string;
69
69
  providerIdempotencyEnforced: boolean;
70
70
  attemptEvidencePath: string;
71
+ /**
72
+ * Inert since 0.2.20 and always empty. Its only writer was `--reject`,
73
+ * which was deleted: the parser is last-wins, so the flag could never carry
74
+ * the several reasons its own documentation showed, and it had zero uses.
75
+ * The field stays because `selection.json` v6 is a durable artifact other
76
+ * readers parse; it goes when the record next takes a version.
77
+ */
71
78
  rejectionReasons: string[];
72
79
  }[];
73
80
  recommendation: {
@@ -83,11 +90,6 @@ export declare const buildSelectionRecord: (args: {
83
90
  draft: DraftRecord;
84
91
  winner: string;
85
92
  reason: string;
86
- recommendation?: {
87
- candidateId: string | null;
88
- source: string | null;
89
- };
90
- rejectionReasons?: Record<string, string[]>;
91
93
  now?: () => Date;
92
94
  }) => Promise<SelectionRecord>;
93
95
  export declare const writeSelectionRecord: (file: string, record: SelectionRecord) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"selection-record.d.ts","sourceRoot":"","sources":["../src/selection-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection-record.d.ts","sourceRoot":"","sources":["../src/selection-record.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,25 @@ import { readImageGenerationAttemptFile } from './image-generation-staging.js';
16
16
  * none.
17
17
  */
18
18
  export const SELECTION_RECORD_VERSION = 6;
19
+ /**
20
+ * What the run itself recommends, derived rather than re-declared.
21
+ *
22
+ * `12ui draft` pairs candidate A with the corpus's top-ranked reference, B with
23
+ * the second, and so on (`draft-run.ts` sorts by ordinal before pairing), so the
24
+ * head of the ranking IS the run's recommendation and the run directory has held
25
+ * it all along. `--recommended` asked the caller to type back a fact the record
26
+ * beside it already stated, which is how the two drift apart.
27
+ *
28
+ * A candidate that never landed cannot be the recommendation, so the head is
29
+ * the highest-ranked candidate with an image on disk. A run where none landed
30
+ * indicates nothing, and says so.
31
+ */
32
+ const recommendationFromRun = (candidates) => {
33
+ const landed = candidates.find((candidate) => candidate.sha256 !== null);
34
+ return landed
35
+ ? { candidateId: landed.id, source: 'corpus-rank-1' }
36
+ : { candidateId: null, source: null };
37
+ };
19
38
  export const buildSelectionRecord = async (args) => {
20
39
  const now = args.now ?? (() => new Date());
21
40
  const { draft } = args;
@@ -46,12 +65,10 @@ export const buildSelectionRecord = async (args) => {
46
65
  // Only ever the recorded CLI value, never an assumed guarantee.
47
66
  providerIdempotencyEnforced: attempt?.providerIdempotencyEnforced === true,
48
67
  attemptEvidencePath,
49
- rejectionReasons: candidate.id === args.winner
50
- ? []
51
- : args.rejectionReasons?.[candidate.id] ?? [],
68
+ rejectionReasons: [],
52
69
  };
53
70
  }));
54
- const recommendation = args.recommendation ?? { candidateId: null, source: null };
71
+ const recommendation = recommendationFromRun(candidates);
55
72
  const selectionSource = recommendation.candidateId === null
56
73
  ? 'no-recommendation'
57
74
  : recommendation.candidateId === args.winner
@@ -1 +1 @@
1
- {"version":3,"file":"selection-record.js","sourceRoot":"","sources":["../src/selection-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"selection-record.js","sourceRoot":"","sources":["../src/selection-record.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAmBpD,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE5D,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8J7E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAapD,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE5D,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4F7E"}
package/dist/server.js CHANGED
@@ -1,16 +1,12 @@
1
1
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
3
  import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
4
- import { readFile, writeFile } from 'node:fs/promises';
5
- import path from 'node:path';
6
- import { materializeConversionArtifacts } from './artifact-materializer.js';
7
- import { prepareOutputFile } from './cli-output-paths.js';
8
- import { CONVERSION_MODELS, isConversionModel } from './conversion-models.js';
4
+ import { readFile } from 'node:fs/promises';
5
+ import { CONVERSION_MODELS } from './conversion-models.js';
9
6
  import { TwelveUiConversionClient } from './conversion-client.js';
10
- import { CONVERSION_OUTPUTS, LAYERDOC_INPUT_OUTPUTS, isConversionOutput, } from './conversion-outputs.js';
11
- import { createInputForLocalFile, defaultConversionOutputPath, } from './local-conversion-input.js';
12
- import { normalizeOptionalIdempotencyKey } from './idempotency-key.js';
13
- import { APP_PROJECT_FRAMEWORKS, APP_PROJECT_LANGUAGES, APP_PROJECT_PACKAGINGS, APP_PROJECT_STYLINGS, WEB_PROJECT_FRAMEWORKS, WEB_PROJECT_LANGUAGES, WEB_PROJECT_PACKAGINGS, WEB_PROJECT_STYLINGS, isProjectConversionOutput, parseConversionOutputProfile, } from './project-profiles.js';
7
+ import { CONVERSION_OUTPUTS, LAYERDOC_INPUT_OUTPUTS, } from './conversion-outputs.js';
8
+ import { runMcpConvert } from './mcp-convert.js';
9
+ import { APP_PROJECT_FRAMEWORKS, APP_PROJECT_LANGUAGES, APP_PROJECT_PACKAGINGS, APP_PROJECT_STYLINGS, WEB_PROJECT_FRAMEWORKS, WEB_PROJECT_LANGUAGES, WEB_PROJECT_PACKAGINGS, WEB_PROJECT_STYLINGS, } from './project-profiles.js';
14
10
  export async function startMcpServer(options) {
15
11
  const client = new TwelveUiConversionClient({
16
12
  origin: options.config.origin,
@@ -85,75 +81,8 @@ export async function startMcpServer(options) {
85
81
  try {
86
82
  if (request.params.name !== 'design.convert')
87
83
  throw new Error(`Unknown tool: ${request.params.name}`);
88
- const input = (request.params.arguments ?? {});
89
- const imagePath = typeof input.imagePath === 'string' && input.imagePath.trim()
90
- ? input.imagePath
91
- : null;
92
- const layerdocPath = typeof input.layerdocPath === 'string' && input.layerdocPath.trim()
93
- ? input.layerdocPath
94
- : null;
95
- if ((imagePath === null) === (layerdocPath === null)) {
96
- throw new Error('Provide exactly one imagePath or layerdocPath');
97
- }
98
- const inputPath = path.resolve(imagePath ?? layerdocPath);
99
- if (!isConversionOutput(input.output)) {
100
- throw new Error(`output must be one of ${CONVERSION_OUTPUTS.join(', ')}`);
101
- }
102
- const output = input.output;
103
- if (input.model !== undefined && !isConversionModel(input.model)) {
104
- throw new Error(`model must be one of ${CONVERSION_MODELS.join(', ')}`);
105
- }
106
- if (layerdocPath && input.model !== undefined) {
107
- throw new Error('model is only valid with imagePath');
108
- }
109
- const profile = isProjectConversionOutput(output)
110
- ? parseConversionOutputProfile(output, input.profile)
111
- : undefined;
112
- if (!isProjectConversionOutput(output) && input.profile !== undefined) {
113
- throw new Error('profile is only valid for web_project or app_project outputs');
114
- }
115
- const conversionInput = createInputForLocalFile({
116
- bytes: new Uint8Array(await readFile(inputPath)),
117
- filePath: inputPath,
118
- output,
119
- ...(profile ? { profile } : {}),
120
- });
121
- if (layerdocPath && conversionInput.layerdoc === undefined) {
122
- throw new Error('layerdocPath must refer to a JSON file');
123
- }
124
- if (imagePath && conversionInput.layerdoc !== undefined) {
125
- throw new Error('Use layerdocPath for LayerDoc JSON input');
126
- }
127
- const idempotencyKey = normalizeOptionalIdempotencyKey(input.idempotencyKey);
128
- const requestInput = conversionInput.layerdoc !== undefined
129
- ? conversionInput
130
- : {
131
- ...conversionInput,
132
- ...(isConversionModel(input.model) ? { model: input.model } : {}),
133
- };
134
- // Made writable before the conversion is bought, exactly as the CLI does.
135
- const outFile = await prepareOutputFile(typeof input.outFile === 'string' && input.outFile.trim()
136
- ? input.outFile
137
- : defaultConversionOutputPath(inputPath, output));
138
- const operation = await client.createConversion({
139
- ...requestInput,
140
- ...(idempotencyKey ? { idempotencyKey } : {}),
141
- });
142
- const completed = operation.status === 'succeeded'
143
- ? operation
144
- : await client.waitForConversion(operation.id, {
145
- timeoutMs: typeof input.timeoutMs === 'number' ? input.timeoutMs : undefined,
146
- expiresAt: operation.expires_at,
147
- });
148
- const downloaded = await client.downloadResult(completed.id, output);
149
- await writeFile(outFile, downloaded.bytes);
150
- const artifactManifest = await materializeConversionArtifacts(client, completed, outFile);
151
- return {
152
- content: [{
153
- type: 'text',
154
- text: JSON.stringify({ id: completed.id, output, outFile, artifactManifest }, null, 2),
155
- }],
156
- };
84
+ const result = await runMcpConvert(client, (request.params.arguments ?? {}));
85
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
157
86
  }
158
87
  catch (error) {
159
88
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAI/B,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAyB;IAC5D,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;QAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;KAC9B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,EAAE,EAAE,EAChE,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,CAAC;gBACN,IAAI,EAAE,gBAAgB;gBACtB,WAAW,EAAE,+MAA+M;gBAC5N,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,oBAAoB,EAAE,KAAK;oBAC3B,QAAQ,EAAE,CAAC,QAAQ,CAAC;oBACpB,UAAU,EAAE;wBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAE;wBAC7G,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6FAA6F,EAAE;wBAC5I,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE;wBACzD,KAAK,EAAE;4BACL,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,GAAG,iBAAiB,CAAC;4BAC5B,OAAO,EAAE,UAAU;4BACnB,WAAW,EAAE,mFAAmF;yBACjG;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,oBAAoB,EAAE,KAAK;4BAC3B,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC;4BACtE,UAAU,EAAE;gCACV,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gCACrB,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,sBAAsB,EAAE,GAAG,sBAAsB,CAAC,EAAE;gCAC3E,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC,EAAE;gCACrE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,qBAAqB,EAAE,GAAG,qBAAqB,CAAC,EAAE;gCACxE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,sBAAsB,EAAE,GAAG,sBAAsB,CAAC,EAAE;6BAC5E;4BACD,WAAW,EAAE,6EAA6E;yBAC3F;wBACD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;wBACjG,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;wBAC5C,cAAc,EAAE;4BACd,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,CAAC;4BACZ,SAAS,EAAE,GAAG;4BACd,WAAW,EAAE,gFAAgF;yBAC9F;qBACF;oBACD,KAAK,EAAE;wBACL,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE;wBAChE;4BACE,QAAQ,EAAE,CAAC,cAAc,CAAC;4BAC1B,GAAG,EAAE;gCACH,KAAK,EAAE;oCACL,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;oCAC3B,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;iCACxB;6BACF;4BACD,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,sBAAsB,CAAC,EAAE,EAAE;yBAC9D;qBACF;oBACD,KAAK,EAAE,CAAC;4BACN,EAAE,EAAE;gCACF,QAAQ,EAAE,CAAC,QAAQ,CAAC;gCACpB,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE;6BACjE;4BACD,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE;4BAC/B,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE;yBACzC,CAAC;iBACH;aACF,CAAC;KACH,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,gBAAgB;gBAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACtG,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,MAAM,EACN,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA4B,CAC5D,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,qBAAqB,GAAG,KAAK,IAAqB,EAAE;IACxD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;IACxD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12ui/design",
3
- "version": "0.2.20",
3
+ "version": "0.2.21",
4
4
  "type": "module",
5
5
  "description": "The canonical 12UI CLI, SDK, MCP server, and visual interface design skills",
6
6
  "main": "dist/index.js",
@@ -24,13 +24,15 @@ quicker.
24
24
 
25
25
  ## 1. Explore — four directions
26
26
 
27
+ Already holding the finished design? Build it, do not redraw it: see
28
+ `design-convert`. Only to redraw an existing interface:
29
+ `12ui draft --redesign-source <png> --mode exploratory|reskin`.
30
+
27
31
  12ui draft --query "<product, audience, surface, goal, personality>"
28
32
 
29
33
  Creates the run directory and prints its path — pass it to every later
30
34
  command. Searches the corpus for four diverse references and generates one
31
35
  one-viewport candidate steered by each, returning immediately.
32
- `12ui draft status <run-dir>` reports progress (typically ~90s).
33
- Redesigns: `--redesign-source <png> --mode exploratory|reskin`.
34
36
 
35
37
  ## 2. Select
36
38
 
@@ -45,8 +47,6 @@ For a single fold, view, or state:
45
47
 
46
48
  12ui convert <run-dir>/candidates/B.png --export html
47
49
 
48
- Runs ~5 minutes with streamed progress.
49
-
50
50
  For a full page or a multi-page site or app — the winner is viewport 1 of
51
51
  the first page; it needs no separate conversion:
52
52
 
@@ -55,12 +55,9 @@ the first page; it needs no separate conversion:
55
55
  --scope page|site --convert html
56
56
 
57
57
  The server plans the screens; the command dispatches, downloads, and
58
- converts one package per page. Returns immediately;
59
- `12ui branch status <run-dir>` reports progress (typically 5–15 min;
60
- large runs can take up to ~30 min).
58
+ converts one package per page, into `<run-dir>/branch/pages/`.
61
59
  Wait for it rather than building the same pages by hand in the meantime —
62
60
  they are already being produced and paid for.
63
- Per-page HTML lands in `<run-dir>/branch/pages/`.
64
61
 
65
62
  ## 4. Integrate
66
63