@calltelemetry/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 (297) hide show
  1. package/dist/commands/config.d.ts +3 -0
  2. package/dist/commands/config.d.ts.map +1 -0
  3. package/dist/commands/config.js +201 -0
  4. package/dist/commands/config.js.map +1 -0
  5. package/dist/commands/db.d.ts +3 -0
  6. package/dist/commands/db.d.ts.map +1 -0
  7. package/dist/commands/db.js +143 -0
  8. package/dist/commands/db.js.map +1 -0
  9. package/dist/commands/diag.d.ts +3 -0
  10. package/dist/commands/diag.d.ts.map +1 -0
  11. package/dist/commands/diag.js +123 -0
  12. package/dist/commands/diag.js.map +1 -0
  13. package/dist/commands/docker.d.ts +3 -0
  14. package/dist/commands/docker.d.ts.map +1 -0
  15. package/dist/commands/docker.js +34 -0
  16. package/dist/commands/docker.js.map +1 -0
  17. package/dist/commands/jtapi.d.ts +3 -0
  18. package/dist/commands/jtapi.d.ts.map +1 -0
  19. package/dist/commands/jtapi.js +36 -0
  20. package/dist/commands/jtapi.js.map +1 -0
  21. package/dist/commands/migrate.d.ts +3 -0
  22. package/dist/commands/migrate.d.ts.map +1 -0
  23. package/dist/commands/migrate.js +49 -0
  24. package/dist/commands/migrate.js.map +1 -0
  25. package/dist/commands/offline.d.ts +3 -0
  26. package/dist/commands/offline.d.ts.map +1 -0
  27. package/dist/commands/offline.js +170 -0
  28. package/dist/commands/offline.js.map +1 -0
  29. package/dist/commands/secrets.d.ts +3 -0
  30. package/dist/commands/secrets.d.ts.map +1 -0
  31. package/dist/commands/secrets.js +55 -0
  32. package/dist/commands/secrets.js.map +1 -0
  33. package/dist/commands/status.d.ts +3 -0
  34. package/dist/commands/status.d.ts.map +1 -0
  35. package/dist/commands/status.js +13 -0
  36. package/dist/commands/status.js.map +1 -0
  37. package/dist/commands/update.d.ts +3 -0
  38. package/dist/commands/update.d.ts.map +1 -0
  39. package/dist/commands/update.js +202 -0
  40. package/dist/commands/update.js.map +1 -0
  41. package/dist/index.d.ts +3 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +65 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/lib/bundle.d.ts +5 -0
  46. package/dist/lib/bundle.d.ts.map +1 -0
  47. package/dist/lib/bundle.js +134 -0
  48. package/dist/lib/bundle.js.map +1 -0
  49. package/dist/lib/certs.d.ts +3 -0
  50. package/dist/lib/certs.d.ts.map +1 -0
  51. package/dist/lib/certs.js +29 -0
  52. package/dist/lib/certs.js.map +1 -0
  53. package/dist/lib/compose.d.ts +36 -0
  54. package/dist/lib/compose.d.ts.map +1 -0
  55. package/dist/lib/compose.js +137 -0
  56. package/dist/lib/compose.js.map +1 -0
  57. package/dist/lib/db.d.ts +6 -0
  58. package/dist/lib/db.d.ts.map +1 -0
  59. package/dist/lib/db.js +6 -0
  60. package/dist/lib/db.js.map +1 -0
  61. package/dist/lib/fs.d.ts +20 -0
  62. package/dist/lib/fs.d.ts.map +1 -0
  63. package/dist/lib/fs.js +72 -0
  64. package/dist/lib/fs.js.map +1 -0
  65. package/dist/lib/jtapi.d.ts +6 -0
  66. package/dist/lib/jtapi.d.ts.map +1 -0
  67. package/dist/lib/jtapi.js +27 -0
  68. package/dist/lib/jtapi.js.map +1 -0
  69. package/dist/lib/network.d.ts +43 -0
  70. package/dist/lib/network.d.ts.map +1 -0
  71. package/dist/lib/network.js +172 -0
  72. package/dist/lib/network.js.map +1 -0
  73. package/dist/lib/paths.d.ts +19 -0
  74. package/dist/lib/paths.d.ts.map +1 -0
  75. package/dist/lib/paths.js +57 -0
  76. package/dist/lib/paths.js.map +1 -0
  77. package/dist/lib/postgres.d.ts +4 -0
  78. package/dist/lib/postgres.d.ts.map +1 -0
  79. package/dist/lib/postgres.js +49 -0
  80. package/dist/lib/postgres.js.map +1 -0
  81. package/dist/lib/rpc.d.ts +5 -0
  82. package/dist/lib/rpc.d.ts.map +1 -0
  83. package/dist/lib/rpc.js +28 -0
  84. package/dist/lib/rpc.js.map +1 -0
  85. package/dist/lib/secrets.d.ts +38 -0
  86. package/dist/lib/secrets.d.ts.map +1 -0
  87. package/dist/lib/secrets.js +132 -0
  88. package/dist/lib/secrets.js.map +1 -0
  89. package/dist/lib/system.d.ts +12 -0
  90. package/dist/lib/system.d.ts.map +1 -0
  91. package/dist/lib/system.js +61 -0
  92. package/dist/lib/system.js.map +1 -0
  93. package/dist/ui/components/AppShell.d.ts +9 -0
  94. package/dist/ui/components/AppShell.d.ts.map +1 -0
  95. package/dist/ui/components/AppShell.js +6 -0
  96. package/dist/ui/components/AppShell.js.map +1 -0
  97. package/dist/ui/components/Confirm.d.ts +7 -0
  98. package/dist/ui/components/Confirm.d.ts.map +1 -0
  99. package/dist/ui/components/Confirm.js +14 -0
  100. package/dist/ui/components/Confirm.js.map +1 -0
  101. package/dist/ui/components/DataTable.d.ts +12 -0
  102. package/dist/ui/components/DataTable.d.ts.map +1 -0
  103. package/dist/ui/components/DataTable.js +28 -0
  104. package/dist/ui/components/DataTable.js.map +1 -0
  105. package/dist/ui/components/Divider.d.ts +6 -0
  106. package/dist/ui/components/Divider.d.ts.map +1 -0
  107. package/dist/ui/components/Divider.js +6 -0
  108. package/dist/ui/components/Divider.js.map +1 -0
  109. package/dist/ui/components/KeyValue.d.ts +11 -0
  110. package/dist/ui/components/KeyValue.d.ts.map +1 -0
  111. package/dist/ui/components/KeyValue.js +7 -0
  112. package/dist/ui/components/KeyValue.js.map +1 -0
  113. package/dist/ui/components/Section.d.ts +8 -0
  114. package/dist/ui/components/Section.d.ts.map +1 -0
  115. package/dist/ui/components/Section.js +6 -0
  116. package/dist/ui/components/Section.js.map +1 -0
  117. package/dist/ui/components/SelectMenu.d.ts +14 -0
  118. package/dist/ui/components/SelectMenu.d.ts.map +1 -0
  119. package/dist/ui/components/SelectMenu.js +55 -0
  120. package/dist/ui/components/SelectMenu.js.map +1 -0
  121. package/dist/ui/components/ShellOutput.d.ts +7 -0
  122. package/dist/ui/components/ShellOutput.d.ts.map +1 -0
  123. package/dist/ui/components/ShellOutput.js +10 -0
  124. package/dist/ui/components/ShellOutput.js.map +1 -0
  125. package/dist/ui/components/Spinner.d.ts +6 -0
  126. package/dist/ui/components/Spinner.d.ts.map +1 -0
  127. package/dist/ui/components/Spinner.js +7 -0
  128. package/dist/ui/components/Spinner.js.map +1 -0
  129. package/dist/ui/components/StatusBox.d.ts +8 -0
  130. package/dist/ui/components/StatusBox.d.ts.map +1 -0
  131. package/dist/ui/components/StatusBox.js +12 -0
  132. package/dist/ui/components/StatusBox.js.map +1 -0
  133. package/dist/ui/components/StatusLine.d.ts +8 -0
  134. package/dist/ui/components/StatusLine.d.ts.map +1 -0
  135. package/dist/ui/components/StatusLine.js +13 -0
  136. package/dist/ui/components/StatusLine.js.map +1 -0
  137. package/dist/ui/components/StepList.d.ts +11 -0
  138. package/dist/ui/components/StepList.d.ts.map +1 -0
  139. package/dist/ui/components/StepList.js +19 -0
  140. package/dist/ui/components/StepList.js.map +1 -0
  141. package/dist/ui/components/SubSection.d.ts +8 -0
  142. package/dist/ui/components/SubSection.d.ts.map +1 -0
  143. package/dist/ui/components/SubSection.js +6 -0
  144. package/dist/ui/components/SubSection.js.map +1 -0
  145. package/dist/ui/components/TextInput.d.ts +11 -0
  146. package/dist/ui/components/TextInput.d.ts.map +1 -0
  147. package/dist/ui/components/TextInput.js +7 -0
  148. package/dist/ui/components/TextInput.js.map +1 -0
  149. package/dist/ui/components/index.d.ts +16 -0
  150. package/dist/ui/components/index.d.ts.map +1 -0
  151. package/dist/ui/components/index.js +15 -0
  152. package/dist/ui/components/index.js.map +1 -0
  153. package/dist/ui/hooks/index.d.ts +7 -0
  154. package/dist/ui/hooks/index.d.ts.map +1 -0
  155. package/dist/ui/hooks/index.js +5 -0
  156. package/dist/ui/hooks/index.js.map +1 -0
  157. package/dist/ui/hooks/useAsyncTask.d.ts +9 -0
  158. package/dist/ui/hooks/useAsyncTask.d.ts.map +1 -0
  159. package/dist/ui/hooks/useAsyncTask.js +22 -0
  160. package/dist/ui/hooks/useAsyncTask.js.map +1 -0
  161. package/dist/ui/hooks/usePolling.d.ts +8 -0
  162. package/dist/ui/hooks/usePolling.d.ts.map +1 -0
  163. package/dist/ui/hooks/usePolling.js +43 -0
  164. package/dist/ui/hooks/usePolling.js.map +1 -0
  165. package/dist/ui/hooks/useStepRunner.d.ts +16 -0
  166. package/dist/ui/hooks/useStepRunner.d.ts.map +1 -0
  167. package/dist/ui/hooks/useStepRunner.js +42 -0
  168. package/dist/ui/hooks/useStepRunner.js.map +1 -0
  169. package/dist/ui/hooks/useStreamingProcess.d.ts +8 -0
  170. package/dist/ui/hooks/useStreamingProcess.d.ts.map +1 -0
  171. package/dist/ui/hooks/useStreamingProcess.js +49 -0
  172. package/dist/ui/hooks/useStreamingProcess.js.map +1 -0
  173. package/dist/ui/types.d.ts +24 -0
  174. package/dist/ui/types.d.ts.map +1 -0
  175. package/dist/ui/types.js +2 -0
  176. package/dist/ui/types.js.map +1 -0
  177. package/dist/ui/views/CertsStatusView.d.ts +2 -0
  178. package/dist/ui/views/CertsStatusView.d.ts.map +1 -0
  179. package/dist/ui/views/CertsStatusView.js +95 -0
  180. package/dist/ui/views/CertsStatusView.js.map +1 -0
  181. package/dist/ui/views/DbBackupView.d.ts +2 -0
  182. package/dist/ui/views/DbBackupView.d.ts.map +1 -0
  183. package/dist/ui/views/DbBackupView.js +62 -0
  184. package/dist/ui/views/DbBackupView.js.map +1 -0
  185. package/dist/ui/views/DbCompactView.d.ts +2 -0
  186. package/dist/ui/views/DbCompactView.d.ts.map +1 -0
  187. package/dist/ui/views/DbCompactView.js +28 -0
  188. package/dist/ui/views/DbCompactView.js.map +1 -0
  189. package/dist/ui/views/DbListView.d.ts +2 -0
  190. package/dist/ui/views/DbListView.d.ts.map +1 -0
  191. package/dist/ui/views/DbListView.js +30 -0
  192. package/dist/ui/views/DbListView.js.map +1 -0
  193. package/dist/ui/views/DbSizeView.d.ts +2 -0
  194. package/dist/ui/views/DbSizeView.d.ts.map +1 -0
  195. package/dist/ui/views/DbSizeView.js +21 -0
  196. package/dist/ui/views/DbSizeView.js.map +1 -0
  197. package/dist/ui/views/DbStatusView.d.ts +2 -0
  198. package/dist/ui/views/DbStatusView.d.ts.map +1 -0
  199. package/dist/ui/views/DbStatusView.js +41 -0
  200. package/dist/ui/views/DbStatusView.js.map +1 -0
  201. package/dist/ui/views/DbTablesView.d.ts +6 -0
  202. package/dist/ui/views/DbTablesView.d.ts.map +1 -0
  203. package/dist/ui/views/DbTablesView.js +28 -0
  204. package/dist/ui/views/DbTablesView.js.map +1 -0
  205. package/dist/ui/views/DiagDatabaseView.d.ts +2 -0
  206. package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -0
  207. package/dist/ui/views/DiagDatabaseView.js +51 -0
  208. package/dist/ui/views/DiagDatabaseView.js.map +1 -0
  209. package/dist/ui/views/DiagNetworkView.d.ts +2 -0
  210. package/dist/ui/views/DiagNetworkView.d.ts.map +1 -0
  211. package/dist/ui/views/DiagNetworkView.js +169 -0
  212. package/dist/ui/views/DiagNetworkView.js.map +1 -0
  213. package/dist/ui/views/DiagServiceView.d.ts +2 -0
  214. package/dist/ui/views/DiagServiceView.d.ts.map +1 -0
  215. package/dist/ui/views/DiagServiceView.js +37 -0
  216. package/dist/ui/views/DiagServiceView.js.map +1 -0
  217. package/dist/ui/views/DockerNetworkView.d.ts +2 -0
  218. package/dist/ui/views/DockerNetworkView.d.ts.map +1 -0
  219. package/dist/ui/views/DockerNetworkView.js +29 -0
  220. package/dist/ui/views/DockerNetworkView.js.map +1 -0
  221. package/dist/ui/views/DockerPruneView.d.ts +2 -0
  222. package/dist/ui/views/DockerPruneView.d.ts.map +1 -0
  223. package/dist/ui/views/DockerPruneView.js +57 -0
  224. package/dist/ui/views/DockerPruneView.js.map +1 -0
  225. package/dist/ui/views/DockerStatusView.d.ts +2 -0
  226. package/dist/ui/views/DockerStatusView.d.ts.map +1 -0
  227. package/dist/ui/views/DockerStatusView.js +43 -0
  228. package/dist/ui/views/DockerStatusView.js.map +1 -0
  229. package/dist/ui/views/JtapiDisableView.d.ts +2 -0
  230. package/dist/ui/views/JtapiDisableView.d.ts.map +1 -0
  231. package/dist/ui/views/JtapiDisableView.js +55 -0
  232. package/dist/ui/views/JtapiDisableView.js.map +1 -0
  233. package/dist/ui/views/JtapiEnableView.d.ts +2 -0
  234. package/dist/ui/views/JtapiEnableView.d.ts.map +1 -0
  235. package/dist/ui/views/JtapiEnableView.js +47 -0
  236. package/dist/ui/views/JtapiEnableView.js.map +1 -0
  237. package/dist/ui/views/JtapiStatusView.d.ts +2 -0
  238. package/dist/ui/views/JtapiStatusView.d.ts.map +1 -0
  239. package/dist/ui/views/JtapiStatusView.js +18 -0
  240. package/dist/ui/views/JtapiStatusView.js.map +1 -0
  241. package/dist/ui/views/JtapiTroubleshootView.d.ts +2 -0
  242. package/dist/ui/views/JtapiTroubleshootView.d.ts.map +1 -0
  243. package/dist/ui/views/JtapiTroubleshootView.js +120 -0
  244. package/dist/ui/views/JtapiTroubleshootView.js.map +1 -0
  245. package/dist/ui/views/MainMenu.d.ts +8 -0
  246. package/dist/ui/views/MainMenu.d.ts.map +1 -0
  247. package/dist/ui/views/MainMenu.js +110 -0
  248. package/dist/ui/views/MainMenu.js.map +1 -0
  249. package/dist/ui/views/MigrateHistoryView.d.ts +2 -0
  250. package/dist/ui/views/MigrateHistoryView.d.ts.map +1 -0
  251. package/dist/ui/views/MigrateHistoryView.js +25 -0
  252. package/dist/ui/views/MigrateHistoryView.js.map +1 -0
  253. package/dist/ui/views/MigrateRollbackView.d.ts +6 -0
  254. package/dist/ui/views/MigrateRollbackView.d.ts.map +1 -0
  255. package/dist/ui/views/MigrateRollbackView.js +50 -0
  256. package/dist/ui/views/MigrateRollbackView.js.map +1 -0
  257. package/dist/ui/views/MigrateRunView.d.ts +2 -0
  258. package/dist/ui/views/MigrateRunView.d.ts.map +1 -0
  259. package/dist/ui/views/MigrateRunView.js +50 -0
  260. package/dist/ui/views/MigrateRunView.js.map +1 -0
  261. package/dist/ui/views/MigrateStatusView.d.ts +2 -0
  262. package/dist/ui/views/MigrateStatusView.d.ts.map +1 -0
  263. package/dist/ui/views/MigrateStatusView.js +88 -0
  264. package/dist/ui/views/MigrateStatusView.js.map +1 -0
  265. package/dist/ui/views/MigrateWatchView.d.ts +6 -0
  266. package/dist/ui/views/MigrateWatchView.d.ts.map +1 -0
  267. package/dist/ui/views/MigrateWatchView.js +83 -0
  268. package/dist/ui/views/MigrateWatchView.js.map +1 -0
  269. package/dist/ui/views/OfflineListView.d.ts +2 -0
  270. package/dist/ui/views/OfflineListView.d.ts.map +1 -0
  271. package/dist/ui/views/OfflineListView.js +47 -0
  272. package/dist/ui/views/OfflineListView.js.map +1 -0
  273. package/dist/ui/views/SecretsSetupView.d.ts +2 -0
  274. package/dist/ui/views/SecretsSetupView.d.ts.map +1 -0
  275. package/dist/ui/views/SecretsSetupView.js +94 -0
  276. package/dist/ui/views/SecretsSetupView.js.map +1 -0
  277. package/dist/ui/views/SecretsStatusView.d.ts +2 -0
  278. package/dist/ui/views/SecretsStatusView.d.ts.map +1 -0
  279. package/dist/ui/views/SecretsStatusView.js +36 -0
  280. package/dist/ui/views/SecretsStatusView.js.map +1 -0
  281. package/dist/ui/views/StatusView.d.ts +2 -0
  282. package/dist/ui/views/StatusView.d.ts.map +1 -0
  283. package/dist/ui/views/StatusView.js +80 -0
  284. package/dist/ui/views/StatusView.js.map +1 -0
  285. package/dist/utils/output.d.ts +11 -0
  286. package/dist/utils/output.d.ts.map +1 -0
  287. package/dist/utils/output.js +30 -0
  288. package/dist/utils/output.js.map +1 -0
  289. package/dist/utils/prompt.d.ts +6 -0
  290. package/dist/utils/prompt.d.ts.map +1 -0
  291. package/dist/utils/prompt.js +25 -0
  292. package/dist/utils/prompt.js.map +1 -0
  293. package/dist/utils/version.d.ts +8 -0
  294. package/dist/utils/version.d.ts.map +1 -0
  295. package/dist/utils/version.js +35 -0
  296. package/dist/utils/version.js.map +1 -0
  297. package/package.json +59 -0
@@ -0,0 +1,61 @@
1
+ import { execa } from 'execa';
2
+ import os from 'node:os';
3
+ export async function checkRam(requiredMb = 7168) {
4
+ const totalBytes = os.totalmem();
5
+ const totalMb = Math.floor(totalBytes / 1024 / 1024);
6
+ return { ok: totalMb >= requiredMb, totalMb };
7
+ }
8
+ export async function checkDiskSpace(path = '/', requiredFreePercent = 10) {
9
+ try {
10
+ const { stdout } = await execa('df', ['-h', path]);
11
+ const lines = stdout.split('\n');
12
+ if (lines.length < 2)
13
+ return { ok: false, usedPercent: 100, freePercent: 0 };
14
+ const match = lines[1].match(/(\d+)%/);
15
+ const usedPercent = match ? parseInt(match[1], 10) : 100;
16
+ const freePercent = 100 - usedPercent;
17
+ return { ok: freePercent >= requiredFreePercent, usedPercent, freePercent };
18
+ }
19
+ catch {
20
+ return { ok: false, usedPercent: 100, freePercent: 0 };
21
+ }
22
+ }
23
+ export async function getDockerVersion() {
24
+ try {
25
+ const { stdout } = await execa('docker', ['--version']);
26
+ const match = stdout.match(/(\d+)\.\d+/);
27
+ return match ? parseInt(match[1], 10) : null;
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ export async function getSystemStats() {
34
+ const platform = os.platform();
35
+ const totalMem = os.totalmem();
36
+ const freeMem = os.freemem();
37
+ const usedMem = totalMem - freeMem;
38
+ const cpus = os.cpus();
39
+ const loadAvg = os.loadavg();
40
+ const memStr = `MEM ${formatBytes(usedMem)}/${formatBytes(totalMem)}`;
41
+ const cpuStr = `CPU ${cpus.length} cores, load ${loadAvg[0].toFixed(1)}`;
42
+ let diskStr = 'DISK unavailable';
43
+ try {
44
+ const { stdout } = await execa('df', ['-h', '/']);
45
+ const lines = stdout.split('\n');
46
+ if (lines.length >= 2) {
47
+ const parts = lines[1].split(/\s+/);
48
+ diskStr = `DISK ${parts[2]}/${parts[1]} (${parts[4]} used)`;
49
+ }
50
+ }
51
+ catch { /* ignore */ }
52
+ return `${cpuStr} | ${memStr} | ${diskStr}`;
53
+ }
54
+ function formatBytes(bytes) {
55
+ const gb = bytes / (1024 * 1024 * 1024);
56
+ if (gb >= 1)
57
+ return `${gb.toFixed(1)}GB`;
58
+ const mb = bytes / (1024 * 1024);
59
+ return `${mb.toFixed(0)}MB`;
60
+ }
61
+ //# sourceMappingURL=system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/lib/system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ReactNode } from 'react';
2
+ interface AppShellProps {
3
+ title?: string;
4
+ command?: string;
5
+ children: ReactNode;
6
+ }
7
+ export declare function AppShell({ title, command, children }: AppShellProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=AppShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/ui/components/AppShell.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAA2B,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAgBzF"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ export function AppShell({ title = 'CallTelemetry CLI', command, children }) {
4
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { borderStyle: "single", paddingX: 1, justifyContent: "space-between", children: [_jsx(Text, { bold: true, color: "cyan", children: title }), command && _jsx(Text, { dimColor: true, children: command })] }), _jsx(Box, { flexDirection: "column", paddingTop: 1, children: children })] }));
5
+ }
6
+ //# sourceMappingURL=AppShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/ui/components/AppShell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,GAAG,mBAAmB,EAAE,OAAO,EAAE,QAAQ,EAAiB;IACxF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,EACX,cAAc,EAAC,eAAe,aAE9B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,KAAK,GAAQ,EACrC,OAAO,IAAI,KAAC,IAAI,IAAC,QAAQ,kBAAE,OAAO,GAAQ,IACvC,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACtC,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface ConfirmProps {
2
+ message: string;
3
+ onConfirm: (yes: boolean) => void;
4
+ }
5
+ export declare function Confirm({ message, onConfirm }: ConfirmProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=Confirm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Confirm.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Confirm.tsx"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,wBAAgB,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,YAAY,2CAoB3D"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ export function Confirm({ message, onConfirm }) {
4
+ useInput((input) => {
5
+ if (input.toLowerCase() === 'y') {
6
+ onConfirm(true);
7
+ }
8
+ else if (input.toLowerCase() === 'n' || input === '\r') {
9
+ onConfirm(false);
10
+ }
11
+ });
12
+ return (_jsxs(Box, { borderStyle: "single", borderColor: "yellow", paddingX: 1, children: [_jsx(Text, { color: "yellow", children: '⚠' }), _jsx(Text, { children: ` ${message} ` }), _jsx(Text, { dimColor: true, children: "[y/N]" })] }));
13
+ }
14
+ //# sourceMappingURL=Confirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Confirm.js","sourceRoot":"","sources":["../../../src/ui/components/Confirm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAO1C,MAAM,UAAU,OAAO,CAAC,EAAE,OAAO,EAAE,SAAS,EAAgB;IAC1D,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACzD,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,QAAQ,EACpB,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,GAAG,GAAQ,EACjC,KAAC,IAAI,cAAE,KAAK,OAAO,GAAG,GAAQ,EAC9B,KAAC,IAAI,IAAC,QAAQ,4BAAa,IACvB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ interface Column {
2
+ key: string;
3
+ label: string;
4
+ width?: number;
5
+ }
6
+ interface DataTableProps {
7
+ columns: Column[];
8
+ rows: Array<Record<string, string>>;
9
+ }
10
+ export declare function DataTable({ columns, rows }: DataTableProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=DataTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.d.ts","sourceRoot":"","sources":["../../../src/ui/components/DataTable.tsx"],"names":[],"mappings":"AAEA,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrC;AAkBD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,2CAwB1D"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ function computeWidths(columns, rows) {
4
+ return columns.map((col) => {
5
+ if (col.width)
6
+ return col.width;
7
+ let max = col.label.length;
8
+ for (const row of rows) {
9
+ const val = row[col.key] ?? '';
10
+ if (val.length > max)
11
+ max = val.length;
12
+ }
13
+ return max;
14
+ });
15
+ }
16
+ function pad(str, width) {
17
+ return str + ' '.repeat(Math.max(0, width - str.length));
18
+ }
19
+ export function DataTable({ columns, rows }) {
20
+ const widths = computeWidths(columns, rows);
21
+ const topBorder = '┌' + widths.map(w => '─'.repeat(w + 2)).join('┬') + '┐';
22
+ const headerSep = '├' + widths.map(w => '─'.repeat(w + 2)).join('┼') + '┤';
23
+ const bottomBorder = '└' + widths.map(w => '─'.repeat(w + 2)).join('┴') + '┘';
24
+ const headerRow = '│' + columns.map((col, i) => ` ${pad(col.label, widths[i])} `).join('│') + '│';
25
+ const dataRows = rows.map(row => '│' + columns.map((col, i) => ` ${pad(row[col.key] ?? '', widths[i])} `).join('│') + '│');
26
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(Text, { children: topBorder }), _jsx(Text, { bold: true, children: headerRow }), _jsx(Text, { children: headerSep }), dataRows.map((row, i) => (_jsx(Text, { children: row }, i))), _jsx(Text, { children: bottomBorder })] }));
27
+ }
28
+ //# sourceMappingURL=DataTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataTable.js","sourceRoot":"","sources":["../../../src/ui/components/DataTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface DividerProps {
2
+ width?: number;
3
+ }
4
+ export declare function Divider({ width }: DividerProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=Divider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Divider.tsx"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAU,EAAE,EAAE,YAAY,2CAEnD"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ export function Divider({ width = 60 }) {
4
+ return _jsx(Text, { dimColor: true, children: ' ' + '─'.repeat(width) });
5
+ }
6
+ //# sourceMappingURL=Divider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.js","sourceRoot":"","sources":["../../../src/ui/components/Divider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAM3B,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,GAAG,EAAE,EAAgB;IAClD,OAAO,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface KeyValueItem {
2
+ key: string;
3
+ value: string;
4
+ }
5
+ interface KeyValueProps {
6
+ items: KeyValueItem[];
7
+ keyWidth?: number;
8
+ }
9
+ export declare function KeyValue({ items, keyWidth }: KeyValueProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=KeyValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyValue.d.ts","sourceRoot":"","sources":["../../../src/ui/components/KeyValue.tsx"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,aAAa,2CAa1D"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ export function KeyValue({ items, keyWidth }) {
4
+ const width = keyWidth ?? Math.max(...items.map(item => item.key.length)) + 2;
5
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: 2, children: items.map((item, i) => (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: item.key.padEnd(width) }), _jsx(Text, { children: item.value })] }, i))) }));
6
+ }
7
+ //# sourceMappingURL=KeyValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyValue.js","sourceRoot":"","sources":["../../../src/ui/components/KeyValue.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAYhC,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAiB;IACzD,MAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IAE9E,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,EAC9C,KAAC,IAAI,cAAE,IAAI,CAAC,KAAK,GAAQ,KAFjB,CAAC,CAGL,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ interface SectionProps {
3
+ title: string;
4
+ children?: ReactNode;
5
+ }
6
+ export declare function Section({ title, children }: SectionProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=Section.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Section.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Section.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,YAAY,2CAYxD"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ export function Section({ title, children }) {
4
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, children: ` ${title}` }), _jsx(Text, { dimColor: true, children: ' ' + '─'.repeat(60) }), children && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: children }))] }));
5
+ }
6
+ //# sourceMappingURL=Section.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Section.js","sourceRoot":"","sources":["../../../src/ui/components/Section.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAgB;IACvD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,KAAK,EAAE,GAAQ,EAChC,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC5C,QAAQ,IAAI,CACX,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACtC,QAAQ,GACL,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface MenuItem {
2
+ label: string;
3
+ description: string;
4
+ value: string;
5
+ children?: MenuItem[];
6
+ }
7
+ interface SelectMenuProps {
8
+ items: MenuItem[];
9
+ onSelect: (item: MenuItem) => void;
10
+ onExit?: () => void;
11
+ }
12
+ export declare function SelectMenu({ items, onSelect, onExit }: SelectMenuProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=SelectMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../../src/ui/components/SelectMenu.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,eAAe,2CA2DtE"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Box, Text, useInput } from 'ink';
4
+ export function SelectMenu({ items, onSelect, onExit }) {
5
+ const [cursor, setCursor] = useState(0);
6
+ const [stack, setStack] = useState([]);
7
+ const currentItems = stack.length > 0 ? stack[stack.length - 1] : items;
8
+ const hasParent = stack.length > 0;
9
+ const displayItems = [];
10
+ if (hasParent) {
11
+ displayItems.push({ label: '\u2190 Back', description: 'Return to previous menu', isBack: true });
12
+ }
13
+ for (const item of currentItems) {
14
+ displayItems.push({ label: item.label, description: item.description, item });
15
+ }
16
+ useInput((input, key) => {
17
+ if (key.upArrow) {
18
+ setCursor(prev => (prev > 0 ? prev - 1 : displayItems.length - 1));
19
+ }
20
+ else if (key.downArrow) {
21
+ setCursor(prev => (prev < displayItems.length - 1 ? prev + 1 : 0));
22
+ }
23
+ else if (key.return) {
24
+ const selected = displayItems[cursor];
25
+ if (!selected)
26
+ return;
27
+ if (selected.isBack) {
28
+ setStack(prev => prev.slice(0, -1));
29
+ setCursor(0);
30
+ }
31
+ else if (selected.item?.children && selected.item.children.length > 0) {
32
+ setStack(prev => [...prev, selected.item.children]);
33
+ setCursor(0);
34
+ }
35
+ else if (selected.item) {
36
+ onSelect(selected.item);
37
+ }
38
+ }
39
+ else if (key.escape || input === 'q') {
40
+ if (hasParent) {
41
+ setStack(prev => prev.slice(0, -1));
42
+ setCursor(0);
43
+ }
44
+ else if (onExit) {
45
+ onExit();
46
+ }
47
+ }
48
+ });
49
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: 2, children: displayItems.map((entry, i) => {
50
+ const isActive = i === cursor;
51
+ const prefix = isActive ? '❯' : ' ';
52
+ return (_jsxs(Box, { children: [_jsx(Text, { color: isActive ? 'cyan' : undefined, bold: isActive, children: `${prefix} ${entry.label.padEnd(16)}` }), _jsx(Text, { dimColor: true, children: entry.description })] }, i));
53
+ }) }));
54
+ }
55
+ //# sourceMappingURL=SelectMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectMenu.js","sourceRoot":"","sources":["../../../src/ui/components/SelectMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface ShellOutputProps {
2
+ content: string;
3
+ maxLines?: number;
4
+ }
5
+ export declare function ShellOutput({ content, maxLines }: ShellOutputProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ShellOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellOutput.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ShellOutput.tsx"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAalE"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ export function ShellOutput({ content, maxLines }) {
4
+ let lines = content.split('\n');
5
+ if (maxLines && lines.length > maxLines) {
6
+ lines = lines.slice(0, maxLines);
7
+ }
8
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: 2, children: lines.map((line, i) => (_jsx(Text, { dimColor: true, children: `│ ${line}` }, i))) }));
9
+ }
10
+ //# sourceMappingURL=ShellOutput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShellOutput.js","sourceRoot":"","sources":["../../../src/ui/components/ShellOutput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAOhC,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAoB;IACjE,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QACxC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,KAAC,IAAI,IAAS,QAAQ,kBAAE,KAAK,IAAI,EAAE,IAAxB,CAAC,CAA+B,CAC5C,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ interface SpinnerProps {
2
+ label: string;
3
+ }
4
+ export declare function Spinner({ label }: SpinnerProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/ui/components/Spinner.tsx"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,YAAY,2CAO9C"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import InkSpinner from 'ink-spinner';
4
+ export function Spinner({ label }) {
5
+ return (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: "cyan", children: _jsx(InkSpinner, { type: "dots" }) }), _jsx(Text, { children: ` ${label}` })] }));
6
+ }
7
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","sourceRoot":"","sources":["../../../src/ui/components/Spinner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,UAAU,MAAM,aAAa,CAAC;AAMrC,MAAM,UAAU,OAAO,CAAC,EAAE,KAAK,EAAgB;IAC7C,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAE,CAAC,aACjB,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAC,KAAC,UAAU,IAAC,IAAI,EAAC,MAAM,GAAG,GAAO,EACpD,KAAC,IAAI,cAAE,IAAI,KAAK,EAAE,GAAQ,IACtB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface StatusBoxProps {
2
+ variant: 'error' | 'success' | 'warning';
3
+ title: string;
4
+ lines?: string[];
5
+ }
6
+ export declare function StatusBox({ variant, title, lines }: StatusBoxProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=StatusBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBox.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StatusBox.tsx"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACtB,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAQD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,cAAc,2CAelE"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ const variants = {
4
+ error: { symbol: '✘', color: 'red' },
5
+ success: { symbol: '✔', color: 'green' },
6
+ warning: { symbol: '⚠', color: 'yellow' },
7
+ };
8
+ export function StatusBox({ variant, title, lines }) {
9
+ const { symbol, color } = variants[variant];
10
+ return (_jsxs(Box, { borderStyle: "single", borderColor: color, flexDirection: "column", paddingX: 1, children: [_jsx(Text, { color: color, bold: true, children: `${symbol} ${title}` }), lines?.map((line, i) => (_jsx(Text, { dimColor: true, children: ` ${line}` }, i)))] }));
11
+ }
12
+ //# sourceMappingURL=StatusBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusBox.js","sourceRoot":"","sources":["../../../src/ui/components/StatusBox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,QAAQ,GAAG;IACf,KAAK,EAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAc,EAAE;IAC/C,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAgB,EAAE;IACjD,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAiB,EAAE;CACnD,CAAC;AAEF,MAAM,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAkB;IACjE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,CACL,MAAC,GAAG,IACF,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAE,KAAK,EAClB,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,kBAAE,GAAG,MAAM,IAAI,KAAK,EAAE,GAAQ,EACrD,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACvB,KAAC,IAAI,IAAS,QAAQ,kBAAE,KAAK,IAAI,EAAE,IAAxB,CAAC,CAA+B,CAC5C,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ interface StatusLineProps {
2
+ status: 'ok' | 'fail' | 'warn' | 'info';
3
+ label: string;
4
+ detail?: string;
5
+ }
6
+ export declare function StatusLine({ status, label, detail }: StatusLineProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=StatusLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusLine.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StatusLine.tsx"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,2CAapE"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ const icons = {
4
+ ok: { symbol: '✔', color: 'green' },
5
+ fail: { symbol: '✘', color: 'red' },
6
+ warn: { symbol: '⚠', color: 'yellow' },
7
+ info: { symbol: 'ℹ', color: 'blue' },
8
+ };
9
+ export function StatusLine({ status, label, detail }) {
10
+ const { symbol, color } = icons[status];
11
+ return (_jsxs(Box, { paddingLeft: 2, children: [_jsx(Text, { color: color, children: symbol }), _jsx(Text, { children: ` ${label}` }), detail && (_jsx(Box, { flexGrow: 1, justifyContent: "flex-end", children: _jsx(Text, { dimColor: true, children: detail }) }))] }));
12
+ }
13
+ //# sourceMappingURL=StatusLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusLine.js","sourceRoot":"","sources":["../../../src/ui/components/StatusLine.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,KAAK,GAAyE;IAClF,EAAE,EAAI,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;IACrC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;IACnC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;IACtC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;CACrC,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAmB;IACnE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAE,CAAC,aACjB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,MAAM,GAAQ,EACnC,KAAC,IAAI,cAAE,IAAI,KAAK,EAAE,GAAQ,EACzB,MAAM,IAAI,CACT,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAC,UAAU,YACzC,KAAC,IAAI,IAAC,QAAQ,kBAAE,MAAM,GAAQ,GAC1B,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface Step {
2
+ label: string;
3
+ status: 'done' | 'running' | 'pending' | 'error';
4
+ detail?: string;
5
+ }
6
+ interface StepListProps {
7
+ steps: Step[];
8
+ }
9
+ export declare function StepList({ steps }: StepListProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=StepList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepList.d.ts","sourceRoot":"","sources":["../../../src/ui/components/StepList.tsx"],"names":[],"mappings":"AAGA,UAAU,IAAI;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAeD,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,2CAgBhD"}
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import InkSpinner from 'ink-spinner';
4
+ function StepIcon({ status }) {
5
+ switch (status) {
6
+ case 'done':
7
+ return _jsx(Text, { color: "green", children: "\u2714" });
8
+ case 'running':
9
+ return _jsx(Text, { color: "cyan", children: _jsx(InkSpinner, { type: "dots" }) });
10
+ case 'error':
11
+ return _jsx(Text, { color: "red", children: "\u2718" });
12
+ case 'pending':
13
+ return _jsx(Text, { dimColor: true, children: "\u25E6" });
14
+ }
15
+ }
16
+ export function StepList({ steps }) {
17
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: 2, children: steps.map((step, i) => (_jsxs(Box, { children: [_jsx(StepIcon, { status: step.status }), _jsx(Text, { dimColor: step.status === 'pending', children: ` ${step.label}` }), step.detail && (_jsx(Box, { flexGrow: 1, justifyContent: "flex-end", children: _jsx(Text, { dimColor: true, children: step.detail }) }))] }, i))) }));
18
+ }
19
+ //# sourceMappingURL=StepList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepList.js","sourceRoot":"","sources":["../../../src/ui/components/StepList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,UAAU,MAAM,aAAa,CAAC;AAYrC,SAAS,QAAQ,CAAC,EAAE,MAAM,EAA8B;IACtD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAS,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAC,KAAC,UAAU,IAAC,IAAI,EAAC,MAAM,GAAG,GAAO,CAAC;QAC9D,KAAK,OAAO;YACV,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAS,CAAC;QACpC,KAAK,SAAS;YACZ,OAAO,KAAC,IAAI,IAAC,QAAQ,6BAAS,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAiB;IAC/C,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,YACvC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CACtB,MAAC,GAAG,eACF,KAAC,QAAQ,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,EACjC,KAAC,IAAI,IAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,YAAG,IAAI,IAAI,CAAC,KAAK,EAAE,GAAQ,EACnE,IAAI,CAAC,MAAM,IAAI,CACd,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAC,UAAU,YACzC,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,CAAC,MAAM,GAAQ,GAC/B,CACP,KAPO,CAAC,CAQL,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ interface SubSectionProps {
3
+ title: string;
4
+ children?: ReactNode;
5
+ }
6
+ export declare function SubSection({ title, children }: SubSectionProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=SubSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubSection.d.ts","sourceRoot":"","sources":["../../../src/ui/components/SubSection.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,eAAe,2CAW9D"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ export function SubSection({ title, children }) {
4
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, bold: true, children: ` ${title}` }), children && (_jsx(Box, { flexDirection: "column", marginLeft: 2, children: children }))] }));
5
+ }
6
+ //# sourceMappingURL=SubSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubSection.js","sourceRoot":"","sources":["../../../src/ui/components/SubSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAmB;IAC7D,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,IAAC,QAAQ,QAAC,IAAI,kBAAE,KAAK,KAAK,EAAE,GAAQ,EACxC,QAAQ,IAAI,CACX,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACtC,QAAQ,GACL,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface TextInputProps {
2
+ label: string;
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ onSubmit: (value: string) => void;
6
+ mask?: boolean;
7
+ placeholder?: string;
8
+ }
9
+ export declare function TextInput({ label, value, onChange, onSubmit, mask, placeholder }: TextInputProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=TextInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.d.ts","sourceRoot":"","sources":["../../../src/ui/components/TextInput.tsx"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,cAAc,2CAahG"}
@@ -0,0 +1,7 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import InkTextInput from 'ink-text-input';
4
+ export function TextInput({ label, value, onChange, onSubmit, mask, placeholder }) {
5
+ return (_jsxs(Box, { children: [_jsxs(Text, { bold: true, children: [label, ": "] }), _jsx(InkTextInput, { value: value, onChange: onChange, onSubmit: onSubmit, mask: mask ? '*' : undefined, placeholder: placeholder })] }));
6
+ }
7
+ //# sourceMappingURL=TextInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextInput.js","sourceRoot":"","sources":["../../../src/ui/components/TextInput.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAW1C,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAkB;IAC/F,OAAO,CACL,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,IAAI,mBAAE,KAAK,UAAU,EAC3B,KAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC5B,WAAW,EAAE,WAAW,GACxB,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ export { AppShell } from './AppShell.js';
2
+ export { Section } from './Section.js';
3
+ export { SubSection } from './SubSection.js';
4
+ export { StatusLine } from './StatusLine.js';
5
+ export { StatusBox } from './StatusBox.js';
6
+ export { StepList } from './StepList.js';
7
+ export { DataTable } from './DataTable.js';
8
+ export { KeyValue } from './KeyValue.js';
9
+ export { ShellOutput } from './ShellOutput.js';
10
+ export { Spinner } from './Spinner.js';
11
+ export { Confirm } from './Confirm.js';
12
+ export { Divider } from './Divider.js';
13
+ export { SelectMenu } from './SelectMenu.js';
14
+ export type { MenuItem } from './SelectMenu.js';
15
+ export { TextInput } from './TextInput.js';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export { AppShell } from './AppShell.js';
2
+ export { Section } from './Section.js';
3
+ export { SubSection } from './SubSection.js';
4
+ export { StatusLine } from './StatusLine.js';
5
+ export { StatusBox } from './StatusBox.js';
6
+ export { StepList } from './StepList.js';
7
+ export { DataTable } from './DataTable.js';
8
+ export { KeyValue } from './KeyValue.js';
9
+ export { ShellOutput } from './ShellOutput.js';
10
+ export { Spinner } from './Spinner.js';
11
+ export { Confirm } from './Confirm.js';
12
+ export { Divider } from './Divider.js';
13
+ export { SelectMenu } from './SelectMenu.js';
14
+ export { TextInput } from './TextInput.js';
15
+ //# sourceMappingURL=index.js.map