6bf8bebf51
CI / Test and Build (push) Failing after 1s
CI / Migrate Dev DB (push) Has been skipped
CI / Migrate DB (push) Has been skipped
CodeQL / Analyze actions (push) Has been cancelled
CodeQL / Analyze javascript-typescript (push) Has been cancelled
CI / Detect Version (push) Has been cancelled
CI / Detect Desktop Changes (push) Has been cancelled
CI / Build AMD64 (blacksmith-2vcpu-ubuntu-2404, ./docker/cron.Dockerfile, ubuntu-latest, ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Build AMD64 (blacksmith-2vcpu-ubuntu-2404, ./docker/db.Dockerfile, ECR_MIGRATIONS, ubuntu-latest, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (blacksmith-4vcpu-ubuntu-2404, ./docker/pii.Dockerfile, ECR_PII, ubuntu-latest, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (blacksmith-4vcpu-ubuntu-2404, ./docker/realtime.Dockerfile, ECR_REALTIME, ubuntu-latest, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build AMD64 (blacksmith-8vcpu-ubuntu-2404, ./docker/app.Dockerfile, ECR_APP, linux-x64-8-core, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/cron.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/db.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/pii.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/realtime.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-8vcpu-ubuntu-2404-arm, ./docker/app.Dockerfile, linux-arm64-8-core, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
Helm Chart / Lint, test, and validate chart (push) Has been cancelled
Helm Chart / Chart version bumped (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
CI / Build Dev ECR (blacksmith-8vcpu-ubuntu-2404, ./docker/app.Dockerfile, ECR_APP, linux-x64-8-core) (push) Has been cancelled
CI / Promote Images (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-2vcpu-ubuntu-2404, ./docker/db.Dockerfile, ECR_MIGRATIONS, ubuntu-latest) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-4vcpu-ubuntu-2404, ./docker/pii.Dockerfile, ECR_PII, ubuntu-latest) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-4vcpu-ubuntu-2404, ./docker/realtime.Dockerfile, ECR_REALTIME, ubuntu-latest) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Check Desktop Signing Secrets (push) Has been cancelled
CI / Desktop Release (push) Has been cancelled
CI / Create Desktop Prerelease (push) Has been cancelled
CI / Desktop Prerelease Build (push) Has been cancelled
CI / Publish Desktop Prerelease (push) Has been cancelled
CI / Prune Desktop Prereleases (push) Has been cancelled
Helm Chart / Install on kind and run helm test (push) Has been cancelled
87 lines
2.9 KiB
TypeScript
87 lines
2.9 KiB
TypeScript
import { cpSync, rmSync } from 'node:fs'
|
|
import { build } from 'esbuild'
|
|
import { identityForOrigin } from './channels'
|
|
|
|
const watch = process.argv.includes('--watch')
|
|
|
|
// Optional build-time default server origin (pre-release shares pointed at a
|
|
// non-prod environment): SIM_DESKTOP_DEFAULT_ORIGIN=https://www.dev.sim.ai.
|
|
// Baked into the bundle so it applies to fresh installs with no settings —
|
|
// unlike the SIM_DESKTOP_ORIGIN env var, which only affects terminal-launched
|
|
// processes. Official builds leave it unset (default https://www.sim.ai).
|
|
const bakedDefaultOrigin = process.env.SIM_DESKTOP_DEFAULT_ORIGIN ?? ''
|
|
if (
|
|
bakedDefaultOrigin &&
|
|
!/^https:\/\/[^\s/]+$/.test(bakedDefaultOrigin) &&
|
|
!/^http:\/\/(localhost|127\.0\.0\.1)(:\d+)?$/.test(bakedDefaultOrigin)
|
|
) {
|
|
console.error(
|
|
`SIM_DESKTOP_DEFAULT_ORIGIN must be a bare https origin or http://localhost (got "${bakedDefaultOrigin}")`
|
|
)
|
|
process.exit(1)
|
|
}
|
|
if (bakedDefaultOrigin) {
|
|
console.log(`• Baking default server origin: ${bakedDefaultOrigin}`)
|
|
}
|
|
|
|
const appIcon = identityForOrigin(bakedDefaultOrigin).icon
|
|
const generatedIcon = 'build/generated-icon.icon'
|
|
rmSync(generatedIcon, { force: true, recursive: true })
|
|
cpSync(appIcon, generatedIcon, { recursive: true })
|
|
console.log(`• Selecting desktop icon: ${appIcon}`)
|
|
|
|
const common = {
|
|
bundle: true,
|
|
platform: 'node' as const,
|
|
format: 'cjs' as const,
|
|
target: 'node22',
|
|
sourcemap: true,
|
|
// node-pty resolves a prebuilt .node binary at runtime, so it must stay
|
|
// external and be loaded from node_modules rather than inlined here.
|
|
external: ['electron', '@lydell/node-pty'],
|
|
tsconfig: 'tsconfig.json',
|
|
logLevel: 'info' as const,
|
|
define: {
|
|
'process.env.SIM_DESKTOP_DEFAULT_ORIGIN': JSON.stringify(bakedDefaultOrigin),
|
|
},
|
|
}
|
|
|
|
async function run(): Promise<void> {
|
|
if (watch) {
|
|
const { context } = await import('esbuild')
|
|
const mainCtx = await context({
|
|
...common,
|
|
entryPoints: ['src/main/index.ts'],
|
|
outfile: 'dist/main.cjs',
|
|
})
|
|
const preloadCtx = await context({
|
|
...common,
|
|
entryPoints: ['src/preload/index.ts'],
|
|
outfile: 'dist/preload.cjs',
|
|
})
|
|
// Separate from the main-window preload: this one is injected into
|
|
// untrusted pages in the built-in browser and must stay minimal.
|
|
const browserPreloadCtx = await context({
|
|
...common,
|
|
entryPoints: ['src/preload/browser/index.ts'],
|
|
outfile: 'dist/browser-preload.cjs',
|
|
})
|
|
await Promise.all([mainCtx.watch(), preloadCtx.watch(), browserPreloadCtx.watch()])
|
|
return
|
|
}
|
|
await Promise.all([
|
|
build({ ...common, entryPoints: ['src/main/index.ts'], outfile: 'dist/main.cjs' }),
|
|
build({ ...common, entryPoints: ['src/preload/index.ts'], outfile: 'dist/preload.cjs' }),
|
|
build({
|
|
...common,
|
|
entryPoints: ['src/preload/browser/index.ts'],
|
|
outfile: 'dist/browser-preload.cjs',
|
|
}),
|
|
])
|
|
}
|
|
|
|
run().catch((error) => {
|
|
console.error(error)
|
|
process.exit(1)
|
|
})
|