Unified · Split
| @@ -0,0 +1 @@ | ||
| 1 | +export { readPmEnvironment } from "../../env"; | |
| @@ -11,11 +11,13 @@ import { · 10 unmodified lines | ||
| 11 | 11 | import { |
| 12 | 12 | createRunExecutor, |
| 13 | 13 | createSourceToolRegistry, |
| 14 | + defaultExecuteToolExposureMode, | |
| 14 | 15 | makeGraphqlToolProvider, |
| 15 | 16 | makeMcpToolProvider, |
| 16 | 17 | makeOpenApiToolProvider, |
| 17 | 18 | makeRuntimeAdapterRegistry, |
| 18 | 19 | makeToolProviderRegistry, |
| 20 | + parseExecuteToolExposureMode, | |
| 19 | 21 | } from "@executor-v2/engine"; |
| 20 | 22 | import { |
| 21 | 23 | makeSqlControlPlanePersistence, |
| @@ -281,7 +283,9 @@ const createControlPlaneRuntime = async (): Promise<ControlPlaneRuntime> => { · 259 unmodified lines | ||
| 281 | 283 | ?? runtimeAdapterList[0]?.kind |
| 282 | 284 | ?? "local-inproc"; |
| 283 | 285 | const requireToolApprovals = webServerEnvironment.pmRequireToolApprovals; |
| 284 | − const defaultToolExposureMode = webServerEnvironment.pmToolExposureMode; | |
| 286 | + const defaultToolExposureMode = | |
| 287 | + parseExecuteToolExposureMode(webServerEnvironment.pmToolExposureMode) | |
| 288 | + ?? defaultExecuteToolExposureMode; | |
| 285 | 289 | const toolProviderRegistry = makeToolProviderRegistry([ |
| 286 | 290 | makeOpenApiToolProvider(), |
| 287 | 291 | makeMcpToolProvider(), |
| @@ -1,8 +1,3 @@ | ||
| 1 | −import { | |
| 2 | − defaultExecuteToolExposureMode, | |
| 3 | − parseExecuteToolExposureMode, | |
| 4 | − type ExecuteToolExposureMode, | |
| 5 | −} from "@executor-v2/engine"; | |
| 6 | 1 | import { configSchema, server } from "better-env/config-schema"; |
| 7 | 2 | import { isTruthy, trim } from "./shared"; |
| 8 | 3 | |
| @@ -32,9 +27,6 @@ const webServerEnvConfig = configSchema("WebServerEnvironment", { · 23 unmodified lines | ||
| 32 | 27 | }), |
| 33 | 28 | }); |
| 34 | 29 | |
| 35 | −const resolveToolExposureMode = (value: string | undefined): ExecuteToolExposureMode => | |
| 36 | − parseExecuteToolExposureMode(trim(value)) ?? defaultExecuteToolExposureMode; | |
| 37 | − | |
| 38 | 30 | const env = webServerEnvConfig.server; |
| 39 | 31 | |
| 40 | 32 | export const webServerEnvironment = { |
| @@ -43,7 +35,7 @@ export const webServerEnvironment = { · 2 unmodified lines | ||
| 43 | 35 | controlPlanePostgresConnectionTarget: trim(env.controlPlanePostgresConnectionTarget)?.toLowerCase(), |
| 44 | 36 | pmRuntimeKind: trim(env.pmRuntimeKind), |
| 45 | 37 | pmRequireToolApprovals: isTruthy(env.pmRequireToolApprovals), |
| 46 | − pmToolExposureMode: resolveToolExposureMode(env.pmToolExposureMode), | |
| 38 | + pmToolExposureMode: trim(env.pmToolExposureMode), | |
| 47 | 39 | executorPublicOrigin: trim(env.executorPublicOrigin), |
| 48 | 40 | vercelProjectProductionUrl: trim(env.vercelProjectProductionUrl), |
| 49 | 41 | vercelUrl: trim(env.vercelUrl), |
| @@ -0,0 +1 @@ | ||
| 1 | +export { webPublicEnvironment } from "../../../lib/env/public"; | |
| @@ -0,0 +1 @@ | ||
| 1 | +export { webServerEnvironment } from "../../../lib/env/server"; | |
| @@ -22,8 +22,8 @@ · 21 unmodified lines | ||
| 22 | 22 | "env:pull:development": "better-env pull --environment development", |
| 23 | 23 | "env:pull:preview": "better-env pull --environment preview", |
| 24 | 24 | "env:pull:production": "better-env pull --environment production", |
| 25 | − "env:validate:development": "better-env validate --environment development", | |
| 26 | − "env:validate:production": "better-env validate --environment production", | |
| 25 | + "env:validate:development": "bun tools/validate-env-workspaces.ts development", | |
| 26 | + "env:validate:production": "bun tools/validate-env-workspaces.ts production", | |
| 27 | 27 | "knip": "bunx knip --config knip.json", |
| 28 | 28 | "db:env:pull:prod": "bun run env:pull:production", |
| 29 | 29 | "db:migrate:prod": "bun run env:pull:production && bun run --filter=@executor-v2/persistence-sql --env-file=.env.production db:migrate" |
| @@ -0,0 +1 @@ | ||
| 1 | +export { readPersistenceSqlEnvironment } from "../../config"; | |
| @@ -0,0 +1,33 @@ | ||
| 1 | +import { validateEnv } from "better-env/validate-env"; | |
| 2 | +import * as path from "node:path"; | |
| 3 | +import { fileURLToPath } from "node:url"; | |
| 4 | + | |
| 5 | +const workspaceDirs = [ | |
| 6 | + "apps/web", | |
| 7 | + "apps/pm", | |
| 8 | + "packages/persistence-sql", | |
| 9 | +] as const; | |
| 10 | + | |
| 11 | +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); | |
| 12 | +const repoRoot = path.resolve(scriptDir, ".."); | |
| 13 | +const environment = process.argv[2] ?? "development"; | |
| 14 | + | |
| 15 | +let hasErrors = false; | |
| 16 | + | |
| 17 | +for (const workspaceDir of workspaceDirs) { | |
| 18 | + const projectDir = path.resolve(repoRoot, workspaceDir); | |
| 19 | + console.log(`\n=== ${workspaceDir} ===`); | |
| 20 | + | |
| 21 | + const { exitCode } = await validateEnv({ | |
| 22 | + environment, | |
| 23 | + projectDir, | |
| 24 | + }); | |
| 25 | + | |
| 26 | + if (exitCode !== 0) { | |
| 27 | + hasErrors = true; | |
| 28 | + } | |
| 29 | +} | |
| 30 | + | |
| 31 | +if (hasErrors) { | |
| 32 | + process.exit(1); | |
| 33 | +} | |