CI (SIAX Cloud) / contracts (pull_request) Successful in 17s
CI (SIAX Cloud) / contracts (push) Successful in 17s
CI (SIAX Cloud) / quality (pull_request) Successful in 54s
CI (SIAX Cloud) / quality (push) Successful in 56s
CI (SIAX Cloud) / security (pull_request) Successful in 1m7s
CI (SIAX Cloud) / security (push) Successful in 1m5s
- cl0ud client: contract-first probe of documented GET /capabilities/:id, status connected/denied/unavailable/disabled surfaced in /health; CL0UD_REQUIRED=true = fail-closed 503; full policy-decisions gated on CL0UD B-4/ADR-0031 (deliberately not simulated) - capture depth: accessibility tree + condensed HAR as evidence kinds (null = explicit evidence gap) - CAPTURE_WORKER=on/off for separate-scale deployments - 34/34 tests
27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { z } from "zod";
|
|
|
|
export const envSchema = z.object({
|
|
PORT: z.coerce.number().default(3000),
|
|
NODE_ENV: z.enum(["development", "production", "test"]).default("development"),
|
|
CL0UD_BASE_URL: z.string().url(),
|
|
ZITADEL_ISSUER: z.string().url(),
|
|
ZITADEL_AUDIENCE: z.string(),
|
|
DATABASE_URL: z.string(),
|
|
ZITADEL_INTROSPECTION_CLIENT_ID: z.string().optional(),
|
|
ZITADEL_INTROSPECTION_CLIENT_SECRET: z.string().optional(),
|
|
ZITADEL_EXPECTED_AUDIENCE: z.string().optional(),
|
|
AUD0_BASE_URL: z.string().url().optional(),
|
|
AUD0_API_KEY: z.string().optional(),
|
|
ST0RE_BASE_URL: z.string().url().optional(),
|
|
INF0_BASE_URL: z.string().url().optional(),
|
|
N0D_BASE_URL: z.string().url().optional(),
|
|
CRAWL_TIMEOUT_MS: z.coerce.number().default(30000),
|
|
MAX_REGISTRY_PAGES: z.coerce.number().default(1000),
|
|
CAPTURE_WORKER: z.enum(["on", "off"]).default("on"),
|
|
CL0UD_API_TOKEN: z.string().optional(),
|
|
CL0UD_REQUIRED: z.enum(["true", "false"]).default("false"),
|
|
CL0UD_PROBE_INTERVAL_MS: z.coerce.number().default(300000),
|
|
});
|
|
|
|
export type Env = z.infer<typeof envSchema>;
|