@12ui/design 0.2.56 → 0.2.57

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 (175) hide show
  1. package/SKILL.md +1 -1
  2. package/dist/branch-client.d.ts +2 -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/cli-arguments.d.ts.map +1 -1
  7. package/dist/cli-arguments.js +1 -0
  8. package/dist/cli-arguments.js.map +1 -1
  9. package/dist/cli-convert-command.d.ts.map +1 -1
  10. package/dist/cli-convert-command.js +110 -15
  11. package/dist/cli-convert-command.js.map +1 -1
  12. package/dist/cli-corpus-command.d.ts.map +1 -1
  13. package/dist/cli-corpus-command.js +5 -2
  14. package/dist/cli-corpus-command.js.map +1 -1
  15. package/dist/cli-corpus-evidence.d.ts.map +1 -1
  16. package/dist/cli-corpus-evidence.js +2 -1
  17. package/dist/cli-corpus-evidence.js.map +1 -1
  18. package/dist/cli-corpus-reference-downloads.d.ts +1 -0
  19. package/dist/cli-corpus-reference-downloads.d.ts.map +1 -1
  20. package/dist/cli-corpus-reference-downloads.js +13 -3
  21. package/dist/cli-corpus-reference-downloads.js.map +1 -1
  22. package/dist/cli-corpus-types.d.ts +2 -0
  23. package/dist/cli-corpus-types.d.ts.map +1 -1
  24. package/dist/cli-help/design.d.ts +1 -1
  25. package/dist/cli-help/design.d.ts.map +1 -1
  26. package/dist/cli-help/design.js +6 -2
  27. package/dist/cli-help/design.js.map +1 -1
  28. package/dist/cli-help/index.d.ts +1 -1
  29. package/dist/cli-improve-command.d.ts.map +1 -1
  30. package/dist/cli-improve-command.js +68 -5
  31. package/dist/cli-improve-command.js.map +1 -1
  32. package/dist/cli-usage.js +2 -2
  33. package/dist/concept-input.d.ts +21 -0
  34. package/dist/concept-input.d.ts.map +1 -1
  35. package/dist/concept-input.js +32 -10
  36. package/dist/concept-input.js.map +1 -1
  37. package/dist/conversion-client.d.ts +39 -1
  38. package/dist/conversion-client.d.ts.map +1 -1
  39. package/dist/conversion-client.js +205 -3
  40. package/dist/conversion-client.js.map +1 -1
  41. package/dist/corpus-client.d.ts +7 -1
  42. package/dist/corpus-client.d.ts.map +1 -1
  43. package/dist/corpus-client.js +6 -2
  44. package/dist/corpus-client.js.map +1 -1
  45. package/dist/corpus-reference-download-retry.d.ts +68 -0
  46. package/dist/corpus-reference-download-retry.d.ts.map +1 -0
  47. package/dist/corpus-reference-download-retry.js +123 -0
  48. package/dist/corpus-reference-download-retry.js.map +1 -0
  49. package/dist/corpus-request-error.d.ts +17 -0
  50. package/dist/corpus-request-error.d.ts.map +1 -0
  51. package/dist/corpus-request-error.js +21 -0
  52. package/dist/corpus-request-error.js.map +1 -0
  53. package/dist/draft-run.d.ts +9 -0
  54. package/dist/draft-run.d.ts.map +1 -1
  55. package/dist/draft-run.js +22 -5
  56. package/dist/draft-run.js.map +1 -1
  57. package/dist/draft-workspace.d.ts +2 -1
  58. package/dist/draft-workspace.d.ts.map +1 -1
  59. package/dist/draft-workspace.js.map +1 -1
  60. package/dist/hosted-draft-identity.d.ts +1 -0
  61. package/dist/hosted-draft-identity.d.ts.map +1 -1
  62. package/dist/hosted-draft-identity.js +1 -0
  63. package/dist/hosted-draft-identity.js.map +1 -1
  64. package/dist/improve-added-specs.d.ts +9 -0
  65. package/dist/improve-added-specs.d.ts.map +1 -1
  66. package/dist/improve-added-specs.js +28 -7
  67. package/dist/improve-added-specs.js.map +1 -1
  68. package/dist/improve-bootstrap-secret.d.ts +35 -0
  69. package/dist/improve-bootstrap-secret.d.ts.map +1 -0
  70. package/dist/improve-bootstrap-secret.js +61 -0
  71. package/dist/improve-bootstrap-secret.js.map +1 -0
  72. package/dist/improve-capture-redirect.d.ts +46 -0
  73. package/dist/improve-capture-redirect.d.ts.map +1 -0
  74. package/dist/improve-capture-redirect.js +68 -0
  75. package/dist/improve-capture-redirect.js.map +1 -0
  76. package/dist/improve-concept.d.ts +14 -1
  77. package/dist/improve-concept.d.ts.map +1 -1
  78. package/dist/improve-concept.js +29 -8
  79. package/dist/improve-concept.js.map +1 -1
  80. package/dist/improve-conversion-attempts.d.ts +9 -5
  81. package/dist/improve-conversion-attempts.d.ts.map +1 -1
  82. package/dist/improve-conversion-attempts.js +6 -1
  83. package/dist/improve-conversion-attempts.js.map +1 -1
  84. package/dist/improve-conversion-stage.d.ts +7 -0
  85. package/dist/improve-conversion-stage.d.ts.map +1 -1
  86. package/dist/improve-conversion-stage.js +188 -171
  87. package/dist/improve-conversion-stage.js.map +1 -1
  88. package/dist/improve-convert-progress.d.ts +36 -0
  89. package/dist/improve-convert-progress.d.ts.map +1 -0
  90. package/dist/improve-convert-progress.js +43 -0
  91. package/dist/improve-convert-progress.js.map +1 -0
  92. package/dist/improve-convert-resilience.d.ts +44 -53
  93. package/dist/improve-convert-resilience.d.ts.map +1 -1
  94. package/dist/improve-convert-resilience.js +51 -58
  95. package/dist/improve-convert-resilience.js.map +1 -1
  96. package/dist/improve-delivery-stages.d.ts.map +1 -1
  97. package/dist/improve-delivery-stages.js +4 -0
  98. package/dist/improve-delivery-stages.js.map +1 -1
  99. package/dist/improve-generation-stages.d.ts.map +1 -1
  100. package/dist/improve-generation-stages.js +32 -3
  101. package/dist/improve-generation-stages.js.map +1 -1
  102. package/dist/improve-icon-svg.d.ts +47 -0
  103. package/dist/improve-icon-svg.d.ts.map +1 -0
  104. package/dist/improve-icon-svg.js +83 -0
  105. package/dist/improve-icon-svg.js.map +1 -0
  106. package/dist/improve-kit-ignore.d.ts +32 -0
  107. package/dist/improve-kit-ignore.d.ts.map +1 -0
  108. package/dist/improve-kit-ignore.js +111 -0
  109. package/dist/improve-kit-ignore.js.map +1 -0
  110. package/dist/improve-kit-readme.d.ts.map +1 -1
  111. package/dist/improve-kit-readme.js +101 -11
  112. package/dist/improve-kit-readme.js.map +1 -1
  113. package/dist/improve-kit-stall.d.ts +48 -2
  114. package/dist/improve-kit-stall.d.ts.map +1 -1
  115. package/dist/improve-kit-stall.js +167 -15
  116. package/dist/improve-kit-stall.js.map +1 -1
  117. package/dist/improve-kit-status.d.ts +36 -0
  118. package/dist/improve-kit-status.d.ts.map +1 -1
  119. package/dist/improve-kit-status.js +74 -4
  120. package/dist/improve-kit-status.js.map +1 -1
  121. package/dist/improve-options.d.ts +6 -0
  122. package/dist/improve-options.d.ts.map +1 -1
  123. package/dist/improve-options.js +3 -0
  124. package/dist/improve-options.js.map +1 -1
  125. package/dist/improve-plan-annotated-render.d.ts +13 -1
  126. package/dist/improve-plan-annotated-render.d.ts.map +1 -1
  127. package/dist/improve-plan-annotated-render.js +21 -0
  128. package/dist/improve-plan-annotated-render.js.map +1 -1
  129. package/dist/improve-plan-annotator.d.ts +5 -0
  130. package/dist/improve-plan-annotator.d.ts.map +1 -1
  131. package/dist/improve-plan-annotator.js +1 -0
  132. package/dist/improve-plan-annotator.js.map +1 -1
  133. package/dist/improve-run-summary.d.ts.map +1 -1
  134. package/dist/improve-run-summary.js +51 -5
  135. package/dist/improve-run-summary.js.map +1 -1
  136. package/dist/improve-stage-shared.d.ts +39 -1
  137. package/dist/improve-stage-shared.d.ts.map +1 -1
  138. package/dist/improve-stage-shared.js +80 -3
  139. package/dist/improve-stage-shared.js.map +1 -1
  140. package/dist/improve-terminal-event.d.ts.map +1 -1
  141. package/dist/improve-terminal-event.js +7 -1
  142. package/dist/improve-terminal-event.js.map +1 -1
  143. package/dist/improve-token-patch.d.ts +2 -0
  144. package/dist/improve-token-patch.d.ts.map +1 -1
  145. package/dist/improve-token-patch.js +23 -5
  146. package/dist/improve-token-patch.js.map +1 -1
  147. package/dist/improve-workspace.d.ts +84 -7
  148. package/dist/improve-workspace.d.ts.map +1 -1
  149. package/dist/improve-workspace.js +16 -1
  150. package/dist/improve-workspace.js.map +1 -1
  151. package/dist/index.d.ts +2 -1
  152. package/dist/index.d.ts.map +1 -1
  153. package/dist/index.js +1 -0
  154. package/dist/index.js.map +1 -1
  155. package/dist/legacy-skill-catalog.d.ts.map +1 -1
  156. package/dist/legacy-skill-catalog.js +123 -0
  157. package/dist/legacy-skill-catalog.js.map +1 -1
  158. package/dist/mcp-tool-definitions.js +1 -1
  159. package/dist/mcp-tool-definitions.js.map +1 -1
  160. package/dist/mcp-tool-handler.d.ts.map +1 -1
  161. package/dist/mcp-tool-handler.js +3 -0
  162. package/dist/mcp-tool-handler.js.map +1 -1
  163. package/dist/redesign-capture.d.ts +1 -0
  164. package/dist/redesign-capture.d.ts.map +1 -1
  165. package/dist/redesign-capture.js +6 -0
  166. package/dist/redesign-capture.js.map +1 -1
  167. package/dist/responsive-alternative-materializer.d.ts +19 -0
  168. package/dist/responsive-alternative-materializer.d.ts.map +1 -0
  169. package/dist/responsive-alternative-materializer.js +76 -0
  170. package/dist/responsive-alternative-materializer.js.map +1 -0
  171. package/open-design.json +2 -2
  172. package/package.json +1 -1
  173. package/skills/12ui-design/SKILL.md +7 -1
  174. package/skills/12ui-design/improve.md +20 -5
  175. package/skills/12ui-design/inspire.md +1 -1
@@ -0,0 +1,35 @@
1
+ /**
2
+ * The bootstrap triple is a credential, and the kit is written inside a
3
+ * repository (F31).
4
+ *
5
+ * `--bootstrap 'http://host/auth/callback?token=…||**\/app'` is how a lane
6
+ * seats an authenticated session before capture, and it worked — zendesk's app
7
+ * route is the wave's first successful authenticated capture. But the value
8
+ * was persisted verbatim into `improve.json`, and `improve.json` sits at
9
+ * `.improve/<surface>/` inside the working tree. Mode 0600 does not survive a
10
+ * commit, and F17 is the standing proof that kits get swept in by `git add -A`
11
+ * (typeform, 100.8 MiB); a committed kit would put a live session token in
12
+ * history permanently.
13
+ *
14
+ * So the durable record keeps the shape and not the secret: origin and path as
15
+ * written, every query value and any fragment replaced, plus a sha256 of the
16
+ * original so a later run can tell whether it was handed the same value. The
17
+ * live triple exists only in the parsed options for the length of the capture.
18
+ * Redaction is idempotent, so re-writing an older record scrubs it.
19
+ */
20
+ export declare const IMPROVE_REDACTED = "<redacted>";
21
+ /** The durable form of one `--bootstrap` triple: shape kept, secrets removed. */
22
+ export declare const redactImproveBootstrap: (value: string) => string;
23
+ /** Identity of the original value, so a replay can tell it was handed the same one. */
24
+ export declare const improveBootstrapDigest: (value: string) => string;
25
+ /** The two record fields, built together so neither can be written without the other. */
26
+ export declare const improveBootstrapRecordFields: (values: readonly string[]) => {
27
+ bootstrap: string[];
28
+ bootstrapSha256: string[];
29
+ };
30
+ /**
31
+ * What a resume is told when the kit captured with `--bootstrap` and this run
32
+ * passed none. The record cannot replay it: the live value was never stored.
33
+ */
34
+ export declare const IMPROVE_BOOTSTRAP_NOT_STORED: string;
35
+ //# sourceMappingURL=improve-bootstrap-secret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-bootstrap-secret.d.ts","sourceRoot":"","sources":["../src/improve-bootstrap-secret.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAyB7C,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MACf,CAAC;AAEzC,uFAAuF;AACvF,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,KAAG,MACjB,CAAC;AAEvC,yFAAyF;AACzF,eAAO,MAAM,4BAA4B,GAAI,QAAQ,SAAS,MAAM,EAAE,KAAG;IACvE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,EAAE,CAAC;CAI1B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAGkC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { createHash } from 'node:crypto';
2
+ /**
3
+ * The bootstrap triple is a credential, and the kit is written inside a
4
+ * repository (F31).
5
+ *
6
+ * `--bootstrap 'http://host/auth/callback?token=…||**\/app'` is how a lane
7
+ * seats an authenticated session before capture, and it worked — zendesk's app
8
+ * route is the wave's first successful authenticated capture. But the value
9
+ * was persisted verbatim into `improve.json`, and `improve.json` sits at
10
+ * `.improve/<surface>/` inside the working tree. Mode 0600 does not survive a
11
+ * commit, and F17 is the standing proof that kits get swept in by `git add -A`
12
+ * (typeform, 100.8 MiB); a committed kit would put a live session token in
13
+ * history permanently.
14
+ *
15
+ * So the durable record keeps the shape and not the secret: origin and path as
16
+ * written, every query value and any fragment replaced, plus a sha256 of the
17
+ * original so a later run can tell whether it was handed the same value. The
18
+ * live triple exists only in the parsed options for the length of the capture.
19
+ * Redaction is idempotent, so re-writing an older record scrubs it.
20
+ */
21
+ export const IMPROVE_REDACTED = '<redacted>';
22
+ const redactUserInfo = (field) => field.replace(/^(https?:\/\/)[^/@]+@/iu, `$1${IMPROVE_REDACTED}@`);
23
+ /**
24
+ * String surgery rather than URL parsing: a wait glob (`**\/app?token=…`) is
25
+ * not a URL, and re-serializing one would percent-encode the placeholder.
26
+ */
27
+ const redactField = (field) => {
28
+ const hash = field.indexOf('#');
29
+ const base = redactUserInfo(hash < 0 ? field : field.slice(0, hash));
30
+ const fragment = hash < 0 ? '' : `#${IMPROVE_REDACTED}`;
31
+ const query = base.indexOf('?');
32
+ if (query < 0)
33
+ return `${base}${fragment}`;
34
+ const redacted = base.slice(query + 1).split('&').map((pair) => {
35
+ if (!pair)
36
+ return pair;
37
+ const equals = pair.indexOf('=');
38
+ return equals < 0 ? IMPROVE_REDACTED : `${pair.slice(0, equals)}=${IMPROVE_REDACTED}`;
39
+ }).join('&');
40
+ return `${base.slice(0, query)}?${redacted}${fragment}`;
41
+ };
42
+ /** The durable form of one `--bootstrap` triple: shape kept, secrets removed. */
43
+ export const redactImproveBootstrap = (value) => value
44
+ .split('|').map(redactField).join('|');
45
+ /** Identity of the original value, so a replay can tell it was handed the same one. */
46
+ export const improveBootstrapDigest = (value) => createHash('sha256')
47
+ .update(value, 'utf8').digest('hex');
48
+ /** The two record fields, built together so neither can be written without the other. */
49
+ export const improveBootstrapRecordFields = (values) => ({
50
+ bootstrap: values.map(redactImproveBootstrap),
51
+ bootstrapSha256: values.map(improveBootstrapDigest),
52
+ });
53
+ /**
54
+ * What a resume is told when the kit captured with `--bootstrap` and this run
55
+ * passed none. The record cannot replay it: the live value was never stored.
56
+ */
57
+ export const IMPROVE_BOOTSTRAP_NOT_STORED = 'This kit captured with --bootstrap, and the live'
58
+ + ' bootstrap value is never stored: improve.json keeps only a redacted form and a sha256, so a'
59
+ + ' session token cannot leak through the kit. Nothing was captured or bought.'
60
+ + ' Pass --bootstrap again with the same triple to re-capture this page.';
61
+ //# sourceMappingURL=improve-bootstrap-secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-bootstrap-secret.js","sourceRoot":"","sources":["../src/improve-bootstrap-secret.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAC7D,yBAAyB,EACzB,KAAK,gBAAgB,GAAG,CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7D,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;IACxF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,QAAQ,GAAG,QAAQ,EAAE,CAAC;AAC1D,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK;KACnE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEzC,uFAAuF;AACvF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;KAClF,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvC,yFAAyF;AACzF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,MAAyB,EAGpE,EAAE,CAAC,CAAC;IACJ,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAC7C,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC;CACpD,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,kDAAkD;MAC1F,8FAA8F;MAC9F,6EAA6E;MAC7E,uEAAuE,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { ImproveRecord } from './improve-workspace.js';
2
+ /**
3
+ * Did this run photograph the page it was asked for?
4
+ *
5
+ * Notion's app kit is the whole argument for this module. The lane seated a
6
+ * real session, ran `12ui improve http://127.0.0.1:4300/app`, and capture
7
+ * followed the app's auth redirect to `/signin?next=%2Fapp`. Both URLs were
8
+ * recorded — the requested one in `improve.json`, the captured one in
9
+ * `current.domdoc.json` — and nothing compared them, so the run drafted four
10
+ * redesigns of a sign-in dialog, converted one, anchored a plan to it, passed
11
+ * the coverage gate at 100.0% DOM, and printed "Kit ready". $0.792 against a
12
+ * page nobody asked for, with every signal green.
13
+ *
14
+ * The gate cannot catch this: coverage scores target-vs-capture agreement, and
15
+ * both halves were the sign-in page. Only the two URLs disagree, and the check
16
+ * that reads them is free and deterministic — so it runs before any paid
17
+ * stage, not after.
18
+ */
19
+ export type ImproveCaptureRedirect = {
20
+ requested: string;
21
+ captured: string;
22
+ };
23
+ /** The two URLs when they name different pages, and nothing when they agree. */
24
+ export declare const improveCaptureRedirect: (record: ImproveRecord) => ImproveCaptureRedirect | undefined;
25
+ export declare const IMPROVE_REDIRECT_CAUSE: string;
26
+ /**
27
+ * The `Captured:` line, in one place, so the kit README and the end-of-run
28
+ * summary cannot describe the same redirect in two different ways. Absent when
29
+ * the captured page is the requested one — which is every healthy run, and the
30
+ * reason this line is not printed unconditionally.
31
+ */
32
+ export declare const improveCapturedUrlLine: (record: ImproveRecord) => string | undefined;
33
+ /**
34
+ * Refuse to spend against a page nobody asked for.
35
+ *
36
+ * The capture is already written when this throws, so nothing is lost and the
37
+ * next run replays it; what does not happen is the draft purchase and every
38
+ * paid stage after it. `--allow-redirect` is the opt-in for a redirect that
39
+ * was the point — a bootstrap that deliberately ends somewhere else.
40
+ */
41
+ export declare const assertImproveCaptureNotRedirected: (args: {
42
+ record: ImproveRecord;
43
+ allowRedirect: boolean;
44
+ runDir: string;
45
+ }) => void;
46
+ //# sourceMappingURL=improve-capture-redirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-capture-redirect.d.ts","sourceRoot":"","sources":["../src/improve-capture-redirect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,sBAAsB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAkB7E,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,aAAa,KACpB,sBAAsB,GAAG,SAS3B,CAAC;AAEF,eAAO,MAAM,sBAAsB,QACiD,CAAC;AAErF;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,aAAa,KAAG,MAAM,GAAG,SAMvE,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC,GAAI,MAAM;IACtD,MAAM,EAAE,aAAa,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,IAaH,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { CliRefusal } from './cli-refusal.js';
2
+ /**
3
+ * Origin plus path, with the hash and a trailing slash dropped.
4
+ *
5
+ * A redirect that only adds a query (`?next=…`, a tracking parameter, a
6
+ * session id) is still the requested page; a redirect that lands on a
7
+ * different path is a different page. `/app` and `/app/` are the same page.
8
+ */
9
+ const urlIdentity = (value) => {
10
+ try {
11
+ const url = new URL(value);
12
+ return `${url.origin}${url.pathname.replace(/\/+$/u, '') || '/'}`;
13
+ }
14
+ catch {
15
+ return undefined;
16
+ }
17
+ };
18
+ /** The two URLs when they name different pages, and nothing when they agree. */
19
+ export const improveCaptureRedirect = (record) => {
20
+ if (record.input.kind !== 'url')
21
+ return undefined;
22
+ const captured = record.capture?.capturedUrl;
23
+ if (!captured)
24
+ return undefined;
25
+ const requestedIdentity = urlIdentity(record.input.value);
26
+ const capturedIdentity = urlIdentity(captured);
27
+ if (!requestedIdentity || !capturedIdentity)
28
+ return undefined;
29
+ if (requestedIdentity === capturedIdentity)
30
+ return undefined;
31
+ return { requested: record.input.value, captured };
32
+ };
33
+ export const IMPROVE_REDIRECT_CAUSE = 'The page redirected, usually an auth gate:'
34
+ + ' seat the session first (--bootstrap), or pass the page that actually renders.';
35
+ /**
36
+ * The `Captured:` line, in one place, so the kit README and the end-of-run
37
+ * summary cannot describe the same redirect in two different ways. Absent when
38
+ * the captured page is the requested one — which is every healthy run, and the
39
+ * reason this line is not printed unconditionally.
40
+ */
41
+ export const improveCapturedUrlLine = (record) => {
42
+ const redirect = improveCaptureRedirect(record);
43
+ return redirect
44
+ ? `Captured: ${redirect.captured} — NOT the requested ${redirect.requested}.`
45
+ + ` ${IMPROVE_REDIRECT_CAUSE}`
46
+ : undefined;
47
+ };
48
+ /**
49
+ * Refuse to spend against a page nobody asked for.
50
+ *
51
+ * The capture is already written when this throws, so nothing is lost and the
52
+ * next run replays it; what does not happen is the draft purchase and every
53
+ * paid stage after it. `--allow-redirect` is the opt-in for a redirect that
54
+ * was the point — a bootstrap that deliberately ends somewhere else.
55
+ */
56
+ export const assertImproveCaptureNotRedirected = (args) => {
57
+ const redirect = improveCaptureRedirect(args.record);
58
+ if (!redirect || args.allowRedirect)
59
+ return;
60
+ throw new CliRefusal(`Capture landed on ${redirect.captured}, not the requested ${redirect.requested}.`
61
+ + ` ${IMPROVE_REDIRECT_CAUSE}`
62
+ + ' Nothing was bought: improve stops here rather than draft, convert and plan'
63
+ + ' a page you did not ask for — a coverage gate cannot catch it, because it'
64
+ + ' scores the target against the capture and both would be the wrong page.'
65
+ + ` The capture is kept in ${args.runDir} and replays on the next run.`
66
+ + ' Pass --allow-redirect to improve the page the redirect landed on.', 'improve_capture_redirected');
67
+ };
68
+ //# sourceMappingURL=improve-capture-redirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"improve-capture-redirect.js","sourceRoot":"","sources":["../src/improve-capture-redirect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAuB9C;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,KAAa,EAAsB,EAAE;IACxD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAqB,EACe,EAAE;IACtC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,iBAAiB,IAAI,CAAC,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAC9D,IAAI,iBAAiB,KAAK,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,4CAA4C;MAC9E,gFAAgF,CAAC;AAErF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAqB,EAAsB,EAAE;IAClF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ;QACb,CAAC,CAAC,aAAa,QAAQ,CAAC,QAAQ,wBAAwB,QAAQ,CAAC,SAAS,GAAG;cACzE,IAAI,sBAAsB,EAAE;QAChC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,IAIjD,EAAQ,EAAE;IACT,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO;IAC5C,MAAM,IAAI,UAAU,CAClB,qBAAqB,QAAQ,CAAC,QAAQ,uBAAuB,QAAQ,CAAC,SAAS,GAAG;UAChF,IAAI,sBAAsB,EAAE;UAC5B,6EAA6E;UAC7E,2EAA2E;UAC3E,0EAA0E;UAC1E,2BAA2B,IAAI,CAAC,MAAM,+BAA+B;UACrE,oEAAoE,EACtE,4BAA4B,CAC7B,CAAC;AACJ,CAAC,CAAC"}
@@ -4,7 +4,20 @@
4
4
  * did the opposite: the image model filled it with invented product content.
5
5
  */
6
6
  export declare const IMPROVE_NO_INVENTION_CLAUSE = "Keep all real content, data, and controls; invent nothing.";
7
- /** The real steering limit after reserving room for the mandatory harness. */
7
+ /**
8
+ * The real steering limit after reserving room for the mandatory harness.
9
+ *
10
+ * The SERVICE bound is `MAX_CREATE_CONCEPT_CHARACTERS` — 1200, on the whole
11
+ * concept — and improve does not get to spend all of it: the style preamble,
12
+ * the `Direction: ` prefix and the no-invention clause are part of the concept
13
+ * it sends, so what is left is the flag's budget. Nothing here can be raised to
14
+ * 1200 without dropping the guardrails that keep the draw from inventing UI.
15
+ * The number is therefore stated wherever a caller writes a direction — the
16
+ * usage line, `improve.md`, and the refusal below, which also names the length
17
+ * of what was written (F7).
18
+ */
8
19
  export declare const IMPROVE_DIRECTION_MAX_CHARACTERS: number;
20
+ /** Where cut detail belongs, stated once for the refusal and the skill. */
21
+ export declare const IMPROVE_DIRECTION_TRIM_HINT: string;
9
22
  export declare const buildImproveConcept: (direction?: string) => string;
10
23
  //# sourceMappingURL=improve-concept.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"improve-concept.d.ts","sourceRoot":"","sources":["../src/improve-concept.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,+DAA+D,CAAC;AAexG,8EAA8E;AAC9E,eAAO,MAAM,gCAAgC,QAAuD,CAAC;AAIrG,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,KAAG,MA2BxD,CAAC"}
1
+ {"version":3,"file":"improve-concept.d.ts","sourceRoot":"","sources":["../src/improve-concept.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,+DAA+D,CAAC;AAexG;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gCAAgC,QAAuD,CAAC;AAErG,2EAA2E;AAC3E,eAAO,MAAM,2BAA2B,QACG,CAAC;AAI5C,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,KAAG,MAkCxD,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { CliRefusal } from './cli-refusal.js';
2
- import { MAX_CONCEPT_CHARACTERS, readConceptValue } from './concept-input.js';
2
+ import { conceptCharacterCount, conceptOverLimitMessage, MAX_CONCEPT_CHARACTERS, normalizeConceptText, readConceptValue, } from './concept-input.js';
3
3
  /**
4
4
  * F9 found that detailed, style-anchored direction reliably beats a vague
5
5
  * "make it better" instruction. Naming an empty or thin region as the defect
@@ -17,15 +17,36 @@ const RESERVED_CONCEPT_CHARACTERS = [
17
17
  DIRECTION_PREFIX,
18
18
  IMPROVE_NO_INVENTION_CLAUSE,
19
19
  ].join('\n\n').length;
20
- /** The real steering limit after reserving room for the mandatory harness. */
20
+ /**
21
+ * The real steering limit after reserving room for the mandatory harness.
22
+ *
23
+ * The SERVICE bound is `MAX_CREATE_CONCEPT_CHARACTERS` — 1200, on the whole
24
+ * concept — and improve does not get to spend all of it: the style preamble,
25
+ * the `Direction: ` prefix and the no-invention clause are part of the concept
26
+ * it sends, so what is left is the flag's budget. Nothing here can be raised to
27
+ * 1200 without dropping the guardrails that keep the draw from inventing UI.
28
+ * The number is therefore stated wherever a caller writes a direction — the
29
+ * usage line, `improve.md`, and the refusal below, which also names the length
30
+ * of what was written (F7).
31
+ */
21
32
  export const IMPROVE_DIRECTION_MAX_CHARACTERS = MAX_CONCEPT_CHARACTERS - RESERVED_CONCEPT_CHARACTERS;
33
+ /** Where cut detail belongs, stated once for the refusal and the skill. */
34
+ export const IMPROVE_DIRECTION_TRIM_HINT = 'Keep the intended hierarchy, rhythm, typography,'
35
+ + ' surfaces, color, controls, and mood.';
22
36
  const FABRICATION_TRIGGER = /\b(?:empty|emptiness|underfilled|under-filled|thin[ -]content|lack of content|missing content|dead space|blank (?:area|region|half|section))\b/iu;
23
37
  export const buildImproveConcept = (direction) => {
24
- const steering = direction?.replace(/\s+/gu, ' ').trim() ?? '';
25
- if ([...steering].length > IMPROVE_DIRECTION_MAX_CHARACTERS) {
26
- throw new CliRefusal(`--direction accepts at most ${IMPROVE_DIRECTION_MAX_CHARACTERS} characters because improve`
27
- + ` reserves the rest of the ${MAX_CONCEPT_CHARACTERS}-character concept for its style and`
28
- + ' no-invention guardrails.', 'improve_direction_too_long');
38
+ const steering = normalizeConceptText(direction ?? '');
39
+ if (conceptCharacterCount(steering) > IMPROVE_DIRECTION_MAX_CHARACTERS) {
40
+ throw new CliRefusal(conceptOverLimitMessage({
41
+ flag: '--direction',
42
+ raw: direction ?? '',
43
+ normalized: steering,
44
+ limit: IMPROVE_DIRECTION_MAX_CHARACTERS,
45
+ because: `improve reserves the other ${RESERVED_CONCEPT_CHARACTERS} of the`
46
+ + ` ${MAX_CONCEPT_CHARACTERS}-character concept for its style and no-invention`
47
+ + ' guardrails, so --direction is what is left.',
48
+ trimHint: IMPROVE_DIRECTION_TRIM_HINT,
49
+ }), 'improve_direction_too_long');
29
50
  }
30
51
  if (FABRICATION_TRIGGER.test(steering)) {
31
52
  throw new CliRefusal('--direction must describe the intended style and hierarchy, not emptiness or thin content;'
@@ -39,7 +60,7 @@ export const buildImproveConcept = (direction) => {
39
60
  return readConceptValue({
40
61
  value: concept,
41
62
  flag: '--direction',
42
- trimHint: 'Keep the intended hierarchy, rhythm, typography, surfaces, color, controls, and mood.',
63
+ trimHint: IMPROVE_DIRECTION_TRIM_HINT,
43
64
  });
44
65
  };
45
66
  //# sourceMappingURL=improve-concept.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"improve-concept.js","sourceRoot":"","sources":["../src/improve-concept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,4DAA4D,CAAC;AAExG,MAAM,sBAAsB,GAAG;IAC7B,gJAAgJ;IAChJ,4IAA4I;IAC5I,0JAA0J;CAC3J,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC,MAAM,2BAA2B,GAAG;IAClC,sBAAsB;IACtB,gBAAgB;IAChB,2BAA2B;CAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAEtB,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gCAAgC,GAAG,sBAAsB,GAAG,2BAA2B,CAAC;AAErG,MAAM,mBAAmB,GAAG,kJAAkJ,CAAC;AAE/K,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAkB,EAAU,EAAE;IAChE,MAAM,QAAQ,GAAG,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/D,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,GAAG,gCAAgC,EAAE,CAAC;QAC5D,MAAM,IAAI,UAAU,CAClB,+BAA+B,gCAAgC,6BAA6B;cAC1F,6BAA6B,sBAAsB,sCAAsC;cACzF,2BAA2B,EAC7B,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,UAAU,CAClB,4FAA4F;cAC1F,+CAA+C,EACjD,6BAA6B,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG;QACd,sBAAsB;QACtB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,2BAA2B;KAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,uFAAuF;KAClG,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"improve-concept.js","sourceRoot":"","sources":["../src/improve-concept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,4DAA4D,CAAC;AAExG,MAAM,sBAAsB,GAAG;IAC7B,gJAAgJ;IAChJ,4IAA4I;IAC5I,0JAA0J;CAC3J,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,gBAAgB,GAAG,aAAa,CAAC;AACvC,MAAM,2BAA2B,GAAG;IAClC,sBAAsB;IACtB,gBAAgB;IAChB,2BAA2B;CAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAEtB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,sBAAsB,GAAG,2BAA2B,CAAC;AAErG,2EAA2E;AAC3E,MAAM,CAAC,MAAM,2BAA2B,GAAG,kDAAkD;MACzF,uCAAuC,CAAC;AAE5C,MAAM,mBAAmB,GAAG,kJAAkJ,CAAC;AAE/K,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAkB,EAAU,EAAE;IAChE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,qBAAqB,CAAC,QAAQ,CAAC,GAAG,gCAAgC,EAAE,CAAC;QACvE,MAAM,IAAI,UAAU,CAClB,uBAAuB,CAAC;YACtB,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,SAAS,IAAI,EAAE;YACpB,UAAU,EAAE,QAAQ;YACpB,KAAK,EAAE,gCAAgC;YACvC,OAAO,EAAE,8BAA8B,2BAA2B,SAAS;kBACvE,IAAI,sBAAsB,mDAAmD;kBAC7E,8CAA8C;YAClD,QAAQ,EAAE,2BAA2B;SACtC,CAAC,EACF,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,UAAU,CAClB,4FAA4F;cAC1F,+CAA+C,EACjD,6BAA6B,CAC9B,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG;QACd,sBAAsB;QACtB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,2BAA2B;KAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,OAAO,gBAAgB,CAAC;QACtB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,2BAA2B;KACtC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -20,11 +20,13 @@ import type { ImproveRecord } from './improve-workspace.js';
20
20
  * one, and a resume prefers the newest attempt nothing has abandoned. The
21
21
  * derived stall key stays as the fallback for kits written before this ledger.
22
22
  *
23
- * WHY THE BASE-KEY ATTEMPT IS NOT IN HERE. It is the deterministic identity
24
- * every invocation of this kit computes from the winner, so it needs no record
25
- * to be rebuilt. Only keys carrying entropy (`--fresh`) or history (the retry)
26
- * do, and a ledger that also held the ordinary path would make every
27
- * conversion cost an extra durable write for nothing.
23
+ * WHY THE BASE-KEY ATTEMPT IS IN HERE TOO (F19). It was left out because it is
24
+ * the deterministic identity every invocation recomputes from the winner, so
25
+ * it needs no record to be rebuilt. But a kit whose ordinary conversion stalled
26
+ * then held no durable trace of it at all: pipedrive's `improve.json` priced
27
+ * nothing for two parent conversions, and the lane could not state its own
28
+ * spend. Every dispatch is recorded, with the price it may cost, before it
29
+ * happens. One extra durable write buys a receipt.
28
30
  *
29
31
  * WHAT THE STOP PATH OWES. Nothing. Because the key is recorded before the
30
32
  * dispatch, a run killed mid-attempt is already resumable from what is on
@@ -71,6 +73,8 @@ export declare const startImproveConversionAttempt: (record: ImproveRecord, args
71
73
  reason: ImproveConversionAttemptReason;
72
74
  at?: string;
73
75
  supersedes?: string;
76
+ /** What this conversion may cost, recorded before it is dispatched (F19). */
77
+ priceCeilingUsd?: number;
74
78
  }) => {
75
79
  record: ImproveRecord;
76
80
  superseded: ImproveConversionAttempt[];
@@ -1 +1 @@
1
- {"version":3,"file":"improve-conversion-attempts.d.ts","sourceRoot":"","sources":["../src/improve-conversion-attempts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChG,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAEhF,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,MAE1E,CAAC;AAOF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,aAAa,KACpB,wBAAwB,GAAG,SAE7B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,GACxC,QAAQ,aAAa,EACrB,QAAQ,8BAA8B,KACrC,MAAiG,CAAC;AAErG;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAAI,QAAQ,aAAa,EAAE,MAAM;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,wBAAwB,EAAE,CAAA;CAWjE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,aAAa,EAAE,MAAM;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,8BAA8B,CAAC;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,KAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,wBAAwB,EAAE,CAAA;CAgBlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GAAI,QAAQ,aAAa,EAAE,MAAM;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB,KAAG,aAaH,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,8BAA8B,GAAI,QAAQ,aAAa,EAAE,MAAM;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,KAAG,aAaH,CAAC"}
1
+ {"version":3,"file":"improve-conversion-attempts.d.ts","sourceRoot":"","sources":["../src/improve-conversion-attempts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAM,MAAM,wBAAwB,GAAG,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAChG,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAEhF,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,MAE1E,CAAC;AAOF;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,GACvC,QAAQ,aAAa,KACpB,wBAAwB,GAAG,SAE7B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,GACxC,QAAQ,aAAa,EACrB,QAAQ,8BAA8B,KACrC,MAAiG,CAAC;AAErG;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAAI,QAAQ,aAAa,EAAE,MAAM;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,KAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,wBAAwB,EAAE,CAAA;CAWjE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GAAI,QAAQ,aAAa,EAAE,MAAM;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,8BAA8B,CAAC;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,KAAG;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,wBAAwB,EAAE,CAAA;CAqBlE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GAAI,QAAQ,aAAa,EAAE,MAAM;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB,KAAG,aAaH,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,8BAA8B,GAAI,QAAQ,aAAa,EAAE,MAAM;IAC1E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,KAAG,aAaH,CAAC"}
@@ -50,7 +50,12 @@ export const startImproveConversionAttempt = (record, args) => {
50
50
  return {
51
51
  record: {
52
52
  ...rotated.record,
53
- conversionAttempts: [...attempts, { key: args.key, reason: args.reason, dispatchedAt: at }],
53
+ conversionAttempts: [...attempts, {
54
+ key: args.key,
55
+ reason: args.reason,
56
+ dispatchedAt: at,
57
+ ...(args.priceCeilingUsd === undefined ? {} : { priceCeilingUsd: args.priceCeilingUsd }),
58
+ }],
54
59
  },
55
60
  superseded: rotated.abandoned,
56
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"improve-conversion-attempts.js","sourceRoot":"","sources":["../src/improve-conversion-attempts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"improve-conversion-attempts.js","sourceRoot":"","sources":["../src/improve-conversion-attempts.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { runConversionCommand } from './cli-convert-command.js';
2
+ import { type ImproveConvertProgress } from './improve-convert-progress.js';
2
3
  import type { ImproveOptions } from './improve-options.js';
3
4
  import { type ImproveCommandDependencies } from './improve-stage-shared.js';
4
5
  import type { RunJournalNotes } from './run-journal.js';
@@ -20,6 +21,12 @@ export declare const runImproveConversion: (args: {
20
21
  * conversion it bought while that conversion is still running.
21
22
  */
22
23
  onConversionId?: (id: string) => void;
24
+ /**
25
+ * The visible tick over an otherwise silent wait (F8). The nested convert
26
+ * runs quiet, so without this the terminal shows nothing between dispatch
27
+ * and the terminal line, however long the hosted work takes.
28
+ */
29
+ progress?: ImproveConvertProgress;
23
30
  }) => Promise<{
24
31
  artifacts: string[];
25
32
  purchaseIds: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"improve-conversion-stage.d.ts","sourceRoot":"","sources":["../src/improve-conversion-stage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAkChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAyC,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnG,eAAO,MAAM,oBAAoB,GAAU,MAAM;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;IAC3C,KAAK,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACzC,iBAAiB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,oBAAoB,CAAC;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,KAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAuC3E,CAAC;AAmCF,eAAO,MAAM,sBAAsB,GAAU,MAAM;IACjD,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,0BAA0B,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,KAAG,OAAO,CAAC,aAAa,CA+SxB,CAAC"}
1
+ {"version":3,"file":"improve-conversion-stage.d.ts","sourceRoot":"","sources":["../src/improve-conversion-stage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AA6BvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAIL,KAAK,0BAA0B,EAChC,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAmB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAyC,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEnG,eAAO,MAAM,oBAAoB,GAAU,MAAM;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC;IAC3C,KAAK,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACzC,iBAAiB,CAAC,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,oBAAoB,CAAC;IACpC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC,KAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA6C3E,CAAC;AAmCF,eAAO,MAAM,sBAAsB,GAAU,MAAM;IACjD,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,0BAA0B,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,KAAG,OAAO,CAAC,aAAa,CA8TxB,CAAC"}