alepha 0.19.0 → 0.19.2

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 (638) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -9
  3. package/dist/api/audits/index.d.ts +378 -346
  4. package/dist/api/audits/index.d.ts.map +1 -1
  5. package/dist/api/files/index.d.ts +216 -184
  6. package/dist/api/files/index.d.ts.map +1 -1
  7. package/dist/api/files/index.js +5 -1
  8. package/dist/api/files/index.js.map +1 -1
  9. package/dist/api/jobs/index.d.ts +528 -496
  10. package/dist/api/jobs/index.d.ts.map +1 -1
  11. package/dist/api/jobs/index.js +3 -3
  12. package/dist/api/jobs/index.js.map +1 -1
  13. package/dist/api/keys/index.d.ts +202 -202
  14. package/dist/api/keys/index.d.ts.map +1 -1
  15. package/dist/api/notifications/index.d.ts +152 -152
  16. package/dist/api/notifications/index.d.ts.map +1 -1
  17. package/dist/api/organizations/index.browser.js +48 -0
  18. package/dist/api/organizations/index.browser.js.map +1 -0
  19. package/dist/api/organizations/index.d.ts +516 -0
  20. package/dist/api/organizations/index.d.ts.map +1 -0
  21. package/dist/api/organizations/index.js +202 -0
  22. package/dist/api/organizations/index.js.map +1 -0
  23. package/dist/api/parameters/index.d.ts +391 -358
  24. package/dist/api/parameters/index.d.ts.map +1 -1
  25. package/dist/api/parameters/index.js +5 -1
  26. package/dist/api/parameters/index.js.map +1 -1
  27. package/dist/api/users/index.browser.js +7 -5
  28. package/dist/api/users/index.browser.js.map +1 -1
  29. package/dist/api/users/index.d.ts +989 -931
  30. package/dist/api/users/index.d.ts.map +1 -1
  31. package/dist/api/users/index.js +292 -146
  32. package/dist/api/users/index.js.map +1 -1
  33. package/dist/api/verifications/index.d.ts +132 -132
  34. package/dist/api/verifications/index.d.ts.map +1 -1
  35. package/dist/api/verifications/index.js +2 -2
  36. package/dist/api/verifications/index.js.map +1 -1
  37. package/dist/batch/index.d.ts +6 -6
  38. package/dist/batch/index.d.ts.map +1 -1
  39. package/dist/billing/index.d.ts +1048 -0
  40. package/dist/billing/index.d.ts.map +1 -0
  41. package/dist/billing/index.js +713 -0
  42. package/dist/billing/index.js.map +1 -0
  43. package/dist/bin/index.js +0 -2
  44. package/dist/bin/index.js.map +1 -1
  45. package/dist/bucket/index.d.ts +10 -10
  46. package/dist/bucket/index.d.ts.map +1 -1
  47. package/dist/bucket/index.js +2 -2
  48. package/dist/bucket/index.js.map +1 -1
  49. package/dist/cache/core/index.d.ts +9 -9
  50. package/dist/cache/core/index.d.ts.map +1 -1
  51. package/dist/cache/core/index.js +2 -2
  52. package/dist/cache/core/index.js.map +1 -1
  53. package/dist/cache/core/index.workerd.js +2 -2
  54. package/dist/cache/core/index.workerd.js.map +1 -1
  55. package/dist/cache/redis/index.d.ts +6 -6
  56. package/dist/cache/redis/index.d.ts.map +1 -1
  57. package/dist/cache/redis/index.js +2 -2
  58. package/dist/cache/redis/index.js.map +1 -1
  59. package/dist/cli/config/index.d.ts +12 -2
  60. package/dist/cli/config/index.d.ts.map +1 -1
  61. package/dist/cli/config/index.js +4 -0
  62. package/dist/cli/config/index.js.map +1 -1
  63. package/dist/cli/core/index.d.ts +183 -139
  64. package/dist/cli/core/index.d.ts.map +1 -1
  65. package/dist/cli/core/index.js +283 -86
  66. package/dist/cli/core/index.js.map +1 -1
  67. package/dist/cli/devtools/index.d.ts +45 -0
  68. package/dist/cli/devtools/index.d.ts.map +1 -0
  69. package/dist/cli/devtools/index.js +170 -0
  70. package/dist/cli/devtools/index.js.map +1 -0
  71. package/dist/cli/platform/index.d.ts +383 -492
  72. package/dist/cli/platform/index.d.ts.map +1 -1
  73. package/dist/cli/platform/index.js +42 -511
  74. package/dist/cli/platform/index.js.map +1 -1
  75. package/dist/cli/vendor/index.d.ts +196 -0
  76. package/dist/cli/vendor/index.d.ts.map +1 -0
  77. package/dist/cli/vendor/index.js +384 -0
  78. package/dist/cli/vendor/index.js.map +1 -0
  79. package/dist/command/index.d.ts +18 -18
  80. package/dist/command/index.d.ts.map +1 -1
  81. package/dist/command/index.js +2 -2
  82. package/dist/command/index.js.map +1 -1
  83. package/dist/core/index.browser.js +4 -4
  84. package/dist/core/index.browser.js.map +1 -1
  85. package/dist/core/index.d.ts +10 -10
  86. package/dist/core/index.d.ts.map +1 -1
  87. package/dist/core/index.js +4 -4
  88. package/dist/core/index.js.map +1 -1
  89. package/dist/core/index.native.js +4 -4
  90. package/dist/core/index.native.js.map +1 -1
  91. package/dist/core/index.workerd.js +4 -4
  92. package/dist/core/index.workerd.js.map +1 -1
  93. package/dist/crypto/index.d.ts +7 -7
  94. package/dist/crypto/index.d.ts.map +1 -1
  95. package/dist/datetime/index.d.ts +4 -4
  96. package/dist/datetime/index.d.ts.map +1 -1
  97. package/dist/email/brevo/index.d.ts +4 -4
  98. package/dist/email/brevo/index.d.ts.map +1 -1
  99. package/dist/email/core/index.d.ts +15 -11
  100. package/dist/email/core/index.d.ts.map +1 -1
  101. package/dist/email/core/index.js +12 -35
  102. package/dist/email/core/index.js.map +1 -1
  103. package/dist/email/smtp/index.d.ts +12 -12
  104. package/dist/email/smtp/index.d.ts.map +1 -1
  105. package/dist/email/smtp/index.js +7 -4
  106. package/dist/email/smtp/index.js.map +1 -1
  107. package/dist/fake/index.d.ts +4 -8
  108. package/dist/fake/index.d.ts.map +1 -1
  109. package/dist/fake/index.js +55 -889
  110. package/dist/fake/index.js.map +1 -1
  111. package/dist/lock/core/index.d.ts +13 -13
  112. package/dist/lock/core/index.d.ts.map +1 -1
  113. package/dist/lock/core/index.js +2 -2
  114. package/dist/lock/core/index.js.map +1 -1
  115. package/dist/lock/redis/index.d.ts +4 -4
  116. package/dist/lock/redis/index.d.ts.map +1 -1
  117. package/dist/logger/index.d.ts +16 -15
  118. package/dist/logger/index.d.ts.map +1 -1
  119. package/dist/logger/index.js +5 -2
  120. package/dist/logger/index.js.map +1 -1
  121. package/dist/mcp/index.d.ts +11 -11
  122. package/dist/mcp/index.d.ts.map +1 -1
  123. package/dist/mcp/index.js +2 -2
  124. package/dist/mcp/index.js.map +1 -1
  125. package/dist/orm/core/index.browser.js +11 -1
  126. package/dist/orm/core/index.browser.js.map +1 -1
  127. package/dist/orm/core/index.bun.js +53 -16
  128. package/dist/orm/core/index.bun.js.map +1 -1
  129. package/dist/orm/core/index.d.ts +95 -51
  130. package/dist/orm/core/index.d.ts.map +1 -1
  131. package/dist/orm/core/index.js +55 -14
  132. package/dist/orm/core/index.js.map +1 -1
  133. package/dist/orm/postgres/index.bun.js +17 -11
  134. package/dist/orm/postgres/index.bun.js.map +1 -1
  135. package/dist/orm/postgres/index.d.ts +21 -15
  136. package/dist/orm/postgres/index.d.ts.map +1 -1
  137. package/dist/orm/postgres/index.js +19 -13
  138. package/dist/orm/postgres/index.js.map +1 -1
  139. package/dist/queue/core/index.d.ts +14 -14
  140. package/dist/queue/core/index.d.ts.map +1 -1
  141. package/dist/queue/core/index.js +2 -2
  142. package/dist/queue/core/index.js.map +1 -1
  143. package/dist/queue/core/index.workerd.js +2 -2
  144. package/dist/queue/core/index.workerd.js.map +1 -1
  145. package/dist/queue/redis/index.d.ts +4 -4
  146. package/dist/queue/redis/index.d.ts.map +1 -1
  147. package/dist/queue/redis/index.js +2 -2
  148. package/dist/queue/redis/index.js.map +1 -1
  149. package/dist/react/auth/index.d.ts +9 -9
  150. package/dist/react/auth/index.d.ts.map +1 -1
  151. package/dist/react/core/index.d.ts +6 -6
  152. package/dist/react/core/index.d.ts.map +1 -1
  153. package/dist/react/core/index.js +5 -4
  154. package/dist/react/core/index.js.map +1 -1
  155. package/dist/react/form/index.d.ts +4 -4
  156. package/dist/react/form/index.d.ts.map +1 -1
  157. package/dist/react/head/index.d.ts +4 -4
  158. package/dist/react/head/index.d.ts.map +1 -1
  159. package/dist/react/i18n/index.d.ts +9 -9
  160. package/dist/react/i18n/index.d.ts.map +1 -1
  161. package/dist/react/intro/index.d.ts +2 -2
  162. package/dist/react/intro/index.d.ts.map +1 -1
  163. package/dist/react/intro/index.js +3 -4
  164. package/dist/react/intro/index.js.map +1 -1
  165. package/dist/react/router/index.browser.js +4 -5
  166. package/dist/react/router/index.browser.js.map +1 -1
  167. package/dist/react/router/index.d.ts +215 -215
  168. package/dist/react/router/index.d.ts.map +1 -1
  169. package/dist/react/router/index.js +6 -7
  170. package/dist/react/router/index.js.map +1 -1
  171. package/dist/react/testing/index.d.ts +2 -2
  172. package/dist/react/testing/index.d.ts.map +1 -1
  173. package/dist/react/testing/index.js +2 -4
  174. package/dist/react/testing/index.js.map +1 -1
  175. package/dist/redis/index.d.ts +19 -19
  176. package/dist/redis/index.d.ts.map +1 -1
  177. package/dist/retry/index.d.ts +4 -4
  178. package/dist/retry/index.d.ts.map +1 -1
  179. package/dist/scheduler/index.d.ts +13 -13
  180. package/dist/scheduler/index.d.ts.map +1 -1
  181. package/dist/scheduler/index.js +2 -2
  182. package/dist/scheduler/index.js.map +1 -1
  183. package/dist/scheduler/index.workerd.js +2 -2
  184. package/dist/scheduler/index.workerd.js.map +1 -1
  185. package/dist/security/index.browser.js +1 -1
  186. package/dist/security/index.browser.js.map +1 -1
  187. package/dist/security/index.d.ts +47 -47
  188. package/dist/security/index.d.ts.map +1 -1
  189. package/dist/security/index.js +9 -12
  190. package/dist/security/index.js.map +1 -1
  191. package/dist/server/auth/index.d.ts +170 -169
  192. package/dist/server/auth/index.d.ts.map +1 -1
  193. package/dist/server/auth/index.js +16 -2
  194. package/dist/server/auth/index.js.map +1 -1
  195. package/dist/server/cookies/index.d.ts +7 -7
  196. package/dist/server/cookies/index.d.ts.map +1 -1
  197. package/dist/server/core/index.d.ts +76 -76
  198. package/dist/server/core/index.d.ts.map +1 -1
  199. package/dist/server/core/index.js +23 -17
  200. package/dist/server/core/index.js.map +1 -1
  201. package/dist/server/cors/index.d.ts +13 -13
  202. package/dist/server/cors/index.d.ts.map +1 -1
  203. package/dist/server/cors/index.js +2 -2
  204. package/dist/server/cors/index.js.map +1 -1
  205. package/dist/server/etag/index.d.ts +9 -9
  206. package/dist/server/etag/index.d.ts.map +1 -1
  207. package/dist/server/health/index.d.ts +20 -20
  208. package/dist/server/health/index.d.ts.map +1 -1
  209. package/dist/server/links/index.browser.js +2 -2
  210. package/dist/server/links/index.browser.js.map +1 -1
  211. package/dist/server/links/index.d.ts +66 -66
  212. package/dist/server/links/index.d.ts.map +1 -1
  213. package/dist/server/links/index.js +4 -4
  214. package/dist/server/links/index.js.map +1 -1
  215. package/dist/server/metrics/index.d.ts +7 -7
  216. package/dist/server/metrics/index.d.ts.map +1 -1
  217. package/dist/server/proxy/index.d.ts +5 -5
  218. package/dist/server/proxy/index.d.ts.map +1 -1
  219. package/dist/server/rate-limit/index.d.ts +12 -12
  220. package/dist/server/rate-limit/index.d.ts.map +1 -1
  221. package/dist/server/rate-limit/index.js +2 -2
  222. package/dist/server/rate-limit/index.js.map +1 -1
  223. package/dist/server/static/index.d.ts +5 -5
  224. package/dist/server/static/index.d.ts.map +1 -1
  225. package/dist/server/swagger/index.d.ts +7 -7
  226. package/dist/server/swagger/index.d.ts.map +1 -1
  227. package/dist/server/swagger/index.js +2 -2
  228. package/dist/server/swagger/index.js.map +1 -1
  229. package/dist/sms/index.d.ts +11 -7
  230. package/dist/sms/index.d.ts.map +1 -1
  231. package/dist/sms/index.js +9 -15
  232. package/dist/sms/index.js.map +1 -1
  233. package/dist/system/index.d.ts +4 -4
  234. package/dist/system/index.d.ts.map +1 -1
  235. package/dist/topic/core/index.d.ts +6 -6
  236. package/dist/topic/core/index.d.ts.map +1 -1
  237. package/dist/topic/redis/index.d.ts +7 -7
  238. package/dist/topic/redis/index.d.ts.map +1 -1
  239. package/dist/topic/redis/index.js +2 -2
  240. package/dist/topic/redis/index.js.map +1 -1
  241. package/dist/websocket/index.d.ts +36 -36
  242. package/dist/websocket/index.d.ts.map +1 -1
  243. package/dist/websocket/index.js +2 -2
  244. package/dist/websocket/index.js.map +1 -1
  245. package/package.json +37 -32
  246. package/src/api/files/{controllers → __tests__}/FileController.spec.ts +189 -143
  247. package/src/api/files/{services → __tests__}/FileService.spec.ts +50 -30
  248. package/src/api/files/controllers/FileController.ts +6 -0
  249. package/src/api/jobs/{services → __tests__}/JobService.spec.ts +1 -1
  250. package/src/api/jobs/providers/JobProvider.ts +3 -3
  251. package/src/api/keys/{services → __tests__}/ApiKeyService.spec.ts +1 -1
  252. package/src/api/organizations/__tests__/OrganizationService.spec.ts +193 -0
  253. package/src/api/organizations/controllers/AdminOrganizationController.ts +103 -0
  254. package/src/api/organizations/entities/organizations.ts +20 -0
  255. package/src/api/organizations/index.browser.ts +10 -0
  256. package/src/api/organizations/index.ts +31 -0
  257. package/src/api/organizations/schemas/createOrganizationSchema.ts +10 -0
  258. package/src/api/organizations/schemas/organizationQuerySchema.ts +10 -0
  259. package/src/api/organizations/schemas/organizationResourceSchema.ts +6 -0
  260. package/src/api/organizations/schemas/updateOrganizationSchema.ts +7 -0
  261. package/src/api/organizations/services/OrganizationService.ts +75 -0
  262. package/src/api/parameters/services/ParameterProvider.ts +6 -1
  263. package/src/api/users/__tests__/$realm.spec.ts +191 -0
  264. package/src/api/users/__tests__/RealmProvider.spec.ts +53 -0
  265. package/src/api/users/__tests__/SessionService.spec.ts +778 -0
  266. package/src/api/users/{jobs → __tests__}/UserJobs.spec.ts +1 -1
  267. package/src/api/users/atoms/realmAuthSettingsAtom.ts +24 -0
  268. package/src/api/users/controllers/RealmController.ts +5 -11
  269. package/src/api/users/entities/users.ts +9 -3
  270. package/src/api/users/index.ts +23 -3
  271. package/src/api/users/primitives/$realm.ts +23 -11
  272. package/src/api/users/providers/RealmProvider.ts +23 -3
  273. package/src/api/users/services/RegistrationService.ts +3 -2
  274. package/src/api/users/services/SessionService.ts +249 -8
  275. package/src/api/users/services/UserService.ts +1 -1
  276. package/src/api/verifications/{jobs → __tests__}/VerificationJobs.spec.ts +4 -2
  277. package/src/api/verifications/parameters/VerificationParameters.ts +2 -2
  278. package/src/billing/__tests__/BillingService.spec.ts +136 -0
  279. package/src/billing/__tests__/PaymentMethodService.spec.ts +78 -0
  280. package/src/billing/controllers/AdminBillingController.ts +149 -0
  281. package/src/billing/controllers/BillingController.ts +108 -0
  282. package/src/billing/entities/paymentIntents.ts +34 -0
  283. package/src/billing/entities/paymentMethods.ts +24 -0
  284. package/src/billing/entities/refunds.ts +22 -0
  285. package/src/billing/errors/BillingError.ts +5 -0
  286. package/src/billing/index.ts +76 -0
  287. package/src/billing/providers/BillingProvider.ts +79 -0
  288. package/src/billing/providers/MemoryBillingProvider.ts +139 -0
  289. package/src/billing/schemas/intentSchemas.ts +60 -0
  290. package/src/billing/schemas/paymentMethodSchemas.ts +13 -0
  291. package/src/billing/schemas/refundSchemas.ts +6 -0
  292. package/src/billing/services/BillingService.ts +325 -0
  293. package/src/billing/services/PaymentMethodService.ts +82 -0
  294. package/src/bin/index.ts +0 -2
  295. package/src/bucket/providers/LocalFileStorageProvider.ts +2 -2
  296. package/src/cache/core/{primitives → __tests__}/$cache.middleware.spec.ts +1 -1
  297. package/src/cache/core/{providers → __tests__}/MemoryCacheProvider.spec.ts +1 -1
  298. package/src/cache/core/primitives/$cache.ts +2 -2
  299. package/src/cache/redis/providers/RedisCacheProvider.ts +2 -2
  300. package/src/cli/config/defineConfig.ts +20 -0
  301. package/src/cli/core/{services → __tests__}/ProjectScaffolder.spec.ts +1 -1
  302. package/src/cli/core/{commands/gen → __tests__}/changelog.spec.ts +1 -1
  303. package/src/cli/core/{commands → __tests__}/init.spec.ts +4 -12
  304. package/src/cli/core/assets.ts +0 -1
  305. package/src/cli/core/atoms/devOptions.ts +0 -5
  306. package/src/cli/core/commands/build.ts +2 -2
  307. package/src/cli/core/commands/dev.ts +165 -30
  308. package/src/cli/core/commands/gen/changelog.ts +2 -2
  309. package/src/cli/core/commands/init.ts +2 -7
  310. package/src/cli/core/commands/verify.ts +0 -1
  311. package/src/cli/core/providers/AppEntryProvider.ts +2 -2
  312. package/src/cli/core/providers/ViteDevServerProvider.ts +53 -46
  313. package/src/cli/core/services/PackageManagerUtils.ts +8 -3
  314. package/src/cli/core/services/ProjectScaffolder.ts +20 -20
  315. package/src/cli/core/tasks/BuildClientTask.ts +8 -0
  316. package/src/cli/core/tasks/BuildServerTask.ts +17 -4
  317. package/src/cli/core/templates/alephaConfigTs.ts +0 -6
  318. package/src/cli/core/templates/webAdminDashboardTsx.ts +17 -0
  319. package/src/cli/core/templates/webAppRouterTs.ts +85 -2
  320. package/src/cli/devtools/atoms/devtoolsOptions.ts +26 -0
  321. package/src/cli/devtools/index.ts +194 -0
  322. package/src/cli/platform/{adapters → __tests__}/CloudflareAdapter.spec.ts +2 -2
  323. package/src/cli/platform/{providers → __tests__}/GitHubSecretStore.spec.ts +1 -1
  324. package/src/cli/platform/{services → __tests__}/NamingService.spec.ts +1 -1
  325. package/src/cli/platform/{providers → __tests__}/PlatformCacheProvider.spec.ts +1 -1
  326. package/src/cli/platform/{services → __tests__}/PlatformInspector.spec.ts +1 -1
  327. package/src/cli/platform/{services → __tests__}/PlatformOrchestrator.spec.ts +3 -3
  328. package/src/cli/platform/{services → __tests__}/SecretFilterService.spec.ts +1 -1
  329. package/src/cli/platform/{commands → __tests__}/SecretsCommand.spec.ts +1 -1
  330. package/src/cli/platform/{adapters → __tests__}/VercelAdapter.spec.ts +2 -2
  331. package/src/cli/platform/atoms/platformOptions.ts +2 -10
  332. package/src/cli/platform/commands/SecretsCommand.ts +2 -2
  333. package/src/cli/platform/commands/platform.ts +2 -11
  334. package/src/cli/platform/index.ts +34 -11
  335. package/src/cli/platform/services/PlatformInspector.ts +2 -2
  336. package/src/cli/platform/services/PlatformOrchestrator.ts +0 -9
  337. package/src/cli/vendor/__tests__/VendorService.spec.ts +407 -0
  338. package/src/cli/vendor/atoms/vendorOptions.ts +41 -0
  339. package/src/cli/vendor/commands/VendorCommand.ts +204 -0
  340. package/src/cli/vendor/index.ts +43 -0
  341. package/src/cli/vendor/services/VendorService.ts +338 -0
  342. package/src/command/{providers → __tests__}/CliProvider.spec.ts +1 -1
  343. package/src/command/{helpers → __tests__}/EnvUtils.spec.ts +1 -1
  344. package/src/command/providers/CliProvider.ts +2 -2
  345. package/src/core/{primitives → __tests__}/$atom.spec.ts +2 -2
  346. package/src/core/{primitives → __tests__}/$memoize.spec.ts +1 -1
  347. package/src/core/{primitives → __tests__}/$mode.spec.ts +1 -1
  348. package/src/core/{primitives → __tests__}/$pipeline.spec.ts +1 -1
  349. package/src/core/{primitives → __tests__}/$scope.spec.ts +2 -2
  350. package/src/core/{providers → __tests__}/KeylessJsonSchemaCodec.spec.ts +1 -1
  351. package/src/core/{providers → __tests__}/SchemaValidator.spec.ts +1 -1
  352. package/src/core/{helpers → __tests__}/jsonSchemaToTypeBox.spec.ts +1 -1
  353. package/src/core/index.shared.ts +1 -1
  354. package/src/core/primitives/{$use.ts → $state.ts} +4 -4
  355. package/src/crypto/{providers → __tests__}/BrowserCryptoProvider.browser.spec.ts +1 -1
  356. package/src/crypto/{providers → __tests__}/CryptoProvider.spec.ts +1 -1
  357. package/src/datetime/{primitives → __tests__}/$debounce.spec.ts +1 -1
  358. package/src/datetime/{primitives → __tests__}/$throttle.spec.ts +1 -1
  359. package/src/datetime/{primitives → __tests__}/$timeout.spec.ts +1 -1
  360. package/src/email/brevo/{providers → __tests__}/BrevoEmailProvider.spec.ts +1 -1
  361. package/src/email/core/{providers → __tests__}/LocalEmailProvider.spec.ts +39 -150
  362. package/src/email/core/providers/LocalEmailProvider.ts +13 -51
  363. package/src/email/smtp/providers/NodemailerEmailProvider.ts +2 -2
  364. package/src/lock/core/{primitives → __tests__}/$lock.middleware.spec.ts +1 -1
  365. package/src/lock/core/primitives/$lock.ts +2 -2
  366. package/src/logger/index.ts +10 -4
  367. package/src/mcp/transports/SseMcpTransport.ts +2 -2
  368. package/src/orm/__tests__/ModelBuilder-tests.ts +53 -0
  369. package/src/orm/__tests__/ModelBuilder.spec.ts +80 -0
  370. package/src/orm/__tests__/organization-tests.ts +200 -0
  371. package/src/orm/__tests__/organization.spec.ts +103 -0
  372. package/src/orm/core/{providers/drivers → __tests__}/BunSqliteProvider.bun.spec.ts +5 -2
  373. package/src/orm/core/constants/PG_SYMBOLS.ts +2 -0
  374. package/src/orm/core/index.shared.ts +1 -0
  375. package/src/orm/core/primitives/$entity.ts +31 -0
  376. package/src/orm/core/providers/DatabaseTypeProvider.ts +11 -0
  377. package/src/orm/core/providers/DrizzleKitProvider.ts +1 -1
  378. package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -2
  379. package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +3 -3
  380. package/src/orm/core/services/ModelBuilder.ts +11 -0
  381. package/src/orm/core/services/QueryManager.ts +16 -2
  382. package/src/orm/core/services/Repository.ts +70 -10
  383. package/src/orm/postgres/{providers → __tests__}/BunPostgresProvider.bun.spec.ts +1 -1
  384. package/src/orm/postgres/services/PostgresModelBuilder.ts +9 -1
  385. package/src/queue/core/providers/WorkerProvider.ts +2 -2
  386. package/src/queue/redis/providers/RedisQueueProvider.ts +2 -2
  387. package/src/react/core/{hooks → __tests__}/useAction.browser.spec.tsx +1 -1
  388. package/src/react/core/hooks/useAction.ts +7 -6
  389. package/src/react/head/{providers → __tests__}/BrowserHeadProvider.browser.spec.ts +1 -1
  390. package/src/react/head/{helpers → __tests__}/SeoExpander.spec.ts +1 -1
  391. package/src/react/i18n/{providers → __tests__}/I18nProvider.spec.ts +1 -1
  392. package/src/react/i18n/{hooks → __tests__}/useI18n.browser.spec.tsx +1 -1
  393. package/src/react/intro/components/GettingStartedDevtoolsSlide.tsx +3 -6
  394. package/src/react/router/{providers → __tests__}/ReactBrowserProvider.browser.spec.ts +1 -1
  395. package/src/react/router/providers/ReactBrowserProvider.ts +2 -2
  396. package/src/react/router/providers/ReactPageProvider.ts +2 -2
  397. package/src/react/router/providers/ReactServerProvider.ts +3 -3
  398. package/src/redis/{providers → __tests__}/BunRedisProvider.bun.spec.ts +4 -4
  399. package/src/retry/{primitives → __tests__}/$retry.middleware.spec.ts +1 -1
  400. package/src/router/{TemplatedPathParser.spec.ts → __tests__/TemplatedPathParser.spec.ts} +1 -1
  401. package/src/scheduler/primitives/$scheduler.ts +2 -2
  402. package/src/security/{primitives → __tests__}/$secure-browser.spec.ts +1 -1
  403. package/src/security/{primitives → __tests__}/$secure.spec.ts +1 -1
  404. package/src/security/primitives/$issuer.ts +1 -1
  405. package/src/security/providers/JwtProvider.ts +6 -10
  406. package/src/security/providers/SecurityProvider.ts +6 -11
  407. package/src/security/schemas/userAccountInfoSchema.ts +3 -3
  408. package/src/server/auth/providers/ServerAuthProvider.ts +24 -2
  409. package/src/server/cookies/{services → __tests__}/CookieParser.spec.ts +1 -1
  410. package/src/server/core/{primitives → __tests__}/$circuit.spec.ts +1 -1
  411. package/src/server/core/{providers → __tests__}/NodeHttpServerProvider.spec.ts +1 -1
  412. package/src/server/core/{providers → __tests__}/ServerBodyParserProvider.spec.ts +31 -1
  413. package/src/server/core/{providers → __tests__}/ServerCompressProvider.spec.ts +1 -1
  414. package/src/server/core/{providers → __tests__}/ServerHelmetProvider.spec.ts +4 -1
  415. package/src/server/core/{providers → __tests__}/ServerMultipartProvider.spec.ts +1 -1
  416. package/src/server/core/{services → __tests__}/ServerRequestParser.spec.ts +1 -1
  417. package/src/server/core/primitives/$action.ts +2 -2
  418. package/src/server/core/primitives/$sse.ts +2 -2
  419. package/src/server/core/providers/ServerBodyParserProvider.ts +21 -12
  420. package/src/server/core/providers/ServerCompressProvider.ts +2 -2
  421. package/src/server/core/providers/ServerHelmetProvider.ts +2 -2
  422. package/src/server/core/providers/ServerMultipartProvider.ts +2 -2
  423. package/src/server/core/providers/ServerRouterProvider.ts +1 -5
  424. package/src/server/cors/{primitives → __tests__}/$cors.spec.ts +1 -1
  425. package/src/server/cors/providers/ServerCorsProvider.ts +2 -2
  426. package/src/server/links/{services → __tests__}/BatchCollector.spec.ts +1 -1
  427. package/src/server/links/providers/LinkProvider.ts +2 -2
  428. package/src/server/links/providers/RemotePrimitiveProvider.ts +2 -2
  429. package/src/server/links/providers/ServerLinksProvider.ts +2 -2
  430. package/src/server/rate-limit/{primitives → __tests__}/$rateLimit.spec.ts +1 -1
  431. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +2 -2
  432. package/src/server/swagger/providers/ServerSwaggerProvider.ts +2 -2
  433. package/src/sms/{providers → __tests__}/LocalSmsProvider.spec.ts +35 -29
  434. package/src/sms/providers/LocalSmsProvider.ts +13 -24
  435. package/src/system/{providers → __tests__}/MemoryFileSystemProvider.spec.ts +1 -1
  436. package/src/system/{providers → __tests__}/MemoryShellProvider.spec.ts +1 -1
  437. package/src/topic/redis/providers/RedisTopicProvider.ts +2 -2
  438. package/src/websocket/{services → __tests__}/RoomManager.spec.ts +1 -1
  439. package/src/websocket/providers/NodeWebSocketServerProvider.ts +2 -2
  440. package/tsconfig.base.json +1 -0
  441. package/assets/devtools-ui/200.html +0 -10
  442. package/assets/devtools-ui/200.html.br +0 -0
  443. package/assets/devtools-ui/404.html +0 -10
  444. package/assets/devtools-ui/404.html.br +0 -0
  445. package/assets/devtools-ui/CNAME +0 -1
  446. package/assets/devtools-ui/asset.CHpVij2M.css +0 -1
  447. package/assets/devtools-ui/asset.CHpVij2M.css.br +0 -0
  448. package/assets/devtools-ui/asset.DJ-i0UDz.css +0 -1
  449. package/assets/devtools-ui/asset.DJ-i0UDz.css.br +0 -0
  450. package/assets/devtools-ui/chunk.1jwpJORo.js +0 -1
  451. package/assets/devtools-ui/chunk.1jwpJORo.js.br +0 -0
  452. package/assets/devtools-ui/chunk.B0r2wfUL.js +0 -1
  453. package/assets/devtools-ui/chunk.B0r2wfUL.js.br +0 -0
  454. package/assets/devtools-ui/chunk.BScN4dVR.js +0 -84
  455. package/assets/devtools-ui/chunk.BScN4dVR.js.br +0 -0
  456. package/assets/devtools-ui/chunk.BispuoY4.js +0 -1
  457. package/assets/devtools-ui/chunk.BispuoY4.js.br +0 -0
  458. package/assets/devtools-ui/chunk.BtrPUUd7.js +0 -2
  459. package/assets/devtools-ui/chunk.BtrPUUd7.js.br +0 -0
  460. package/assets/devtools-ui/chunk.C-KMHgqf.js +0 -1
  461. package/assets/devtools-ui/chunk.C-KMHgqf.js.br +0 -0
  462. package/assets/devtools-ui/chunk.C2zQ3CF6.js +0 -7
  463. package/assets/devtools-ui/chunk.C2zQ3CF6.js.br +0 -0
  464. package/assets/devtools-ui/chunk.C619McpO.js +0 -1
  465. package/assets/devtools-ui/chunk.C619McpO.js.br +0 -0
  466. package/assets/devtools-ui/chunk.C9OsYsVl.js +0 -1
  467. package/assets/devtools-ui/chunk.C9OsYsVl.js.br +0 -3
  468. package/assets/devtools-ui/chunk.CAC_-151.js +0 -1
  469. package/assets/devtools-ui/chunk.CAC_-151.js.br +0 -0
  470. package/assets/devtools-ui/chunk.CCmesWfx.js +0 -1
  471. package/assets/devtools-ui/chunk.CCmesWfx.js.br +0 -0
  472. package/assets/devtools-ui/chunk.CFQDmrcV.js +0 -1
  473. package/assets/devtools-ui/chunk.CFQDmrcV.js.br +0 -0
  474. package/assets/devtools-ui/chunk.CgM71Zau.js +0 -1
  475. package/assets/devtools-ui/chunk.CgM71Zau.js.br +0 -0
  476. package/assets/devtools-ui/chunk.CmHq336a.js +0 -1
  477. package/assets/devtools-ui/chunk.CmHq336a.js.br +0 -0
  478. package/assets/devtools-ui/chunk.CthNMCar.js +0 -1
  479. package/assets/devtools-ui/chunk.CthNMCar.js.br +0 -0
  480. package/assets/devtools-ui/chunk.D2brVJP1.js +0 -1
  481. package/assets/devtools-ui/chunk.D2brVJP1.js.br +0 -0
  482. package/assets/devtools-ui/chunk.DgBKGkiw.js +0 -1
  483. package/assets/devtools-ui/chunk.DgBKGkiw.js.br +0 -0
  484. package/assets/devtools-ui/chunk.NNHHCQsa.js +0 -1
  485. package/assets/devtools-ui/chunk.NNHHCQsa.js.br +0 -0
  486. package/assets/devtools-ui/chunk._CDKKWMo.js +0 -1
  487. package/assets/devtools-ui/chunk._CDKKWMo.js.br +0 -0
  488. package/assets/devtools-ui/entry.B_nOjAod.js +0 -2
  489. package/assets/devtools-ui/entry.B_nOjAod.js.br +0 -0
  490. package/assets/devtools-ui/index.html +0 -10
  491. package/assets/devtools-ui/index.html.br +0 -0
  492. package/dist/devtools/index.browser.js +0 -224
  493. package/dist/devtools/index.browser.js.map +0 -1
  494. package/dist/devtools/index.d.ts +0 -499
  495. package/dist/devtools/index.d.ts.map +0 -1
  496. package/dist/devtools/index.js +0 -782
  497. package/dist/devtools/index.js.map +0 -1
  498. package/dist/mqtt/index.d.ts +0 -164
  499. package/dist/mqtt/index.d.ts.map +0 -1
  500. package/dist/mqtt/index.js +0 -214
  501. package/dist/mqtt/index.js.map +0 -1
  502. package/dist/topic/mqtt/index.d.ts +0 -87
  503. package/dist/topic/mqtt/index.d.ts.map +0 -1
  504. package/dist/topic/mqtt/index.js +0 -88
  505. package/dist/topic/mqtt/index.js.map +0 -1
  506. package/src/api/users/parameters/UserParameters.ts +0 -23
  507. package/src/api/users/services/SessionService.spec.ts +0 -303
  508. package/src/cli/platform/adapters/DockerAdapter.spec.ts +0 -378
  509. package/src/cli/platform/adapters/DockerAdapter.ts +0 -417
  510. package/src/cli/platform/services/DockerComposeGenerator.spec.ts +0 -490
  511. package/src/cli/platform/services/DockerComposeGenerator.ts +0 -353
  512. package/src/cli/platform/services/DockerSshService.spec.ts +0 -47
  513. package/src/cli/platform/services/DockerSshService.ts +0 -61
  514. package/src/devtools/__tests__/DevCollectorProvider.spec.ts +0 -7
  515. package/src/devtools/assets.ts +0 -6
  516. package/src/devtools/entities/logs.ts +0 -21
  517. package/src/devtools/index.browser.ts +0 -11
  518. package/src/devtools/index.shared.ts +0 -15
  519. package/src/devtools/index.ts +0 -39
  520. package/src/devtools/providers/DevToolsMetadataProvider.ts +0 -459
  521. package/src/devtools/providers/DevToolsProvider.ts +0 -280
  522. package/src/devtools/schemas/DevActionMetadata.ts +0 -30
  523. package/src/devtools/schemas/DevAtomMetadata.ts +0 -26
  524. package/src/devtools/schemas/DevBucketMetadata.ts +0 -11
  525. package/src/devtools/schemas/DevCacheMetadata.ts +0 -10
  526. package/src/devtools/schemas/DevEntityMetadata.ts +0 -60
  527. package/src/devtools/schemas/DevEnvMetadata.ts +0 -22
  528. package/src/devtools/schemas/DevMetadata.ts +0 -47
  529. package/src/devtools/schemas/DevModuleMetadata.ts +0 -8
  530. package/src/devtools/schemas/DevPageMetadata.ts +0 -24
  531. package/src/devtools/schemas/DevProviderMetadata.ts +0 -10
  532. package/src/devtools/schemas/DevQueueMetadata.ts +0 -10
  533. package/src/devtools/schemas/DevRealmMetadata.ts +0 -19
  534. package/src/devtools/schemas/DevRouteMetadata.ts +0 -8
  535. package/src/devtools/schemas/DevSchedulerMetadata.ts +0 -11
  536. package/src/devtools/schemas/DevTopicMetadata.ts +0 -11
  537. package/src/mqtt/index.ts +0 -32
  538. package/src/mqtt/providers/MqttClientProvider.ts +0 -63
  539. package/src/mqtt/providers/MqttJsClientProvider.spec.ts +0 -165
  540. package/src/mqtt/providers/MqttJsClientProvider.ts +0 -309
  541. package/src/topic/mqtt/index.ts +0 -30
  542. package/src/topic/mqtt/providers/MqttTopicProvider.spec.ts +0 -160
  543. package/src/topic/mqtt/providers/MqttTopicProvider.ts +0 -146
  544. /package/src/api/audits/{primitives → __tests__}/$audit.spec.ts +0 -0
  545. /package/src/api/audits/{services → __tests__}/AuditService.spec.ts +0 -0
  546. /package/src/api/files/{controllers → __tests__}/AdminFileStatsController.spec.ts +0 -0
  547. /package/src/api/files/{jobs → __tests__}/FileJobs.spec.ts +0 -0
  548. /package/src/api/jobs/{primitives → __tests__}/$job-middleware.spec.ts +0 -0
  549. /package/src/api/parameters/{primitives → __tests__}/$parameter.spec.ts +0 -0
  550. /package/src/api/users/{controllers → __tests__}/AdminIdentityController.spec.ts +0 -0
  551. /package/src/api/users/{controllers → __tests__}/AdminSessionController.spec.ts +0 -0
  552. /package/src/api/users/{controllers → __tests__}/AdminUserController.spec.ts +0 -0
  553. /package/src/api/users/{services → __tests__}/CredentialService.spec.ts +0 -0
  554. /package/src/api/users/{services → __tests__}/RegistrationService.spec.ts +0 -0
  555. /package/src/batch/{primitives → __tests__}/$batch.spec.ts +0 -0
  556. /package/src/batch/{providers → __tests__}/BatchProvider.spec.ts +0 -0
  557. /package/src/bucket/{primitives → __tests__}/$bucket.spec.ts +0 -0
  558. /package/src/bucket/{providers → __tests__}/FileStorageProvider.spec.ts +0 -0
  559. /package/src/bucket/{providers → __tests__}/LocalFileStorageProvider.spec.ts +0 -0
  560. /package/src/bucket/{providers → __tests__}/MemoryFileStorageProvider.spec.ts +0 -0
  561. /package/src/cache/core/{primitives → __tests__}/$cache.spec.ts +0 -0
  562. /package/src/cache/redis/{providers → __tests__}/RedisCacheProvider.spec.ts +0 -0
  563. /package/src/command/{primitives → __tests__}/$command.spec.ts +0 -0
  564. /package/src/command/{helpers → __tests__}/Asker.spec.ts +0 -0
  565. /package/src/command/{helpers → __tests__}/Runner.spec.ts +0 -0
  566. /package/src/core/{primitives → __tests__}/$context.spec.ts +0 -0
  567. /package/src/core/{primitives → __tests__}/$env.spec.ts +0 -0
  568. /package/src/core/{primitives → __tests__}/$hook.spec.ts +0 -0
  569. /package/src/core/{primitives → __tests__}/$inject.spec.ts +0 -0
  570. /package/src/core/{primitives → __tests__}/$module.spec.ts +0 -0
  571. /package/src/core/{providers → __tests__}/CodecManager.spec.ts +0 -0
  572. /package/src/core/{providers → __tests__}/EventManager.spec.ts +0 -0
  573. /package/src/core/{providers → __tests__}/StateManager.spec.ts +0 -0
  574. /package/src/core/{providers → __tests__}/TypeProvider.spec.ts +0 -0
  575. /package/src/datetime/{primitives → __tests__}/$interval.spec.ts +0 -0
  576. /package/src/datetime/{providers → __tests__}/DateTimeProvider.spec.ts +0 -0
  577. /package/src/email/core/{primitives → __tests__}/$email.spec.ts +0 -0
  578. /package/src/fake/{providers → __tests__}/FakeProvider.spec.ts +0 -0
  579. /package/src/lock/core/{providers → __tests__}/MemoryLockProvider.spec.ts +0 -0
  580. /package/src/lock/redis/{providers → __tests__}/RedisLockProvider.spec.ts +0 -0
  581. /package/src/logger/{primitives → __tests__}/$logger.spec.ts +0 -0
  582. /package/src/logger/{services → __tests__}/Logger.spec.ts +0 -0
  583. /package/src/mcp/{primitives → __tests__}/$prompt.spec.ts +0 -0
  584. /package/src/mcp/{primitives → __tests__}/$resource.spec.ts +0 -0
  585. /package/src/mcp/{primitives → __tests__}/$tool.spec.ts +0 -0
  586. /package/src/mcp/{providers → __tests__}/McpServerProvider.spec.ts +0 -0
  587. /package/src/mcp/{helpers → __tests__}/jsonrpc.spec.ts +0 -0
  588. /package/src/orm/core/{helpers → __tests__}/parseQueryString.spec.ts +0 -0
  589. /package/src/queue/core/{primitives → __tests__}/$consumer.spec.ts +0 -0
  590. /package/src/queue/core/{providers → __tests__}/MemoryQueueProvider.spec.ts +0 -0
  591. /package/src/queue/core/{providers → __tests__}/WorkerProvider.spec.ts +0 -0
  592. /package/src/queue/redis/{providers → __tests__}/RedisQueueProvider.spec.ts +0 -0
  593. /package/src/react/form/{hooks → __tests__}/useForm.browser.spec.tsx +0 -0
  594. /package/src/react/head/{hooks → __tests__}/useHead.spec.tsx +0 -0
  595. /package/src/react/i18n/{components → __tests__}/Localize.spec.tsx +0 -0
  596. /package/src/react/router/{primitives → __tests__}/$page.browser.spec.tsx +0 -0
  597. /package/src/react/router/{primitives → __tests__}/$page.middleware.spec.tsx +0 -0
  598. /package/src/react/router/{primitives → __tests__}/$page.spec.tsx +0 -0
  599. /package/src/react/router/{providers → __tests__}/ReactPreloadProvider.spec.ts +0 -0
  600. /package/src/react/router/{providers → __tests__}/ReactServerProvider.spec.tsx +0 -0
  601. /package/src/react/router/{providers → __tests__}/ReactServerTemplateProvider.spec.ts +0 -0
  602. /package/src/retry/{primitives → __tests__}/$retry.spec.ts +0 -0
  603. /package/src/retry/{providers → __tests__}/RetryProvider.spec.ts +0 -0
  604. /package/src/router/{providers → __tests__}/RouterProvider.spec.ts +0 -0
  605. /package/src/security/{primitives → __tests__}/$issuer.spec.ts +0 -0
  606. /package/src/security/{primitives → __tests__}/$permission.spec.ts +0 -0
  607. /package/src/security/{primitives → __tests__}/$role.spec.ts +0 -0
  608. /package/src/security/{primitives → __tests__}/$serviceAccount.spec.ts +0 -0
  609. /package/src/security/{providers → __tests__}/SecurityProvider.spec.ts +0 -0
  610. /package/src/server/cookies/{providers → __tests__}/ServerCookiesProvider.spec.ts +0 -0
  611. /package/src/server/core/{primitives → __tests__}/$action.spec.ts +0 -0
  612. /package/src/server/core/{primitives → __tests__}/$middleware.spec.ts +0 -0
  613. /package/src/server/core/{primitives → __tests__}/$route.spec.ts +0 -0
  614. /package/src/server/core/{primitives → __tests__}/$sse.spec.ts +0 -0
  615. /package/src/server/core/{providers → __tests__}/BunHttpServerProvider.bun.spec.ts +0 -0
  616. /package/src/server/core/{services → __tests__}/HttpClient.spec.ts +0 -0
  617. /package/src/server/core/{providers → __tests__}/ServerLoggerProvider.spec.ts +0 -0
  618. /package/src/server/core/{services → __tests__}/UserAgentParser.spec.ts +0 -0
  619. /package/src/server/cors/{providers → __tests__}/ServerCorsProvider.spec.ts +0 -0
  620. /package/src/server/etag/{providers → __tests__}/ServerEtagProvider.spec.ts +0 -0
  621. /package/src/server/health/{providers → __tests__}/ServerHealthProvider.spec.ts +0 -0
  622. /package/src/server/links/{primitives → __tests__}/$remote.spec.ts +0 -0
  623. /package/src/server/links/{services → __tests__}/BatchEndpoint.spec.ts +0 -0
  624. /package/src/server/links/{providers → __tests__}/LinkProvider.spec.ts +0 -0
  625. /package/src/server/links/{providers → __tests__}/ServerLinksProvider.spec.ts +0 -0
  626. /package/src/server/metrics/{providers → __tests__}/ServerMetricsProvider.spec.ts +0 -0
  627. /package/src/server/proxy/{primitives → __tests__}/$proxy.spec.ts +0 -0
  628. /package/src/server/rate-limit/{providers → __tests__}/ServerRateLimitProvider.spec.ts +0 -0
  629. /package/src/server/static/{primitives → __tests__}/$serve.spec.ts +0 -0
  630. /package/src/server/swagger/{primitives → __tests__}/$swagger.spec.ts +0 -0
  631. /package/src/sms/{primitives → __tests__}/$sms.spec.ts +0 -0
  632. /package/src/sms/{providers → __tests__}/MemorySmsProvider.spec.ts +0 -0
  633. /package/src/system/{services → __tests__}/FileDetector.spec.ts +0 -0
  634. /package/src/system/{providers → __tests__}/NodeFileSystemProvider.spec.ts +0 -0
  635. /package/src/topic/core/{primitives → __tests__}/$subscriber.spec.ts +0 -0
  636. /package/src/topic/core/{providers → __tests__}/MemoryTopicProvider.spec.ts +0 -0
  637. /package/src/topic/redis/{providers → __tests__}/RedisTopicProvider.spec.ts +0 -0
  638. /package/src/websocket/{primitives → __tests__}/$channel.spec.ts +0 -0
@@ -1,11 +1,11 @@
1
- import { $atom, $inject, $module, $use, Alepha, AlephaError, t } from "alepha";
1
+ import { $atom, $inject, $module, $state, Alepha, AlephaError, t } from "alepha";
2
2
  import { AlephaCli, AlephaCliUtils, AppEntryProvider, PackageManagerUtils, ViteBuildProvider } from "alepha/cli";
3
3
  import { $command, Asker, EnvUtils, Runner } from "alepha/command";
4
4
  import { $logger, ConsoleColorProvider } from "alepha/logger";
5
5
  import { FileSystemProvider, ShellProvider } from "alepha/system";
6
6
  import { DateTimeProvider } from "alepha/datetime";
7
- import { dirname, join } from "node:path";
8
7
  import { homedir, platform } from "node:os";
8
+ import { join } from "node:path";
9
9
  //#region ../../src/cli/platform/providers/PlatformCacheProvider.ts
10
10
  /**
11
11
  * Caches cloud provider login state to avoid slow auth checks.
@@ -977,483 +977,6 @@ var CloudflareAdapter = class CloudflareAdapter extends PlatformAdapter {
977
977
  }
978
978
  };
979
979
  //#endregion
980
- //#region ../../src/cli/platform/services/DockerComposeGenerator.ts
981
- /**
982
- * Generates docker-compose.yml content for local, remote, and shared Traefik.
983
- *
984
- * Pure logic — no I/O, no DI. Takes context, returns YAML string.
985
- */
986
- var DockerComposeGenerator = class {
987
- /**
988
- * Generate the shared Traefik compose.
989
- *
990
- * This is a static singleton — one per VPS at /opt/alepha/traefik/.
991
- * It creates the alepha-proxy network that project composes connect to.
992
- */
993
- generateTraefik() {
994
- return [
995
- "# Auto-generated by Alepha. Do not edit.",
996
- "services:",
997
- " traefik:",
998
- " image: traefik:v3",
999
- " container_name: alepha-traefik",
1000
- " command:",
1001
- " - --providers.docker=true",
1002
- " - --providers.docker.exposedbydefault=false",
1003
- " - --entrypoints.web.address=:80",
1004
- " - --entrypoints.websecure.address=:443",
1005
- " - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web",
1006
- " - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json",
1007
- " ports:",
1008
- " - \"80:80\"",
1009
- " - \"443:443\"",
1010
- " volumes:",
1011
- " - /var/run/docker.sock:/var/run/docker.sock",
1012
- " - traefik_certs:/letsencrypt",
1013
- " networks:",
1014
- " - alepha-proxy",
1015
- " restart: unless-stopped",
1016
- "",
1017
- "networks:",
1018
- " alepha-proxy:",
1019
- " name: alepha-proxy",
1020
- "",
1021
- "volumes:",
1022
- " traefik_certs:",
1023
- ""
1024
- ].join("\n");
1025
- }
1026
- /**
1027
- * Generate compose for local dev (services only: postgres, redis).
1028
- * Returns null if no services are needed.
1029
- */
1030
- generateLocal(options) {
1031
- const services = [];
1032
- const volumes = [];
1033
- const needsPostgres = this.anyAppHas(options.apps, "hasDatabase") && !options.envVars.DATABASE_URL;
1034
- const needsRedis = (this.anyAppHas(options.apps, "hasKV") || this.anyAppHas(options.apps, "hasQueue")) && !options.envVars.REDIS_URL;
1035
- const needsRustFS = this.anyAppHas(options.apps, "hasBucket") && !options.envVars.S3_ENDPOINT;
1036
- if (needsPostgres) {
1037
- const dbName = `${options.project}_${options.env}`.replace(/-/g, "_");
1038
- services.push([
1039
- " postgres:",
1040
- " image: postgres:17-alpine",
1041
- " ports: [\"5432:5432\"]",
1042
- " environment:",
1043
- ` POSTGRES_DB: ${dbName}`,
1044
- " POSTGRES_USER: alepha",
1045
- " POSTGRES_PASSWORD: alepha",
1046
- " volumes:",
1047
- " - postgres_data:/var/lib/postgresql/data"
1048
- ].join("\n"));
1049
- volumes.push(" postgres_data:");
1050
- }
1051
- if (needsRedis) services.push([
1052
- " redis:",
1053
- " image: redis:7-alpine",
1054
- " ports: [\"6379:6379\"]"
1055
- ].join("\n"));
1056
- if (needsRustFS) {
1057
- services.push([
1058
- " rustfs:",
1059
- " image: rustfs/rustfs:latest",
1060
- " ports: [\"9000:9000\"]",
1061
- " environment:",
1062
- " RUSTFS_ROOT_USER: alepha",
1063
- " RUSTFS_ROOT_PASSWORD: alepha",
1064
- " volumes:",
1065
- " - rustfs_data:/data"
1066
- ].join("\n"));
1067
- volumes.push(" rustfs_data:");
1068
- }
1069
- if (services.length === 0) return null;
1070
- const parts = [
1071
- "# Auto-generated by Alepha. Do not edit.",
1072
- "services:",
1073
- ...services
1074
- ];
1075
- if (volumes.length > 0) parts.push("", "volumes:", ...volumes);
1076
- return `${parts.join("\n")}\n`;
1077
- }
1078
- /**
1079
- * Generate compose for a remote project.
1080
- *
1081
- * - With `domain`: app connects to shared alepha-proxy network + Traefik labels
1082
- * - Without `domain`: app exposed directly on port 3000, no Traefik involvement
1083
- *
1084
- * Traefik itself is NEVER in this compose — it's a separate shared compose.
1085
- */
1086
- generateRemote(options) {
1087
- const hasDomain = !!options.domain || Object.keys(options.domains ?? {}).length > 0;
1088
- const services = [];
1089
- const volumes = [];
1090
- const isMultiApp = options.apps.length > 1;
1091
- const needsInternal = hasDomain && this.anyAppNeedsInternal(options.apps, options.envVars);
1092
- for (let i = 0; i < options.apps.length; i++) {
1093
- const app = options.apps[i];
1094
- const serviceName = isMultiApp ? `app-${app.name}` : "app";
1095
- const buildPath = isMultiApp ? `./dist/${app.name}` : "./dist";
1096
- const appLines = [
1097
- ` ${serviceName}:`,
1098
- ` build: ${buildPath}`,
1099
- ` env_file: .env.${options.env}`
1100
- ];
1101
- const appDomain = this.resolveAppDomain(app.name, isMultiApp, options.domain, options.domains);
1102
- if (appDomain) {
1103
- const routerName = serviceName.replace(/-/g, "");
1104
- appLines.push(" labels:", " - traefik.enable=true", ` - traefik.http.routers.${routerName}.rule=Host(\`${appDomain}\`)`, ` - traefik.http.routers.${routerName}.tls.certresolver=letsencrypt`, " networks:", " - alepha-proxy");
1105
- if (needsInternal) appLines.push(" - internal");
1106
- } else {
1107
- const port = 3e3 + i;
1108
- appLines.push(" ports:", ` - "${port}:3000"`);
1109
- }
1110
- appLines.push(" restart: unless-stopped");
1111
- const deps = [];
1112
- if (app.resources.hasDatabase && !options.envVars.DATABASE_URL) deps.push(" - postgres");
1113
- if ((app.resources.hasKV || app.resources.hasQueue) && !options.envVars.REDIS_URL) deps.push(" - redis");
1114
- if (app.resources.hasBucket && !options.envVars.S3_ENDPOINT) deps.push(" - rustfs");
1115
- if (deps.length > 0) appLines.push(" depends_on:", ...deps);
1116
- services.push(appLines.join("\n"));
1117
- }
1118
- if (this.anyAppHas(options.apps, "hasDatabase") && !options.envVars.DATABASE_URL) {
1119
- const pgLines = [
1120
- " postgres:",
1121
- " image: postgres:17-alpine",
1122
- " environment:",
1123
- ` POSTGRES_DB: ${`${options.project}_${options.env}`.replace(/-/g, "_")}`,
1124
- " POSTGRES_USER: alepha",
1125
- " POSTGRES_PASSWORD: ${DB_PASSWORD}",
1126
- " volumes:",
1127
- " - postgres_data:/var/lib/postgresql/data"
1128
- ];
1129
- if (hasDomain) pgLines.push(" networks:", " - internal");
1130
- pgLines.push(" restart: unless-stopped");
1131
- services.push(pgLines.join("\n"));
1132
- volumes.push(" postgres_data:");
1133
- }
1134
- if ((this.anyAppHas(options.apps, "hasKV") || this.anyAppHas(options.apps, "hasQueue")) && !options.envVars.REDIS_URL) {
1135
- const redisLines = [" redis:", " image: redis:7-alpine"];
1136
- if (hasDomain) redisLines.push(" networks:", " - internal");
1137
- redisLines.push(" restart: unless-stopped");
1138
- services.push(redisLines.join("\n"));
1139
- }
1140
- if (this.anyAppHas(options.apps, "hasBucket") && !options.envVars.S3_ENDPOINT) {
1141
- const rustfsLines = [
1142
- " rustfs:",
1143
- " image: rustfs/rustfs:latest",
1144
- " environment:",
1145
- " RUSTFS_ROOT_USER: alepha",
1146
- " RUSTFS_ROOT_PASSWORD: ${S3_SECRET_KEY}",
1147
- " volumes:",
1148
- " - rustfs_data:/data"
1149
- ];
1150
- if (hasDomain) rustfsLines.push(" networks:", " - internal");
1151
- rustfsLines.push(" restart: unless-stopped");
1152
- services.push(rustfsLines.join("\n"));
1153
- volumes.push(" rustfs_data:");
1154
- }
1155
- const parts = [
1156
- "# Auto-generated by Alepha. Do not edit.",
1157
- "services:",
1158
- ...services
1159
- ];
1160
- if (hasDomain) {
1161
- parts.push("", "networks:", " alepha-proxy:", " external: true");
1162
- if (needsInternal) parts.push(" internal:");
1163
- }
1164
- if (volumes.length > 0) parts.push("", "volumes:", ...volumes);
1165
- return `${parts.join("\n")}\n`;
1166
- }
1167
- /**
1168
- * Resolve the domain for an app.
1169
- *
1170
- * Priority:
1171
- * 1. `domains[appName]` — explicit override (e.g. shop → myshop.com)
1172
- * 2. `<appName>.<domain>` — convention for multi-app (e.g. api → api.company.com)
1173
- * 3. `domain` — used directly for single-app projects (e.g. myapp.com)
1174
- */
1175
- resolveAppDomain(appName, isMultiApp, domain, domains) {
1176
- if (domains?.[appName]) return domains[appName];
1177
- if (domain && isMultiApp) return `${appName}.${domain}`;
1178
- return domain;
1179
- }
1180
- anyAppHas(apps, resource) {
1181
- return apps.some((app) => app.resources[resource]);
1182
- }
1183
- anyAppNeedsInternal(apps, envVars) {
1184
- return this.anyAppHas(apps, "hasDatabase") && !envVars.DATABASE_URL || (this.anyAppHas(apps, "hasKV") || this.anyAppHas(apps, "hasQueue")) && !envVars.REDIS_URL || this.anyAppHas(apps, "hasBucket") && !envVars.S3_ENDPOINT;
1185
- }
1186
- };
1187
- //#endregion
1188
- //#region ../../src/cli/platform/services/DockerSshService.ts
1189
- /**
1190
- * Wraps SSH and SCP operations for remote Docker deployments.
1191
- */
1192
- var DockerSshService = class {
1193
- shell = $inject(ShellProvider);
1194
- /**
1195
- * Validate an IP address or hostname to prevent shell injection.
1196
- */
1197
- validateHost(ip) {
1198
- if (!/^[a-zA-Z0-9.:_-]+$/.test(ip)) throw new AlephaError(`Invalid host: ${ip}`);
1199
- }
1200
- /**
1201
- * Validate a file path to prevent shell injection.
1202
- */
1203
- validatePath(path) {
1204
- if (/[;&|`$(){}'"\\!#~<>*?[\]\n\r]/.test(path)) throw new AlephaError(`Invalid path: ${path}`);
1205
- }
1206
- /**
1207
- * Verify SSH connectivity to the remote host.
1208
- */
1209
- async checkConnection(ip) {
1210
- this.validateHost(ip);
1211
- await this.shell.run(`ssh root@${ip} echo ok`);
1212
- }
1213
- /**
1214
- * Execute a command on the remote host via SSH.
1215
- */
1216
- async exec(ip, command) {
1217
- this.validateHost(ip);
1218
- const escaped = command.replace(/'/g, "'\\''");
1219
- return this.shell.run(`ssh root@${ip} '${escaped}'`, { capture: true });
1220
- }
1221
- /**
1222
- * Upload a file to the remote host via SCP.
1223
- */
1224
- async upload(ip, localPath, remotePath) {
1225
- this.validateHost(ip);
1226
- this.validatePath(localPath);
1227
- this.validatePath(remotePath);
1228
- await this.shell.run(`scp ${localPath} root@${ip}:${remotePath}`);
1229
- }
1230
- };
1231
- //#endregion
1232
- //#region ../../src/cli/platform/adapters/DockerAdapter.ts
1233
- /**
1234
- * Docker platform adapter.
1235
- *
1236
- * Handles both local development (docker compose for services)
1237
- * and remote VPS deployment (SSH + Docker).
1238
- *
1239
- * Mode is determined by the `ip` field in environment config:
1240
- * - No `ip`: local mode — compose up services (Postgres, Redis)
1241
- * - With `ip`: remote mode — SSH to VPS, push dist, compose up
1242
- *
1243
- * Traefik is a shared singleton per VPS at /opt/alepha/traefik/.
1244
- * Auto-provisioned on first deploy with `domain`, skipped if already running.
1245
- */
1246
- var DockerAdapter = class extends PlatformAdapter {
1247
- log = $logger();
1248
- fs = $inject(FileSystemProvider);
1249
- shell = $inject(ShellProvider);
1250
- envUtils = $inject(EnvUtils);
1251
- generator = $inject(DockerComposeGenerator);
1252
- ssh = $inject(DockerSshService);
1253
- TRAEFIK_PATH = "/opt/alepha/traefik";
1254
- TRAEFIK_CONTAINER = "alepha-traefik";
1255
- isRemote(ctx) {
1256
- return !!ctx.envConfig.ip;
1257
- }
1258
- composePath(ctx) {
1259
- return this.fs.join(ctx.root, "node_modules/.alepha/docker-compose.yml");
1260
- }
1261
- remotePath(ctx) {
1262
- return `/opt/alepha/${ctx.project}-${ctx.env}`;
1263
- }
1264
- async authenticate(ctx, run) {
1265
- await run({
1266
- name: "authenticate",
1267
- handler: async () => {
1268
- await this.shell.run("docker --version");
1269
- if (this.isRemote(ctx)) await this.ssh.checkConnection(ctx.envConfig.ip);
1270
- }
1271
- });
1272
- }
1273
- async build(ctx, run) {
1274
- if (!this.isRemote(ctx)) return;
1275
- await run("alepha build -t docker", { root: ctx.app.path ? this.fs.join(ctx.root, ctx.app.path) : ctx.root });
1276
- }
1277
- async deploy(ctx, run) {
1278
- if (!this.isRemote(ctx)) return;
1279
- const ip = ctx.envConfig.ip;
1280
- const remote = this.remotePath(ctx);
1281
- await run({
1282
- name: "deploy",
1283
- handler: async () => {
1284
- await this.shell.run("tar czf dist.tar.gz dist", { root: ctx.root });
1285
- await this.ssh.exec(ip, `mkdir -p ${remote}`);
1286
- await this.ssh.upload(ip, this.fs.join(ctx.root, "dist.tar.gz"), `${remote}/dist.tar.gz`);
1287
- await this.ssh.exec(ip, `cd ${remote} && tar xzf dist.tar.gz && docker compose build && docker compose up -d`);
1288
- }
1289
- });
1290
- return ctx.envConfig.domain ? `https://${ctx.envConfig.domain}` : void 0;
1291
- }
1292
- async provision(ctx, run) {
1293
- const envVars = await this.envUtils.parseEnv(ctx.root, [`.env.${ctx.env}`, ".env"]);
1294
- if (this.isRemote(ctx)) await this.provisionRemote(ctx, run, envVars);
1295
- else await this.provisionLocal(ctx, run, envVars);
1296
- }
1297
- async provisionLocal(ctx, run, envVars) {
1298
- const compose = this.generator.generateLocal({
1299
- project: ctx.project,
1300
- env: ctx.env,
1301
- naming: ctx.naming,
1302
- apps: ctx.apps,
1303
- envVars
1304
- });
1305
- if (!compose) return;
1306
- await run({
1307
- name: "provision (docker compose)",
1308
- handler: async () => {
1309
- const composePath = this.composePath(ctx);
1310
- await this.fs.mkdir(dirname(composePath), { recursive: true });
1311
- await this.fs.writeFile(composePath, compose);
1312
- await this.shell.run(`docker compose -f ${composePath} -p ${ctx.project}-${ctx.env} up -d`);
1313
- }
1314
- });
1315
- }
1316
- async provisionRemote(ctx, run, envVars) {
1317
- const ip = ctx.envConfig.ip;
1318
- const remote = this.remotePath(ctx);
1319
- if (!!ctx.envConfig.domain || Object.keys(ctx.envConfig.domains ?? {}).length > 0) await this.ensureTraefik(ip, run);
1320
- const compose = this.generator.generateRemote({
1321
- project: ctx.project,
1322
- env: ctx.env,
1323
- naming: ctx.naming,
1324
- domain: ctx.envConfig.domain,
1325
- domains: ctx.envConfig.domains,
1326
- apps: ctx.apps,
1327
- envVars
1328
- });
1329
- await run({
1330
- name: "provision (remote)",
1331
- handler: async () => {
1332
- const localCompose = this.composePath(ctx);
1333
- await this.fs.mkdir(dirname(localCompose), { recursive: true });
1334
- await this.fs.writeFile(localCompose, compose);
1335
- await this.ssh.exec(ip, `mkdir -p ${remote}`);
1336
- await this.ssh.upload(ip, localCompose, `${remote}/docker-compose.yml`);
1337
- const envFile = this.fs.join(ctx.root, `.env.${ctx.env}`);
1338
- if (await this.fs.exists(envFile)) await this.ssh.upload(ip, envFile, `${remote}/.env.${ctx.env}`);
1339
- }
1340
- });
1341
- }
1342
- /**
1343
- * Ensure the shared Traefik instance is running on the VPS.
1344
- * If already running, this is a no-op.
1345
- */
1346
- async ensureTraefik(ip, run) {
1347
- if ((await this.ssh.exec(ip, `docker ps --filter name=${this.TRAEFIK_CONTAINER} --format '{{.Names}}'`)).trim() === this.TRAEFIK_CONTAINER) return;
1348
- await run({
1349
- name: "provision (shared traefik)",
1350
- handler: async () => {
1351
- const traefikCompose = this.generator.generateTraefik();
1352
- const localPath = this.fs.join("node_modules/.alepha/traefik-compose.yml");
1353
- await this.fs.mkdir(dirname(localPath), { recursive: true });
1354
- await this.fs.writeFile(localPath, traefikCompose);
1355
- await this.ssh.exec(ip, `mkdir -p ${this.TRAEFIK_PATH}`);
1356
- await this.ssh.upload(ip, localPath, `${this.TRAEFIK_PATH}/docker-compose.yml`);
1357
- await this.ssh.exec(ip, `cd ${this.TRAEFIK_PATH} && docker compose up -d`);
1358
- }
1359
- });
1360
- }
1361
- async migrate(ctx, run) {
1362
- if (!ctx.apps.some((app) => app.resources.hasDatabase)) return;
1363
- await run({
1364
- name: "migrate",
1365
- handler: async () => {
1366
- if (this.isRemote(ctx)) {
1367
- const ip = ctx.envConfig.ip;
1368
- const remote = this.remotePath(ctx);
1369
- await this.ssh.exec(ip, `cd ${remote} && docker compose exec app node -e "require('./migrate')"`);
1370
- } else await this.shell.run("alepha db migrations apply", { root: ctx.root });
1371
- }
1372
- });
1373
- }
1374
- async secrets(ctx, run) {
1375
- if (!this.isRemote(ctx)) return;
1376
- const ip = ctx.envConfig.ip;
1377
- const remote = this.remotePath(ctx);
1378
- const envFile = this.fs.join(ctx.root, `.env.${ctx.env}`);
1379
- if (!await this.fs.exists(envFile)) return;
1380
- await run({
1381
- name: "push secrets",
1382
- handler: async () => {
1383
- await this.ssh.upload(ip, envFile, `${remote}/.env.${ctx.env}`);
1384
- }
1385
- });
1386
- }
1387
- async inspect(ctx, run) {
1388
- const state = {
1389
- workers: [],
1390
- databases: [],
1391
- buckets: [],
1392
- kvNamespaces: [],
1393
- queues: [],
1394
- secrets: []
1395
- };
1396
- await run({
1397
- name: "inspect",
1398
- handler: async () => {
1399
- if (this.isRemote(ctx)) {
1400
- const ip = ctx.envConfig.ip;
1401
- const remote = this.remotePath(ctx);
1402
- try {
1403
- const output = await this.ssh.exec(ip, `cd ${remote} && docker compose ps --format json 2>/dev/null || echo "[]"`);
1404
- const containers = this.parseContainers(output);
1405
- for (const c of containers) state.workers.push({
1406
- name: c.name,
1407
- exists: c.state === "running",
1408
- detail: c.state
1409
- });
1410
- } catch {}
1411
- } else {
1412
- const composePath = this.composePath(ctx);
1413
- if (await this.fs.exists(composePath)) try {
1414
- const output = await this.shell.run(`docker compose -f ${composePath} -p ${ctx.project}-${ctx.env} ps --format json`, { capture: true });
1415
- const containers = this.parseContainers(output);
1416
- for (const c of containers) state.workers.push({
1417
- name: c.name,
1418
- exists: c.state === "running",
1419
- detail: c.state
1420
- });
1421
- } catch {}
1422
- }
1423
- }
1424
- });
1425
- return state;
1426
- }
1427
- async teardown(ctx, run) {
1428
- await run({
1429
- name: "teardown",
1430
- handler: async () => {
1431
- if (this.isRemote(ctx)) {
1432
- const ip = ctx.envConfig.ip;
1433
- const remote = this.remotePath(ctx);
1434
- await this.ssh.exec(ip, `cd ${remote} && docker compose down`);
1435
- } else {
1436
- const composePath = this.composePath(ctx);
1437
- if (await this.fs.exists(composePath)) await this.shell.run(`docker compose -f ${composePath} -p ${ctx.project}-${ctx.env} down`);
1438
- }
1439
- }
1440
- });
1441
- }
1442
- parseContainers(output) {
1443
- try {
1444
- return output.trim().split("\n").filter(Boolean).map((line) => {
1445
- const obj = JSON.parse(line);
1446
- return {
1447
- name: obj.Name ?? obj.Service ?? "unknown",
1448
- state: obj.State ?? "unknown"
1449
- };
1450
- });
1451
- } catch {
1452
- return [];
1453
- }
1454
- }
1455
- };
1456
- //#endregion
1457
980
  //#region ../../src/cli/platform/schemas/vercel.ts
1458
981
  const vercelProjectSchema = t.object({
1459
982
  id: t.string(),
@@ -1912,16 +1435,9 @@ const platformOptions = $atom({
1912
1435
  environmentPattern: t.optional(t.text())
1913
1436
  })),
1914
1437
  environments: t.record(t.text(), t.object({
1915
- adapter: t.enum([
1916
- "cloudflare",
1917
- "vercel",
1918
- "docker",
1919
- "docker-compose",
1920
- "aks"
1921
- ]),
1438
+ adapter: t.enum(["cloudflare", "vercel"]),
1922
1439
  domain: t.optional(t.text()),
1923
- domains: t.optional(t.record(t.text(), t.text())),
1924
- ip: t.optional(t.text())
1440
+ domains: t.optional(t.record(t.text(), t.text()))
1925
1441
  }))
1926
1442
  }))
1927
1443
  });
@@ -1982,7 +1498,7 @@ var PlatformInspector = class {
1982
1498
  alepha = $inject(Alepha);
1983
1499
  fs = $inject(FileSystemProvider);
1984
1500
  asker = $inject(Asker);
1985
- options = $use(platformOptions);
1501
+ options = $state(platformOptions);
1986
1502
  naming = $inject(NamingService);
1987
1503
  /**
1988
1504
  * Resolve and validate the full platform configuration.
@@ -2063,15 +1579,11 @@ var PlatformOrchestrator = class {
2063
1579
  inspector = $inject(PlatformInspector);
2064
1580
  naming = $inject(NamingService);
2065
1581
  cloudflareAdapter = $inject(CloudflareAdapter);
2066
- dockerAdapter = $inject(DockerAdapter);
2067
1582
  vercelAdapter = $inject(VercelAdapter);
2068
1583
  resolveAdapter(adapterName) {
2069
1584
  switch (adapterName) {
2070
1585
  case "cloudflare": return this.cloudflareAdapter;
2071
- case "docker":
2072
- case "docker-compose": return this.dockerAdapter;
2073
1586
  case "vercel": return this.vercelAdapter;
2074
- case "aks": throw new AlephaError(`Adapter "${adapterName}" is not yet available. Currently supported: cloudflare, docker, vercel`);
2075
1587
  default: throw new AlephaError(`Unknown adapter: "${adapterName}"`);
2076
1588
  }
2077
1589
  }
@@ -2300,7 +1812,7 @@ var SecretFilterService = class SecretFilterService {
2300
1812
  //#region ../../src/cli/platform/commands/SecretsCommand.ts
2301
1813
  var SecretsCommand = class {
2302
1814
  log = $logger();
2303
- options = $use(platformOptions);
1815
+ options = $state(platformOptions);
2304
1816
  inspector = $inject(PlatformInspector);
2305
1817
  naming = $inject(NamingService);
2306
1818
  envUtils = $inject(EnvUtils);
@@ -2468,7 +1980,7 @@ var SecretsCommand = class {
2468
1980
  //#region ../../src/cli/platform/commands/platform.ts
2469
1981
  var PlatformCommand = class {
2470
1982
  log = $logger();
2471
- options = $use(platformOptions);
1983
+ options = $state(platformOptions);
2472
1984
  orchestrator = $inject(PlatformOrchestrator);
2473
1985
  inspector = $inject(PlatformInspector);
2474
1986
  naming = $inject(NamingService);
@@ -2542,16 +2054,6 @@ var PlatformCommand = class {
2542
2054
  });
2543
2055
  }
2544
2056
  }
2545
- if (adapterName === "docker" || adapterName === "docker-compose") {
2546
- if (hasDB && !envVars.DATABASE_URL) resources.push({
2547
- label: "Postgres",
2548
- value: "postgres:17-alpine"
2549
- });
2550
- if (hasBucket && !envVars.S3_ENDPOINT) resources.push({
2551
- label: "RustFS",
2552
- value: "rustfs/rustfs:latest"
2553
- });
2554
- }
2555
2057
  const excludedKeys = adapterName === "vercel" ? VercelAdapter.EXCLUDED_SECRET_KEYS : CloudflareAdapter.EXCLUDED_SECRET_KEYS;
2556
2058
  const secretCount = Object.entries(envVars).filter(([key, value]) => value && !excludedKeys.has(key) && !key.startsWith("VITE_")).length;
2557
2059
  if (flags.json) {
@@ -3078,17 +2580,46 @@ const platformPlanSchema = t.object({
3078
2580
  });
3079
2581
  //#endregion
3080
2582
  //#region ../../src/cli/platform/index.ts
3081
- const AlephaCliPlatform = $module({
3082
- name: "alepha.cli.platform",
2583
+ /**
2584
+ * CLI plugin for multi-cloud deployment orchestration.
2585
+ *
2586
+ * Manages the full lifecycle of deploying Alepha apps: provision resources,
2587
+ * build, migrate databases, deploy, and sync secrets. Supports Cloudflare
2588
+ * Workers and Vercel.
2589
+ *
2590
+ * Commands:
2591
+ * - `alepha platform plan` — show project topology and resource names
2592
+ * - `alepha platform up` — full deployment pipeline
2593
+ * - `alepha platform down` — teardown an environment
2594
+ * - `alepha platform status` — inspect deployed resources
2595
+ * - `alepha platform build` — build apps locally
2596
+ * - `alepha platform deploy` — deploy to cloud
2597
+ * - `alepha platform migrate` — run database migrations
2598
+ * - `alepha platform secrets` — manage external secret stores
2599
+ *
2600
+ * Configuration in `alepha.config.ts`:
2601
+ *
2602
+ * ```typescript
2603
+ * import { AlephaCliPlatform } from "alepha/cli/platform";
2604
+ *
2605
+ * export default defineConfig({
2606
+ * services: [AlephaCliPlatform],
2607
+ * platform: {
2608
+ * environments: {
2609
+ * production: { adapter: "cloudflare", domain: "myapp.com" },
2610
+ * },
2611
+ * },
2612
+ * });
2613
+ * ```
2614
+ */
2615
+ const AlephaCliPlatformPlugin = $module({
2616
+ name: "alepha.cli.plugins.platform",
3083
2617
  services: [
3084
2618
  AlephaCli,
3085
2619
  PlatformCommand,
3086
2620
  SecretsCommand,
3087
2621
  CloudflareAdapter,
3088
2622
  CloudflareApi,
3089
- DockerAdapter,
3090
- DockerComposeGenerator,
3091
- DockerSshService,
3092
2623
  VercelAdapter,
3093
2624
  VercelApi,
3094
2625
  VercelCli,
@@ -3103,6 +2634,6 @@ const AlephaCliPlatform = $module({
3103
2634
  ]
3104
2635
  });
3105
2636
  //#endregion
3106
- export { AlephaCliPlatform, CloudflareAdapter, CloudflareApi, DockerAdapter, DockerComposeGenerator, DockerSshService, GitHubSecretStore, MemorySecretStore, NamingContext, NamingService, PlatformAdapter, PlatformCacheProvider, PlatformCommand, PlatformInspector, PlatformOrchestrator, SecretFilterService, SecretStoreProvider, SecretsCommand, VercelAdapter, VercelApi, VercelCli, WranglerApi, cloudflareAccountSchema, cloudflareApiErrorSchema, cloudflareD1Schema, cloudflareDeploymentListSchema, cloudflareDeploymentSchema, cloudflareDeploymentVersionSchema, cloudflareHyperdriveOriginSchema, cloudflareHyperdriveSchema, cloudflareKVSchema, cloudflareQueueConsumerSchema, cloudflareQueueSchema, cloudflareR2ListSchema, cloudflareR2Schema, cloudflareSecretSchema, cloudflareVersionListSchema, cloudflareVersionSchema, cloudflareWorkerSchema, createD1BodySchema, createEnvVarBodySchema, createHyperdriveBodySchema, createHyperdriveOriginSchema, createKVBodySchema, createProjectBodySchema, createQueueBodySchema, createR2BodySchema, platformOptions, platformPlanAppResourcesSchema, platformPlanAppSchema, platformPlanEnvironmentSchema, platformPlanResourceSchema, platformPlanSchema, platformStatusResourceSchema, platformStatusSchema, platformStatusSecretSchema, platformStatusWorkerSchema, putSecretBodySchema, vercelDeploymentSchema, vercelEnvVarSchema, vercelProjectSchema };
2637
+ export { AlephaCliPlatformPlugin, CloudflareAdapter, CloudflareApi, GitHubSecretStore, MemorySecretStore, NamingContext, NamingService, PlatformAdapter, PlatformCacheProvider, PlatformCommand, PlatformInspector, PlatformOrchestrator, SecretFilterService, SecretStoreProvider, SecretsCommand, VercelAdapter, VercelApi, VercelCli, WranglerApi, cloudflareAccountSchema, cloudflareApiErrorSchema, cloudflareD1Schema, cloudflareDeploymentListSchema, cloudflareDeploymentSchema, cloudflareDeploymentVersionSchema, cloudflareHyperdriveOriginSchema, cloudflareHyperdriveSchema, cloudflareKVSchema, cloudflareQueueConsumerSchema, cloudflareQueueSchema, cloudflareR2ListSchema, cloudflareR2Schema, cloudflareSecretSchema, cloudflareVersionListSchema, cloudflareVersionSchema, cloudflareWorkerSchema, createD1BodySchema, createEnvVarBodySchema, createHyperdriveBodySchema, createHyperdriveOriginSchema, createKVBodySchema, createProjectBodySchema, createQueueBodySchema, createR2BodySchema, platformOptions, platformPlanAppResourcesSchema, platformPlanAppSchema, platformPlanEnvironmentSchema, platformPlanResourceSchema, platformPlanSchema, platformStatusResourceSchema, platformStatusSchema, platformStatusSecretSchema, platformStatusWorkerSchema, putSecretBodySchema, vercelDeploymentSchema, vercelEnvVarSchema, vercelProjectSchema };
3107
2638
 
3108
2639
  //# sourceMappingURL=index.js.map