@12ui/design 0.2.48 → 0.2.50

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 (97) hide show
  1. package/SKILL.md +1 -1
  2. package/dist/cli-draft-command.d.ts +11 -5
  3. package/dist/cli-draft-command.d.ts.map +1 -1
  4. package/dist/cli-draft-command.js +37 -35
  5. package/dist/cli-draft-command.js.map +1 -1
  6. package/dist/cli-help/design.d.ts +10 -0
  7. package/dist/cli-help/design.d.ts.map +1 -1
  8. package/dist/cli-help/design.js +29 -0
  9. package/dist/cli-help/design.js.map +1 -1
  10. package/dist/cli-help/index.d.ts +11 -0
  11. package/dist/cli-help/index.d.ts.map +1 -1
  12. package/dist/cli-help/index.js +18 -2
  13. package/dist/cli-help/index.js.map +1 -1
  14. package/dist/cli-next-command.d.ts.map +1 -1
  15. package/dist/cli-next-command.js +26 -14
  16. package/dist/cli-next-command.js.map +1 -1
  17. package/dist/cli-progress.d.ts +2 -0
  18. package/dist/cli-progress.d.ts.map +1 -1
  19. package/dist/cli-progress.js +2 -0
  20. package/dist/cli-progress.js.map +1 -1
  21. package/dist/cli-redesign-command.d.ts +42 -0
  22. package/dist/cli-redesign-command.d.ts.map +1 -0
  23. package/dist/cli-redesign-command.js +469 -0
  24. package/dist/cli-redesign-command.js.map +1 -0
  25. package/dist/cli-run.d.ts.map +1 -1
  26. package/dist/cli-run.js +8 -0
  27. package/dist/cli-run.js.map +1 -1
  28. package/dist/cli-usage.d.ts.map +1 -1
  29. package/dist/cli-usage.js +8 -1
  30. package/dist/cli-usage.js.map +1 -1
  31. package/dist/draft-dispatch-attempt.d.ts +0 -7
  32. package/dist/draft-dispatch-attempt.d.ts.map +1 -1
  33. package/dist/draft-dispatch-attempt.js +1 -25
  34. package/dist/draft-dispatch-attempt.js.map +1 -1
  35. package/dist/draft-identity.d.ts +2 -0
  36. package/dist/draft-identity.d.ts.map +1 -1
  37. package/dist/draft-identity.js +1 -0
  38. package/dist/draft-identity.js.map +1 -1
  39. package/dist/draft-run.d.ts +2 -0
  40. package/dist/draft-run.d.ts.map +1 -1
  41. package/dist/draft-run.js +4 -3
  42. package/dist/draft-run.js.map +1 -1
  43. package/dist/redesign-capture.d.ts +49 -0
  44. package/dist/redesign-capture.d.ts.map +1 -0
  45. package/dist/redesign-capture.js +135 -0
  46. package/dist/redesign-capture.js.map +1 -0
  47. package/dist/redesign-plan-client.d.ts +32 -0
  48. package/dist/redesign-plan-client.d.ts.map +1 -0
  49. package/dist/redesign-plan-client.js +80 -0
  50. package/dist/redesign-plan-client.js.map +1 -0
  51. package/dist/redesign-plan-identity.d.ts +8 -0
  52. package/dist/redesign-plan-identity.d.ts.map +1 -0
  53. package/dist/redesign-plan-identity.js +15 -0
  54. package/dist/redesign-plan-identity.js.map +1 -0
  55. package/dist/redesign-plan.d.ts +30 -0
  56. package/dist/redesign-plan.d.ts.map +1 -0
  57. package/dist/redesign-plan.js +99 -0
  58. package/dist/redesign-plan.js.map +1 -0
  59. package/dist/redesign-workspace.d.ts +116 -0
  60. package/dist/redesign-workspace.d.ts.map +1 -0
  61. package/dist/redesign-workspace.js +157 -0
  62. package/dist/redesign-workspace.js.map +1 -0
  63. package/dist/run-journal-commands.d.ts.map +1 -1
  64. package/dist/run-journal-commands.js +10 -0
  65. package/dist/run-journal-commands.js.map +1 -1
  66. package/open-design.json +2 -2
  67. package/package.json +2 -2
  68. package/prototype-kit/build.mjs +9 -3
  69. package/prototype-kit/lib/action-target.mjs +26 -0
  70. package/prototype-kit/lib/local-document.mjs +16 -0
  71. package/prototype-kit/lib/runtime-check.mjs +83 -19
  72. package/prototype-kit/lib/shell-runtime-equivalence.mjs +41 -0
  73. package/prototype-kit/polish/harm.mjs +27 -5
  74. package/prototype-kit/polish/measure.mjs +101 -5
  75. package/prototype-kit/polish/overrides.mjs +32 -3
  76. package/prototype-kit/polish/polish.mjs +23 -11
  77. package/prototype-kit/polish/rules/align.mjs +73 -3
  78. package/prototype-kit/polish/rules/left-rail.mjs +2 -3
  79. package/prototype-kit/polish/rules/section-breathing.mjs +0 -1
  80. package/prototype-kit/polish/tests/fixtures/align/expect.json +1 -1
  81. package/prototype-kit/polish/tests/fixtures/align/fire.html +4 -1
  82. package/prototype-kit/polish/tests/fixtures/align/silent.html +8 -0
  83. package/prototype-kit/polish/tests/fixtures/align/zoom-constrained.html +17 -0
  84. package/prototype-kit/polish/tests/fixtures/harm/left-rail-contained.html +16 -0
  85. package/prototype-kit/polish/tests/fixtures/harm/left-rail-overflow.html +16 -0
  86. package/prototype-kit/polish/tests/fixtures/harm/nested-actions.html +6 -0
  87. package/prototype-kit/polish/tests/fixtures/harm/unidentified-parent.html +3 -0
  88. package/prototype-kit/polish/tests/fixtures/shell-seam/fire.html +1 -1
  89. package/prototype-kit/polish/tests/harm-check.mjs +131 -2
  90. package/prototype-kit/polish/tests/rules-check.mjs +7 -2
  91. package/prototype-kit/runtime/proto.js +4 -1
  92. package/prototype-kit/tests/adversarial-runtime.mjs +3 -0
  93. package/prototype-kit/tests/align-rule-check.mjs +105 -0
  94. package/prototype-kit/tests/fixtures/interaction-runtime/review-bottom-action.html +8 -0
  95. package/prototype-kit/tests/offline-check.mjs +17 -1
  96. package/prototype-kit/tests/rules-check.mjs +67 -1
  97. package/prototype-kit/tests/shell-stitching-runtime.mjs +15 -8
@@ -1,9 +1,4 @@
1
- import { readFile, writeFile } from 'node:fs/promises';
2
- import { nextWaitProcessIsAlive, } from './next-wait-process.js';
3
- // Dispatch requests normally finish in under two minutes. Ten minutes matches
4
- // the service's dispatch-settle recovery horizon and bounds PID reuse while a
5
- // second shell distinguishes an active foreground caller from a crashed one.
6
- const DRAFT_DISPATCH_ATTEMPT_ACTIVE_MS = 10 * 60_000;
1
+ import { writeFile } from 'node:fs/promises';
7
2
  export const startDraftDispatchAttempt = async (args) => {
8
3
  const record = {
9
4
  version: 2,
@@ -20,23 +15,4 @@ export const finishDraftDispatchAttempt = async (args) => {
20
15
  finishedAt: new Date().toISOString(),
21
16
  }, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
22
17
  };
23
- export const draftDispatchAttemptIsActive = async (args) => {
24
- try {
25
- const parsed = JSON.parse(await readFile(args.file, 'utf8'));
26
- if (parsed.runId !== args.runId
27
- || !Number.isSafeInteger(parsed.pid)
28
- || typeof parsed.startedAt !== 'string'
29
- || typeof parsed.finishedAt === 'string')
30
- return false;
31
- const startedAt = Date.parse(parsed.startedAt);
32
- const age = args.observedAt - startedAt;
33
- return Number.isFinite(startedAt)
34
- && age >= 0
35
- && age < DRAFT_DISPATCH_ATTEMPT_ACTIVE_MS
36
- && await (args.processIsAlive ?? nextWaitProcessIsAlive)(parsed.pid);
37
- }
38
- catch {
39
- return false;
40
- }
41
- };
42
18
  //# sourceMappingURL=draft-dispatch-attempt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft-dispatch-attempt.js","sourceRoot":"","sources":["../src/draft-dispatch-attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EACL,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAUhC,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,gCAAgC,GAAG,EAAE,GAAG,MAAM,CAAC;AAErD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAG/C,EAAuC,EAAE;IACxC,MAAM,MAAM,GAA+B;QACzC,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,EACT,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACtC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAClC,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,IAGhD,EAAiB,EAAE;IAClB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,GAAG,IAAI,CAAC,OAAO;QACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,IAKlD,EAAoB,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAK1D,CAAC;QACF,IACE,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;eACxB,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;eACjC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;eACpC,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACxC,OAAO,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;eAC5B,GAAG,IAAI,CAAC;eACR,GAAG,GAAG,gCAAgC;eACtC,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,sBAAsB,CAAC,CAAC,MAAM,CAAC,GAAa,CAAC,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"draft-dispatch-attempt.js","sourceRoot":"","sources":["../src/draft-dispatch-attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAU7C,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAG/C,EAAuC,EAAE;IACxC,MAAM,MAAM,GAA+B;QACzC,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,EACT,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACtC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAClC,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,IAGhD,EAAiB,EAAE;IAClB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3C,GAAG,IAAI,CAAC,OAAO;QACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC"}
@@ -19,6 +19,8 @@ export declare const draftCorpusKey: (args: {
19
19
  */
20
20
  export declare const draftLocalRunKey: (args: {
21
21
  query: string;
22
+ /** A hosted direction plan can deliberately retrieve against another query. */
23
+ corpusQuery?: string | null;
22
24
  candidateCount: number;
23
25
  redesignSourceSha256?: string | null;
24
26
  aspect: string;
@@ -1 +1 @@
1
- {"version":3,"file":"draft-identity.d.ts","sourceRoot":"","sources":["../src/draft-identity.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAMzD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,KAAG,MAUO,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,KAAG,MAYO,CAAC"}
1
+ {"version":3,"file":"draft-identity.d.ts","sourceRoot":"","sources":["../src/draft-identity.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAMzD;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,KAAG,MAUO,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,KAAG,MAaO,CAAC"}
@@ -29,6 +29,7 @@ export const draftLocalRunKey = (args) => [
29
29
  'v1',
30
30
  shortDigest([
31
31
  args.query,
32
+ args.corpusQuery ?? args.query,
32
33
  String(args.candidateCount),
33
34
  args.redesignSourceSha256 ?? '',
34
35
  args.aspect,
@@ -1 +1 @@
1
- {"version":3,"file":"draft-identity.js","sourceRoot":"","sources":["../src/draft-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAEzD,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;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAK9B,EAAU,EAAE,CAAC;IACZ,cAAc;IACd,IAAI;IACJ,WAAW,CAAC;QACV,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,IAAI;QACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAClB,IAAI,CAAC,oBAAoB,IAAI,EAAE;QAC/B,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACd,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAOhC,EAAU,EAAE,CAAC;IACZ,WAAW;IACX,IAAI;IACJ,WAAW,CAAC;QACV,IAAI,CAAC,KAAK;QACV,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3B,IAAI,CAAC,oBAAoB,IAAI,EAAE;QAC/B,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,cAAc,IAAI,EAAE;QACzB,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACd,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"draft-identity.js","sourceRoot":"","sources":["../src/draft-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAEzD,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;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAK9B,EAAU,EAAE,CAAC;IACZ,cAAc;IACd,IAAI;IACJ,WAAW,CAAC;QACV,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,IAAI;QACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAClB,IAAI,CAAC,oBAAoB,IAAI,EAAE;QAC/B,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACd,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAShC,EAAU,EAAE,CAAC;IACZ,WAAW;IACX,IAAI;IACJ,WAAW,CAAC;QACV,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK;QAC9B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3B,IAAI,CAAC,oBAAoB,IAAI,EAAE;QAC/B,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,IAAI;QACT,IAAI,CAAC,cAAc,IAAI,EAAE;QACzB,uBAAuB;KACxB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CACd,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC"}
@@ -19,7 +19,9 @@ export type PrepareDraftRunInput = {
19
19
  client: InspirationClient;
20
20
  hostedClient: HostedDraftClaimClient;
21
21
  origin: string;
22
+ /** Create-run concept; may intentionally differ from the corpus search query. */
22
23
  query: string;
24
+ corpusQuery?: string;
23
25
  mode: DraftMode;
24
26
  aspect: DraftAspect;
25
27
  candidateCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"draft-run.d.ts","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAElB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAOpE,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,6FAA6F;AAE7F,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,6BAA6B,IAA6B,CAAC;AAIxE,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,KAAG,MAKF,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9D,KAAK,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,sBAAsB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,4BAA4B,CAAC;QACvC,KAAK,EAAE,yBAAyB,CAAC;KAClC,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAkBF,eAAO,MAAM,eAAe,GAAU,OAAO,oBAAoB,KAAG,OAAO,CAAC,WAAW,CAiHtF,CAAC"}
1
+ {"version":3,"file":"draft-run.d.ts","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAElB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAOpE,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAE9B,6FAA6F;AAE7F,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,6BAA6B,IAA6B,CAAC;AAIxE,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC,KAAG,MAKF,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9D,KAAK,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,sBAAsB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,4BAA4B,CAAC;QACvC,KAAK,EAAE,yBAAyB,CAAC;KAClC,CAAC;IACF,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAkBF,eAAO,MAAM,eAAe,GAAU,OAAO,oBAAoB,KAAG,OAAO,CAAC,WAAW,CAkHtF,CAAC"}
package/dist/draft-run.js CHANGED
@@ -28,13 +28,14 @@ const assertClaimedSlots = (expected, actual) => {
28
28
  };
29
29
  export const prepareDraftRun = async (input) => {
30
30
  const now = input.now ?? (() => new Date());
31
+ const corpusQuery = input.corpusQuery ?? input.query;
31
32
  const manifest = await downloadCorpusInspiration({
32
33
  client: input.client,
33
- request: { q: input.query, mode: DRAFT_CORPUS_MODE, k: input.candidateCount },
34
+ request: { q: corpusQuery, mode: DRAFT_CORPUS_MODE, k: input.candidateCount },
34
35
  outDir: input.paths.referencesDir,
35
36
  origin: input.origin,
36
37
  idempotencyKey: draftRunCorpusKey({
37
- query: input.query,
38
+ query: corpusQuery,
38
39
  candidateCount: input.candidateCount,
39
40
  redesignSourceSha256: input.redesignSource?.sha256 ?? null,
40
41
  }),
@@ -112,7 +113,7 @@ export const prepareDraftRun = async (input) => {
112
113
  ? { path: input.redesignSource.path, sha256: input.redesignSource.sha256 }
113
114
  : null,
114
115
  corpus: {
115
- query: input.query,
116
+ query: corpusQuery,
116
117
  mode: manifest.response.mode,
117
118
  setId: manifest.response.setId,
118
119
  idempotencyKey: manifest.idempotencyKey,
@@ -1 +1 @@
1
- {"version":3,"file":"draft-run.js","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft-run.js","sourceRoot":"","sources":["../src/draft-run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { RedesignCapturedPageRecord } from './redesign-workspace.js';
2
+ /**
3
+ * Stage 1: full-height screenshots of a target site's key pages.
4
+ *
5
+ * Discovery reads one page's HTML over `fetch` and keeps same-origin links
6
+ * found in `nav`/`header`/`footer` (where a site states its own key pages),
7
+ * falling back to the whole document when none of those hold a link. It never
8
+ * launches a browser: link discovery is free and must stay that way so
9
+ * `--dry-run` can report a page count without paying for a screenshot.
10
+ *
11
+ * Screenshotting is the one real Playwright dependency in this package (every
12
+ * other stage buys through the hosted API). `capturePage` is injected so
13
+ * tests exercise the stage's plumbing — file layout, hashing, the record —
14
+ * without a real browser or network call; the default implementation is only
15
+ * reached in production.
16
+ */
17
+ export declare const REDESIGN_DEFAULT_MAX_PAGES = 5;
18
+ /**
19
+ * Same-origin URLs a caller would call this site's key pages: the homepage
20
+ * first, then links found in navigational chrome, deduplicated by pathname
21
+ * and capped at `maxPages`.
22
+ */
23
+ export declare const discoverRedesignPageUrls: (args: {
24
+ url: string;
25
+ maxPages?: number;
26
+ fetchHtml?: (url: string) => Promise<string>;
27
+ }) => Promise<string[]>;
28
+ export type RedesignCapturePageResult = {
29
+ width: number;
30
+ height: number;
31
+ };
32
+ export type RedesignCaptureDependencies = {
33
+ /**
34
+ * Injectable browser boundary. Test callers can return a frozen inventory
35
+ * directly, so capture-stage record plumbing has no browser dependency.
36
+ */
37
+ capturePage?: (args: {
38
+ url: string;
39
+ outFile: string;
40
+ pageId: string;
41
+ }) => Promise<RedesignCapturePageResult>;
42
+ };
43
+ /** Full-height screenshots of every discovered URL, written into `outDir`. */
44
+ export declare const captureRedesignPages: (args: {
45
+ urls: readonly string[];
46
+ outDir: string;
47
+ dependencies?: RedesignCaptureDependencies;
48
+ }) => Promise<RedesignCapturedPageRecord[]>;
49
+ //# sourceMappingURL=redesign-capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redesign-capture.d.ts","sourceRoot":"","sources":["../src/redesign-capture.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAE1E;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAyB5C;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAU,MAAM;IACnD,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9C,KAAG,OAAO,CAAC,MAAM,EAAE,CA6BnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAC1C,CAAC;AAuBF,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,GAAU,MAAM;IAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,2BAA2B,CAAC;CAC5C,KAAG,OAAO,CAAC,0BAA0B,EAAE,CA4BvC,CAAC"}
@@ -0,0 +1,135 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { mkdir, readFile, stat } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { parseHTML } from 'linkedom';
5
+ import { resolvePrototypeBrowserProvisioning } from './prototype-browsers.js';
6
+ /**
7
+ * Stage 1: full-height screenshots of a target site's key pages.
8
+ *
9
+ * Discovery reads one page's HTML over `fetch` and keeps same-origin links
10
+ * found in `nav`/`header`/`footer` (where a site states its own key pages),
11
+ * falling back to the whole document when none of those hold a link. It never
12
+ * launches a browser: link discovery is free and must stay that way so
13
+ * `--dry-run` can report a page count without paying for a screenshot.
14
+ *
15
+ * Screenshotting is the one real Playwright dependency in this package (every
16
+ * other stage buys through the hosted API). `capturePage` is injected so
17
+ * tests exercise the stage's plumbing — file layout, hashing, the record —
18
+ * without a real browser or network call; the default implementation is only
19
+ * reached in production.
20
+ */
21
+ export const REDESIGN_DEFAULT_MAX_PAGES = 5;
22
+ const CAPTURE_VIEWPORT = { width: 1440, height: 900 };
23
+ const NAVIGATION_SELECTORS = ['nav', 'header', 'footer'];
24
+ const pageId = (url, index) => {
25
+ const pathname = (() => {
26
+ try {
27
+ return new URL(url).pathname;
28
+ }
29
+ catch {
30
+ return `page-${index}`;
31
+ }
32
+ })();
33
+ const slug = pathname
34
+ .toLowerCase()
35
+ .replace(/[^a-z0-9]+/gu, '-')
36
+ .replace(/^-+|-+$/gu, '');
37
+ return slug || 'home';
38
+ };
39
+ const defaultFetchHtml = async (url) => {
40
+ const response = await fetch(url, { redirect: 'follow' });
41
+ if (!response.ok)
42
+ throw new Error(`${url} returned HTTP ${response.status}`);
43
+ return response.text();
44
+ };
45
+ /**
46
+ * Same-origin URLs a caller would call this site's key pages: the homepage
47
+ * first, then links found in navigational chrome, deduplicated by pathname
48
+ * and capped at `maxPages`.
49
+ */
50
+ export const discoverRedesignPageUrls = async (args) => {
51
+ const maxPages = args.maxPages ?? REDESIGN_DEFAULT_MAX_PAGES;
52
+ const origin = new URL(args.url);
53
+ const html = await (args.fetchHtml ?? defaultFetchHtml)(args.url);
54
+ const { document } = parseHTML(html);
55
+ const scopes = NAVIGATION_SELECTORS
56
+ .flatMap((selector) => Array.from(document.querySelectorAll(selector)));
57
+ const anchors = (scopes.length > 0 ? scopes : [document])
58
+ .flatMap((scope) => Array.from(scope.querySelectorAll('a[href]')));
59
+ const seen = new Set([origin.pathname || '/']);
60
+ const urls = [origin.toString()];
61
+ for (const anchor of anchors) {
62
+ if (urls.length >= maxPages)
63
+ break;
64
+ const href = anchor.getAttribute('href');
65
+ if (!href || href.startsWith('#') || href.startsWith('mailto:') || href.startsWith('tel:'))
66
+ continue;
67
+ const resolved = (() => {
68
+ try {
69
+ return new URL(href, origin);
70
+ }
71
+ catch {
72
+ return null;
73
+ }
74
+ })();
75
+ if (!resolved || resolved.origin !== origin.origin)
76
+ continue;
77
+ const key = resolved.pathname || '/';
78
+ if (seen.has(key))
79
+ continue;
80
+ seen.add(key);
81
+ urls.push(resolved.toString());
82
+ }
83
+ return urls.slice(0, maxPages);
84
+ };
85
+ const realCapturePage = async (args) => {
86
+ const provisioning = await resolvePrototypeBrowserProvisioning();
87
+ process.env.PLAYWRIGHT_BROWSERS_PATH = provisioning.browsersPath;
88
+ const { chromium } = await import('@playwright/test');
89
+ const browser = await chromium.launch();
90
+ try {
91
+ const page = await browser.newPage({ viewport: CAPTURE_VIEWPORT });
92
+ await page.goto(args.url, { waitUntil: 'networkidle' });
93
+ await page.screenshot({ path: args.outFile, fullPage: true });
94
+ const dimensions = await page.evaluate(() => ({
95
+ width: document.documentElement.scrollWidth,
96
+ height: document.documentElement.scrollHeight,
97
+ }));
98
+ return dimensions;
99
+ }
100
+ finally {
101
+ await browser.close();
102
+ }
103
+ };
104
+ /** Full-height screenshots of every discovered URL, written into `outDir`. */
105
+ export const captureRedesignPages = async (args) => {
106
+ await mkdir(args.outDir, { recursive: true });
107
+ const capture = args.dependencies?.capturePage ?? realCapturePage;
108
+ const used = new Set();
109
+ const pages = [];
110
+ for (const [index, url] of args.urls.entries()) {
111
+ let id = pageId(url, index);
112
+ while (used.has(id))
113
+ id = `${id}-${index}`;
114
+ used.add(id);
115
+ const outFile = path.join(args.outDir, `${id}.png`);
116
+ const captureResult = await capture({
117
+ url,
118
+ outFile,
119
+ pageId: id,
120
+ });
121
+ const bytes = await readFile(outFile);
122
+ const info = await stat(outFile);
123
+ pages.push({
124
+ id,
125
+ url,
126
+ path: outFile,
127
+ sha256: createHash('sha256').update(bytes).digest('hex'),
128
+ bytes: info.size,
129
+ width: captureResult.width,
130
+ height: captureResult.height,
131
+ });
132
+ }
133
+ return pages;
134
+ };
135
+ //# sourceMappingURL=redesign-capture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redesign-capture.js","sourceRoot":"","sources":["../src/redesign-capture.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { type ConversionConfig } from './config.js';
2
+ import type { CreateRetainPolicy } from './branch-client.js';
3
+ export type HostedRedesignPlanRequest = {
4
+ direction: string;
5
+ capture?: {
6
+ sha256: string;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ referenceImageAttached: boolean;
11
+ };
12
+ export type HostedRedesignPlanResponse = {
13
+ concept: string;
14
+ retain: CreateRetainPolicy;
15
+ corpusQuery: string;
16
+ /** Stable paid-effect identity as issued by the service. */
17
+ effectIdentity: string;
18
+ replayed: boolean;
19
+ degradation?: {
20
+ reasons: string[];
21
+ };
22
+ };
23
+ export type HostedRedesignPlanClientOptions = Partial<ConversionConfig> & {
24
+ fetch?: typeof globalThis.fetch;
25
+ };
26
+ /** Authenticated boundary for the durable hosted direction-plan effect. */
27
+ export declare class TwelveUiRedesignPlanClient {
28
+ #private;
29
+ constructor(options?: HostedRedesignPlanClientOptions);
30
+ plan(request: HostedRedesignPlanRequest, idempotencyKey: string, signal?: AbortSignal): Promise<HostedRedesignPlanResponse>;
31
+ }
32
+ //# sourceMappingURL=redesign-plan-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redesign-plan-client.d.ts","sourceRoot":"","sources":["../src/redesign-plan-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmD,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,sBAAsB,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG;IACxE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC,CAAC;AAuDF,2EAA2E;AAC3E,qBAAa,0BAA0B;;gBAIzB,OAAO,GAAE,+BAAoC;IAKnD,IAAI,CACR,OAAO,EAAE,yBAAyB,EAClC,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,0BAA0B,CAAC;CAsBvC"}
@@ -0,0 +1,80 @@
1
+ import { appendClientAuthGuidance } from './client-auth-guidance.js';
2
+ import { declareClientVersion } from './client-version.js';
3
+ import { normalizeConversionOrigin, readConversionConfig } from './config.js';
4
+ import { normalizeOptionalIdempotencyKey } from './idempotency-key.js';
5
+ const object = (value) => (value !== null && typeof value === 'object' && !Array.isArray(value)
6
+ ? value
7
+ : null);
8
+ const requiredText = (value, field) => {
9
+ if (typeof value !== 'string' || !value.trim()) {
10
+ throw new Error(`Hosted redesign plan returned invalid ${field}.`);
11
+ }
12
+ return value;
13
+ };
14
+ const retain = (value) => {
15
+ const parsed = object(value);
16
+ const values = (key) => {
17
+ const entries = parsed?.[key];
18
+ if (!Array.isArray(entries) || entries.some((entry) => typeof entry !== 'string' || !entry.trim())) {
19
+ throw new Error(`Hosted redesign plan returned invalid retain.${key}.`);
20
+ }
21
+ return [...entries];
22
+ };
23
+ const notes = parsed?.notes;
24
+ if (notes !== undefined && typeof notes !== 'string') {
25
+ throw new Error('Hosted redesign plan returned invalid retain.notes.');
26
+ }
27
+ return { include: values('include'), exclude: values('exclude'), ...(notes === undefined ? {} : { notes }) };
28
+ };
29
+ const degradation = (value) => {
30
+ const parsed = object(value);
31
+ if (!Array.isArray(parsed?.reasons)
32
+ || parsed.reasons.some((reason) => typeof reason !== 'string' || !reason.trim())) {
33
+ throw new Error('Hosted redesign plan returned invalid degradation.reasons.');
34
+ }
35
+ return { reasons: [...parsed.reasons] };
36
+ };
37
+ const parseResponse = (payload) => {
38
+ const parsed = object(payload);
39
+ if (!parsed || typeof parsed.replayed !== 'boolean') {
40
+ throw new Error('The hosted redesign plan returned an unexpected response.');
41
+ }
42
+ return {
43
+ concept: requiredText(parsed.concept, 'concept'),
44
+ retain: retain(parsed.retain),
45
+ corpusQuery: requiredText(parsed.corpusQuery, 'corpusQuery'),
46
+ effectIdentity: requiredText(parsed.effectIdentity, 'effectIdentity'),
47
+ replayed: parsed.replayed,
48
+ ...(parsed.degradation === undefined ? {} : { degradation: degradation(parsed.degradation) }),
49
+ };
50
+ };
51
+ /** Authenticated boundary for the durable hosted direction-plan effect. */
52
+ export class TwelveUiRedesignPlanClient {
53
+ #config;
54
+ #fetch;
55
+ constructor(options = {}) {
56
+ this.#config = readConversionConfig(options);
57
+ this.#fetch = options.fetch ?? globalThis.fetch;
58
+ }
59
+ async plan(request, idempotencyKey, signal) {
60
+ const key = normalizeOptionalIdempotencyKey(idempotencyKey, 'idempotencyKey');
61
+ if (!key)
62
+ throw new TypeError('idempotencyKey is required');
63
+ const headers = new Headers({ 'content-type': 'application/json', 'Idempotency-Key': key });
64
+ headers.set('authorization', `Bearer ${this.#config.apiKey}`);
65
+ headers.set('accept', 'application/json');
66
+ declareClientVersion(headers);
67
+ const response = await this.#fetch(`${normalizeConversionOrigin(this.#config.origin)}/api/v1/create/plan`, {
68
+ method: 'POST',
69
+ headers,
70
+ body: JSON.stringify(request),
71
+ ...(signal ? { signal } : {}),
72
+ });
73
+ if (!response.ok) {
74
+ const detail = await response.text().catch(() => '');
75
+ throw new Error(appendClientAuthGuidance(`12UI redesign plan request failed (${response.status}): ${detail.slice(0, 500)}`, response.status));
76
+ }
77
+ return parseResponse(await response.json());
78
+ }
79
+ }
80
+ //# sourceMappingURL=redesign-plan-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redesign-plan-client.js","sourceRoot":"","sources":["../src/redesign-plan-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAyB,MAAM,aAAa,CAAC;AACrG,OAAO,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAuBvE,MAAM,MAAM,GAAG,CAAC,KAAc,EAAkC,EAAE,CAAC,CACjE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClE,CAAC,CAAC,KAAgC;IAClC,CAAC,CAAC,IAAI,CACT,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,KAAa,EAAU,EAAE;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,KAAc,EAAsB,EAAE;IACpD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,CAAC,GAA0B,EAAY,EAAE;QACtD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnG,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,GAAG,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,CAAC,GAAG,OAAO,CAAa,CAAC;IAClC,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC/G,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAc,EAAyB,EAAE;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;WAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAa,EAAE,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAgB,EAA8B,EAAE;IACrE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;QAChD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC7B,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;QAC5D,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,gBAAgB,CAAC;QACrE,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;KAC9F,CAAC;AACJ,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,OAAO,0BAA0B;IAC5B,OAAO,CAAmB;IAC1B,MAAM,CAA0B;IAEzC,YAAY,UAA2C,EAAE;QACvD,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,IAAI,CACR,OAAkC,EAClC,cAAsB,EACtB,MAAoB;QAEpB,MAAM,GAAG,GAAG,+BAA+B,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAC9E,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC1C,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE;YACzG,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CACtC,sCAAsC,QAAQ,CAAC,MAAM,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EACjF,QAAQ,CAAC,MAAM,CAChB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import type { HostedRedesignPlanRequest } from './redesign-plan-client.js';
2
+ /**
3
+ * The hosted planner is a paid, durable effect. This key binds precisely the
4
+ * capture facts it may use, so an interrupted request can replay without
5
+ * deriving a new direction plan or silently moving to changed page evidence.
6
+ */
7
+ export declare const redesignPlanIdempotencyKey: (request: HostedRedesignPlanRequest) => string;
8
+ //# sourceMappingURL=redesign-plan-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redesign-plan-identity.d.ts","sourceRoot":"","sources":["../src/redesign-plan-identity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,GAAI,SAAS,yBAAyB,KAAG,MAO/E,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { createHash } from 'node:crypto';
2
+ /**
3
+ * The hosted planner is a paid, durable effect. This key binds precisely the
4
+ * capture facts it may use, so an interrupted request can replay without
5
+ * deriving a new direction plan or silently moving to changed page evidence.
6
+ */
7
+ export const redesignPlanIdempotencyKey = (request) => {
8
+ const digest = createHash('sha256').update(JSON.stringify({
9
+ direction: request.direction,
10
+ capture: request.capture ?? null,
11
+ referenceImageAttached: request.referenceImageAttached,
12
+ })).digest('hex');
13
+ return `redesign-plan:v1:${digest}`;
14
+ };
15
+ //# sourceMappingURL=redesign-plan-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redesign-plan-identity.js","sourceRoot":"","sources":["../src/redesign-plan-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,OAAkC,EAAU,EAAE;IACvF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QACxD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QAChC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;KACvD,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,oBAAoB,MAAM,EAAE,CAAC;AACtC,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { ConversionModel } from './conversion-models.js';
2
+ import type { RedesignStage } from './redesign-workspace.js';
3
+ export type RedesignPlanStage = {
4
+ stage: RedesignStage;
5
+ paid: boolean;
6
+ wouldBuy: string;
7
+ typicalSeconds: number;
8
+ plannedCostUsd: number;
9
+ };
10
+ export type RedesignPlan = {
11
+ url: string;
12
+ direction: string;
13
+ pageCount: number;
14
+ candidateCount: number;
15
+ maxScreens: number;
16
+ conversionModel: ConversionModel;
17
+ stages: RedesignPlanStage[];
18
+ typicalSecondsTotal: number;
19
+ plannedCostUsdTotal: number;
20
+ pricingBasis: string;
21
+ };
22
+ export declare const buildRedesignPlan: (args: {
23
+ url: string;
24
+ direction: string;
25
+ pageCount: number;
26
+ candidateCount: number;
27
+ maxScreens: number;
28
+ conversionModel: ConversionModel;
29
+ }) => RedesignPlan;
30
+ //# sourceMappingURL=redesign-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redesign-plan.d.ts","sourceRoot":"","sources":["../src/redesign-plan.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAgC7D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,eAAe,CAAC;CAClC,KAAG,YAyEH,CAAC"}