@contentful/experience-design-system-cli 2.38.1-dev-build-6d903339.0 → 2.38.1-dev-build-962dbe22.0

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 (272) hide show
  1. package/dist/app.d.ts +2 -1
  2. package/dist/app.js +5778 -3809
  3. package/dist/index.js +13842 -12466
  4. package/dist/package.json +1 -1
  5. package/dist/src/commands/import-options.d.ts +0 -2
  6. package/dist/src/tui/debug-prune.d.ts +12 -0
  7. package/dist/src/tui/debug-store.d.ts +18 -1
  8. package/dist/src/tui/help/file-locations.d.ts +23 -0
  9. package/dist/src/tui/home/home.theme.d.ts +0 -8
  10. package/dist/src/tui/import/shared/gate-step/gate-step.d.ts +3 -1
  11. package/dist/src/tui/import/shared/index.d.ts +1 -0
  12. package/dist/src/tui/import/shared/overview-box/overview-box.d.ts +10 -0
  13. package/dist/src/tui/import/shared/running-step/logic.d.ts +0 -1
  14. package/dist/src/tui/import/shared/running-step/running-step.d.ts +3 -4
  15. package/dist/src/tui/import/steps/00-preflight/controls.d.ts +17 -0
  16. package/dist/src/tui/import/steps/00-preflight/logic.d.ts +45 -0
  17. package/dist/src/tui/import/steps/00-preflight/screen.d.ts +8 -0
  18. package/dist/src/tui/import/steps/01-welcome/controls.d.ts +4 -1
  19. package/dist/src/tui/import/steps/02-token-input/controls.d.ts +3 -0
  20. package/dist/src/tui/import/steps/03-path-validation/helpers/scan-files.d.ts +1 -9
  21. package/dist/src/tui/import/steps/03-path-validation/logic.d.ts +7 -5
  22. package/dist/src/tui/import/steps/03-path-validation/screen.d.ts +3 -1
  23. package/dist/src/tui/import/steps/04-credentials/logic.d.ts +6 -9
  24. package/dist/src/tui/import/steps/04-credentials/screen.d.ts +3 -1
  25. package/dist/src/tui/import/steps/06-extraction/logic.d.ts +1 -16
  26. package/dist/src/tui/import/steps/06-extraction/run-tokens-only.d.ts +31 -0
  27. package/dist/src/tui/import/steps/06-extraction/screen.d.ts +1 -3
  28. package/dist/src/tui/import/steps/06-extraction/types.d.ts +4 -5
  29. package/dist/src/tui/import/steps/06-extraction/use-tokens-only.d.ts +12 -0
  30. package/dist/src/tui/import/steps/07-scope-gate/cache-check.d.ts +0 -7
  31. package/dist/src/tui/import/steps/07-scope-gate/columns.d.ts +0 -2
  32. package/dist/src/tui/import/steps/07-scope-gate/graph/fuzzy-search.d.ts +0 -2
  33. package/dist/src/tui/import/steps/07-scope-gate/graph/lineage.d.ts +0 -22
  34. package/dist/src/tui/import/steps/07-scope-gate/sidebar/ai-flag.d.ts +0 -1
  35. package/dist/src/tui/import/steps/07-scope-gate/sidebar/components/GroupedSidebar.d.ts +1 -33
  36. package/dist/src/tui/import/steps/07-scope-gate/sidebar/components/windowed-panel.d.ts +4 -0
  37. package/dist/src/tui/import/steps/07-scope-gate/sidebar/lineage-layout.d.ts +0 -36
  38. package/dist/src/tui/import/steps/07-scope-gate/sidebar/step-filters.d.ts +4 -0
  39. package/dist/src/tui/import/steps/07-scope-gate/use-scope-gate.d.ts +1 -0
  40. package/dist/src/tui/import/steps/08-generation/logic.d.ts +0 -4
  41. package/dist/src/tui/import/steps/08-generation/run.d.ts +0 -10
  42. package/dist/src/tui/import/steps/08-generation/screen.d.ts +1 -3
  43. package/dist/src/tui/import/steps/09-review/components/FieldEditor.d.ts +1 -18
  44. package/dist/src/tui/import/steps/09-review/components/ReviewDialogs.d.ts +0 -14
  45. package/dist/src/tui/import/steps/09-review/components/TokenReviewPanel.d.ts +0 -6
  46. package/dist/src/tui/import/steps/09-review/generate-review-step.d.ts +1 -22
  47. package/dist/src/tui/import/steps/09-review/helpers/cycle-panel-scroll.d.ts +0 -4
  48. package/dist/src/tui/import/steps/09-review/run-live-preview.d.ts +0 -3
  49. package/dist/src/tui/import/steps/09-review/use-finalize-preview.d.ts +1 -11
  50. package/dist/src/tui/import/steps/10-flow/flow/build-flow-start.d.ts +1 -0
  51. package/dist/src/tui/import/steps/10-flow/flow/controller.d.ts +14 -8
  52. package/dist/src/tui/import/steps/10-flow/flow/preview.d.ts +3 -15
  53. package/dist/src/tui/import/steps/10-flow/flow/push.d.ts +2 -0
  54. package/dist/src/tui/import/steps/10-flow/flow/save.d.ts +1 -10
  55. package/dist/src/tui/import/steps/10-flow/flow/screen.d.ts +0 -4
  56. package/dist/src/tui/import/steps/10-flow/flow/use-flow.d.ts +4 -1
  57. package/dist/src/tui/import/steps/10-flow/screens/DoneStep.d.ts +6 -1
  58. package/dist/src/tui/import/steps/10-flow/screens/PushingStep.d.ts +3 -3
  59. package/dist/src/tui/import/steps/10-flow/screens/WizardPreviewStep.d.ts +1 -9
  60. package/dist/src/tui/import/steps/10-flow/support/path-utils.d.ts +0 -5
  61. package/dist/src/tui/import/steps/10-flow/support/preview-diff.d.ts +2 -5
  62. package/dist/src/tui/import/steps/10-flow/support/produced.d.ts +15 -0
  63. package/dist/src/tui/import/steps/index.d.ts +1 -1
  64. package/dist/src/tui/import/steps/preview-validation-error/logic.d.ts +0 -3
  65. package/dist/src/tui/settings/{contentful-configuration/ContentfulConfigScreen.d.ts → configuration/ConfigurationScreen.d.ts} +1 -0
  66. package/dist/src/tui/settings/configuration/agents/AgentDetail.d.ts +15 -0
  67. package/dist/src/tui/settings/configuration/agents/AgentStatusBadge.d.ts +10 -0
  68. package/dist/src/tui/settings/configuration/agents/AgentsScreen.d.ts +11 -0
  69. package/dist/src/tui/settings/configuration/agents/agent-debug.d.ts +25 -0
  70. package/dist/src/tui/settings/configuration/agents/agent-status.d.ts +63 -0
  71. package/dist/src/tui/settings/configuration/agents/agent-store.d.ts +21 -0
  72. package/dist/src/tui/settings/configuration/agents/apply-binary-overrides.d.ts +13 -0
  73. package/dist/src/tui/settings/configuration/project/ProjectScreen.d.ts +5 -0
  74. package/dist/src/tui/settings/{contentful-configuration/config-store.d.ts → configuration/project/project-store.d.ts} +1 -0
  75. package/dist/src/tui/settings/debug-mode/debug-mode-store.d.ts +7 -1
  76. package/dist/src/tui/settings/debug-mode/screen.d.ts +4 -0
  77. package/dist/src/tui/settings/shared/debug-trail.d.ts +35 -0
  78. package/dist/src/tui/shared/components/ClearableTextInput.d.ts +6 -0
  79. package/dist/src/tui/shared/components/ControlHints.d.ts +9 -0
  80. package/dist/src/tui/shared/components/FieldForm.d.ts +71 -0
  81. package/dist/src/tui/shared/components/StepHeader.d.ts +26 -0
  82. package/dist/src/tui/theme.d.ts +21 -0
  83. package/package.json +3 -3
  84. package/dist/src/commands/forwarded.d.ts +0 -2
  85. package/dist/src/legacy/forwarded-import-args.d.ts +0 -1
  86. package/dist/src/legacy/legacy-cli-path.d.ts +0 -1
  87. package/dist/src/legacy/run-legacy.d.ts +0 -1
  88. package/dist/src/tui/control-hints.d.ts +0 -7
  89. package/dist/src/tui/import/steps/04-credentials/controls.d.ts +0 -21
  90. package/dist/src/tui/import/steps/05-token-reuse/logic.d.ts +0 -21
  91. package/dist/src/tui/import/steps/05-token-reuse/screen.d.ts +0 -10
  92. package/dist/src/tui/import/steps/07-scope-gate/sidebar/components/LegendEntry.d.ts +0 -2
  93. package/dist/src/tui/import/steps/07-scope-gate/sidebar/theme.d.ts +0 -8
  94. package/dist/src/tui/import/steps/09-review/theme.d.ts +0 -9
  95. package/dist/src/tui/import/steps/10-flow/components/StepHeader.d.ts +0 -8
  96. package/dist/src/tui/import/steps/10-flow/theme.d.ts +0 -13
  97. package/dist/src/tui/upgrade/PageContainer.d.ts +0 -4
  98. package/legacy/bin/cli.js +0 -58
  99. package/legacy/dist/package.json +0 -76
  100. package/legacy/dist/src/analytics/apply.d.ts +0 -6
  101. package/legacy/dist/src/analytics/client.d.ts +0 -8
  102. package/legacy/dist/src/analytics/constants.d.ts +0 -4
  103. package/legacy/dist/src/analytics/exit.d.ts +0 -4
  104. package/legacy/dist/src/analytics/index.d.ts +0 -6
  105. package/legacy/dist/src/analytics/normalize.d.ts +0 -3
  106. package/legacy/dist/src/analytics/os.d.ts +0 -2
  107. package/legacy/dist/src/analytics/session.d.ts +0 -3
  108. package/legacy/dist/src/analytics/tracker.d.ts +0 -16
  109. package/legacy/dist/src/analytics/types.d.ts +0 -28
  110. package/legacy/dist/src/analyze/composite-closure.d.ts +0 -26
  111. package/legacy/dist/src/analyze/composition/apply-mapping.d.ts +0 -22
  112. package/legacy/dist/src/analyze/composition/candidate-files.d.ts +0 -34
  113. package/legacy/dist/src/analyze/composition/composition-cache-key.d.ts +0 -18
  114. package/legacy/dist/src/analyze/composition/interchange-schema.d.ts +0 -17
  115. package/legacy/dist/src/analyze/composition/manifest-doc-evidence.d.ts +0 -49
  116. package/legacy/dist/src/analyze/composition/merge-edges.d.ts +0 -19
  117. package/legacy/dist/src/analyze/composition/parse-map-edges.d.ts +0 -16
  118. package/legacy/dist/src/analyze/composition/prompt-loader.d.ts +0 -3
  119. package/legacy/dist/src/analyze/composition/resolve-mapping-cli.d.ts +0 -10
  120. package/legacy/dist/src/analyze/composition/resolve-mapping.d.ts +0 -59
  121. package/legacy/dist/src/analyze/cycle-detection.d.ts +0 -27
  122. package/legacy/dist/src/analyze/extract-command.d.ts +0 -7
  123. package/legacy/dist/src/analyze/fuzzy-search.d.ts +0 -3
  124. package/legacy/dist/src/analyze/issue-inheritance.d.ts +0 -8
  125. package/legacy/dist/src/analyze/lineage.d.ts +0 -29
  126. package/legacy/dist/src/analyze/search-neighborhood.d.ts +0 -3
  127. package/legacy/dist/src/analyze/select/command.d.ts +0 -27
  128. package/legacy/dist/src/analyze/select/parser.d.ts +0 -6
  129. package/legacy/dist/src/analyze/select/persistence.d.ts +0 -22
  130. package/legacy/dist/src/analyze/select/preview-annotations.d.ts +0 -26
  131. package/legacy/dist/src/analyze/select/tui/LegacySelectApp.d.ts +0 -8
  132. package/legacy/dist/src/analyze/select/tui/components/ComponentDetail.d.ts +0 -19
  133. package/legacy/dist/src/analyze/select/tui/components/ComponentRationalePanel.d.ts +0 -10
  134. package/legacy/dist/src/analyze/select/tui/components/FieldEditor.d.ts +0 -67
  135. package/legacy/dist/src/analyze/select/tui/components/FinalizeDialog.d.ts +0 -22
  136. package/legacy/dist/src/analyze/select/tui/components/GotoBanner.d.ts +0 -31
  137. package/legacy/dist/src/analyze/select/tui/components/GroupedSidebar.d.ts +0 -94
  138. package/legacy/dist/src/analyze/select/tui/components/HelpOverlay.d.ts +0 -21
  139. package/legacy/dist/src/analyze/select/tui/components/HighlightedLine.d.ts +0 -9
  140. package/legacy/dist/src/analyze/select/tui/components/JsonEditor.d.ts +0 -10
  141. package/legacy/dist/src/analyze/select/tui/components/JsonPanel.d.ts +0 -11
  142. package/legacy/dist/src/analyze/select/tui/components/PreviewSummaryBar.d.ts +0 -8
  143. package/legacy/dist/src/analyze/select/tui/components/QuitDialog.d.ts +0 -8
  144. package/legacy/dist/src/analyze/select/tui/components/RationaleLine.d.ts +0 -21
  145. package/legacy/dist/src/analyze/select/tui/components/RationalePanel.d.ts +0 -15
  146. package/legacy/dist/src/analyze/select/tui/components/ScrollablePanel.d.ts +0 -14
  147. package/legacy/dist/src/analyze/select/tui/components/Sidebar.d.ts +0 -29
  148. package/legacy/dist/src/analyze/select/tui/components/SourcePanel.d.ts +0 -11
  149. package/legacy/dist/src/analyze/select/tui/components/StatusBar.d.ts +0 -11
  150. package/legacy/dist/src/analyze/select/tui/components/TokenReviewPanel.d.ts +0 -30
  151. package/legacy/dist/src/analyze/select/tui/components/TopBar.d.ts +0 -10
  152. package/legacy/dist/src/analyze/select/tui/components/removed-components-text.d.ts +0 -7
  153. package/legacy/dist/src/analyze/select/tui/components/wrap-text.d.ts +0 -1
  154. package/legacy/dist/src/analyze/select/tui/hooks/list-scroll-input.d.ts +0 -13
  155. package/legacy/dist/src/analyze/select/tui/hooks/scroll-offset.d.ts +0 -30
  156. package/legacy/dist/src/analyze/select/tui/hooks/useImmediateInput.d.ts +0 -19
  157. package/legacy/dist/src/analyze/select/tui/hooks/useKeymap.d.ts +0 -24
  158. package/legacy/dist/src/analyze/select/tui/hooks/useSession.d.ts +0 -19
  159. package/legacy/dist/src/analyze/select/tui/hooks/useUndo.d.ts +0 -8
  160. package/legacy/dist/src/analyze/select/tui/theme.d.ts +0 -18
  161. package/legacy/dist/src/analyze/select/types.d.ts +0 -54
  162. package/legacy/dist/src/analyze/selection-cascade.d.ts +0 -3
  163. package/legacy/dist/src/analyze/slot-graph.d.ts +0 -11
  164. package/legacy/dist/src/apply/api-client.d.ts +0 -64
  165. package/legacy/dist/src/apply/command.d.ts +0 -43
  166. package/legacy/dist/src/apply/preview-utils.d.ts +0 -12
  167. package/legacy/dist/src/apply/tokens.d.ts +0 -1
  168. package/legacy/dist/src/apply/tui/ServerApplyView.d.ts +0 -34
  169. package/legacy/dist/src/apply/tui/ServerPreviewView.d.ts +0 -9
  170. package/legacy/dist/src/credentials-store.d.ts +0 -18
  171. package/legacy/dist/src/doctor/checks.d.ts +0 -5
  172. package/legacy/dist/src/doctor/command.d.ts +0 -2
  173. package/legacy/dist/src/doctor/report.d.ts +0 -7
  174. package/legacy/dist/src/generate/command.d.ts +0 -2
  175. package/legacy/dist/src/generate/tui/GenerateView.d.ts +0 -12
  176. package/legacy/dist/src/helpers/build-contentful-management-client.d.ts +0 -7
  177. package/legacy/dist/src/helpers/fetch-and-persist-existing-contentful-entities.d.ts +0 -29
  178. package/legacy/dist/src/helpers/fetch-existing-contentful-entities.d.ts +0 -11
  179. package/legacy/dist/src/helpers/find-nearly-matching-component.d.ts +0 -7
  180. package/legacy/dist/src/helpers/read-existing-contentful-entities-from-session.d.ts +0 -7
  181. package/legacy/dist/src/helpers/summarize-existing-contentful-entities.d.ts +0 -50
  182. package/legacy/dist/src/host-utils.d.ts +0 -3
  183. package/legacy/dist/src/index.d.ts +0 -1
  184. package/legacy/dist/src/index.js +0 -25001
  185. package/legacy/dist/src/lib/agent-definitions.d.ts +0 -14
  186. package/legacy/dist/src/lib/agent-model-options.d.ts +0 -15
  187. package/legacy/dist/src/lib/agent-output.d.ts +0 -5
  188. package/legacy/dist/src/lib/cli-errors.d.ts +0 -2
  189. package/legacy/dist/src/lib/cli-path.d.ts +0 -4
  190. package/legacy/dist/src/lib/command-options.d.ts +0 -3
  191. package/legacy/dist/src/lib/component-patch.d.ts +0 -12
  192. package/legacy/dist/src/lib/contentful-urls.d.ts +0 -15
  193. package/legacy/dist/src/lib/debug-logger.d.ts +0 -39
  194. package/legacy/dist/src/lib/debug-preamble.d.ts +0 -7
  195. package/legacy/dist/src/lib/error-parser.d.ts +0 -40
  196. package/legacy/dist/src/lib/path-exists.d.ts +0 -1
  197. package/legacy/dist/src/lib/prompt-overrides.d.ts +0 -38
  198. package/legacy/dist/src/lib/terminal-capabilities.d.ts +0 -29
  199. package/legacy/dist/src/lib/user-agent.d.ts +0 -7
  200. package/legacy/dist/src/map-tokens/apply.d.ts +0 -12
  201. package/legacy/dist/src/map-tokens/command.d.ts +0 -2
  202. package/legacy/dist/src/map-tokens/resolve-defaults.d.ts +0 -32
  203. package/legacy/dist/src/map-tokens/tui/MapTokensView.d.ts +0 -13
  204. package/legacy/dist/src/output/format.d.ts +0 -23
  205. package/legacy/dist/src/print/command.d.ts +0 -11
  206. package/legacy/dist/src/print/validate/tui/ValidateView.d.ts +0 -15
  207. package/legacy/dist/src/print/validate/validators/cdf-validator.d.ts +0 -2
  208. package/legacy/dist/src/print/validate/validators/dtcg-validator.d.ts +0 -2
  209. package/legacy/dist/src/print/validate/validators/format-errors.d.ts +0 -12
  210. package/legacy/dist/src/print/validate/validators/read-json-file.d.ts +0 -10
  211. package/legacy/dist/src/program.d.ts +0 -25
  212. package/legacy/dist/src/runs/fingerprint.d.ts +0 -36
  213. package/legacy/dist/src/runs/save-path-resolver.d.ts +0 -11
  214. package/legacy/dist/src/runs/store.d.ts +0 -65
  215. package/legacy/dist/src/session/cache-keys.d.ts +0 -22
  216. package/legacy/dist/src/session/core/cdf/cdf-mappers.d.ts +0 -3
  217. package/legacy/dist/src/session/core/components/derive-component-id.d.ts +0 -1
  218. package/legacy/dist/src/session/core/components/hash-component-shape.d.ts +0 -5
  219. package/legacy/dist/src/session/core/shared/index-rows-by-key.d.ts +0 -1
  220. package/legacy/dist/src/session/core/tokens/build-dtcg-groups.d.ts +0 -12
  221. package/legacy/dist/src/session/core/tokens/build-dtcg-tokens.d.ts +0 -3
  222. package/legacy/dist/src/session/core/tokens/hash-token-content.d.ts +0 -1
  223. package/legacy/dist/src/session/db.d.ts +0 -200
  224. package/legacy/dist/src/session/migration.d.ts +0 -2
  225. package/legacy/dist/src/session/repositories/sessions/read.d.ts +0 -11
  226. package/legacy/dist/src/session/repositories/sessions/write.d.ts +0 -3
  227. package/legacy/dist/src/session/repositories/shared/with-transaction.d.ts +0 -2
  228. package/legacy/dist/src/session/repositories/steps/read.d.ts +0 -2
  229. package/legacy/dist/src/session/repositories/steps/write.d.ts +0 -5
  230. package/legacy/dist/src/session/repositories/tokens/read.d.ts +0 -15
  231. package/legacy/dist/src/session/repositories/tokens/write.d.ts +0 -16
  232. package/legacy/dist/src/session/resolve-session-id.d.ts +0 -1
  233. package/legacy/dist/src/session/services/session-resolver.d.ts +0 -9
  234. package/legacy/dist/src/session/services/tokens/apply-tool-calls.d.ts +0 -8
  235. package/legacy/dist/src/session/services/tokens/replace-raw-prop-token-paths.d.ts +0 -3
  236. package/legacy/dist/src/session/services/tokens/replace-raw-token-name-paths.d.ts +0 -3
  237. package/legacy/dist/src/session/services/tokens/store-dtcg-tokens.d.ts +0 -3
  238. package/legacy/dist/src/session/session-id.d.ts +0 -1
  239. package/legacy/dist/src/session/source-excerpt.d.ts +0 -26
  240. package/legacy/dist/src/setup/SetupScreen.d.ts +0 -28
  241. package/legacy/dist/src/setup/SetupStepper.d.ts +0 -7
  242. package/legacy/dist/src/setup/command.d.ts +0 -3
  243. package/legacy/dist/src/setup/lib/checks.d.ts +0 -57
  244. package/legacy/dist/src/setup/lib/shell.d.ts +0 -12
  245. package/legacy/dist/src/setup/steps/CodingAgentScreen.d.ts +0 -20
  246. package/legacy/dist/src/setup/steps/ContentfulCredentialsScreen.d.ts +0 -11
  247. package/legacy/dist/src/setup/steps/StepLayout.d.ts +0 -20
  248. package/legacy/dist/src/setup/steps/preferences/AnalyticsScreen.d.ts +0 -5
  249. package/legacy/dist/src/setup/steps/preferences/BooleanInput.d.ts +0 -21
  250. package/legacy/dist/src/setup/steps/preferences/ColorPreferenceScreen.d.ts +0 -5
  251. package/legacy/dist/src/setup/steps/preferences/CustomPromptScreen.d.ts +0 -14
  252. package/legacy/dist/src/setup/steps/preferences/DebugLogsScreen.d.ts +0 -5
  253. package/legacy/dist/src/setup/steps/preferences/PreferencesMenu.d.ts +0 -26
  254. package/legacy/dist/src/setup/steps/prerequisites/PrerequisitesScreen.d.ts +0 -16
  255. package/legacy/dist/src/setup/steps/prerequisites/build.d.ts +0 -2
  256. package/legacy/dist/src/setup/steps/prerequisites/deps.d.ts +0 -33
  257. package/legacy/dist/src/setup/steps/prerequisites/index.d.ts +0 -4
  258. package/legacy/dist/src/setup/steps/prerequisites/node.d.ts +0 -2
  259. package/legacy/dist/src/setup/steps/prerequisites/pnpm.d.ts +0 -2
  260. package/legacy/dist/src/tui/CommandCompletionView.d.ts +0 -13
  261. package/legacy/dist/src/tui/render-with-goodbye.d.ts +0 -7
  262. package/legacy/dist/src/tui/use-terminal-size.d.ts +0 -6
  263. package/legacy/dist/src/tui/windowed-panel.d.ts +0 -37
  264. package/legacy/dist/src/types.d.ts +0 -2
  265. package/legacy/package.json +0 -85
  266. package/legacy/prompts/composition-edges.md +0 -11
  267. package/legacy/skills/generate-components.md +0 -612
  268. package/legacy/skills/generate-tokens.md +0 -194
  269. package/legacy/skills/map-tokens.md +0 -102
  270. package/legacy/skills/select-components.md +0 -235
  271. /package/dist/src/tui/{upgrade → home}/version.d.ts +0 -0
  272. /package/dist/src/tui/settings/{utils → shared}/v1-store.d.ts +0 -0
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contentful/experience-design-system-cli",
3
- "version": "2.38.1-dev-build-6d903339.0",
3
+ "version": "2.38.1-dev-build-962dbe22.0",
4
4
  "description": "Contentful Experiences design system import CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -1,12 +1,10 @@
1
1
  export interface ImportOptions {
2
2
  agent?: string;
3
3
  prompt: string[];
4
- cache: boolean;
5
4
  }
6
5
  interface RawImportOptions {
7
6
  agent?: string;
8
7
  prompt?: string[];
9
- cache?: boolean;
10
8
  }
11
9
  export declare function toImportOptions(raw: RawImportOptions): ImportOptions;
12
10
  export {};
@@ -0,0 +1,12 @@
1
+ export type PruneResult = {
2
+ logs: number;
3
+ folders: number;
4
+ };
5
+ /**
6
+ * Deletes the debug logs under `<base>/.contentful` that are older than `retentionDays`. It only looks at `.md` files
7
+ * inside the `debug` folder of a session folder, so nothing the import produced or the user put there is touched. A file
8
+ * that cannot be read or deleted is skipped: this runs at startup and must never get in the user's way. A folder the
9
+ * deletion left empty is removed too, up to the session folder; one that still holds anything stays. Returns how many
10
+ * logs and folders it deleted.
11
+ */
12
+ export declare function pruneExpiredLogs(base: string, retentionDays: number, now?: number): Promise<PruneResult>;
@@ -1,6 +1,23 @@
1
1
  type Status = 'success' | 'error';
2
2
  type ExitMethod = 'saved' | 'discarded' | 'crashed';
3
- export declare function currentDebugSessionDir(): string;
3
+ export declare function currentDebugSessionDir(): string | undefined;
4
+ /** This terminal session's folder, `<base>/.contentful/<session>/`, or undefined until it is known. */
5
+ export declare function currentSessionDir(): string | undefined;
6
+ /**
7
+ * Starts this terminal session's folder in `base`. The base directory setting being saved passes `replace` so the new
8
+ * location wins; the import passes nothing and only starts a session when none exists yet. Fail-open like the rest of
9
+ * the logger.
10
+ */
11
+ export declare function startDebugSessionIn(base: string, { replace }?: {
12
+ replace?: boolean | undefined;
13
+ }): Promise<void>;
14
+ /**
15
+ * Where this import run writes everything it produces (tokens.json, .existing-entities.json, components.json): a new
16
+ * `dsi-import-N` folder in this session's folder, next to the debug logs. The session is started here, and waited for,
17
+ * so the answer does not depend on how quickly the boot-time start finished. Without a session (Debug Mode off, or a
18
+ * folder that cannot be created) the files stay in `<project>/.contentful`, as before.
19
+ */
20
+ export declare function startImportRun(projectPath: string): Promise<string>;
4
21
  export declare function startDebugRun({ flow, step, menuOption, inputs, }: {
5
22
  flow: string;
6
23
  step: string;
@@ -0,0 +1,23 @@
1
+ export interface FileLocationInput {
2
+ /** The Root Project Directory from Settings > Configuration > Project. Empty when not set. */
3
+ contentfulBaseDir: string;
4
+ /** Whether Debug Mode is on. Debug logs and the per-run folders only exist while it is. */
5
+ debugModeEnabled: boolean;
6
+ /** This terminal session's folder, once it has started. */
7
+ currentSessionDir: string | undefined;
8
+ }
9
+ export interface FileLocations {
10
+ debugLogs: string;
11
+ importFiles: string;
12
+ }
13
+ /**
14
+ * Where the CLI writes the files a user goes looking for, from the settings that decide it (see `startImportRun`).
15
+ *
16
+ * With Debug Mode on, everything goes in this terminal session's folder, `<base>/.contentful/<date>-session-N/`:
17
+ * the debug logs in `debug/` and, for each import, a `dsi-import-N/` folder with `tokens.json` and `components.json`.
18
+ * `<base>` is the Root Project Directory, or the project being imported when none is set. With Debug Mode off there is
19
+ * no session folder and no logs, and the files go to `<project>/.contentful/`.
20
+ *
21
+ * Names that are only known when a session or an import starts are shown as patterns, never guessed.
22
+ */
23
+ export declare function describeFileLocations({ contentfulBaseDir, debugModeEnabled, currentSessionDir, }: FileLocationInput): FileLocations;
@@ -1,11 +1,3 @@
1
- export declare const PALETTE: {
2
- readonly accent: "#1773EB";
3
- readonly success: "#00C459";
4
- readonly error: "#E44F20";
5
- readonly warning: "#FFDA00";
6
- readonly muted: "#8B8D91";
7
- readonly border: "#C4D1DE";
8
- };
9
1
  export declare function brandBar(width: number, ramp?: readonly string[]): {
10
2
  text: string;
11
3
  color: string;
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { type StepHeaderProps } from '@tui/shared/components/StepHeader.js';
2
3
  interface GateStepProps {
3
4
  message: string;
4
5
  onContinue: () => void;
@@ -9,6 +10,7 @@ interface GateStepProps {
9
10
  skipLabel?: string;
10
11
  onSkip?: () => void;
11
12
  intent?: 'success' | 'error';
13
+ step?: StepHeaderProps['step'];
12
14
  }
13
- export declare function GateStep({ message, onContinue, onQuit, summary, context, continueLabel, skipLabel, onSkip, intent, }: GateStepProps): React.ReactElement;
15
+ export declare function GateStep({ message, onContinue, onQuit, summary, context, continueLabel, skipLabel, onSkip, intent, step, }: GateStepProps): React.ReactElement;
14
16
  export {};
@@ -1,3 +1,4 @@
1
1
  export { ErrorStep } from './error-step/error-step.js';
2
2
  export { GateStep } from './gate-step/gate-step.js';
3
+ export { OverviewBox, type OverviewStep } from './overview-box/overview-box.js';
3
4
  export { RunningStep } from './running-step/running-step.js';
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export interface OverviewStep {
3
+ description: string;
4
+ /** Whether the step uses the user's local AI agent. */
5
+ ai: boolean;
6
+ }
7
+ /** The framed list of the steps an import goes through, with the AI disclosure under it. Shown by the intro screens. */
8
+ export declare function OverviewBox({ steps }: {
9
+ steps: readonly OverviewStep[];
10
+ }): React.ReactElement;
@@ -9,4 +9,3 @@ export interface RunningLine {
9
9
  }
10
10
  export declare function progressPercent(progress: Progress): number;
11
11
  export declare function formatElapsed(totalSeconds: number): string;
12
- export declare function stepLabel(stepNumber: number, totalSteps: number, title: string): string;
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
2
  import { type RunningLine } from './logic.js';
3
+ import type { ImportStepId } from '@tui/shared/components/StepHeader.js';
3
4
  interface RunningStepProps {
4
- stepNumber: number;
5
- totalSteps: number;
6
- title: string;
5
+ step: ImportStepId;
7
6
  description: string;
8
7
  lines?: readonly RunningLine[];
9
8
  }
10
- export declare function RunningStep({ stepNumber, totalSteps, title, description, lines, }: RunningStepProps): React.ReactElement;
9
+ export declare function RunningStep({ step, description, lines, }: RunningStepProps): React.ReactElement;
11
10
  export {};
@@ -0,0 +1,17 @@
1
+ import { type ImportTarget } from './logic.js';
2
+ export declare const PREFLIGHT_CONTROLS: readonly [{
3
+ readonly keys: "↑/↓";
4
+ readonly label: "Choose";
5
+ }, {
6
+ readonly keys: "Enter";
7
+ readonly label: "Continue";
8
+ }, {
9
+ readonly keys: "Esc";
10
+ readonly label: "Back to menu";
11
+ }];
12
+ export declare function usePreflightControls(handlers: {
13
+ focus: number;
14
+ onFocus: (focus: number) => void;
15
+ onChoose: (target: ImportTarget) => void;
16
+ onQuit: () => void;
17
+ }): void;
@@ -0,0 +1,45 @@
1
+ import type { OverviewStep } from '../../shared/index.js';
2
+ export type ImportTarget = 'both' | 'tokens' | 'components';
3
+ export declare const IMPORT_TARGET_OPTIONS: ReadonlyArray<{
4
+ target: ImportTarget;
5
+ label: string;
6
+ }>;
7
+ export declare function overviewFor(target: ImportTarget): readonly OverviewStep[];
8
+ export type ImportStepId = 'project' | 'token-file' | 'path-validation' | 'credentials' | 'component-extraction' | 'token-generation' | 'scope-gate' | 'generation' | 'review' | 'save-push';
9
+ export declare function stepsFor(target: ImportTarget): readonly ImportStepId[];
10
+ export interface InputAnswers {
11
+ projectPath?: string;
12
+ tokensPath?: string;
13
+ scannedFiles?: string[];
14
+ }
15
+ /**
16
+ * The input screen to show: the first step of this mode whose answer is still missing, or 'credentials' once every
17
+ * earlier one is answered. A mode never shows a screen it does not list, so skipping one needs no special case.
18
+ */
19
+ export declare function currentInputStep(target: ImportTarget, answers: InputAnswers): Extract<ImportStepId, 'project' | 'token-file' | 'path-validation' | 'credentials'>;
20
+ /**
21
+ * What Back from `current` does: leave for the preflight when it is the first screen of the mode, otherwise clear the
22
+ * previous step's answer so that screen shows again.
23
+ */
24
+ export declare function goBack(target: ImportTarget, current: ImportStepId, answers: InputAnswers): {
25
+ to: 'preflight';
26
+ } | {
27
+ to: 'step';
28
+ answers: InputAnswers;
29
+ };
30
+ /**
31
+ * Where a run writes its files when it has no project to put them in: the Root Project Directory setting if there is
32
+ * one, otherwise the folder the token file is in. Components runs always have a project and use it.
33
+ */
34
+ export declare function runBaseDir(input: {
35
+ projectPath?: string;
36
+ tokensPath?: string;
37
+ configuredBaseDir?: string;
38
+ }): string;
39
+ interface FocusKey {
40
+ upArrow: boolean;
41
+ downArrow: boolean;
42
+ }
43
+ /** The option focused after a key: arrows move through the list and wrap around. */
44
+ export declare function moveFocus(focus: number, key: FocusKey, count: number): number;
45
+ export {};
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { type ImportTarget } from './logic.js';
3
+ interface PreflightScreenProps {
4
+ onChoose: (target: ImportTarget) => void;
5
+ onQuit: () => void;
6
+ }
7
+ export declare function PreflightScreen({ onChoose, onQuit }: PreflightScreenProps): React.ReactElement;
8
+ export {};
@@ -1,8 +1,11 @@
1
1
  export declare const WELCOME_CONTROLS: readonly [{
2
2
  readonly keys: "Enter";
3
3
  readonly label: "Continue";
4
+ }, {
5
+ readonly keys: "Ctrl+D";
6
+ readonly label: "Clear";
4
7
  }, {
5
8
  readonly keys: "Esc";
6
- readonly label: "Back to menu";
9
+ readonly label: "Back";
7
10
  }];
8
11
  export declare function useWelcomeControls(onQuit: () => void): void;
@@ -1,6 +1,9 @@
1
1
  export declare const TOKEN_INPUT_CONTROLS: readonly [{
2
2
  readonly keys: "Enter";
3
3
  readonly label: "Continue";
4
+ }, {
5
+ readonly keys: "Ctrl+D";
6
+ readonly label: "Clear";
4
7
  }, {
5
8
  readonly keys: "Esc";
6
9
  readonly label: "Back";
@@ -1,10 +1,2 @@
1
- import { collectFiles } from '@contentful/experience-design-system-backend-pipeline';
2
- import type { FileCounts as LocalFileCounts, ScanResult } from '../logic.js';
3
- type CollectedFilesOutcome = ReturnType<typeof collectFiles>;
4
- type PipelineFileCounts = Extract<CollectedFilesOutcome, {
5
- ok: true;
6
- }>['result']['counts'];
1
+ import type { ScanResult } from '../logic.js';
7
2
  export declare function scanFiles(directory: string): ScanResult;
8
- export declare function toScanResult(outcome: CollectedFilesOutcome): ScanResult;
9
- export declare function foldSvelteAndMdIntoOther(counts: PipelineFileCounts): LocalFileCounts;
10
- export {};
@@ -32,12 +32,14 @@ interface Key {
32
32
  escape: boolean;
33
33
  return: boolean;
34
34
  }
35
- export declare function emptyCounts(): FileCounts;
36
- export declare function addFile(counts: FileCounts, fileName: string): FileCounts;
37
- export declare function mergeCounts(a: FileCounts, b: FileCounts): FileCounts;
38
- export declare function failureFromErrorCode(code: string | undefined): ScanFailureCode;
39
35
  export declare function describeFailure(failure: ScanFailureCode, path: string): FailureMessage;
40
- export declare function summarize(counts: FileCounts): Summary;
36
+ /**
37
+ * The scan result as rows and a warning. When the import does not generate tokens (components only), `.json` files are
38
+ * not design tokens here, so the row says they are ignored and the warnings do not mention tokens.
39
+ */
40
+ export declare function summarize(counts: FileCounts, { hasTokens }?: {
41
+ hasTokens?: boolean;
42
+ }): Summary;
41
43
  export declare function phaseOf(scan: ScanResult | undefined): PathPhase;
42
44
  export declare function keyAction(phase: PathPhase, input: string, key: Key): KeyAction | undefined;
43
45
  export {};
@@ -7,6 +7,8 @@ interface PathValidationScreenProps {
7
7
  }) => void;
8
8
  onChangePath: () => void;
9
9
  onBack: () => void;
10
+ /** False when the import does not generate tokens, so `.json` files are not described as design tokens. */
11
+ hasTokens?: boolean;
10
12
  }
11
- export declare function PathValidationScreen({ projectPath, onConfirm, onChangePath, onBack, }: PathValidationScreenProps): React.ReactElement;
13
+ export declare function PathValidationScreen({ projectPath, onConfirm, onChangePath, onBack, hasTokens, }: PathValidationScreenProps): React.ReactElement;
12
14
  export {};
@@ -1,14 +1,11 @@
1
- export declare const FIELDS: readonly ["spaceId", "environmentId", "cmaToken", "host"];
1
+ declare const FIELDS: readonly ["spaceId", "environmentId", "cmaToken", "host"];
2
2
  export type CredentialField = (typeof FIELDS)[number];
3
3
  export type CredentialValues = Record<CredentialField, string>;
4
- interface Key {
5
- escape: boolean;
6
- tab: boolean;
7
- ctrl: boolean;
8
- }
9
- export type KeyAction = 'back' | 'next-field' | 'skip' | null;
10
- export declare function keyAction(input: string, key: Key): KeyAction;
11
- export declare function nextField(field: CredentialField): CredentialField;
4
+ /**
5
+ * Why the space is asked for. Components are looked up in it before they are generated, so that is part of the reason
6
+ * unless the import only generates tokens, which has nothing to look up.
7
+ */
8
+ export declare function credentialsPurpose(tokensOnly: boolean): string;
12
9
  export declare function normalize(values: CredentialValues): CredentialValues;
13
10
  export declare function missingField(values: CredentialValues): boolean;
14
11
  export declare function isUnchanged(current: CredentialValues, initial: CredentialValues): boolean;
@@ -12,6 +12,8 @@ interface CredentialsScreenProps {
12
12
  onBack: () => void;
13
13
  initial?: Partial<CredentialValues>;
14
14
  validate?: (values: CredentialValues) => Promise<ValidationResult>;
15
+ /** The import only generates tokens, so there are no components to look up in the space. */
16
+ tokensOnly?: boolean;
15
17
  }
16
- export declare function CredentialsScreen({ onDone, onBack, initial, validate, }: CredentialsScreenProps): React.ReactElement;
18
+ export declare function CredentialsScreen({ onDone, onBack, initial, validate, tokensOnly, }: CredentialsScreenProps): React.ReactElement;
17
19
  export {};
@@ -4,13 +4,11 @@ import type { ExtractionProgress } from './types.js';
4
4
  export type ProgressEvent = ExtractAndComposeProgress;
5
5
  /**
6
6
  * Every job the stage will run starts on the first frame, so no row appears later as a surprise. A job that does not
7
- * apply stays 'idle' and has no row: existing entities need credentials, token definitions need a raw tokens file, and
8
- * reused tokens are already complete.
7
+ * apply stays 'idle' and has no row: existing entities need credentials, and token definitions need a raw tokens file.
9
8
  */
10
9
  export declare function initialProgress(input: {
11
10
  hasCredentials: boolean;
12
11
  hasRawTokens: boolean;
13
- reuseTokens: boolean;
14
12
  }): ExtractionProgress;
15
13
  export declare function applyProgressEvent(progress: ExtractionProgress, event: ProgressEvent): ExtractionProgress;
16
14
  /** The rows the screen shows, in the order the wizard showed them. Rows that do not apply are left out. */
@@ -20,19 +18,6 @@ export declare function progressRows(progress: ExtractionProgress, agent: string
20
18
  }>;
21
19
  /** True when every job is already done, so the screen would only flash. The wizard shows nothing in this case. */
22
20
  export declare function isFullCacheHit(progress: ExtractionProgress): boolean;
23
- /**
24
- * The wizard's step counts: three fixed steps, one more when there is a token stage, two more when components are
25
- * imported, and one more when the tokens can be mapped (not known yet at this stage, so it adds nothing here).
26
- * Extraction is step 2 when there is a token stage, otherwise step 1.
27
- */
28
- export declare function stepNumbers(input: {
29
- hasRawTokens: boolean;
30
- skipComponents?: boolean;
31
- mapTokensEligible?: boolean | null;
32
- }): {
33
- stepNumber: number;
34
- totalSteps: number;
35
- };
36
21
  export declare function noComponentsMessage(projectPath: string): string;
37
22
  export declare function agentAuthMessage(agent: string, status: 'not-found' | 'unauthenticated'): string;
38
23
  /**
@@ -0,0 +1,31 @@
1
+ import { checkAgentAuth, runGenerateTokensSession } from '@contentful/experience-design-system-backend-pipeline';
2
+ export interface TokensOnlyInput {
3
+ rawTokensPath: string;
4
+ /** Where tokens.json is written: this import run's folder. */
5
+ outDir: string;
6
+ agent: string;
7
+ agentModel?: string;
8
+ promptOverrides: string[];
9
+ noCache: boolean;
10
+ }
11
+ export type TokensOnlyResult = {
12
+ ok: true;
13
+ tokensPath: string;
14
+ tokenSessionId: string | null;
15
+ tokenCount: number;
16
+ } | {
17
+ ok: false;
18
+ step: 'generate tokens' | `${string} auth check`;
19
+ message: string;
20
+ };
21
+ /** The outside world the stage talks to, so it can be tested without an agent. */
22
+ export interface TokensOnlyDeps {
23
+ checkAgentAuth: typeof checkAgentAuth;
24
+ runGenerateTokensSession: typeof runGenerateTokensSession;
25
+ }
26
+ /**
27
+ * The extraction stage for an import that only generates tokens: the same auth check and token generation the full stage
28
+ * runs, without scanning components, composing them or selecting. The full stage fails when it finds no components, so it
29
+ * cannot be used for this.
30
+ */
31
+ export declare function runTokensOnly(input: TokensOnlyInput, deps?: TokensOnlyDeps): Promise<TokensOnlyResult>;
@@ -3,8 +3,6 @@ import type { ExtractionProgress } from './types.js';
3
3
  interface ExtractionScreenProps {
4
4
  progress: ExtractionProgress;
5
5
  agent: string;
6
- stepNumber: number;
7
- totalSteps: number;
8
6
  }
9
- export declare function ExtractionScreen({ progress, agent, stepNumber, totalSteps, }: ExtractionScreenProps): React.ReactElement;
7
+ export declare function ExtractionScreen({ progress, agent }: ExtractionScreenProps): React.ReactElement;
10
8
  export {};
@@ -1,13 +1,12 @@
1
- import type { ExtractionHandoff, ImportHandoff } from '@contentful/experience-design-system-types/handoff';
2
- export type TokenStrategy = ImportHandoff['tokens']['strategy'];
1
+ import type { ExtractionHandoff } from '@contentful/experience-design-system-types/handoff';
3
2
  export interface ExtractionInput {
4
3
  projectPath: string;
4
+ /** Where the stage writes tokens.json and the other files. Defaults to `<projectPath>/.contentful`. */
5
+ outDir?: string;
5
6
  /** Absolute source files from the path-validation step (collectFiles output). */
6
7
  filePaths: string[];
7
- /** Raw tokens file the user pointed at (always set: v2 asks for one). */
8
+ /** Raw tokens file the user pointed at. Empty when the import does not generate tokens (components only). */
8
9
  rawTokensPath: string;
9
- /** From the token reuse step. 'reuse' skips token generation entirely. */
10
- tokenStrategy: TokenStrategy;
11
10
  /** Null when the user skipped credentials: no existing-entities fetch happens. */
12
11
  credentials: {
13
12
  spaceId: string;
@@ -0,0 +1,12 @@
1
+ import { type TokensOnlyInput, type TokensOnlyResult } from './run-tokens-only.js';
2
+ export type TokensOnlyState = {
3
+ status: 'running';
4
+ } | {
5
+ status: 'done';
6
+ result: TokensOnlyResult;
7
+ };
8
+ /**
9
+ * Runs the tokens-only stage once for the given input. Passing nothing leaves it idle. A run that finishes after the
10
+ * input changed or the screen went away is ignored.
11
+ */
12
+ export declare function useTokensOnly(input: TokensOnlyInput | undefined): TokensOnlyState | undefined;
@@ -7,11 +7,4 @@ export interface CacheCheckInput {
7
7
  existingEntitiesPath: string | null;
8
8
  noCache: boolean;
9
9
  }
10
- /**
11
- * Runs the generation cache check in-process while the scope gate is open.
12
- * Restores cached CDF entries into the pipeline database as a side-effect so
13
- * the generate run that follows can skip them. A failed check is
14
- * indistinguishable from "nothing cached", as in legacy. INTEG-5050 tracks
15
- * surfacing it.
16
- */
17
10
  export declare function checkGenerationCache(input: CacheCheckInput): Promise<string[]>;
@@ -4,8 +4,6 @@ export interface ScopeComponentLike {
4
4
  name: string;
5
5
  }
6
6
  import type { Decision } from './types.js';
7
- export declare const SCOPE_GATE_MAIN_COLUMN_WIDTH = 54;
8
- export declare const ACCEPTED_COMPONENTS_COLUMN_WIDTH = 36;
9
7
  export interface ScopeGatePanelLayout {
10
8
  height: number;
11
9
  mainVisibleCount: number;
@@ -1,3 +1 @@
1
1
  export declare function fuzzyMatches(query: string, text: string): boolean;
2
- export declare function fuzzyScore(query: string, text: string): number | null;
3
- export declare function fuzzyFilter(query: string, candidates: string[]): string[];
@@ -3,27 +3,5 @@ export interface LineageParentEdge {
3
3
  parent: string;
4
4
  slotName: string;
5
5
  }
6
- export interface LineageEdge {
7
- from: string;
8
- slotName: string;
9
- to: string;
10
- }
11
- export type LineageChain = LineageEdge[];
12
6
  export declare function findDirectParents(target: string, components: ComponentGraphNode[]): LineageParentEdge[];
13
7
  export declare function findAllAncestors(target: string, components: ComponentGraphNode[]): Set<string>;
14
- export declare function findAllAncestorChains(target: string, components: ComponentGraphNode[]): LineageChain[];
15
- export interface AncestorTreeNode {
16
- name: string;
17
- incomingSlotName?: string;
18
- depth: number;
19
- shared: boolean;
20
- cycle: boolean;
21
- parents: AncestorTreeNode[];
22
- }
23
- export declare function buildAncestorTree(target: string, components: ComponentGraphNode[]): AncestorTreeNode;
24
- export interface AncestorTreeLine {
25
- text: string;
26
- jumpTarget?: string;
27
- depth: number;
28
- }
29
- export declare function renderAncestorTree(node: AncestorTreeNode): AncestorTreeLine[];
@@ -3,4 +3,3 @@ export type AiFlaggable = {
3
3
  needsReview?: boolean;
4
4
  };
5
5
  export declare function isAiFlagged(row: AiFlaggable): boolean;
6
- export declare function isDefaultIncluded(row: AiFlaggable): boolean;
@@ -33,6 +33,7 @@ export interface GroupedSidebarProps {
33
33
  visibleRows?: VisibleRow[];
34
34
  graph: ComponentGraphNode[];
35
35
  filterVisibleKeys?: Set<string>;
36
+ emptyMessage?: string;
36
37
  }
37
38
  type RowKind = 'cycle' | 'empty' | 'group-root' | 'group-child' | 'standalone' | 'flat' | 'flat-header';
38
39
  export interface VisibleRow {
@@ -56,38 +57,5 @@ export declare function buildVisibleRows(props: {
56
57
  graph: ComponentGraphNode[];
57
58
  filterVisibleKeys?: Set<string>;
58
59
  }): VisibleRow[];
59
- export declare function visibleItemOrder(props: {
60
- items: GroupedSidebarItem[];
61
- cycleParticipants: Set<string>;
62
- expandedGroups: Set<string>;
63
- alwaysExpanded?: boolean;
64
- showFlatTier?: boolean;
65
- graph: ComponentGraphNode[];
66
- }): number[];
67
- export declare function labelStyleFor(input: {
68
- row: VisibleRow;
69
- isCursor: boolean;
70
- wouldDim: boolean;
71
- }): {
72
- color: string | undefined;
73
- bold: boolean;
74
- dim: boolean;
75
- };
76
- export declare function selectionGlyphStyleFor(selState: 'accepted' | 'rejected' | 'undecided' | undefined, isCycleRow: boolean): {
77
- glyph: string | null;
78
- color: string | undefined;
79
- dim: boolean;
80
- bold: boolean;
81
- };
82
- export declare function inheritanceGlyphStyleFor(input: {
83
- status: RenderStatus['status'] | undefined;
84
- isOwn: boolean;
85
- isCursor: boolean;
86
- }): {
87
- glyph: string | null;
88
- color: string | undefined;
89
- dim: boolean;
90
- bold: boolean;
91
- };
92
60
  export declare function GroupedSidebar(props: GroupedSidebarProps): React.ReactElement;
93
61
  export {};
@@ -25,6 +25,10 @@ export interface FixedPanelProps {
25
25
  export declare function FixedPanel({ width, height, minHeight, focused, borderStyle, borderColor, paddingLeft, clipOverflow, children, }: FixedPanelProps): ReactElement;
26
26
  /** Shared frame for panels whose viewport must not change with their contents. */
27
27
  export declare function WindowedPanel({ width, height, title, focused, children }: WindowedPanelProps): ReactElement;
28
+ export declare function WindowFooter({ above, below }: {
29
+ above: number;
30
+ below: number;
31
+ }): ReactElement;
28
32
  export declare function WindowIndicator({ direction, count }: {
29
33
  direction: WindowDirection;
30
34
  count: number;
@@ -1,10 +1,3 @@
1
- /** Maximum layout rows; the active terminal height determines the actual budget. */
2
- export declare const VISIBLE_COUNT = 200;
3
- /** Maximum supported panel window; normal terminals remain terminal-sized. */
4
- export declare const MAX_PANEL_ROWS = 200;
5
- /** Floors — both surfaces stay usable even on a small terminal. */
6
- export declare const SIDEBAR_MIN = 4;
7
- export declare const MIN_PANEL_ROWS = 4;
8
1
  /**
9
2
  * Fallback when `stdout.rows` is unavailable (piped output, tests). No TTY
10
3
  * means Ink is not interactively repainting, so there is no flicker risk — we
@@ -12,23 +5,6 @@ export declare const MIN_PANEL_ROWS = 4;
12
5
  * render is complete and unclipped.
13
6
  */
14
7
  export declare const FALLBACK_ROWS = 40;
15
- /**
16
- * Vertical space consumed by everything ABOVE/BELOW the columns row. The panel
17
- * shares the columns row, so the fit constraint while open is simply
18
- * `FIXED_OVERHEAD + panelBoxHeight <= rows`.
19
- */
20
- export declare const FIXED_OVERHEAD: number;
21
- export declare const PANEL_BOX_CHROME = 6;
22
- /**
23
- * L2e — fixed vertical chrome around the sidebar in the BASE (no-panel) case,
24
- * counting EVERYTHING that is not a variable sidebar entry row: the wizard
25
- * header bar, the counter strip (with its blank separator), the cycle banner,
26
- * the nothing-selected /
27
- * AI-exclusion hint, the GroupedSidebar box borders + scroll indicator, the
28
- * focused-detail block, and the wrapping legend region. The value intentionally
29
- * leaves a small safety margin so resize-induced wrapping does not overflow.
30
- */
31
- export declare const BASE_CHROME_OVERHEAD = 18;
32
8
  export interface LineageLayoutInput {
33
9
  /** Terminal height in rows (`stdout.rows`, or the fallback). */
34
10
  rows: number;
@@ -37,18 +13,6 @@ export interface LineageLayoutInput {
37
13
  /** Number of lineage entries — caps the panel window so it never over-allocates. */
38
14
  entryCount?: number;
39
15
  }
40
- export interface LineageLayout {
41
- /** Rows the sidebar should render (`visibleCount`). Constant across open/closed. */
42
- sidebarVisible: number;
43
- /** Rows a sidebar replacement panel should window to (`maxRows`). */
44
- panelMaxRows: number;
45
- }
46
- /**
47
- * The sidebar height is constant (the panel replaces it in the same slot, so
48
- * there is nothing to shrink). Both values are derived from the terminal so
49
- * resizing grows or shrinks the viewport without content-driven layout changes.
50
- */
51
- export declare function computeLineageLayout({ rows, panelOpen, entryCount }: LineageLayoutInput): LineageLayout;
52
16
  export interface SidebarBudget {
53
17
  /** Rows the GroupedSidebar should render (`visibleCount`). */
54
18
  sidebarVisibleCount: number;
@@ -11,6 +11,10 @@ export declare function computeFilterKeys(input: {
11
11
  filters: Iterable<FilterCategory>;
12
12
  data: FilterDataSources;
13
13
  }): Set<string> | undefined;
14
+ export declare function describeEmptyFilter(input: {
15
+ filters: Iterable<FilterCategory>;
16
+ slotDependencies?: boolean;
17
+ }): string | undefined;
14
18
  export declare function intersectFilterKeys(a: Set<string> | undefined, b: Set<string> | undefined): Set<string> | undefined;
15
19
  export declare function buildFlatDimPredicate(input: {
16
20
  viewMode: 'grouped' | 'flat';
@@ -26,6 +26,7 @@ export declare function useScopeGate({ components, onConfirm, onQuit }: UseScope
26
26
  expandedGroups: Set<string>;
27
27
  toggleExpanded: (rootName: string) => void;
28
28
  visibleRows: import("./sidebar/components/GroupedSidebar.js").VisibleRow[];
29
+ emptyMessage: string | undefined;
29
30
  safeCursor: number;
30
31
  scrollOffset: number;
31
32
  selectionStateByKey: Map<string, "accepted" | "rejected" | "undecided">;