@wasmsoft/fantastic 1.0.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 (456) hide show
  1. package/README.md +65 -0
  2. package/bin/run.js +27 -0
  3. package/bin/supervisor.js +65 -0
  4. package/dist/acquire/central-url.d.ts +9 -0
  5. package/dist/acquire/central-url.d.ts.map +1 -0
  6. package/dist/acquire/central-url.js +74 -0
  7. package/dist/acquire/central-url.js.map +1 -0
  8. package/dist/acquire/code.d.ts +21 -0
  9. package/dist/acquire/code.d.ts.map +1 -0
  10. package/dist/acquire/code.js +66 -0
  11. package/dist/acquire/code.js.map +1 -0
  12. package/dist/acquire/compatibility.d.ts +18 -0
  13. package/dist/acquire/compatibility.d.ts.map +1 -0
  14. package/dist/acquire/compatibility.js +36 -0
  15. package/dist/acquire/compatibility.js.map +1 -0
  16. package/dist/acquire/fetch.d.ts +26 -0
  17. package/dist/acquire/fetch.d.ts.map +1 -0
  18. package/dist/acquire/fetch.js +72 -0
  19. package/dist/acquire/fetch.js.map +1 -0
  20. package/dist/acquire/latest.d.ts +24 -0
  21. package/dist/acquire/latest.d.ts.map +1 -0
  22. package/dist/acquire/latest.js +95 -0
  23. package/dist/acquire/latest.js.map +1 -0
  24. package/dist/backup/archive.d.ts +26 -0
  25. package/dist/backup/archive.d.ts.map +1 -0
  26. package/dist/backup/archive.js +123 -0
  27. package/dist/backup/archive.js.map +1 -0
  28. package/dist/backup/restore.d.ts +46 -0
  29. package/dist/backup/restore.d.ts.map +1 -0
  30. package/dist/backup/restore.js +164 -0
  31. package/dist/backup/restore.js.map +1 -0
  32. package/dist/base-command.d.ts +54 -0
  33. package/dist/base-command.d.ts.map +1 -0
  34. package/dist/base-command.js +120 -0
  35. package/dist/base-command.js.map +1 -0
  36. package/dist/bundle-format/index.d.ts +6 -0
  37. package/dist/bundle-format/index.d.ts.map +1 -0
  38. package/dist/bundle-format/index.js +36 -0
  39. package/dist/bundle-format/index.js.map +1 -0
  40. package/dist/commands/activate.d.ts +15 -0
  41. package/dist/commands/activate.d.ts.map +1 -0
  42. package/dist/commands/activate.js +139 -0
  43. package/dist/commands/activate.js.map +1 -0
  44. package/dist/commands/backup.d.ts +11 -0
  45. package/dist/commands/backup.d.ts.map +1 -0
  46. package/dist/commands/backup.js +75 -0
  47. package/dist/commands/backup.js.map +1 -0
  48. package/dist/commands/config/get.d.ts +10 -0
  49. package/dist/commands/config/get.d.ts.map +1 -0
  50. package/dist/commands/config/get.js +33 -0
  51. package/dist/commands/config/get.js.map +1 -0
  52. package/dist/commands/config/list.d.ts +7 -0
  53. package/dist/commands/config/list.d.ts.map +1 -0
  54. package/dist/commands/config/list.js +43 -0
  55. package/dist/commands/config/list.js.map +1 -0
  56. package/dist/commands/config/set.d.ts +11 -0
  57. package/dist/commands/config/set.d.ts.map +1 -0
  58. package/dist/commands/config/set.js +56 -0
  59. package/dist/commands/config/set.js.map +1 -0
  60. package/dist/commands/db/migrate.d.ts +10 -0
  61. package/dist/commands/db/migrate.d.ts.map +1 -0
  62. package/dist/commands/db/migrate.js +67 -0
  63. package/dist/commands/db/migrate.js.map +1 -0
  64. package/dist/commands/dev.d.ts +19 -0
  65. package/dist/commands/dev.d.ts.map +1 -0
  66. package/dist/commands/dev.js +149 -0
  67. package/dist/commands/dev.js.map +1 -0
  68. package/dist/commands/doctor.d.ts +11 -0
  69. package/dist/commands/doctor.d.ts.map +1 -0
  70. package/dist/commands/doctor.js +75 -0
  71. package/dist/commands/doctor.js.map +1 -0
  72. package/dist/commands/health.d.ts +12 -0
  73. package/dist/commands/health.d.ts.map +1 -0
  74. package/dist/commands/health.js +109 -0
  75. package/dist/commands/health.js.map +1 -0
  76. package/dist/commands/install.d.ts +60 -0
  77. package/dist/commands/install.d.ts.map +1 -0
  78. package/dist/commands/install.js +486 -0
  79. package/dist/commands/install.js.map +1 -0
  80. package/dist/commands/iptv/snapshot.d.ts +10 -0
  81. package/dist/commands/iptv/snapshot.d.ts.map +1 -0
  82. package/dist/commands/iptv/snapshot.js +55 -0
  83. package/dist/commands/iptv/snapshot.js.map +1 -0
  84. package/dist/commands/library/drives.d.ts +7 -0
  85. package/dist/commands/library/drives.d.ts.map +1 -0
  86. package/dist/commands/library/drives.js +71 -0
  87. package/dist/commands/library/drives.js.map +1 -0
  88. package/dist/commands/library/relink.d.ts +10 -0
  89. package/dist/commands/library/relink.d.ts.map +1 -0
  90. package/dist/commands/library/relink.js +72 -0
  91. package/dist/commands/library/relink.js.map +1 -0
  92. package/dist/commands/library/scan.d.ts +16 -0
  93. package/dist/commands/library/scan.d.ts.map +1 -0
  94. package/dist/commands/library/scan.js +87 -0
  95. package/dist/commands/library/scan.js.map +1 -0
  96. package/dist/commands/library/sections.d.ts +7 -0
  97. package/dist/commands/library/sections.d.ts.map +1 -0
  98. package/dist/commands/library/sections.js +33 -0
  99. package/dist/commands/library/sections.js.map +1 -0
  100. package/dist/commands/library/status.d.ts +7 -0
  101. package/dist/commands/library/status.d.ts.map +1 -0
  102. package/dist/commands/library/status.js +37 -0
  103. package/dist/commands/library/status.js.map +1 -0
  104. package/dist/commands/list.d.ts +7 -0
  105. package/dist/commands/list.d.ts.map +1 -0
  106. package/dist/commands/list.js +73 -0
  107. package/dist/commands/list.js.map +1 -0
  108. package/dist/commands/live/channels.d.ts +10 -0
  109. package/dist/commands/live/channels.d.ts.map +1 -0
  110. package/dist/commands/live/channels.js +55 -0
  111. package/dist/commands/live/channels.js.map +1 -0
  112. package/dist/commands/live/test.d.ts +15 -0
  113. package/dist/commands/live/test.d.ts.map +1 -0
  114. package/dist/commands/live/test.js +116 -0
  115. package/dist/commands/live/test.js.map +1 -0
  116. package/dist/commands/logs.d.ts +16 -0
  117. package/dist/commands/logs.d.ts.map +1 -0
  118. package/dist/commands/logs.js +77 -0
  119. package/dist/commands/logs.js.map +1 -0
  120. package/dist/commands/migrate-cli.d.ts +11 -0
  121. package/dist/commands/migrate-cli.d.ts.map +1 -0
  122. package/dist/commands/migrate-cli.js +116 -0
  123. package/dist/commands/migrate-cli.js.map +1 -0
  124. package/dist/commands/owner/reset.d.ts +7 -0
  125. package/dist/commands/owner/reset.d.ts.map +1 -0
  126. package/dist/commands/owner/reset.js +74 -0
  127. package/dist/commands/owner/reset.js.map +1 -0
  128. package/dist/commands/restart.d.ts +11 -0
  129. package/dist/commands/restart.d.ts.map +1 -0
  130. package/dist/commands/restart.js +53 -0
  131. package/dist/commands/restart.js.map +1 -0
  132. package/dist/commands/restore.d.ts +17 -0
  133. package/dist/commands/restore.d.ts.map +1 -0
  134. package/dist/commands/restore.js +148 -0
  135. package/dist/commands/restore.js.map +1 -0
  136. package/dist/commands/self-update.d.ts +10 -0
  137. package/dist/commands/self-update.d.ts.map +1 -0
  138. package/dist/commands/self-update.js +98 -0
  139. package/dist/commands/self-update.js.map +1 -0
  140. package/dist/commands/setup.d.ts +19 -0
  141. package/dist/commands/setup.d.ts.map +1 -0
  142. package/dist/commands/setup.js +111 -0
  143. package/dist/commands/setup.js.map +1 -0
  144. package/dist/commands/shell.d.ts +118 -0
  145. package/dist/commands/shell.d.ts.map +1 -0
  146. package/dist/commands/shell.js +415 -0
  147. package/dist/commands/shell.js.map +1 -0
  148. package/dist/commands/start.d.ts +12 -0
  149. package/dist/commands/start.d.ts.map +1 -0
  150. package/dist/commands/start.js +108 -0
  151. package/dist/commands/start.js.map +1 -0
  152. package/dist/commands/status.d.ts +8 -0
  153. package/dist/commands/status.d.ts.map +1 -0
  154. package/dist/commands/status.js +115 -0
  155. package/dist/commands/status.js.map +1 -0
  156. package/dist/commands/stop.d.ts +11 -0
  157. package/dist/commands/stop.d.ts.map +1 -0
  158. package/dist/commands/stop.js +45 -0
  159. package/dist/commands/stop.js.map +1 -0
  160. package/dist/commands/stream/cancel.d.ts +13 -0
  161. package/dist/commands/stream/cancel.d.ts.map +1 -0
  162. package/dist/commands/stream/cancel.js +31 -0
  163. package/dist/commands/stream/cancel.js.map +1 -0
  164. package/dist/commands/stream/encoders.d.ts +7 -0
  165. package/dist/commands/stream/encoders.d.ts.map +1 -0
  166. package/dist/commands/stream/encoders.js +42 -0
  167. package/dist/commands/stream/encoders.js.map +1 -0
  168. package/dist/commands/stream/queue.d.ts +7 -0
  169. package/dist/commands/stream/queue.d.ts.map +1 -0
  170. package/dist/commands/stream/queue.js +52 -0
  171. package/dist/commands/stream/queue.js.map +1 -0
  172. package/dist/commands/stream/sessions.d.ts +7 -0
  173. package/dist/commands/stream/sessions.d.ts.map +1 -0
  174. package/dist/commands/stream/sessions.js +44 -0
  175. package/dist/commands/stream/sessions.js.map +1 -0
  176. package/dist/commands/uninstall.d.ts +23 -0
  177. package/dist/commands/uninstall.d.ts.map +1 -0
  178. package/dist/commands/uninstall.js +290 -0
  179. package/dist/commands/uninstall.js.map +1 -0
  180. package/dist/commands/update.d.ts +21 -0
  181. package/dist/commands/update.d.ts.map +1 -0
  182. package/dist/commands/update.js +290 -0
  183. package/dist/commands/update.js.map +1 -0
  184. package/dist/commands/watch.d.ts +10 -0
  185. package/dist/commands/watch.d.ts.map +1 -0
  186. package/dist/commands/watch.js +38 -0
  187. package/dist/commands/watch.js.map +1 -0
  188. package/dist/config/local-config.d.ts +22 -0
  189. package/dist/config/local-config.d.ts.map +1 -0
  190. package/dist/config/local-config.js +79 -0
  191. package/dist/config/local-config.js.map +1 -0
  192. package/dist/core-scripts/run.d.ts +22 -0
  193. package/dist/core-scripts/run.d.ts.map +1 -0
  194. package/dist/core-scripts/run.js +65 -0
  195. package/dist/core-scripts/run.js.map +1 -0
  196. package/dist/doctor/check.types.d.ts +51 -0
  197. package/dist/doctor/check.types.d.ts.map +1 -0
  198. package/dist/doctor/check.types.js +14 -0
  199. package/dist/doctor/check.types.js.map +1 -0
  200. package/dist/doctor/checks/core.check.d.ts +11 -0
  201. package/dist/doctor/checks/core.check.d.ts.map +1 -0
  202. package/dist/doctor/checks/core.check.js +104 -0
  203. package/dist/doctor/checks/core.check.js.map +1 -0
  204. package/dist/doctor/checks/data.check.d.ts +11 -0
  205. package/dist/doctor/checks/data.check.d.ts.map +1 -0
  206. package/dist/doctor/checks/data.check.js +70 -0
  207. package/dist/doctor/checks/data.check.js.map +1 -0
  208. package/dist/doctor/checks/environment.check.d.ts +6 -0
  209. package/dist/doctor/checks/environment.check.d.ts.map +1 -0
  210. package/dist/doctor/checks/environment.check.js +70 -0
  211. package/dist/doctor/checks/environment.check.js.map +1 -0
  212. package/dist/doctor/checks/integrity.check.d.ts +4 -0
  213. package/dist/doctor/checks/integrity.check.d.ts.map +1 -0
  214. package/dist/doctor/checks/integrity.check.js +89 -0
  215. package/dist/doctor/checks/integrity.check.js.map +1 -0
  216. package/dist/doctor/checks/isolation.check.d.ts +49 -0
  217. package/dist/doctor/checks/isolation.check.d.ts.map +1 -0
  218. package/dist/doctor/checks/isolation.check.js +220 -0
  219. package/dist/doctor/checks/isolation.check.js.map +1 -0
  220. package/dist/doctor/checks/licence.check.d.ts +8 -0
  221. package/dist/doctor/checks/licence.check.d.ts.map +1 -0
  222. package/dist/doctor/checks/licence.check.js +172 -0
  223. package/dist/doctor/checks/licence.check.js.map +1 -0
  224. package/dist/doctor/checks/ports.check.d.ts +4 -0
  225. package/dist/doctor/checks/ports.check.d.ts.map +1 -0
  226. package/dist/doctor/checks/ports.check.js +52 -0
  227. package/dist/doctor/checks/ports.check.js.map +1 -0
  228. package/dist/doctor/checks/supervisor.check.d.ts +19 -0
  229. package/dist/doctor/checks/supervisor.check.d.ts.map +1 -0
  230. package/dist/doctor/checks/supervisor.check.js +152 -0
  231. package/dist/doctor/checks/supervisor.check.js.map +1 -0
  232. package/dist/doctor/checks/tooling.check.d.ts +3 -0
  233. package/dist/doctor/checks/tooling.check.d.ts.map +1 -0
  234. package/dist/doctor/checks/tooling.check.js +43 -0
  235. package/dist/doctor/checks/tooling.check.js.map +1 -0
  236. package/dist/doctor/registry.d.ts +15 -0
  237. package/dist/doctor/registry.d.ts.map +1 -0
  238. package/dist/doctor/registry.js +53 -0
  239. package/dist/doctor/registry.js.map +1 -0
  240. package/dist/exit-codes.d.ts +18 -0
  241. package/dist/exit-codes.d.ts.map +1 -0
  242. package/dist/exit-codes.js +23 -0
  243. package/dist/exit-codes.js.map +1 -0
  244. package/dist/index.d.ts +2 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +16 -0
  247. package/dist/index.js.map +1 -0
  248. package/dist/logs/sink.d.ts +11 -0
  249. package/dist/logs/sink.d.ts.map +1 -0
  250. package/dist/logs/sink.js +73 -0
  251. package/dist/logs/sink.js.map +1 -0
  252. package/dist/logs/tail.d.ts +17 -0
  253. package/dist/logs/tail.d.ts.map +1 -0
  254. package/dist/logs/tail.js +98 -0
  255. package/dist/logs/tail.js.map +1 -0
  256. package/dist/packaging/boot-task.d.ts +56 -0
  257. package/dist/packaging/boot-task.d.ts.map +1 -0
  258. package/dist/packaging/boot-task.js +151 -0
  259. package/dist/packaging/boot-task.js.map +1 -0
  260. package/dist/packaging/install.d.ts +154 -0
  261. package/dist/packaging/install.d.ts.map +1 -0
  262. package/dist/packaging/install.js +381 -0
  263. package/dist/packaging/install.js.map +1 -0
  264. package/dist/packaging/layout.d.ts +153 -0
  265. package/dist/packaging/layout.d.ts.map +1 -0
  266. package/dist/packaging/layout.js +168 -0
  267. package/dist/packaging/layout.js.map +1 -0
  268. package/dist/packaging/machine-path.d.ts +52 -0
  269. package/dist/packaging/machine-path.d.ts.map +1 -0
  270. package/dist/packaging/machine-path.js +237 -0
  271. package/dist/packaging/machine-path.js.map +1 -0
  272. package/dist/packaging/manifest.d.ts +37 -0
  273. package/dist/packaging/manifest.d.ts.map +1 -0
  274. package/dist/packaging/manifest.js +115 -0
  275. package/dist/packaging/manifest.js.map +1 -0
  276. package/dist/packaging/shims.d.ts +31 -0
  277. package/dist/packaging/shims.d.ts.map +1 -0
  278. package/dist/packaging/shims.js +165 -0
  279. package/dist/packaging/shims.js.map +1 -0
  280. package/dist/probes/internal-paths.d.ts +35 -0
  281. package/dist/probes/internal-paths.d.ts.map +1 -0
  282. package/dist/probes/internal-paths.js +58 -0
  283. package/dist/probes/internal-paths.js.map +1 -0
  284. package/dist/probes/internal.client.d.ts +54 -0
  285. package/dist/probes/internal.client.d.ts.map +1 -0
  286. package/dist/probes/internal.client.js +123 -0
  287. package/dist/probes/internal.client.js.map +1 -0
  288. package/dist/probes/port.probe.d.ts +21 -0
  289. package/dist/probes/port.probe.d.ts.map +1 -0
  290. package/dist/probes/port.probe.js +42 -0
  291. package/dist/probes/port.probe.js.map +1 -0
  292. package/dist/probes/service.probe.d.ts +29 -0
  293. package/dist/probes/service.probe.d.ts.map +1 -0
  294. package/dist/probes/service.probe.js +65 -0
  295. package/dist/probes/service.probe.js.map +1 -0
  296. package/dist/profiles/appliance.profile.d.ts +20 -0
  297. package/dist/profiles/appliance.profile.d.ts.map +1 -0
  298. package/dist/profiles/appliance.profile.js +137 -0
  299. package/dist/profiles/appliance.profile.js.map +1 -0
  300. package/dist/profiles/dev.profile.d.ts +22 -0
  301. package/dist/profiles/dev.profile.d.ts.map +1 -0
  302. package/dist/profiles/dev.profile.js +104 -0
  303. package/dist/profiles/dev.profile.js.map +1 -0
  304. package/dist/profiles/resolve.d.ts +37 -0
  305. package/dist/profiles/resolve.d.ts.map +1 -0
  306. package/dist/profiles/resolve.js +198 -0
  307. package/dist/profiles/resolve.js.map +1 -0
  308. package/dist/profiles/types.d.ts +57 -0
  309. package/dist/profiles/types.d.ts.map +1 -0
  310. package/dist/profiles/types.js +15 -0
  311. package/dist/profiles/types.js.map +1 -0
  312. package/dist/registry/local-registry.d.ts +79 -0
  313. package/dist/registry/local-registry.d.ts.map +1 -0
  314. package/dist/registry/local-registry.js +252 -0
  315. package/dist/registry/local-registry.js.map +1 -0
  316. package/dist/render/banner.d.ts +13 -0
  317. package/dist/render/banner.d.ts.map +1 -0
  318. package/dist/render/banner.js +83 -0
  319. package/dist/render/banner.js.map +1 -0
  320. package/dist/render/boot.render.d.ts +123 -0
  321. package/dist/render/boot.render.d.ts.map +1 -0
  322. package/dist/render/boot.render.js +288 -0
  323. package/dist/render/boot.render.js.map +1 -0
  324. package/dist/render/brand.d.ts +16 -0
  325. package/dist/render/brand.d.ts.map +1 -0
  326. package/dist/render/brand.js +22 -0
  327. package/dist/render/brand.js.map +1 -0
  328. package/dist/render/doctor.render.d.ts +12 -0
  329. package/dist/render/doctor.render.d.ts.map +1 -0
  330. package/dist/render/doctor.render.js +95 -0
  331. package/dist/render/doctor.render.js.map +1 -0
  332. package/dist/render/json.d.ts +29 -0
  333. package/dist/render/json.d.ts.map +1 -0
  334. package/dist/render/json.js +19 -0
  335. package/dist/render/json.js.map +1 -0
  336. package/dist/render/licence.render.d.ts +10 -0
  337. package/dist/render/licence.render.d.ts.map +1 -0
  338. package/dist/render/licence.render.js +167 -0
  339. package/dist/render/licence.render.js.map +1 -0
  340. package/dist/render/status.render.d.ts +6 -0
  341. package/dist/render/status.render.d.ts.map +1 -0
  342. package/dist/render/status.render.js +52 -0
  343. package/dist/render/status.render.js.map +1 -0
  344. package/dist/render/theme.d.ts +66 -0
  345. package/dist/render/theme.d.ts.map +1 -0
  346. package/dist/render/theme.js +89 -0
  347. package/dist/render/theme.js.map +1 -0
  348. package/dist/runtime-guard.d.ts +19 -0
  349. package/dist/runtime-guard.d.ts.map +1 -0
  350. package/dist/runtime-guard.js +57 -0
  351. package/dist/runtime-guard.js.map +1 -0
  352. package/dist/shell/input-mode.d.ts +25 -0
  353. package/dist/shell/input-mode.d.ts.map +1 -0
  354. package/dist/shell/input-mode.js +17 -0
  355. package/dist/shell/input-mode.js.map +1 -0
  356. package/dist/shell/parse-line.d.ts +6 -0
  357. package/dist/shell/parse-line.d.ts.map +1 -0
  358. package/dist/shell/parse-line.js +62 -0
  359. package/dist/shell/parse-line.js.map +1 -0
  360. package/dist/shell/suggestions.d.ts +14 -0
  361. package/dist/shell/suggestions.d.ts.map +1 -0
  362. package/dist/shell/suggestions.js +35 -0
  363. package/dist/shell/suggestions.js.map +1 -0
  364. package/dist/supervisor/dependencies.d.ts +2 -0
  365. package/dist/supervisor/dependencies.d.ts.map +1 -0
  366. package/dist/supervisor/dependencies.js +38 -0
  367. package/dist/supervisor/dependencies.js.map +1 -0
  368. package/dist/supervisor/entry.d.ts +36 -0
  369. package/dist/supervisor/entry.d.ts.map +1 -0
  370. package/dist/supervisor/entry.js +171 -0
  371. package/dist/supervisor/entry.js.map +1 -0
  372. package/dist/supervisor/inspect.d.ts +17 -0
  373. package/dist/supervisor/inspect.d.ts.map +1 -0
  374. package/dist/supervisor/inspect.js +39 -0
  375. package/dist/supervisor/inspect.js.map +1 -0
  376. package/dist/supervisor/invocation.d.ts +27 -0
  377. package/dist/supervisor/invocation.d.ts.map +1 -0
  378. package/dist/supervisor/invocation.js +33 -0
  379. package/dist/supervisor/invocation.js.map +1 -0
  380. package/dist/supervisor/monitor.d.ts +63 -0
  381. package/dist/supervisor/monitor.d.ts.map +1 -0
  382. package/dist/supervisor/monitor.js +141 -0
  383. package/dist/supervisor/monitor.js.map +1 -0
  384. package/dist/supervisor/orchestrator.d.ts +52 -0
  385. package/dist/supervisor/orchestrator.d.ts.map +1 -0
  386. package/dist/supervisor/orchestrator.js +154 -0
  387. package/dist/supervisor/orchestrator.js.map +1 -0
  388. package/dist/supervisor/pidfile.d.ts +21 -0
  389. package/dist/supervisor/pidfile.d.ts.map +1 -0
  390. package/dist/supervisor/pidfile.js +39 -0
  391. package/dist/supervisor/pidfile.js.map +1 -0
  392. package/dist/supervisor/process-identity.d.ts +19 -0
  393. package/dist/supervisor/process-identity.d.ts.map +1 -0
  394. package/dist/supervisor/process-identity.js +51 -0
  395. package/dist/supervisor/process-identity.js.map +1 -0
  396. package/dist/supervisor/readiness.d.ts +17 -0
  397. package/dist/supervisor/readiness.d.ts.map +1 -0
  398. package/dist/supervisor/readiness.js +52 -0
  399. package/dist/supervisor/readiness.js.map +1 -0
  400. package/dist/supervisor/restart-consumer.d.ts +37 -0
  401. package/dist/supervisor/restart-consumer.d.ts.map +1 -0
  402. package/dist/supervisor/restart-consumer.js +119 -0
  403. package/dist/supervisor/restart-consumer.js.map +1 -0
  404. package/dist/supervisor/runner.d.ts +2 -0
  405. package/dist/supervisor/runner.d.ts.map +1 -0
  406. package/dist/supervisor/runner.js +118 -0
  407. package/dist/supervisor/runner.js.map +1 -0
  408. package/dist/supervisor/schedule-timer.d.ts +38 -0
  409. package/dist/supervisor/schedule-timer.d.ts.map +1 -0
  410. package/dist/supervisor/schedule-timer.js +148 -0
  411. package/dist/supervisor/schedule-timer.js.map +1 -0
  412. package/dist/supervisor/spawn.d.ts +18 -0
  413. package/dist/supervisor/spawn.d.ts.map +1 -0
  414. package/dist/supervisor/spawn.js +119 -0
  415. package/dist/supervisor/spawn.js.map +1 -0
  416. package/dist/supervisor/state-files.d.ts +33 -0
  417. package/dist/supervisor/state-files.d.ts.map +1 -0
  418. package/dist/supervisor/state-files.js +110 -0
  419. package/dist/supervisor/state-files.js.map +1 -0
  420. package/dist/supervisor/tree-kill.d.ts +14 -0
  421. package/dist/supervisor/tree-kill.d.ts.map +1 -0
  422. package/dist/supervisor/tree-kill.js +82 -0
  423. package/dist/supervisor/tree-kill.js.map +1 -0
  424. package/dist/ui/health-panel.d.ts +8 -0
  425. package/dist/ui/health-panel.d.ts.map +1 -0
  426. package/dist/ui/health-panel.js +91 -0
  427. package/dist/ui/health-panel.js.map +1 -0
  428. package/dist/updating/apply.d.ts +50 -0
  429. package/dist/updating/apply.d.ts.map +1 -0
  430. package/dist/updating/apply.js +172 -0
  431. package/dist/updating/apply.js.map +1 -0
  432. package/dist/updating/download.d.ts +44 -0
  433. package/dist/updating/download.d.ts.map +1 -0
  434. package/dist/updating/download.js +144 -0
  435. package/dist/updating/download.js.map +1 -0
  436. package/dist/updating/rollback.d.ts +33 -0
  437. package/dist/updating/rollback.d.ts.map +1 -0
  438. package/dist/updating/rollback.js +54 -0
  439. package/dist/updating/rollback.js.map +1 -0
  440. package/dist/updating/self.d.ts +16 -0
  441. package/dist/updating/self.d.ts.map +1 -0
  442. package/dist/updating/self.js +50 -0
  443. package/dist/updating/self.js.map +1 -0
  444. package/dist/updating/verify.d.ts +25 -0
  445. package/dist/updating/verify.d.ts.map +1 -0
  446. package/dist/updating/verify.js +51 -0
  447. package/dist/updating/verify.js.map +1 -0
  448. package/dist/updating/versions.d.ts +31 -0
  449. package/dist/updating/versions.d.ts.map +1 -0
  450. package/dist/updating/versions.js +78 -0
  451. package/dist/updating/versions.js.map +1 -0
  452. package/dist/version.d.ts +4 -0
  453. package/dist/version.d.ts.map +1 -0
  454. package/dist/version.js +29 -0
  455. package/dist/version.js.map +1 -0
  456. package/package.json +106 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../src/commands/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,iGAAiG;AACjG,iCAAiC;AACjC,kGAAkG;AAClG,oEAAoE;AAEpE,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAC,WAAW,GAAG,oCAAoC,CAAC;IAE1D,MAAM,CAAC,QAAQ,GAAG,CAAC,2BAA2B,EAAE,gCAAgC,CAAC,CAAC;IAElF,MAAM,CAAC,IAAI,GAAG;QACZ,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,2CAA2C;YACxD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;IAElB,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAErE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,OAAO,CAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/D,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE;YAC1D,IAAI;YACJ,MAAM,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBAC5B,IAAI,KAAK,KAAK,UAAU;oBAAE,OAAO,CAAC,KAAK,CAAC,YAAY,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;gBACzE,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,IAAI,GAAG,eAAe,UAAU,CAAC,KAAK,eAAe,CAAC;gBACvF,IAAI,KAAK,KAAK,MAAM;oBAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEb,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEb,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class Restore extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ file: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ "dry-run": import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ };
12
+ run(): Promise<void>;
13
+ private printPlan;
14
+ /** نفس حساب ‎archive.ts‎: عدد ملفات الهجرة على القرص. */
15
+ private currentSchemaRevision;
16
+ }
17
+ //# sourceMappingURL=restore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAmBjD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW;IAC9C,MAAM,CAAC,WAAW,SAA6E;IAE/F,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;;MAGV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0G1B,OAAO,CAAC,SAAS;IAkBjB,yDAAyD;IACzD,OAAO,CAAC,qBAAqB;CAa9B"}
@@ -0,0 +1,148 @@
1
+ import { existsSync, readdirSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { Args, Flags } from "@oclif/core";
4
+ import { confirm } from "@inquirer/prompts";
5
+ import ora from "ora";
6
+ import { BaseCommand } from "../base-command.js";
7
+ import { RestoreRefused, assertCompatible, clearWalSiblings, extractArchive, inspectArchive, planRestore, } from "../backup/restore.js";
8
+ import { buildEnvelope, renderJson } from "../render/json.js";
9
+ import { c, formatBytes, glyph, isTty } from "../render/theme.js";
10
+ import { EXIT } from "../exit-codes.js";
11
+ // AR: استعادة أرشيف. ثلاث بوّابات قبل أي كتابة: توافق المخطَّط، عرض ما سيُكتب فوقه، ثم تأكيد صريح.
12
+ // الكتابة فوق بيانات عميل ليست عملية يُستهان بها، و‎--dry-run‎ موجود ليُرى أثرها قبل وقوعها.
13
+ // EN: Restoring an archive. Three gates before any write: schema compatibility, a listing of what
14
+ // would be overwritten, then an explicit confirmation. Writing over a customer's data is not a
15
+ // casual operation, and --dry-run exists so its effect is seen before it happens.
16
+ export default class Restore extends BaseCommand {
17
+ static description = "Restore a backup archive, after showing exactly what it would overwrite";
18
+ static examples = [
19
+ "<%= config.bin %> restore backup.zip --dry-run",
20
+ "<%= config.bin %> restore backup.zip",
21
+ ];
22
+ static args = {
23
+ file: Args.string({ description: "Archive produced by fantastic backup", required: true }),
24
+ };
25
+ static flags = {
26
+ yes: Flags.boolean({ description: "Skip the confirmation prompt.", default: false }),
27
+ "dry-run": Flags.boolean({ description: "Report what would change and write nothing.", default: false }),
28
+ };
29
+ async run() {
30
+ const { args, flags } = await this.parse(Restore);
31
+ const profile = this.loadProfile(flags.profile, true, flags.product);
32
+ if (!existsSync(args.file)) {
33
+ this.log(c.bad(`No such archive: ${args.file}`));
34
+ this.exit(EXIT.FAILURE);
35
+ }
36
+ const spinner = ora({ isEnabled: isTty && !flags.json, discardStdin: false });
37
+ spinner.start("reading the archive…");
38
+ const contents = await inspectArchive(args.file).catch((error) => {
39
+ spinner.stop();
40
+ this.log(c.bad(error instanceof Error ? error.message : String(error)));
41
+ this.exit(EXIT.FAILURE);
42
+ });
43
+ spinner.stop();
44
+ if (!contents)
45
+ return;
46
+ // بوّابة ١: التوافق. **قبل** أي كتابة، فالرفض هنا مجّاني والرفض بعدها مستحيل.
47
+ try {
48
+ assertCompatible(contents.manifest, this.currentSchemaRevision(profile));
49
+ }
50
+ catch (error) {
51
+ if (!(error instanceof RestoreRefused))
52
+ throw error;
53
+ if (flags.json) {
54
+ this.log(renderJson(buildEnvelope({
55
+ command: "restore",
56
+ profile,
57
+ data: { restored: false, manifest: contents.manifest },
58
+ problems: [
59
+ {
60
+ id: "restore.incompatible",
61
+ severity: "fail",
62
+ message: error.message,
63
+ remedy: "Update Fantastic to at least the version this archive was taken from, then retry.",
64
+ },
65
+ ],
66
+ })));
67
+ this.exit(EXIT.FAILURE);
68
+ }
69
+ this.log(c.bad(error.message));
70
+ this.exit(EXIT.FAILURE);
71
+ }
72
+ const plan = planRestore(profile, contents);
73
+ const overwrites = plan.filter((entry) => entry.overwrites);
74
+ if (flags.json) {
75
+ this.log(renderJson(buildEnvelope({
76
+ command: "restore",
77
+ profile,
78
+ data: {
79
+ dryRun: flags["dry-run"],
80
+ manifest: contents.manifest,
81
+ wouldWrite: plan.length,
82
+ wouldOverwrite: overwrites.length,
83
+ files: plan.map((entry) => ({ to: entry.to, bytes: entry.bytes, overwrites: entry.overwrites })),
84
+ },
85
+ })));
86
+ if (flags["dry-run"])
87
+ return;
88
+ }
89
+ else {
90
+ this.printPlan(contents.manifest.createdAt, plan.length, overwrites);
91
+ }
92
+ if (flags["dry-run"]) {
93
+ if (!flags.json)
94
+ this.log(c.dim("dry run — nothing was written."));
95
+ return;
96
+ }
97
+ // بوّابة ٢: تأكيد صريح. ‎--yes‎ يتخطّاه للأتمتة، وغيابه يعني سؤالًا حقيقيًا.
98
+ if (!flags.yes && !flags.json) {
99
+ const proceed = await confirm({
100
+ message: `Overwrite ${overwrites.length} existing file(s) in ${profile.dataDir}?`,
101
+ default: false,
102
+ });
103
+ if (!proceed) {
104
+ this.log(c.dim("cancelled — nothing was written."));
105
+ return;
106
+ }
107
+ }
108
+ // بوّابة ٣: إزالة ملفَّي WAL المرافقَين، وإلّا خلط SQLite كتاباتٍ قديمة بقاعدة مستعادة.
109
+ clearWalSiblings(profile);
110
+ spinner.start("restoring…");
111
+ const written = await extractArchive(profile, args.file);
112
+ spinner.stop();
113
+ this.log("");
114
+ this.log(`${c.ok(glyph.pass)} Restored ${written} file(s).`);
115
+ this.log(c.dim(" Start the system: fantastic start · then verify: fantastic doctor"));
116
+ this.log("");
117
+ }
118
+ printPlan(createdAt, total, overwrites) {
119
+ this.log("");
120
+ this.log(`${c.dim("archive taken:")} ${c.value(createdAt)}`);
121
+ this.log(`${c.dim("files to write:")} ${total}`);
122
+ if (overwrites.length === 0) {
123
+ this.log(c.ok("nothing existing would be overwritten."));
124
+ return;
125
+ }
126
+ this.log(c.warn(`${overwrites.length} existing file(s) would be overwritten:`));
127
+ for (const entry of overwrites.slice(0, 12)) {
128
+ this.log(` ${c.dim("•")} ${entry.to} ${c.dim(formatBytes(entry.bytes))}`);
129
+ }
130
+ if (overwrites.length > 12)
131
+ this.log(c.dim(` … and ${overwrites.length - 12} more`));
132
+ this.log("");
133
+ }
134
+ /** نفس حساب ‎archive.ts‎: عدد ملفات الهجرة على القرص. */
135
+ currentSchemaRevision(profile) {
136
+ const candidates = [
137
+ join(profile.root, "apps", "core", "dist", "db", "migrations"),
138
+ join(profile.root, "core", "db", "migrations"),
139
+ ];
140
+ for (const dir of candidates) {
141
+ if (!existsSync(dir))
142
+ continue;
143
+ return readdirSync(dir).filter((entry) => entry.endsWith(".sql")).length;
144
+ }
145
+ return 0;
146
+ }
147
+ }
148
+ //# sourceMappingURL=restore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class SelfUpdate extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ check: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=self-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-update.d.ts","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAwBjD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,SAAqD;IAEvE,MAAM,CAAC,QAAQ,WAA8E;IAE7F,MAAM,CAAC,KAAK;;MAEV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA4E3B"}
@@ -0,0 +1,98 @@
1
+ import { execa } from "execa";
2
+ import { Flags } from "@oclif/core";
3
+ import ora from "ora";
4
+ import { BaseCommand } from "../base-command.js";
5
+ import { VERSION } from "../version.js";
6
+ import { latestPublished, PACKAGE_NAME } from "../updating/self.js";
7
+ import { buildEnvelope, renderJson } from "../render/json.js";
8
+ import { c, glyph, isTty } from "../render/theme.js";
9
+ import { EXIT } from "../exit-codes.js";
10
+ // AR: تحديث الواجهة نفسها — **وهذا هو سبب الميزة ٠٢٦ كلّها** (US4).
11
+ //
12
+ // قبل الفصل كانت الواجهة تُشحن داخل الحزمة، فإصلاح سطرٍ فيها يكلّف: بناء حزمةٍ كاملة، ورفعها،
13
+ // وتنزيل ‎150‎ ميغابايت عند العميل، وإعادة تثبيتٍ توقف الخدمات. أي أن عطلًا في رسالةٍ يُصلَح
14
+ // بإعادة تركيب النظام.
15
+ //
16
+ // وصار: أمرٌ واحد، ولا يتوقّف نظامٌ يعمل، ولا يتغيّر إصداره. **ولا يمسّ هذا الأمر أيّ تثبيت**
17
+ // — يحدّث الحزمة العالمية وحدها.
18
+ // EN: Updating the CLI itself — **and this is the whole reason for feature 026** (US4).
19
+ //
20
+ // Before the separation the CLI shipped inside the bundle, so fixing one line in it cost: a full
21
+ // bundle build, an upload, a 150 MB download at the customer's site, and a reinstall that stopped
22
+ // the services. A fault in a message was repaired by reinstalling the system.
23
+ //
24
+ // Now: one command, with no running system stopped and no installed version changed. **This
25
+ // command touches no installation** — it updates the global package alone.
26
+ export default class SelfUpdate extends BaseCommand {
27
+ static description = "Update this CLI to the newest published version";
28
+ static examples = ["<%= config.bin %> self-update", "<%= config.bin %> self-update --check"];
29
+ static flags = {
30
+ check: Flags.boolean({ description: "Report only; change nothing.", default: false }),
31
+ };
32
+ async run() {
33
+ const { flags } = await this.parse(SelfUpdate);
34
+ const spinner = ora({ isEnabled: isTty && !flags.json, discardStdin: false });
35
+ spinner.start("asking the registry…");
36
+ const latest = await latestPublished();
37
+ spinner.stop();
38
+ if (!latest) {
39
+ if (flags.json) {
40
+ this.log(renderJson(buildEnvelope({ command: "self-update", data: { current: VERSION, latest: null } })));
41
+ return;
42
+ }
43
+ this.log("");
44
+ this.log(c.warn("تعذّر سؤال السِّجلّ عن أحدث إصدار."));
45
+ this.log(c.dim(" السبب شبكيّ. الواجهة الحالية تعمل كما هي، ولا شيء تغيّر."));
46
+ this.log("");
47
+ return;
48
+ }
49
+ const behind = latest.newer;
50
+ if (flags.json) {
51
+ this.log(renderJson(buildEnvelope({ command: "self-update", data: { current: VERSION, latest: latest.version, behind } })));
52
+ if (flags.check || !behind)
53
+ return;
54
+ }
55
+ else {
56
+ this.log("");
57
+ this.log(`${c.dim("installed")} ${c.value(VERSION)} ${c.dim("published")} ${c.value(latest.version)}`);
58
+ if (!behind) {
59
+ this.log(c.ok(` ${glyph.pass} أحدث إصدار مثبَّت.`));
60
+ this.log("");
61
+ return;
62
+ }
63
+ if (flags.check) {
64
+ this.log(`${c.accent(glyph.arrow)} حدّثها: fantastic self-update`);
65
+ this.log("");
66
+ return;
67
+ }
68
+ }
69
+ // AR: **يُنادى مدير الحزم ولا يُعاد تنفيذ ما يفعله.** تنزيل الحزمة وفكّها وربط الأمر عمله هو،
70
+ // ونسخةٌ منه هنا تعني مثبِّتًا ثانيًا ينحرف عن الأول في أول اختلاف صلاحيات أو وسيط.
71
+ //
72
+ // و‎stdio: "inherit"‎ عن قصد: مخرجات ‎npm‎ هي ما يقرؤه الفنّي حين يفشل التثبيت لصلاحيات
73
+ // ناقصة، وابتلاعها يترك «فشل» بلا سبب.
74
+ // EN: **The package manager is called rather than reimplemented.** Downloading, unpacking and
75
+ // linking the command is its job, and a copy of that here means a second installer that
76
+ // diverges from the first at the first difference in permissions or arguments.
77
+ //
78
+ // And `stdio: "inherit"` on purpose: npm's output is what the technician reads when the
79
+ // install fails for want of rights, and swallowing it leaves "failed" with no cause.
80
+ this.log("");
81
+ this.log(c.dim(` npm i -g ${PACKAGE_NAME}@latest`));
82
+ this.log("");
83
+ try {
84
+ await execa("npm", ["install", "-g", `${PACKAGE_NAME}@latest`], { stdio: "inherit", shell: true });
85
+ }
86
+ catch {
87
+ this.log("");
88
+ this.log(c.bad("تعذّر تحديث الواجهة."));
89
+ this.log(c.dim(" جرّب طرفيةً بصلاحيات مسؤول، أو نفّذ الأمر أعلاه بيدك."));
90
+ this.log("");
91
+ this.exit(EXIT.FAILURE);
92
+ }
93
+ this.log("");
94
+ this.log(c.ok(` ${glyph.pass} حُدِّثت إلى ${latest.version}. افتح طرفيةً جديدة.`));
95
+ this.log("");
96
+ }
97
+ }
98
+ //# sourceMappingURL=self-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/commands/self-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class Setup extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ "skip-deps": import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ };
9
+ run(): Promise<void>;
10
+ /**
11
+ * يعرض بيانات المالك إن طبعتها النواة في هذا الإقلاع.
12
+ *
13
+ * **الصياغة هنا مقصودة.** كلمة المرور افتراضية **موثّقة وثابتة** في ‎apps/core/src/db/seed.ts‎،
14
+ * لا سرًّا يُولَّد مرّة. كانت عشوائية وغُيّرت عمدًا لأن جهازًا بلا إنترنت ولا استعادة كلمة مرور
15
+ * لا يحتمل سرًّا يُعرض مرّة واحدة. فنقول «افتراضية — غيّرها» لا «احفظها الآن ولن تراها ثانيةً».
16
+ */
17
+ private showOwnerCredentials;
18
+ }
19
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAuBjD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,SAA6E;IAE/F,MAAM,CAAC,QAAQ,WAA4E;IAE3F,MAAM,CAAC,KAAK;;;MAGV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD1B;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;CAuB7B"}
@@ -0,0 +1,111 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { Flags } from "@oclif/core";
4
+ import boxen from "boxen";
5
+ import ora from "ora";
6
+ import { BaseCommand } from "../base-command.js";
7
+ import { runCoreScript, extractOwnerCredentials } from "../core-scripts/run.js";
8
+ import { startServices } from "../supervisor/orchestrator.js";
9
+ import { readTail } from "../logs/tail.js";
10
+ import { renderBrand } from "../render/brand.js";
11
+ import { renderUrls } from "../render/boot.render.js";
12
+ import { c, glyph, isTty } from "../render/theme.js";
13
+ import { EXIT } from "../exit-codes.js";
14
+ // AR: أول تشغيل. يأخذ نظامًا غير مهيّأ إلى نظامٍ يمكن الدخول إليه، بأمر واحد ومن أي مجلد.
15
+ //
16
+ // **ترتيب الخطوات ليس اعتباطيًا.** الهجرات **قبل** إقلاع أي خدمة، وهذا يعالج عطلًا مسجَّلًا في
17
+ // ‎specs/009-cli-orchestrator/tasks.md‎ (الاكتشاف الأخير): ترتيب الإقلاع هو live ← core، والنواة
18
+ // هي من تُنشئ ‎fantastic.db‎، فعلى أول تشغيل تجد خدمةُ البث الفهرسَ غائبًا وتُحذّر. تشغيل
19
+ // الهجرات أولًا يُنشئ الملف فلا تظهر تلك الحالة أصلًا.
20
+ // EN: First run. Takes an unprepared system to one that can be logged into, in one command from any
21
+ // directory.
22
+ //
23
+ // **The order is not arbitrary.** Migrations run **before** any service starts, which fixes a
24
+ // defect recorded in specs/009-cli-orchestrator/tasks.md: boot order is live → core and the core
25
+ // is what creates fantastic.db, so on a first-ever run the live service finds the index missing
26
+ // and warns. Migrating first creates the file, so that state never arises.
27
+ export default class Setup extends BaseCommand {
28
+ static description = "Prepare an unconfigured system: dependencies, migrations, then start it";
29
+ static examples = ["<%= config.bin %> setup", "<%= config.bin %> setup --yes --skip-deps"];
30
+ static flags = {
31
+ yes: Flags.boolean({ description: "Do not ask for confirmation.", default: false }),
32
+ "skip-deps": Flags.boolean({ description: "Skip the dependency install step.", default: false }),
33
+ };
34
+ async run() {
35
+ const { flags } = await this.parse(Setup);
36
+ const profile = this.loadProfile(flags.profile, true, flags.product);
37
+ const brand = renderBrand({ profile: profile.kind, root: profile.root });
38
+ if (brand)
39
+ this.log(brand);
40
+ const spinner = ora({ isEnabled: isTty, discardStdin: false });
41
+ // ١ — الاعتماديات. في الجهاز المركّب هي داخل الحزمة أصلًا فلا خطوة هنا.
42
+ if (!flags["skip-deps"] && profile.kind === "dev") {
43
+ const installed = existsSync(join(profile.root, "node_modules"));
44
+ if (!installed) {
45
+ this.log(c.bad("Dependencies are not installed."));
46
+ this.log(` ${c.accent(glyph.arrow)} Run "npm install" at ${profile.root}, then run setup again.`);
47
+ this.exit(EXIT.FAILURE);
48
+ }
49
+ this.log(` ${c.ok(glyph.pass)} Dependencies present`);
50
+ }
51
+ // ٢ — الهجرات، قبل أي خدمة.
52
+ spinner.start("applying migrations…");
53
+ const migrated = await runCoreScript(profile, "db:migrate");
54
+ spinner.stop();
55
+ if (!migrated.ok) {
56
+ this.log(` ${c.bad(glyph.fail)} Migrations failed`);
57
+ this.log(migrated.output.split("\n").slice(-15).join("\n"));
58
+ this.exit(EXIT.FAILURE);
59
+ }
60
+ this.log(` ${c.ok(glyph.pass)} Migrations applied`);
61
+ // ٣ — الإقلاع. النواة هي من تزرع حساب المالك عند أول إقلاع، فالبذر يحدث هنا لا في خطوة مستقلّة.
62
+ spinner.start("starting services…");
63
+ const outcome = await startServices(profile, {
64
+ onStep: (definition, phase) => {
65
+ if (phase === "starting")
66
+ spinner.text = `starting ${definition.label}…`;
67
+ if (phase === "waiting")
68
+ spinner.text = `waiting for ${definition.label}…`;
69
+ },
70
+ });
71
+ spinner.stop();
72
+ if (!outcome.ok) {
73
+ this.log(` ${c.bad(glyph.fail)} The system did not start. Run: fantastic doctor`);
74
+ this.exit(EXIT.FAILURE);
75
+ }
76
+ this.log(` ${c.ok(glyph.pass)} Services started`);
77
+ this.showOwnerCredentials(profile.logDir);
78
+ this.log(renderUrls(profile));
79
+ this.log("");
80
+ this.log(c.dim("check anything: fantastic doctor · live view: fantastic health"));
81
+ this.log("");
82
+ }
83
+ /**
84
+ * يعرض بيانات المالك إن طبعتها النواة في هذا الإقلاع.
85
+ *
86
+ * **الصياغة هنا مقصودة.** كلمة المرور افتراضية **موثّقة وثابتة** في ‎apps/core/src/db/seed.ts‎،
87
+ * لا سرًّا يُولَّد مرّة. كانت عشوائية وغُيّرت عمدًا لأن جهازًا بلا إنترنت ولا استعادة كلمة مرور
88
+ * لا يحتمل سرًّا يُعرض مرّة واحدة. فنقول «افتراضية — غيّرها» لا «احفظها الآن ولن تراها ثانيةً».
89
+ */
90
+ showOwnerCredentials(logDir) {
91
+ const recent = readTail(logDir, "core", 200).join("\n");
92
+ const credentials = extractOwnerCredentials(recent);
93
+ if (!credentials) {
94
+ this.log("");
95
+ this.log(c.dim(" An owner account already exists; no new credentials were created."));
96
+ this.log(c.dim(" Forgotten the password? Run: fantastic owner reset"));
97
+ return;
98
+ }
99
+ const body = [
100
+ c.label("OWNER ACCOUNT — DEFAULT CREDENTIALS, CHANGE THEM"),
101
+ "",
102
+ ` user ${c.value(credentials.username)}`,
103
+ ` password ${c.accent(credentials.password)}`,
104
+ "",
105
+ c.dim(" Change it from the admin panel. Lost it? fantastic owner reset"),
106
+ ].join("\n");
107
+ this.log("");
108
+ this.log(boxen(body, { padding: 1, borderStyle: "double", borderColor: "yellow" }));
109
+ }
110
+ }
111
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ import { BaseCommand } from "../base-command.js";
2
+ export default class Shell extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static help: string;
6
+ static flags: {};
7
+ run(): Promise<void>;
8
+ private loop;
9
+ /** عدد أسطر اللوحة المرسومة الآن، لتُمحى قبل رسم غيرها. */
10
+ private panelRows;
11
+ /** ما تعرضه اللوحة الآن. مصفوفة فارغة تعني: لا لوحة، فالأسهم للتاريخ. */
12
+ private matches;
13
+ /** المُظلَّل، أو ‎-1‎ حين لم يتنقّل المستخدم بعد — وعندها ‎Enter‎ يُرسل ما كُتب لا ما هو معروض. */
14
+ private selected;
15
+ private keypressHandler?;
16
+ /**
17
+ * AR: يجعل الصَدَفة **المُستمِع الوحيد** للمفاتيح، وتمرّر هي ما يخصّ ‎readline‎ إليه.
18
+ *
19
+ * الترتيب هو كل شيء: ‎readline‎ يسجّل مُستمِعه عند إنشاء الواجهة، وكل مُستمِع يُضاف بعده يعمل
20
+ * **بعده** — فلا يستطيع منعه من التصرّف. ولهذا كان سهم واحد يحرّك التظليل ويستبدل السطر بأمرٍ
21
+ * من التاريخ معًا. نأخذ مُستمِعيه ونحتفظ بهم، ونصير نحن الوحيدين، فنقرّر: ما يخصّ اللوحة يُبتلَع،
22
+ * وما عداه يُمرَّر كما هو فلا يفقد ‎readline‎ حرفًا ولا مفتاح تحرير.
23
+ *
24
+ * وإن لم نجد مُستمِعًا لنمسكه — تغيّرت بنية ‎readline‎ يومًا — **نتراجع إلى السلوك القديم** بلا
25
+ * تنقّل بدل أن نكسر المُدخَل كلّه: صَدَفةٌ بلا أسهم تعمل، وصَدَفةٌ لا تستقبل حرفًا لا تعمل.
26
+ * EN: Makes the shell the **only** keypress listener, forwarding to readline what belongs to it.
27
+ *
28
+ * Order is everything: readline registers its listener when the interface is created, and every
29
+ * listener added afterwards runs **after** it — and so cannot stop it acting. That is why one
30
+ * arrow both moved the highlight and replaced the line with a history entry. We take its
31
+ * listeners and keep them, become the only ones, and decide: what belongs to the panel is
32
+ * swallowed, everything else is forwarded untouched, so readline loses no character and no
33
+ * editing key.
34
+ *
35
+ * And if there is no listener to capture — readline's internals changed one day — we **fall
36
+ * back to the old behaviour** without navigation rather than break input entirely: a shell
37
+ * without arrows works, a shell that receives no characters does not.
38
+ */
39
+ private installKeyInterceptor;
40
+ /** انظر ‎shell/input-mode.ts‎: القاعدة كلها هناك ومعها سببها المقيس. */
41
+ private restoreInput;
42
+ /** يمنع فتح قائمتين حين تصل ضغطة أثناء فتح الأولى. */
43
+ private menuOpen;
44
+ private hintsCache;
45
+ /**
46
+ * وصف كل أمر بسطر. يُبنى مرّة: شجرة الأوامر لا تتغيّر داخل الجلسة، وإعادة بنائها مع كل ضغطة مفتاح
47
+ * تعني عملًا في المسار الذي يجب أن يبقى فوريًّا.
48
+ */
49
+ private hints;
50
+ /**
51
+ * AR: هل تخصّ هذه الضغطة اللوحة وحدها؟ **‎true‎ تعني: لا تُمرَّر إلى ‎readline‎.**
52
+ *
53
+ * هنا كانت المشكلة كلها. مُستمِع ‎readline‎ يُسجَّل قبل مُستمِعنا، فسهمٌ واحد كان يحرّك الاختيار
54
+ * **ويستبدل السطر بأمرٍ قديم من التاريخ** في آن. ولذلك صرنا المُستمِع الوحيد المُسجَّل
55
+ * (‎installKeyInterceptor‎)، ونمرّر نحن ما يخصّه — فيصير للأسهم معنى واحد لا يتنازعه اثنان:
56
+ * تنقّلٌ ما دامت اللوحة مفتوحة، وتاريخٌ حين تكون مغلقة.
57
+ * EN: Does this key belong to the panel alone? **`true` means: do not forward it to readline.**
58
+ *
59
+ * This was the whole problem. Readline's listener is registered before ours, so a single arrow
60
+ * moved the highlight **and replaced the line with a history entry** at the same time. Hence we
61
+ * became the only registered listener (`installKeyInterceptor`) and forward what belongs to it —
62
+ * giving the arrows one meaning nobody contests: navigation while the panel is open, history
63
+ * when it is closed.
64
+ */
65
+ private interceptPanelKey;
66
+ private onKeypress;
67
+ /**
68
+ * يرسم الاقتراحات أسفل سطر الكتابة ثم يعيد المؤشّر إلى موضعه فيه.
69
+ *
70
+ * تُعرَض للكلمة الأولى وحدها: بعد أوّل مسافة صار المكتوب وسائط وأعلامًا، ولا نملك قائمة قيم لها —
71
+ * واقتراحُ أسماء أوامر بعد ‎status ‎ إزعاجٌ لا مساعدة.
72
+ */
73
+ private drawPanel;
74
+ /** يمحو اللوحة ويُسقط التظليل، ويعيد المؤشّر إلى سطر الكتابة. */
75
+ private clearPanel;
76
+ /**
77
+ * القائمة الكاملة: يُكتَب ‎/‎ على سطر فارغ فتُفتح قائمة تُرشَّح بالكتابة وتُتنقّل بالأسهم — نفس فكرة
78
+ * ‎claude code‎.
79
+ *
80
+ * **ولماذا قائمة منفصلة لا أسهم على اللوحة أعلاه**: الأسهم في ‎readline‎ محجوزة للتاريخ، ومُستمِعنا
81
+ * يعمل **بعد** مُستمِعها فلا يستطيع ابتلاع الضغطة — أي أن سهمًا واحدًا كان سيحرّك الاختيار ويستبدل
82
+ * السطر بأمرٍ قديم في آن. الفصل يعطي كلَّ مفتاح معنًى واحدًا لا يتنازعه اثنان.
83
+ *
84
+ * والمختار **يُملأ في السطر ولا يُنفَّذ**: أوامر مثل ‎live test <source>‎ تلزمها وسائط، وتشغيلها
85
+ * فور الاختيار كان يردّ خطأ استخدام على اختيار سليم. تملأ السطر فيُكمِل المستخدم أو يضغط ‎Enter‎.
86
+ */
87
+ private openMenu;
88
+ /** يعيد ‎true‎ حين يطلب السطر إنهاء الجلسة. */
89
+ private handleLine;
90
+ /**
91
+ * ينفّذ أمر oclif داخل هذه العملية.
92
+ *
93
+ * ‎rl.pause()‎ حول التنفيذ ضرورة لا تحسين: أوامر مثل ‎setup‎ و‎owner‎ تفتح مِحَثّاتها الخاصة على
94
+ * ‎stdin‎، ومِحَثّان يقرآن نفس المُدخَل يبتلع أحدهما ضغطات الآخر فتضيع الإجابة أو تُقرأ مرّتين.
95
+ */
96
+ private runCommand;
97
+ /**
98
+ * يحوّل ما كُتب إلى معرّف أمر عند oclif.
99
+ *
100
+ * **أمر الموضوع كلمتان عند المستخدم ومعرّف واحد عند oclif**: ‎stream queue‎ هو ‎stream:queue‎، وتمريرُ
101
+ * الكلمة الأولى وحدها كان يبحث عن أمر اسمه ‎stream‎ — وهو موضوع لا أمر — فيردّ «غير موجود» على أمر
102
+ * موجود. يُجرَّب الأطول أوّلًا فلا يحجب موضوعٌ أمرًا يشاركه اسمه.
103
+ */
104
+ private resolveCommandId;
105
+ /**
106
+ * يعرض فشل أمر **ولا يُخرِج**. رمز الخروج يُذكر حين لا يكون صفرًا لأنه معلومة يعرفها المستخدم من
107
+ * السطر العادي، وإخفاؤه هنا يجعل السلوكين مختلفين بلا سبب.
108
+ *
109
+ * **و‎ExitError‎ ليست خطأً برسالة.** أمرٌ خرج برمز غير صفري عن قصد — ‎status‎ حين تكون كل الخدمات
110
+ * متوقّفة مثلًا — يرميها من داخل ‎runCommand‎ ورسالتها نصّ ‎oclif‎ الداخلي «‎EEXIT: 1‎». طباعتها
111
+ * تضع سطرًا أحمر بلا معنى تحت جدول اكتمل بنجاح. الرمز وحده هو المعلومة هنا؛ الأمر قال قوله سلفًا.
112
+ */
113
+ private reportFailure;
114
+ private hintLine;
115
+ /** إكمال بالمفتاح ‎Tab‎ على الكلمة الأولى وحدها: ما بعدها وسائط لا نعرف قيمها. */
116
+ private complete;
117
+ }
118
+ //# sourceMappingURL=shell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/commands/shell.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAC;AAgEjE,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW;IAC5C,MAAM,CAAC,WAAW,SAA6F;IAE/G,MAAM,CAAC,QAAQ,WAAoD;IAEnE,MAAM,CAAC,IAAI,SAAkB;IAE7B,MAAM,CAAC,KAAK,KAAM;IAEZ,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA+BZ,IAAI;IAuClB,2DAA2D;IAC3D,OAAO,CAAC,SAAS,CAAK;IAEtB,yEAAyE;IACzE,OAAO,CAAC,OAAO,CAAqB;IAEpC,mGAAmG;IACnG,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,eAAe,CAAC,CAAyC;IAEjE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,qBAAqB;IAkB7B,wEAAwE;IACxE,OAAO,CAAC,YAAY;IAKpB,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,UAAU,CAA8B;IAEhD;;;OAGG;IACH,OAAO,CAAC,KAAK;IAab;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,UAAU;IAmBlB;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAwCjB,iEAAiE;IACjE,OAAO,CAAC,UAAU;IAclB;;;;;;;;;;OAUG;YACW,QAAQ;IAiCtB,+CAA+C;YACjC,UAAU;IAiCxB;;;;;OAKG;YACW,UAAU;IAaxB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,QAAQ;IAOhB,kFAAkF;IAClF,OAAO,CAAC,QAAQ;CAYjB"}