opensip-cli 0.1.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 (348) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +8 -0
  3. package/README.md +51 -0
  4. package/dist/api.d.ts +17 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +16 -0
  7. package/dist/api.js.map +1 -0
  8. package/dist/bootstrap/admit-tool-package.d.ts +117 -0
  9. package/dist/bootstrap/admit-tool-package.d.ts.map +1 -0
  10. package/dist/bootstrap/admit-tool-package.js +170 -0
  11. package/dist/bootstrap/admit-tool-package.js.map +1 -0
  12. package/dist/bootstrap/baseline-seams.d.ts +30 -0
  13. package/dist/bootstrap/baseline-seams.d.ts.map +1 -0
  14. package/dist/bootstrap/baseline-seams.js +156 -0
  15. package/dist/bootstrap/baseline-seams.js.map +1 -0
  16. package/dist/bootstrap/bootstrap-error.d.ts +41 -0
  17. package/dist/bootstrap/bootstrap-error.d.ts.map +1 -0
  18. package/dist/bootstrap/bootstrap-error.js +33 -0
  19. package/dist/bootstrap/bootstrap-error.js.map +1 -0
  20. package/dist/bootstrap/build-command-registration-input.d.ts +34 -0
  21. package/dist/bootstrap/build-command-registration-input.d.ts.map +1 -0
  22. package/dist/bootstrap/build-command-registration-input.js +73 -0
  23. package/dist/bootstrap/build-command-registration-input.js.map +1 -0
  24. package/dist/bootstrap/build-per-run-scope.d.ts +62 -0
  25. package/dist/bootstrap/build-per-run-scope.d.ts.map +1 -0
  26. package/dist/bootstrap/build-per-run-scope.js +152 -0
  27. package/dist/bootstrap/build-per-run-scope.js.map +1 -0
  28. package/dist/bootstrap/build-targets.d.ts +42 -0
  29. package/dist/bootstrap/build-targets.d.ts.map +1 -0
  30. package/dist/bootstrap/build-targets.js +117 -0
  31. package/dist/bootstrap/build-targets.js.map +1 -0
  32. package/dist/bootstrap/cli-defaults.d.ts +35 -0
  33. package/dist/bootstrap/cli-defaults.d.ts.map +1 -0
  34. package/dist/bootstrap/cli-defaults.js +65 -0
  35. package/dist/bootstrap/cli-defaults.js.map +1 -0
  36. package/dist/bootstrap/config-and-capabilities.d.ts +74 -0
  37. package/dist/bootstrap/config-and-capabilities.d.ts.map +1 -0
  38. package/dist/bootstrap/config-and-capabilities.js +224 -0
  39. package/dist/bootstrap/config-and-capabilities.js.map +1 -0
  40. package/dist/bootstrap/deliver-envelope.d.ts +80 -0
  41. package/dist/bootstrap/deliver-envelope.d.ts.map +1 -0
  42. package/dist/bootstrap/deliver-envelope.js +195 -0
  43. package/dist/bootstrap/deliver-envelope.js.map +1 -0
  44. package/dist/bootstrap/egress-plane.d.ts +22 -0
  45. package/dist/bootstrap/egress-plane.d.ts.map +1 -0
  46. package/dist/bootstrap/egress-plane.js +37 -0
  47. package/dist/bootstrap/egress-plane.js.map +1 -0
  48. package/dist/bootstrap/host-planes.d.ts +28 -0
  49. package/dist/bootstrap/host-planes.d.ts.map +1 -0
  50. package/dist/bootstrap/host-planes.js +152 -0
  51. package/dist/bootstrap/host-planes.js.map +1 -0
  52. package/dist/bootstrap/index.d.ts +76 -0
  53. package/dist/bootstrap/index.d.ts.map +1 -0
  54. package/dist/bootstrap/index.js +109 -0
  55. package/dist/bootstrap/index.js.map +1 -0
  56. package/dist/bootstrap/live-plane.d.ts +51 -0
  57. package/dist/bootstrap/live-plane.d.ts.map +1 -0
  58. package/dist/bootstrap/live-plane.js +72 -0
  59. package/dist/bootstrap/live-plane.js.map +1 -0
  60. package/dist/bootstrap/load-tool-capabilities.d.ts +42 -0
  61. package/dist/bootstrap/load-tool-capabilities.d.ts.map +1 -0
  62. package/dist/bootstrap/load-tool-capabilities.js +76 -0
  63. package/dist/bootstrap/load-tool-capabilities.js.map +1 -0
  64. package/dist/bootstrap/output-plane.d.ts +37 -0
  65. package/dist/bootstrap/output-plane.d.ts.map +1 -0
  66. package/dist/bootstrap/output-plane.js +114 -0
  67. package/dist/bootstrap/output-plane.js.map +1 -0
  68. package/dist/bootstrap/owning-tool-init.d.ts +32 -0
  69. package/dist/bootstrap/owning-tool-init.d.ts.map +1 -0
  70. package/dist/bootstrap/owning-tool-init.js +69 -0
  71. package/dist/bootstrap/owning-tool-init.js.map +1 -0
  72. package/dist/bootstrap/pre-action-guards.d.ts +44 -0
  73. package/dist/bootstrap/pre-action-guards.d.ts.map +1 -0
  74. package/dist/bootstrap/pre-action-guards.js +136 -0
  75. package/dist/bootstrap/pre-action-guards.js.map +1 -0
  76. package/dist/bootstrap/pre-action-hook.d.ts +68 -0
  77. package/dist/bootstrap/pre-action-hook.d.ts.map +1 -0
  78. package/dist/bootstrap/pre-action-hook.js +289 -0
  79. package/dist/bootstrap/pre-action-hook.js.map +1 -0
  80. package/dist/bootstrap/pre-action-messages.d.ts +32 -0
  81. package/dist/bootstrap/pre-action-messages.d.ts.map +1 -0
  82. package/dist/bootstrap/pre-action-messages.js +49 -0
  83. package/dist/bootstrap/pre-action-messages.js.map +1 -0
  84. package/dist/bootstrap/process-idempotency.d.ts +17 -0
  85. package/dist/bootstrap/process-idempotency.d.ts.map +1 -0
  86. package/dist/bootstrap/process-idempotency.js +20 -0
  87. package/dist/bootstrap/process-idempotency.js.map +1 -0
  88. package/dist/bootstrap/register-language-adapters.d.ts +23 -0
  89. package/dist/bootstrap/register-language-adapters.d.ts.map +1 -0
  90. package/dist/bootstrap/register-language-adapters.js +35 -0
  91. package/dist/bootstrap/register-language-adapters.js.map +1 -0
  92. package/dist/bootstrap/register-tools.d.ts +228 -0
  93. package/dist/bootstrap/register-tools.d.ts.map +1 -0
  94. package/dist/bootstrap/register-tools.js +696 -0
  95. package/dist/bootstrap/register-tools.js.map +1 -0
  96. package/dist/bootstrap/render.d.ts +27 -0
  97. package/dist/bootstrap/render.d.ts.map +1 -0
  98. package/dist/bootstrap/render.js +53 -0
  99. package/dist/bootstrap/render.js.map +1 -0
  100. package/dist/bootstrap/report.d.ts +34 -0
  101. package/dist/bootstrap/report.d.ts.map +1 -0
  102. package/dist/bootstrap/report.js +47 -0
  103. package/dist/bootstrap/report.js.map +1 -0
  104. package/dist/bootstrap/run-plane.d.ts +105 -0
  105. package/dist/bootstrap/run-plane.d.ts.map +1 -0
  106. package/dist/bootstrap/run-plane.js +190 -0
  107. package/dist/bootstrap/run-plane.js.map +1 -0
  108. package/dist/bootstrap/scope-access.d.ts +68 -0
  109. package/dist/bootstrap/scope-access.d.ts.map +1 -0
  110. package/dist/bootstrap/scope-access.js +115 -0
  111. package/dist/bootstrap/scope-access.js.map +1 -0
  112. package/dist/bootstrap/state-seams.d.ts +14 -0
  113. package/dist/bootstrap/state-seams.d.ts.map +1 -0
  114. package/dist/bootstrap/state-seams.js +26 -0
  115. package/dist/bootstrap/state-seams.js.map +1 -0
  116. package/dist/bootstrap/tool-lifecycle.d.ts +102 -0
  117. package/dist/bootstrap/tool-lifecycle.d.ts.map +1 -0
  118. package/dist/bootstrap/tool-lifecycle.js +103 -0
  119. package/dist/bootstrap/tool-lifecycle.js.map +1 -0
  120. package/dist/bootstrap/tool-trust.d.ts +49 -0
  121. package/dist/bootstrap/tool-trust.d.ts.map +1 -0
  122. package/dist/bootstrap/tool-trust.js +65 -0
  123. package/dist/bootstrap/tool-trust.js.map +1 -0
  124. package/dist/bootstrap/validate-tool.d.ts +22 -0
  125. package/dist/bootstrap/validate-tool.d.ts.map +1 -0
  126. package/dist/bootstrap/validate-tool.js +38 -0
  127. package/dist/bootstrap/validate-tool.js.map +1 -0
  128. package/dist/cli-context.d.ts +38 -0
  129. package/dist/cli-context.d.ts.map +1 -0
  130. package/dist/cli-context.js +134 -0
  131. package/dist/cli-context.js.map +1 -0
  132. package/dist/commands/agent-catalog.d.ts +45 -0
  133. package/dist/commands/agent-catalog.d.ts.map +1 -0
  134. package/dist/commands/agent-catalog.js +115 -0
  135. package/dist/commands/agent-catalog.js.map +1 -0
  136. package/dist/commands/assemble-outcome.d.ts +69 -0
  137. package/dist/commands/assemble-outcome.d.ts.map +1 -0
  138. package/dist/commands/assemble-outcome.js +121 -0
  139. package/dist/commands/assemble-outcome.js.map +1 -0
  140. package/dist/commands/clear.d.ts +32 -0
  141. package/dist/commands/clear.d.ts.map +1 -0
  142. package/dist/commands/clear.js +73 -0
  143. package/dist/commands/clear.js.map +1 -0
  144. package/dist/commands/completion.d.ts +90 -0
  145. package/dist/commands/completion.d.ts.map +1 -0
  146. package/dist/commands/completion.js +233 -0
  147. package/dist/commands/completion.js.map +1 -0
  148. package/dist/commands/configure.d.ts +32 -0
  149. package/dist/commands/configure.d.ts.map +1 -0
  150. package/dist/commands/configure.js +94 -0
  151. package/dist/commands/configure.js.map +1 -0
  152. package/dist/commands/history.d.ts +18 -0
  153. package/dist/commands/history.d.ts.map +1 -0
  154. package/dist/commands/history.js +48 -0
  155. package/dist/commands/history.js.map +1 -0
  156. package/dist/commands/host-command-specs.d.ts +49 -0
  157. package/dist/commands/host-command-specs.d.ts.map +1 -0
  158. package/dist/commands/host-command-specs.js +331 -0
  159. package/dist/commands/host-command-specs.js.map +1 -0
  160. package/dist/commands/host-subcommand-groups.d.ts +69 -0
  161. package/dist/commands/host-subcommand-groups.d.ts.map +1 -0
  162. package/dist/commands/host-subcommand-groups.js +374 -0
  163. package/dist/commands/host-subcommand-groups.js.map +1 -0
  164. package/dist/commands/index.d.ts +36 -0
  165. package/dist/commands/index.d.ts.map +1 -0
  166. package/dist/commands/index.js +36 -0
  167. package/dist/commands/index.js.map +1 -0
  168. package/dist/commands/init/config-templates.d.ts +16 -0
  169. package/dist/commands/init/config-templates.d.ts.map +1 -0
  170. package/dist/commands/init/config-templates.js +108 -0
  171. package/dist/commands/init/config-templates.js.map +1 -0
  172. package/dist/commands/init/file-classifier.d.ts +40 -0
  173. package/dist/commands/init/file-classifier.d.ts.map +1 -0
  174. package/dist/commands/init/file-classifier.js +155 -0
  175. package/dist/commands/init/file-classifier.js.map +1 -0
  176. package/dist/commands/init/language-detection.d.ts +44 -0
  177. package/dist/commands/init/language-detection.d.ts.map +1 -0
  178. package/dist/commands/init/language-detection.js +124 -0
  179. package/dist/commands/init/language-detection.js.map +1 -0
  180. package/dist/commands/init/scaffold-writer.d.ts +26 -0
  181. package/dist/commands/init/scaffold-writer.d.ts.map +1 -0
  182. package/dist/commands/init/scaffold-writer.js +102 -0
  183. package/dist/commands/init/scaffold-writer.js.map +1 -0
  184. package/dist/commands/init/state-machine.d.ts +32 -0
  185. package/dist/commands/init/state-machine.d.ts.map +1 -0
  186. package/dist/commands/init/state-machine.js +105 -0
  187. package/dist/commands/init/state-machine.js.map +1 -0
  188. package/dist/commands/init.d.ts +95 -0
  189. package/dist/commands/init.d.ts.map +1 -0
  190. package/dist/commands/init.js +209 -0
  191. package/dist/commands/init.js.map +1 -0
  192. package/dist/commands/mount-command-spec.d.ts +106 -0
  193. package/dist/commands/mount-command-spec.d.ts.map +1 -0
  194. package/dist/commands/mount-command-spec.js +313 -0
  195. package/dist/commands/mount-command-spec.js.map +1 -0
  196. package/dist/commands/mount-result-command.d.ts +71 -0
  197. package/dist/commands/mount-result-command.d.ts.map +1 -0
  198. package/dist/commands/mount-result-command.js +76 -0
  199. package/dist/commands/mount-result-command.js.map +1 -0
  200. package/dist/commands/plugin/config-edit.d.ts +20 -0
  201. package/dist/commands/plugin/config-edit.d.ts.map +1 -0
  202. package/dist/commands/plugin/config-edit.js +102 -0
  203. package/dist/commands/plugin/config-edit.js.map +1 -0
  204. package/dist/commands/plugin/domain-resolution.d.ts +38 -0
  205. package/dist/commands/plugin/domain-resolution.d.ts.map +1 -0
  206. package/dist/commands/plugin/domain-resolution.js +98 -0
  207. package/dist/commands/plugin/domain-resolution.js.map +1 -0
  208. package/dist/commands/plugin/host-dir.d.ts +42 -0
  209. package/dist/commands/plugin/host-dir.d.ts.map +1 -0
  210. package/dist/commands/plugin/host-dir.js +168 -0
  211. package/dist/commands/plugin/host-dir.js.map +1 -0
  212. package/dist/commands/plugin-host-ops.d.ts +41 -0
  213. package/dist/commands/plugin-host-ops.d.ts.map +1 -0
  214. package/dist/commands/plugin-host-ops.js +114 -0
  215. package/dist/commands/plugin-host-ops.js.map +1 -0
  216. package/dist/commands/plugin.d.ts +81 -0
  217. package/dist/commands/plugin.d.ts.map +1 -0
  218. package/dist/commands/plugin.js +287 -0
  219. package/dist/commands/plugin.js.map +1 -0
  220. package/dist/commands/render-outcome.d.ts +52 -0
  221. package/dist/commands/render-outcome.d.ts.map +1 -0
  222. package/dist/commands/render-outcome.js +55 -0
  223. package/dist/commands/render-outcome.js.map +1 -0
  224. package/dist/commands/session-show.d.ts +27 -0
  225. package/dist/commands/session-show.d.ts.map +1 -0
  226. package/dist/commands/session-show.js +166 -0
  227. package/dist/commands/session-show.js.map +1 -0
  228. package/dist/commands/shared.d.ts +107 -0
  229. package/dist/commands/shared.d.ts.map +1 -0
  230. package/dist/commands/shared.js +13 -0
  231. package/dist/commands/shared.js.map +1 -0
  232. package/dist/commands/tools/data-purge.d.ts +20 -0
  233. package/dist/commands/tools/data-purge.d.ts.map +1 -0
  234. package/dist/commands/tools/data-purge.js +59 -0
  235. package/dist/commands/tools/data-purge.js.map +1 -0
  236. package/dist/commands/tools/index.d.ts +16 -0
  237. package/dist/commands/tools/index.d.ts.map +1 -0
  238. package/dist/commands/tools/index.js +213 -0
  239. package/dist/commands/tools/index.js.map +1 -0
  240. package/dist/commands/tools/install.d.ts +24 -0
  241. package/dist/commands/tools/install.d.ts.map +1 -0
  242. package/dist/commands/tools/install.js +83 -0
  243. package/dist/commands/tools/install.js.map +1 -0
  244. package/dist/commands/tools/list.d.ts +41 -0
  245. package/dist/commands/tools/list.d.ts.map +1 -0
  246. package/dist/commands/tools/list.js +103 -0
  247. package/dist/commands/tools/list.js.map +1 -0
  248. package/dist/commands/tools/runtime-probe-entry.d.ts +14 -0
  249. package/dist/commands/tools/runtime-probe-entry.d.ts.map +1 -0
  250. package/dist/commands/tools/runtime-probe-entry.js +36 -0
  251. package/dist/commands/tools/runtime-probe-entry.js.map +1 -0
  252. package/dist/commands/tools/runtime-probe.d.ts +29 -0
  253. package/dist/commands/tools/runtime-probe.d.ts.map +1 -0
  254. package/dist/commands/tools/runtime-probe.js +66 -0
  255. package/dist/commands/tools/runtime-probe.js.map +1 -0
  256. package/dist/commands/tools/storage-contract-checks.d.ts +37 -0
  257. package/dist/commands/tools/storage-contract-checks.d.ts.map +1 -0
  258. package/dist/commands/tools/storage-contract-checks.js +91 -0
  259. package/dist/commands/tools/storage-contract-checks.js.map +1 -0
  260. package/dist/commands/tools/uninstall.d.ts +29 -0
  261. package/dist/commands/tools/uninstall.d.ts.map +1 -0
  262. package/dist/commands/tools/uninstall.js +77 -0
  263. package/dist/commands/tools/uninstall.js.map +1 -0
  264. package/dist/commands/tools/validate.d.ts +44 -0
  265. package/dist/commands/tools/validate.d.ts.map +1 -0
  266. package/dist/commands/tools/validate.js +202 -0
  267. package/dist/commands/tools/validate.js.map +1 -0
  268. package/dist/commands/uninstall/targets.d.ts +53 -0
  269. package/dist/commands/uninstall/targets.d.ts.map +1 -0
  270. package/dist/commands/uninstall/targets.js +205 -0
  271. package/dist/commands/uninstall/targets.js.map +1 -0
  272. package/dist/commands/uninstall.d.ts +88 -0
  273. package/dist/commands/uninstall.d.ts.map +1 -0
  274. package/dist/commands/uninstall.js +184 -0
  275. package/dist/commands/uninstall.js.map +1 -0
  276. package/dist/env/host-env-specs.d.ts +52 -0
  277. package/dist/env/host-env-specs.d.ts.map +1 -0
  278. package/dist/env/host-env-specs.js +129 -0
  279. package/dist/env/host-env-specs.js.map +1 -0
  280. package/dist/error-handler.d.ts +64 -0
  281. package/dist/error-handler.d.ts.map +1 -0
  282. package/dist/error-handler.js +180 -0
  283. package/dist/error-handler.js.map +1 -0
  284. package/dist/index.d.ts +21 -0
  285. package/dist/index.d.ts.map +1 -0
  286. package/dist/index.js +154 -0
  287. package/dist/index.js.map +1 -0
  288. package/dist/open-report.d.ts +40 -0
  289. package/dist/open-report.d.ts.map +1 -0
  290. package/dist/open-report.js +54 -0
  291. package/dist/open-report.js.map +1 -0
  292. package/dist/report-compose.d.ts +35 -0
  293. package/dist/report-compose.d.ts.map +1 -0
  294. package/dist/report-compose.js +103 -0
  295. package/dist/report-compose.js.map +1 -0
  296. package/dist/session-replay-registry.d.ts +20 -0
  297. package/dist/session-replay-registry.d.ts.map +1 -0
  298. package/dist/session-replay-registry.js +38 -0
  299. package/dist/session-replay-registry.js.map +1 -0
  300. package/dist/telemetry/profiling.d.ts +42 -0
  301. package/dist/telemetry/profiling.d.ts.map +1 -0
  302. package/dist/telemetry/profiling.js +160 -0
  303. package/dist/telemetry/profiling.js.map +1 -0
  304. package/dist/telemetry/sdk-init.d.ts +87 -0
  305. package/dist/telemetry/sdk-init.d.ts.map +1 -0
  306. package/dist/telemetry/sdk-init.js +235 -0
  307. package/dist/telemetry/sdk-init.js.map +1 -0
  308. package/dist/ui/App.d.ts +32 -0
  309. package/dist/ui/App.d.ts.map +1 -0
  310. package/dist/ui/App.js +35 -0
  311. package/dist/ui/App.js.map +1 -0
  312. package/dist/ui/render.d.ts +15 -0
  313. package/dist/ui/render.d.ts.map +1 -0
  314. package/dist/ui/render.js +21 -0
  315. package/dist/ui/render.js.map +1 -0
  316. package/dist/ui/result-to-view.d.ts +40 -0
  317. package/dist/ui/result-to-view.d.ts.map +1 -0
  318. package/dist/ui/result-to-view.js +389 -0
  319. package/dist/ui/result-to-view.js.map +1 -0
  320. package/dist/ui/views/init-view.d.ts +9 -0
  321. package/dist/ui/views/init-view.d.ts.map +1 -0
  322. package/dist/ui/views/init-view.js +119 -0
  323. package/dist/ui/views/init-view.js.map +1 -0
  324. package/dist/ui/views/misc-views.d.ts +18 -0
  325. package/dist/ui/views/misc-views.d.ts.map +1 -0
  326. package/dist/ui/views/misc-views.js +244 -0
  327. package/dist/ui/views/misc-views.js.map +1 -0
  328. package/dist/ui/views/plugin-view.d.ts +8 -0
  329. package/dist/ui/views/plugin-view.d.ts.map +1 -0
  330. package/dist/ui/views/plugin-view.js +135 -0
  331. package/dist/ui/views/plugin-view.js.map +1 -0
  332. package/dist/ui/views/tools-views.d.ts +12 -0
  333. package/dist/ui/views/tools-views.d.ts.map +1 -0
  334. package/dist/ui/views/tools-views.js +152 -0
  335. package/dist/ui/views/tools-views.js.map +1 -0
  336. package/dist/update-notifier.d.ts +108 -0
  337. package/dist/update-notifier.d.ts.map +1 -0
  338. package/dist/update-notifier.js +188 -0
  339. package/dist/update-notifier.js.map +1 -0
  340. package/dist/update-state.d.ts +40 -0
  341. package/dist/update-state.d.ts.map +1 -0
  342. package/dist/update-state.js +81 -0
  343. package/dist/update-state.js.map +1 -0
  344. package/dist/welcome.d.ts +53 -0
  345. package/dist/welcome.d.ts.map +1 -0
  346. package/dist/welcome.js +89 -0
  347. package/dist/welcome.js.map +1 -0
  348. package/package.json +100 -0
@@ -0,0 +1,40 @@
1
+ /**
2
+ * resultToView — the single `CommandResult → ViewNode` mapping.
3
+ *
4
+ * This is the cli-side counterpart to the cli-ui interpreters: each
5
+ * command result is expressed once as a renderer-agnostic view-model node,
6
+ * which the seam (`bootstrap/render.ts`) then renders through `renderToInk`
7
+ * (TTY) or `renderToText` (pipe/CI). Because both media consume the same
8
+ * node, interactive and non-interactive output cannot drift.
9
+ *
10
+ * This mapping is total — every `CommandResult` variant has a view. The
11
+ * Ink `App` shell adds only the banner/project chrome around the body this
12
+ * produces; there is no separate per-type rendering anymore.
13
+ *
14
+ * cli may depend on both `@opensip-cli/contracts` (for `CommandResult`)
15
+ * and `@opensip-cli/cli-ui` (for the view-model). The keystone boundary
16
+ * only forbids the reverse — cli-ui must never import contracts.
17
+ */
18
+ import { type ViewNode } from '@opensip-cli/cli-ui';
19
+ import type { CommandResult, SignalEnvelope, VerboseDetail } from '@opensip-cli/contracts';
20
+ /**
21
+ * Render a tool's verbose detail body (ADR-0021) as a `ViewNode`, switching on
22
+ * the union `kind`. `lines` → verbatim text (graph's catalog/findings dump);
23
+ * `findings` → the shared coloured findings blocks (fit/sim). Rendered through
24
+ * the same seam as everything else, so a tool's `--verbose` output is identical
25
+ * in a TTY and a pipe.
26
+ */
27
+ export declare function renderVerboseDetail(detail: VerboseDetail): ViewNode;
28
+ /**
29
+ * The shared envelope → terminal-table view. Used by every migrated tool's
30
+ * result (fit/sim always; graph when it carries an envelope). The per-tool
31
+ * `rows`/`reportLines` legacy derivations it once fell back to were retired in
32
+ * Phase 7 (ADR-0011).
33
+ *
34
+ * When `verboseDetail` is present (a `--verbose` run), its rendered body is
35
+ * prepended above the per-unit table (ADR-0021).
36
+ */
37
+ export declare function envelopeToTableView(envelope: SignalEnvelope, verboseDetail?: VerboseDetail): ViewNode;
38
+ /** Map any CommandResult to its view-model node (total — every variant covered). */
39
+ export declare function resultToView(result: CommandResult): ViewNode;
40
+ //# sourceMappingURL=result-to-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-to-view.d.ts","sourceRoot":"","sources":["../../src/ui/result-to-view.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAaL,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AA4B7B,OAAO,KAAK,EACV,aAAa,EAIb,cAAc,EACd,aAAa,EACd,MAAM,wBAAwB,CAAC;AA8OhC;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAInE;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,cAAc,EACxB,aAAa,CAAC,EAAE,aAAa,GAC5B,QAAQ,CAoBV;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAwF5D"}
@@ -0,0 +1,389 @@
1
+ // @fitness-ignore-file file-length-limit -- the one result→view dispatch switch grows a case per CommandResult variant; the view BODIES already live in ui/views/* (init, misc, plugin, tools) and cli-ui, so what remains is the irreducible switch + shared envelope-table helpers. Splitting the switch would fragment the single dispatch surface (cf. command-results.ts's identical waiver for the union itself).
2
+ /**
3
+ * resultToView — the single `CommandResult → ViewNode` mapping.
4
+ *
5
+ * This is the cli-side counterpart to the cli-ui interpreters: each
6
+ * command result is expressed once as a renderer-agnostic view-model node,
7
+ * which the seam (`bootstrap/render.ts`) then renders through `renderToInk`
8
+ * (TTY) or `renderToText` (pipe/CI). Because both media consume the same
9
+ * node, interactive and non-interactive output cannot drift.
10
+ *
11
+ * This mapping is total — every `CommandResult` variant has a view. The
12
+ * Ink `App` shell adds only the banner/project chrome around the body this
13
+ * produces; there is no separate per-type rendering anymore.
14
+ *
15
+ * cli may depend on both `@opensip-cli/contracts` (for `CommandResult`)
16
+ * and `@opensip-cli/cli-ui` (for the view-model). The keystone boundary
17
+ * only forbids the reverse — cli-ui must never import contracts.
18
+ */
19
+ import { line, group, viewRunSummary, viewFooterHints, viewVerboseLines, viewFindingsGroups, VERBOSE_DETAIL_HINT, formatValidatedColumn, parseValidatedCount, sortFitRowPriority, } from '@opensip-cli/cli-ui';
20
+ import { formatSignalTableRows, formatSignalTableSummary, } from '@opensip-cli/output';
21
+ import { viewInit } from './views/init-view.js';
22
+ import { viewListChecks, viewListRecipes, viewHistory, viewSimNotice, viewReport, viewClearDone, viewConfigureDone, viewUninstallDone, viewHelp, } from './views/misc-views.js';
23
+ import { viewPlugin } from './views/plugin-view.js';
24
+ import { viewToolsDataPurge, viewToolsInstall, viewToolsList, viewToolsUninstall, viewToolsValidate, } from './views/tools-views.js';
25
+ const SPACER = { kind: 'spacer' };
26
+ /**
27
+ * Resolve the top-level run duration for a summary line.
28
+ *
29
+ * host-owned-run-timing Phase 4: this is the EXPLICIT value the host caller
30
+ * stamps onto the done result from the host run lifecycle (the same duration
31
+ * the host writes to `StoredSession.durationMs`). The former `currentScope()`
32
+ * scope-stash heuristic — which probed an imagined `runSession.timing` on the
33
+ * RunScope — is gone (nothing ever stashed it; it always degraded to 0). The
34
+ * `?? 0` is only a defensive default for an error path or a very early failure
35
+ * before any lifecycle/duration exists.
36
+ */
37
+ function resolveSummaryDuration(explicit) {
38
+ return explicit ?? 0;
39
+ }
40
+ /** `✗ <message>` plus an optional dim suggestion — mirrors ErrorMessage. */
41
+ function errorView(result) {
42
+ const children = [
43
+ line([{ text: '✗', tone: 'error' }, { text: ` ${result.message}` }]),
44
+ ];
45
+ if (result.suggestion !== undefined) {
46
+ children.push(line([{ text: ` ${result.suggestion}` }], true));
47
+ }
48
+ return group(children, 2);
49
+ }
50
+ /**
51
+ * The graph report: an optional verbose body, an optional fast-tier
52
+ * caveat, the shared summary line, and the shared footer hints. The
53
+ * summary/hints reuse the cli-ui producers, so graph's piped and TTY
54
+ * output match each other and the live view — no hand-maintained
55
+ * plain-text copies (which previously lived in graph-report.ts).
56
+ */
57
+ function graphDoneView(result) {
58
+ const children = [];
59
+ if (result.verboseDetail !== undefined) {
60
+ children.push(renderVerboseDetail(result.verboseDetail), SPACER);
61
+ }
62
+ if (result.resolutionBanner !== undefined) {
63
+ children.push(line([{ text: result.resolutionBanner, tone: 'muted' }]));
64
+ }
65
+ // ADR-0035: the headline verdict is PASS/FAIL. graph-done carries count-based
66
+ // summary (no envelope verdict on this report path), so derive the verdict from
67
+ // graph's default policy — fail on any error-rung finding ({failOnErrors:1}).
68
+ children.push(viewRunSummary({
69
+ passed: result.summary.errors === 0,
70
+ errors: result.summary.errors,
71
+ warnings: result.summary.warnings,
72
+ durationMs: resolveSummaryDuration(result.durationMs),
73
+ }));
74
+ // Non-verbose run: show the shared "Use --verbose…" hint plus graph's
75
+ // report hint (ADR-0021 — one source for the verbose-hint string).
76
+ if (result.verboseDetail === undefined) {
77
+ children.push(viewFooterHints([
78
+ VERBOSE_DETAIL_HINT,
79
+ { text: 'opensip report for HTML report', bold: ['opensip report'] },
80
+ ]));
81
+ }
82
+ return group(children);
83
+ }
84
+ /**
85
+ * A replayed session (`sessions show` / `--show`). Uniform across tools: a
86
+ * compact session header + the SAME shared envelope→table view a live run uses
87
+ * (so a replayed graph session shows its per-rule table too), and deliberately
88
+ * NO live-run footer ("Use --verbose" / "report") — that is fresh-run guidance,
89
+ * meaningless for a replay. ADR-0011: the projected envelope is the one currency.
90
+ */
91
+ function sessionReplayView(result) {
92
+ const s = result.session;
93
+ const when = new Date(s.startedAt).toLocaleString();
94
+ const verdictTone = s.passed ? 'success' : 'error';
95
+ return group([
96
+ line([
97
+ { text: 'Session ', bold: true },
98
+ { text: s.id },
99
+ { text: ` · ${s.tool}`, tone: 'brand' },
100
+ { text: ` · ${when}`, tone: 'muted' },
101
+ ]),
102
+ line([
103
+ { text: `${s.score}%`, tone: verdictTone },
104
+ { text: ' ' },
105
+ { text: s.passed ? 'PASS' : 'FAIL', tone: verdictTone },
106
+ ...(s.recipe === undefined
107
+ ? []
108
+ : [{ text: ` · recipe ${s.recipe}`, tone: 'muted' }]),
109
+ { text: ` · replayed (${result.fidelity})`, tone: 'muted' },
110
+ ]),
111
+ SPACER,
112
+ envelopeToTableView(result.envelope),
113
+ ]);
114
+ }
115
+ /** Pre-composed lines rendered verbatim through both media (gate output, graph status). */
116
+ function linesView(lines) {
117
+ return group(lines.map((l) => line([{ text: l }])));
118
+ }
119
+ function titledLinesView(title, lines) {
120
+ const children = [];
121
+ if (title !== undefined && title.length > 0) {
122
+ children.push(line([{ text: title, bold: true }]));
123
+ if (lines.length > 0)
124
+ children.push(SPACER);
125
+ }
126
+ children.push(...lines.map((l) => line([{ text: l }])));
127
+ return group(children);
128
+ }
129
+ function unknownResultView(result) {
130
+ const type = typeof result === 'object' &&
131
+ result !== null &&
132
+ 'type' in result &&
133
+ typeof result.type === 'string'
134
+ ? result.type
135
+ : 'unknown';
136
+ return group([
137
+ line([{ text: `Unsupported command result '${type}'`, tone: 'warning' }]),
138
+ line([{ text: 'Use --json to inspect the raw result payload.', dim: true }]),
139
+ ], 2);
140
+ }
141
+ // --- Envelope-derived terminal table (ADR-0011) -----------------------------
142
+ //
143
+ // The single, tool-agnostic table derivation: every migrated tool's result
144
+ // carries a `SignalEnvelope`, and the terminal table is derived FROM its
145
+ // `units` + `signals` via the shared `formatSignalTableRows` / `Summary`
146
+ // formatters (`@opensip-cli/output`). One row per unit (check / rule /
147
+ // scenario). Replaces the three per-tool, pre-computed `rows`/`reportLines`
148
+ // shapes (the fit/sim/graph `*DoneResult` legacy branches, retired in Phase 7).
149
+ const ENV_COL = {
150
+ status: 7,
151
+ errors: 6,
152
+ warnings: 8,
153
+ validated: 12,
154
+ ignored: 7,
155
+ duration: 10,
156
+ };
157
+ function envStatusTone(status) {
158
+ if (status === 'FAIL')
159
+ return 'error';
160
+ if (status === 'ERROR')
161
+ return 'warning';
162
+ return 'success';
163
+ }
164
+ function envDurationTone(ms) {
165
+ if (ms >= 60_000)
166
+ return 'error';
167
+ if (ms >= 30_000)
168
+ return 'warning';
169
+ return 'success';
170
+ }
171
+ /** Ignored-ratio tone: red >10%, yellow >5%, else muted (parity with the live view). */
172
+ function envIgnoredTone(ignored, validatedCell) {
173
+ const total = parseValidatedCount(validatedCell);
174
+ if (total === 0 || ignored === 0)
175
+ return 'muted';
176
+ const pct = (ignored / total) * 100;
177
+ if (pct > 10)
178
+ return 'error';
179
+ if (pct > 5)
180
+ return 'warning';
181
+ return 'muted';
182
+ }
183
+ const ENV_SEP = { text: ' | ' };
184
+ /**
185
+ * Fixed-width per-unit table from the envelope's signal-table rows, or null
186
+ * when empty. Renders fitness's `Validated`/`Ignores` columns when ANY row
187
+ * carries `validated` (a per-unit fact on {@link UnitResult}); graph/sim rows
188
+ * omit them, so those tools' tables stay the lean 5-column form.
189
+ */
190
+ function envelopeTableNode(rows) {
191
+ if (rows.length === 0)
192
+ return null;
193
+ const sorted = [...rows].sort((a, b) => sortFitRowPriority(a) - sortFitRowPriority(b));
194
+ const unitW = Math.max(40, ...sorted.map((r) => r.unit.length));
195
+ const showValidated = sorted.some((r) => r.validated !== undefined);
196
+ const headerCells = [
197
+ 'Unit'.padEnd(unitW),
198
+ 'Status'.padEnd(ENV_COL.status),
199
+ 'Errors'.padEnd(ENV_COL.errors),
200
+ 'Warnings'.padEnd(ENV_COL.warnings),
201
+ ...(showValidated
202
+ ? ['Validated'.padEnd(ENV_COL.validated), 'Ignores'.padEnd(ENV_COL.ignored)]
203
+ : []),
204
+ 'Duration'.padEnd(ENV_COL.duration),
205
+ ];
206
+ const sepCells = [
207
+ '-'.repeat(unitW),
208
+ '-'.repeat(ENV_COL.status),
209
+ '-'.repeat(ENV_COL.errors),
210
+ '-'.repeat(ENV_COL.warnings),
211
+ ...(showValidated ? ['-'.repeat(ENV_COL.validated), '-'.repeat(ENV_COL.ignored)] : []),
212
+ '-'.repeat(ENV_COL.duration),
213
+ ];
214
+ const header = line([{ text: headerCells.join(' | ') }]);
215
+ const separator = line([{ text: sepCells.join('-|-') }]);
216
+ const rowNodes = sorted.map((r) => {
217
+ const validatedCell = formatValidatedColumn(r.validated, r.itemType);
218
+ const spans = [
219
+ { text: r.unit.padEnd(unitW) },
220
+ ENV_SEP,
221
+ { text: r.status.padEnd(ENV_COL.status), tone: envStatusTone(r.status) },
222
+ ENV_SEP,
223
+ { text: String(r.errors).padEnd(ENV_COL.errors), tone: r.errors > 0 ? 'error' : 'success' },
224
+ ENV_SEP,
225
+ {
226
+ text: String(r.warnings).padEnd(ENV_COL.warnings),
227
+ tone: r.warnings > 0 ? 'warning' : 'muted',
228
+ },
229
+ ];
230
+ if (showValidated) {
231
+ spans.push(ENV_SEP, { text: validatedCell.padEnd(ENV_COL.validated) }, ENV_SEP, {
232
+ text: String(r.ignored ?? 0).padEnd(ENV_COL.ignored),
233
+ tone: envIgnoredTone(r.ignored ?? 0, validatedCell),
234
+ });
235
+ }
236
+ spans.push(ENV_SEP, {
237
+ text: r.duration.padEnd(ENV_COL.duration),
238
+ tone: envDurationTone(r.durationMs),
239
+ });
240
+ return line(spans);
241
+ });
242
+ return group([header, separator, ...rowNodes]);
243
+ }
244
+ /**
245
+ * Render a tool's verbose detail body (ADR-0021) as a `ViewNode`, switching on
246
+ * the union `kind`. `lines` → verbatim text (graph's catalog/findings dump);
247
+ * `findings` → the shared coloured findings blocks (fit/sim). Rendered through
248
+ * the same seam as everything else, so a tool's `--verbose` output is identical
249
+ * in a TTY and a pipe.
250
+ */
251
+ export function renderVerboseDetail(detail) {
252
+ return detail.kind === 'lines'
253
+ ? viewVerboseLines(detail.lines)
254
+ : viewFindingsGroups(detail.groups);
255
+ }
256
+ /**
257
+ * Append the shared non-verbose footer (the "Use --verbose…" hint + the
258
+ * report hint) to a view when `show` is true (ADR-0021). Used by the
259
+ * envelope-backed tools (fit/sim) so a non-verbose run nudges toward the detail
260
+ * body and the HTML report — parity with graph's footer.
261
+ */
262
+ function withVerboseHint(node, show) {
263
+ if (!show)
264
+ return node;
265
+ return group([
266
+ node,
267
+ viewFooterHints([
268
+ VERBOSE_DETAIL_HINT,
269
+ { text: 'opensip report for HTML report', bold: ['opensip report'] },
270
+ ]),
271
+ ]);
272
+ }
273
+ /**
274
+ * The shared envelope → terminal-table view. Used by every migrated tool's
275
+ * result (fit/sim always; graph when it carries an envelope). The per-tool
276
+ * `rows`/`reportLines` legacy derivations it once fell back to were retired in
277
+ * Phase 7 (ADR-0011).
278
+ *
279
+ * When `verboseDetail` is present (a `--verbose` run), its rendered body is
280
+ * prepended above the per-unit table (ADR-0021).
281
+ */
282
+ export function envelopeToTableView(envelope, verboseDetail) {
283
+ const rows = formatSignalTableRows(envelope);
284
+ const summary = formatSignalTableSummary(envelope);
285
+ const children = [];
286
+ if (verboseDetail !== undefined) {
287
+ children.push(renderVerboseDetail(verboseDetail), SPACER);
288
+ }
289
+ const table = envelopeTableNode(rows);
290
+ if (table !== null)
291
+ children.push(table);
292
+ children.push(viewRunSummary({
293
+ // ADR-0035: the headline is the run's single verdict; the per-unit
294
+ // passed/failed counts live in the table rows above.
295
+ passed: envelope.verdict.passed,
296
+ errors: summary.totalErrors,
297
+ warnings: summary.totalWarnings,
298
+ durationMs: resolveSummaryDuration(summary.durationMs),
299
+ }));
300
+ return group(children);
301
+ }
302
+ /** Map any CommandResult to its view-model node (total — every variant covered). */
303
+ export function resultToView(result) {
304
+ switch (result.type) {
305
+ // fit (Phase 6) and sim (Phase 4) are both envelope-backed: the terminal
306
+ // table is derived from the envelope (one row per check/scenario unit) and
307
+ // the optional verbose body + non-verbose "Use --verbose…" hint render
308
+ // through the one shared seam (ADR-0011/ADR-0021), identically in TTY/pipe.
309
+ case 'fit-done':
310
+ case 'sim-done': {
311
+ return withVerboseHint(envelopeToTableView(result.envelope, result.verboseDetail), result.verboseDetail === undefined);
312
+ }
313
+ case 'error': {
314
+ return errorView(result);
315
+ }
316
+ case 'graph-done': {
317
+ // graph keeps its own rich report view (it delivers signals via an
318
+ // explicit `cli.deliverSignals(...)` call, not via a result envelope).
319
+ return graphDoneView(result);
320
+ }
321
+ case 'gate-done': {
322
+ return linesView(result.lines);
323
+ }
324
+ case 'graph-status': {
325
+ return linesView(result.lines);
326
+ }
327
+ case 'text-lines': {
328
+ return titledLinesView(result.title, result.lines);
329
+ }
330
+ case 'list-checks': {
331
+ return viewListChecks(result);
332
+ }
333
+ case 'list-recipes': {
334
+ return viewListRecipes(result);
335
+ }
336
+ case 'history': {
337
+ return viewHistory(result);
338
+ }
339
+ case 'session-replay': {
340
+ return sessionReplayView(result);
341
+ }
342
+ case 'report': {
343
+ return viewReport(result);
344
+ }
345
+ case 'init': {
346
+ return viewInit(result);
347
+ }
348
+ case 'sim-notice': {
349
+ return viewSimNotice(result);
350
+ }
351
+ case 'tools-list': {
352
+ return viewToolsList(result);
353
+ }
354
+ case 'tools-validate': {
355
+ return viewToolsValidate(result);
356
+ }
357
+ case 'tools-install': {
358
+ return viewToolsInstall(result);
359
+ }
360
+ case 'tools-uninstall': {
361
+ return viewToolsUninstall(result);
362
+ }
363
+ case 'tools-data-purge': {
364
+ return viewToolsDataPurge(result);
365
+ }
366
+ case 'plugin-list':
367
+ case 'plugin-add':
368
+ case 'plugin-remove':
369
+ case 'plugin-sync': {
370
+ return viewPlugin(result);
371
+ }
372
+ case 'clear-done': {
373
+ return viewClearDone(result);
374
+ }
375
+ case 'configure-done': {
376
+ return viewConfigureDone(result);
377
+ }
378
+ case 'uninstall-done': {
379
+ return viewUninstallDone(result);
380
+ }
381
+ case 'help': {
382
+ return viewHelp();
383
+ }
384
+ default: {
385
+ return unknownResultView(result);
386
+ }
387
+ }
388
+ }
389
+ //# sourceMappingURL=result-to-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-to-view.js","sourceRoot":"","sources":["../../src/ui/result-to-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * init view-model builder — expresses the InitResult's branches
3
+ * (inside-existing-project refusal, ambiguous language, partial-state
4
+ * refusal, re-scaffold/pristine success, creation failure) as a ViewNode.
5
+ */
6
+ import { type ViewNode } from '@opensip-cli/cli-ui';
7
+ import type { InitResult } from '@opensip-cli/contracts';
8
+ export declare function viewInit(result: InitResult): ViewNode;
9
+ //# sourceMappingURL=init-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-view.d.ts","sourceRoot":"","sources":["../../../src/ui/views/init-view.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAA0B,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,wBAAwB,CAAC;AA0I1E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAkBrD"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * init view-model builder — expresses the InitResult's branches
3
+ * (inside-existing-project refusal, ambiguous language, partial-state
4
+ * refusal, re-scaffold/pristine success, creation failure) as a ViewNode.
5
+ */
6
+ import { line, group } from '@opensip-cli/cli-ui';
7
+ function classificationTone(cls) {
8
+ if (cls === 'custom')
9
+ return 'success';
10
+ if (cls === 'stale-scaffolded')
11
+ return 'warning';
12
+ return 'brand';
13
+ }
14
+ function relativize(p, cwd) {
15
+ return p.startsWith(`${cwd}/`) ? p.slice(cwd.length + 1) : p;
16
+ }
17
+ /** Render a pre-formatted multi-line message (verbatim) as one line node per line. */
18
+ function verbatim(message) {
19
+ return group(message.split('\n').map((l) => line([{ text: l }])), 2);
20
+ }
21
+ function partialStateHeadline(state, cfg) {
22
+ if (state === 'fully-initialized')
23
+ return 'Already initialized';
24
+ if (state === 'partial-config-only')
25
+ return `${cfg} present but opensip-cli/ missing`;
26
+ return `opensip-cli/ present but ${cfg} missing`;
27
+ }
28
+ function createdHeadline(state) {
29
+ if (state === 'fully-initialized')
30
+ return 'Re-scaffolded';
31
+ if (state === 'partial-config-only' || state === 'partial-dir-only')
32
+ return 'Recovered partial state';
33
+ return 'Scaffolded';
34
+ }
35
+ function preExistingLines(files, cwd) {
36
+ return files.map((f) => line([
37
+ { text: ` ${relativize(f.path, cwd)}`, dim: true },
38
+ { text: ` (${f.classification})`, tone: classificationTone(f.classification) },
39
+ ]));
40
+ }
41
+ function ambiguousView(message) {
42
+ return group([
43
+ line([
44
+ { text: '✗', tone: 'error' },
45
+ { text: ' ' },
46
+ { text: 'Cannot scaffold — language ambiguous', bold: true },
47
+ ]),
48
+ { kind: 'spacer' },
49
+ line([{ text: ` ${message}` }]),
50
+ ], 2);
51
+ }
52
+ function partialStateView(err, cwd, configFilename) {
53
+ const children = [
54
+ line([
55
+ { text: '⚠', tone: 'warning' },
56
+ { text: ' ' },
57
+ { text: partialStateHeadline(err.state, configFilename), bold: true },
58
+ { text: ' in ' },
59
+ { text: cwd, dim: true },
60
+ ]),
61
+ ];
62
+ if (err.preExistingFiles.length > 0) {
63
+ children.push({ kind: 'spacer' }, line([
64
+ { text: ` Found ${err.preExistingFiles.length} file(s) under opensip-cli/:`, dim: true },
65
+ ]), ...preExistingLines(err.preExistingFiles, cwd));
66
+ }
67
+ children.push({ kind: 'spacer' }, line([{ text: ' Choose one:' }]), line([
68
+ { text: ' ' },
69
+ { text: 'opensip init --keep', tone: 'brand' },
70
+ { text: ' Re-scaffold examples; preserve custom files.', dim: true },
71
+ ]), line([
72
+ { text: ' ' },
73
+ { text: 'opensip init --remove', tone: 'brand' },
74
+ { text: ' Delete opensip-cli/ and scaffold fresh.', dim: true },
75
+ ]));
76
+ return group(children, 2);
77
+ }
78
+ function createdView(result) {
79
+ const { cwd } = result;
80
+ const langDisplay = result.languages && result.languages.length > 0 ? result.languages.join(', ') : 'unknown';
81
+ const children = [
82
+ line([
83
+ { text: '✓', tone: 'success' },
84
+ { text: ` ${createdHeadline(result.state)} for ` },
85
+ { text: langDisplay, bold: true },
86
+ { text: ' in ' },
87
+ { text: cwd, dim: true },
88
+ ]),
89
+ ];
90
+ if (result.createdFiles && result.createdFiles.length > 0) {
91
+ children.push({ kind: 'spacer' }, ...result.createdFiles.map((f) => line([{ text: ` ${relativize(f, cwd)}`, dim: true }])));
92
+ }
93
+ if (result.gitignoreUpdated === true) {
94
+ children.push(line([{ text: ' .gitignore (added opensip-cli/.runtime/)', dim: true }]));
95
+ }
96
+ if (result.preExistingFiles && result.preExistingFiles.length > 0) {
97
+ children.push({ kind: 'spacer' }, line([{ text: ' Pre-existing files:', dim: true }]), ...preExistingLines(result.preExistingFiles, cwd));
98
+ }
99
+ children.push({ kind: 'spacer' }, line([{ text: ' Try it:', dim: true }]), line([{ text: ' ' }, { text: 'opensip fit --recipe example', tone: 'brand' }]), line([{ text: ' ' }, { text: 'opensip sim --recipe example', tone: 'brand' }]));
100
+ return group(children, 2);
101
+ }
102
+ export function viewInit(result) {
103
+ if (result.insideExistingProject !== undefined)
104
+ return verbatim(result.insideExistingProject.message);
105
+ if (result.ambiguousLanguageError !== undefined)
106
+ return ambiguousView(result.ambiguousLanguageError.message);
107
+ if (result.partialStateError !== undefined)
108
+ return partialStateView(result.partialStateError, result.cwd, result.configFilename);
109
+ if (result.created)
110
+ return createdView(result);
111
+ return group([
112
+ line([
113
+ { text: '✗', tone: 'error' },
114
+ { text: ` Failed to scaffold ${result.configFilename} at ` },
115
+ { text: result.path, dim: true },
116
+ ]),
117
+ ], 2);
118
+ }
119
+ //# sourceMappingURL=init-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-view.js","sourceRoot":"","sources":["../../../src/ui/views/init-view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * View-model builders for the remaining result types: list-checks,
3
+ * list-recipes, history, simulation notice, report, help, and the
4
+ * clear/configure/uninstall "done" summaries. Each reproduces the visible
5
+ * output of its retired Ink component as a renderer-agnostic ViewNode.
6
+ */
7
+ import { type ViewNode } from '@opensip-cli/cli-ui';
8
+ import type { ClearDoneResult, ConfigureDoneResult, HistoryResult, ListChecksResult, ListRecipesResult, ReportResult, SimNoticeResult, UninstallDoneResult } from '@opensip-cli/contracts';
9
+ export declare function viewListChecks(result: ListChecksResult): ViewNode;
10
+ export declare function viewListRecipes(result: ListRecipesResult): ViewNode;
11
+ export declare function viewHistory(result: HistoryResult): ViewNode;
12
+ export declare function viewSimNotice(_result: SimNoticeResult): ViewNode;
13
+ export declare function viewHelp(): ViewNode;
14
+ export declare function viewReport(result: ReportResult): ViewNode;
15
+ export declare function viewClearDone(result: ClearDoneResult): ViewNode;
16
+ export declare function viewConfigureDone(result: ConfigureDoneResult): ViewNode;
17
+ export declare function viewUninstallDone(result: UninstallDoneResult): ViewNode;
18
+ //# sourceMappingURL=misc-views.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc-views.d.ts","sourceRoot":"","sources":["../../../src/ui/views/misc-views.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EAEf,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAQhC,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAqCjE;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,QAAQ,CAanE;AA6CD,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAgB3D;AAID,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAuBhE;AAID,wBAAgB,QAAQ,IAAI,QAAQ,CAoBnC;AAID,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,QAAQ,CAiBzD;AAID,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,QAAQ,CAe/D;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAiBvE;AAWD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,QAAQ,CAqCvE"}