openship 0.1.1 → 0.1.8
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.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5988 -0
- package/dist/server/index.js +324841 -0
- package/dist/server/migrations/0000_init.sql +666 -0
- package/dist/server/migrations/0001_brief_tomorrow_man.sql +47 -0
- package/dist/server/migrations/0002_funny_dazzler.sql +2 -0
- package/dist/server/migrations/0003_third_killer_shrike.sql +1 -0
- package/dist/server/migrations/0004_session_active_org_not_null.sql +10 -0
- package/dist/server/migrations/0005_warm_amazoness.sql +3 -0
- package/dist/server/migrations/0006_lumpy_joystick.sql +1 -0
- package/dist/server/migrations/0007_outgoing_maginty.sql +2 -0
- package/dist/server/migrations/0008_frozen_cutover.sql +3 -0
- package/dist/server/migrations/0009_credits_billing.sql +142 -0
- package/dist/server/migrations/0010_credit_grant_dedupe.sql +14 -0
- package/dist/server/migrations/0011_remove_credit_ledger.sql +23 -0
- package/dist/server/migrations/0012_smart_deploys_and_git_rollback.sql +81 -0
- package/dist/server/migrations/0013_fix_check_run_rollup_unique.sql +38 -0
- package/dist/server/migrations/0014_default_rollback_git.sql +9 -0
- package/dist/server/migrations/0015_billing_idempotency_grants.sql +41 -0
- package/dist/server/migrations/0016_github_auth_high_findings.sql +30 -0
- package/dist/server/migrations/0017_spooky_rumiko_fujikawa.sql +6 -0
- package/dist/server/migrations/0018_calm_shatterstar.sql +1 -0
- package/dist/server/migrations/0019_rename_workspace_install_to_prepare.sql +1 -0
- package/dist/server/migrations/0020_uneven_the_renegades.sql +13 -0
- package/dist/server/migrations/0021_shiny_firestar.sql +2 -0
- package/dist/server/migrations/0022_version_on_success_backfill.sql +6 -0
- package/dist/server/migrations/0023_productive_gorilla_man.sql +17 -0
- package/dist/server/migrations/0024_sleepy_peter_quill.sql +2 -0
- package/dist/server/migrations/0025_smooth_blue_shield.sql +1 -0
- package/dist/server/migrations/0026_mail_backup_source.sql +11 -0
- package/dist/server/migrations/0027_opposite_anthem.sql +6 -0
- package/dist/server/migrations/0028_stale_rogue.sql +18 -0
- package/dist/server/migrations/0029_bouncy_loners.sql +16 -0
- package/dist/server/migrations/0030_bright_darkstar.sql +6 -0
- package/dist/server/migrations/0031_conscious_catseye.sql +13 -0
- package/dist/server/migrations/0032_wet_mimic.sql +51 -0
- package/dist/server/migrations/0033_eminent_molly_hayes.sql +2 -0
- package/dist/server/migrations/meta/0000_snapshot.json +5110 -0
- package/dist/server/migrations/meta/0001_snapshot.json +5257 -0
- package/dist/server/migrations/meta/0002_snapshot.json +5279 -0
- package/dist/server/migrations/meta/0003_snapshot.json +5286 -0
- package/dist/server/migrations/meta/0004_snapshot.json +5286 -0
- package/dist/server/migrations/meta/0005_snapshot.json +5305 -0
- package/dist/server/migrations/meta/0006_snapshot.json +5311 -0
- package/dist/server/migrations/meta/0007_snapshot.json +5323 -0
- package/dist/server/migrations/meta/0016_snapshot.json +6345 -0
- package/dist/server/migrations/meta/0017_snapshot.json +6383 -0
- package/dist/server/migrations/meta/0018_snapshot.json +6390 -0
- package/dist/server/migrations/meta/0019_snapshot.json +6390 -0
- package/dist/server/migrations/meta/0020_snapshot.json +6497 -0
- package/dist/server/migrations/meta/0021_snapshot.json +6509 -0
- package/dist/server/migrations/meta/0022_snapshot.json +6509 -0
- package/dist/server/migrations/meta/0023_snapshot.json +6629 -0
- package/dist/server/migrations/meta/0024_snapshot.json +6641 -0
- package/dist/server/migrations/meta/0025_snapshot.json +6648 -0
- package/dist/server/migrations/meta/0026_snapshot.json +6750 -0
- package/dist/server/migrations/meta/0027_snapshot.json +6757 -0
- package/dist/server/migrations/meta/0028_snapshot.json +6895 -0
- package/dist/server/migrations/meta/0029_snapshot.json +7028 -0
- package/dist/server/migrations/meta/0030_snapshot.json +7066 -0
- package/dist/server/migrations/meta/0031_snapshot.json +7181 -0
- package/dist/server/migrations/meta/0032_snapshot.json +7570 -0
- package/dist/server/migrations/meta/0033_snapshot.json +7597 -0
- package/dist/server/migrations/meta/_journal.json +244 -0
- package/dist/server/pglite/pglite.data +0 -0
- package/dist/server/pglite/pglite.wasm +0 -0
- package/package.json +31 -33
- package/.env.example +0 -38
- package/.nvmrc +0 -1
- package/.prettierrc +0 -7
- package/CONTRIBUTING.md +0 -90
- package/LICENSE +0 -661
- package/README.md +0 -360
- package/apps/api/.env.example +0 -30
- package/apps/api/Dockerfile +0 -22
- package/apps/api/package.json +0 -41
- package/apps/api/src/app.ts +0 -69
- package/apps/api/src/config/env.ts +0 -113
- package/apps/api/src/config/index.ts +0 -1
- package/apps/api/src/index.ts +0 -8
- package/apps/api/src/lib/auth-mode.ts +0 -42
- package/apps/api/src/lib/auth.ts +0 -105
- package/apps/api/src/lib/cache.ts +0 -128
- package/apps/api/src/lib/cloud-auth-proxy.ts +0 -310
- package/apps/api/src/lib/cloud-client.ts +0 -103
- package/apps/api/src/lib/compose-parser.ts +0 -138
- package/apps/api/src/lib/controller-helpers.ts +0 -90
- package/apps/api/src/lib/email-templates.ts +0 -94
- package/apps/api/src/lib/encryption.ts +0 -102
- package/apps/api/src/lib/local-user.ts +0 -65
- package/apps/api/src/lib/mail.ts +0 -48
- package/apps/api/src/lib/notifications.ts +0 -195
- package/apps/api/src/lib/openship-cloud.ts +0 -101
- package/apps/api/src/lib/resources.ts +0 -96
- package/apps/api/src/lib/screenshots.ts +0 -189
- package/apps/api/src/lib/ssh-manager.ts +0 -369
- package/apps/api/src/lib/ssl-scheduler.ts +0 -109
- package/apps/api/src/lib/stack-detector.ts +0 -708
- package/apps/api/src/lib/system-debug.ts +0 -10
- package/apps/api/src/middleware/auth.ts +0 -60
- package/apps/api/src/middleware/error-handler.ts +0 -41
- package/apps/api/src/middleware/index.ts +0 -5
- package/apps/api/src/middleware/internal-auth.ts +0 -40
- package/apps/api/src/middleware/local-only.ts +0 -20
- package/apps/api/src/middleware/rate-limiter.ts +0 -35
- package/apps/api/src/modules/analytics/analytics.controller.ts +0 -111
- package/apps/api/src/modules/analytics/analytics.routes.ts +0 -29
- package/apps/api/src/modules/analytics/analytics.schema.ts +0 -37
- package/apps/api/src/modules/analytics/analytics.service.ts +0 -264
- package/apps/api/src/modules/auth/auth.routes.ts +0 -237
- package/apps/api/src/modules/billing/billing.controller.ts +0 -60
- package/apps/api/src/modules/billing/billing.routes.ts +0 -34
- package/apps/api/src/modules/billing/billing.schema.ts +0 -9
- package/apps/api/src/modules/billing/billing.service.ts +0 -33
- package/apps/api/src/modules/cloud/cloud.controller.ts +0 -225
- package/apps/api/src/modules/cloud/cloud.routes.ts +0 -40
- package/apps/api/src/modules/deployments/build.service.ts +0 -791
- package/apps/api/src/modules/deployments/deployment-lifecycle.ts +0 -138
- package/apps/api/src/modules/deployments/deployment.controller.ts +0 -343
- package/apps/api/src/modules/deployments/deployment.routes.ts +0 -37
- package/apps/api/src/modules/deployments/deployment.schema.ts +0 -39
- package/apps/api/src/modules/deployments/deployment.service.ts +0 -190
- package/apps/api/src/modules/deployments/preflight.ts +0 -280
- package/apps/api/src/modules/deployments/prepare.service.ts +0 -252
- package/apps/api/src/modules/deployments/session-manager.ts +0 -283
- package/apps/api/src/modules/deployments/ssl.service.ts +0 -73
- package/apps/api/src/modules/domains/domain.controller.ts +0 -73
- package/apps/api/src/modules/domains/domain.routes.ts +0 -24
- package/apps/api/src/modules/domains/domain.schema.ts +0 -35
- package/apps/api/src/modules/domains/domain.service.ts +0 -385
- package/apps/api/src/modules/github/github.auth.ts +0 -397
- package/apps/api/src/modules/github/github.controller.ts +0 -387
- package/apps/api/src/modules/github/github.local-auth.ts +0 -251
- package/apps/api/src/modules/github/github.routes.ts +0 -50
- package/apps/api/src/modules/github/github.schema.ts +0 -52
- package/apps/api/src/modules/github/github.service.ts +0 -592
- package/apps/api/src/modules/github/github.types.ts +0 -158
- package/apps/api/src/modules/github/github.webhook.ts +0 -186
- package/apps/api/src/modules/github/index.ts +0 -16
- package/apps/api/src/modules/health/health.routes.ts +0 -45
- package/apps/api/src/modules/projects/project.controller.ts +0 -498
- package/apps/api/src/modules/projects/project.routes.ts +0 -67
- package/apps/api/src/modules/projects/project.schema.ts +0 -107
- package/apps/api/src/modules/projects/project.service.ts +0 -514
- package/apps/api/src/modules/settings/settings.controller.ts +0 -55
- package/apps/api/src/modules/settings/settings.routes.ts +0 -25
- package/apps/api/src/modules/settings/settings.service.ts +0 -49
- package/apps/api/src/modules/system/filesystem.controller.ts +0 -66
- package/apps/api/src/modules/system/index.ts +0 -1
- package/apps/api/src/modules/system/server-check.controller.ts +0 -475
- package/apps/api/src/modules/system/setup-session.ts +0 -255
- package/apps/api/src/modules/system/setup.controller.ts +0 -128
- package/apps/api/src/modules/system/system.routes.ts +0 -42
- package/apps/api/src/modules/webhooks/webhook.controller.ts +0 -64
- package/apps/api/src/modules/webhooks/webhook.routes.ts +0 -15
- package/apps/api/src/modules/webhooks/webhook.service.ts +0 -52
- package/apps/api/src/modules/webhooks/webhook.types.ts +0 -35
- package/apps/api/tsconfig.json +0 -14
- package/apps/cli/package.json +0 -26
- package/apps/cli/src/commands/deploy.ts +0 -11
- package/apps/cli/src/commands/init.ts +0 -8
- package/apps/cli/src/commands/login.ts +0 -8
- package/apps/cli/src/commands/logs.ts +0 -9
- package/apps/cli/src/index.ts +0 -21
- package/apps/cli/src/lib/api-client.ts +0 -35
- package/apps/cli/tsconfig.json +0 -13
- package/apps/dashboard/Dockerfile +0 -22
- package/apps/dashboard/components.json +0 -20
- package/apps/dashboard/next-env.d.ts +0 -6
- package/apps/dashboard/next.config.mjs +0 -16
- package/apps/dashboard/package.json +0 -40
- package/apps/dashboard/postcss.config.mjs +0 -5
- package/apps/dashboard/public/android-chrome-192x192.png +0 -0
- package/apps/dashboard/public/android-chrome-512x512.png +0 -0
- package/apps/dashboard/public/apple-touch-icon.png +0 -0
- package/apps/dashboard/public/favicon-16x16.png +0 -0
- package/apps/dashboard/public/favicon-32x32.png +0 -0
- package/apps/dashboard/public/favicon.ico +0 -0
- package/apps/dashboard/public/site.webmanifest +0 -19
- package/apps/dashboard/src/app/(auth)/forgot-password/page.tsx +0 -114
- package/apps/dashboard/src/app/(auth)/layout.tsx +0 -21
- package/apps/dashboard/src/app/(auth)/login/page.tsx +0 -220
- package/apps/dashboard/src/app/(auth)/providers.tsx +0 -34
- package/apps/dashboard/src/app/(auth)/register/page.tsx +0 -176
- package/apps/dashboard/src/app/(auth)/reset-password/page.tsx +0 -172
- package/apps/dashboard/src/app/(auth)/verify-email/page.tsx +0 -190
- package/apps/dashboard/src/app/(dashboard)/(deployment)/build/[id]/page.tsx +0 -162
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/BuildSummary.tsx +0 -166
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DnsConfiguration.tsx +0 -119
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/DomainSettings.tsx +0 -291
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Header.tsx +0 -71
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/Sidebar.tsx +0 -270
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/components/SkeletonLoader.tsx +0 -87
- package/apps/dashboard/src/app/(dashboard)/(deployment)/deploy/[slug]/page.tsx +0 -169
- package/apps/dashboard/src/app/(dashboard)/(deployment)/layout.tsx +0 -7
- package/apps/dashboard/src/app/(dashboard)/billing/page.tsx +0 -3
- package/apps/dashboard/src/app/(dashboard)/deployments/components/CommitDetailsModal.tsx +0 -240
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentCard.tsx +0 -121
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentHeader.tsx +0 -89
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentMenu.tsx +0 -182
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsContent.tsx +0 -324
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsFilters.tsx +0 -99
- package/apps/dashboard/src/app/(dashboard)/deployments/components/DeploymentsList.tsx +0 -31
- package/apps/dashboard/src/app/(dashboard)/deployments/components/EmptyState.tsx +0 -101
- package/apps/dashboard/src/app/(dashboard)/deployments/components/LoadingSkeleton.tsx +0 -57
- package/apps/dashboard/src/app/(dashboard)/deployments/components/ProjectFilter.tsx +0 -109
- package/apps/dashboard/src/app/(dashboard)/deployments/components/index.ts +0 -9
- package/apps/dashboard/src/app/(dashboard)/deployments/page.tsx +0 -14
- package/apps/dashboard/src/app/(dashboard)/deployments/types.ts +0 -44
- package/apps/dashboard/src/app/(dashboard)/deployments/utils.ts +0 -176
- package/apps/dashboard/src/app/(dashboard)/domains/page.tsx +0 -3
- package/apps/dashboard/src/app/(dashboard)/integrations/page.tsx +0 -321
- package/apps/dashboard/src/app/(dashboard)/layout.tsx +0 -27
- package/apps/dashboard/src/app/(dashboard)/library/components/ConnectPrompt.tsx +0 -187
- package/apps/dashboard/src/app/(dashboard)/library/components/LibrarySidebar.tsx +0 -147
- package/apps/dashboard/src/app/(dashboard)/library/components/LoadingSkeleton.tsx +0 -39
- package/apps/dashboard/src/app/(dashboard)/library/components/LocalProjects.tsx +0 -548
- package/apps/dashboard/src/app/(dashboard)/library/components/RepositoryList.tsx +0 -292
- package/apps/dashboard/src/app/(dashboard)/library/components/TemplateGrid.tsx +0 -36
- package/apps/dashboard/src/app/(dashboard)/library/components/UrlImport.tsx +0 -74
- package/apps/dashboard/src/app/(dashboard)/library/page.tsx +0 -121
- package/apps/dashboard/src/app/(dashboard)/library/types.ts +0 -26
- package/apps/dashboard/src/app/(dashboard)/monitoring/page.tsx +0 -3
- package/apps/dashboard/src/app/(dashboard)/page.tsx +0 -485
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/layout.tsx +0 -22
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/[[...slug]]/page.tsx +0 -286
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/AdvancedSettings.tsx +0 -235
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/BuildSettings.tsx +0 -174
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeleteConfirmationDialog.tsx +0 -45
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DeletionModal.tsx +0 -95
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/Deployments.tsx +0 -11
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/DomainSettings.tsx +0 -523
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/EnvironmentSettings.tsx +0 -246
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GeneralSettings.tsx +0 -93
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitInfo.tsx +0 -261
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/GitSettings.tsx +0 -391
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/LogsSettings.tsx +0 -133
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectNotFound.tsx +0 -95
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ProjectsBottomNavigation.tsx +0 -62
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/ResourceSettings.tsx +0 -333
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingSection.tsx +0 -66
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SettingsNavigation.tsx +0 -27
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/SleepModeSettings.tsx +0 -134
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProductionUrl.tsx +0 -25
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectIdentity.tsx +0 -159
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/ProjectInfo.tsx +0 -58
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/SkeletonLoader.tsx +0 -170
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/StatsCards.tsx +0 -33
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TopPaths.tsx +0 -56
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/TrafficChart.tsx +0 -157
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/general/index.ts +0 -14
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/LogsActions.tsx +0 -52
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/ServerLogs.tsx +0 -249
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/TerminalLogs.tsx +0 -682
- package/apps/dashboard/src/app/(dashboard)/projects/[id]/components/logs/logs.css +0 -127
- package/apps/dashboard/src/app/(dashboard)/projects/components/DeploymentCard.tsx +0 -73
- package/apps/dashboard/src/app/(dashboard)/projects/components/ProjectCard.tsx +0 -330
- package/apps/dashboard/src/app/(dashboard)/projects/page.tsx +0 -330
- package/apps/dashboard/src/app/(dashboard)/providers.tsx +0 -23
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/components-tab.tsx +0 -329
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/overview-tab.tsx +0 -229
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/_components/terminal-tab.tsx +0 -38
- package/apps/dashboard/src/app/(dashboard)/servers/[serverId]/page.tsx +0 -437
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/checking-state.tsx +0 -15
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/choose-mode.tsx +0 -54
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/component-row.tsx +0 -65
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/error-banner.tsx +0 -13
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/installing-panel.tsx +0 -227
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/results-panel.tsx +0 -90
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/setup-header.tsx +0 -56
- package/apps/dashboard/src/app/(dashboard)/servers/new/_components/types.ts +0 -13
- package/apps/dashboard/src/app/(dashboard)/servers/new/page.tsx +0 -666
- package/apps/dashboard/src/app/(dashboard)/servers/page.tsx +0 -283
- package/apps/dashboard/src/app/(dashboard)/settings/_components/BuildPreferences.tsx +0 -110
- package/apps/dashboard/src/app/(dashboard)/settings/_components/CloudConnection.tsx +0 -147
- package/apps/dashboard/src/app/(dashboard)/settings/_components/InstanceInfo.tsx +0 -54
- package/apps/dashboard/src/app/(dashboard)/settings/_components/ServerConnection.tsx +0 -407
- package/apps/dashboard/src/app/(dashboard)/settings/_components/SettingsSection.tsx +0 -32
- package/apps/dashboard/src/app/(dashboard)/settings/page.tsx +0 -67
- package/apps/dashboard/src/app/auth/callback/close/page.tsx +0 -23
- package/apps/dashboard/src/app/auth/callback/install/page.tsx +0 -40
- package/apps/dashboard/src/app/authorize/page.tsx +0 -137
- package/apps/dashboard/src/app/globals.css +0 -57
- package/apps/dashboard/src/app/layout.tsx +0 -55
- package/apps/dashboard/src/components/auth-shell.tsx +0 -66
- package/apps/dashboard/src/components/deployments/types.ts +0 -44
- package/apps/dashboard/src/components/global-deployments/index.ts +0 -17
- package/apps/dashboard/src/components/i18n-provider.tsx +0 -100
- package/apps/dashboard/src/components/import-project/BuildSettings.tsx +0 -376
- package/apps/dashboard/src/components/import-project/BuildSkeleton.tsx +0 -161
- package/apps/dashboard/src/components/import-project/BuildTerminal.tsx +0 -358
- package/apps/dashboard/src/components/import-project/ComposeServices.tsx +0 -455
- package/apps/dashboard/src/components/import-project/DeploymentProcessing.tsx +0 -510
- package/apps/dashboard/src/components/import-project/DockerSettings.tsx +0 -64
- package/apps/dashboard/src/components/import-project/EnvironmentVariables.tsx +0 -481
- package/apps/dashboard/src/components/import-project/Frameworks.tsx +0 -90
- package/apps/dashboard/src/components/import-project/ProjectSettings.tsx +0 -160
- package/apps/dashboard/src/components/import-project/types.ts +0 -82
- package/apps/dashboard/src/components/integrations/GithubPermissionModal.tsx +0 -173
- package/apps/dashboard/src/components/language-switcher.tsx +0 -36
- package/apps/dashboard/src/components/logo.tsx +0 -13
- package/apps/dashboard/src/components/network-error-handler.tsx +0 -27
- package/apps/dashboard/src/components/oauth-buttons.tsx +0 -81
- package/apps/dashboard/src/components/overview/ActivityChart.tsx +0 -247
- package/apps/dashboard/src/components/overview/ApiRequestsCard.tsx +0 -111
- package/apps/dashboard/src/components/overview/CreditsCard.tsx +0 -137
- package/apps/dashboard/src/components/overview/DeploymentsChart.tsx +0 -195
- package/apps/dashboard/src/components/overview/EmptyState.tsx +0 -126
- package/apps/dashboard/src/components/overview/LoadingSkeleton.tsx +0 -92
- package/apps/dashboard/src/components/overview/OverviewHeader.tsx +0 -74
- package/apps/dashboard/src/components/overview/OverviewHeroChart.tsx +0 -344
- package/apps/dashboard/src/components/overview/ProjectsCard.tsx +0 -134
- package/apps/dashboard/src/components/overview/QuickLinks.tsx +0 -119
- package/apps/dashboard/src/components/overview/SandboxesCard.tsx +0 -150
- package/apps/dashboard/src/components/overview/StatsGrid.tsx +0 -166
- package/apps/dashboard/src/components/overview/TokenUsageChart.tsx +0 -206
- package/apps/dashboard/src/components/overview/UsageStats.tsx +0 -79
- package/apps/dashboard/src/components/overview/index.ts +0 -30
- package/apps/dashboard/src/components/overview/types.ts +0 -116
- package/apps/dashboard/src/components/page-header.tsx +0 -25
- package/apps/dashboard/src/components/project-settings/ServerSideSwitch.jsx +0 -60
- package/apps/dashboard/src/components/shared/AlertBox.tsx +0 -39
- package/apps/dashboard/src/components/shared/CTASection.tsx +0 -45
- package/apps/dashboard/src/components/shared/ErrorState.tsx +0 -176
- package/apps/dashboard/src/components/shared/FeatureCard.tsx +0 -20
- package/apps/dashboard/src/components/shared/MDXComponents.tsx +0 -24
- package/apps/dashboard/src/components/shared/MachineSettingsModal.tsx +0 -286
- package/apps/dashboard/src/components/shared/Modal.tsx +0 -39
- package/apps/dashboard/src/components/shared/OTPInput.tsx +0 -122
- package/apps/dashboard/src/components/shared/PageHero.tsx +0 -21
- package/apps/dashboard/src/components/shared/PlatformFeatureCard.tsx +0 -27
- package/apps/dashboard/src/components/shared/StatCard.tsx +0 -14
- package/apps/dashboard/src/components/shared/ValueCard.tsx +0 -20
- package/apps/dashboard/src/components/shared/index.ts +0 -8
- package/apps/dashboard/src/components/sidebar.tsx +0 -282
- package/apps/dashboard/src/components/theme-provider.tsx +0 -96
- package/apps/dashboard/src/components/toast.tsx +0 -106
- package/apps/dashboard/src/components/ui/CustomCursor.tsx +0 -107
- package/apps/dashboard/src/components/ui/CustomSelect.tsx +0 -126
- package/apps/dashboard/src/components/ui/DropdownMenu.tsx +0 -174
- package/apps/dashboard/src/components/ui/FileIcon.jsx +0 -59
- package/apps/dashboard/src/components/ui/IconPickerModal.tsx +0 -273
- package/apps/dashboard/src/components/ui/InfoBanner.jsx +0 -39
- package/apps/dashboard/src/components/ui/Logo.tsx +0 -14
- package/apps/dashboard/src/components/ui/Modal.tsx +0 -117
- package/apps/dashboard/src/components/ui/PageContainer.tsx +0 -12
- package/apps/dashboard/src/components/ui/SectionContainer.jsx +0 -7
- package/apps/dashboard/src/components/ui/SlidingToggle.tsx +0 -128
- package/apps/dashboard/src/components/ui/Toast.tsx +0 -29
- package/apps/dashboard/src/components/ui/button.tsx +0 -58
- package/apps/dashboard/src/components/ui/card.tsx +0 -60
- package/apps/dashboard/src/components/ui/input.tsx +0 -20
- package/apps/dashboard/src/components/ui/label.tsx +0 -19
- package/apps/dashboard/src/components/ui/select.tsx +0 -10
- package/apps/dashboard/src/components/ui/textarea.tsx +0 -9
- package/apps/dashboard/src/constants/lang-colors.ts +0 -25
- package/apps/dashboard/src/constants/mock.ts +0 -38
- package/apps/dashboard/src/context/AuthContext.tsx +0 -91
- package/apps/dashboard/src/context/CloudContext.tsx +0 -275
- package/apps/dashboard/src/context/DeploymentContext.tsx +0 -71
- package/apps/dashboard/src/context/GitHubContext.tsx +0 -288
- package/apps/dashboard/src/context/ModalContext.tsx +0 -300
- package/apps/dashboard/src/context/NetworkContext.tsx +0 -32
- package/apps/dashboard/src/context/ProjectSettingsContext.tsx +0 -727
- package/apps/dashboard/src/context/ToastContext.tsx +0 -129
- package/apps/dashboard/src/context/deployment/index.ts +0 -3
- package/apps/dashboard/src/context/deployment/types.ts +0 -183
- package/apps/dashboard/src/context/deployment/useDeploymentBuild.ts +0 -547
- package/apps/dashboard/src/context/deployment/useDeploymentConfig.ts +0 -176
- package/apps/dashboard/src/hooks/useBuildConnection.ts +0 -334
- package/apps/dashboard/src/hooks/useMonitorStream.ts +0 -146
- package/apps/dashboard/src/hooks/useProjectData.ts +0 -110
- package/apps/dashboard/src/hooks/useSSEConnection.ts +0 -465
- package/apps/dashboard/src/hooks/useSSEStream.ts +0 -309
- package/apps/dashboard/src/hooks/useSessions.ts +0 -104
- package/apps/dashboard/src/hooks/useSetupStream.ts +0 -223
- package/apps/dashboard/src/i18n/dictionaries/ar.json +0 -218
- package/apps/dashboard/src/i18n/dictionaries/en.json +0 -218
- package/apps/dashboard/src/i18n/index.ts +0 -16
- package/apps/dashboard/src/lib/api/ai.ts +0 -22
- package/apps/dashboard/src/lib/api/auth.ts +0 -13
- package/apps/dashboard/src/lib/api/client.ts +0 -199
- package/apps/dashboard/src/lib/api/cloud.ts +0 -15
- package/apps/dashboard/src/lib/api/deploy.ts +0 -58
- package/apps/dashboard/src/lib/api/domains.ts +0 -13
- package/apps/dashboard/src/lib/api/endpoints.ts +0 -129
- package/apps/dashboard/src/lib/api/github.ts +0 -31
- package/apps/dashboard/src/lib/api/icons.ts +0 -12
- package/apps/dashboard/src/lib/api/index.ts +0 -41
- package/apps/dashboard/src/lib/api/projects.ts +0 -153
- package/apps/dashboard/src/lib/api/sandbox.ts +0 -14
- package/apps/dashboard/src/lib/api/settings.ts +0 -21
- package/apps/dashboard/src/lib/api/system.ts +0 -159
- package/apps/dashboard/src/lib/auth-client.ts +0 -54
- package/apps/dashboard/src/lib/country.ts +0 -25
- package/apps/dashboard/src/lib/server/api.ts +0 -140
- package/apps/dashboard/src/lib/server/session.ts +0 -103
- package/apps/dashboard/src/lib/sseClient.ts +0 -241
- package/apps/dashboard/src/lib/sseMessageProcessors.ts +0 -323
- package/apps/dashboard/src/lib/utils.ts +0 -6
- package/apps/dashboard/src/proxy.ts +0 -46
- package/apps/dashboard/src/styles/Toast.module.css +0 -92
- package/apps/dashboard/src/styles/fonts.css +0 -93
- package/apps/dashboard/src/styles/theme.css +0 -336
- package/apps/dashboard/src/types/research.ts +0 -42
- package/apps/dashboard/src/utils/SSEParser.js +0 -150
- package/apps/dashboard/src/utils/authWindow.ts +0 -143
- package/apps/dashboard/src/utils/codeTheme.ts +0 -127
- package/apps/dashboard/src/utils/colors.json +0 -2810
- package/apps/dashboard/src/utils/date.ts +0 -121
- package/apps/dashboard/src/utils/deployment.ts +0 -128
- package/apps/dashboard/src/utils/deploymentPhaseDetector.ts +0 -232
- package/apps/dashboard/src/utils/extToLang.js +0 -103
- package/apps/dashboard/src/utils/github.ts +0 -62
- package/apps/dashboard/src/utils/icons.js +0 -46
- package/apps/dashboard/src/utils/repoSlug.ts +0 -110
- package/apps/dashboard/src/utils/research-api.ts +0 -163
- package/apps/dashboard/src/utils/suggestions.ts +0 -84
- package/apps/dashboard/src/utils/theme.js +0 -1
- package/apps/dashboard/src/utils/ui-helpers.tsx +0 -30
- package/apps/dashboard/src/utils/upload.js +0 -12
- package/apps/dashboard/tsconfig.json +0 -33
- package/apps/desktop/forge.config.json +0 -36
- package/apps/desktop/package.json +0 -26
- package/apps/desktop/scripts/dev.mjs +0 -58
- package/apps/desktop/src/main/index.ts +0 -675
- package/apps/desktop/src/main/types/desktop.d.ts +0 -33
- package/apps/desktop/src/preload/index.ts +0 -88
- package/apps/desktop/src/renderer/index.html +0 -462
- package/apps/desktop/src/renderer/onboarding.js +0 -511
- package/apps/desktop/src/renderer/styles.css +0 -1139
- package/apps/desktop/tsconfig.json +0 -17
- package/apps/web/.source/browser.ts +0 -13
- package/apps/web/.source/dynamic.ts +0 -8
- package/apps/web/.source/server.ts +0 -22
- package/apps/web/.source/source.config.mjs +0 -20
- package/apps/web/Dockerfile +0 -22
- package/apps/web/content/blog/how-ai-builds-work.mdx +0 -55
- package/apps/web/content/blog/introducing-openship.mdx +0 -46
- package/apps/web/content/blog/self-hosting-cost-breakdown.mdx +0 -59
- package/apps/web/content/docs/_meta.json +0 -14
- package/apps/web/content/docs/api.mdx +0 -98
- package/apps/web/content/docs/cli.mdx +0 -80
- package/apps/web/content/docs/first-deployment.mdx +0 -56
- package/apps/web/content/docs/index.mdx +0 -27
- package/apps/web/content/docs/installation.mdx +0 -65
- package/apps/web/content/docs/quickstart.mdx +0 -45
- package/apps/web/next-env.d.ts +0 -6
- package/apps/web/next.config.mjs +0 -20
- package/apps/web/package.json +0 -33
- package/apps/web/postcss.config.mjs +0 -5
- package/apps/web/public/android-chrome-192x192.png +0 -0
- package/apps/web/public/android-chrome-512x512.png +0 -0
- package/apps/web/public/apple-touch-icon.png +0 -0
- package/apps/web/public/favicon-16x16.png +0 -0
- package/apps/web/public/favicon-32x32.png +0 -0
- package/apps/web/public/favicon.ico +0 -0
- package/apps/web/public/site.webmanifest +0 -1
- package/apps/web/source.config.ts +0 -17
- package/apps/web/src/app/(marketing)/layout.tsx +0 -9
- package/apps/web/src/app/(marketing)/page.tsx +0 -2
- package/apps/web/src/app/(marketing)/pricing/page.tsx +0 -10
- package/apps/web/src/app/blog/[...slug]/page.tsx +0 -247
- package/apps/web/src/app/blog/blog.css +0 -575
- package/apps/web/src/app/blog/layout.tsx +0 -50
- package/apps/web/src/app/blog/page.tsx +0 -235
- package/apps/web/src/app/docs/[[...slug]]/page.tsx +0 -67
- package/apps/web/src/app/docs/layout.tsx +0 -62
- package/apps/web/src/app/docs/toc-theme.css +0 -71
- package/apps/web/src/app/download/page.tsx +0 -396
- package/apps/web/src/app/globals.css +0 -20
- package/apps/web/src/app/layout.tsx +0 -70
- package/apps/web/src/app/page.tsx +0 -51
- package/apps/web/src/app/robots.ts +0 -15
- package/apps/web/src/app/sitemap.ts +0 -35
- package/apps/web/src/components/blog/share-sidebar.tsx +0 -81
- package/apps/web/src/components/blog/writer-sidebar.tsx +0 -81
- package/apps/web/src/components/landing/ai-native.tsx +0 -169
- package/apps/web/src/components/landing/backups.tsx +0 -139
- package/apps/web/src/components/landing/cdn.tsx +0 -109
- package/apps/web/src/components/landing/coming-soon.tsx +0 -180
- package/apps/web/src/components/landing/dark-section.tsx +0 -166
- package/apps/web/src/components/landing/dashboard.tsx +0 -407
- package/apps/web/src/components/landing/developer-experience.tsx +0 -224
- package/apps/web/src/components/landing/dns-domains.tsx +0 -146
- package/apps/web/src/components/landing/download-button.tsx +0 -151
- package/apps/web/src/components/landing/features/ai-visual.tsx +0 -48
- package/apps/web/src/components/landing/features/cloud-visual.tsx +0 -44
- package/apps/web/src/components/landing/features/git-visual.tsx +0 -61
- package/apps/web/src/components/landing/features/index.tsx +0 -642
- package/apps/web/src/components/landing/features/infra-visual.tsx +0 -69
- package/apps/web/src/components/landing/features/rollback-visual.tsx +0 -42
- package/apps/web/src/components/landing/features/ssl-visual.tsx +0 -41
- package/apps/web/src/components/landing/features/stacks-visual.tsx +0 -54
- package/apps/web/src/components/landing/final-cta.tsx +0 -116
- package/apps/web/src/components/landing/footer.tsx +0 -145
- package/apps/web/src/components/landing/hero.tsx +0 -110
- package/apps/web/src/components/landing/how-it-works.tsx +0 -210
- package/apps/web/src/components/landing/index.ts +0 -21
- package/apps/web/src/components/landing/mail-server.tsx +0 -122
- package/apps/web/src/components/landing/navbar.tsx +0 -199
- package/apps/web/src/components/landing/no-lockin.tsx +0 -185
- package/apps/web/src/components/landing/open-source-cta.tsx +0 -151
- package/apps/web/src/components/landing/portability.tsx +0 -190
- package/apps/web/src/components/landing/pricing.tsx +0 -263
- package/apps/web/src/components/landing/scaling.tsx +0 -209
- package/apps/web/src/components/landing/why-openship.tsx +0 -291
- package/apps/web/src/hooks/use-gsap-scroll.ts +0 -158
- package/apps/web/src/hooks/use-platform.ts +0 -86
- package/apps/web/src/lib/source.ts +0 -12
- package/apps/web/src/styles/fonts.css +0 -84
- package/apps/web/src/styles/landing.css +0 -951
- package/apps/web/src/styles/theme.css +0 -227
- package/apps/web/tsconfig.json +0 -16
- package/bun.lock +0 -3260
- package/docker-compose.yml +0 -90
- package/docs/screenshots/.gitkeep +0 -0
- package/docs/screenshots/screen.png +0 -0
- package/openship.code-workspace +0 -7
- package/packages/adapters/docs/ARCHITECTURE.md +0 -160
- package/packages/adapters/docs/BUILD-PIPELINE.md +0 -171
- package/packages/adapters/docs/CLOUD.md +0 -239
- package/packages/adapters/docs/EXECUTOR.md +0 -174
- package/packages/adapters/docs/LOG-STREAMING.md +0 -175
- package/packages/adapters/docs/SYSTEM.md +0 -191
- package/packages/adapters/package.json +0 -32
- package/packages/adapters/src/index.ts +0 -144
- package/packages/adapters/src/infra/cloud.ts +0 -42
- package/packages/adapters/src/infra/index.ts +0 -9
- package/packages/adapters/src/infra/noop.ts +0 -27
- package/packages/adapters/src/infra/traefik.ts +0 -297
- package/packages/adapters/src/infra/types.ts +0 -36
- package/packages/adapters/src/platform.ts +0 -255
- package/packages/adapters/src/runtime/bare.ts +0 -567
- package/packages/adapters/src/runtime/build-pipeline.ts +0 -237
- package/packages/adapters/src/runtime/cloud.ts +0 -791
- package/packages/adapters/src/runtime/deploy-pipeline.ts +0 -146
- package/packages/adapters/src/runtime/docker.ts +0 -443
- package/packages/adapters/src/runtime/index.ts +0 -69
- package/packages/adapters/src/runtime/local-build.ts +0 -112
- package/packages/adapters/src/runtime/transfer.ts +0 -82
- package/packages/adapters/src/runtime/types.ts +0 -138
- package/packages/adapters/src/system/catalog.ts +0 -188
- package/packages/adapters/src/system/checks.ts +0 -228
- package/packages/adapters/src/system/components.ts +0 -45
- package/packages/adapters/src/system/debug.ts +0 -18
- package/packages/adapters/src/system/environment.ts +0 -168
- package/packages/adapters/src/system/errors.ts +0 -34
- package/packages/adapters/src/system/executor.ts +0 -600
- package/packages/adapters/src/system/index.ts +0 -58
- package/packages/adapters/src/system/installer.ts +0 -310
- package/packages/adapters/src/system/setup.ts +0 -442
- package/packages/adapters/src/system/state.ts +0 -96
- package/packages/adapters/src/system/types.ts +0 -116
- package/packages/adapters/src/toolchain/catalog.ts +0 -439
- package/packages/adapters/src/toolchain/checks.ts +0 -181
- package/packages/adapters/src/toolchain/index.ts +0 -38
- package/packages/adapters/src/toolchain/installer.ts +0 -189
- package/packages/adapters/src/toolchain/types.ts +0 -84
- package/packages/adapters/src/types.ts +0 -277
- package/packages/adapters/tsconfig.json +0 -11
- package/packages/core/package.json +0 -27
- package/packages/core/src/constants.ts +0 -71
- package/packages/core/src/errors.ts +0 -49
- package/packages/core/src/index.ts +0 -6
- package/packages/core/src/stacks.ts +0 -778
- package/packages/core/src/system.ts +0 -111
- package/packages/core/src/types.ts +0 -68
- package/packages/core/src/utils.ts +0 -43
- package/packages/core/tsconfig.json +0 -11
- package/packages/db/drizzle/0000_init.sql +0 -231
- package/packages/db/drizzle/0001_add_server_name.sql +0 -1
- package/packages/db/drizzle/meta/_journal.json +0 -20
- package/packages/db/drizzle.config.ts +0 -10
- package/packages/db/package.json +0 -44
- package/packages/db/src/client.ts +0 -119
- package/packages/db/src/index.ts +0 -60
- package/packages/db/src/repos/account.repo.ts +0 -92
- package/packages/db/src/repos/deployment.repo.ts +0 -168
- package/packages/db/src/repos/domain.repo.ts +0 -102
- package/packages/db/src/repos/git-installation.repo.ts +0 -95
- package/packages/db/src/repos/index.ts +0 -43
- package/packages/db/src/repos/instance-settings.repo.ts +0 -43
- package/packages/db/src/repos/project.repo.ts +0 -159
- package/packages/db/src/repos/session.repo.ts +0 -82
- package/packages/db/src/repos/settings.repo.ts +0 -51
- package/packages/db/src/repos/user.repo.ts +0 -94
- package/packages/db/src/schema/auth.ts +0 -56
- package/packages/db/src/schema/deployment.ts +0 -87
- package/packages/db/src/schema/domain.ts +0 -46
- package/packages/db/src/schema/github.ts +0 -24
- package/packages/db/src/schema/index.ts +0 -6
- package/packages/db/src/schema/project.ts +0 -117
- package/packages/db/src/schema/settings.ts +0 -103
- package/packages/db/tsconfig.json +0 -11
- package/packages/ui/package.json +0 -38
- package/packages/ui/src/components/badge.tsx +0 -29
- package/packages/ui/src/components/button.tsx +0 -44
- package/packages/ui/src/components/card.tsx +0 -26
- package/packages/ui/src/components/status-dot.tsx +0 -25
- package/packages/ui/src/globals.css +0 -18
- package/packages/ui/src/index.tsx +0 -8
- package/packages/ui/src/lib/cn.ts +0 -7
- package/packages/ui/tsconfig.json +0 -14
- package/pnpm-workspace.yaml +0 -3
- package/tsconfig.base.json +0 -18
- 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,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;
|