@cicore/cli 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 (337) hide show
  1. package/bin/ci.js +13 -0
  2. package/dist/commands/addon/api-actions.d.ts +45 -0
  3. package/dist/commands/addon/api-actions.d.ts.map +1 -0
  4. package/dist/commands/addon/api-actions.js +281 -0
  5. package/dist/commands/addon/api-actions.js.map +1 -0
  6. package/dist/commands/addon/build.d.ts +11 -0
  7. package/dist/commands/addon/build.d.ts.map +1 -0
  8. package/dist/commands/addon/build.js +182 -0
  9. package/dist/commands/addon/build.js.map +1 -0
  10. package/dist/commands/addon/create.d.ts +11 -0
  11. package/dist/commands/addon/create.d.ts.map +1 -0
  12. package/dist/commands/addon/create.js +1186 -0
  13. package/dist/commands/addon/create.js.map +1 -0
  14. package/dist/commands/addon/delete.d.ts +13 -0
  15. package/dist/commands/addon/delete.d.ts.map +1 -0
  16. package/dist/commands/addon/delete.js +83 -0
  17. package/dist/commands/addon/delete.js.map +1 -0
  18. package/dist/commands/addon/deploy.d.ts +27 -0
  19. package/dist/commands/addon/deploy.d.ts.map +1 -0
  20. package/dist/commands/addon/deploy.js +459 -0
  21. package/dist/commands/addon/deploy.js.map +1 -0
  22. package/dist/commands/addon/dev-deploy.d.ts +31 -0
  23. package/dist/commands/addon/dev-deploy.d.ts.map +1 -0
  24. package/dist/commands/addon/dev-deploy.js +128 -0
  25. package/dist/commands/addon/dev-deploy.js.map +1 -0
  26. package/dist/commands/addon/dev.d.ts +36 -0
  27. package/dist/commands/addon/dev.d.ts.map +1 -0
  28. package/dist/commands/addon/dev.js +323 -0
  29. package/dist/commands/addon/dev.js.map +1 -0
  30. package/dist/commands/addon/extract-classes.d.ts +23 -0
  31. package/dist/commands/addon/extract-classes.d.ts.map +1 -0
  32. package/dist/commands/addon/extract-classes.js +281 -0
  33. package/dist/commands/addon/extract-classes.js.map +1 -0
  34. package/dist/commands/addon/generate-safelist.d.ts +24 -0
  35. package/dist/commands/addon/generate-safelist.d.ts.map +1 -0
  36. package/dist/commands/addon/generate-safelist.js +276 -0
  37. package/dist/commands/addon/generate-safelist.js.map +1 -0
  38. package/dist/commands/addon/index.d.ts +19 -0
  39. package/dist/commands/addon/index.d.ts.map +1 -0
  40. package/dist/commands/addon/index.js +296 -0
  41. package/dist/commands/addon/index.js.map +1 -0
  42. package/dist/commands/addon/init-repo.d.ts +25 -0
  43. package/dist/commands/addon/init-repo.d.ts.map +1 -0
  44. package/dist/commands/addon/init-repo.js +171 -0
  45. package/dist/commands/addon/init-repo.js.map +1 -0
  46. package/dist/commands/addon/install.d.ts +23 -0
  47. package/dist/commands/addon/install.d.ts.map +1 -0
  48. package/dist/commands/addon/install.js +84 -0
  49. package/dist/commands/addon/install.js.map +1 -0
  50. package/dist/commands/addon/list.d.ts +10 -0
  51. package/dist/commands/addon/list.d.ts.map +1 -0
  52. package/dist/commands/addon/list.js +102 -0
  53. package/dist/commands/addon/list.js.map +1 -0
  54. package/dist/commands/addon/manifest-refresh.d.ts +17 -0
  55. package/dist/commands/addon/manifest-refresh.d.ts.map +1 -0
  56. package/dist/commands/addon/manifest-refresh.js +48 -0
  57. package/dist/commands/addon/manifest-refresh.js.map +1 -0
  58. package/dist/commands/addon/migrate.d.ts +40 -0
  59. package/dist/commands/addon/migrate.d.ts.map +1 -0
  60. package/dist/commands/addon/migrate.js +236 -0
  61. package/dist/commands/addon/migrate.js.map +1 -0
  62. package/dist/commands/addon/publish.d.ts +33 -0
  63. package/dist/commands/addon/publish.d.ts.map +1 -0
  64. package/dist/commands/addon/publish.js +236 -0
  65. package/dist/commands/addon/publish.js.map +1 -0
  66. package/dist/commands/addon/scaffold-quality.d.ts +21 -0
  67. package/dist/commands/addon/scaffold-quality.d.ts.map +1 -0
  68. package/dist/commands/addon/scaffold-quality.js +90 -0
  69. package/dist/commands/addon/scaffold-quality.js.map +1 -0
  70. package/dist/commands/addon/sign.d.ts +9 -0
  71. package/dist/commands/addon/sign.d.ts.map +1 -0
  72. package/dist/commands/addon/sign.js +83 -0
  73. package/dist/commands/addon/sign.js.map +1 -0
  74. package/dist/commands/addon/toggle.d.ts +6 -0
  75. package/dist/commands/addon/toggle.d.ts.map +1 -0
  76. package/dist/commands/addon/toggle.js +46 -0
  77. package/dist/commands/addon/toggle.js.map +1 -0
  78. package/dist/commands/agent/index.d.ts +34 -0
  79. package/dist/commands/agent/index.d.ts.map +1 -0
  80. package/dist/commands/agent/index.js +564 -0
  81. package/dist/commands/agent/index.js.map +1 -0
  82. package/dist/commands/brand/index.d.ts +54 -0
  83. package/dist/commands/brand/index.d.ts.map +1 -0
  84. package/dist/commands/brand/index.js +367 -0
  85. package/dist/commands/brand/index.js.map +1 -0
  86. package/dist/commands/build/index.d.ts +53 -0
  87. package/dist/commands/build/index.d.ts.map +1 -0
  88. package/dist/commands/build/index.js +726 -0
  89. package/dist/commands/build/index.js.map +1 -0
  90. package/dist/commands/cache/flush-local.d.ts +31 -0
  91. package/dist/commands/cache/flush-local.d.ts.map +1 -0
  92. package/dist/commands/cache/flush-local.js +161 -0
  93. package/dist/commands/cache/flush-local.js.map +1 -0
  94. package/dist/commands/cache/index.d.ts +14 -0
  95. package/dist/commands/cache/index.d.ts.map +1 -0
  96. package/dist/commands/cache/index.js +453 -0
  97. package/dist/commands/cache/index.js.map +1 -0
  98. package/dist/commands/check/index.d.ts +8 -0
  99. package/dist/commands/check/index.d.ts.map +1 -0
  100. package/dist/commands/check/index.js +1316 -0
  101. package/dist/commands/check/index.js.map +1 -0
  102. package/dist/commands/cloudflare/index.d.ts +8 -0
  103. package/dist/commands/cloudflare/index.d.ts.map +1 -0
  104. package/dist/commands/cloudflare/index.js +453 -0
  105. package/dist/commands/cloudflare/index.js.map +1 -0
  106. package/dist/commands/core/create.d.ts +12 -0
  107. package/dist/commands/core/create.d.ts.map +1 -0
  108. package/dist/commands/core/create.js +206 -0
  109. package/dist/commands/core/create.js.map +1 -0
  110. package/dist/commands/core/delete.d.ts +11 -0
  111. package/dist/commands/core/delete.d.ts.map +1 -0
  112. package/dist/commands/core/delete.js +64 -0
  113. package/dist/commands/core/delete.js.map +1 -0
  114. package/dist/commands/core/env.d.ts +12 -0
  115. package/dist/commands/core/env.d.ts.map +1 -0
  116. package/dist/commands/core/env.js +95 -0
  117. package/dist/commands/core/env.js.map +1 -0
  118. package/dist/commands/core/health.d.ts +6 -0
  119. package/dist/commands/core/health.d.ts.map +1 -0
  120. package/dist/commands/core/health.js +215 -0
  121. package/dist/commands/core/health.js.map +1 -0
  122. package/dist/commands/core/index.d.ts +15 -0
  123. package/dist/commands/core/index.d.ts.map +1 -0
  124. package/dist/commands/core/index.js +86 -0
  125. package/dist/commands/core/index.js.map +1 -0
  126. package/dist/commands/core/list.d.ts +11 -0
  127. package/dist/commands/core/list.d.ts.map +1 -0
  128. package/dist/commands/core/list.js +58 -0
  129. package/dist/commands/core/list.js.map +1 -0
  130. package/dist/commands/core/rebuild.d.ts +13 -0
  131. package/dist/commands/core/rebuild.d.ts.map +1 -0
  132. package/dist/commands/core/rebuild.js +119 -0
  133. package/dist/commands/core/rebuild.js.map +1 -0
  134. package/dist/commands/db/index.d.ts +23 -0
  135. package/dist/commands/db/index.d.ts.map +1 -0
  136. package/dist/commands/db/index.js +355 -0
  137. package/dist/commands/db/index.js.map +1 -0
  138. package/dist/commands/db/promote-silo.d.ts +320 -0
  139. package/dist/commands/db/promote-silo.d.ts.map +1 -0
  140. package/dist/commands/db/promote-silo.js +930 -0
  141. package/dist/commands/db/promote-silo.js.map +1 -0
  142. package/dist/commands/db/relocate.d.ts +41 -0
  143. package/dist/commands/db/relocate.d.ts.map +1 -0
  144. package/dist/commands/db/relocate.js +482 -0
  145. package/dist/commands/db/relocate.js.map +1 -0
  146. package/dist/commands/db/rollback-silo.d.ts +44 -0
  147. package/dist/commands/db/rollback-silo.d.ts.map +1 -0
  148. package/dist/commands/db/rollback-silo.js +402 -0
  149. package/dist/commands/db/rollback-silo.js.map +1 -0
  150. package/dist/commands/deploy/index.d.ts +26 -0
  151. package/dist/commands/deploy/index.d.ts.map +1 -0
  152. package/dist/commands/deploy/index.js +107 -0
  153. package/dist/commands/deploy/index.js.map +1 -0
  154. package/dist/commands/devops/index.d.ts +6 -0
  155. package/dist/commands/devops/index.d.ts.map +1 -0
  156. package/dist/commands/devops/index.js +220 -0
  157. package/dist/commands/devops/index.js.map +1 -0
  158. package/dist/commands/domain/index.d.ts +8 -0
  159. package/dist/commands/domain/index.d.ts.map +1 -0
  160. package/dist/commands/domain/index.js +386 -0
  161. package/dist/commands/domain/index.js.map +1 -0
  162. package/dist/commands/image/index.d.ts +8 -0
  163. package/dist/commands/image/index.d.ts.map +1 -0
  164. package/dist/commands/image/index.js +308 -0
  165. package/dist/commands/image/index.js.map +1 -0
  166. package/dist/commands/install/factory-reset.d.ts +21 -0
  167. package/dist/commands/install/factory-reset.d.ts.map +1 -0
  168. package/dist/commands/install/factory-reset.js +83 -0
  169. package/dist/commands/install/factory-reset.js.map +1 -0
  170. package/dist/commands/install/index.d.ts +17 -0
  171. package/dist/commands/install/index.d.ts.map +1 -0
  172. package/dist/commands/install/index.js +44 -0
  173. package/dist/commands/install/index.js.map +1 -0
  174. package/dist/commands/install/install.d.ts +35 -0
  175. package/dist/commands/install/install.d.ts.map +1 -0
  176. package/dist/commands/install/install.js +171 -0
  177. package/dist/commands/install/install.js.map +1 -0
  178. package/dist/commands/login/index.d.ts +15 -0
  179. package/dist/commands/login/index.d.ts.map +1 -0
  180. package/dist/commands/login/index.js +58 -0
  181. package/dist/commands/login/index.js.map +1 -0
  182. package/dist/commands/nginx/index.d.ts +11 -0
  183. package/dist/commands/nginx/index.d.ts.map +1 -0
  184. package/dist/commands/nginx/index.js +580 -0
  185. package/dist/commands/nginx/index.js.map +1 -0
  186. package/dist/commands/server/bootstrap.d.ts +25 -0
  187. package/dist/commands/server/bootstrap.d.ts.map +1 -0
  188. package/dist/commands/server/bootstrap.js +260 -0
  189. package/dist/commands/server/bootstrap.js.map +1 -0
  190. package/dist/commands/server/index.d.ts +8 -0
  191. package/dist/commands/server/index.d.ts.map +1 -0
  192. package/dist/commands/server/index.js +2524 -0
  193. package/dist/commands/server/index.js.map +1 -0
  194. package/dist/commands/setup/index.d.ts +34 -0
  195. package/dist/commands/setup/index.d.ts.map +1 -0
  196. package/dist/commands/setup/index.js +423 -0
  197. package/dist/commands/setup/index.js.map +1 -0
  198. package/dist/commands/ssl/index.d.ts +8 -0
  199. package/dist/commands/ssl/index.d.ts.map +1 -0
  200. package/dist/commands/ssl/index.js +275 -0
  201. package/dist/commands/ssl/index.js.map +1 -0
  202. package/dist/commands/superadmin/index.d.ts +16 -0
  203. package/dist/commands/superadmin/index.d.ts.map +1 -0
  204. package/dist/commands/superadmin/index.js +81 -0
  205. package/dist/commands/superadmin/index.js.map +1 -0
  206. package/dist/commands/tenant/index.d.ts +6 -0
  207. package/dist/commands/tenant/index.d.ts.map +1 -0
  208. package/dist/commands/tenant/index.js +192 -0
  209. package/dist/commands/tenant/index.js.map +1 -0
  210. package/dist/index.d.ts +11 -0
  211. package/dist/index.d.ts.map +1 -0
  212. package/dist/index.js +107 -0
  213. package/dist/index.js.map +1 -0
  214. package/dist/lib/addon-sign.d.ts +23 -0
  215. package/dist/lib/addon-sign.d.ts.map +1 -0
  216. package/dist/lib/addon-sign.js +39 -0
  217. package/dist/lib/addon-sign.js.map +1 -0
  218. package/dist/lib/addon-sign.test.d.ts +2 -0
  219. package/dist/lib/addon-sign.test.d.ts.map +1 -0
  220. package/dist/lib/addon-sign.test.js +27 -0
  221. package/dist/lib/addon-sign.test.js.map +1 -0
  222. package/dist/lib/cdn.d.ts +25 -0
  223. package/dist/lib/cdn.d.ts.map +1 -0
  224. package/dist/lib/cdn.js +131 -0
  225. package/dist/lib/cdn.js.map +1 -0
  226. package/dist/lib/cloudflare.d.ts +133 -0
  227. package/dist/lib/cloudflare.d.ts.map +1 -0
  228. package/dist/lib/cloudflare.js +435 -0
  229. package/dist/lib/cloudflare.js.map +1 -0
  230. package/dist/lib/config.d.ts +96 -0
  231. package/dist/lib/config.d.ts.map +1 -0
  232. package/dist/lib/config.js +132 -0
  233. package/dist/lib/config.js.map +1 -0
  234. package/dist/lib/env.d.ts +8 -0
  235. package/dist/lib/env.d.ts.map +1 -0
  236. package/dist/lib/env.js +64 -0
  237. package/dist/lib/env.js.map +1 -0
  238. package/dist/lib/hosts.d.ts +194 -0
  239. package/dist/lib/hosts.d.ts.map +1 -0
  240. package/dist/lib/hosts.js +183 -0
  241. package/dist/lib/hosts.js.map +1 -0
  242. package/dist/lib/logger.d.ts +68 -0
  243. package/dist/lib/logger.d.ts.map +1 -0
  244. package/dist/lib/logger.js +130 -0
  245. package/dist/lib/logger.js.map +1 -0
  246. package/dist/lib/nginx-config.d.ts +78 -0
  247. package/dist/lib/nginx-config.d.ts.map +1 -0
  248. package/dist/lib/nginx-config.js +736 -0
  249. package/dist/lib/nginx-config.js.map +1 -0
  250. package/dist/lib/ops/addon-dev.d.ts +93 -0
  251. package/dist/lib/ops/addon-dev.d.ts.map +1 -0
  252. package/dist/lib/ops/addon-dev.js +237 -0
  253. package/dist/lib/ops/addon-dev.js.map +1 -0
  254. package/dist/lib/ops/addon-quality.d.ts +38 -0
  255. package/dist/lib/ops/addon-quality.d.ts.map +1 -0
  256. package/dist/lib/ops/addon-quality.js +338 -0
  257. package/dist/lib/ops/addon-quality.js.map +1 -0
  258. package/dist/lib/ops/addon-routes.d.ts +49 -0
  259. package/dist/lib/ops/addon-routes.d.ts.map +1 -0
  260. package/dist/lib/ops/addon-routes.js +189 -0
  261. package/dist/lib/ops/addon-routes.js.map +1 -0
  262. package/dist/lib/ops/addon.d.ts +120 -0
  263. package/dist/lib/ops/addon.d.ts.map +1 -0
  264. package/dist/lib/ops/addon.js +260 -0
  265. package/dist/lib/ops/addon.js.map +1 -0
  266. package/dist/lib/ops/cdn.d.ts +87 -0
  267. package/dist/lib/ops/cdn.d.ts.map +1 -0
  268. package/dist/lib/ops/cdn.js +170 -0
  269. package/dist/lib/ops/cdn.js.map +1 -0
  270. package/dist/lib/ops/cf.d.ts +36 -0
  271. package/dist/lib/ops/cf.d.ts.map +1 -0
  272. package/dist/lib/ops/cf.js +114 -0
  273. package/dist/lib/ops/cf.js.map +1 -0
  274. package/dist/lib/ops/compose.d.ts +95 -0
  275. package/dist/lib/ops/compose.d.ts.map +1 -0
  276. package/dist/lib/ops/compose.js +165 -0
  277. package/dist/lib/ops/compose.js.map +1 -0
  278. package/dist/lib/ops/core.d.ts +117 -0
  279. package/dist/lib/ops/core.d.ts.map +1 -0
  280. package/dist/lib/ops/core.js +322 -0
  281. package/dist/lib/ops/core.js.map +1 -0
  282. package/dist/lib/ops/db.d.ts +116 -0
  283. package/dist/lib/ops/db.d.ts.map +1 -0
  284. package/dist/lib/ops/db.js +351 -0
  285. package/dist/lib/ops/db.js.map +1 -0
  286. package/dist/lib/ops/dns.d.ts +111 -0
  287. package/dist/lib/ops/dns.d.ts.map +1 -0
  288. package/dist/lib/ops/dns.js +306 -0
  289. package/dist/lib/ops/dns.js.map +1 -0
  290. package/dist/lib/ops/image.d.ts +94 -0
  291. package/dist/lib/ops/image.d.ts.map +1 -0
  292. package/dist/lib/ops/image.js +159 -0
  293. package/dist/lib/ops/image.js.map +1 -0
  294. package/dist/lib/ops/nginx.d.ts +114 -0
  295. package/dist/lib/ops/nginx.d.ts.map +1 -0
  296. package/dist/lib/ops/nginx.js +388 -0
  297. package/dist/lib/ops/nginx.js.map +1 -0
  298. package/dist/lib/ops/redis.d.ts +7 -0
  299. package/dist/lib/ops/redis.d.ts.map +1 -0
  300. package/dist/lib/ops/redis.js +35 -0
  301. package/dist/lib/ops/redis.js.map +1 -0
  302. package/dist/lib/ops/ssh.d.ts +127 -0
  303. package/dist/lib/ops/ssh.d.ts.map +1 -0
  304. package/dist/lib/ops/ssh.js +269 -0
  305. package/dist/lib/ops/ssh.js.map +1 -0
  306. package/dist/lib/prompts.d.ts +46 -0
  307. package/dist/lib/prompts.d.ts.map +1 -0
  308. package/dist/lib/prompts.js +113 -0
  309. package/dist/lib/prompts.js.map +1 -0
  310. package/dist/lib/sast.d.ts +43 -0
  311. package/dist/lib/sast.d.ts.map +1 -0
  312. package/dist/lib/sast.js +79 -0
  313. package/dist/lib/sast.js.map +1 -0
  314. package/dist/lib/sast.test.d.ts +2 -0
  315. package/dist/lib/sast.test.d.ts.map +1 -0
  316. package/dist/lib/sast.test.js +33 -0
  317. package/dist/lib/sast.test.js.map +1 -0
  318. package/dist/lib/shell.d.ts +61 -0
  319. package/dist/lib/shell.d.ts.map +1 -0
  320. package/dist/lib/shell.js +183 -0
  321. package/dist/lib/shell.js.map +1 -0
  322. package/dist/lib/ssh-config.d.ts +37 -0
  323. package/dist/lib/ssh-config.d.ts.map +1 -0
  324. package/dist/lib/ssh-config.js +122 -0
  325. package/dist/lib/ssh-config.js.map +1 -0
  326. package/dist/lib/tenant-scope.d.ts +38 -0
  327. package/dist/lib/tenant-scope.d.ts.map +1 -0
  328. package/dist/lib/tenant-scope.js +129 -0
  329. package/dist/lib/tenant-scope.js.map +1 -0
  330. package/dist/lib/tenant-scope.test.d.ts +2 -0
  331. package/dist/lib/tenant-scope.test.d.ts.map +1 -0
  332. package/dist/lib/tenant-scope.test.js +223 -0
  333. package/dist/lib/tenant-scope.test.js.map +1 -0
  334. package/package.json +58 -0
  335. package/templates/bootstrap/.env.template +54 -0
  336. package/templates/bootstrap/docker-compose.yml +145 -0
  337. package/templates/vhost.conf.tmpl +446 -0
@@ -0,0 +1,10 @@
1
+ /**
2
+ * vu addon:list [core]
3
+ */
4
+ interface ListOptions {
5
+ json?: boolean;
6
+ all?: boolean;
7
+ }
8
+ export declare function listAddons(core: string | undefined, options: ListOptions): Promise<void>;
9
+ export {};
10
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * vu addon:list [core]
3
+ */
4
+ import { log, formatTable } from '../../lib/logger.js';
5
+ import { ssh } from '../../lib/shell.js';
6
+ import { getEnv, paths } from '../../lib/config.js';
7
+ import fs from 'fs-extra';
8
+ import path from 'path';
9
+ export async function listAddons(core, options) {
10
+ const env = getEnv();
11
+ if (env === 'dev') {
12
+ await listLocalAddons(options);
13
+ }
14
+ else {
15
+ await listServerAddons(core, options);
16
+ }
17
+ }
18
+ async function listLocalAddons(options) {
19
+ log.title('Local Addons');
20
+ const addonsPath = paths.dev.addons;
21
+ if (!await fs.pathExists(addonsPath)) {
22
+ log.info('No addons directory found');
23
+ return;
24
+ }
25
+ const entries = await fs.readdir(addonsPath, { withFileTypes: true });
26
+ const addons = entries.filter(e => e.isDirectory() && !e.name.startsWith('.'));
27
+ if (addons.length === 0) {
28
+ log.info('No addons found');
29
+ return;
30
+ }
31
+ const addonData = [];
32
+ for (const addon of addons) {
33
+ const addonJsonPath = path.join(addonsPath, addon.name, 'addon.json');
34
+ let version = '-';
35
+ let description = '-';
36
+ let enabled = false;
37
+ if (await fs.pathExists(addonJsonPath)) {
38
+ try {
39
+ const json = await fs.readJson(addonJsonPath);
40
+ version = String(json.version || '-');
41
+ description = String(json.description || '-');
42
+ enabled = json.admin?.enabled || json.web?.enabled || false;
43
+ }
44
+ catch { }
45
+ }
46
+ addonData.push({
47
+ name: addon.name,
48
+ version,
49
+ description: description.slice(0, 40),
50
+ enabled,
51
+ });
52
+ }
53
+ if (options.json) {
54
+ console.log(JSON.stringify(addonData, null, 2));
55
+ return;
56
+ }
57
+ formatTable(['Name', 'Version', 'Description', 'Status'], addonData.map(a => [
58
+ a.name,
59
+ a.version,
60
+ a.description,
61
+ a.enabled ? '✓ Enabled' : '○ Disabled',
62
+ ]));
63
+ log.blank();
64
+ log.info(`Total: ${addonData.length} addon(s)`);
65
+ }
66
+ async function listServerAddons(core, options) {
67
+ const targetCore = core || 'core1';
68
+ log.title(`Addons in ${targetCore}`);
69
+ const result = await ssh(`ls -1 /home/cores/${targetCore}/addons/ 2>/dev/null`, { silent: true });
70
+ if (!result.success || !result.stdout.trim()) {
71
+ log.info('No addons found');
72
+ return;
73
+ }
74
+ const addonNames = result.stdout.trim().split('\n').filter(Boolean);
75
+ const addonData = [];
76
+ for (const name of addonNames) {
77
+ const jsonResult = await ssh(`cat /home/cores/${targetCore}/addons/${name}/addon.json 2>/dev/null`, { silent: true });
78
+ let version = '-';
79
+ let description = '-';
80
+ if (jsonResult.success) {
81
+ try {
82
+ const json = JSON.parse(jsonResult.stdout);
83
+ version = json.version || '-';
84
+ description = json.description || '-';
85
+ }
86
+ catch { }
87
+ }
88
+ addonData.push({
89
+ name,
90
+ version,
91
+ description: description.slice(0, 40),
92
+ });
93
+ }
94
+ if (options.json) {
95
+ console.log(JSON.stringify(addonData, null, 2));
96
+ return;
97
+ }
98
+ formatTable(['Name', 'Version', 'Description'], addonData.map(a => [a.name, a.version, a.description]));
99
+ log.blank();
100
+ log.info(`Total: ${addonData.length} addon(s) in ${targetCore}`);
101
+ }
102
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/addon/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * CiCore CLI — `ci addon manifest-refresh` (M3.4, FLIP-1 Worker-side seam / serhat O-1)
3
+ *
4
+ * enforcement_mode flip'ini ETKİLİ kılan Worker-side adım: cp_enforcement_config'teki
5
+ * GÜNCEL mode + addon kataloğundan İMZALI manifest'i yeniden üretir (refresh-manifest-
6
+ * job.php, container-içi, READ-ONLY) → R2'ye (addons/_manifest.json) yükler → Worker
7
+ * yeni `enforcement_mode`'u görür. Acil-rollback'in Worker yarısı da budur (set off → refresh).
8
+ *
9
+ * SINIR: host-side flag-set (enforcement-flag.sh + runbook §5) = mehmet. Bu komut onun
10
+ * yazdığı DB flag'ini okuyup manifest'e yansıtır — flip'in iki ucundan biri. Addon
11
+ * PUBLISH'siz (cp_addons'a yazmaz). Live R2 upload Mustafa-gate; --dry-run kısa-devre.
12
+ */
13
+ export interface ManifestRefreshOptions {
14
+ host?: string;
15
+ }
16
+ export declare function refreshManifest(options: ManifestRefreshOptions): Promise<void>;
17
+ //# sourceMappingURL=manifest-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-refresh.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/manifest-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCpF"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * CiCore CLI — `ci addon manifest-refresh` (M3.4, FLIP-1 Worker-side seam / serhat O-1)
3
+ *
4
+ * enforcement_mode flip'ini ETKİLİ kılan Worker-side adım: cp_enforcement_config'teki
5
+ * GÜNCEL mode + addon kataloğundan İMZALI manifest'i yeniden üretir (refresh-manifest-
6
+ * job.php, container-içi, READ-ONLY) → R2'ye (addons/_manifest.json) yükler → Worker
7
+ * yeni `enforcement_mode`'u görür. Acil-rollback'in Worker yarısı da budur (set off → refresh).
8
+ *
9
+ * SINIR: host-side flag-set (enforcement-flag.sh + runbook §5) = mehmet. Bu komut onun
10
+ * yazdığı DB flag'ini okuyup manifest'e yansıtır — flip'in iki ucundan biri. Addon
11
+ * PUBLISH'siz (cp_addons'a yazmaz). Live R2 upload Mustafa-gate; --dry-run kısa-devre.
12
+ */
13
+ import { execFile } from 'node:child_process';
14
+ import { log } from '../../lib/logger.js';
15
+ import { getHostConfig } from '../../lib/hosts.js';
16
+ import { cdnUploadManifest } from '../../lib/ops/cdn.js';
17
+ import { isDryRun } from '../../lib/config.js';
18
+ export async function refreshManifest(options) {
19
+ const cfg = getHostConfig(options.host ?? 'cicore');
20
+ const container = process.env.CICORE_PHP_CONTAINER ?? 'cicore-php';
21
+ const runner = process.env.REFRESH_MANIFEST_RUNNER ?? '/var/www/app/Backend/Console/refresh-manifest-job.php';
22
+ log.title('Manifest Refresh — enforcement_mode → imzalı manifest → R2 (FLIP-1 Worker-side)');
23
+ // 1. GÜNCEL imzalı manifest'i container-içinde üret (cp_enforcement_config + addonlar
24
+ // okunur; READ-ONLY, addon publish YOK).
25
+ const run = await new Promise((resolve) => {
26
+ execFile('docker', ['exec', container, 'php', runner], { timeout: 120_000 }, (error, stdout, stderr) => {
27
+ resolve({ ok: !error, stdout: stdout ?? '', error: error ? ((stderr ?? '').trim() || error.message).slice(0, 500) : '' });
28
+ });
29
+ });
30
+ if (!run.ok) {
31
+ log.error(`refresh-manifest-job başarısız: ${run.error}`);
32
+ process.exit(1);
33
+ }
34
+ const line = run.stdout.split('\n').find((l) => l.startsWith('MANIFEST_JSON='));
35
+ if (!line) {
36
+ log.error('refresh-manifest-job: MANIFEST_JSON üretilmedi');
37
+ process.exit(1);
38
+ }
39
+ const manifestJson = line.slice('MANIFEST_JSON='.length);
40
+ // 2. R2'ye yükle (addons/_manifest.json) → Worker yeni enforcement_mode'u görür.
41
+ const up = await cdnUploadManifest(cfg, manifestJson);
42
+ if (!up.success && !isDryRun()) {
43
+ log.error(`manifest upload başarısız: ${up.errorMessage}`);
44
+ process.exit(1);
45
+ }
46
+ log.success(`İmzalı manifest R2'ye yüklendi (addons/_manifest.json)${isDryRun() ? ' (dry-run)' : ''} → Worker enforcement_mode güncel (flip etkili).`);
47
+ }
48
+ //# sourceMappingURL=manifest-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-refresh.js","sourceRoot":"","sources":["../../../src/commands/addon/manifest-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAM/C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA+B;IACnE,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,YAAY,CAAC;IACnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,uDAAuD,CAAC;IAE9G,GAAG,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;IAE7F,sFAAsF;IACtF,4CAA4C;IAC5C,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAiD,CAAC,OAAO,EAAE,EAAE;QACxF,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACrG,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5H,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,GAAG,CAAC,KAAK,CAAC,mCAAmC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzD,iFAAiF;IACjF,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC/B,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,GAAG,CAAC,OAAO,CAAC,yDAAyD,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,kDAAkD,CAAC,CAAC;AACzJ,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * CiCore CLI - Addon Migration Commands
3
+ *
4
+ * Commands:
5
+ * vu addon:migrate <name> <core> - Run migrations
6
+ * vu addon:rebuild <name> <core> - Drop + migrate
7
+ * vu addon:reset <name> <core> - Drop all tables
8
+ * vu addon:uninstall <name> <core> - Remove addon tables
9
+ */
10
+ interface MigrateOptions {
11
+ rollback?: boolean;
12
+ fresh?: boolean;
13
+ host?: string;
14
+ }
15
+ interface RebuildOptions {
16
+ host?: string;
17
+ }
18
+ interface ResetOptions {
19
+ host?: string;
20
+ force?: boolean;
21
+ }
22
+ interface UninstallOptions {
23
+ host?: string;
24
+ force?: boolean;
25
+ }
26
+ export declare function migrateAddon(name: string, core: string, options: MigrateOptions): Promise<void>;
27
+ /**
28
+ * Rebuild addon - Drop tables and re-run migrations
29
+ */
30
+ export declare function rebuildAddon(name: string, core: string, options: RebuildOptions): Promise<void>;
31
+ /**
32
+ * Reset addon - Drop all tables and re-create from scratch
33
+ */
34
+ export declare function resetAddon(name: string, core: string, options: ResetOptions): Promise<void>;
35
+ /**
36
+ * Uninstall addon - Remove database tables only
37
+ */
38
+ export declare function uninstallAddon(name: string, core: string, options: UninstallOptions): Promise<void>;
39
+ export {};
40
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAeD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA2ErG;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDrG;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDjG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzG"}
@@ -0,0 +1,236 @@
1
+ /**
2
+ * CiCore CLI - Addon Migration Commands
3
+ *
4
+ * Commands:
5
+ * vu addon:migrate <name> <core> - Run migrations
6
+ * vu addon:rebuild <name> <core> - Drop + migrate
7
+ * vu addon:reset <name> <core> - Drop all tables
8
+ * vu addon:uninstall <name> <core> - Remove addon tables
9
+ */
10
+ import { log, spinner } from '../../lib/logger.js';
11
+ import { ssh, dockerExec, exec } from '../../lib/shell.js';
12
+ import { containers } from '../../lib/config.js';
13
+ import { confirm } from '../../lib/prompts.js';
14
+ import { getSSHHost, buildSSHCommand } from '../../lib/ssh-config.js';
15
+ // Helper to run command on remote or local
16
+ async function runOnTarget(host, localCmd, remoteCmd) {
17
+ if (host) {
18
+ const args = buildSSHCommand(host, remoteCmd);
19
+ return await exec('ssh', args, { silent: true });
20
+ }
21
+ return await dockerExec(containers.php, localCmd, { silent: true });
22
+ }
23
+ export async function migrateAddon(name, core, options) {
24
+ log.title(`Migrate Addon: ${name} in ${core}`);
25
+ const addonPath = `/home/cores/${core}/addons/${name}`;
26
+ const migrationsPath = `${addonPath}/Backend/Migrations`;
27
+ // Check migrations exist
28
+ const checkResult = await ssh(`ls ${migrationsPath}/*.php 2>/dev/null | wc -l`, { silent: true });
29
+ const migrationCount = parseInt(checkResult.stdout.trim()) || 0;
30
+ if (migrationCount === 0) {
31
+ log.info('No migrations found for this addon');
32
+ return;
33
+ }
34
+ log.info(`Found ${migrationCount} migration file(s)`);
35
+ // Fresh migration warning
36
+ if (options.fresh) {
37
+ const confirmed = await confirm('Fresh migration will DROP all addon tables. Continue?', false);
38
+ if (!confirmed) {
39
+ log.warn('Cancelled');
40
+ return;
41
+ }
42
+ }
43
+ // Run migrations via PHP
44
+ const migrateSpinner = spinner('Running migrations...').start();
45
+ const action = options.rollback ? 'rollback' : (options.fresh ? 'fresh' : 'up');
46
+ const phpCmd = `php -r "
47
+ require '/var/www/vendor/autoload.php';
48
+
49
+ \\\$corePath = '/var/www/cores/${core}';
50
+ \\\$addonName = '${name}';
51
+ \\\$action = '${action}';
52
+
53
+ // Load core .env
54
+ \\\$dotenv = Dotenv\\\\Dotenv::createImmutable(\\\$corePath);
55
+ \\\$dotenv->load();
56
+
57
+ // Run migration
58
+ \\\$migrator = new VuCore\\\\Core\\\\Database\\\\Migrator(\\\$corePath, \\\$addonName);
59
+ \\\$result = \\\$migrator->\\\$action();
60
+
61
+ echo json_encode(\\\$result);
62
+ "`;
63
+ const result = await dockerExec(containers.php, phpCmd, { silent: true });
64
+ if (!result.success) {
65
+ migrateSpinner.fail('Migration failed');
66
+ log.error(result.stderr);
67
+ return;
68
+ }
69
+ migrateSpinner.succeed('Migrations complete');
70
+ try {
71
+ const output = JSON.parse(result.stdout);
72
+ if (output.migrations) {
73
+ log.blank();
74
+ log.info('Executed migrations:');
75
+ output.migrations.forEach((m) => log.item(m));
76
+ }
77
+ }
78
+ catch {
79
+ log.debug(result.stdout);
80
+ }
81
+ log.blank();
82
+ log.success('Migration complete');
83
+ }
84
+ /**
85
+ * Rebuild addon - Drop tables and re-run migrations
86
+ */
87
+ export async function rebuildAddon(name, core, options) {
88
+ log.title(`Rebuild Addon: ${name} in ${core}`);
89
+ // Get host if specified
90
+ let host = null;
91
+ if (options.host) {
92
+ host = await getSSHHost(options.host);
93
+ if (!host) {
94
+ log.error(`SSH host '${options.host}' not found`);
95
+ return;
96
+ }
97
+ log.kv('Target', `${host.name} (${host.hostname})`);
98
+ }
99
+ else {
100
+ log.kv('Target', 'Local Docker');
101
+ }
102
+ const confirmed = await confirm(`This will DROP all tables for ${name} and re-run migrations. Continue?`, false);
103
+ if (!confirmed) {
104
+ log.warn('Cancelled');
105
+ return;
106
+ }
107
+ const rebuildSpinner = spinner('Rebuilding addon...').start();
108
+ // PHP command to rebuild addon
109
+ const phpCmd = `php /var/www/public/index.php addons/${name}/rebuild`;
110
+ const remoteCmd = `docker exec cicore_php ${phpCmd}`;
111
+ const result = await runOnTarget(host, phpCmd, remoteCmd);
112
+ if (!result.success) {
113
+ rebuildSpinner.fail('Rebuild failed');
114
+ log.error(result.stderr || result.stdout);
115
+ return;
116
+ }
117
+ rebuildSpinner.succeed('Addon rebuilt');
118
+ // Parse output
119
+ try {
120
+ const lines = result.stdout.split('\n').filter(l => l.trim());
121
+ lines.forEach(line => {
122
+ if (line.includes('✅') || line.includes('success')) {
123
+ log.success(line);
124
+ }
125
+ else if (line.includes('❌') || line.includes('error')) {
126
+ log.error(line);
127
+ }
128
+ else {
129
+ log.info(line);
130
+ }
131
+ });
132
+ }
133
+ catch {
134
+ log.debug(result.stdout);
135
+ }
136
+ }
137
+ /**
138
+ * Reset addon - Drop all tables and re-create from scratch
139
+ */
140
+ export async function resetAddon(name, core, options) {
141
+ log.title(`Reset Addon: ${name} in ${core}`);
142
+ // Get host if specified
143
+ let host = null;
144
+ if (options.host) {
145
+ host = await getSSHHost(options.host);
146
+ if (!host) {
147
+ log.error(`SSH host '${options.host}' not found`);
148
+ return;
149
+ }
150
+ log.kv('Target', `${host.name} (${host.hostname})`);
151
+ }
152
+ else {
153
+ log.kv('Target', 'Local Docker');
154
+ }
155
+ if (!options.force) {
156
+ const confirmed = await confirm(`⚠️ WARNING: This will DELETE ALL DATA for ${name}. This cannot be undone. Continue?`, false);
157
+ if (!confirmed) {
158
+ log.warn('Cancelled');
159
+ return;
160
+ }
161
+ }
162
+ const resetSpinner = spinner('Resetting addon (dropping all tables)...').start();
163
+ // PHP command to reset addon
164
+ const phpCmd = `php /var/www/public/index.php addons/${name}/reset`;
165
+ const remoteCmd = `docker exec cicore_php ${phpCmd}`;
166
+ const result = await runOnTarget(host, phpCmd, remoteCmd);
167
+ if (!result.success) {
168
+ resetSpinner.fail('Reset failed');
169
+ log.error(result.stderr || result.stdout);
170
+ return;
171
+ }
172
+ resetSpinner.succeed('Addon reset complete');
173
+ // Parse output
174
+ try {
175
+ const lines = result.stdout.split('\n').filter(l => l.trim());
176
+ lines.forEach(line => {
177
+ if (line.includes('Dropped') || line.includes('Created')) {
178
+ log.item(line);
179
+ }
180
+ });
181
+ }
182
+ catch {
183
+ log.debug(result.stdout);
184
+ }
185
+ log.blank();
186
+ log.warn('All addon data has been deleted. Run migrations to recreate tables.');
187
+ }
188
+ /**
189
+ * Uninstall addon - Remove database tables only
190
+ */
191
+ export async function uninstallAddon(name, core, options) {
192
+ log.title(`Uninstall Addon: ${name} from ${core}`);
193
+ // Get host if specified
194
+ let host = null;
195
+ if (options.host) {
196
+ host = await getSSHHost(options.host);
197
+ if (!host) {
198
+ log.error(`SSH host '${options.host}' not found`);
199
+ return;
200
+ }
201
+ log.kv('Target', `${host.name} (${host.hostname})`);
202
+ }
203
+ else {
204
+ log.kv('Target', 'Local Docker');
205
+ }
206
+ if (!options.force) {
207
+ const confirmed = await confirm(`This will remove all database tables for ${name}. Continue?`, false);
208
+ if (!confirmed) {
209
+ log.warn('Cancelled');
210
+ return;
211
+ }
212
+ }
213
+ const uninstallSpinner = spinner('Uninstalling addon...').start();
214
+ // PHP command to uninstall addon
215
+ const phpCmd = `php /var/www/public/index.php addons/${name}/uninstall`;
216
+ const remoteCmd = `docker exec cicore_php ${phpCmd}`;
217
+ const result = await runOnTarget(host, phpCmd, remoteCmd);
218
+ if (!result.success) {
219
+ uninstallSpinner.fail('Uninstall failed');
220
+ log.error(result.stderr || result.stdout);
221
+ return;
222
+ }
223
+ uninstallSpinner.succeed('Addon uninstalled');
224
+ // Parse output
225
+ try {
226
+ const lines = result.stdout.split('\n').filter(l => l.trim());
227
+ lines.forEach(line => log.item(line));
228
+ }
229
+ catch {
230
+ log.debug(result.stdout);
231
+ }
232
+ log.blank();
233
+ log.info('Database tables removed. Addon files are still present.');
234
+ log.info(`To completely remove: vu addon:delete ${name} ${core}`);
235
+ }
236
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/commands/addon/migrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAW,MAAM,yBAAyB,CAAC;AAsB/E,2CAA2C;AAC3C,KAAK,UAAU,WAAW,CACxB,IAAoB,EACpB,QAAgB,EAChB,SAAiB;IAEjB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,OAAuB;IACpF,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,SAAS,GAAG,eAAe,IAAI,WAAW,IAAI,EAAE,CAAC;IACvD,MAAM,cAAc,GAAG,GAAG,SAAS,qBAAqB,CAAC;IAEzD,yBAAyB;IACzB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,cAAc,4BAA4B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClG,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;IAEhE,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,SAAS,cAAc,oBAAoB,CAAC,CAAC;IAEtD,0BAA0B;IAC1B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,uDAAuD,EACvD,KAAK,CACN,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAEhF,MAAM,MAAM,GAAG;;;qCAGoB,IAAI;uBAClB,IAAI;oBACP,MAAM;;;;;;;;;;;IAWtB,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,OAAuB;IACpF,GAAG,CAAC,KAAK,CAAC,kBAAkB,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;IAE/C,wBAAwB;IACxB,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,iCAAiC,IAAI,mCAAmC,EACxE,KAAK,CACN,CAAC;IACF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE9D,+BAA+B;IAC/B,MAAM,MAAM,GAAG,wCAAwC,IAAI,UAAU,CAAC;IACtE,MAAM,SAAS,GAAG,0BAA0B,MAAM,EAAE,CAAC;IAErD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAExC,eAAe;IACf,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,OAAqB;IAChF,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;IAE7C,wBAAwB;IACxB,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,8CAA8C,IAAI,oCAAoC,EACtF,KAAK,CACN,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,0CAA0C,CAAC,CAAC,KAAK,EAAE,CAAC;IAEjF,6BAA6B;IAC7B,MAAM,MAAM,GAAG,wCAAwC,IAAI,QAAQ,CAAC;IACpE,MAAM,SAAS,GAAG,0BAA0B,MAAM,EAAE,CAAC;IAErD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE7C,eAAe;IACf,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,OAAyB;IACxF,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAI,SAAS,IAAI,EAAE,CAAC,CAAC;IAEnD,wBAAwB;IACxB,IAAI,IAAI,GAAmB,IAAI,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,GAAG,CAAC,KAAK,CAAC,aAAa,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,4CAA4C,IAAI,aAAa,EAC7D,KAAK,CACN,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAElE,iCAAiC;IACjC,MAAM,MAAM,GAAG,wCAAwC,IAAI,YAAY,CAAC;IACxE,MAAM,SAAS,GAAG,0BAA0B,MAAM,EAAE,CAAC;IAErD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAE1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE9C,eAAe;IACf,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACpE,GAAG,CAAC,IAAI,CAAC,yCAAyC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * CiCore CLI — `ci addon publish` (M3.4 S4, option-b / K4 single authority)
3
+ *
4
+ * Publishes an addon to the central marketplace:
5
+ * 1. build (unless --skip-build) — reuse `ci addon build`
6
+ * 2. package → zip — addonPackageBackend
7
+ * 3. sha256 + HMAC signature — addon-sign (cross-lang parity)
8
+ * 4. upload artifact to R2 — cdnUploadZip (→ addons/<name>/<ver>/)
9
+ * 5. enqueue a SIGNED publish_addon job — enqueueJob (cp_provisioning_jobs)
10
+ *
11
+ * The CLI never writes cp_addons directly. The agent (`ci agent run`) claims the
12
+ * signed job (HMAC-verified) and runs publish-addon-job.php INSIDE the app
13
+ * container, so the control-plane registration goes through AddonRegistryService
14
+ * — the SINGLE writer (K-M3.4-1) — then rebuilds + uploads the CDN manifest.
15
+ *
16
+ * Live steps (R2 upload + enqueue) are Mustafa-gated; `--dry-run` (global
17
+ * CICORE_DRY_RUN) short-circuits the R2/DB writes (build + sha + sign still run).
18
+ */
19
+ export interface PublishOptions {
20
+ core?: string;
21
+ version?: string;
22
+ host?: string;
23
+ title?: string;
24
+ plan?: string;
25
+ public?: boolean;
26
+ skipBuild?: boolean;
27
+ skipScan?: boolean;
28
+ skipEnqueue?: boolean;
29
+ semgrepConfig?: string;
30
+ requestedBy?: string;
31
+ }
32
+ export declare function publishAddon(name: string, options: PublishOptions): Promise<void>;
33
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../../src/commands/addon/publish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAmBH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgNvF"}