@learncard/lca-api-service 1.5.3 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/.env.example +10 -0
  2. package/CHANGELOG.md +40 -0
  3. package/bundle.mjs +1 -1
  4. package/dist/app.d.ts +4 -1
  5. package/dist/config/cacheEnvironment.d.ts +4 -4
  6. package/dist/config/environment.d.ts +145 -114
  7. package/dist/config/oidcEnvironment.d.ts +22 -22
  8. package/dist/didkit_wasm_bg.wasm +0 -0
  9. package/dist/helpers/bedrockGeneration.d.ts +17 -0
  10. package/dist/helpers/bedrockGeneration.test.d.ts +1 -0
  11. package/dist/helpers/bedrockSchema.d.ts +10 -0
  12. package/dist/helpers/imageGeneration.d.ts +42 -0
  13. package/dist/helpers/imageGeneration.test.d.ts +1 -0
  14. package/dist/index.js +2 -2
  15. package/dist/models/Notification.d.ts +3 -1
  16. package/dist/publish-metafile.json +1 -1
  17. package/dist/routes/ai.skill-icons.test.d.ts +1 -0
  18. package/dist/routes/keys.d.ts +1 -0
  19. package/dist/routes/notifications.d.ts +3 -1
  20. package/dist/types/notifications.d.ts +3 -1
  21. package/docs/bedrock-generation.md +119 -0
  22. package/docs/image-generation.md +120 -0
  23. package/package.json +21 -16
  24. package/project.json +1 -1
  25. package/scripts/node24-runtime.cjs +9 -0
  26. package/scripts/verify-node24-layer.cjs +49 -0
  27. package/serverless-local.yml +3 -1
  28. package/serverless.function-env.cjs +2 -4
  29. package/serverless.yml +76 -3
  30. package/src/config/environment.ts +14 -0
  31. package/src/helpers/bedrockGeneration.test.ts +222 -0
  32. package/src/helpers/bedrockGeneration.ts +110 -0
  33. package/src/helpers/bedrockSchema.ts +352 -0
  34. package/src/helpers/imageGeneration.test.ts +456 -0
  35. package/src/helpers/imageGeneration.ts +432 -0
  36. package/src/models/EscrowHold.ts +6 -3
  37. package/src/models/UserKey.ts +14 -0
  38. package/src/routes/ai.skill-icons.test.ts +92 -0
  39. package/src/routes/ai.test.ts +68 -91
  40. package/src/routes/ai.ts +31 -143
  41. package/src/routes/keys.ts +18 -0
  42. package/src/services/escrow-enclave/enclaveTrustAnchors.ts +19 -0
  43. package/src/services/escrow-enclave/logFailure.test.ts +8 -0
  44. package/src/services/escrow-enclave/logFailure.ts +17 -0
  45. package/src/services/escrow-enclave/remoteEnclave.tls.test.ts +10 -0
  46. package/test/jobs/escrowHoldReminders.spec.ts +88 -4
  47. package/test/keys-auth-share-escrow.spec.ts +103 -0
  48. package/test/keys-lifecycle-invariants.spec.ts +76 -0
  49. package/test/oidc.spec.ts +41 -2
  50. package/tsconfig.bedrock.json +10 -0
  51. package/tsconfig.json +13 -14
package/.env.example CHANGED
@@ -37,7 +37,17 @@ GOOGLE_APPLICATION_CREDENTIAL=
37
37
  # Loaded before validation; non-empty explicit env wins. Leave unset for local/Docker/CI.
38
38
  # Keep all GitHub runtime secret fallbacks until each stage has a complete bundle.
39
39
  RUNTIME_SECRETS_ID=
40
+ # Only for the DALL-E fallback (IMAGE_PROVIDER=openai). Text and default images use Bedrock.
40
41
  OPENAI_API_KEY=
42
+ # Optional; only this exact endpoint (with optional trailing slash) is accepted.
43
+ BEDROCK_BASE_URL=https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1
44
+ # Image generation (docs/image-generation.md). Empty = defaults: bedrock, us-west-2,
45
+ # stability.stable-image-core-v1:1, 25000 ms (max). Region/model accept only these values;
46
+ # IMAGE_PROVIDER=openai selects the DALL-E fallback.
47
+ IMAGE_PROVIDER=
48
+ BEDROCK_IMAGE_REGION=
49
+ BEDROCK_IMAGE_MODEL_ID=
50
+ IMAGE_TIMEOUT_MS=
41
51
  METABASE_SECRET_KEY=
42
52
  SCOUTS_SSO_CLIENT_SECRET=
43
53
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,45 @@
1
1
  # @welibraryos/lca-api-service
2
2
 
3
+ ## 1.6.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1850](https://github.com/learningeconomy/LearnCard/pull/1850) [`578e831f41bc762ff12e5ad9be6ba765f2bed33d`](https://github.com/learningeconomy/LearnCard/commit/578e831f41bc762ff12e5ad9be6ba765f2bed33d) Thanks [@Custard7](https://github.com/Custard7)! - Keep provisional Web3Auth migrations that have a confirmed escrow enrollment out of the 30-day purge of abandoned migrations, so users who skip the recovery PIN don't lose escrow.
8
+
9
+ - [#1859](https://github.com/learningeconomy/LearnCard/pull/1859) [`b20b375870032c22ea9109d2b102ddbc4a4f3248`](https://github.com/learningeconomy/LearnCard/commit/b20b375870032c22ea9109d2b102ddbc4a4f3248) Thanks [@goblincore](https://github.com/goblincore)! - Use a unique final sort key for escrow reminder, start-notification and cancellation queues so equal-priority records form predictable batches.
10
+
11
+ - Updated dependencies [[`b0c7891371fa621a1c2c4a419a1d4f330ed2993a`](https://github.com/learningeconomy/LearnCard/commit/b0c7891371fa621a1c2c4a419a1d4f330ed2993a), [`4ec92c41442b56341c1205e6ddd6ae784aecc990`](https://github.com/learningeconomy/LearnCard/commit/4ec92c41442b56341c1205e6ddd6ae784aecc990)]:
12
+ - @learncard/sss-key-manager@0.2.5
13
+ - @learncard/didkit-plugin@1.10.7
14
+ - @learncard/init@2.5.7
15
+ - @learncard/didkit-plugin-node@0.3.7
16
+
17
+ ## 1.6.0
18
+
19
+ ### Minor Changes
20
+
21
+ - [#1684](https://github.com/learningeconomy/LearnCard/pull/1684) [`c836310bafa663a4b18db3525b03c720f5b60117`](https://github.com/learningeconomy/LearnCard/commit/c836310bafa663a4b18db3525b03c720f5b60117) Thanks [@TaylorBeeston](https://github.com/TaylorBeeston)! - Move LCA boost and skill generation to Bedrock through the OpenAI Responses SDK, using GPT-6.1 Sol for boost copy and skills and GPT-6 Luna for icon mapping. Deployment requires Bedrock access for the Lambda execution role; text generation no longer uses OPENAI_API_KEY. Image generation also moves to Bedrock (Stable Image Core `stability.stable-image-core-v1:1` in us-west-2) by default, with DALL-E only as an explicit `IMAGE_PROVIDER=openai` fallback.
22
+
23
+ ### Patch Changes
24
+
25
+ - [#1829](https://github.com/learningeconomy/LearnCard/pull/1829) [`1a9678c68da326853c3a3baccbd90f3a8c342bb1`](https://github.com/learningeconomy/LearnCard/commit/1a9678c68da326853c3a3baccbd90f3a8c342bb1) Thanks [@Custard7](https://github.com/Custard7)! - Pin the production escrow enclave CA for `escrow-enclave.production.internal`, so the remote enclave transport can reach production over PrivateLink once escrow is enabled there. Escrow stays off in production until `ESCROW_ENCLAVE_MODE` is set.
26
+
27
+ - [#1684](https://github.com/learningeconomy/LearnCard/pull/1684) [`c836310bafa663a4b18db3525b03c720f5b60117`](https://github.com/learningeconomy/LearnCard/commit/c836310bafa663a4b18db3525b03c720f5b60117) Thanks [@TaylorBeeston](https://github.com/TaylorBeeston)! - Generate images with Amazon Bedrock Stable Image Core by default, preserving the image URL API. DALL-E remains available as an explicit IMAGE_PROVIDER=openai fallback, which is now the only use of OPENAI_API_KEY.
28
+
29
+ Image failures now log a sanitized `image_generation_failure` record (no prompt, provider message or credentials), map Bedrock throttling/quota errors (including HTTP 400 ServiceQuotaExceededException) to 429, unavailable and timeouts to 503 and content-filter rejections to 400, and retry throttling at most twice with jitter inside the deadline.
30
+
31
+ - [#1827](https://github.com/learningeconomy/LearnCard/pull/1827) [`11f18bde5808075df401e17d2b3cc40a0cdbdac7`](https://github.com/learningeconomy/LearnCard/commit/11f18bde5808075df401e17d2b3cc40a0cdbdac7) Thanks [@leif-squeak](https://github.com/apps/leif-squeak)! - Upgrade the pinned `zod` dependency to 4.6.6 to pick up the upstream security fix.
32
+
33
+ - Updated dependencies [[`4fae096473fd0824be1dd6aefb4a783062377104`](https://github.com/learningeconomy/LearnCard/commit/4fae096473fd0824be1dd6aefb4a783062377104), [`4fae096473fd0824be1dd6aefb4a783062377104`](https://github.com/learningeconomy/LearnCard/commit/4fae096473fd0824be1dd6aefb4a783062377104), [`d93c1b15856f341b4bd36415bf39052de9b6b198`](https://github.com/learningeconomy/LearnCard/commit/d93c1b15856f341b4bd36415bf39052de9b6b198), [`d1708a1ce43f052862fedda2cf0d922a71ad1762`](https://github.com/learningeconomy/LearnCard/commit/d1708a1ce43f052862fedda2cf0d922a71ad1762), [`11f18bde5808075df401e17d2b3cc40a0cdbdac7`](https://github.com/learningeconomy/LearnCard/commit/11f18bde5808075df401e17d2b3cc40a0cdbdac7)]:
34
+ - @learncard/types@5.24.0
35
+ - @learncard/didkit-plugin@1.10.6
36
+ - @learncard/helpers@1.7.1
37
+ - @learncard/core@9.4.41
38
+ - @learncard/init@2.5.6
39
+ - @learncard/did-web-plugin@1.1.41
40
+ - @learncard/didkit-plugin-node@0.3.6
41
+ - @learncard/sss-key-manager@0.2.4
42
+
3
43
  ## 1.5.3
4
44
 
5
45
  ### Patch Changes
package/bundle.mjs CHANGED
@@ -14,7 +14,7 @@ const finalBuildObj = {
14
14
  metafile: true,
15
15
  format: 'cjs',
16
16
  outdir: 'dist',
17
- target: 'node20',
17
+ target: 'node24',
18
18
  external: ['snappy', '@learncard/didkit-plugin/dist/didkit_wasm_bg.wasm'],
19
19
  plugins,
20
20
  minify: true,
package/dist/app.d.ts CHANGED
@@ -106,6 +106,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
106
106
  email?: string | undefined;
107
107
  image?: string | undefined;
108
108
  heroImage?: string | undefined;
109
+ linkedInOrganizationId?: string | undefined;
109
110
  websiteLink?: string | undefined;
110
111
  isServiceProfile?: boolean | undefined;
111
112
  type?: string | undefined;
@@ -145,6 +146,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
145
146
  email?: string | undefined;
146
147
  image?: string | undefined;
147
148
  heroImage?: string | undefined;
149
+ linkedInOrganizationId?: string | undefined;
148
150
  websiteLink?: string | undefined;
149
151
  isServiceProfile?: boolean | undefined;
150
152
  type?: string | undefined;
@@ -181,7 +183,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
181
183
  vpUris?: string[] | undefined;
182
184
  transaction?: {
183
185
  id: string;
184
- action: "write" | "consent" | "update" | "sync" | "withdraw";
186
+ action: "write" | "update" | "consent" | "sync" | "withdraw";
185
187
  date: string;
186
188
  expiresAt?: string | undefined;
187
189
  oneTime?: boolean | undefined;
@@ -1127,6 +1129,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
1127
1129
  attemptsRemaining: number;
1128
1130
  salt?: string | undefined;
1129
1131
  };
1132
+ priorEscrowEnrollment: boolean;
1130
1133
  sssActivationState: "active" | "provisional";
1131
1134
  escrowStale?: "mode-mismatch" | "key-rotated" | undefined;
1132
1135
  } | null;
@@ -1,12 +1,12 @@
1
1
  import 'dotenv/config';
2
2
  import { z } from 'zod';
3
3
  export declare const cacheEnvironmentShape: {
4
- REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
5
- REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
4
+ REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
5
+ REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
6
6
  };
7
7
  export declare const cacheEnvironmentSchema: z.ZodObject<{
8
- REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
9
- REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
8
+ REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
9
+ REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
10
10
  }, z.core.$strip>;
11
11
  export type CacheEnvironment = z.output<typeof cacheEnvironmentSchema>;
12
12
  export declare const parseCacheEnvironment: (raw: Record<string, unknown>, source?: string) => CacheEnvironment;
@@ -6,110 +6,118 @@ export declare const lcaApiEnvironmentShape: {
6
6
  test: "test";
7
7
  production: "production";
8
8
  }>>;
9
- LAMBDA_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
10
- CONFIG_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
11
- RUNTIME_SECRETS_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
9
+ LAMBDA_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
10
+ CONFIG_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
11
+ RUNTIME_SECRETS_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
12
12
  PORT: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
13
13
  SEED: z.ZodString;
14
- SA_SEED_KMS_KEY_ARN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
15
- SA_SEED_LOCAL_KEK: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
14
+ SA_SEED_KMS_KEY_ARN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
15
+ SA_SEED_LOCAL_KEK: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
16
16
  SA_SEED_ENCRYPT_WRITES: z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
17
17
  0: "0";
18
18
  1: "1";
19
19
  true: "true";
20
20
  false: "false";
21
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>;
21
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>;
22
22
  SA_SEED_ALLOW_LEGACY_READ: z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
23
23
  0: "0";
24
24
  1: "1";
25
25
  true: "true";
26
26
  false: "false";
27
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>;
27
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>;
28
28
  MONGO_URI: z.ZodString;
29
29
  MONGO_DB_NAME: z.ZodString;
30
- DOMAIN_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
31
- AUTHORIZED_DIDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
32
- LEARN_CLOUD_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
33
- NETWORK_BRAIN_SERVICE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
34
- GOOGLE_APPLICATION_CREDENTIAL: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
35
- OPENAI_API_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
36
- METABASE_SECRET_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
37
- SCOUTS_SSO_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
38
- KEYCLOAK_ISSUERS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
39
- KEYCLOAK_AUDIENCES: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
40
- KEYCLOAK_JWKS_URL_OVERRIDES: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
41
- OIDC_ISSUER: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
42
- OIDC_SIGNING_KEY_JWK: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
43
- OIDC_SIGNING_KEY_SECRET_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
44
- OIDC_CLIENT_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
45
- OIDC_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
46
- OIDC_REDIRECT_URIS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
47
- GOOGLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
48
- APPLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
49
- POSTMARK_SERVER_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
50
- POSTMARK_FROM_EMAIL: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
51
- POSTMARK_BRAND_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
52
- POSTMARK_LOGIN_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
53
- POSTMARK_ENDORSEMENT_REQUEST_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
54
- POSTMARK_RECOVERY_EMAIL_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
55
- POSTMARK_RECOVERY_KEY_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
56
- ESCROW_RELAY_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
57
- ESCROW_RELAY_AUTH_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
58
- ESCROW_ENCLAVE_MODE: z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodOptional<z.ZodEnum<{
30
+ DOMAIN_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
31
+ AUTHORIZED_DIDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
32
+ LEARN_CLOUD_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
33
+ NETWORK_BRAIN_SERVICE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
34
+ GOOGLE_APPLICATION_CREDENTIAL: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
35
+ OPENAI_API_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
36
+ BEDROCK_BASE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
37
+ IMAGE_PROVIDER: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<string, string | undefined>>, z.ZodEnum<{
38
+ bedrock: "bedrock";
39
+ openai: "openai";
40
+ }>>;
41
+ BEDROCK_IMAGE_REGION: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<string, string | undefined>>, z.ZodLiteral<"us-west-2">>;
42
+ BEDROCK_IMAGE_MODEL_ID: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<string, string | undefined>>, z.ZodLiteral<"stability.stable-image-core-v1:1">>;
43
+ IMAGE_TIMEOUT_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
44
+ METABASE_SECRET_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
45
+ SCOUTS_SSO_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
46
+ KEYCLOAK_ISSUERS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
47
+ KEYCLOAK_AUDIENCES: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
48
+ KEYCLOAK_JWKS_URL_OVERRIDES: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
49
+ OIDC_ISSUER: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
50
+ OIDC_SIGNING_KEY_JWK: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
51
+ OIDC_SIGNING_KEY_SECRET_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
52
+ OIDC_CLIENT_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
53
+ OIDC_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
54
+ OIDC_REDIRECT_URIS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
55
+ GOOGLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
56
+ APPLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
57
+ POSTMARK_SERVER_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
58
+ POSTMARK_FROM_EMAIL: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
59
+ POSTMARK_BRAND_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
60
+ POSTMARK_LOGIN_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
61
+ POSTMARK_ENDORSEMENT_REQUEST_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
62
+ POSTMARK_RECOVERY_EMAIL_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
63
+ POSTMARK_RECOVERY_KEY_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
64
+ ESCROW_RELAY_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
65
+ ESCROW_RELAY_AUTH_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
66
+ ESCROW_ENCLAVE_MODE: z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodOptional<z.ZodEnum<{
59
67
  software: "software";
60
68
  remote: "remote";
61
69
  }>>>;
62
- ESCROW_ENCLAVE_SOFTWARE_PRIVATE_KEYS_JSON: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
63
- ESCROW_ENCLAVE_ACTIVE_KEY_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
64
- ESCROW_ENCLAVE_REMOTE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
65
- ESCROW_ENCLAVE_REMOTE_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
70
+ ESCROW_ENCLAVE_SOFTWARE_PRIVATE_KEYS_JSON: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
71
+ ESCROW_ENCLAVE_ACTIVE_KEY_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
72
+ ESCROW_ENCLAVE_REMOTE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
73
+ ESCROW_ENCLAVE_REMOTE_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
66
74
  ESCROW_RELEASE_KILL_SWITCH: z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
67
75
  0: "0";
68
76
  1: "1";
69
77
  true: "true";
70
78
  false: "false";
71
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>;
72
- ESCROW_ENCLAVE_REMOTE_TIMEOUT_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
73
- ESCROW_HOLD_DURATION_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
74
- ESCROW_HOLD_RESTART_MIN_AGE_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
75
- ANDROID_PUSH_ICON: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
76
- REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
77
- REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
78
- NSO_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
79
- GLOBAL_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
80
- TROOP_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
81
- SENTRY_DSN: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
82
- SENTRY_ENV: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
79
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>;
80
+ ESCROW_ENCLAVE_REMOTE_TIMEOUT_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
81
+ ESCROW_HOLD_DURATION_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
82
+ ESCROW_HOLD_RESTART_MIN_AGE_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
83
+ ANDROID_PUSH_ICON: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
84
+ REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
85
+ REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
86
+ NSO_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
87
+ GLOBAL_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
88
+ TROOP_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
89
+ SENTRY_DSN: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
90
+ SENTRY_ENV: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
83
91
  IS_OFFLINE: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
84
92
  0: "0";
85
93
  1: "1";
86
94
  true: "true";
87
95
  false: "false";
88
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
96
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
89
97
  IS_CI: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
90
98
  0: "0";
91
99
  1: "1";
92
100
  true: "true";
93
101
  false: "false";
94
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
102
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
95
103
  IS_E2E_TEST: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
96
104
  0: "0";
97
105
  1: "1";
98
106
  true: "true";
99
107
  false: "false";
100
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
108
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
101
109
  SKIP_DIDKIT_NAPI: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
102
110
  0: "0";
103
111
  1: "1";
104
112
  true: "true";
105
113
  false: "false";
106
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
114
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
107
115
  CI: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
108
116
  0: "0";
109
117
  1: "1";
110
118
  true: "true";
111
119
  false: "false";
112
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
120
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
113
121
  };
114
122
  export declare const lcaApiEnvironmentSchema: z.ZodPipe<z.ZodObject<{
115
123
  NODE_ENV: z.ZodDefault<z.ZodEnum<{
@@ -117,110 +125,118 @@ export declare const lcaApiEnvironmentSchema: z.ZodPipe<z.ZodObject<{
117
125
  test: "test";
118
126
  production: "production";
119
127
  }>>;
120
- LAMBDA_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
121
- CONFIG_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
122
- RUNTIME_SECRETS_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
128
+ LAMBDA_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
129
+ CONFIG_STAGE: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
130
+ RUNTIME_SECRETS_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
123
131
  PORT: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
124
132
  SEED: z.ZodString;
125
- SA_SEED_KMS_KEY_ARN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
126
- SA_SEED_LOCAL_KEK: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
133
+ SA_SEED_KMS_KEY_ARN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
134
+ SA_SEED_LOCAL_KEK: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
127
135
  SA_SEED_ENCRYPT_WRITES: z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
128
136
  0: "0";
129
137
  1: "1";
130
138
  true: "true";
131
139
  false: "false";
132
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>;
140
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>;
133
141
  SA_SEED_ALLOW_LEGACY_READ: z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
134
142
  0: "0";
135
143
  1: "1";
136
144
  true: "true";
137
145
  false: "false";
138
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>;
146
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>;
139
147
  MONGO_URI: z.ZodString;
140
148
  MONGO_DB_NAME: z.ZodString;
141
- DOMAIN_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
142
- AUTHORIZED_DIDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
143
- LEARN_CLOUD_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
144
- NETWORK_BRAIN_SERVICE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
145
- GOOGLE_APPLICATION_CREDENTIAL: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
146
- OPENAI_API_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
147
- METABASE_SECRET_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
148
- SCOUTS_SSO_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
149
- KEYCLOAK_ISSUERS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
150
- KEYCLOAK_AUDIENCES: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
151
- KEYCLOAK_JWKS_URL_OVERRIDES: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
152
- OIDC_ISSUER: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
153
- OIDC_SIGNING_KEY_JWK: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
154
- OIDC_SIGNING_KEY_SECRET_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
155
- OIDC_CLIENT_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
156
- OIDC_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
157
- OIDC_REDIRECT_URIS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
158
- GOOGLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
159
- APPLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
160
- POSTMARK_SERVER_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
161
- POSTMARK_FROM_EMAIL: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
162
- POSTMARK_BRAND_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
163
- POSTMARK_LOGIN_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
164
- POSTMARK_ENDORSEMENT_REQUEST_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
165
- POSTMARK_RECOVERY_EMAIL_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
166
- POSTMARK_RECOVERY_KEY_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
167
- ESCROW_RELAY_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
168
- ESCROW_RELAY_AUTH_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
169
- ESCROW_ENCLAVE_MODE: z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodOptional<z.ZodEnum<{
149
+ DOMAIN_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
150
+ AUTHORIZED_DIDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
151
+ LEARN_CLOUD_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
152
+ NETWORK_BRAIN_SERVICE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
153
+ GOOGLE_APPLICATION_CREDENTIAL: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
154
+ OPENAI_API_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
155
+ BEDROCK_BASE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
156
+ IMAGE_PROVIDER: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<string, string | undefined>>, z.ZodEnum<{
157
+ bedrock: "bedrock";
158
+ openai: "openai";
159
+ }>>;
160
+ BEDROCK_IMAGE_REGION: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<string, string | undefined>>, z.ZodLiteral<"us-west-2">>;
161
+ BEDROCK_IMAGE_MODEL_ID: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<string, string | undefined>>, z.ZodLiteral<"stability.stable-image-core-v1:1">>;
162
+ IMAGE_TIMEOUT_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
163
+ METABASE_SECRET_KEY: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
164
+ SCOUTS_SSO_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
165
+ KEYCLOAK_ISSUERS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
166
+ KEYCLOAK_AUDIENCES: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
167
+ KEYCLOAK_JWKS_URL_OVERRIDES: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
168
+ OIDC_ISSUER: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
169
+ OIDC_SIGNING_KEY_JWK: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
170
+ OIDC_SIGNING_KEY_SECRET_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
171
+ OIDC_CLIENT_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
172
+ OIDC_CLIENT_SECRET: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
173
+ OIDC_REDIRECT_URIS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
174
+ GOOGLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
175
+ APPLE_OAUTH_CLIENT_IDS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
176
+ POSTMARK_SERVER_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
177
+ POSTMARK_FROM_EMAIL: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
178
+ POSTMARK_BRAND_NAME: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
179
+ POSTMARK_LOGIN_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
180
+ POSTMARK_ENDORSEMENT_REQUEST_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
181
+ POSTMARK_RECOVERY_EMAIL_CODE_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
182
+ POSTMARK_RECOVERY_KEY_TEMPLATE_ALIAS: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
183
+ ESCROW_RELAY_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
184
+ ESCROW_RELAY_AUTH_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
185
+ ESCROW_ENCLAVE_MODE: z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodOptional<z.ZodEnum<{
170
186
  software: "software";
171
187
  remote: "remote";
172
188
  }>>>;
173
- ESCROW_ENCLAVE_SOFTWARE_PRIVATE_KEYS_JSON: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
174
- ESCROW_ENCLAVE_ACTIVE_KEY_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
175
- ESCROW_ENCLAVE_REMOTE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
176
- ESCROW_ENCLAVE_REMOTE_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
189
+ ESCROW_ENCLAVE_SOFTWARE_PRIVATE_KEYS_JSON: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
190
+ ESCROW_ENCLAVE_ACTIVE_KEY_ID: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
191
+ ESCROW_ENCLAVE_REMOTE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
192
+ ESCROW_ENCLAVE_REMOTE_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
177
193
  ESCROW_RELEASE_KILL_SWITCH: z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
178
194
  0: "0";
179
195
  1: "1";
180
196
  true: "true";
181
197
  false: "false";
182
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>;
183
- ESCROW_ENCLAVE_REMOTE_TIMEOUT_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
184
- ESCROW_HOLD_DURATION_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
185
- ESCROW_HOLD_RESTART_MIN_AGE_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
186
- ANDROID_PUSH_ICON: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
187
- REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
188
- REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
189
- NSO_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
190
- GLOBAL_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
191
- TROOP_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>>;
192
- SENTRY_DSN: z.ZodPreprocess<z.ZodOptional<z.ZodURL>>;
193
- SENTRY_ENV: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
198
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>;
199
+ ESCROW_ENCLAVE_REMOTE_TIMEOUT_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
200
+ ESCROW_HOLD_DURATION_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
201
+ ESCROW_HOLD_RESTART_MIN_AGE_MS: z.ZodPipe<z.ZodPipe<z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>, z.ZodTransform<number, string | undefined>>, z.ZodNumber>;
202
+ ANDROID_PUSH_ICON: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
203
+ REDIS_HOST: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
204
+ REDIS_PORT: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
205
+ NSO_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
206
+ GLOBAL_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
207
+ TROOP_DASHBOARD_ID: z.ZodPreprocess<z.ZodOptional<z.ZodCoercedNumber<unknown>>, unknown>;
208
+ SENTRY_DSN: z.ZodPreprocess<z.ZodOptional<z.ZodURL>, unknown>;
209
+ SENTRY_ENV: z.ZodPreprocess<z.ZodOptional<z.ZodString>, unknown>;
194
210
  IS_OFFLINE: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
195
211
  0: "0";
196
212
  1: "1";
197
213
  true: "true";
198
214
  false: "false";
199
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
215
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
200
216
  IS_CI: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
201
217
  0: "0";
202
218
  1: "1";
203
219
  true: "true";
204
220
  false: "false";
205
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
221
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
206
222
  IS_E2E_TEST: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
207
223
  0: "0";
208
224
  1: "1";
209
225
  true: "true";
210
226
  false: "false";
211
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
227
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
212
228
  SKIP_DIDKIT_NAPI: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
213
229
  0: "0";
214
230
  1: "1";
215
231
  true: "true";
216
232
  false: "false";
217
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
233
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
218
234
  CI: z.ZodDefault<z.ZodPreprocess<z.ZodOptional<z.ZodPipe<z.ZodEnum<{
219
235
  0: "0";
220
236
  1: "1";
221
237
  true: "true";
222
238
  false: "false";
223
- }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>>>;
239
+ }>, z.ZodTransform<boolean, "0" | "1" | "true" | "false">>>, unknown>>;
224
240
  }, z.core.$strip>, z.ZodTransform<{
225
241
  SA_SEED_ENCRYPT_WRITES: boolean;
226
242
  SA_SEED_ALLOW_LEGACY_READ: boolean;
@@ -229,6 +245,10 @@ export declare const lcaApiEnvironmentSchema: z.ZodPipe<z.ZodObject<{
229
245
  SEED: string;
230
246
  MONGO_URI: string;
231
247
  MONGO_DB_NAME: string;
248
+ IMAGE_PROVIDER: "bedrock" | "openai";
249
+ BEDROCK_IMAGE_REGION: "us-west-2";
250
+ BEDROCK_IMAGE_MODEL_ID: "stability.stable-image-core-v1:1";
251
+ IMAGE_TIMEOUT_MS: number;
232
252
  ESCROW_ENCLAVE_REMOTE_TIMEOUT_MS: number;
233
253
  ESCROW_HOLD_DURATION_MS: number;
234
254
  ESCROW_HOLD_RESTART_MIN_AGE_MS: number;
@@ -248,6 +268,7 @@ export declare const lcaApiEnvironmentSchema: z.ZodPipe<z.ZodObject<{
248
268
  NETWORK_BRAIN_SERVICE_URL?: string | undefined;
249
269
  GOOGLE_APPLICATION_CREDENTIAL?: string | undefined;
250
270
  OPENAI_API_KEY?: string | undefined;
271
+ BEDROCK_BASE_URL?: string | undefined;
251
272
  METABASE_SECRET_KEY?: string | undefined;
252
273
  SCOUTS_SSO_CLIENT_SECRET?: string | undefined;
253
274
  KEYCLOAK_ISSUERS?: string | undefined;
@@ -290,6 +311,10 @@ export declare const lcaApiEnvironmentSchema: z.ZodPipe<z.ZodObject<{
290
311
  SEED: string;
291
312
  MONGO_URI: string;
292
313
  MONGO_DB_NAME: string;
314
+ IMAGE_PROVIDER: "bedrock" | "openai";
315
+ BEDROCK_IMAGE_REGION: "us-west-2";
316
+ BEDROCK_IMAGE_MODEL_ID: "stability.stable-image-core-v1:1";
317
+ IMAGE_TIMEOUT_MS: number;
293
318
  ESCROW_ENCLAVE_REMOTE_TIMEOUT_MS: number;
294
319
  ESCROW_HOLD_DURATION_MS: number;
295
320
  ESCROW_HOLD_RESTART_MIN_AGE_MS: number;
@@ -311,6 +336,7 @@ export declare const lcaApiEnvironmentSchema: z.ZodPipe<z.ZodObject<{
311
336
  NETWORK_BRAIN_SERVICE_URL?: string | undefined;
312
337
  GOOGLE_APPLICATION_CREDENTIAL?: string | undefined;
313
338
  OPENAI_API_KEY?: string | undefined;
339
+ BEDROCK_BASE_URL?: string | undefined;
314
340
  METABASE_SECRET_KEY?: string | undefined;
315
341
  SCOUTS_SSO_CLIENT_SECRET?: string | undefined;
316
342
  KEYCLOAK_ISSUERS?: string | undefined;
@@ -360,6 +386,10 @@ export declare const environment: {
360
386
  SEED: string;
361
387
  MONGO_URI: string;
362
388
  MONGO_DB_NAME: string;
389
+ IMAGE_PROVIDER: "bedrock" | "openai";
390
+ BEDROCK_IMAGE_REGION: "us-west-2";
391
+ BEDROCK_IMAGE_MODEL_ID: "stability.stable-image-core-v1:1";
392
+ IMAGE_TIMEOUT_MS: number;
363
393
  ESCROW_ENCLAVE_REMOTE_TIMEOUT_MS: number;
364
394
  ESCROW_HOLD_DURATION_MS: number;
365
395
  ESCROW_HOLD_RESTART_MIN_AGE_MS: number;
@@ -379,6 +409,7 @@ export declare const environment: {
379
409
  NETWORK_BRAIN_SERVICE_URL?: string | undefined;
380
410
  GOOGLE_APPLICATION_CREDENTIAL?: string | undefined;
381
411
  OPENAI_API_KEY?: string | undefined;
412
+ BEDROCK_BASE_URL?: string | undefined;
382
413
  METABASE_SECRET_KEY?: string | undefined;
383
414
  SCOUTS_SSO_CLIENT_SECRET?: string | undefined;
384
415
  KEYCLOAK_ISSUERS?: string | undefined;