@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
@@ -2,6 +2,7 @@ import { selectorLabel } from './improve-dom-anchor.js';
2
2
  import { formatImproveBounds, improveCarriedRasterLayers, improveFrameMappingLine, } from './improve-kit-assets.js';
3
3
  import { renderImproveRasterLayers } from './improve-raster-layers-section.js';
4
4
  import { formatImproveSourceHint } from './improve-source-hints.js';
5
+ import { fontTokenName } from './improve-token-patch.js';
5
6
  /** Tokens shown inline; the rest stay in `token-patch.css`, which keeps them all. */
6
7
  export const IMPROVE_PLAN_TOKEN_LIMIT = 12;
7
8
  /** Selectors per token line. Fifty-four on one line is not a readable plan. */
@@ -33,8 +34,20 @@ const header = (args) => [
33
34
  `- Source repository: ${args.repo ? `\`${args.repo}\`` : 'not supplied; file hints are unresolved'}`,
34
35
  '',
35
36
  ];
37
+ /**
38
+ * The design's font, named as a fact rather than fetched (F23).
39
+ *
40
+ * The token patch used to open with a Google Fonts `@import`, which is a
41
+ * network dependency and a CSP hazard the repository never asked for. The plan
42
+ * says which family the design uses and leaves the loading to whatever the
43
+ * repository already does.
44
+ */
45
+ export const improveFontLines = (fonts) => fonts.map(({ family, weights }) => (`- Fonts: **${family}** (weights ${weights.join(', ')}), declared as \`${fontTokenName(family)}\``
46
+ + ' — the patch imports nothing. Load the family the way this repository already loads fonts:'
47
+ + ' self-host it, or add it to the existing loader.'));
36
48
  const tokens = (patch) => {
37
49
  const lines = ['## Tokens — apply once', '', '- Apply `token-patch.css` through the existing global token or theme entry point.'];
50
+ lines.push(...improveFontLines(patch.fontLoads));
38
51
  if (patch.tokens.length === 0) {
39
52
  lines.push('- No recurring CSS-capable delta reached the two-node threshold.', '');
40
53
  return lines;
@@ -98,6 +111,14 @@ const addedElements = (args) => {
98
111
  if (repeated) {
99
112
  lines.push('Entries that name an asset above are the same item, specified in full. Place each asset once.', '');
100
113
  }
114
+ // Two files per icon, and which one a lane reaches for decides whether the
115
+ // icon renders in its colour or black (F30).
116
+ if (args.addedSpecs.some((spec) => spec.asset?.inline)) {
117
+ lines.push('Icon assets come as a pair. `<name>.svg` carries the design\'s declared colour and is the'
118
+ + ' one to reference as an `<img>`, `background-image`, or `url()`;'
119
+ + ' `<name>-inline.svg` paints with `currentColor` and works only inlined in the markup or'
120
+ + ' as a `mask-image` whose call site sets the colour. Each spec below names its own pair.', '');
121
+ }
101
122
  lines.push(...args.addedSpecs.map((spec) => {
102
123
  const raster = args.rasterByIndex.get(spec.designIndex);
103
124
  const kind = raster?.kind ?? args.computed.targetLeaves[spec.designIndex]?.kind ?? 'layer';
@@ -1 +1 @@
1
- {"version":3,"file":"improve-plan-annotated-render.js","sourceRoot":"","sources":["../src/improve-plan-annotated-render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"improve-plan-annotated-render.js","sourceRoot":"","sources":["../src/improve-plan-annotated-render.ts"],"names":[],"mappings":"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"}
@@ -11,5 +11,10 @@ export declare const writeImproveAnnotatedPlan: (args: {
11
11
  planPath: string;
12
12
  tokenPath: string;
13
13
  artifacts: string[];
14
+ /** The families the repository has to load itself; the patch imports none (F23). */
15
+ fonts: Array<{
16
+ family: string;
17
+ weights: number[];
18
+ }>;
14
19
  }>;
15
20
  //# sourceMappingURL=improve-plan-annotator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"improve-plan-annotator.d.ts","sourceRoot":"","sources":["../src/improve-plan-annotator.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAO5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,yBAAyB,GAAU,MAAM;IACpD,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;CACvB,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAuDvE,CAAC"}
1
+ {"version":3,"file":"improve-plan-annotator.d.ts","sourceRoot":"","sources":["../src/improve-plan-annotator.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oCAAoC,CAAC;AAO5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,yBAAyB,GAAU,MAAM;IACpD,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;CACvB,KAAG,OAAO,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oFAAoF;IACpF,KAAK,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACrD,CAwDA,CAAC"}
@@ -46,6 +46,7 @@ export const writeImproveAnnotatedPlan = async (args) => {
46
46
  return {
47
47
  planPath,
48
48
  tokenPath,
49
+ fonts: tokenPatch.fontLoads,
49
50
  artifacts: [
50
51
  planPath,
51
52
  tokenPath,
@@ -1 +1 @@
1
- {"version":3,"file":"improve-plan-annotator.js","sourceRoot":"","sources":["../src/improve-plan-annotator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"improve-plan-annotator.js","sourceRoot":"","sources":["../src/improve-plan-annotator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"improve-run-summary.d.ts","sourceRoot":"","sources":["../src/improve-run-summary.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAsC7F;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;CAClD,KAAG,MAcH,CAAC;AASF,eAAO,MAAM,uBAAuB,GAAI,MAAM;IAC5C,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC;CAC7B,KAAG,MAiCH,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,MAAM;IACjD,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,KAAG,OAAO,CAAC,MAAM,CAUjB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,EAAE,SAAS,MAAM,KAAG,OAM9E,CAAC"}
1
+ {"version":3,"file":"improve-run-summary.d.ts","sourceRoot":"","sources":["../src/improve-run-summary.ts"],"names":[],"mappings":"AAIA,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAOL,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAmE7F;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;CAClD,KAAG,MAeH,CAAC;AAmBF,eAAO,MAAM,uBAAuB,GAAI,MAAM;IAC5C,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC;CAC7B,KAAG,MAuCH,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAU,MAAM;IACjD,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,KAAG,OAAO,CAAC,MAAM,CAUjB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GAAI,OAAO,OAAO,EAAE,SAAS,MAAM,KAAG,OAM9E,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import path from 'node:path';
2
+ import { formatDuration } from './cli-progress.js';
2
3
  import { readImproveKitAssets } from './improve-kit-assets.js';
3
- import { IMPROVE_NO_APPROXIMATION_RULE, improveRecoveryLine, improveStageStatusLine, readImproveKitStatus, shellArg, } from './improve-kit-status.js';
4
+ import { IMPROVE_NO_APPROXIMATION_RULE, improvePickSlotHint, improveRecoveryLine, improveStageStatusLine, readImproveKitStatus, shellArg, } from './improve-kit-status.js';
5
+ import { improveCapturedUrlLine } from './improve-capture-redirect.js';
6
+ import { improveKitIgnoreNote } from './improve-kit-ignore.js';
4
7
  import { improveAbandonedLines } from './improve-reset.js';
5
8
  import { improvePaths } from './improve-workspace.js';
6
9
  /**
@@ -28,10 +31,28 @@ const planLine = (record, status) => {
28
31
  const headline = (record, status) => {
29
32
  if (status.gateBlocked)
30
33
  return 'Kit ready — coverage gate blocked the plan';
31
- if (record.convert?.layout === 'fixed')
32
- return 'Kit ready — fixed-layout fallback';
34
+ // "Fixed-layout fallback" named the OUTCOME and not the event, so a reader
35
+ // who had watched a silent wait could not tell the run had overrun anything
36
+ // (F8). Name what happened first: the plan is real, and it was built from a
37
+ // derivation because the responsive export did not settle.
38
+ if (record.convert?.layout === 'fixed') {
39
+ return 'Kit ready — responsive export stalled; plan from fixed-layout fallback';
40
+ }
33
41
  return 'Kit ready';
34
42
  };
43
+ /** What stalled and where it is written down, on the line after the headline. */
44
+ const fallbackLines = (record) => {
45
+ if (record.convert?.layout !== 'fixed')
46
+ return [];
47
+ const stall = record.convert.responsiveStall;
48
+ const id = stall?.conversionId ?? record.convert.sourceConversionId;
49
+ return [
50
+ `- Responsive export: stalled${stall
51
+ ? ` after ${formatDuration(stall.waitedSeconds)} (bound ${formatDuration(stall.boundSeconds)})`
52
+ : ''}${id ? `, conversion ${id}` : ''}`
53
+ + ' — read plan/STALL.md, which has the command that collects it later',
54
+ ];
55
+ };
35
56
  const assetsLine = (index) => {
36
57
  if (index.assets.length === 0)
37
58
  return 'Assets: none';
@@ -40,6 +61,15 @@ const assetsLine = (index) => {
40
61
  return `Assets: ${index.assets.length} file${index.assets.length === 1 ? '' : 's'};`
41
62
  + ` raster layers to carry: ${carry.length > 0 ? carry.join(', ') : 'none declared'}`;
42
63
  };
64
+ /**
65
+ * The kit is inside the repository and committable. One line, at the end, where
66
+ * the reader is already looking — the run never edits a `.gitignore` it cannot
67
+ * be sure about, so this is all it can honestly do (F17).
68
+ */
69
+ const kitIgnoreLines = (record) => {
70
+ const note = improveKitIgnoreNote(record.kitIgnore);
71
+ return note ? [`- ${note}`] : [];
72
+ };
43
73
  /**
44
74
  * What a run prints when the draw is ready and nobody has chosen.
45
75
  *
@@ -50,7 +80,6 @@ const assetsLine = (index) => {
50
80
  */
51
81
  export const awaitingImprovePick = (args) => {
52
82
  const slots = (args.record.draft?.candidates ?? []).map((candidate) => candidate.slot);
53
- const last = slots.at(-1) ?? 'P';
54
83
  return [
55
84
  '',
56
85
  'Draw ready — choose a candidate',
@@ -59,10 +88,21 @@ export const awaitingImprovePick = (args) => {
59
88
  '- Nothing was converted. A conversion of a candidate nobody chose is money spent on a guess,'
60
89
  + ' and it cannot be cancelled once it starts.',
61
90
  `- Kit: ${args.record.runDir}`,
91
+ ...kitIgnoreLines(args.record),
62
92
  `Next: 12ui improve ${shellArg(args.record.input.value)}`
63
- + ` --out-dir ${shellArg(args.record.runDir)} --from pick --pick <A-${last}>`,
93
+ + ` --out-dir ${shellArg(args.record.runDir)}`
94
+ + ` --from pick --pick ${improvePickSlotHint(args.record)}`,
64
95
  ].join('\n');
65
96
  };
97
+ /**
98
+ * The page that was photographed, when it is not the page that was requested.
99
+ * One line, high in the summary, is what the notion app surface needed and did
100
+ * not get (F27).
101
+ */
102
+ const capturedLines = (record) => {
103
+ const line = improveCapturedUrlLine(record);
104
+ return line ? [`- ${line}`] : [];
105
+ };
66
106
  /** Which candidate the target came from, and why that one was converted. */
67
107
  const convertedLine = (record) => {
68
108
  if (record.target)
@@ -79,12 +119,15 @@ export const renderImproveRunSummary = (args) => {
79
119
  '',
80
120
  headline(args.record, args.status),
81
121
  `- ${stages}`,
122
+ ...capturedLines(args.record),
82
123
  `- Target: ${args.status.targetMode}`,
124
+ ...fallbackLines(args.record),
83
125
  `- ${assetsLine(args.index)}`,
84
126
  ...convertedLine(args.record),
85
127
  `- ${planLine(args.record, args.status)}`,
86
128
  ...improveAbandonedLines(args.record),
87
129
  `- Kit: ${args.record.runDir}`,
130
+ ...kitIgnoreLines(args.record),
88
131
  `Next: read ${readme}`,
89
132
  ].join('\n');
90
133
  }
@@ -93,12 +136,15 @@ export const renderImproveRunSummary = (args) => {
93
136
  'INCOMPLETE',
94
137
  `- Missing: ${args.status.missing.join(', ')}`,
95
138
  `- ${stages}`,
139
+ ...capturedLines(args.record),
96
140
  `- Target: ${args.status.targetMode}`,
141
+ ...fallbackLines(args.record),
97
142
  `- ${assetsLine(args.index)}`,
98
143
  ...convertedLine(args.record),
99
144
  `- ${planLine(args.record, args.status)}`,
100
145
  ...improveAbandonedLines(args.record),
101
146
  `- Kit: ${args.record.runDir}`,
147
+ ...kitIgnoreLines(args.record),
102
148
  '- Recovery:',
103
149
  ...args.status.recovery.map(improveRecoveryLine),
104
150
  `- ${IMPROVE_NO_APPROXIMATION_RULE}`,
@@ -1 +1 @@
1
- {"version":3,"file":"improve-run-summary.js","sourceRoot":"","sources":["../src/improve-run-summary.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAA6B,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EACL,6BAA6B,EAC7B,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,GAET,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAyC,MAAM,wBAAwB,CAAC;AAE7F;;;;;;;;GAQG;AAEH,MAAM,QAAQ,GAAG,CAAC,MAAqB,EAAE,MAAwB,EAAU,EAAE;IAC3E,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,wDAAwD,CAAC;IACxF,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,YAAY,CAAC;IACtC,OAAO,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,mBAAmB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,QAAQ,GAAG,CAAC,MAAqB,EAAE,MAAwB,EAAU,EAAE;IAC3E,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,4CAA4C,CAAC;IAC5E,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO;QAAE,OAAO,mCAAmC,CAAC;IACnF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAA2B,EAAU,EAAE;IACzD,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY;SAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,OAAO,WAAW,KAAK,CAAC,MAAM,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG;UAChF,4BAA4B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;AAC1F,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAGnC,EAAU,EAAE;IACX,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACjC,OAAO;QACL,EAAE;QACF,iCAAiC;QACjC,iBAAiB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE;cACtE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;QAC3C,8FAA8F;cAC5F,6CAA6C;QAC/C,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAC9B,sBAAsB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;cACvD,cAAc,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,0BAA0B,IAAI,GAAG;KAC9E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,aAAa,GAAG,CAAC,MAAqB,EAAY,EAAE;IACxD,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,oCAAoC,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,OAAO,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAIvC,EAAU,EAAE;IACX,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtF,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO;YACL,EAAE;YACF,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;YAClC,KAAK,MAAM,EAAE;YACb,aAAa,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACrC,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;YACzC,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;YACrC,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAC9B,cAAc,MAAM,EAAE;SACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO;QACL,EAAE;QACF,YAAY;QACZ,cAAc,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC9C,KAAK,MAAM,EAAE;QACb,aAAa,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QACrC,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7B,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7B,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;QACzC,GAAG,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC;QACrC,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAC9B,aAAa;QACb,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAChD,KAAK,6BAA6B,EAAE;QACpC,cAAc,MAAM,EAAE;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,IAG5C,EAAmB,EAAE;IACpB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,oBAAoB,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC;QACF,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;KACzF,CAAC,CAAC;IACH,OAAO,uBAAuB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,KAAc,EAAE,OAAe,EAAW,EAAE;IACvF,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,KAAK,CAAC,OAAO,GAAG,GAAG,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC"}
1
+ {"version":3,"file":"improve-run-summary.js","sourceRoot":"","sources":["../src/improve-run-summary.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { runDraftCommand } from './cli-draft-command.js';
3
3
  import { captureImprovePage } from './redesign-capture.js';
4
4
  import type { ImproveStopTarget } from './improve-stop-handler.js';
5
5
  import type { RunJournalNotes } from './run-journal.js';
6
- import { type ImproveRecord, type ImproveStage } from './improve-workspace.js';
6
+ import { type ImproveRecord, type ImproveStage, type ImproveStageOutcome } from './improve-workspace.js';
7
7
  export type ImproveCommandDependencies = {
8
8
  capture?: typeof captureImprovePage;
9
9
  runDraft?: typeof runDraftCommand;
@@ -20,6 +20,15 @@ export type ImproveCommandDependencies = {
20
20
  exit?: (code: number) => void;
21
21
  };
22
22
  export declare const improveSha256: (bytes: Uint8Array) => string;
23
+ /**
24
+ * The word for what this stage did, read off the record it just wrote (F28).
25
+ *
26
+ * The facts were always there — `convert.layout`, `convert.responsiveWarning`,
27
+ * `plan.gate` — and the README already printed them. Only `improve.json` said
28
+ * `settled` over a fixed-layout fallback and a gate-blocked plan, which is the
29
+ * one place a supervisor or a campaign parser looks.
30
+ */
31
+ export declare const improveStageOutcome: (record: ImproveRecord, stage: ImproveStage) => ImproveStageOutcome;
23
32
  export declare const noteImproveStage: (args: {
24
33
  record: ImproveRecord;
25
34
  stage: ImproveStage;
@@ -28,5 +37,34 @@ export declare const noteImproveStage: (args: {
28
37
  outcome?: "settled" | "skipped";
29
38
  write: boolean;
30
39
  }) => Promise<ImproveRecord>;
40
+ /**
41
+ * The paid call this stage dispatched did not come back in this run.
42
+ *
43
+ * It rewrites the dispatched entry rather than adding one, so the price stays
44
+ * the price of the call that is still running and a resume still re-attaches
45
+ * to it. A stage with no entry bought nothing; it gets an unpriced `stalled`
46
+ * entry only when the run itself stalled, so `stages.plan.outcome` can say so
47
+ * instead of staying silent.
48
+ */
49
+ export declare const markImproveStageStalled: (args: {
50
+ record: ImproveRecord;
51
+ stage: ImproveStage;
52
+ stalled: boolean;
53
+ }) => ImproveRecord;
54
+ /**
55
+ * The stage's paid work is in flight, priced, and written down before it can
56
+ * fail (F19).
57
+ *
58
+ * `improve.json` is the kit's spend ledger, and it only ever held stages that
59
+ * SETTLED. The pipedrive kit dispatched two parent conversions and settled
60
+ * neither, so its recorded ceiling was the draft's $0.242 and the lane had to
61
+ * publish a planning proxy in place of a receipt. A stage already recorded is
62
+ * left alone: a resume re-attaches to the conversion this entry paid for.
63
+ */
64
+ export declare const noteImproveStageDispatched: (args: {
65
+ record: ImproveRecord;
66
+ stage: ImproveStage;
67
+ priceCeilingUsd: number;
68
+ }) => ImproveRecord;
31
69
  export declare const markImproveStageSkipped: (record: ImproveRecord, stage: ImproveStage) => Promise<ImproveRecord>;
32
70
  //# sourceMappingURL=improve-stage-shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"improve-stage-shared.d.ts","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAA0D,CAAC;AAE7G,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;CAChB,KAAG,OAAO,CAAC,aAAa,CAmBxB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,aAAa,EACrB,OAAO,YAAY,KAClB,OAAO,CAAC,aAAa,CAOtB,CAAC"}
1
+ {"version":3,"file":"improve-stage-shared.d.ts","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,oBAAoB,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,2EAA2E;IAC3E,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAA0D,CAAC;AAE7G;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,aAAa,EACrB,OAAO,YAAY,KAClB,mBAIF,CAAC;AAOF,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,OAAO,CAAC;CAChB,KAAG,OAAO,CAAC,aAAa,CA+BxB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM;IAC5C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,KAAG,aAcH,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM;IAC/C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB,KAAG,aAaH,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,QAAQ,aAAa,EACrB,OAAO,YAAY,KAClB,OAAO,CAAC,aAAa,CAOtB,CAAC"}
@@ -2,20 +2,49 @@ import { createHash } from 'node:crypto';
2
2
  import path from 'node:path';
3
3
  import { writeImproveRecord, } from './improve-workspace.js';
4
4
  export const improveSha256 = (bytes) => createHash('sha256').update(bytes).digest('hex');
5
+ /**
6
+ * The word for what this stage did, read off the record it just wrote (F28).
7
+ *
8
+ * The facts were always there — `convert.layout`, `convert.responsiveWarning`,
9
+ * `plan.gate` — and the README already printed them. Only `improve.json` said
10
+ * `settled` over a fixed-layout fallback and a gate-blocked plan, which is the
11
+ * one place a supervisor or a campaign parser looks.
12
+ */
13
+ export const improveStageOutcome = (record, stage) => {
14
+ if (stage === 'convert' && record.convert?.layout === 'fixed')
15
+ return 'fallback';
16
+ if (stage === 'plan' && record.plan?.gate === 'blocked')
17
+ return 'blocked';
18
+ return 'settled';
19
+ };
20
+ /** A priced entry whose paid call has not come back yet. */
21
+ const isPendingOutcome = (outcome) => (outcome === 'dispatched' || outcome === 'stalled');
5
22
  export const noteImproveStage = async (args) => {
6
23
  const previous = args.record.stages[args.stage];
24
+ // A stage recorded at DISPATCH is not a replay of anything: the paid call it
25
+ // priced is the one settling now, so settling completes that entry rather
26
+ // than counting a second run of the stage. A stage that STALLED holds the
27
+ // same entry — the resume is that call finishing, not a second run of it.
28
+ const pending = previous && isPendingOutcome(previous.outcome) ? previous : undefined;
29
+ const outcome = args.outcome ?? improveStageOutcome(args.record, args.stage);
7
30
  const record = {
8
31
  ...args.record,
9
32
  stages: {
10
33
  ...args.record.stages,
11
- [args.stage]: previous ? {
34
+ [args.stage]: previous && !pending ? {
12
35
  ...previous,
13
36
  replayCount: previous.replayCount + (args.replayed ? 1 : 0),
37
+ // A replay re-reads the outcome too, so a kit written before this
38
+ // field could tell the truth stops calling a fallback settled the
39
+ // first time it is resumed.
40
+ outcome,
14
41
  } : {
42
+ ...(pending?.dispatchedAt ? { dispatchedAt: pending.dispatchedAt } : {}),
15
43
  settledAt: new Date().toISOString(),
16
44
  replayCount: 0,
17
- priceCeilingUsd: args.priceCeilingUsd,
18
- outcome: args.outcome ?? 'settled',
45
+ // The dispatch priced this call; a settlement never prices it lower.
46
+ priceCeilingUsd: Math.max(pending?.priceCeilingUsd ?? 0, args.priceCeilingUsd),
47
+ outcome,
19
48
  },
20
49
  },
21
50
  };
@@ -23,6 +52,54 @@ export const noteImproveStage = async (args) => {
23
52
  await writeImproveRecord(path.join(args.record.runDir, 'improve.json'), record);
24
53
  return record;
25
54
  };
55
+ /**
56
+ * The paid call this stage dispatched did not come back in this run.
57
+ *
58
+ * It rewrites the dispatched entry rather than adding one, so the price stays
59
+ * the price of the call that is still running and a resume still re-attaches
60
+ * to it. A stage with no entry bought nothing; it gets an unpriced `stalled`
61
+ * entry only when the run itself stalled, so `stages.plan.outcome` can say so
62
+ * instead of staying silent.
63
+ */
64
+ export const markImproveStageStalled = (args) => {
65
+ const previous = args.record.stages[args.stage];
66
+ if (previous && previous.outcome !== 'dispatched')
67
+ return args.record;
68
+ if (!previous && !args.stalled)
69
+ return args.record;
70
+ return {
71
+ ...args.record,
72
+ stages: {
73
+ ...args.record.stages,
74
+ [args.stage]: {
75
+ ...(previous ?? { replayCount: 0, priceCeilingUsd: 0 }),
76
+ outcome: 'stalled',
77
+ },
78
+ },
79
+ };
80
+ };
81
+ /**
82
+ * The stage's paid work is in flight, priced, and written down before it can
83
+ * fail (F19).
84
+ *
85
+ * `improve.json` is the kit's spend ledger, and it only ever held stages that
86
+ * SETTLED. The pipedrive kit dispatched two parent conversions and settled
87
+ * neither, so its recorded ceiling was the draft's $0.242 and the lane had to
88
+ * publish a planning proxy in place of a receipt. A stage already recorded is
89
+ * left alone: a resume re-attaches to the conversion this entry paid for.
90
+ */
91
+ export const noteImproveStageDispatched = (args) => (args.record.stages[args.stage] ? args.record : {
92
+ ...args.record,
93
+ stages: {
94
+ ...args.record.stages,
95
+ [args.stage]: {
96
+ dispatchedAt: new Date().toISOString(),
97
+ replayCount: 0,
98
+ priceCeilingUsd: args.priceCeilingUsd,
99
+ outcome: 'dispatched',
100
+ },
101
+ },
102
+ });
26
103
  export const markImproveStageSkipped = async (record, stage) => noteImproveStage({
27
104
  record,
28
105
  stage,
@@ -1 +1 @@
1
- {"version":3,"file":"improve-stage-shared.js","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EACL,kBAAkB,GAGnB,MAAM,wBAAwB,CAAC;AAkBhC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAE7G,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAOtC,EAA0B,EAAE;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,MAAM,GAAkB;QAC5B,GAAG,IAAI,CAAC,MAAM;QACd,MAAM,EAAE;YACN,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;YACrB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACvB,GAAG,QAAQ;gBACX,WAAW,EAAE,QAAQ,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5D,CAAC,CAAC,CAAC;gBACF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,WAAW,EAAE,CAAC;gBACd,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;aACnC;SACF;KACF,CAAC;IACF,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IAChG,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAC1C,MAAqB,EACrB,KAAmB,EACK,EAAE,CAAC,gBAAgB,CAAC;IAC5C,MAAM;IACN,KAAK;IACL,eAAe,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,SAAS;IACrD,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,IAAI;CACZ,CAAC,CAAC"}
1
+ {"version":3,"file":"improve-stage-shared.js","sourceRoot":"","sources":["../src/improve-stage-shared.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"improve-terminal-event.d.ts","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAkB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAC9C,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B,KAAG,MAEgC,CAAC;AAErC;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,uCAAuC,CAAC;AAEvF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,YAAY,GAAG,SAAS,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,aAAa,EACrB,cAAc,YAAY,KACzB,YAAY,GAAG,SAIjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAU,MAAM;IACnD,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,KAAG,OAAO,CAAC,MAAM,CA0CjB,CAAC"}
1
+ {"version":3,"file":"improve-terminal-event.d.ts","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAkB,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,eAAO,MAAM,yBAAyB,GAAI,MAAM;IAC9C,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B,KAAG,MAEgC,CAAC;AAErC;;;;;;;;GAQG;AACH,eAAO,MAAM,kCAAkC,uCAAuC,CAAC;AAEvF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,YAAY,GAAG,SAAS,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,aAAa,EACrB,cAAc,YAAY,KACzB,YAAY,GAAG,SAUjB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAAU,MAAM;IACnD,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,KAAG,OAAO,CAAC,MAAM,CA0CjB,CAAC"}
@@ -27,7 +27,13 @@ export const IMPROVE_SIGNALLED_AFTER_COMPLETION = 'improve_signalled_after_compl
27
27
  export const improveUnsettledStage = (record, requestedTo) => {
28
28
  const last = requestedTo ?? IMPROVE_STAGES[IMPROVE_STAGES.length - 1];
29
29
  const bound = IMPROVE_STAGES.indexOf(last);
30
- return IMPROVE_STAGES.slice(0, bound + 1).find((stage) => !record.stages[stage]);
30
+ // A stage whose entry was written at DISPATCH has not settled either: the
31
+ // entry exists to price a paid call that is still out (F19), and reading it
32
+ // as a settlement would name the NEXT stage as the one a stalled run died in.
33
+ return IMPROVE_STAGES.slice(0, bound + 1).find((stage) => {
34
+ const entry = record.stages[stage];
35
+ return !entry || entry.outcome === 'dispatched' || entry.outcome === 'stalled';
36
+ });
31
37
  };
32
38
  /**
33
39
  * Close this run's journal record with the reason, the stage, the hosted run
@@ -1 +1 @@
1
- {"version":3,"file":"improve-terminal-event.js","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"improve-terminal-event.js","sourceRoot":"","sources":["../src/improve-terminal-event.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { LayerDiffMatch, LayerLeaf } from './improve-layerdoc-types.js';
2
2
  export declare const snapImproveDesignNumber: (field: string, input: unknown) => unknown;
3
3
  export declare const snapImproveDesignValue: (field: string, value: unknown) => unknown;
4
+ /** The one place the design's font family is named, and what everything else points at. */
5
+ export declare const fontTokenName: (family: string) => string;
4
6
  export type ImproveTokenPatch = {
5
7
  css: string;
6
8
  tokens: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"improve-token-patch.d.ts","sourceRoot":"","sources":["../src/improve-token-patch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAU7E,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,EAAE,OAAO,OAAO,KAAG,OASvE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,EAAE,OAAO,OAAO,KAAG,OAQtE,CAAC;AAkBF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrG,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACzD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,SAAS,SAAS,cAAc,EAAE,EAClC,QAAQ,SAAS,SAAS,EAAE,EAC5B,QAAO,SAAS,SAAS,EAAO,KAC/B,iBAwEF,CAAC"}
1
+ {"version":3,"file":"improve-token-patch.d.ts","sourceRoot":"","sources":["../src/improve-token-patch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAU7E,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,EAAE,OAAO,OAAO,KAAG,OASvE,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,EAAE,OAAO,OAAO,KAAG,OAQtE,CAAC;AAYF,2FAA2F;AAC3F,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,MAAqC,CAAC;AAarF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrG,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACzD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,SAAS,SAAS,cAAc,EAAE,EAClC,QAAQ,SAAS,SAAS,EAAE,EAC5B,QAAO,SAAS,SAAS,EAAO,KAC/B,iBAoFF,CAAC"}
@@ -38,9 +38,15 @@ const cssProperty = (field) => {
38
38
  return field;
39
39
  return undefined;
40
40
  };
41
+ /** The one place the design's font family is named, and what everything else points at. */
42
+ export const fontTokenName = (family) => `--font-${cssName(family)}`;
43
+ const fontStack = (family) => `'${family.replace(/'/gu, "\\'")}', sans-serif`;
41
44
  const cssValue = (field, value) => {
45
+ // A recurring font-family delta resolves to the family token above rather
46
+ // than repeating its stack, so a repository that swaps the loaded family
47
+ // swaps it in one declaration.
42
48
  if (field === 'googleFontFamily')
43
- return `'${String(value).replace(/'/gu, "\\'")}', sans-serif`;
49
+ return `var(${fontTokenName(String(value))})`;
44
50
  if ((field === 'fontSizePx' || field === 'fittedFontSizePx') && typeof value === 'number')
45
51
  return `${value}px`;
46
52
  return String(value);
@@ -101,13 +107,25 @@ export const buildImproveTokenPatch = (entries, before, after = []) => {
101
107
  const lines = [
102
108
  '/* Proposed tokens from recurring target deltas. Review names in the owning design system. */',
103
109
  ];
104
- if (fontLoads.length > 0) {
105
- const query = fontLoads.map(({ family, weights }) => (`family=${family.trim().replace(/\s+/gu, '+')}:wght@${weights.join(';')}`)).join('&');
106
- lines.push(`@import url('https://fonts.googleapis.com/css2?${query}&display=swap');`);
110
+ // NO NETWORK IMPORT (F23). This file opened with
111
+ // `@import url('https://fonts.googleapis.com/css2?...')`, and the kit README
112
+ // makes applying it wholesale step 3 of "Start here" — so the one step a lane
113
+ // is told to apply without thinking was also the step that added a
114
+ // third-party font request, and a CSP and offline hazard, to a repository
115
+ // that declared no such dependency. Two of the four wave-2 lanes that got a
116
+ // token patch refused it on exactly that ground. The family is named as a
117
+ // token and as a comment; how it is loaded belongs to the repository.
118
+ for (const { family, weights } of fontLoads) {
119
+ lines.push(`/* Font: ${family} (weights ${weights.join(', ')}). Declared as a token only —`
120
+ + ' this patch loads nothing over the network. Load the family the way this repository'
121
+ + ' already loads fonts: self-host it, or add it to the existing loader. */');
107
122
  }
108
123
  lines.push('', ':root {');
109
- if (tokens.length === 0)
124
+ for (const { family } of fontLoads)
125
+ lines.push(` ${fontTokenName(family)}: ${fontStack(family)};`);
126
+ if (tokens.length === 0 && fontLoads.length === 0) {
110
127
  lines.push(' /* No recurring CSS-capable deltas (2+ matching nodes). */');
128
+ }
111
129
  for (const token of tokens) {
112
130
  lines.push(` /* selectors: ${token.selectors.join(', ')} */`);
113
131
  lines.push(` ${token.name}: ${token.value};`);