@calltelemetry/cli 0.6.13 → 0.7.1

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 (436) hide show
  1. package/dist/commands/config.d.ts.map +1 -1
  2. package/dist/commands/config.js +0 -42
  3. package/dist/commands/config.js.map +1 -1
  4. package/dist/commands/loadtest.d.ts.map +1 -1
  5. package/dist/commands/loadtest.js +214 -1
  6. package/dist/commands/loadtest.js.map +1 -1
  7. package/dist/commands/otel.d.ts +3 -0
  8. package/dist/commands/otel.d.ts.map +1 -0
  9. package/dist/commands/otel.js +89 -0
  10. package/dist/commands/otel.js.map +1 -0
  11. package/dist/commands/seed.d.ts +3 -0
  12. package/dist/commands/seed.d.ts.map +1 -0
  13. package/dist/commands/seed.js +106 -0
  14. package/dist/commands/seed.js.map +1 -0
  15. package/dist/commands/storage.d.ts +3 -0
  16. package/dist/commands/storage.d.ts.map +1 -0
  17. package/dist/commands/storage.js +66 -0
  18. package/dist/commands/storage.js.map +1 -0
  19. package/dist/index.js +6 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/lib/migration-004-systemd-docker.js +3 -3
  22. package/dist/lib/migration-004-systemd-docker.js.map +1 -1
  23. package/dist/lib/migration-005-ssh-keys.js +3 -3
  24. package/dist/lib/migration-005-ssh-keys.js.map +1 -1
  25. package/dist/lib/migration-013-grafana-password.d.ts +15 -0
  26. package/dist/lib/migration-013-grafana-password.d.ts.map +1 -0
  27. package/dist/lib/migration-013-grafana-password.js +80 -0
  28. package/dist/lib/migration-013-grafana-password.js.map +1 -0
  29. package/dist/lib/migration-014-docker-firewall-backend.d.ts +16 -0
  30. package/dist/lib/migration-014-docker-firewall-backend.d.ts.map +1 -0
  31. package/dist/lib/migration-014-docker-firewall-backend.js +72 -0
  32. package/dist/lib/migration-014-docker-firewall-backend.js.map +1 -0
  33. package/dist/lib/migrations.d.ts +8 -0
  34. package/dist/lib/migrations.d.ts.map +1 -1
  35. package/dist/lib/migrations.js +52 -0
  36. package/dist/lib/migrations.js.map +1 -1
  37. package/dist/lib/otel.d.ts +7 -7
  38. package/dist/lib/otel.d.ts.map +1 -1
  39. package/dist/lib/otel.js +18 -25
  40. package/dist/lib/otel.js.map +1 -1
  41. package/dist/lib/prefs.d.ts +1 -0
  42. package/dist/lib/prefs.d.ts.map +1 -1
  43. package/dist/lib/prefs.js +1 -0
  44. package/dist/lib/prefs.js.map +1 -1
  45. package/dist/lib/prompts.d.ts +3 -0
  46. package/dist/lib/prompts.d.ts.map +1 -0
  47. package/dist/lib/prompts.js +39 -0
  48. package/dist/lib/prompts.js.map +1 -0
  49. package/dist/lib/rpc-scripts.d.ts +4 -0
  50. package/dist/lib/rpc-scripts.d.ts.map +1 -1
  51. package/dist/lib/rpc-scripts.js +235 -0
  52. package/dist/lib/rpc-scripts.js.map +1 -1
  53. package/dist/lib/secrets.d.ts +2 -2
  54. package/dist/lib/secrets.d.ts.map +1 -1
  55. package/dist/lib/secrets.js +2 -1
  56. package/dist/lib/secrets.js.map +1 -1
  57. package/dist/lib/seed/connection.d.ts +5 -0
  58. package/dist/lib/seed/connection.d.ts.map +1 -0
  59. package/dist/lib/seed/connection.js +168 -0
  60. package/dist/lib/seed/connection.js.map +1 -0
  61. package/dist/lib/seed/copy.d.ts +4 -0
  62. package/dist/lib/seed/copy.d.ts.map +1 -0
  63. package/dist/lib/seed/copy.js +74 -0
  64. package/dist/lib/seed/copy.js.map +1 -0
  65. package/dist/lib/seed/dashboard-templates.d.ts +22 -0
  66. package/dist/lib/seed/dashboard-templates.d.ts.map +1 -0
  67. package/dist/lib/seed/dashboard-templates.js +268 -0
  68. package/dist/lib/seed/dashboard-templates.js.map +1 -0
  69. package/dist/lib/seed/families.d.ts +5 -0
  70. package/dist/lib/seed/families.d.ts.map +1 -0
  71. package/dist/lib/seed/families.js +1541 -0
  72. package/dist/lib/seed/families.js.map +1 -0
  73. package/dist/lib/seed/index.d.ts +12 -0
  74. package/dist/lib/seed/index.d.ts.map +1 -0
  75. package/dist/lib/seed/index.js +327 -0
  76. package/dist/lib/seed/index.js.map +1 -0
  77. package/dist/lib/seed/presets.d.ts +5 -0
  78. package/dist/lib/seed/presets.d.ts.map +1 -0
  79. package/dist/lib/seed/presets.js +114 -0
  80. package/dist/lib/seed/presets.js.map +1 -0
  81. package/dist/lib/seed/schema/columns.d.ts +35 -0
  82. package/dist/lib/seed/schema/columns.d.ts.map +1 -0
  83. package/dist/lib/seed/schema/columns.js +497 -0
  84. package/dist/lib/seed/schema/columns.js.map +1 -0
  85. package/dist/lib/seed/schema/fingerprint.d.ts +2 -0
  86. package/dist/lib/seed/schema/fingerprint.d.ts.map +1 -0
  87. package/dist/lib/seed/schema/fingerprint.js +4 -0
  88. package/dist/lib/seed/schema/fingerprint.js.map +1 -0
  89. package/dist/lib/seed/schema/index.d.ts +4 -0
  90. package/dist/lib/seed/schema/index.d.ts.map +1 -0
  91. package/dist/lib/seed/schema/index.js +6 -0
  92. package/dist/lib/seed/schema/index.js.map +1 -0
  93. package/dist/lib/seed/schema/spec.d.ts +8 -0
  94. package/dist/lib/seed/schema/spec.d.ts.map +1 -0
  95. package/dist/lib/seed/schema/spec.js +655 -0
  96. package/dist/lib/seed/schema/spec.js.map +1 -0
  97. package/dist/lib/seed/schema/tables.d.ts +132 -0
  98. package/dist/lib/seed/schema/tables.d.ts.map +1 -0
  99. package/dist/lib/seed/schema/tables.js +37 -0
  100. package/dist/lib/seed/schema/tables.js.map +1 -0
  101. package/dist/lib/seed/store.d.ts +26 -0
  102. package/dist/lib/seed/store.d.ts.map +1 -0
  103. package/dist/lib/seed/store.js +111 -0
  104. package/dist/lib/seed/store.js.map +1 -0
  105. package/dist/lib/seed/types.d.ts +71 -0
  106. package/dist/lib/seed/types.d.ts.map +1 -0
  107. package/dist/lib/seed/types.js +2 -0
  108. package/dist/lib/seed/types.js.map +1 -0
  109. package/dist/lib/storage.d.ts +4 -0
  110. package/dist/lib/storage.d.ts.map +1 -0
  111. package/dist/lib/storage.js +36 -0
  112. package/dist/lib/storage.js.map +1 -0
  113. package/dist/lib/update-steps.d.ts.map +1 -1
  114. package/dist/lib/update-steps.js +15 -0
  115. package/dist/lib/update-steps.js.map +1 -1
  116. package/dist/lib/update.d.ts.map +1 -1
  117. package/dist/lib/update.js +28 -2
  118. package/dist/lib/update.js.map +1 -1
  119. package/dist/lib/version.d.ts +1 -1
  120. package/dist/lib/version.d.ts.map +1 -1
  121. package/dist/lib/version.js +1 -1
  122. package/dist/lib/version.js.map +1 -1
  123. package/dist/lib/xcc-loadtest-types.d.ts +232 -0
  124. package/dist/lib/xcc-loadtest-types.d.ts.map +1 -0
  125. package/dist/lib/xcc-loadtest-types.js +2 -0
  126. package/dist/lib/xcc-loadtest-types.js.map +1 -0
  127. package/dist/lib/xcc-loadtest.d.ts +4 -0
  128. package/dist/lib/xcc-loadtest.d.ts.map +1 -0
  129. package/dist/lib/xcc-loadtest.js +616 -0
  130. package/dist/lib/xcc-loadtest.js.map +1 -0
  131. package/dist/lib/xcc-overlay.d.ts +3 -0
  132. package/dist/lib/xcc-overlay.d.ts.map +1 -0
  133. package/dist/lib/xcc-overlay.js +74 -0
  134. package/dist/lib/xcc-overlay.js.map +1 -0
  135. package/dist/lib/xcc-scenarios.d.ts +8 -0
  136. package/dist/lib/xcc-scenarios.d.ts.map +1 -0
  137. package/dist/lib/xcc-scenarios.js +129 -0
  138. package/dist/lib/xcc-scenarios.js.map +1 -0
  139. package/dist/lib/xcc-xml.d.ts +18 -0
  140. package/dist/lib/xcc-xml.d.ts.map +1 -0
  141. package/dist/lib/xcc-xml.js +210 -0
  142. package/dist/lib/xcc-xml.js.map +1 -0
  143. package/dist/shell/commands/appliance-migrations.d.ts +7 -0
  144. package/dist/shell/commands/appliance-migrations.d.ts.map +1 -0
  145. package/dist/shell/commands/appliance-migrations.js +128 -0
  146. package/dist/shell/commands/appliance-migrations.js.map +1 -0
  147. package/dist/shell/commands/appliance-performance.js +6 -6
  148. package/dist/shell/commands/appliance-performance.js.map +1 -1
  149. package/dist/shell/commands/config.d.ts.map +1 -1
  150. package/dist/shell/commands/config.js +6 -5
  151. package/dist/shell/commands/config.js.map +1 -1
  152. package/dist/shell/commands/connect.d.ts.map +1 -1
  153. package/dist/shell/commands/connect.js +3 -2
  154. package/dist/shell/commands/connect.js.map +1 -1
  155. package/dist/shell/commands/db.d.ts.map +1 -1
  156. package/dist/shell/commands/db.js +5 -4
  157. package/dist/shell/commands/db.js.map +1 -1
  158. package/dist/shell/commands/debug.d.ts.map +1 -1
  159. package/dist/shell/commands/debug.js +5 -4
  160. package/dist/shell/commands/debug.js.map +1 -1
  161. package/dist/shell/commands/diag.js +10 -10
  162. package/dist/shell/commands/diag.js.map +1 -1
  163. package/dist/shell/commands/registry.d.ts.map +1 -1
  164. package/dist/shell/commands/registry.js +56 -1
  165. package/dist/shell/commands/registry.js.map +1 -1
  166. package/dist/shell/commands/secrets.d.ts.map +1 -1
  167. package/dist/shell/commands/secrets.js +2 -1
  168. package/dist/shell/commands/secrets.js.map +1 -1
  169. package/dist/shell/commands/seed.d.ts +9 -0
  170. package/dist/shell/commands/seed.d.ts.map +1 -0
  171. package/dist/shell/commands/seed.js +197 -0
  172. package/dist/shell/commands/seed.js.map +1 -0
  173. package/dist/shell/commands/services.d.ts.map +1 -1
  174. package/dist/shell/commands/services.js +5 -4
  175. package/dist/shell/commands/services.js.map +1 -1
  176. package/dist/shell/commands/test.d.ts.map +1 -1
  177. package/dist/shell/commands/test.js +3 -2
  178. package/dist/shell/commands/test.js.map +1 -1
  179. package/dist/shell/commands/users.d.ts.map +1 -1
  180. package/dist/shell/commands/users.js +5 -39
  181. package/dist/shell/commands/users.js.map +1 -1
  182. package/dist/shell/network-onboarding.d.ts.map +1 -1
  183. package/dist/shell/network-onboarding.js +11 -45
  184. package/dist/shell/network-onboarding.js.map +1 -1
  185. package/dist/ui/components/ActionBar.d.ts +13 -0
  186. package/dist/ui/components/ActionBar.d.ts.map +1 -0
  187. package/dist/ui/components/ActionBar.js +7 -0
  188. package/dist/ui/components/ActionBar.js.map +1 -0
  189. package/dist/ui/components/AppShell.d.ts +6 -1
  190. package/dist/ui/components/AppShell.d.ts.map +1 -1
  191. package/dist/ui/components/AppShell.js +32 -10
  192. package/dist/ui/components/AppShell.js.map +1 -1
  193. package/dist/ui/components/DashboardBlock.d.ts +11 -0
  194. package/dist/ui/components/DashboardBlock.d.ts.map +1 -0
  195. package/dist/ui/components/DashboardBlock.js +6 -0
  196. package/dist/ui/components/DashboardBlock.js.map +1 -0
  197. package/dist/ui/components/DataTable.d.ts +6 -1
  198. package/dist/ui/components/DataTable.d.ts.map +1 -1
  199. package/dist/ui/components/DataTable.js +71 -7
  200. package/dist/ui/components/DataTable.js.map +1 -1
  201. package/dist/ui/components/ErrorBoundary.d.ts +1 -1
  202. package/dist/ui/components/FieldList.d.ts +24 -0
  203. package/dist/ui/components/FieldList.d.ts.map +1 -0
  204. package/dist/ui/components/FieldList.js +67 -0
  205. package/dist/ui/components/FieldList.js.map +1 -0
  206. package/dist/ui/components/KeyValue.d.ts +4 -2
  207. package/dist/ui/components/KeyValue.d.ts.map +1 -1
  208. package/dist/ui/components/KeyValue.js +4 -2
  209. package/dist/ui/components/KeyValue.js.map +1 -1
  210. package/dist/ui/components/KeyboardHint.d.ts +10 -0
  211. package/dist/ui/components/KeyboardHint.d.ts.map +1 -0
  212. package/dist/ui/components/KeyboardHint.js +6 -0
  213. package/dist/ui/components/KeyboardHint.js.map +1 -0
  214. package/dist/ui/components/MenuList.d.ts +10 -0
  215. package/dist/ui/components/MenuList.d.ts.map +1 -0
  216. package/dist/ui/components/MenuList.js +7 -0
  217. package/dist/ui/components/MenuList.js.map +1 -0
  218. package/dist/ui/components/MetricsFooter.d.ts +10 -7
  219. package/dist/ui/components/MetricsFooter.d.ts.map +1 -1
  220. package/dist/ui/components/MetricsFooter.js +16 -3
  221. package/dist/ui/components/MetricsFooter.js.map +1 -1
  222. package/dist/ui/components/PaneSection.d.ts +9 -0
  223. package/dist/ui/components/PaneSection.d.ts.map +1 -0
  224. package/dist/ui/components/PaneSection.js +6 -0
  225. package/dist/ui/components/PaneSection.js.map +1 -0
  226. package/dist/ui/components/PanelState.d.ts +8 -0
  227. package/dist/ui/components/PanelState.d.ts.map +1 -0
  228. package/dist/ui/components/PanelState.js +7 -0
  229. package/dist/ui/components/PanelState.js.map +1 -0
  230. package/dist/ui/components/ScrollViewport.d.ts +16 -0
  231. package/dist/ui/components/ScrollViewport.d.ts.map +1 -0
  232. package/dist/ui/components/ScrollViewport.js +54 -0
  233. package/dist/ui/components/ScrollViewport.js.map +1 -0
  234. package/dist/ui/components/Section.js +1 -1
  235. package/dist/ui/components/Section.js.map +1 -1
  236. package/dist/ui/components/SelectMenu.d.ts.map +1 -1
  237. package/dist/ui/components/SelectMenu.js +3 -3
  238. package/dist/ui/components/SelectMenu.js.map +1 -1
  239. package/dist/ui/components/ShellOutput.d.ts +2 -1
  240. package/dist/ui/components/ShellOutput.d.ts.map +1 -1
  241. package/dist/ui/components/ShellOutput.js +6 -2
  242. package/dist/ui/components/ShellOutput.js.map +1 -1
  243. package/dist/ui/components/SplitPane.d.ts +18 -0
  244. package/dist/ui/components/SplitPane.d.ts.map +1 -0
  245. package/dist/ui/components/SplitPane.js +9 -0
  246. package/dist/ui/components/SplitPane.js.map +1 -0
  247. package/dist/ui/components/StatusList.d.ts +18 -0
  248. package/dist/ui/components/StatusList.d.ts.map +1 -0
  249. package/dist/ui/components/StatusList.js +13 -0
  250. package/dist/ui/components/StatusList.js.map +1 -0
  251. package/dist/ui/components/SummaryStrip.d.ts +9 -0
  252. package/dist/ui/components/SummaryStrip.d.ts.map +1 -0
  253. package/dist/ui/components/SummaryStrip.js +6 -0
  254. package/dist/ui/components/SummaryStrip.js.map +1 -0
  255. package/dist/ui/components/app-shell-viewport.d.ts +7 -0
  256. package/dist/ui/components/app-shell-viewport.d.ts.map +1 -0
  257. package/dist/ui/components/app-shell-viewport.js +6 -0
  258. package/dist/ui/components/app-shell-viewport.js.map +1 -0
  259. package/dist/ui/components/index.d.ts +14 -0
  260. package/dist/ui/components/index.d.ts.map +1 -1
  261. package/dist/ui/components/index.js +12 -0
  262. package/dist/ui/components/index.js.map +1 -1
  263. package/dist/ui/context/MetricsContext.d.ts.map +1 -1
  264. package/dist/ui/context/MetricsContext.js +15 -12
  265. package/dist/ui/context/MetricsContext.js.map +1 -1
  266. package/dist/ui/hooks/index.d.ts +9 -1
  267. package/dist/ui/hooks/index.d.ts.map +1 -1
  268. package/dist/ui/hooks/index.js +7 -0
  269. package/dist/ui/hooks/index.js.map +1 -1
  270. package/dist/ui/hooks/useAsyncTask.d.ts +7 -1
  271. package/dist/ui/hooks/useAsyncTask.d.ts.map +1 -1
  272. package/dist/ui/hooks/useAsyncTask.js +30 -6
  273. package/dist/ui/hooks/useAsyncTask.js.map +1 -1
  274. package/dist/ui/hooks/useBoundedCursor.d.ts +7 -0
  275. package/dist/ui/hooks/useBoundedCursor.d.ts.map +1 -0
  276. package/dist/ui/hooks/useBoundedCursor.js +19 -0
  277. package/dist/ui/hooks/useBoundedCursor.js.map +1 -0
  278. package/dist/ui/hooks/useConfirmBackNav.d.ts +7 -0
  279. package/dist/ui/hooks/useConfirmBackNav.d.ts.map +1 -0
  280. package/dist/ui/hooks/useConfirmBackNav.js +10 -0
  281. package/dist/ui/hooks/useConfirmBackNav.js.map +1 -0
  282. package/dist/ui/hooks/useDismissKeys.d.ts +10 -0
  283. package/dist/ui/hooks/useDismissKeys.d.ts.map +1 -0
  284. package/dist/ui/hooks/useDismissKeys.js +17 -0
  285. package/dist/ui/hooks/useDismissKeys.js.map +1 -0
  286. package/dist/ui/hooks/useListCursor.d.ts +7 -0
  287. package/dist/ui/hooks/useListCursor.d.ts.map +1 -0
  288. package/dist/ui/hooks/useListCursor.js +29 -0
  289. package/dist/ui/hooks/useListCursor.js.map +1 -0
  290. package/dist/ui/hooks/useTwoPaneCursor.d.ts +12 -0
  291. package/dist/ui/hooks/useTwoPaneCursor.d.ts.map +1 -0
  292. package/dist/ui/hooks/useTwoPaneCursor.js +36 -0
  293. package/dist/ui/hooks/useTwoPaneCursor.js.map +1 -0
  294. package/dist/ui/hooks/useXccBackendOverlay.d.ts +9 -0
  295. package/dist/ui/hooks/useXccBackendOverlay.d.ts.map +1 -0
  296. package/dist/ui/hooks/useXccBackendOverlay.js +14 -0
  297. package/dist/ui/hooks/useXccBackendOverlay.js.map +1 -0
  298. package/dist/ui/hooks/useXccLoadTest.d.ts +11 -0
  299. package/dist/ui/hooks/useXccLoadTest.d.ts.map +1 -0
  300. package/dist/ui/hooks/useXccLoadTest.js +37 -0
  301. package/dist/ui/hooks/useXccLoadTest.js.map +1 -0
  302. package/dist/ui/palette.d.ts +23 -0
  303. package/dist/ui/palette.d.ts.map +1 -0
  304. package/dist/ui/palette.js +22 -0
  305. package/dist/ui/palette.js.map +1 -0
  306. package/dist/ui/views/DbHealthView.js +4 -4
  307. package/dist/ui/views/DbHealthView.js.map +1 -1
  308. package/dist/ui/views/DbSizeView.d.ts.map +1 -1
  309. package/dist/ui/views/DbSizeView.js +2 -2
  310. package/dist/ui/views/DbSizeView.js.map +1 -1
  311. package/dist/ui/views/DbTablesView.d.ts.map +1 -1
  312. package/dist/ui/views/DbTablesView.js +2 -2
  313. package/dist/ui/views/DbTablesView.js.map +1 -1
  314. package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
  315. package/dist/ui/views/DiagDatabaseView.js +4 -3
  316. package/dist/ui/views/DiagDatabaseView.js.map +1 -1
  317. package/dist/ui/views/DiagNetworkView.js +2 -2
  318. package/dist/ui/views/DiagNetworkView.js.map +1 -1
  319. package/dist/ui/views/DiagServiceView.js +1 -1
  320. package/dist/ui/views/DiagServiceView.js.map +1 -1
  321. package/dist/ui/views/DockerPruneView.d.ts.map +1 -1
  322. package/dist/ui/views/DockerPruneView.js +4 -8
  323. package/dist/ui/views/DockerPruneView.js.map +1 -1
  324. package/dist/ui/views/K8sDeployView.d.ts.map +1 -1
  325. package/dist/ui/views/K8sDeployView.js +5 -5
  326. package/dist/ui/views/K8sDeployView.js.map +1 -1
  327. package/dist/ui/views/K8sServicesView.d.ts.map +1 -1
  328. package/dist/ui/views/K8sServicesView.js +6 -11
  329. package/dist/ui/views/K8sServicesView.js.map +1 -1
  330. package/dist/ui/views/K8sStatusView.d.ts.map +1 -1
  331. package/dist/ui/views/K8sStatusView.js +14 -19
  332. package/dist/ui/views/K8sStatusView.js.map +1 -1
  333. package/dist/ui/views/LoadTestConfigView.d.ts.map +1 -1
  334. package/dist/ui/views/LoadTestConfigView.js +45 -43
  335. package/dist/ui/views/LoadTestConfigView.js.map +1 -1
  336. package/dist/ui/views/LoadTestSummaryView.d.ts.map +1 -1
  337. package/dist/ui/views/LoadTestSummaryView.js +7 -2
  338. package/dist/ui/views/LoadTestSummaryView.js.map +1 -1
  339. package/dist/ui/views/MainMenu.d.ts.map +1 -1
  340. package/dist/ui/views/MainMenu.js +254 -55
  341. package/dist/ui/views/MainMenu.js.map +1 -1
  342. package/dist/ui/views/MigrateHistoryView.d.ts.map +1 -1
  343. package/dist/ui/views/MigrateHistoryView.js +11 -2
  344. package/dist/ui/views/MigrateHistoryView.js.map +1 -1
  345. package/dist/ui/views/MigrateRollbackView.d.ts.map +1 -1
  346. package/dist/ui/views/MigrateRollbackView.js +4 -8
  347. package/dist/ui/views/MigrateRollbackView.js.map +1 -1
  348. package/dist/ui/views/MigrateRunView.d.ts.map +1 -1
  349. package/dist/ui/views/MigrateRunView.js +4 -8
  350. package/dist/ui/views/MigrateRunView.js.map +1 -1
  351. package/dist/ui/views/MigrateStatusView.js +1 -1
  352. package/dist/ui/views/MigrateStatusView.js.map +1 -1
  353. package/dist/ui/views/MigrateWatchView.js +1 -1
  354. package/dist/ui/views/MigrateWatchView.js.map +1 -1
  355. package/dist/ui/views/OfflineApplyView.d.ts.map +1 -1
  356. package/dist/ui/views/OfflineApplyView.js +17 -7
  357. package/dist/ui/views/OfflineApplyView.js.map +1 -1
  358. package/dist/ui/views/OfflineDownloadView.d.ts.map +1 -1
  359. package/dist/ui/views/OfflineDownloadView.js +17 -7
  360. package/dist/ui/views/OfflineDownloadView.js.map +1 -1
  361. package/dist/ui/views/OfflineFetchView.d.ts.map +1 -1
  362. package/dist/ui/views/OfflineFetchView.js +17 -7
  363. package/dist/ui/views/OfflineFetchView.js.map +1 -1
  364. package/dist/ui/views/OfflineInspectView.d.ts.map +1 -1
  365. package/dist/ui/views/OfflineInspectView.js +17 -7
  366. package/dist/ui/views/OfflineInspectView.js.map +1 -1
  367. package/dist/ui/views/OsUpdatesEnableView.js +4 -4
  368. package/dist/ui/views/OsUpdatesEnableView.js.map +1 -1
  369. package/dist/ui/views/OsUpdatesLogView.js +1 -1
  370. package/dist/ui/views/OsUpdatesLogView.js.map +1 -1
  371. package/dist/ui/views/OsUpdatesStatusView.d.ts.map +1 -1
  372. package/dist/ui/views/OsUpdatesStatusView.js +12 -12
  373. package/dist/ui/views/OsUpdatesStatusView.js.map +1 -1
  374. package/dist/ui/views/PowerActionView.d.ts.map +1 -1
  375. package/dist/ui/views/PowerActionView.js +3 -8
  376. package/dist/ui/views/PowerActionView.js.map +1 -1
  377. package/dist/ui/views/SecretsResetPasswordView.d.ts.map +1 -1
  378. package/dist/ui/views/SecretsResetPasswordView.js +23 -7
  379. package/dist/ui/views/SecretsResetPasswordView.js.map +1 -1
  380. package/dist/ui/views/SecretsSetupView.d.ts.map +1 -1
  381. package/dist/ui/views/SecretsSetupView.js +39 -22
  382. package/dist/ui/views/SecretsSetupView.js.map +1 -1
  383. package/dist/ui/views/ServiceLogsView.d.ts.map +1 -1
  384. package/dist/ui/views/ServiceLogsView.js +9 -9
  385. package/dist/ui/views/ServiceLogsView.js.map +1 -1
  386. package/dist/ui/views/ServicesView.d.ts.map +1 -1
  387. package/dist/ui/views/ServicesView.js +51 -28
  388. package/dist/ui/views/ServicesView.js.map +1 -1
  389. package/dist/ui/views/SettingsView.d.ts.map +1 -1
  390. package/dist/ui/views/SettingsView.js +5 -4
  391. package/dist/ui/views/SettingsView.js.map +1 -1
  392. package/dist/ui/views/SetupWizardView.d.ts.map +1 -1
  393. package/dist/ui/views/SetupWizardView.js +37 -32
  394. package/dist/ui/views/SetupWizardView.js.map +1 -1
  395. package/dist/ui/views/StatusView.d.ts.map +1 -1
  396. package/dist/ui/views/StatusView.js +44 -31
  397. package/dist/ui/views/StatusView.js.map +1 -1
  398. package/dist/ui/views/UpdateView.d.ts.map +1 -1
  399. package/dist/ui/views/UpdateView.js +28 -14
  400. package/dist/ui/views/UpdateView.js.map +1 -1
  401. package/dist/ui/views/UserResetPasswordView.d.ts.map +1 -1
  402. package/dist/ui/views/UserResetPasswordView.js +26 -8
  403. package/dist/ui/views/UserResetPasswordView.js.map +1 -1
  404. package/dist/ui/views/XccLoadTestConfigView.d.ts +29 -0
  405. package/dist/ui/views/XccLoadTestConfigView.d.ts.map +1 -0
  406. package/dist/ui/views/XccLoadTestConfigView.js +210 -0
  407. package/dist/ui/views/XccLoadTestConfigView.js.map +1 -0
  408. package/dist/ui/views/XccLoadTestRunView.d.ts +9 -0
  409. package/dist/ui/views/XccLoadTestRunView.d.ts.map +1 -0
  410. package/dist/ui/views/XccLoadTestRunView.js +154 -0
  411. package/dist/ui/views/XccLoadTestRunView.js.map +1 -0
  412. package/dist/ui/views/XccLoadTestSummaryView.d.ts +9 -0
  413. package/dist/ui/views/XccLoadTestSummaryView.d.ts.map +1 -0
  414. package/dist/ui/views/XccLoadTestSummaryView.js +63 -0
  415. package/dist/ui/views/XccLoadTestSummaryView.js.map +1 -0
  416. package/dist/ui/views/XccLoadTestView.d.ts +8 -0
  417. package/dist/ui/views/XccLoadTestView.d.ts.map +1 -0
  418. package/dist/ui/views/XccLoadTestView.js +40 -0
  419. package/dist/ui/views/XccLoadTestView.js.map +1 -0
  420. package/package.json +6 -1
  421. package/dist/ui/views/JtapiDisableView.d.ts +0 -6
  422. package/dist/ui/views/JtapiDisableView.d.ts.map +0 -1
  423. package/dist/ui/views/JtapiDisableView.js +0 -52
  424. package/dist/ui/views/JtapiDisableView.js.map +0 -1
  425. package/dist/ui/views/JtapiEnableView.d.ts +0 -6
  426. package/dist/ui/views/JtapiEnableView.d.ts.map +0 -1
  427. package/dist/ui/views/JtapiEnableView.js +0 -40
  428. package/dist/ui/views/JtapiEnableView.js.map +0 -1
  429. package/dist/ui/views/JtapiStatusView.d.ts +0 -6
  430. package/dist/ui/views/JtapiStatusView.d.ts.map +0 -1
  431. package/dist/ui/views/JtapiStatusView.js +0 -11
  432. package/dist/ui/views/JtapiStatusView.js.map +0 -1
  433. package/dist/ui/views/JtapiTroubleshootView.d.ts +0 -6
  434. package/dist/ui/views/JtapiTroubleshootView.d.ts.map +0 -1
  435. package/dist/ui/views/JtapiTroubleshootView.js +0 -114
  436. package/dist/ui/views/JtapiTroubleshootView.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAmOrD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA2LrD"}
@@ -13,7 +13,6 @@ import { confirm } from '../utils/prompt.js';
13
13
  import * as out from '../utils/output.js';
14
14
  import { enableIpv6, disableIpv6, getIpv6Status } from '../lib/ipv6.js';
15
15
  import { getPrefs, savePrefs } from '../lib/prefs.js';
16
- import { isOtelEnabled, enableOtel, disableOtel } from '../lib/otel.js';
17
16
  function getLoggingLevel() {
18
17
  const { composeFile } = getPaths();
19
18
  if (!existsSync(composeFile))
@@ -192,46 +191,5 @@ export function registerConfigCommand(program) {
192
191
  console.log('Usage: ct certs <status|reset|generate>');
193
192
  }
194
193
  });
195
- // OpenTelemetry
196
- program
197
- .command('otel [action]')
198
- .description('Show or toggle OpenTelemetry observability (enable|disable)')
199
- .action(async (action) => {
200
- if (!action) {
201
- const enabled = isOtelEnabled();
202
- console.log(`OpenTelemetry: ${enabled ? 'enabled' : 'disabled'}`);
203
- console.log();
204
- console.log('When enabled, the otel-collector receives traces and metrics from');
205
- console.log('the web and jtapi-sidecar services, exporting metrics to Prometheus.');
206
- console.log();
207
- console.log('Usage: ct otel <enable|disable>');
208
- return;
209
- }
210
- if (action === 'enable') {
211
- await enableOtel();
212
- const prefs = getPrefs();
213
- savePrefs({ ...prefs, otel: true });
214
- out.ok('OpenTelemetry enabled (preference saved)');
215
- console.log('COMPOSE_PROFILES updated — otel-collector will start on next restart.');
216
- }
217
- else if (action === 'disable') {
218
- await disableOtel();
219
- const prefs = getPrefs();
220
- savePrefs({ ...prefs, otel: false });
221
- out.ok('OpenTelemetry disabled (preference saved)');
222
- console.log('OTel env vars removed — services will use disabled defaults.');
223
- }
224
- else {
225
- out.fail(`Invalid action: ${action}. Use enable or disable.`);
226
- return;
227
- }
228
- try {
229
- await execa('systemctl', ['restart', 'docker-compose-app.service']);
230
- out.ok('Service restarted');
231
- }
232
- catch {
233
- await composeUp(['-d']);
234
- }
235
- });
236
194
  }
237
195
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loadtest.d.ts","sourceRoot":"","sources":["../../src/commands/loadtest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QAmBvD"}
1
+ {"version":3,"file":"loadtest.d.ts","sourceRoot":"","sources":["../../src/commands/loadtest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QA2OvD"}
@@ -1,8 +1,11 @@
1
1
  import { render } from 'ink';
2
2
  import React from 'react';
3
3
  import { LoadTestView } from '../ui/views/LoadTestView.js';
4
+ import { XccLoadTestView } from '../ui/views/XccLoadTestView.js';
5
+ import { startXccLoadTest } from '../lib/xcc-loadtest.js';
6
+ import { getXccScenarioPreset } from '../lib/xcc-scenarios.js';
4
7
  export function registerLoadtestCommand(program) {
5
- program
8
+ const loadtest = program
6
9
  .command('loadtest')
7
10
  .description('CURRI policy load tester with live metrics')
8
11
  .option('--policy <name>', 'Policy name (skip selection)')
@@ -18,5 +21,215 @@ export function registerLoadtestCommand(program) {
18
21
  const { waitUntilExit } = render(React.createElement(LoadTestView, { cliOptions: opts }));
19
22
  await waitUntilExit();
20
23
  });
24
+ loadtest
25
+ .command('xcc')
26
+ .description('Stateful Cisco CUBE XCC load tester')
27
+ .option('--target-url <url>', 'Live XCC endpoint URL')
28
+ .option('--cube <nameOrId>', 'Prefill from a locally discovered cube')
29
+ .option('--scenario <key>', 'Scenario preset key')
30
+ .option('--duration <seconds>', 'Run duration in seconds')
31
+ .option('--calls-per-second <n>', 'Target call starts per second')
32
+ .option('--concurrency <n>', 'Maximum in-flight calls')
33
+ .option('--keepalive-ms <n>', 'Keepalive interval in milliseconds')
34
+ .option('--registration-id <id>', 'Override registration ID')
35
+ .option('--number-pattern <pattern>', 'Number pattern preset or pool: syntax')
36
+ .option('--peer-ip <csv>', 'Comma-separated source/peer IP pool')
37
+ .option('--retries <n>', 'Retry count for non-2xx/transport failures')
38
+ .option('--retry-backoff-ms <n>', 'Retry backoff in milliseconds')
39
+ .option('--request-timeout-ms <n>', 'Per-request timeout in milliseconds')
40
+ .option('--disconnect-codes <csv>', 'Comma-separated disconnect code rotation')
41
+ .option('--overlay-window-sec <n>', 'Backend overlay lookback window in seconds for local cubes')
42
+ .option('--capture-dir <path>', 'Write raw request/response artifacts')
43
+ .option('--report-json <path>', 'Write final JSON summary + exchanges')
44
+ .option('--report-ndjson <path>', 'Write NDJSON exchange log')
45
+ .option('--plain', 'Plain stdout mode — no TUI required, works without a TTY')
46
+ .action(async (opts) => {
47
+ if (opts.plain) {
48
+ if (!opts.targetUrl) {
49
+ process.stderr.write('error: --target-url is required with --no-tui\n');
50
+ process.exit(1);
51
+ }
52
+ const preset = getXccScenarioPreset(opts.scenario ?? 'baseline');
53
+ const config = {
54
+ targetUrl: opts.targetUrl,
55
+ scenarioKey: (opts.scenario ?? 'baseline'),
56
+ duration: opts.duration != null ? parseInt(opts.duration, 10) : Number.MAX_SAFE_INTEGER,
57
+ callsPerSecond: opts.callsPerSecond != null ? parseInt(opts.callsPerSecond, 10) : preset.defaultCallsPerSecond,
58
+ concurrency: opts.concurrency != null ? parseInt(opts.concurrency, 10) : preset.defaultConcurrency,
59
+ keepaliveMs: opts.keepaliveMs != null ? parseInt(opts.keepaliveMs, 10) : 30_000,
60
+ registrationId: opts.registrationId ?? `ct-cli-${process.pid}`,
61
+ numberPattern: opts.numberPattern ?? 'random',
62
+ peerIps: opts.peerIp ? opts.peerIp.split(',').map((s) => s.trim()).filter(Boolean) : [],
63
+ retries: opts.retries != null ? parseInt(opts.retries, 10) : preset.defaultRetries,
64
+ retryBackoffMs: opts.retryBackoffMs != null ? parseInt(opts.retryBackoffMs, 10) : 250,
65
+ requestTimeoutMs: opts.requestTimeoutMs != null ? parseInt(opts.requestTimeoutMs, 10) : (preset.requestTimeoutMs ?? 2_000),
66
+ startupProviderStatus: true,
67
+ shutdownProviderStatus: true,
68
+ disconnectCodes: opts.disconnectCodes
69
+ ? opts.disconnectCodes.split(',').map((s) => parseInt(s.trim(), 10)).filter(Boolean)
70
+ : [16, 17, 34],
71
+ captureDir: opts.captureDir,
72
+ reportJson: opts.reportJson,
73
+ reportNdjson: opts.reportNdjson,
74
+ };
75
+ const durationLabel = config.duration >= Number.MAX_SAFE_INTEGER ? '∞' : `${config.duration}s`;
76
+ process.stdout.write(`\nXCC load test — ${config.targetUrl}\n`);
77
+ process.stdout.write(`scenario=${config.scenarioKey} cps=${config.callsPerSecond} concurrency=${config.concurrency} duration=${durationLabel} keepalive=${config.keepaliveMs}ms\n`);
78
+ process.stdout.write('\nPacket legend:\n');
79
+ process.stdout.write(' probe SolicitXccProbing\n');
80
+ process.stdout.write(' prov NotifyXccProviderStatus\n');
81
+ process.stdout.write(' unreg SolicitXccProviderUnRegister\n');
82
+ process.stdout.write(' addr SolicitXccConnectionAddressAnalyze\n');
83
+ process.stdout.write(' auth SolicitXccConnectionAuthorize\n');
84
+ process.stdout.write(' dlvry NotifyXccConnectionData [CALL_DELIVERY]\n');
85
+ process.stdout.write(' alert NotifyXccConnectionData [ALERTING]\n');
86
+ process.stdout.write(' conn NotifyXccConnectionData [CONNECTED]\n');
87
+ process.stdout.write(' disc NotifyXccConnectionData [DISCONNECTED]\n');
88
+ process.stdout.write('\n');
89
+ const REG_STATE_LABELS = {
90
+ registering: 'REGISTERING…',
91
+ registered: 'REGISTERED ',
92
+ failed: 'FAILED ',
93
+ };
94
+ const getStateLabel = (snap) => snap.paused ? 'PAUSED ' : (REG_STATE_LABELS[snap.registrationState] ?? snap.registrationState.padEnd(12));
95
+ // Column header — printed once after registration row appears
96
+ let headerPrinted = false;
97
+ const printHeader = () => {
98
+ process.stdout.write('time state ka-seq ka-fail consec │' +
99
+ ' addr auth dlvry alert conn disc │' +
100
+ ' p50 p99 ok%\n');
101
+ process.stdout.write('────────────────────────────────────────────────┼' +
102
+ '─────────────────────────────────────────────────┼' +
103
+ '───────────────\n');
104
+ };
105
+ let lastElapsed = 0;
106
+ const runner = startXccLoadTest(config, (snapshot) => {
107
+ const elapsed = snapshot.elapsed;
108
+ if (elapsed - lastElapsed < 1)
109
+ return;
110
+ lastElapsed = elapsed;
111
+ if (!headerPrinted) {
112
+ printHeader();
113
+ headerPrinted = true;
114
+ }
115
+ const mc = snapshot.messageTypeCounts;
116
+ const stateLabel = getStateLabel(snapshot);
117
+ const okPct = snapshot.totalMessagesSent > 0
118
+ ? Math.round((snapshot.totalMessagesOk / snapshot.totalMessagesSent) * 100)
119
+ : 100;
120
+ const p = (n, w) => String(n).padStart(w);
121
+ const kaOk = snapshot.keepaliveSent - snapshot.keepaliveFailures;
122
+ process.stdout.write(`${p(Math.round(elapsed), 4)}s ${stateLabel} ` +
123
+ `${p(snapshot.messageTypeCounts.keepalive, 6)} ` +
124
+ `${p(snapshot.keepaliveFailures, 7)} ` +
125
+ `${p(snapshot.consecutiveKeepaliveFailures, 6)} │` +
126
+ ` ${p(mc.address_analyze, 4)}` +
127
+ ` ${p(mc.authorize, 5)}` +
128
+ ` ${p(mc.call_delivery, 6)}` +
129
+ ` ${p(mc.alerting, 6)}` +
130
+ ` ${p(mc.connected, 5)}` +
131
+ ` ${p(mc.disconnected, 5)} │` +
132
+ ` ${p(Math.round(snapshot.p50), 4)}` +
133
+ ` ${p(Math.round(snapshot.p99), 5)}` +
134
+ ` ${p(okPct, 3)}%\n`);
135
+ });
136
+ process.on('SIGINT', () => {
137
+ if (process.stdin.isTTY) {
138
+ try {
139
+ process.stdin.setRawMode(false);
140
+ }
141
+ catch { }
142
+ }
143
+ process.stdin.pause();
144
+ runner.stop();
145
+ });
146
+ process.on('SIGTERM', () => {
147
+ if (process.stdin.isTTY) {
148
+ try {
149
+ process.stdin.setRawMode(false);
150
+ }
151
+ catch { }
152
+ }
153
+ process.stdin.pause();
154
+ runner.stop();
155
+ });
156
+ // Keyboard controls (only when stdin is a TTY)
157
+ if (process.stdin.isTTY) {
158
+ process.stdin.setRawMode(true);
159
+ process.stdin.resume();
160
+ process.stdin.setEncoding('utf8');
161
+ process.stdout.write('keys: [q] quit [p] pause/resume\n\n');
162
+ process.stdin.on('data', (key) => {
163
+ if (key === 'q' || key === '\x03') { // q or Ctrl+C
164
+ process.stdin.setRawMode(false);
165
+ process.stdin.pause(); // let the event loop drain after runner settles
166
+ runner.stop();
167
+ }
168
+ else if (key === 'p') {
169
+ if (runner.isPaused()) {
170
+ runner.resume();
171
+ process.stdout.write('--- RESUMED ---\n');
172
+ }
173
+ else {
174
+ runner.pause();
175
+ process.stdout.write('--- PAUSED (keepalives continue) ---\n');
176
+ }
177
+ }
178
+ });
179
+ }
180
+ let results;
181
+ try {
182
+ results = await runner.promise;
183
+ }
184
+ catch (err) {
185
+ const msg = err instanceof Error ? err.message : String(err);
186
+ process.stderr.write(`\nCUBE CRASHED: ${msg}\n`);
187
+ process.exit(1);
188
+ }
189
+ const mc = results.messageTypeCounts;
190
+ const regLabel = results.registrationState === 'registered' ? 'OK'
191
+ : results.registrationState === 'failed' ? 'FAILED' : 'unknown';
192
+ process.stdout.write('\n─── summary ───────────────────────────────────────────────────────────\n');
193
+ process.stdout.write(`registration: ${regLabel}\n`);
194
+ process.stdout.write(`calls completed: ${results.totalCallsCompleted} failed: ${results.totalCallsFailed}\n`);
195
+ process.stdout.write(`messages sent: ${results.totalMessagesSent} ok: ${results.totalMessagesOk} errors: ${results.totalMessagesErrored}\n`);
196
+ process.stdout.write(`keepalives: sent=${results.keepaliveSent} failures=${results.keepaliveFailures}\n`);
197
+ process.stdout.write(`latency: p50=${Math.round(results.latency.p50)}ms p95=${Math.round(results.latency.p95)}ms p99=${Math.round(results.latency.p99)}ms\n`);
198
+ process.stdout.write('\nPacket totals:\n');
199
+ process.stdout.write(` SolicitXccProbing ${mc.keepalive}\n`);
200
+ process.stdout.write(` NotifyXccProviderStatus ${mc.provider_status}\n`);
201
+ process.stdout.write(` SolicitXccProviderUnRegister ${mc.unregister}\n`);
202
+ process.stdout.write(` SolicitXccConnectionAddressAnalyze ${mc.address_analyze}\n`);
203
+ process.stdout.write(` SolicitXccConnectionAuthorize ${mc.authorize}\n`);
204
+ process.stdout.write(` NotifyXccConnectionData [CALL_DELIVERY] ${mc.call_delivery}\n`);
205
+ process.stdout.write(` NotifyXccConnectionData [ALERTING] ${mc.alerting}\n`);
206
+ process.stdout.write(` NotifyXccConnectionData [CONNECTED] ${mc.connected}\n`);
207
+ process.stdout.write(` NotifyXccConnectionData [DISCONNECTED] ${mc.disconnected}\n`);
208
+ return;
209
+ }
210
+ const { waitUntilExit } = render(React.createElement(XccLoadTestView, {
211
+ cliOptions: {
212
+ targetUrl: opts.targetUrl,
213
+ cube: opts.cube,
214
+ scenario: opts.scenario,
215
+ duration: opts.duration,
216
+ callsPerSecond: opts.callsPerSecond,
217
+ concurrency: opts.concurrency,
218
+ keepaliveMs: opts.keepaliveMs,
219
+ registrationId: opts.registrationId,
220
+ numberPattern: opts.numberPattern,
221
+ peerIp: opts.peerIp,
222
+ retries: opts.retries,
223
+ retryBackoffMs: opts.retryBackoffMs,
224
+ requestTimeoutMs: opts.requestTimeoutMs,
225
+ disconnectCodes: opts.disconnectCodes,
226
+ overlayWindowSec: opts.overlayWindowSec,
227
+ captureDir: opts.captureDir,
228
+ reportJson: opts.reportJson,
229
+ reportNdjson: opts.reportNdjson,
230
+ },
231
+ }));
232
+ await waitUntilExit();
233
+ });
21
234
  }
22
235
  //# sourceMappingURL=loadtest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loadtest.js","sourceRoot":"","sources":["../../src/commands/loadtest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,iBAAiB,EAAE,8BAA8B,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,4BAA4B,CAAC;SAClD,MAAM,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;SACpD,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;SACjD,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;SAChD,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACxD,CAAC;QACF,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"loadtest.js","sourceRoot":"","sources":["../../src/commands/loadtest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerOtelCommand(program: Command): void;
3
+ //# sourceMappingURL=otel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.d.ts","sourceRoot":"","sources":["../../src/commands/otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA2CnD"}
@@ -0,0 +1,89 @@
1
+ import { isOtelEnabled, enableOtel, disableOtel } from '../lib/otel.js';
2
+ import { compose, composeUp } from '../lib/compose.js';
3
+ const OBSERVABILITY_SERVICES = [
4
+ 'prometheus', 'grafana', 'loki', 'alloy', 'tempo',
5
+ 'otel-collector', 'node-exporter', 'nats-exporter',
6
+ 'postgres-exporter', 'alertmanager',
7
+ ];
8
+ export function registerOtelCommand(program) {
9
+ const obs = program
10
+ .command('otel')
11
+ .description('Manage the otel stack (Prometheus, Grafana, Loki, Tempo, exporters)')
12
+ .action(async () => {
13
+ await statusAction();
14
+ });
15
+ obs.command('enable')
16
+ .description('Start the full otel stack (~900 MiB)')
17
+ .action(async () => {
18
+ console.log('Enabling otel stack...');
19
+ await enableOtel();
20
+ try {
21
+ await composeUp(OBSERVABILITY_SERVICES);
22
+ console.log('✅ Observability stack enabled and started.');
23
+ console.log(' Services: prometheus, grafana, loki, alloy, tempo, otel-collector, exporters');
24
+ }
25
+ catch (err) {
26
+ console.log('✅ Observability enabled. Start with: systemctl restart docker-compose-app.service');
27
+ }
28
+ });
29
+ obs.command('disable')
30
+ .description('Stop the full otel stack (frees ~900 MiB)')
31
+ .action(async () => {
32
+ console.log('Disabling otel stack...');
33
+ await disableOtel();
34
+ // Stop containers directly — docker compose --remove-orphans does not evict profile-gated containers
35
+ for (const svc of OBSERVABILITY_SERVICES) {
36
+ const containerName = `calltelemetry-${svc}-1`;
37
+ try {
38
+ await compose(['stop', svc]);
39
+ await compose(['rm', '-f', svc]);
40
+ }
41
+ catch {
42
+ // Container may already be stopped — not an error
43
+ }
44
+ }
45
+ console.log('✅ Observability stack disabled and stopped.');
46
+ });
47
+ obs.command('status')
48
+ .description('Show otel stack status')
49
+ .action(statusAction);
50
+ }
51
+ async function statusAction() {
52
+ const enabled = isOtelEnabled();
53
+ console.log(`Observability profile: ${enabled ? 'enabled' : 'disabled'}`);
54
+ const running = [];
55
+ const stopped = [];
56
+ for (const svc of OBSERVABILITY_SERVICES) {
57
+ try {
58
+ const ps = await compose(['ps', '--format', 'json', svc], { pipe: true });
59
+ const stdout = String(ps.stdout ?? '').trim();
60
+ if (stdout) {
61
+ for (const line of stdout.split('\n').filter(Boolean)) {
62
+ try {
63
+ const obj = JSON.parse(line);
64
+ const state = (obj.State ?? obj.state ?? '').toLowerCase();
65
+ if (state === 'running') {
66
+ running.push(svc);
67
+ }
68
+ else {
69
+ stopped.push(svc);
70
+ }
71
+ break;
72
+ }
73
+ catch { /* ignore */ }
74
+ }
75
+ }
76
+ else {
77
+ stopped.push(svc);
78
+ }
79
+ }
80
+ catch {
81
+ stopped.push(svc);
82
+ }
83
+ }
84
+ if (running.length > 0)
85
+ console.log(`Running: ${running.join(', ')}`);
86
+ if (stopped.length > 0)
87
+ console.log(`Stopped: ${stopped.join(', ')}`);
88
+ }
89
+ //# sourceMappingURL=otel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otel.js","sourceRoot":"","sources":["../../src/commands/otel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSeedCommand(program: Command): void;
3
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkH1D"}
@@ -0,0 +1,106 @@
1
+ import * as out from '../utils/output.js';
2
+ import { cleanupSeedData, formatSeedStatus, listSeedPresets, runSeedPreset, } from '../lib/seed/index.js';
3
+ function parseOrgId(value) {
4
+ const parsed = Number.parseInt(value, 10);
5
+ if (!Number.isInteger(parsed) || parsed <= 0) {
6
+ throw new Error('org-id must be a positive integer');
7
+ }
8
+ return parsed;
9
+ }
10
+ function parseOptionalPositiveInt(value) {
11
+ const parsed = Number.parseInt(value, 10);
12
+ if (!Number.isInteger(parsed) || parsed <= 0) {
13
+ throw new Error('value must be a positive integer');
14
+ }
15
+ return parsed;
16
+ }
17
+ export function registerSeedCommand(program) {
18
+ const seed = program
19
+ .command('seed')
20
+ .description('Seed demo and load-test data directly into PostgreSQL');
21
+ seed
22
+ .command('list')
23
+ .description('List supported seed presets')
24
+ .action(() => {
25
+ const presets = listSeedPresets();
26
+ out.header('Seed Presets');
27
+ for (const preset of presets) {
28
+ console.log(`${preset.name}`);
29
+ console.log(` ${preset.description}`);
30
+ console.log(` Families: ${preset.families.join(', ')}`);
31
+ console.log(` Refresh MVs: ${preset.refreshMaterializedViews ? 'yes' : 'no'}`);
32
+ if (preset.requiresAllowDisruptive) {
33
+ console.log(' Requires: --allow-disruptive');
34
+ }
35
+ console.log();
36
+ }
37
+ });
38
+ seed
39
+ .command('run <preset>')
40
+ .description('Run a named seed preset')
41
+ .addHelpText('after', `\nAvailable presets:\n${listSeedPresets().map((preset) => ` - ${preset.name}`).join('\n')}\n`)
42
+ .requiredOption('--org-id <id>', 'Existing organization id', parseOrgId)
43
+ .option('--db-url <url>', 'Explicit PostgreSQL connection URL')
44
+ .option('--append', 'Append seeded rows instead of cleaning prior ct seed data first')
45
+ .option('--dry-run', 'Print the execution plan without writing rows')
46
+ .option('--allow-disruptive', 'Allow large/disruptive presets intended for load testing')
47
+ .option('--refresh-mvs', 'Refresh materialized views after the run')
48
+ .option('--no-refresh-mvs', 'Skip materialized view refresh after the run')
49
+ .action(async (preset, opts) => {
50
+ const result = await runSeedPreset(preset, {
51
+ orgId: opts.orgId,
52
+ dbUrl: opts.dbUrl,
53
+ append: opts.append ?? false,
54
+ dryRun: opts.dryRun ?? false,
55
+ allowDisruptive: opts.allowDisruptive ?? false,
56
+ refreshMaterializedViews: opts.refreshMvs,
57
+ });
58
+ if (result.dryRun) {
59
+ out.header('Seed Dry Run');
60
+ console.log(result.summary);
61
+ return;
62
+ }
63
+ out.successBox(`Seed preset '${result.preset}' completed`);
64
+ console.log(result.summary);
65
+ });
66
+ seed
67
+ .command('status')
68
+ .description('Show current ct seed data counts and recent runs')
69
+ .requiredOption('--org-id <id>', 'Existing organization id', parseOrgId)
70
+ .option('--db-url <url>', 'Explicit PostgreSQL connection URL')
71
+ .option('--limit <n>', 'Number of recent runs to show', parseOptionalPositiveInt, 5)
72
+ .action(async (opts) => {
73
+ const status = await formatSeedStatus({
74
+ orgId: opts.orgId,
75
+ dbUrl: opts.dbUrl,
76
+ limit: opts.limit,
77
+ });
78
+ console.log(status);
79
+ });
80
+ seed
81
+ .command('cleanup')
82
+ .description('Remove ct seed data for an organization')
83
+ .requiredOption('--org-id <id>', 'Existing organization id', parseOrgId)
84
+ .option('--db-url <url>', 'Explicit PostgreSQL connection URL')
85
+ .option('--all', 'Clean all ct seed runs for the org')
86
+ .option('--preset <name>', 'Clean ct seed runs matching a preset name')
87
+ .option('--run-id <id>', 'Clean a specific ct seed run id')
88
+ .action(async (opts) => {
89
+ const cleanupSelectors = [Boolean(opts.all), Boolean(opts.preset), Boolean(opts.runId)]
90
+ .filter(Boolean)
91
+ .length;
92
+ if (cleanupSelectors > 1) {
93
+ throw new Error('choose only one of --all, --preset, or --run-id');
94
+ }
95
+ const result = await cleanupSeedData({
96
+ orgId: opts.orgId,
97
+ dbUrl: opts.dbUrl,
98
+ mode: opts.runId ? 'run' : opts.preset ? 'preset' : 'all',
99
+ preset: opts.preset,
100
+ runId: opts.runId,
101
+ });
102
+ out.successBox('Seed cleanup complete');
103
+ console.log(result.summary);
104
+ });
105
+ }
106
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uDAAuD,CAAC,CAAC;IAExE,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;QAElC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChF,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,yBAAyB,CAAC;SACtC,WAAW,CACV,OAAO,EACP,yBAAyB,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAChG;SACA,cAAc,CAAC,eAAe,EAAE,0BAA0B,EAAE,UAAU,CAAC;SACvE,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;SAC9D,MAAM,CAAC,UAAU,EAAE,iEAAiE,CAAC;SACrF,MAAM,CAAC,WAAW,EAAE,+CAA+C,CAAC;SACpE,MAAM,CAAC,oBAAoB,EAAE,0DAA0D,CAAC;SACxF,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;SACnE,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAO9B,EAAE,EAAE;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;YAC5B,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;YAC9C,wBAAwB,EAAE,IAAI,CAAC,UAAU;SAC1C,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,GAAG,CAAC,UAAU,CAAC,gBAAgB,MAAM,CAAC,MAAM,aAAa,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,cAAc,CAAC,eAAe,EAAE,0BAA0B,EAAE,UAAU,CAAC;SACvE,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;SAC9D,MAAM,CAAC,aAAa,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,CAAC,CAAC;SACnF,MAAM,CAAC,KAAK,EAAE,IAAsD,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEL,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,yCAAyC,CAAC;SACtD,cAAc,CAAC,eAAe,EAAE,0BAA0B,EAAE,UAAU,CAAC;SACvE,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;SAC9D,MAAM,CAAC,OAAO,EAAE,oCAAoC,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;SACtE,MAAM,CAAC,eAAe,EAAE,iCAAiC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAMd,EAAE,EAAE;QACH,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpF,MAAM,CAAC,OAAO,CAAC;aACf,MAAM,CAAC;QACV,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YACzD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QAEH,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerStorageCommand(program: Command): void;
3
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/commands/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAsCtD"}