openship 0.1.1 → 0.1.7

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 (607) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +5786 -0
  3. package/dist/server/index.js +324319 -0
  4. package/dist/server/migrations/0000_init.sql +666 -0
  5. package/dist/server/migrations/0001_brief_tomorrow_man.sql +47 -0
  6. package/dist/server/migrations/0002_funny_dazzler.sql +2 -0
  7. package/dist/server/migrations/0003_third_killer_shrike.sql +1 -0
  8. package/dist/server/migrations/0004_session_active_org_not_null.sql +10 -0
  9. package/dist/server/migrations/0005_warm_amazoness.sql +3 -0
  10. package/dist/server/migrations/0006_lumpy_joystick.sql +1 -0
  11. package/dist/server/migrations/0007_outgoing_maginty.sql +2 -0
  12. package/dist/server/migrations/0008_frozen_cutover.sql +3 -0
  13. package/dist/server/migrations/0009_credits_billing.sql +142 -0
  14. package/dist/server/migrations/0010_credit_grant_dedupe.sql +14 -0
  15. package/dist/server/migrations/0011_remove_credit_ledger.sql +23 -0
  16. package/dist/server/migrations/0012_smart_deploys_and_git_rollback.sql +81 -0
  17. package/dist/server/migrations/0013_fix_check_run_rollup_unique.sql +38 -0
  18. package/dist/server/migrations/0014_default_rollback_git.sql +9 -0
  19. package/dist/server/migrations/0015_billing_idempotency_grants.sql +41 -0
  20. package/dist/server/migrations/0016_github_auth_high_findings.sql +30 -0
  21. package/dist/server/migrations/0017_spooky_rumiko_fujikawa.sql +6 -0
  22. package/dist/server/migrations/0018_calm_shatterstar.sql +1 -0
  23. package/dist/server/migrations/0019_rename_workspace_install_to_prepare.sql +1 -0
  24. package/dist/server/migrations/0020_uneven_the_renegades.sql +13 -0
  25. package/dist/server/migrations/0021_shiny_firestar.sql +2 -0
  26. package/dist/server/migrations/0022_version_on_success_backfill.sql +6 -0
  27. package/dist/server/migrations/0023_productive_gorilla_man.sql +17 -0
  28. package/dist/server/migrations/0024_sleepy_peter_quill.sql +2 -0
  29. package/dist/server/migrations/0025_smooth_blue_shield.sql +1 -0
  30. package/dist/server/migrations/0026_mail_backup_source.sql +11 -0
  31. package/dist/server/migrations/0027_opposite_anthem.sql +6 -0
  32. package/dist/server/migrations/0028_stale_rogue.sql +18 -0
  33. package/dist/server/migrations/0029_bouncy_loners.sql +16 -0
  34. package/dist/server/migrations/0030_bright_darkstar.sql +6 -0
  35. package/dist/server/migrations/0031_conscious_catseye.sql +13 -0
  36. package/dist/server/migrations/0032_wet_mimic.sql +51 -0
  37. package/dist/server/migrations/0033_eminent_molly_hayes.sql +2 -0
  38. package/dist/server/migrations/meta/0000_snapshot.json +5110 -0
  39. package/dist/server/migrations/meta/0001_snapshot.json +5257 -0
  40. package/dist/server/migrations/meta/0002_snapshot.json +5279 -0
  41. package/dist/server/migrations/meta/0003_snapshot.json +5286 -0
  42. package/dist/server/migrations/meta/0004_snapshot.json +5286 -0
  43. package/dist/server/migrations/meta/0005_snapshot.json +5305 -0
  44. package/dist/server/migrations/meta/0006_snapshot.json +5311 -0
  45. package/dist/server/migrations/meta/0007_snapshot.json +5323 -0
  46. package/dist/server/migrations/meta/0016_snapshot.json +6345 -0
  47. package/dist/server/migrations/meta/0017_snapshot.json +6383 -0
  48. package/dist/server/migrations/meta/0018_snapshot.json +6390 -0
  49. package/dist/server/migrations/meta/0019_snapshot.json +6390 -0
  50. package/dist/server/migrations/meta/0020_snapshot.json +6497 -0
  51. package/dist/server/migrations/meta/0021_snapshot.json +6509 -0
  52. package/dist/server/migrations/meta/0022_snapshot.json +6509 -0
  53. package/dist/server/migrations/meta/0023_snapshot.json +6629 -0
  54. package/dist/server/migrations/meta/0024_snapshot.json +6641 -0
  55. package/dist/server/migrations/meta/0025_snapshot.json +6648 -0
  56. package/dist/server/migrations/meta/0026_snapshot.json +6750 -0
  57. package/dist/server/migrations/meta/0027_snapshot.json +6757 -0
  58. package/dist/server/migrations/meta/0028_snapshot.json +6895 -0
  59. package/dist/server/migrations/meta/0029_snapshot.json +7028 -0
  60. package/dist/server/migrations/meta/0030_snapshot.json +7066 -0
  61. package/dist/server/migrations/meta/0031_snapshot.json +7181 -0
  62. package/dist/server/migrations/meta/0032_snapshot.json +7570 -0
  63. package/dist/server/migrations/meta/0033_snapshot.json +7597 -0
  64. package/dist/server/migrations/meta/_journal.json +244 -0
  65. package/dist/server/pglite/pglite.data +0 -0
  66. package/dist/server/pglite/pglite.wasm +0 -0
  67. package/package.json +31 -33
  68. package/.env.example +0 -38
  69. package/.nvmrc +0 -1
  70. package/.prettierrc +0 -7
  71. package/CONTRIBUTING.md +0 -90
  72. package/LICENSE +0 -661
  73. package/README.md +0 -360
  74. package/apps/api/.env.example +0 -30
  75. package/apps/api/Dockerfile +0 -22
  76. package/apps/api/package.json +0 -41
  77. package/apps/api/src/app.ts +0 -69
  78. package/apps/api/src/config/env.ts +0 -113
  79. package/apps/api/src/config/index.ts +0 -1
  80. package/apps/api/src/index.ts +0 -8
  81. package/apps/api/src/lib/auth-mode.ts +0 -42
  82. package/apps/api/src/lib/auth.ts +0 -105
  83. package/apps/api/src/lib/cache.ts +0 -128
  84. package/apps/api/src/lib/cloud-auth-proxy.ts +0 -310
  85. package/apps/api/src/lib/cloud-client.ts +0 -103
  86. package/apps/api/src/lib/compose-parser.ts +0 -138
  87. package/apps/api/src/lib/controller-helpers.ts +0 -90
  88. package/apps/api/src/lib/email-templates.ts +0 -94
  89. package/apps/api/src/lib/encryption.ts +0 -102
  90. package/apps/api/src/lib/local-user.ts +0 -65
  91. package/apps/api/src/lib/mail.ts +0 -48
  92. package/apps/api/src/lib/notifications.ts +0 -195
  93. package/apps/api/src/lib/openship-cloud.ts +0 -101
  94. package/apps/api/src/lib/resources.ts +0 -96
  95. package/apps/api/src/lib/screenshots.ts +0 -189
  96. package/apps/api/src/lib/ssh-manager.ts +0 -369
  97. package/apps/api/src/lib/ssl-scheduler.ts +0 -109
  98. package/apps/api/src/lib/stack-detector.ts +0 -708
  99. package/apps/api/src/lib/system-debug.ts +0 -10
  100. package/apps/api/src/middleware/auth.ts +0 -60
  101. package/apps/api/src/middleware/error-handler.ts +0 -41
  102. package/apps/api/src/middleware/index.ts +0 -5
  103. package/apps/api/src/middleware/internal-auth.ts +0 -40
  104. package/apps/api/src/middleware/local-only.ts +0 -20
  105. package/apps/api/src/middleware/rate-limiter.ts +0 -35
  106. package/apps/api/src/modules/analytics/analytics.controller.ts +0 -111
  107. package/apps/api/src/modules/analytics/analytics.routes.ts +0 -29
  108. package/apps/api/src/modules/analytics/analytics.schema.ts +0 -37
  109. package/apps/api/src/modules/analytics/analytics.service.ts +0 -264
  110. package/apps/api/src/modules/auth/auth.routes.ts +0 -237
  111. package/apps/api/src/modules/billing/billing.controller.ts +0 -60
  112. package/apps/api/src/modules/billing/billing.routes.ts +0 -34
  113. package/apps/api/src/modules/billing/billing.schema.ts +0 -9
  114. package/apps/api/src/modules/billing/billing.service.ts +0 -33
  115. package/apps/api/src/modules/cloud/cloud.controller.ts +0 -225
  116. package/apps/api/src/modules/cloud/cloud.routes.ts +0 -40
  117. package/apps/api/src/modules/deployments/build.service.ts +0 -791
  118. package/apps/api/src/modules/deployments/deployment-lifecycle.ts +0 -138
  119. package/apps/api/src/modules/deployments/deployment.controller.ts +0 -343
  120. package/apps/api/src/modules/deployments/deployment.routes.ts +0 -37
  121. package/apps/api/src/modules/deployments/deployment.schema.ts +0 -39
  122. package/apps/api/src/modules/deployments/deployment.service.ts +0 -190
  123. package/apps/api/src/modules/deployments/preflight.ts +0 -280
  124. package/apps/api/src/modules/deployments/prepare.service.ts +0 -252
  125. package/apps/api/src/modules/deployments/session-manager.ts +0 -283
  126. package/apps/api/src/modules/deployments/ssl.service.ts +0 -73
  127. package/apps/api/src/modules/domains/domain.controller.ts +0 -73
  128. package/apps/api/src/modules/domains/domain.routes.ts +0 -24
  129. package/apps/api/src/modules/domains/domain.schema.ts +0 -35
  130. package/apps/api/src/modules/domains/domain.service.ts +0 -385
  131. package/apps/api/src/modules/github/github.auth.ts +0 -397
  132. package/apps/api/src/modules/github/github.controller.ts +0 -387
  133. package/apps/api/src/modules/github/github.local-auth.ts +0 -251
  134. package/apps/api/src/modules/github/github.routes.ts +0 -50
  135. package/apps/api/src/modules/github/github.schema.ts +0 -52
  136. package/apps/api/src/modules/github/github.service.ts +0 -592
  137. package/apps/api/src/modules/github/github.types.ts +0 -158
  138. package/apps/api/src/modules/github/github.webhook.ts +0 -186
  139. package/apps/api/src/modules/github/index.ts +0 -16
  140. package/apps/api/src/modules/health/health.routes.ts +0 -45
  141. package/apps/api/src/modules/projects/project.controller.ts +0 -498
  142. package/apps/api/src/modules/projects/project.routes.ts +0 -67
  143. package/apps/api/src/modules/projects/project.schema.ts +0 -107
  144. package/apps/api/src/modules/projects/project.service.ts +0 -514
  145. package/apps/api/src/modules/settings/settings.controller.ts +0 -55
  146. package/apps/api/src/modules/settings/settings.routes.ts +0 -25
  147. package/apps/api/src/modules/settings/settings.service.ts +0 -49
  148. package/apps/api/src/modules/system/filesystem.controller.ts +0 -66
  149. package/apps/api/src/modules/system/index.ts +0 -1
  150. package/apps/api/src/modules/system/server-check.controller.ts +0 -475
  151. package/apps/api/src/modules/system/setup-session.ts +0 -255
  152. package/apps/api/src/modules/system/setup.controller.ts +0 -128
  153. package/apps/api/src/modules/system/system.routes.ts +0 -42
  154. package/apps/api/src/modules/webhooks/webhook.controller.ts +0 -64
  155. package/apps/api/src/modules/webhooks/webhook.routes.ts +0 -15
  156. package/apps/api/src/modules/webhooks/webhook.service.ts +0 -52
  157. package/apps/api/src/modules/webhooks/webhook.types.ts +0 -35
  158. package/apps/api/tsconfig.json +0 -14
  159. package/apps/cli/package.json +0 -26
  160. package/apps/cli/src/commands/deploy.ts +0 -11
  161. package/apps/cli/src/commands/init.ts +0 -8
  162. package/apps/cli/src/commands/login.ts +0 -8
  163. package/apps/cli/src/commands/logs.ts +0 -9
  164. package/apps/cli/src/index.ts +0 -21
  165. package/apps/cli/src/lib/api-client.ts +0 -35
  166. package/apps/cli/tsconfig.json +0 -13
  167. package/apps/dashboard/Dockerfile +0 -22
  168. package/apps/dashboard/components.json +0 -20
  169. package/apps/dashboard/next-env.d.ts +0 -6
  170. package/apps/dashboard/next.config.mjs +0 -16
  171. package/apps/dashboard/package.json +0 -40
  172. package/apps/dashboard/postcss.config.mjs +0 -5
  173. package/apps/dashboard/public/android-chrome-192x192.png +0 -0
  174. package/apps/dashboard/public/android-chrome-512x512.png +0 -0
  175. package/apps/dashboard/public/apple-touch-icon.png +0 -0
  176. package/apps/dashboard/public/favicon-16x16.png +0 -0
  177. package/apps/dashboard/public/favicon-32x32.png +0 -0
  178. package/apps/dashboard/public/favicon.ico +0 -0
  179. package/apps/dashboard/public/site.webmanifest +0 -19
  180. package/apps/dashboard/src/app/(auth)/forgot-password/page.tsx +0 -114
  181. package/apps/dashboard/src/app/(auth)/layout.tsx +0 -21
  182. package/apps/dashboard/src/app/(auth)/login/page.tsx +0 -220
  183. package/apps/dashboard/src/app/(auth)/providers.tsx +0 -34
  184. package/apps/dashboard/src/app/(auth)/register/page.tsx +0 -176
  185. package/apps/dashboard/src/app/(auth)/reset-password/page.tsx +0 -172
  186. package/apps/dashboard/src/app/(auth)/verify-email/page.tsx +0 -190
  187. package/apps/dashboard/src/app/(dashboard)/(deployment)/build/[id]/page.tsx +0 -162
  188. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/BuildSummary.tsx +0 -166
  189. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DnsConfiguration.tsx +0 -119
  190. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DomainSettings.tsx +0 -291
  191. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Header.tsx +0 -71
  192. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Sidebar.tsx +0 -270
  193. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/SkeletonLoader.tsx +0 -87
  194. package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/page.tsx +0 -169
  195. package/apps/dashboard/src/app/(dashboard)/(deployment)/layout.tsx +0 -7
  196. package/apps/dashboard/src/app/(dashboard)/billing/page.tsx +0 -3
  197. package/apps/dashboard/src/app/(dashboard)/deployments/components/CommitDetailsModal.tsx +0 -240
  198. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentCard.tsx +0 -121
  199. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentHeader.tsx +0 -89
  200. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentMenu.tsx +0 -182
  201. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsContent.tsx +0 -324
  202. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsFilters.tsx +0 -99
  203. package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsList.tsx +0 -31
  204. package/apps/dashboard/src/app/(dashboard)/deployments/components/EmptyState.tsx +0 -101
  205. package/apps/dashboard/src/app/(dashboard)/deployments/components/LoadingSkeleton.tsx +0 -57
  206. package/apps/dashboard/src/app/(dashboard)/deployments/components/ProjectFilter.tsx +0 -109
  207. package/apps/dashboard/src/app/(dashboard)/deployments/components/index.ts +0 -9
  208. package/apps/dashboard/src/app/(dashboard)/deployments/page.tsx +0 -14
  209. package/apps/dashboard/src/app/(dashboard)/deployments/types.ts +0 -44
  210. package/apps/dashboard/src/app/(dashboard)/deployments/utils.ts +0 -176
  211. package/apps/dashboard/src/app/(dashboard)/domains/page.tsx +0 -3
  212. package/apps/dashboard/src/app/(dashboard)/integrations/page.tsx +0 -321
  213. package/apps/dashboard/src/app/(dashboard)/layout.tsx +0 -27
  214. package/apps/dashboard/src/app/(dashboard)/library/components/ConnectPrompt.tsx +0 -187
  215. package/apps/dashboard/src/app/(dashboard)/library/components/LibrarySidebar.tsx +0 -147
  216. package/apps/dashboard/src/app/(dashboard)/library/components/LoadingSkeleton.tsx +0 -39
  217. package/apps/dashboard/src/app/(dashboard)/library/components/LocalProjects.tsx +0 -548
  218. package/apps/dashboard/src/app/(dashboard)/library/components/RepositoryList.tsx +0 -292
  219. package/apps/dashboard/src/app/(dashboard)/library/components/TemplateGrid.tsx +0 -36
  220. package/apps/dashboard/src/app/(dashboard)/library/components/UrlImport.tsx +0 -74
  221. package/apps/dashboard/src/app/(dashboard)/library/page.tsx +0 -121
  222. package/apps/dashboard/src/app/(dashboard)/library/types.ts +0 -26
  223. package/apps/dashboard/src/app/(dashboard)/monitoring/page.tsx +0 -3
  224. package/apps/dashboard/src/app/(dashboard)/page.tsx +0 -485
  225. package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/layout.tsx +0 -22
  226. package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/page.tsx +0 -286
  227. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/AdvancedSettings.tsx +0 -235
  228. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/BuildSettings.tsx +0 -174
  229. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeleteConfirmationDialog.tsx +0 -45
  230. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeletionModal.tsx +0 -95
  231. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/Deployments.tsx +0 -11
  232. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DomainSettings.tsx +0 -523
  233. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/EnvironmentSettings.tsx +0 -246
  234. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GeneralSettings.tsx +0 -93
  235. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitInfo.tsx +0 -261
  236. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitSettings.tsx +0 -391
  237. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/LogsSettings.tsx +0 -133
  238. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectNotFound.tsx +0 -95
  239. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectsBottomNavigation.tsx +0 -62
  240. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ResourceSettings.tsx +0 -333
  241. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingSection.tsx +0 -66
  242. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingsNavigation.tsx +0 -27
  243. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SleepModeSettings.tsx +0 -134
  244. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProductionUrl.tsx +0 -25
  245. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectIdentity.tsx +0 -159
  246. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectInfo.tsx +0 -58
  247. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/SkeletonLoader.tsx +0 -170
  248. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/StatsCards.tsx +0 -33
  249. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TopPaths.tsx +0 -56
  250. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TrafficChart.tsx +0 -157
  251. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/index.ts +0 -14
  252. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/LogsActions.tsx +0 -52
  253. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/ServerLogs.tsx +0 -249
  254. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/TerminalLogs.tsx +0 -682
  255. package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/logs.css +0 -127
  256. package/apps/dashboard/src/app/(dashboard)/projects/components/DeploymentCard.tsx +0 -73
  257. package/apps/dashboard/src/app/(dashboard)/projects/components/ProjectCard.tsx +0 -330
  258. package/apps/dashboard/src/app/(dashboard)/projects/page.tsx +0 -330
  259. package/apps/dashboard/src/app/(dashboard)/providers.tsx +0 -23
  260. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/components-tab.tsx +0 -329
  261. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/overview-tab.tsx +0 -229
  262. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/terminal-tab.tsx +0 -38
  263. package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/page.tsx +0 -437
  264. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/checking-state.tsx +0 -15
  265. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/choose-mode.tsx +0 -54
  266. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/component-row.tsx +0 -65
  267. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/error-banner.tsx +0 -13
  268. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/installing-panel.tsx +0 -227
  269. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/results-panel.tsx +0 -90
  270. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/setup-header.tsx +0 -56
  271. package/apps/dashboard/src/app/(dashboard)/servers/new/_components/types.ts +0 -13
  272. package/apps/dashboard/src/app/(dashboard)/servers/new/page.tsx +0 -666
  273. package/apps/dashboard/src/app/(dashboard)/servers/page.tsx +0 -283
  274. package/apps/dashboard/src/app/(dashboard)/settings/_components/BuildPreferences.tsx +0 -110
  275. package/apps/dashboard/src/app/(dashboard)/settings/_components/CloudConnection.tsx +0 -147
  276. package/apps/dashboard/src/app/(dashboard)/settings/_components/InstanceInfo.tsx +0 -54
  277. package/apps/dashboard/src/app/(dashboard)/settings/_components/ServerConnection.tsx +0 -407
  278. package/apps/dashboard/src/app/(dashboard)/settings/_components/SettingsSection.tsx +0 -32
  279. package/apps/dashboard/src/app/(dashboard)/settings/page.tsx +0 -67
  280. package/apps/dashboard/src/app/auth/callback/close/page.tsx +0 -23
  281. package/apps/dashboard/src/app/auth/callback/install/page.tsx +0 -40
  282. package/apps/dashboard/src/app/authorize/page.tsx +0 -137
  283. package/apps/dashboard/src/app/globals.css +0 -57
  284. package/apps/dashboard/src/app/layout.tsx +0 -55
  285. package/apps/dashboard/src/components/auth-shell.tsx +0 -66
  286. package/apps/dashboard/src/components/deployments/types.ts +0 -44
  287. package/apps/dashboard/src/components/global-deployments/index.ts +0 -17
  288. package/apps/dashboard/src/components/i18n-provider.tsx +0 -100
  289. package/apps/dashboard/src/components/import-project/BuildSettings.tsx +0 -376
  290. package/apps/dashboard/src/components/import-project/BuildSkeleton.tsx +0 -161
  291. package/apps/dashboard/src/components/import-project/BuildTerminal.tsx +0 -358
  292. package/apps/dashboard/src/components/import-project/ComposeServices.tsx +0 -455
  293. package/apps/dashboard/src/components/import-project/DeploymentProcessing.tsx +0 -510
  294. package/apps/dashboard/src/components/import-project/DockerSettings.tsx +0 -64
  295. package/apps/dashboard/src/components/import-project/EnvironmentVariables.tsx +0 -481
  296. package/apps/dashboard/src/components/import-project/Frameworks.tsx +0 -90
  297. package/apps/dashboard/src/components/import-project/ProjectSettings.tsx +0 -160
  298. package/apps/dashboard/src/components/import-project/types.ts +0 -82
  299. package/apps/dashboard/src/components/integrations/GithubPermissionModal.tsx +0 -173
  300. package/apps/dashboard/src/components/language-switcher.tsx +0 -36
  301. package/apps/dashboard/src/components/logo.tsx +0 -13
  302. package/apps/dashboard/src/components/network-error-handler.tsx +0 -27
  303. package/apps/dashboard/src/components/oauth-buttons.tsx +0 -81
  304. package/apps/dashboard/src/components/overview/ActivityChart.tsx +0 -247
  305. package/apps/dashboard/src/components/overview/ApiRequestsCard.tsx +0 -111
  306. package/apps/dashboard/src/components/overview/CreditsCard.tsx +0 -137
  307. package/apps/dashboard/src/components/overview/DeploymentsChart.tsx +0 -195
  308. package/apps/dashboard/src/components/overview/EmptyState.tsx +0 -126
  309. package/apps/dashboard/src/components/overview/LoadingSkeleton.tsx +0 -92
  310. package/apps/dashboard/src/components/overview/OverviewHeader.tsx +0 -74
  311. package/apps/dashboard/src/components/overview/OverviewHeroChart.tsx +0 -344
  312. package/apps/dashboard/src/components/overview/ProjectsCard.tsx +0 -134
  313. package/apps/dashboard/src/components/overview/QuickLinks.tsx +0 -119
  314. package/apps/dashboard/src/components/overview/SandboxesCard.tsx +0 -150
  315. package/apps/dashboard/src/components/overview/StatsGrid.tsx +0 -166
  316. package/apps/dashboard/src/components/overview/TokenUsageChart.tsx +0 -206
  317. package/apps/dashboard/src/components/overview/UsageStats.tsx +0 -79
  318. package/apps/dashboard/src/components/overview/index.ts +0 -30
  319. package/apps/dashboard/src/components/overview/types.ts +0 -116
  320. package/apps/dashboard/src/components/page-header.tsx +0 -25
  321. package/apps/dashboard/src/components/project-settings/ServerSideSwitch.jsx +0 -60
  322. package/apps/dashboard/src/components/shared/AlertBox.tsx +0 -39
  323. package/apps/dashboard/src/components/shared/CTASection.tsx +0 -45
  324. package/apps/dashboard/src/components/shared/ErrorState.tsx +0 -176
  325. package/apps/dashboard/src/components/shared/FeatureCard.tsx +0 -20
  326. package/apps/dashboard/src/components/shared/MDXComponents.tsx +0 -24
  327. package/apps/dashboard/src/components/shared/MachineSettingsModal.tsx +0 -286
  328. package/apps/dashboard/src/components/shared/Modal.tsx +0 -39
  329. package/apps/dashboard/src/components/shared/OTPInput.tsx +0 -122
  330. package/apps/dashboard/src/components/shared/PageHero.tsx +0 -21
  331. package/apps/dashboard/src/components/shared/PlatformFeatureCard.tsx +0 -27
  332. package/apps/dashboard/src/components/shared/StatCard.tsx +0 -14
  333. package/apps/dashboard/src/components/shared/ValueCard.tsx +0 -20
  334. package/apps/dashboard/src/components/shared/index.ts +0 -8
  335. package/apps/dashboard/src/components/sidebar.tsx +0 -282
  336. package/apps/dashboard/src/components/theme-provider.tsx +0 -96
  337. package/apps/dashboard/src/components/toast.tsx +0 -106
  338. package/apps/dashboard/src/components/ui/CustomCursor.tsx +0 -107
  339. package/apps/dashboard/src/components/ui/CustomSelect.tsx +0 -126
  340. package/apps/dashboard/src/components/ui/DropdownMenu.tsx +0 -174
  341. package/apps/dashboard/src/components/ui/FileIcon.jsx +0 -59
  342. package/apps/dashboard/src/components/ui/IconPickerModal.tsx +0 -273
  343. package/apps/dashboard/src/components/ui/InfoBanner.jsx +0 -39
  344. package/apps/dashboard/src/components/ui/Logo.tsx +0 -14
  345. package/apps/dashboard/src/components/ui/Modal.tsx +0 -117
  346. package/apps/dashboard/src/components/ui/PageContainer.tsx +0 -12
  347. package/apps/dashboard/src/components/ui/SectionContainer.jsx +0 -7
  348. package/apps/dashboard/src/components/ui/SlidingToggle.tsx +0 -128
  349. package/apps/dashboard/src/components/ui/Toast.tsx +0 -29
  350. package/apps/dashboard/src/components/ui/button.tsx +0 -58
  351. package/apps/dashboard/src/components/ui/card.tsx +0 -60
  352. package/apps/dashboard/src/components/ui/input.tsx +0 -20
  353. package/apps/dashboard/src/components/ui/label.tsx +0 -19
  354. package/apps/dashboard/src/components/ui/select.tsx +0 -10
  355. package/apps/dashboard/src/components/ui/textarea.tsx +0 -9
  356. package/apps/dashboard/src/constants/lang-colors.ts +0 -25
  357. package/apps/dashboard/src/constants/mock.ts +0 -38
  358. package/apps/dashboard/src/context/AuthContext.tsx +0 -91
  359. package/apps/dashboard/src/context/CloudContext.tsx +0 -275
  360. package/apps/dashboard/src/context/DeploymentContext.tsx +0 -71
  361. package/apps/dashboard/src/context/GitHubContext.tsx +0 -288
  362. package/apps/dashboard/src/context/ModalContext.tsx +0 -300
  363. package/apps/dashboard/src/context/NetworkContext.tsx +0 -32
  364. package/apps/dashboard/src/context/ProjectSettingsContext.tsx +0 -727
  365. package/apps/dashboard/src/context/ToastContext.tsx +0 -129
  366. package/apps/dashboard/src/context/deployment/index.ts +0 -3
  367. package/apps/dashboard/src/context/deployment/types.ts +0 -183
  368. package/apps/dashboard/src/context/deployment/useDeploymentBuild.ts +0 -547
  369. package/apps/dashboard/src/context/deployment/useDeploymentConfig.ts +0 -176
  370. package/apps/dashboard/src/hooks/useBuildConnection.ts +0 -334
  371. package/apps/dashboard/src/hooks/useMonitorStream.ts +0 -146
  372. package/apps/dashboard/src/hooks/useProjectData.ts +0 -110
  373. package/apps/dashboard/src/hooks/useSSEConnection.ts +0 -465
  374. package/apps/dashboard/src/hooks/useSSEStream.ts +0 -309
  375. package/apps/dashboard/src/hooks/useSessions.ts +0 -104
  376. package/apps/dashboard/src/hooks/useSetupStream.ts +0 -223
  377. package/apps/dashboard/src/i18n/dictionaries/ar.json +0 -218
  378. package/apps/dashboard/src/i18n/dictionaries/en.json +0 -218
  379. package/apps/dashboard/src/i18n/index.ts +0 -16
  380. package/apps/dashboard/src/lib/api/ai.ts +0 -22
  381. package/apps/dashboard/src/lib/api/auth.ts +0 -13
  382. package/apps/dashboard/src/lib/api/client.ts +0 -199
  383. package/apps/dashboard/src/lib/api/cloud.ts +0 -15
  384. package/apps/dashboard/src/lib/api/deploy.ts +0 -58
  385. package/apps/dashboard/src/lib/api/domains.ts +0 -13
  386. package/apps/dashboard/src/lib/api/endpoints.ts +0 -129
  387. package/apps/dashboard/src/lib/api/github.ts +0 -31
  388. package/apps/dashboard/src/lib/api/icons.ts +0 -12
  389. package/apps/dashboard/src/lib/api/index.ts +0 -41
  390. package/apps/dashboard/src/lib/api/projects.ts +0 -153
  391. package/apps/dashboard/src/lib/api/sandbox.ts +0 -14
  392. package/apps/dashboard/src/lib/api/settings.ts +0 -21
  393. package/apps/dashboard/src/lib/api/system.ts +0 -159
  394. package/apps/dashboard/src/lib/auth-client.ts +0 -54
  395. package/apps/dashboard/src/lib/country.ts +0 -25
  396. package/apps/dashboard/src/lib/server/api.ts +0 -140
  397. package/apps/dashboard/src/lib/server/session.ts +0 -103
  398. package/apps/dashboard/src/lib/sseClient.ts +0 -241
  399. package/apps/dashboard/src/lib/sseMessageProcessors.ts +0 -323
  400. package/apps/dashboard/src/lib/utils.ts +0 -6
  401. package/apps/dashboard/src/proxy.ts +0 -46
  402. package/apps/dashboard/src/styles/Toast.module.css +0 -92
  403. package/apps/dashboard/src/styles/fonts.css +0 -93
  404. package/apps/dashboard/src/styles/theme.css +0 -336
  405. package/apps/dashboard/src/types/research.ts +0 -42
  406. package/apps/dashboard/src/utils/SSEParser.js +0 -150
  407. package/apps/dashboard/src/utils/authWindow.ts +0 -143
  408. package/apps/dashboard/src/utils/codeTheme.ts +0 -127
  409. package/apps/dashboard/src/utils/colors.json +0 -2810
  410. package/apps/dashboard/src/utils/date.ts +0 -121
  411. package/apps/dashboard/src/utils/deployment.ts +0 -128
  412. package/apps/dashboard/src/utils/deploymentPhaseDetector.ts +0 -232
  413. package/apps/dashboard/src/utils/extToLang.js +0 -103
  414. package/apps/dashboard/src/utils/github.ts +0 -62
  415. package/apps/dashboard/src/utils/icons.js +0 -46
  416. package/apps/dashboard/src/utils/repoSlug.ts +0 -110
  417. package/apps/dashboard/src/utils/research-api.ts +0 -163
  418. package/apps/dashboard/src/utils/suggestions.ts +0 -84
  419. package/apps/dashboard/src/utils/theme.js +0 -1
  420. package/apps/dashboard/src/utils/ui-helpers.tsx +0 -30
  421. package/apps/dashboard/src/utils/upload.js +0 -12
  422. package/apps/dashboard/tsconfig.json +0 -33
  423. package/apps/desktop/forge.config.json +0 -36
  424. package/apps/desktop/package.json +0 -26
  425. package/apps/desktop/scripts/dev.mjs +0 -58
  426. package/apps/desktop/src/main/index.ts +0 -675
  427. package/apps/desktop/src/main/types/desktop.d.ts +0 -33
  428. package/apps/desktop/src/preload/index.ts +0 -88
  429. package/apps/desktop/src/renderer/index.html +0 -462
  430. package/apps/desktop/src/renderer/onboarding.js +0 -511
  431. package/apps/desktop/src/renderer/styles.css +0 -1139
  432. package/apps/desktop/tsconfig.json +0 -17
  433. package/apps/web/.source/browser.ts +0 -13
  434. package/apps/web/.source/dynamic.ts +0 -8
  435. package/apps/web/.source/server.ts +0 -22
  436. package/apps/web/.source/source.config.mjs +0 -20
  437. package/apps/web/Dockerfile +0 -22
  438. package/apps/web/content/blog/how-ai-builds-work.mdx +0 -55
  439. package/apps/web/content/blog/introducing-openship.mdx +0 -46
  440. package/apps/web/content/blog/self-hosting-cost-breakdown.mdx +0 -59
  441. package/apps/web/content/docs/_meta.json +0 -14
  442. package/apps/web/content/docs/api.mdx +0 -98
  443. package/apps/web/content/docs/cli.mdx +0 -80
  444. package/apps/web/content/docs/first-deployment.mdx +0 -56
  445. package/apps/web/content/docs/index.mdx +0 -27
  446. package/apps/web/content/docs/installation.mdx +0 -65
  447. package/apps/web/content/docs/quickstart.mdx +0 -45
  448. package/apps/web/next-env.d.ts +0 -6
  449. package/apps/web/next.config.mjs +0 -20
  450. package/apps/web/package.json +0 -33
  451. package/apps/web/postcss.config.mjs +0 -5
  452. package/apps/web/public/android-chrome-192x192.png +0 -0
  453. package/apps/web/public/android-chrome-512x512.png +0 -0
  454. package/apps/web/public/apple-touch-icon.png +0 -0
  455. package/apps/web/public/favicon-16x16.png +0 -0
  456. package/apps/web/public/favicon-32x32.png +0 -0
  457. package/apps/web/public/favicon.ico +0 -0
  458. package/apps/web/public/site.webmanifest +0 -1
  459. package/apps/web/source.config.ts +0 -17
  460. package/apps/web/src/app/(marketing)/layout.tsx +0 -9
  461. package/apps/web/src/app/(marketing)/page.tsx +0 -2
  462. package/apps/web/src/app/(marketing)/pricing/page.tsx +0 -10
  463. package/apps/web/src/app/blog/[...slug]/page.tsx +0 -247
  464. package/apps/web/src/app/blog/blog.css +0 -575
  465. package/apps/web/src/app/blog/layout.tsx +0 -50
  466. package/apps/web/src/app/blog/page.tsx +0 -235
  467. package/apps/web/src/app/docs/[[...slug]]/page.tsx +0 -67
  468. package/apps/web/src/app/docs/layout.tsx +0 -62
  469. package/apps/web/src/app/docs/toc-theme.css +0 -71
  470. package/apps/web/src/app/download/page.tsx +0 -396
  471. package/apps/web/src/app/globals.css +0 -20
  472. package/apps/web/src/app/layout.tsx +0 -70
  473. package/apps/web/src/app/page.tsx +0 -51
  474. package/apps/web/src/app/robots.ts +0 -15
  475. package/apps/web/src/app/sitemap.ts +0 -35
  476. package/apps/web/src/components/blog/share-sidebar.tsx +0 -81
  477. package/apps/web/src/components/blog/writer-sidebar.tsx +0 -81
  478. package/apps/web/src/components/landing/ai-native.tsx +0 -169
  479. package/apps/web/src/components/landing/backups.tsx +0 -139
  480. package/apps/web/src/components/landing/cdn.tsx +0 -109
  481. package/apps/web/src/components/landing/coming-soon.tsx +0 -180
  482. package/apps/web/src/components/landing/dark-section.tsx +0 -166
  483. package/apps/web/src/components/landing/dashboard.tsx +0 -407
  484. package/apps/web/src/components/landing/developer-experience.tsx +0 -224
  485. package/apps/web/src/components/landing/dns-domains.tsx +0 -146
  486. package/apps/web/src/components/landing/download-button.tsx +0 -151
  487. package/apps/web/src/components/landing/features/ai-visual.tsx +0 -48
  488. package/apps/web/src/components/landing/features/cloud-visual.tsx +0 -44
  489. package/apps/web/src/components/landing/features/git-visual.tsx +0 -61
  490. package/apps/web/src/components/landing/features/index.tsx +0 -642
  491. package/apps/web/src/components/landing/features/infra-visual.tsx +0 -69
  492. package/apps/web/src/components/landing/features/rollback-visual.tsx +0 -42
  493. package/apps/web/src/components/landing/features/ssl-visual.tsx +0 -41
  494. package/apps/web/src/components/landing/features/stacks-visual.tsx +0 -54
  495. package/apps/web/src/components/landing/final-cta.tsx +0 -116
  496. package/apps/web/src/components/landing/footer.tsx +0 -145
  497. package/apps/web/src/components/landing/hero.tsx +0 -110
  498. package/apps/web/src/components/landing/how-it-works.tsx +0 -210
  499. package/apps/web/src/components/landing/index.ts +0 -21
  500. package/apps/web/src/components/landing/mail-server.tsx +0 -122
  501. package/apps/web/src/components/landing/navbar.tsx +0 -199
  502. package/apps/web/src/components/landing/no-lockin.tsx +0 -185
  503. package/apps/web/src/components/landing/open-source-cta.tsx +0 -151
  504. package/apps/web/src/components/landing/portability.tsx +0 -190
  505. package/apps/web/src/components/landing/pricing.tsx +0 -263
  506. package/apps/web/src/components/landing/scaling.tsx +0 -209
  507. package/apps/web/src/components/landing/why-openship.tsx +0 -291
  508. package/apps/web/src/hooks/use-gsap-scroll.ts +0 -158
  509. package/apps/web/src/hooks/use-platform.ts +0 -86
  510. package/apps/web/src/lib/source.ts +0 -12
  511. package/apps/web/src/styles/fonts.css +0 -84
  512. package/apps/web/src/styles/landing.css +0 -951
  513. package/apps/web/src/styles/theme.css +0 -227
  514. package/apps/web/tsconfig.json +0 -16
  515. package/bun.lock +0 -3260
  516. package/docker-compose.yml +0 -90
  517. package/docs/screenshots/.gitkeep +0 -0
  518. package/docs/screenshots/screen.png +0 -0
  519. package/openship.code-workspace +0 -7
  520. package/packages/adapters/docs/ARCHITECTURE.md +0 -160
  521. package/packages/adapters/docs/BUILD-PIPELINE.md +0 -171
  522. package/packages/adapters/docs/CLOUD.md +0 -239
  523. package/packages/adapters/docs/EXECUTOR.md +0 -174
  524. package/packages/adapters/docs/LOG-STREAMING.md +0 -175
  525. package/packages/adapters/docs/SYSTEM.md +0 -191
  526. package/packages/adapters/package.json +0 -32
  527. package/packages/adapters/src/index.ts +0 -144
  528. package/packages/adapters/src/infra/cloud.ts +0 -42
  529. package/packages/adapters/src/infra/index.ts +0 -9
  530. package/packages/adapters/src/infra/noop.ts +0 -27
  531. package/packages/adapters/src/infra/traefik.ts +0 -297
  532. package/packages/adapters/src/infra/types.ts +0 -36
  533. package/packages/adapters/src/platform.ts +0 -255
  534. package/packages/adapters/src/runtime/bare.ts +0 -567
  535. package/packages/adapters/src/runtime/build-pipeline.ts +0 -237
  536. package/packages/adapters/src/runtime/cloud.ts +0 -791
  537. package/packages/adapters/src/runtime/deploy-pipeline.ts +0 -146
  538. package/packages/adapters/src/runtime/docker.ts +0 -443
  539. package/packages/adapters/src/runtime/index.ts +0 -69
  540. package/packages/adapters/src/runtime/local-build.ts +0 -112
  541. package/packages/adapters/src/runtime/transfer.ts +0 -82
  542. package/packages/adapters/src/runtime/types.ts +0 -138
  543. package/packages/adapters/src/system/catalog.ts +0 -188
  544. package/packages/adapters/src/system/checks.ts +0 -228
  545. package/packages/adapters/src/system/components.ts +0 -45
  546. package/packages/adapters/src/system/debug.ts +0 -18
  547. package/packages/adapters/src/system/environment.ts +0 -168
  548. package/packages/adapters/src/system/errors.ts +0 -34
  549. package/packages/adapters/src/system/executor.ts +0 -600
  550. package/packages/adapters/src/system/index.ts +0 -58
  551. package/packages/adapters/src/system/installer.ts +0 -310
  552. package/packages/adapters/src/system/setup.ts +0 -442
  553. package/packages/adapters/src/system/state.ts +0 -96
  554. package/packages/adapters/src/system/types.ts +0 -116
  555. package/packages/adapters/src/toolchain/catalog.ts +0 -439
  556. package/packages/adapters/src/toolchain/checks.ts +0 -181
  557. package/packages/adapters/src/toolchain/index.ts +0 -38
  558. package/packages/adapters/src/toolchain/installer.ts +0 -189
  559. package/packages/adapters/src/toolchain/types.ts +0 -84
  560. package/packages/adapters/src/types.ts +0 -277
  561. package/packages/adapters/tsconfig.json +0 -11
  562. package/packages/core/package.json +0 -27
  563. package/packages/core/src/constants.ts +0 -71
  564. package/packages/core/src/errors.ts +0 -49
  565. package/packages/core/src/index.ts +0 -6
  566. package/packages/core/src/stacks.ts +0 -778
  567. package/packages/core/src/system.ts +0 -111
  568. package/packages/core/src/types.ts +0 -68
  569. package/packages/core/src/utils.ts +0 -43
  570. package/packages/core/tsconfig.json +0 -11
  571. package/packages/db/drizzle/0000_init.sql +0 -231
  572. package/packages/db/drizzle/0001_add_server_name.sql +0 -1
  573. package/packages/db/drizzle/meta/_journal.json +0 -20
  574. package/packages/db/drizzle.config.ts +0 -10
  575. package/packages/db/package.json +0 -44
  576. package/packages/db/src/client.ts +0 -119
  577. package/packages/db/src/index.ts +0 -60
  578. package/packages/db/src/repos/account.repo.ts +0 -92
  579. package/packages/db/src/repos/deployment.repo.ts +0 -168
  580. package/packages/db/src/repos/domain.repo.ts +0 -102
  581. package/packages/db/src/repos/git-installation.repo.ts +0 -95
  582. package/packages/db/src/repos/index.ts +0 -43
  583. package/packages/db/src/repos/instance-settings.repo.ts +0 -43
  584. package/packages/db/src/repos/project.repo.ts +0 -159
  585. package/packages/db/src/repos/session.repo.ts +0 -82
  586. package/packages/db/src/repos/settings.repo.ts +0 -51
  587. package/packages/db/src/repos/user.repo.ts +0 -94
  588. package/packages/db/src/schema/auth.ts +0 -56
  589. package/packages/db/src/schema/deployment.ts +0 -87
  590. package/packages/db/src/schema/domain.ts +0 -46
  591. package/packages/db/src/schema/github.ts +0 -24
  592. package/packages/db/src/schema/index.ts +0 -6
  593. package/packages/db/src/schema/project.ts +0 -117
  594. package/packages/db/src/schema/settings.ts +0 -103
  595. package/packages/db/tsconfig.json +0 -11
  596. package/packages/ui/package.json +0 -38
  597. package/packages/ui/src/components/badge.tsx +0 -29
  598. package/packages/ui/src/components/button.tsx +0 -44
  599. package/packages/ui/src/components/card.tsx +0 -26
  600. package/packages/ui/src/components/status-dot.tsx +0 -25
  601. package/packages/ui/src/globals.css +0 -18
  602. package/packages/ui/src/index.tsx +0 -8
  603. package/packages/ui/src/lib/cn.ts +0 -7
  604. package/packages/ui/tsconfig.json +0 -14
  605. package/pnpm-workspace.yaml +0 -3
  606. package/tsconfig.base.json +0 -18
  607. package/turbo.json +0 -36
@@ -1,189 +0,0 @@
1
- /**
2
- * Toolchain installers — install language runtimes on bare metal.
3
- *
4
- * Same pattern as system/installer.ts:
5
- * 1. Resolve environment profile (OS, arch, package manager)
6
- * 2. Get install plan from catalog
7
- * 3. Stream the install command output
8
- * 4. Verify installation
9
- *
10
- * Installs run sequentially — dependencies first (e.g. ruby before bundler).
11
- * Tools with `providedBy` are skipped if their parent was just installed.
12
- */
13
-
14
- import type { CommandExecutor, LogEntry } from "../types";
15
- import type { ToolchainInstallResult } from "./types";
16
- import { toolchainCatalog } from "./catalog";
17
- import { checkTool } from "./checks";
18
- import { resolveEnvironment } from "../system/environment";
19
- import { systemDebug, formatDuration } from "../system/debug";
20
-
21
- // ─── Single tool install ────────────────────────────────────────────────────
22
-
23
- /**
24
- * Install a single tool. Streams output via onLog callback.
25
- * Returns the install result (success/failure + version).
26
- */
27
- export async function installTool(
28
- executor: CommandExecutor,
29
- name: string,
30
- onLog?: (log: LogEntry) => void,
31
- requiredVersion?: string,
32
- ): Promise<ToolchainInstallResult> {
33
- const startedAt = Date.now();
34
- const recipe = toolchainCatalog.checks[name];
35
-
36
- if (!recipe) {
37
- return { tool: name, success: false, error: `Unknown tool: ${name}` };
38
- }
39
-
40
- // If tool is provided by a parent, check if it's already available
41
- // (parent install may have brought it in)
42
- if (recipe.providedBy && !toolchainCatalog.installs[name]) {
43
- const status = await checkTool(executor, name, { minVersion: requiredVersion });
44
- if (status.healthy) {
45
- return { tool: name, success: true, version: status.version };
46
- }
47
- return {
48
- tool: name,
49
- success: false,
50
- error: `${recipe.label} should be installed by ${recipe.providedBy}`,
51
- };
52
- }
53
-
54
- const factory = toolchainCatalog.installs[name];
55
- if (!factory) {
56
- return { tool: name, success: false, error: `No installer for ${name}` };
57
- }
58
-
59
- const profile = await resolveEnvironment(executor);
60
- const plan = factory(profile);
61
-
62
- if (!plan.supported) {
63
- const msg = plan.unsupportedReason ?? `${recipe.label} installation not supported on this system`;
64
- onLog?.({
65
- timestamp: new Date().toISOString(),
66
- message: msg,
67
- level: "error",
68
- });
69
- return { tool: name, success: false, error: msg };
70
- }
71
-
72
- systemDebug("toolchain", `install:start ${name}`);
73
- onLog?.({
74
- timestamp: new Date().toISOString(),
75
- message: `Installing ${recipe.label}...`,
76
- level: "info",
77
- });
78
-
79
- try {
80
- // Run the install command with streaming output
81
- const { code } = await executor.streamExec(plan.installCommand!, (entry) => {
82
- onLog?.(entry);
83
- });
84
-
85
- if (code !== 0) {
86
- // Try fallback commands if available
87
- if (plan.fallbackInstallCommands?.length) {
88
- for (const fallback of plan.fallbackInstallCommands) {
89
- onLog?.({
90
- timestamp: new Date().toISOString(),
91
- message: `Primary install failed, trying fallback...`,
92
- level: "warn",
93
- });
94
- const fb = await executor.streamExec(fallback, (entry) => onLog?.(entry));
95
- if (fb.code === 0) break;
96
- }
97
- } else {
98
- throw new Error(`Install command failed with exit code ${code}`);
99
- }
100
- }
101
-
102
- // Run start command if needed
103
- if (plan.startCommand) {
104
- await executor.streamExec(plan.startCommand, (entry) => onLog?.(entry));
105
- }
106
-
107
- // Verify installation
108
- const verifyCmd = plan.verifyCommand ?? recipe.versionCommand;
109
- const verifyResult = await executor.exec(verifyCmd, { timeout: 10_000 }).catch(() => null);
110
-
111
- if (!verifyResult) {
112
- throw new Error(`${recipe.label} installed but verification failed`);
113
- }
114
-
115
- const version = recipe.parseVersion(verifyResult);
116
- systemDebug("toolchain", `install:done ${name} v${version} (${formatDuration(startedAt)})`);
117
-
118
- onLog?.({
119
- timestamp: new Date().toISOString(),
120
- message: `${recipe.label} ${version} installed successfully`,
121
- level: "info",
122
- });
123
-
124
- return { tool: name, success: true, version };
125
- } catch (err) {
126
- const msg = err instanceof Error ? err.message : String(err);
127
- systemDebug("toolchain", `install:fail ${name} (${formatDuration(startedAt)}) ${msg}`);
128
-
129
- onLog?.({
130
- timestamp: new Date().toISOString(),
131
- message: `Failed to install ${recipe.label}: ${msg}`,
132
- level: "error",
133
- });
134
-
135
- return { tool: name, success: false, error: msg };
136
- }
137
- }
138
-
139
- // ─── Batch install ──────────────────────────────────────────────────────────
140
-
141
- /**
142
- * Install multiple tools sequentially. Respects dependency order:
143
- * parent tools (node, ruby, python3) are installed before their
144
- * children (npm, bundler, pip).
145
- *
146
- * Returns results for each tool.
147
- */
148
- export async function installTools(
149
- executor: CommandExecutor,
150
- toolNames: readonly string[],
151
- onLog?: (log: LogEntry) => void,
152
- requiredVersions?: Readonly<Record<string, string>>,
153
- ): Promise<ToolchainInstallResult[]> {
154
- // Sort: parent tools first, children after
155
- const sorted = [...toolNames].sort((a, b) => {
156
- const aEntry = toolchainCatalog.checks[a];
157
- const bEntry = toolchainCatalog.checks[b];
158
- // Tools with providedBy go after their parent
159
- if (aEntry?.providedBy === b) return 1;
160
- if (bEntry?.providedBy === a) return -1;
161
- // Installable tools first
162
- if (aEntry?.installable && !bEntry?.installable) return -1;
163
- if (!aEntry?.installable && bEntry?.installable) return 1;
164
- return 0;
165
- });
166
-
167
- const results: ToolchainInstallResult[] = [];
168
-
169
- for (const name of sorted) {
170
- // Skip if already healthy (e.g. parent install brought it in)
171
- const status = await checkTool(executor, name, {
172
- minVersion: requiredVersions?.[name],
173
- });
174
- if (status.healthy) {
175
- onLog?.({
176
- timestamp: new Date().toISOString(),
177
- message: `${status.label} ${status.version ?? ""} already installed, skipping`,
178
- level: "info",
179
- });
180
- results.push({ tool: name, success: true, version: status.version });
181
- continue;
182
- }
183
-
184
- const result = await installTool(executor, name, onLog, requiredVersions?.[name]);
185
- results.push(result);
186
- }
187
-
188
- return results;
189
- }
@@ -1,84 +0,0 @@
1
- /**
2
- * Toolchain types — stack-level tool validation and installation.
3
- *
4
- * The toolchain layer ensures a bare-metal server has the right
5
- * language runtimes installed BEFORE a build starts. It mirrors
6
- * the system component catalog (Docker/Traefik/Git) but for
7
- * language-specific tools (Node, Go, Rust, Python, etc.).
8
- *
9
- * The source of truth for WHICH tools a language needs lives in
10
- * `@repo/core` → `LANGUAGES[lang].requiredTools`. This layer
11
- * provides HOW to check and install them.
12
- */
13
-
14
- // ─── Tool status ─────────────────────────────────────────────────────────────
15
-
16
- export interface ToolchainStatus {
17
- /** Tool identifier (e.g. "node", "go", "rustc") */
18
- name: string;
19
- /** Human-readable label (e.g. "Node.js", "Go", "Rust compiler") */
20
- label: string;
21
- /** Whether the tool is installed and available */
22
- installed: boolean;
23
- /** Detected version string */
24
- version?: string;
25
- /** Minimum required version for this stack/toolchain check */
26
- requiredVersion?: string;
27
- /** Ready to use */
28
- healthy: boolean;
29
- /** Human-readable status message */
30
- message: string;
31
- }
32
-
33
- // ─── Aggregate result ────────────────────────────────────────────────────────
34
-
35
- export interface ToolchainCheckResult {
36
- /** Status of each required tool */
37
- tools: ToolchainStatus[];
38
- /** All tools present and healthy */
39
- ready: boolean;
40
- /** Names of missing tools */
41
- missing: string[];
42
- /** Names of installed but too-old tools */
43
- outdated: string[];
44
- }
45
-
46
- // ─── Catalog entry types ─────────────────────────────────────────────────────
47
-
48
- /** Recipe for checking whether a tool is installed. */
49
- export interface ToolchainCheckEntry {
50
- /** Human-readable label */
51
- label: string;
52
- /** Shell command to detect the tool + version */
53
- versionCommand: string;
54
- /** Extract a clean version string from command output */
55
- parseVersion: (output: string) => string;
56
- /** Message when the tool is not found */
57
- missingMessage: string;
58
- /**
59
- * Whether this tool can be auto-installed.
60
- * Some tools (npm, cargo, mix) ship with their parent — no separate install.
61
- */
62
- installable: boolean;
63
- /** Parent tool that provides this one (e.g. "npm" → "node") */
64
- providedBy?: string;
65
- }
66
-
67
- /** Plan for installing a tool — same shape as system catalog. */
68
- export interface ToolchainInstallPlan {
69
- supported: boolean;
70
- unsupportedReason?: string;
71
- installCommand?: string;
72
- startCommand?: string;
73
- verifyCommand?: string;
74
- fallbackInstallCommands?: string[];
75
- }
76
-
77
- // ─── Install result ──────────────────────────────────────────────────────────
78
-
79
- export interface ToolchainInstallResult {
80
- tool: string;
81
- success: boolean;
82
- version?: string;
83
- error?: string;
84
- }
@@ -1,277 +0,0 @@
1
- /**
2
- * Shared types used across all adapter layers.
3
- *
4
- * These are pure data types — no adapter interfaces here.
5
- * Resource configs, build/deploy configs, log entries, container info,
6
- * routing configs, and SSL results.
7
- */
8
-
9
- // ─── Resource configuration ──────────────────────────────────────────────────
10
-
11
- export interface ResourceConfig {
12
- /** CPU cores (fractional, e.g. 0.5, 1.0, 2.0) — the universal unit all runtimes use */
13
- cpuCores: number;
14
- /** Memory limit in megabytes */
15
- memoryMb: number;
16
- /** Writable disk in megabytes */
17
- diskMb: number;
18
- }
19
-
20
- /** Single source of truth — production resources */
21
- export const DEFAULT_RESOURCE_CONFIG: ResourceConfig = {
22
- cpuCores: 1,
23
- memoryMb: 512,
24
- diskMb: 4096,
25
- };
26
-
27
- /** Single source of truth — build resources */
28
- export const DEFAULT_BUILD_RESOURCE_CONFIG: ResourceConfig = {
29
- cpuCores: 2,
30
- memoryMb: 4096,
31
- diskMb: 10240,
32
- };
33
-
34
- // ─── Build / Deploy types ────────────────────────────────────────────────────
35
-
36
- export type ContainerStatus =
37
- | "queued"
38
- | "building"
39
- | "deploying"
40
- | "running"
41
- | "stopped"
42
- | "failed"
43
- | "cancelled";
44
-
45
- export type BuildStrategy = "server" | "local";
46
-
47
- export interface BuildConfig {
48
- /** Unique build session id */
49
- sessionId: string;
50
- /** Project identifier */
51
- projectId: string;
52
- /** URL slug for the project (e.g. "my-app") */
53
- slug?: string;
54
- /** Git repo clone URL (required when source is a git repo) */
55
- repoUrl: string;
56
- /** Branch to build */
57
- branch: string;
58
- /** Commit SHA (optional, defaults to HEAD) */
59
- commitSha?: string;
60
- /** Absolute path to a local project directory (used instead of repoUrl for local projects) */
61
- localPath?: string;
62
- /** Where the build runs: "server" (clone/copy to workspace) or "local" (build on host, transfer dist) */
63
- buildStrategy?: BuildStrategy;
64
- /** Detected framework / stack */
65
- stack: string;
66
- /** Docker image for the build container (e.g. "node:22", "oven/bun:latest") */
67
- buildImage: string;
68
- /** Package manager (npm | yarn | pnpm | bun) */
69
- packageManager: string;
70
- /** Shell command to install dependencies */
71
- installCommand: string;
72
- /** Shell command to build the project */
73
- buildCommand: string;
74
- /** Output directory to collect after build */
75
- outputDirectory: string;
76
- /** Environment variables injected at build time */
77
- envVars: Record<string, string>;
78
- /** Resources allocated for the build container */
79
- resources: ResourceConfig;
80
- /** Ephemeral token for cloning private repos — never persisted */
81
- gitToken?: string;
82
- }
83
-
84
- export interface DeployConfig {
85
- /** Unique deployment id */
86
- deploymentId: string;
87
- /** Project identifier */
88
- projectId: string;
89
- /** Reference to the completed build session */
90
- buildSessionId: string;
91
- /** Opaque reference to the built artifact (workspace ID, docker image tag, etc.) */
92
- imageRef?: string;
93
- /** "production" | "preview" */
94
- environment: string;
95
- /** Port the application listens on */
96
- port: number;
97
- /** Shell command to start the application (e.g. "npm start", "node server.js") */
98
- startCommand?: string;
99
- /** Detected framework / stack (e.g. "nextjs", "express") */
100
- stack?: string;
101
- /** Environment variables injected at runtime */
102
- envVars: Record<string, string>;
103
- /** Resources allocated for the production container */
104
- resources: ResourceConfig;
105
- /** Container restart policy */
106
- restartPolicy?: "always" | "on-failure" | "no";
107
- /** URL slug for the deployment (e.g. "my-app" → my-app.opsh.io) */
108
- slug?: string;
109
- /** Custom domain to bind via DNS (e.g. "app.example.com") — separate from free subdomain */
110
- customDomain?: string;
111
- /** Files/directories to copy into /app/production/ before starting the workload.
112
- * When set, the workload runs from /app/production/ instead of /app/. */
113
- productionPaths?: string[];
114
- }
115
-
116
- export interface BuildResult {
117
- sessionId: string;
118
- status: ContainerStatus;
119
- /** Opaque reference to the built image / snapshot */
120
- imageRef?: string;
121
- durationMs?: number;
122
- }
123
-
124
- export interface DeploymentResult {
125
- deploymentId: string;
126
- containerId?: string;
127
- url?: string;
128
- status: ContainerStatus;
129
- }
130
-
131
- /** Pipeline step identifiers for stepper UI */
132
- export type BuildStep = "clone" | "install" | "build" | "deploy";
133
-
134
- export const BUILD_STEPS: readonly BuildStep[] = ["clone", "install", "build", "deploy"] as const;
135
-
136
- export interface LogEntry {
137
- timestamp: string;
138
- message: string;
139
- level: "info" | "warn" | "error";
140
- /** When present, this entry is a step event for the stepper UI */
141
- step?: BuildStep;
142
- /** Step lifecycle status */
143
- stepStatus?: "running" | "completed" | "failed" | "skipped";
144
- /** Pre-encoded base64 data — passed through to SSE without re-encoding. */
145
- rawData?: string;
146
- }
147
-
148
- export interface ContainerInfo {
149
- containerId: string;
150
- status: ContainerStatus;
151
- /** Container IP on the internal network */
152
- ip?: string;
153
- /** Mapped port on host (if applicable) */
154
- hostPort?: number;
155
- /** Uptime in seconds */
156
- uptimeSeconds?: number;
157
- /** Current resource consumption */
158
- usage?: ResourceUsage;
159
- }
160
-
161
- export interface ResourceUsage {
162
- cpuPercent: number;
163
- memoryMb: number;
164
- diskMb: number;
165
- networkRxBytes: number;
166
- networkTxBytes: number;
167
- }
168
-
169
- export interface RouteConfig {
170
- /** External domain (e.g. "my-app.example.com") */
171
- domain: string;
172
- /** Target container IP + port */
173
- targetUrl: string;
174
- /** Whether TLS is enabled */
175
- tls: boolean;
176
- }
177
-
178
- export interface SslResult {
179
- domain: string;
180
- expiresAt: string;
181
- issuer: string;
182
- }
183
-
184
- // ─── Log streaming callback ──────────────────────────────────────────────────
185
-
186
- export type LogCallback = (entry: LogEntry) => void;
187
-
188
- // ─── SSH configuration ──────────────────────────────────────────────────────
189
-
190
- /**
191
- * SSH connection configuration — shared across layers.
192
- *
193
- * Used by:
194
- * - System layer: execute setup commands on remote servers
195
- * - Infra layer: write Traefik config on remote servers
196
- * - Platform: wires SSH config to both layers
197
- *
198
- * Security:
199
- * - Supports private key, SSH agent, or password auth
200
- * - Private keys should be encrypted at rest, decrypted in memory
201
- */
202
- export interface SshConfig {
203
- host: string;
204
- port?: number;
205
- username?: string;
206
- /** SSH password for password-based auth */
207
- password?: string;
208
- /** Decrypted PEM private key — never stored in plaintext on disk */
209
- privateKey?: string;
210
- /** Passphrase for the key (if the PEM itself is encrypted) */
211
- privateKeyPassphrase?: string;
212
- /** SSH agent socket (alternative to privateKey) */
213
- sshAgent?: string;
214
- }
215
-
216
- // ─── Command execution abstraction ──────────────────────────────────────────
217
-
218
- /**
219
- * Abstraction for running commands and file operations on a target machine.
220
- *
221
- * Two implementations:
222
- * - LocalExecutor → child_process + fs (same machine)
223
- * - SshExecutor → ssh2 (remote server)
224
- *
225
- * Used by the system layer (checks, installers) and infra layer (Traefik
226
- * config writes) to support both local and remote server management.
227
- */
228
- export interface CommandExecutor {
229
- /** Run a command, resolve to stdout. Rejects on non-zero exit. */
230
- exec(command: string, opts?: { timeout?: number }): Promise<string>;
231
-
232
- /**
233
- * Run a command with real-time log streaming.
234
- * Resolves when the command exits — the log callback fires for each line.
235
- */
236
- streamExec(
237
- command: string,
238
- onLog: (log: LogEntry) => void,
239
- ): Promise<{ code: number; output: string }>;
240
-
241
- /** Write content to a file on the target machine. Creates dirs as needed. */
242
- writeFile(path: string, content: string): Promise<void>;
243
-
244
- /** Read a file from the target machine. */
245
- readFile(path: string): Promise<string>;
246
-
247
- /** Check if a file or directory exists. */
248
- exists(path: string): Promise<boolean>;
249
-
250
- /** Create a directory (recursive). */
251
- mkdir(path: string): Promise<void>;
252
-
253
- /** Remove a file or directory recursively. Silently succeeds if already gone. */
254
- rm(path: string): Promise<void>;
255
-
256
- /**
257
- * Transfer a local directory into the target environment.
258
- *
259
- * LocalExecutor: cp -a (same filesystem).
260
- * SshExecutor: tar locally → pipe through SSH → extract remotely.
261
- *
262
- * By default SshExecutor excludes `node_modules` and `.git` (source transfer).
263
- * Pass `options.excludes` to override (e.g. `[]` to include everything for
264
- * build output transfer).
265
- *
266
- * Rejects on failure.
267
- */
268
- transferIn(
269
- localPath: string,
270
- remotePath: string,
271
- onLog?: (log: LogEntry) => void,
272
- options?: { excludes?: string[] },
273
- ): Promise<void>;
274
-
275
- /** Clean up connections / resources. */
276
- dispose(): Promise<void>;
277
- }
@@ -1,11 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.base.json",
3
- "compilerOptions": {
4
- "baseUrl": ".",
5
- "lib": ["ES2022"],
6
- "types": ["node"],
7
- "outDir": "dist"
8
- },
9
- "include": ["src/**/*.ts"],
10
- "exclude": ["node_modules", "dist"]
11
- }
@@ -1,27 +0,0 @@
1
- {
2
- "name": "@repo/core",
3
- "version": "0.1.0",
4
- "type": "module",
5
- "main": "src/index.ts",
6
- "types": "src/index.ts",
7
- "exports": {
8
- ".": {
9
- "types": "./src/index.ts",
10
- "import": "./src/index.ts"
11
- }
12
- },
13
- "scripts": {
14
- "build": "tsup src/index.ts --format esm --dts --clean",
15
- "dev": "tsup src/index.ts --format esm --dts --watch",
16
- "lint": "tsc --noEmit",
17
- "clean": "rm -rf dist .turbo node_modules"
18
- },
19
- "dependencies": {
20
- "zod": "^4.3.6"
21
- },
22
- "devDependencies": {
23
- "@types/node": "^22.13.0",
24
- "tsup": "^8.5.1",
25
- "typescript": "^5.9.3"
26
- }
27
- }
@@ -1,71 +0,0 @@
1
- /**
2
- * Shared constants used across the monorepo.
3
- */
4
-
5
- export const APP_NAME = "Openship";
6
-
7
- export const DEFAULT_PORT = {
8
- web: 3000,
9
- dashboard: 3001,
10
- api: 4000,
11
- } as const;
12
-
13
- export const DEPLOYMENT_STATUSES = [
14
- "queued",
15
- "building",
16
- "deploying",
17
- "ready",
18
- "failed",
19
- "cancelled",
20
- ] as const;
21
-
22
- /**
23
- * Re-export from stacks registry — STACK_IDS replaces the old FRAMEWORKS array.
24
- * Import { STACK_IDS } or { STACKS } from "@repo/core" instead.
25
- */
26
- export { STACK_IDS as FRAMEWORKS } from "./stacks";
27
-
28
- export const PRODUCTION_MODES = ["host", "static", "standalone"] as const;
29
-
30
- export const ENVIRONMENTS = ["production", "preview", "development"] as const;
31
-
32
- export const DOMAIN_STATUSES = ["pending", "active", "failed", "removing"] as const;
33
-
34
- export const SSL_STATUSES = ["none", "provisioning", "active", "expired", "error"] as const;
35
-
36
- /**
37
- * Non-interactive environment variables injected into every build container.
38
- * Prevents interactive prompts and disables telemetry during CI builds.
39
- */
40
- export const BUILD_ENV_VARS: Record<string, string> = {
41
- CI: "true",
42
- DEBIAN_FRONTEND: "noninteractive",
43
- // Force color output even without a TTY (exec API uses pipes, not PTY)
44
- FORCE_COLOR: "1",
45
- TERM: "xterm-256color",
46
- // Framework telemetry
47
- NG_CLI_ANALYTICS: "false",
48
- NEXT_TELEMETRY_DISABLED: "1",
49
- NUXT_TELEMETRY_DISABLED: "1",
50
- ASTRO_TELEMETRY_DISABLED: "1",
51
- GATSBY_TELEMETRY_DISABLED: "1",
52
- DO_NOT_TRACK: "1",
53
- // Package manager
54
- NPM_CONFIG_UPDATE_NOTIFIER: "false",
55
- NPM_CONFIG_AUDIT: "false",
56
- NPM_CONFIG_FUND: "false",
57
- YARN_ENABLE_TELEMETRY: "0",
58
- PNPM_NO_UPDATE_NOTIFIER: "true",
59
- GIT_TERMINAL_PROMPT: "0",
60
- };
61
-
62
- /**
63
- * Re-export from stacks registry — OUTPUT_DIRECTORIES is derived from STACKS.
64
- */
65
- export { OUTPUT_DIRECTORIES } from "./stacks";
66
-
67
- export const PLANS = {
68
- free: { name: "Free", price: 0, buildMinutes: 100, bandwidth: 1 },
69
- pro: { name: "Pro", price: 20, buildMinutes: 1000, bandwidth: 100 },
70
- team: { name: "Team", price: 50, buildMinutes: 5000, bandwidth: 500 },
71
- } as const;