@12ui/design 0.2.25 → 0.2.27

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 (51) hide show
  1. package/SKILL.md +1 -1
  2. package/dist/branch-client.d.ts +7 -0
  3. package/dist/branch-client.d.ts.map +1 -1
  4. package/dist/branch-client.js +1 -0
  5. package/dist/branch-client.js.map +1 -1
  6. package/dist/branch-completion.d.ts +8 -0
  7. package/dist/branch-completion.d.ts.map +1 -1
  8. package/dist/branch-completion.js +48 -3
  9. package/dist/branch-completion.js.map +1 -1
  10. package/dist/branch-execution.d.ts +8 -0
  11. package/dist/branch-execution.d.ts.map +1 -1
  12. package/dist/branch-execution.js +37 -6
  13. package/dist/branch-execution.js.map +1 -1
  14. package/dist/branch-page-conversion.d.ts +5 -0
  15. package/dist/branch-page-conversion.d.ts.map +1 -1
  16. package/dist/branch-page-conversion.js +24 -13
  17. package/dist/branch-page-conversion.js.map +1 -1
  18. package/dist/branch-plan.d.ts +38 -0
  19. package/dist/branch-plan.d.ts.map +1 -1
  20. package/dist/branch-plan.js +83 -17
  21. package/dist/branch-plan.js.map +1 -1
  22. package/dist/branch-progress.d.ts.map +1 -1
  23. package/dist/branch-progress.js +13 -0
  24. package/dist/branch-progress.js.map +1 -1
  25. package/dist/branch-run-record.d.ts +27 -1
  26. package/dist/branch-run-record.d.ts.map +1 -1
  27. package/dist/branch-run-record.js.map +1 -1
  28. package/dist/cli-usage.js +1 -1
  29. package/dist/conversion-client.d.ts.map +1 -1
  30. package/dist/conversion-client.js +23 -3
  31. package/dist/conversion-client.js.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/operation-poll-policy.d.ts +89 -0
  37. package/dist/operation-poll-policy.d.ts.map +1 -0
  38. package/dist/operation-poll-policy.js +99 -0
  39. package/dist/operation-poll-policy.js.map +1 -0
  40. package/dist/package-client.d.ts.map +1 -1
  41. package/dist/package-client.js +48 -9
  42. package/dist/package-client.js.map +1 -1
  43. package/dist/package-submission.d.ts.map +1 -1
  44. package/dist/package-submission.js +30 -2
  45. package/dist/package-submission.js.map +1 -1
  46. package/dist/responsive-quality.d.ts +65 -14
  47. package/dist/responsive-quality.d.ts.map +1 -1
  48. package/dist/responsive-quality.js +58 -50
  49. package/dist/responsive-quality.js.map +1 -1
  50. package/open-design.json +2 -2
  51. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"responsive-quality.d.ts","sourceRoot":"","sources":["../src/responsive-quality.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,8BAA+B,CAAC;AAC5E,MAAM,MAAM,2BAA2B,GAAG,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC;AACzF,eAAO,MAAM,yCAAyC,0CAA2C,CAAC;AAClG,MAAM,MAAM,oCAAoC,GAAG,OAAO,yCAAyC,CAAC,MAAM,CAAC,CAAC;AAC5G,eAAO,MAAM,+BAA+B,EAAG,2BAAoC,CAAC;AACpF,eAAO,MAAM,6CAA6C,EAAG,2BAAoC,CAAC;AAClG,eAAO,MAAM,4CAA4C,EAAG,2BAAoC,CAAC;AACjG,eAAO,MAAM,0CAA0C,EAAG,2BAAoC,CAAC;AAC/F,eAAO,MAAM,0CAA0C,EAAG,2BAAoC,CAAC;AAC/F,eAAO,MAAM,sCAAsC,EAAG,2BAAoC,CAAC;AAE3F,eAAO,MAAM,6BAA6B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,2BAEvE,CAAC;AAEF,eAAO,MAAM,sCAAsC,GACjD,OAAO,OAAO,KACb,KAAK,IAAI,oCAGX,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,OAAO,+BAA+B,GAC5C,OAAO,6CAA6C,GACpD,OAAO,4CAA4C,GACnD,OAAO,0CAA0C,GACjD,OAAO,0CAA0C,GACjD,OAAO,sCAAsC,CAAC;IAClD,OAAO,EAAE,oCAAoC,CAAC;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,CAAC;QAC5C,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,aAAa,CAAC;QACzB,iBAAiB,EAAE,KAAK,CAAC;QACzB,UAAU,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;KACrD,CAAC,CAAC;CACJ,CAAC;AAkBF,eAAO,MAAM,6BAA6B,GAAI,OAAO,OAAO,KAAG,wBA4C9D,CAAC"}
1
+ {"version":3,"file":"responsive-quality.d.ts","sourceRoot":"","sources":["../src/responsive-quality.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,8BAA+B,CAAC;AAC5E,MAAM,MAAM,2BAA2B,GAAG,OAAO,+BAA+B,CAAC,MAAM,CAAC,CAAC;AACzF,eAAO,MAAM,yCAAyC,0CAA2C,CAAC;AAClG,MAAM,MAAM,oCAAoC,GAAG,OAAO,yCAAyC,CAAC,MAAM,CAAC,CAAC;AAE5G;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gCAAgC,kDAAmD,CAAC;AACjG,MAAM,MAAM,4BAA4B,GAAG,OAAO,gCAAgC,CAAC,MAAM,CAAC,CAAC;AAC3F,eAAO,MAAM,uCAAuC,0BAA2B,CAAC;AAChF,eAAO,MAAM,gDAAgD,kBAAmB,CAAC;AACjF,eAAO,MAAM,wCAAwC,kDAAmD,CAAC;AAEzG,eAAO,MAAM,6BAA6B,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,2BAEvE,CAAC;AAEF,eAAO,MAAM,sCAAsC,GACjD,OAAO,OAAO,KACb,KAAK,IAAI,oCAGX,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,EAAE,EAAE,4BAA4B,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,OAAO,uCAAuC,CAAC,MAAM,CAAC,CAAC;IAClE,iBAAiB,EAAE,OAAO,gDAAgD,CAAC,MAAM,CAAC,CAAC;IACnF,UAAU,EAAE,OAAO,wCAAwC,CAAC,MAAM,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;;;;;OAQG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,oCAAoC,CAAC;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,0BAA0B,EAAE,CAAC;CACvC,CAAC;AAcF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,6BAA6B,GAAI,OAAO,OAAO,KAAG,wBAoB9D,CAAC"}
@@ -1,65 +1,73 @@
1
1
  export const RESPONSIVE_CONVERSION_QUALITIES = ['standard', 'pro'];
2
2
  export const PERSISTED_RESPONSIVE_CONVERSION_QUALITIES = ['standard', 'enhanced', 'pro'];
3
- export const RESPONSIVE_ANCHOR_PLAN_REVISION = 'responsive-anchor-plan-v6';
4
- export const LOGICAL_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION = 'responsive-anchor-plan-v5';
5
- export const RASTER_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION = 'responsive-anchor-plan-v4';
6
- export const THREE_TIER_RESPONSIVE_ANCHOR_PLAN_REVISION = 'responsive-anchor-plan-v3';
7
- export const PRE_NATIVE_RESPONSIVE_ANCHOR_PLAN_REVISION = 'responsive-anchor-plan-v2';
8
- export const LEGACY_RESPONSIVE_ANCHOR_PLAN_REVISION = 'responsive-anchor-plan-v1';
3
+ /**
4
+ * The anchor vocabulary the published contract declares.
5
+ *
6
+ * These three lists are the closed sets in
7
+ * `packages/design-contract/src/conversion.ts` `ResponsiveConversionAnchor`,
8
+ * mirrored here because this package publishes standalone and cannot depend on
9
+ * the contract workspace. `workers/api/test/conversionResponsivePlanContract.test.ts`
10
+ * asserts the mirror against every anchor the service can actually emit, so a
11
+ * new direction, generator, or image size fails a local test rather than a
12
+ * customer's install.
13
+ */
14
+ export const RESPONSIVE_CONVERSION_ANCHOR_IDS = ['mobile', 'tablet', 'compact-desktop'];
15
+ export const RESPONSIVE_CONVERSION_ANCHOR_GENERATORS = ['gpt-image-2'];
16
+ export const RESPONSIVE_CONVERSION_ANCHOR_GENERATOR_QUALITIES = ['low'];
17
+ export const RESPONSIVE_CONVERSION_ANCHOR_IMAGE_SIZES = ['1024x3072', '1536x2048', '2048x1536'];
9
18
  export const isResponsiveConversionQuality = (value) => (typeof value === 'string' && RESPONSIVE_CONVERSION_QUALITIES.includes(value));
10
19
  export const isPersistedResponsiveConversionQuality = (value) => (typeof value === 'string'
11
20
  && PERSISTED_RESPONSIVE_CONVERSION_QUALITIES.includes(value));
12
- const THREE_TIER_ANCHORS = [
13
- { id: 'mobile', viewport_width: 390 },
14
- { id: 'tablet', viewport_width: 768 },
15
- { id: 'compact-desktop', viewport_width: 1024 },
16
- ];
17
- const CURRENT_ANCHORS = [
18
- { id: 'mobile', viewport_width: 390, image_size: '1024x3072' },
19
- { id: 'tablet', viewport_width: 768, image_size: '1536x2048' },
20
- { id: 'compact-desktop', viewport_width: 1280, image_size: '2048x1536' },
21
- ];
22
21
  const isRecord = (value) => (typeof value === 'object' && value !== null && !Array.isArray(value));
22
+ const isPositiveInteger = (value) => (Number.isSafeInteger(value) && Number(value) > 0);
23
+ const oneOf = (value, allowed) => (typeof value === 'string' && allowed.includes(value));
24
+ /**
25
+ * Validate the SHAPE of a responsive plan, and only the shape.
26
+ *
27
+ * ## Why there is no revision list here
28
+ *
29
+ * A plan names which anchor directions a quality bought at a given native
30
+ * width — a *service pricing decision*. Until 0.2.26 this parser refused any
31
+ * `revision` outside a closed `v1…v6` list and, worse, recomputed the topology
32
+ * the service had chosen and asserted equality. That made every published
33
+ * client a reader that must know every derivation the service will ever use,
34
+ * by name.
35
+ *
36
+ * On 2026-08-15 the service shipped `responsive-anchor-plan-v7` (pipeline
37
+ * v175, `workers/api/src/conversion/responsiveAnchorPlan.ts`). From that deploy
38
+ * every API-key client refused the whole conversion operation with
39
+ * "Conversion operation has an invalid responsive plan" — including operations
40
+ * for responsive exports it had already paid for and that had already
41
+ * succeeded, so `--export html`, `convert --output html`, and `resume --output
42
+ * html` all failed and the delivered work could not even be collected. The
43
+ * payload had not changed shape: a Standard v6 plan and a Standard v7 plan for
44
+ * the same source are byte-identical apart from that one string.
45
+ *
46
+ * So: `revision` is opaque, anchor *topology* is not re-derived, and what is
47
+ * checked is what this package actually reads — the declared vocabulary of
48
+ * `packages/design-contract/src/conversion.ts`. A malformed plan still refuses.
49
+ *
50
+ * The fence against this returning is
51
+ * `workers/api/test/conversionResponsivePlanContract.test.ts`: it walks every
52
+ * plan the service can emit, current and every frozen compatibility
53
+ * derivation, through this function.
54
+ */
23
55
  export const parseResponsiveConversionPlan = (value) => {
24
- if (!isRecord(value) || (value.revision !== RESPONSIVE_ANCHOR_PLAN_REVISION
25
- && value.revision !== LOGICAL_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION
26
- && value.revision !== RASTER_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION
27
- && value.revision !== THREE_TIER_RESPONSIVE_ANCHOR_PLAN_REVISION
28
- && value.revision !== PRE_NATIVE_RESPONSIVE_ANCHOR_PLAN_REVISION
29
- && value.revision !== LEGACY_RESPONSIVE_ANCHOR_PLAN_REVISION)
56
+ if (!isRecord(value)
57
+ || typeof value.revision !== 'string' || value.revision.trim() === ''
30
58
  || !isPersistedResponsiveConversionQuality(value.quality)
31
- || !Number.isSafeInteger(value.native_width) || !(Number(value.native_width) > 390)
32
- || !Array.isArray(value.anchors)) {
59
+ || !isPositiveInteger(value.native_width)
60
+ || !Array.isArray(value.anchors) || value.anchors.length === 0) {
33
61
  throw new TypeError('Invalid responsive conversion plan.');
34
62
  }
35
- const nativeWidth = Number(value.native_width);
36
- const currentTopologyRevision = value.revision === RESPONSIVE_ANCHOR_PLAN_REVISION
37
- || value.revision === LOGICAL_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION
38
- || value.revision === RASTER_WIDTH_RESPONSIVE_ANCHOR_PLAN_REVISION;
39
- if (currentTopologyRevision && value.quality === 'enhanced') {
40
- throw new TypeError('Current responsive conversion plans do not support Enhanced quality.');
41
- }
42
- const oldLimit = value.quality === 'standard' ? 1 : value.quality === 'enhanced' ? 2 : 3;
43
- const oldBudget = THREE_TIER_ANCHORS.slice(0, oldLimit);
44
- const expected = currentTopologyRevision
45
- ? CURRENT_ANCHORS.slice(0, value.quality === 'standard' ? 1 : nativeWidth > 1440 ? 3 : 2)
46
- : value.revision === LEGACY_RESPONSIVE_ANCHOR_PLAN_REVISION
47
- ? oldBudget.filter((anchor) => anchor.viewport_width < nativeWidth)
48
- : oldBudget;
49
- if (value.anchors.length !== expected.length || expected.length === 0) {
50
- throw new TypeError('Responsive conversion plan has an invalid anchor count.');
51
- }
52
63
  for (const [index, anchorValue] of value.anchors.entries()) {
53
64
  const anchor = isRecord(anchorValue) ? anchorValue : null;
54
- const expectedAnchor = expected[index];
55
- const expectedImageSize = value.revision === RESPONSIVE_ANCHOR_PLAN_REVISION
56
- ? (expectedAnchor && 'image_size' in expectedAnchor ? expectedAnchor.image_size : null)
57
- : '1024x3072';
58
- if (!anchor || anchor.id !== expectedAnchor?.id
59
- || anchor.viewport_width !== expectedAnchor.viewport_width
60
- || anchor.generator !== 'gpt-image-2'
61
- || anchor.generator_quality !== 'low'
62
- || anchor.image_size !== expectedImageSize) {
65
+ if (!anchor
66
+ || !oneOf(anchor.id, RESPONSIVE_CONVERSION_ANCHOR_IDS)
67
+ || !isPositiveInteger(anchor.viewport_width)
68
+ || !oneOf(anchor.generator, RESPONSIVE_CONVERSION_ANCHOR_GENERATORS)
69
+ || !oneOf(anchor.generator_quality, RESPONSIVE_CONVERSION_ANCHOR_GENERATOR_QUALITIES)
70
+ || !oneOf(anchor.image_size, RESPONSIVE_CONVERSION_ANCHOR_IMAGE_SIZES)) {
63
71
  throw new TypeError(`Responsive conversion plan anchor ${index} is invalid.`);
64
72
  }
65
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"responsive-quality.js","sourceRoot":"","sources":["../src/responsive-quality.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responsive-quality.js","sourceRoot":"","sources":["../src/responsive-quality.ts"],"names":[],"mappings":"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"}
package/open-design.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "specVersion": "1.0.0",
4
4
  "name": "12ui-design",
5
5
  "title": "12UI Design",
6
- "version": "0.2.25",
6
+ "version": "0.2.27",
7
7
  "description": "Explore corpus-grounded interface directions, choose one, and convert it into production-ready responsive or native artifacts with 12UI.",
8
8
  "author": {
9
9
  "name": "Just Every",
@@ -49,7 +49,7 @@
49
49
  "command": "npx",
50
50
  "args": [
51
51
  "-y",
52
- "@12ui/design@0.2.25",
52
+ "@12ui/design@0.2.27",
53
53
  "mcp"
54
54
  ]
55
55
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@12ui/design",
3
- "version": "0.2.25",
3
+ "version": "0.2.27",
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",