Files
c0py/packages/config/src/index.ts
T
admin f6ff1396d8
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
feat(api): CL0UD capability probe + a11y/HAR evidence + worker scale toggle
- 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
2026-09-16 23:21:54 +02:00

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>;