Unified · Split
| @@ -0,0 +1 @@ | |||
| 1 | export { readPmEnvironment } from "../../env"; | ||
| @@ -11,11 +11,13 @@ import { · 10 unmodified lines | |||
| 11 | import { | 11 | import { |
| 12 | createRunExecutor, | 12 | createRunExecutor, |
| 13 | createSourceToolRegistry, | 13 | createSourceToolRegistry, |
| 14 | defaultExecuteToolExposureMode, | ||
| 14 | makeGraphqlToolProvider, | 15 | makeGraphqlToolProvider, |
| 15 | makeMcpToolProvider, | 16 | makeMcpToolProvider, |
| 16 | makeOpenApiToolProvider, | 17 | makeOpenApiToolProvider, |
| 17 | makeRuntimeAdapterRegistry, | 18 | makeRuntimeAdapterRegistry, |
| 18 | makeToolProviderRegistry, | 19 | makeToolProviderRegistry, |
| 20 | parseExecuteToolExposureMode, | ||
| 19 | } from "@executor-v2/engine"; | 21 | } from "@executor-v2/engine"; |
| 20 | import { | 22 | import { |
| 21 | makeSqlControlPlanePersistence, | 23 | makeSqlControlPlanePersistence, |
| @@ -281,7 +283,9 @@ const createControlPlaneRuntime = async (): Promise<ControlPlaneRuntime> => { · 259 unmodified lines | |||
| 281 | ?? runtimeAdapterList[0]?.kind | 283 | ?? runtimeAdapterList[0]?.kind |
| 282 | ?? "local-inproc"; | 284 | ?? "local-inproc"; |
| 283 | const requireToolApprovals = webServerEnvironment.pmRequireToolApprovals; | 285 | const requireToolApprovals = webServerEnvironment.pmRequireToolApprovals; |
| 284 | const defaultToolExposureMode = webServerEnvironment.pmToolExposureMode; | 286 | const defaultToolExposureMode = |
| 287 | parseExecuteToolExposureMode(webServerEnvironment.pmToolExposureMode) | ||
| 288 | ?? defaultExecuteToolExposureMode; | ||
| 285 | const toolProviderRegistry = makeToolProviderRegistry([ | 289 | const toolProviderRegistry = makeToolProviderRegistry([ |
| 286 | makeOpenApiToolProvider(), | 290 | makeOpenApiToolProvider(), |
| 287 | makeMcpToolProvider(), | 291 | makeMcpToolProvider(), |
| @@ -1,8 +1,3 @@ | |||
| 1 | import { | ||
| 2 | defaultExecuteToolExposureMode, | ||
| 3 | parseExecuteToolExposureMode, | ||
| 4 | type ExecuteToolExposureMode, | ||
| 5 | } from "@executor-v2/engine"; | ||
| 6 | import { configSchema, server } from "better-env/config-schema"; | 1 | import { configSchema, server } from "better-env/config-schema"; |
| 7 | import { isTruthy, trim } from "./shared"; | 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 | const env = webServerEnvConfig.server; | 30 | const env = webServerEnvConfig.server; |
| 39 | 31 | ||
| 40 | export const webServerEnvironment = { | 32 | export const webServerEnvironment = { |
| @@ -43,7 +35,7 @@ export const webServerEnvironment = { · 2 unmodified lines | |||
| 43 | controlPlanePostgresConnectionTarget: trim(env.controlPlanePostgresConnectionTarget)?.toLowerCase(), | 35 | controlPlanePostgresConnectionTarget: trim(env.controlPlanePostgresConnectionTarget)?.toLowerCase(), |
| 44 | pmRuntimeKind: trim(env.pmRuntimeKind), | 36 | pmRuntimeKind: trim(env.pmRuntimeKind), |
| 45 | pmRequireToolApprovals: isTruthy(env.pmRequireToolApprovals), | 37 | pmRequireToolApprovals: isTruthy(env.pmRequireToolApprovals), |
| 46 | pmToolExposureMode: resolveToolExposureMode(env.pmToolExposureMode), | 38 | pmToolExposureMode: trim(env.pmToolExposureMode), |
| 47 | executorPublicOrigin: trim(env.executorPublicOrigin), | 39 | executorPublicOrigin: trim(env.executorPublicOrigin), |
| 48 | vercelProjectProductionUrl: trim(env.vercelProjectProductionUrl), | 40 | vercelProjectProductionUrl: trim(env.vercelProjectProductionUrl), |
| 49 | vercelUrl: trim(env.vercelUrl), | 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 | "env:pull:development": "better-env pull --environment development", | 22 | "env:pull:development": "better-env pull --environment development", |
| 23 | "env:pull:preview": "better-env pull --environment preview", | 23 | "env:pull:preview": "better-env pull --environment preview", |
| 24 | "env:pull:production": "better-env pull --environment production", | 24 | "env:pull:production": "better-env pull --environment production", |
| 25 | "env:validate:development": "better-env validate --environment development", | 25 | "env:validate:development": "bun tools/validate-env-workspaces.ts development", |
| 26 | "env:validate:production": "better-env validate --environment production", | 26 | "env:validate:production": "bun tools/validate-env-workspaces.ts production", |
| 27 | "knip": "bunx knip --config knip.json", | 27 | "knip": "bunx knip --config knip.json", |
| 28 | "db:env:pull:prod": "bun run env:pull:production", | 28 | "db:env:pull:prod": "bun run env:pull:production", |
| 29 | "db:migrate:prod": "bun run env:pull:production && bun run --filter=@executor-v2/persistence-sql --env-file=.env.production db:migrate" | 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 | } | ||