@nymbalhq/config 1.1.0 → 1.3.0

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.
package/dist/index.d.ts CHANGED
@@ -215,7 +215,7 @@ declare const infrastructureSchema: z.ZodEffects<z.ZodObject<{
215
215
  forcePathStyle?: boolean | undefined;
216
216
  } | undefined;
217
217
  }>;
218
- declare const securitySchema: z.ZodObject<{
218
+ declare const securitySchema: z.ZodEffects<z.ZodObject<{
219
219
  adapter: z.ZodEnum<["middleware", "cloudflare", "aws-waf", "akamai"]>;
220
220
  rateLimit: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
221
221
  requests: z.ZodNumber;
@@ -270,6 +270,41 @@ declare const securitySchema: z.ZodObject<{
270
270
  accessTtl?: string | undefined;
271
271
  refreshTtl?: string | undefined;
272
272
  }>>;
273
+ cloudflare: z.ZodOptional<z.ZodObject<{
274
+ zoneId: z.ZodOptional<z.ZodString>;
275
+ apiToken: z.ZodOptional<z.ZodString>;
276
+ /** The Cloudflare v4 API; the adapter defaults it to https://api.cloudflare.com/client/v4. */
277
+ apiBase: z.ZodOptional<z.ZodString>;
278
+ }, "strip", z.ZodTypeAny, {
279
+ zoneId?: string | undefined;
280
+ apiToken?: string | undefined;
281
+ apiBase?: string | undefined;
282
+ }, {
283
+ zoneId?: string | undefined;
284
+ apiToken?: string | undefined;
285
+ apiBase?: string | undefined;
286
+ }>>;
287
+ geo: z.ZodDefault<z.ZodObject<{
288
+ block: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
289
+ }, "strip", z.ZodTypeAny, {
290
+ block: string[];
291
+ }, {
292
+ block?: string[] | undefined;
293
+ }>>;
294
+ customRules: z.ZodDefault<z.ZodArray<z.ZodObject<{
295
+ name: z.ZodString;
296
+ expression: z.ZodString;
297
+ action: z.ZodEnum<["block", "managed_challenge", "js_challenge", "log"]>;
298
+ }, "strip", z.ZodTypeAny, {
299
+ name: string;
300
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
301
+ expression: string;
302
+ }, {
303
+ name: string;
304
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
305
+ expression: string;
306
+ }>, "many">>;
307
+ managedRulesets: z.ZodDefault<z.ZodArray<z.ZodEnum<["cloudflare", "owasp"]>, "many">>;
273
308
  }, "strip", z.ZodTypeAny, {
274
309
  adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
275
310
  rateLimit: Record<string, {
@@ -293,8 +328,101 @@ declare const securitySchema: z.ZodObject<{
293
328
  accessTtl: string;
294
329
  refreshTtl: string;
295
330
  };
331
+ geo: {
332
+ block: string[];
333
+ };
334
+ customRules: {
335
+ name: string;
336
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
337
+ expression: string;
338
+ }[];
339
+ managedRulesets: ("cloudflare" | "owasp")[];
340
+ cloudflare?: {
341
+ zoneId?: string | undefined;
342
+ apiToken?: string | undefined;
343
+ apiBase?: string | undefined;
344
+ } | undefined;
345
+ }, {
346
+ adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
347
+ cloudflare?: {
348
+ zoneId?: string | undefined;
349
+ apiToken?: string | undefined;
350
+ apiBase?: string | undefined;
351
+ } | undefined;
352
+ rateLimit?: Record<string, {
353
+ requests: number;
354
+ window: string;
355
+ action: "block" | "challenge" | "throttle";
356
+ }> | undefined;
357
+ botProtection?: {
358
+ mode?: "strict" | "off" | "managed" | undefined;
359
+ allowList?: string[] | undefined;
360
+ } | undefined;
361
+ headers?: {
362
+ hsts?: boolean | undefined;
363
+ contentSecurityPolicy?: string | undefined;
364
+ referrerPolicy?: string | undefined;
365
+ xFrameOptions?: "deny" | "sameorigin" | undefined;
366
+ } | undefined;
367
+ csrf?: boolean | undefined;
368
+ auth?: {
369
+ jwtSecret?: string | undefined;
370
+ accessTtl?: string | undefined;
371
+ refreshTtl?: string | undefined;
372
+ } | undefined;
373
+ geo?: {
374
+ block?: string[] | undefined;
375
+ } | undefined;
376
+ customRules?: {
377
+ name: string;
378
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
379
+ expression: string;
380
+ }[] | undefined;
381
+ managedRulesets?: ("cloudflare" | "owasp")[] | undefined;
382
+ }>, {
383
+ adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
384
+ rateLimit: Record<string, {
385
+ requests: number;
386
+ window: string;
387
+ action: "block" | "challenge" | "throttle";
388
+ }>;
389
+ botProtection: {
390
+ mode: "strict" | "off" | "managed";
391
+ allowList: string[];
392
+ };
393
+ headers: {
394
+ hsts: boolean;
395
+ contentSecurityPolicy: string;
396
+ referrerPolicy: string;
397
+ xFrameOptions: "deny" | "sameorigin";
398
+ };
399
+ csrf: boolean;
400
+ auth: {
401
+ jwtSecret: string;
402
+ accessTtl: string;
403
+ refreshTtl: string;
404
+ };
405
+ geo: {
406
+ block: string[];
407
+ };
408
+ customRules: {
409
+ name: string;
410
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
411
+ expression: string;
412
+ }[];
413
+ managedRulesets: ("cloudflare" | "owasp")[];
414
+ cloudflare?: {
415
+ zoneId?: string | undefined;
416
+ apiToken?: string | undefined;
417
+ apiBase?: string | undefined;
418
+ } | undefined;
296
419
  }, {
297
420
  adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
421
+ cloudflare?: {
422
+ zoneId?: string | undefined;
423
+ apiToken?: string | undefined;
424
+ apiBase?: string | undefined;
425
+ } | undefined;
298
426
  rateLimit?: Record<string, {
299
427
  requests: number;
300
428
  window: string;
@@ -316,87 +444,128 @@ declare const securitySchema: z.ZodObject<{
316
444
  accessTtl?: string | undefined;
317
445
  refreshTtl?: string | undefined;
318
446
  } | undefined;
447
+ geo?: {
448
+ block?: string[] | undefined;
449
+ } | undefined;
450
+ customRules?: {
451
+ name: string;
452
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
453
+ expression: string;
454
+ }[] | undefined;
455
+ managedRulesets?: ("cloudflare" | "owasp")[] | undefined;
319
456
  }>;
320
457
  declare const commerceSchema: z.ZodObject<{
321
458
  payments: z.ZodObject<{
322
459
  provider: z.ZodEnum<["native", "stripe", "custom"]>;
323
460
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
461
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
462
+ package: z.ZodOptional<z.ZodString>;
324
463
  }, "strip", z.ZodTypeAny, {
325
464
  provider: "native" | "stripe" | "custom";
326
465
  config?: Record<string, unknown> | undefined;
466
+ package?: string | undefined;
327
467
  }, {
328
468
  provider: "native" | "stripe" | "custom";
329
469
  config?: Record<string, unknown> | undefined;
470
+ package?: string | undefined;
330
471
  }>;
331
472
  email: z.ZodObject<{
332
473
  provider: z.ZodEnum<["native", "smtp", "custom"]>;
333
474
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
475
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
476
+ package: z.ZodOptional<z.ZodString>;
334
477
  }, "strip", z.ZodTypeAny, {
335
478
  provider: "native" | "custom" | "smtp";
336
479
  config?: Record<string, unknown> | undefined;
480
+ package?: string | undefined;
337
481
  }, {
338
482
  provider: "native" | "custom" | "smtp";
339
483
  config?: Record<string, unknown> | undefined;
484
+ package?: string | undefined;
340
485
  }>;
341
486
  reviews: z.ZodObject<{
342
487
  provider: z.ZodEnum<["native", "custom"]>;
343
488
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
489
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
490
+ package: z.ZodOptional<z.ZodString>;
344
491
  }, "strip", z.ZodTypeAny, {
345
492
  provider: "native" | "custom";
346
493
  config?: Record<string, unknown> | undefined;
494
+ package?: string | undefined;
347
495
  }, {
348
496
  provider: "native" | "custom";
349
497
  config?: Record<string, unknown> | undefined;
498
+ package?: string | undefined;
350
499
  }>;
351
500
  search: z.ZodObject<{
352
501
  provider: z.ZodEnum<["native", "custom"]>;
353
502
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
503
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
504
+ package: z.ZodOptional<z.ZodString>;
354
505
  }, "strip", z.ZodTypeAny, {
355
506
  provider: "native" | "custom";
356
507
  config?: Record<string, unknown> | undefined;
508
+ package?: string | undefined;
357
509
  }, {
358
510
  provider: "native" | "custom";
359
511
  config?: Record<string, unknown> | undefined;
512
+ package?: string | undefined;
360
513
  }>;
361
514
  analytics: z.ZodObject<{
362
515
  provider: z.ZodEnum<["native", "custom"]>;
363
516
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
517
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
518
+ package: z.ZodOptional<z.ZodString>;
364
519
  }, "strip", z.ZodTypeAny, {
365
520
  provider: "native" | "custom";
366
521
  config?: Record<string, unknown> | undefined;
522
+ package?: string | undefined;
367
523
  }, {
368
524
  provider: "native" | "custom";
369
525
  config?: Record<string, unknown> | undefined;
526
+ package?: string | undefined;
370
527
  }>;
371
528
  shipping: z.ZodObject<{
372
529
  provider: z.ZodEnum<["native", "custom"]>;
373
530
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
531
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
532
+ package: z.ZodOptional<z.ZodString>;
374
533
  }, "strip", z.ZodTypeAny, {
375
534
  provider: "native" | "custom";
376
535
  config?: Record<string, unknown> | undefined;
536
+ package?: string | undefined;
377
537
  }, {
378
538
  provider: "native" | "custom";
379
539
  config?: Record<string, unknown> | undefined;
540
+ package?: string | undefined;
380
541
  }>;
381
542
  tax: z.ZodObject<{
382
543
  provider: z.ZodEnum<["native", "custom"]>;
383
544
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
545
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
546
+ package: z.ZodOptional<z.ZodString>;
384
547
  }, "strip", z.ZodTypeAny, {
385
548
  provider: "native" | "custom";
386
549
  config?: Record<string, unknown> | undefined;
550
+ package?: string | undefined;
387
551
  }, {
388
552
  provider: "native" | "custom";
389
553
  config?: Record<string, unknown> | undefined;
554
+ package?: string | undefined;
390
555
  }>;
391
556
  ai: z.ZodObject<{
392
557
  provider: z.ZodEnum<["none", "anthropic", "custom"]>;
393
558
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
559
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
560
+ package: z.ZodOptional<z.ZodString>;
394
561
  }, "strip", z.ZodTypeAny, {
395
562
  provider: "custom" | "none" | "anthropic";
396
563
  config?: Record<string, unknown> | undefined;
564
+ package?: string | undefined;
397
565
  }, {
398
566
  provider: "custom" | "none" | "anthropic";
399
567
  config?: Record<string, unknown> | undefined;
568
+ package?: string | undefined;
400
569
  }>;
401
570
  orders: z.ZodDefault<z.ZodObject<{
402
571
  numberPrefix: z.ZodDefault<z.ZodString>;
@@ -412,34 +581,42 @@ declare const commerceSchema: z.ZodObject<{
412
581
  payments: {
413
582
  provider: "native" | "stripe" | "custom";
414
583
  config?: Record<string, unknown> | undefined;
584
+ package?: string | undefined;
415
585
  };
416
586
  email: {
417
587
  provider: "native" | "custom" | "smtp";
418
588
  config?: Record<string, unknown> | undefined;
589
+ package?: string | undefined;
419
590
  };
420
591
  reviews: {
421
592
  provider: "native" | "custom";
422
593
  config?: Record<string, unknown> | undefined;
594
+ package?: string | undefined;
423
595
  };
424
596
  search: {
425
597
  provider: "native" | "custom";
426
598
  config?: Record<string, unknown> | undefined;
599
+ package?: string | undefined;
427
600
  };
428
601
  analytics: {
429
602
  provider: "native" | "custom";
430
603
  config?: Record<string, unknown> | undefined;
604
+ package?: string | undefined;
431
605
  };
432
606
  shipping: {
433
607
  provider: "native" | "custom";
434
608
  config?: Record<string, unknown> | undefined;
609
+ package?: string | undefined;
435
610
  };
436
611
  tax: {
437
612
  provider: "native" | "custom";
438
613
  config?: Record<string, unknown> | undefined;
614
+ package?: string | undefined;
439
615
  };
440
616
  ai: {
441
617
  provider: "custom" | "none" | "anthropic";
442
618
  config?: Record<string, unknown> | undefined;
619
+ package?: string | undefined;
443
620
  };
444
621
  orders: {
445
622
  numberPrefix: string;
@@ -449,34 +626,42 @@ declare const commerceSchema: z.ZodObject<{
449
626
  payments: {
450
627
  provider: "native" | "stripe" | "custom";
451
628
  config?: Record<string, unknown> | undefined;
629
+ package?: string | undefined;
452
630
  };
453
631
  email: {
454
632
  provider: "native" | "custom" | "smtp";
455
633
  config?: Record<string, unknown> | undefined;
634
+ package?: string | undefined;
456
635
  };
457
636
  reviews: {
458
637
  provider: "native" | "custom";
459
638
  config?: Record<string, unknown> | undefined;
639
+ package?: string | undefined;
460
640
  };
461
641
  search: {
462
642
  provider: "native" | "custom";
463
643
  config?: Record<string, unknown> | undefined;
644
+ package?: string | undefined;
464
645
  };
465
646
  analytics: {
466
647
  provider: "native" | "custom";
467
648
  config?: Record<string, unknown> | undefined;
649
+ package?: string | undefined;
468
650
  };
469
651
  shipping: {
470
652
  provider: "native" | "custom";
471
653
  config?: Record<string, unknown> | undefined;
654
+ package?: string | undefined;
472
655
  };
473
656
  tax: {
474
657
  provider: "native" | "custom";
475
658
  config?: Record<string, unknown> | undefined;
659
+ package?: string | undefined;
476
660
  };
477
661
  ai: {
478
662
  provider: "custom" | "none" | "anthropic";
479
663
  config?: Record<string, unknown> | undefined;
664
+ package?: string | undefined;
480
665
  };
481
666
  orders?: {
482
667
  numberPrefix?: string | undefined;
@@ -538,6 +723,87 @@ declare const featuresSchema: z.ZodObject<{
538
723
  heartbeat?: boolean | undefined;
539
724
  autoUpdates?: boolean | undefined;
540
725
  }>;
726
+ /**
727
+ * The bucket delivered events past retention are archived to before they are deleted. Its objects hold customer
728
+ * data, so it must be private: never the media bucket, which serves its objects publicly. Credentials come from the
729
+ * AWS SDK's default chain, as `infrastructure.s3`'s do.
730
+ */
731
+ declare const eventArchiveSchema: z.ZodObject<{
732
+ adapter: z.ZodLiteral<"s3">;
733
+ bucket: z.ZodString;
734
+ /** Where every archive key starts; none when not given. */
735
+ prefix: z.ZodOptional<z.ZodString>;
736
+ /** `'us-east-1'` when not given. */
737
+ region: z.ZodOptional<z.ZodString>;
738
+ /** An S3-compatible API (MinIO, R2). */
739
+ endpoint: z.ZodOptional<z.ZodString>;
740
+ /** Path-style requests; true by default when an endpoint is set. */
741
+ forcePathStyle: z.ZodOptional<z.ZodBoolean>;
742
+ }, "strict", z.ZodTypeAny, {
743
+ bucket: string;
744
+ adapter: "s3";
745
+ prefix?: string | undefined;
746
+ region?: string | undefined;
747
+ endpoint?: string | undefined;
748
+ forcePathStyle?: boolean | undefined;
749
+ }, {
750
+ bucket: string;
751
+ adapter: "s3";
752
+ prefix?: string | undefined;
753
+ region?: string | undefined;
754
+ endpoint?: string | undefined;
755
+ forcePathStyle?: boolean | undefined;
756
+ }>;
757
+ declare const eventsSchema: z.ZodObject<{
758
+ /** Days a delivered event stays in the log. */
759
+ retentionDays: z.ZodDefault<z.ZodNumber>;
760
+ archive: z.ZodOptional<z.ZodObject<{
761
+ adapter: z.ZodLiteral<"s3">;
762
+ bucket: z.ZodString;
763
+ /** Where every archive key starts; none when not given. */
764
+ prefix: z.ZodOptional<z.ZodString>;
765
+ /** `'us-east-1'` when not given. */
766
+ region: z.ZodOptional<z.ZodString>;
767
+ /** An S3-compatible API (MinIO, R2). */
768
+ endpoint: z.ZodOptional<z.ZodString>;
769
+ /** Path-style requests; true by default when an endpoint is set. */
770
+ forcePathStyle: z.ZodOptional<z.ZodBoolean>;
771
+ }, "strict", z.ZodTypeAny, {
772
+ bucket: string;
773
+ adapter: "s3";
774
+ prefix?: string | undefined;
775
+ region?: string | undefined;
776
+ endpoint?: string | undefined;
777
+ forcePathStyle?: boolean | undefined;
778
+ }, {
779
+ bucket: string;
780
+ adapter: "s3";
781
+ prefix?: string | undefined;
782
+ region?: string | undefined;
783
+ endpoint?: string | undefined;
784
+ forcePathStyle?: boolean | undefined;
785
+ }>>;
786
+ }, "strict", z.ZodTypeAny, {
787
+ retentionDays: number;
788
+ archive?: {
789
+ bucket: string;
790
+ adapter: "s3";
791
+ prefix?: string | undefined;
792
+ region?: string | undefined;
793
+ endpoint?: string | undefined;
794
+ forcePathStyle?: boolean | undefined;
795
+ } | undefined;
796
+ }, {
797
+ retentionDays?: number | undefined;
798
+ archive?: {
799
+ bucket: string;
800
+ adapter: "s3";
801
+ prefix?: string | undefined;
802
+ region?: string | undefined;
803
+ endpoint?: string | undefined;
804
+ forcePathStyle?: boolean | undefined;
805
+ } | undefined;
806
+ }>;
541
807
  declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
542
808
  store: z.ZodObject<{
543
809
  name: z.ZodString;
@@ -694,7 +960,7 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
694
960
  forcePathStyle?: boolean | undefined;
695
961
  } | undefined;
696
962
  }>;
697
- security: z.ZodObject<{
963
+ security: z.ZodEffects<z.ZodObject<{
698
964
  adapter: z.ZodEnum<["middleware", "cloudflare", "aws-waf", "akamai"]>;
699
965
  rateLimit: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
700
966
  requests: z.ZodNumber;
@@ -749,6 +1015,41 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
749
1015
  accessTtl?: string | undefined;
750
1016
  refreshTtl?: string | undefined;
751
1017
  }>>;
1018
+ cloudflare: z.ZodOptional<z.ZodObject<{
1019
+ zoneId: z.ZodOptional<z.ZodString>;
1020
+ apiToken: z.ZodOptional<z.ZodString>;
1021
+ /** The Cloudflare v4 API; the adapter defaults it to https://api.cloudflare.com/client/v4. */
1022
+ apiBase: z.ZodOptional<z.ZodString>;
1023
+ }, "strip", z.ZodTypeAny, {
1024
+ zoneId?: string | undefined;
1025
+ apiToken?: string | undefined;
1026
+ apiBase?: string | undefined;
1027
+ }, {
1028
+ zoneId?: string | undefined;
1029
+ apiToken?: string | undefined;
1030
+ apiBase?: string | undefined;
1031
+ }>>;
1032
+ geo: z.ZodDefault<z.ZodObject<{
1033
+ block: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1034
+ }, "strip", z.ZodTypeAny, {
1035
+ block: string[];
1036
+ }, {
1037
+ block?: string[] | undefined;
1038
+ }>>;
1039
+ customRules: z.ZodDefault<z.ZodArray<z.ZodObject<{
1040
+ name: z.ZodString;
1041
+ expression: z.ZodString;
1042
+ action: z.ZodEnum<["block", "managed_challenge", "js_challenge", "log"]>;
1043
+ }, "strip", z.ZodTypeAny, {
1044
+ name: string;
1045
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1046
+ expression: string;
1047
+ }, {
1048
+ name: string;
1049
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1050
+ expression: string;
1051
+ }>, "many">>;
1052
+ managedRulesets: z.ZodDefault<z.ZodArray<z.ZodEnum<["cloudflare", "owasp"]>, "many">>;
752
1053
  }, "strip", z.ZodTypeAny, {
753
1054
  adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
754
1055
  rateLimit: Record<string, {
@@ -772,8 +1073,101 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
772
1073
  accessTtl: string;
773
1074
  refreshTtl: string;
774
1075
  };
1076
+ geo: {
1077
+ block: string[];
1078
+ };
1079
+ customRules: {
1080
+ name: string;
1081
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1082
+ expression: string;
1083
+ }[];
1084
+ managedRulesets: ("cloudflare" | "owasp")[];
1085
+ cloudflare?: {
1086
+ zoneId?: string | undefined;
1087
+ apiToken?: string | undefined;
1088
+ apiBase?: string | undefined;
1089
+ } | undefined;
1090
+ }, {
1091
+ adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
1092
+ cloudflare?: {
1093
+ zoneId?: string | undefined;
1094
+ apiToken?: string | undefined;
1095
+ apiBase?: string | undefined;
1096
+ } | undefined;
1097
+ rateLimit?: Record<string, {
1098
+ requests: number;
1099
+ window: string;
1100
+ action: "block" | "challenge" | "throttle";
1101
+ }> | undefined;
1102
+ botProtection?: {
1103
+ mode?: "strict" | "off" | "managed" | undefined;
1104
+ allowList?: string[] | undefined;
1105
+ } | undefined;
1106
+ headers?: {
1107
+ hsts?: boolean | undefined;
1108
+ contentSecurityPolicy?: string | undefined;
1109
+ referrerPolicy?: string | undefined;
1110
+ xFrameOptions?: "deny" | "sameorigin" | undefined;
1111
+ } | undefined;
1112
+ csrf?: boolean | undefined;
1113
+ auth?: {
1114
+ jwtSecret?: string | undefined;
1115
+ accessTtl?: string | undefined;
1116
+ refreshTtl?: string | undefined;
1117
+ } | undefined;
1118
+ geo?: {
1119
+ block?: string[] | undefined;
1120
+ } | undefined;
1121
+ customRules?: {
1122
+ name: string;
1123
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1124
+ expression: string;
1125
+ }[] | undefined;
1126
+ managedRulesets?: ("cloudflare" | "owasp")[] | undefined;
1127
+ }>, {
1128
+ adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
1129
+ rateLimit: Record<string, {
1130
+ requests: number;
1131
+ window: string;
1132
+ action: "block" | "challenge" | "throttle";
1133
+ }>;
1134
+ botProtection: {
1135
+ mode: "strict" | "off" | "managed";
1136
+ allowList: string[];
1137
+ };
1138
+ headers: {
1139
+ hsts: boolean;
1140
+ contentSecurityPolicy: string;
1141
+ referrerPolicy: string;
1142
+ xFrameOptions: "deny" | "sameorigin";
1143
+ };
1144
+ csrf: boolean;
1145
+ auth: {
1146
+ jwtSecret: string;
1147
+ accessTtl: string;
1148
+ refreshTtl: string;
1149
+ };
1150
+ geo: {
1151
+ block: string[];
1152
+ };
1153
+ customRules: {
1154
+ name: string;
1155
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1156
+ expression: string;
1157
+ }[];
1158
+ managedRulesets: ("cloudflare" | "owasp")[];
1159
+ cloudflare?: {
1160
+ zoneId?: string | undefined;
1161
+ apiToken?: string | undefined;
1162
+ apiBase?: string | undefined;
1163
+ } | undefined;
775
1164
  }, {
776
1165
  adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
1166
+ cloudflare?: {
1167
+ zoneId?: string | undefined;
1168
+ apiToken?: string | undefined;
1169
+ apiBase?: string | undefined;
1170
+ } | undefined;
777
1171
  rateLimit?: Record<string, {
778
1172
  requests: number;
779
1173
  window: string;
@@ -795,87 +1189,128 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
795
1189
  accessTtl?: string | undefined;
796
1190
  refreshTtl?: string | undefined;
797
1191
  } | undefined;
1192
+ geo?: {
1193
+ block?: string[] | undefined;
1194
+ } | undefined;
1195
+ customRules?: {
1196
+ name: string;
1197
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1198
+ expression: string;
1199
+ }[] | undefined;
1200
+ managedRulesets?: ("cloudflare" | "owasp")[] | undefined;
798
1201
  }>;
799
1202
  commerce: z.ZodObject<{
800
1203
  payments: z.ZodObject<{
801
1204
  provider: z.ZodEnum<["native", "stripe", "custom"]>;
802
1205
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1206
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1207
+ package: z.ZodOptional<z.ZodString>;
803
1208
  }, "strip", z.ZodTypeAny, {
804
1209
  provider: "native" | "stripe" | "custom";
805
1210
  config?: Record<string, unknown> | undefined;
1211
+ package?: string | undefined;
806
1212
  }, {
807
1213
  provider: "native" | "stripe" | "custom";
808
1214
  config?: Record<string, unknown> | undefined;
1215
+ package?: string | undefined;
809
1216
  }>;
810
1217
  email: z.ZodObject<{
811
1218
  provider: z.ZodEnum<["native", "smtp", "custom"]>;
812
1219
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1220
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1221
+ package: z.ZodOptional<z.ZodString>;
813
1222
  }, "strip", z.ZodTypeAny, {
814
1223
  provider: "native" | "custom" | "smtp";
815
1224
  config?: Record<string, unknown> | undefined;
1225
+ package?: string | undefined;
816
1226
  }, {
817
1227
  provider: "native" | "custom" | "smtp";
818
1228
  config?: Record<string, unknown> | undefined;
1229
+ package?: string | undefined;
819
1230
  }>;
820
1231
  reviews: z.ZodObject<{
821
1232
  provider: z.ZodEnum<["native", "custom"]>;
822
1233
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1234
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1235
+ package: z.ZodOptional<z.ZodString>;
823
1236
  }, "strip", z.ZodTypeAny, {
824
1237
  provider: "native" | "custom";
825
1238
  config?: Record<string, unknown> | undefined;
1239
+ package?: string | undefined;
826
1240
  }, {
827
1241
  provider: "native" | "custom";
828
1242
  config?: Record<string, unknown> | undefined;
1243
+ package?: string | undefined;
829
1244
  }>;
830
1245
  search: z.ZodObject<{
831
1246
  provider: z.ZodEnum<["native", "custom"]>;
832
1247
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1248
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1249
+ package: z.ZodOptional<z.ZodString>;
833
1250
  }, "strip", z.ZodTypeAny, {
834
1251
  provider: "native" | "custom";
835
1252
  config?: Record<string, unknown> | undefined;
1253
+ package?: string | undefined;
836
1254
  }, {
837
1255
  provider: "native" | "custom";
838
1256
  config?: Record<string, unknown> | undefined;
1257
+ package?: string | undefined;
839
1258
  }>;
840
1259
  analytics: z.ZodObject<{
841
1260
  provider: z.ZodEnum<["native", "custom"]>;
842
1261
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1262
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1263
+ package: z.ZodOptional<z.ZodString>;
843
1264
  }, "strip", z.ZodTypeAny, {
844
1265
  provider: "native" | "custom";
845
1266
  config?: Record<string, unknown> | undefined;
1267
+ package?: string | undefined;
846
1268
  }, {
847
1269
  provider: "native" | "custom";
848
1270
  config?: Record<string, unknown> | undefined;
1271
+ package?: string | undefined;
849
1272
  }>;
850
1273
  shipping: z.ZodObject<{
851
1274
  provider: z.ZodEnum<["native", "custom"]>;
852
1275
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1276
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1277
+ package: z.ZodOptional<z.ZodString>;
853
1278
  }, "strip", z.ZodTypeAny, {
854
1279
  provider: "native" | "custom";
855
1280
  config?: Record<string, unknown> | undefined;
1281
+ package?: string | undefined;
856
1282
  }, {
857
1283
  provider: "native" | "custom";
858
1284
  config?: Record<string, unknown> | undefined;
1285
+ package?: string | undefined;
859
1286
  }>;
860
1287
  tax: z.ZodObject<{
861
1288
  provider: z.ZodEnum<["native", "custom"]>;
862
1289
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1290
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1291
+ package: z.ZodOptional<z.ZodString>;
863
1292
  }, "strip", z.ZodTypeAny, {
864
1293
  provider: "native" | "custom";
865
1294
  config?: Record<string, unknown> | undefined;
1295
+ package?: string | undefined;
866
1296
  }, {
867
1297
  provider: "native" | "custom";
868
1298
  config?: Record<string, unknown> | undefined;
1299
+ package?: string | undefined;
869
1300
  }>;
870
1301
  ai: z.ZodObject<{
871
1302
  provider: z.ZodEnum<["none", "anthropic", "custom"]>;
872
1303
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1304
+ /** The npm package a `custom` slot's adapter comes from, for tooling (`nymbal test:contracts`); the kernel never reads it. */
1305
+ package: z.ZodOptional<z.ZodString>;
873
1306
  }, "strip", z.ZodTypeAny, {
874
1307
  provider: "custom" | "none" | "anthropic";
875
1308
  config?: Record<string, unknown> | undefined;
1309
+ package?: string | undefined;
876
1310
  }, {
877
1311
  provider: "custom" | "none" | "anthropic";
878
1312
  config?: Record<string, unknown> | undefined;
1313
+ package?: string | undefined;
879
1314
  }>;
880
1315
  orders: z.ZodDefault<z.ZodObject<{
881
1316
  numberPrefix: z.ZodDefault<z.ZodString>;
@@ -891,34 +1326,42 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
891
1326
  payments: {
892
1327
  provider: "native" | "stripe" | "custom";
893
1328
  config?: Record<string, unknown> | undefined;
1329
+ package?: string | undefined;
894
1330
  };
895
1331
  email: {
896
1332
  provider: "native" | "custom" | "smtp";
897
1333
  config?: Record<string, unknown> | undefined;
1334
+ package?: string | undefined;
898
1335
  };
899
1336
  reviews: {
900
1337
  provider: "native" | "custom";
901
1338
  config?: Record<string, unknown> | undefined;
1339
+ package?: string | undefined;
902
1340
  };
903
1341
  search: {
904
1342
  provider: "native" | "custom";
905
1343
  config?: Record<string, unknown> | undefined;
1344
+ package?: string | undefined;
906
1345
  };
907
1346
  analytics: {
908
1347
  provider: "native" | "custom";
909
1348
  config?: Record<string, unknown> | undefined;
1349
+ package?: string | undefined;
910
1350
  };
911
1351
  shipping: {
912
1352
  provider: "native" | "custom";
913
1353
  config?: Record<string, unknown> | undefined;
1354
+ package?: string | undefined;
914
1355
  };
915
1356
  tax: {
916
1357
  provider: "native" | "custom";
917
1358
  config?: Record<string, unknown> | undefined;
1359
+ package?: string | undefined;
918
1360
  };
919
1361
  ai: {
920
1362
  provider: "custom" | "none" | "anthropic";
921
1363
  config?: Record<string, unknown> | undefined;
1364
+ package?: string | undefined;
922
1365
  };
923
1366
  orders: {
924
1367
  numberPrefix: string;
@@ -928,34 +1371,42 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
928
1371
  payments: {
929
1372
  provider: "native" | "stripe" | "custom";
930
1373
  config?: Record<string, unknown> | undefined;
1374
+ package?: string | undefined;
931
1375
  };
932
1376
  email: {
933
1377
  provider: "native" | "custom" | "smtp";
934
1378
  config?: Record<string, unknown> | undefined;
1379
+ package?: string | undefined;
935
1380
  };
936
1381
  reviews: {
937
1382
  provider: "native" | "custom";
938
1383
  config?: Record<string, unknown> | undefined;
1384
+ package?: string | undefined;
939
1385
  };
940
1386
  search: {
941
1387
  provider: "native" | "custom";
942
1388
  config?: Record<string, unknown> | undefined;
1389
+ package?: string | undefined;
943
1390
  };
944
1391
  analytics: {
945
1392
  provider: "native" | "custom";
946
1393
  config?: Record<string, unknown> | undefined;
1394
+ package?: string | undefined;
947
1395
  };
948
1396
  shipping: {
949
1397
  provider: "native" | "custom";
950
1398
  config?: Record<string, unknown> | undefined;
1399
+ package?: string | undefined;
951
1400
  };
952
1401
  tax: {
953
1402
  provider: "native" | "custom";
954
1403
  config?: Record<string, unknown> | undefined;
1404
+ package?: string | undefined;
955
1405
  };
956
1406
  ai: {
957
1407
  provider: "custom" | "none" | "anthropic";
958
1408
  config?: Record<string, unknown> | undefined;
1409
+ package?: string | undefined;
959
1410
  };
960
1411
  orders?: {
961
1412
  numberPrefix?: string | undefined;
@@ -1017,6 +1468,56 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1017
1468
  heartbeat?: boolean | undefined;
1018
1469
  autoUpdates?: boolean | undefined;
1019
1470
  }>>;
1471
+ events: z.ZodDefault<z.ZodObject<{
1472
+ /** Days a delivered event stays in the log. */
1473
+ retentionDays: z.ZodDefault<z.ZodNumber>;
1474
+ archive: z.ZodOptional<z.ZodObject<{
1475
+ adapter: z.ZodLiteral<"s3">;
1476
+ bucket: z.ZodString;
1477
+ /** Where every archive key starts; none when not given. */
1478
+ prefix: z.ZodOptional<z.ZodString>;
1479
+ /** `'us-east-1'` when not given. */
1480
+ region: z.ZodOptional<z.ZodString>;
1481
+ /** An S3-compatible API (MinIO, R2). */
1482
+ endpoint: z.ZodOptional<z.ZodString>;
1483
+ /** Path-style requests; true by default when an endpoint is set. */
1484
+ forcePathStyle: z.ZodOptional<z.ZodBoolean>;
1485
+ }, "strict", z.ZodTypeAny, {
1486
+ bucket: string;
1487
+ adapter: "s3";
1488
+ prefix?: string | undefined;
1489
+ region?: string | undefined;
1490
+ endpoint?: string | undefined;
1491
+ forcePathStyle?: boolean | undefined;
1492
+ }, {
1493
+ bucket: string;
1494
+ adapter: "s3";
1495
+ prefix?: string | undefined;
1496
+ region?: string | undefined;
1497
+ endpoint?: string | undefined;
1498
+ forcePathStyle?: boolean | undefined;
1499
+ }>>;
1500
+ }, "strict", z.ZodTypeAny, {
1501
+ retentionDays: number;
1502
+ archive?: {
1503
+ bucket: string;
1504
+ adapter: "s3";
1505
+ prefix?: string | undefined;
1506
+ region?: string | undefined;
1507
+ endpoint?: string | undefined;
1508
+ forcePathStyle?: boolean | undefined;
1509
+ } | undefined;
1510
+ }, {
1511
+ retentionDays?: number | undefined;
1512
+ archive?: {
1513
+ bucket: string;
1514
+ adapter: "s3";
1515
+ prefix?: string | undefined;
1516
+ region?: string | undefined;
1517
+ endpoint?: string | undefined;
1518
+ forcePathStyle?: boolean | undefined;
1519
+ } | undefined;
1520
+ }>>;
1020
1521
  }, "strip", z.ZodTypeAny, {
1021
1522
  store: {
1022
1523
  name: string;
@@ -1069,39 +1570,61 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1069
1570
  accessTtl: string;
1070
1571
  refreshTtl: string;
1071
1572
  };
1573
+ geo: {
1574
+ block: string[];
1575
+ };
1576
+ customRules: {
1577
+ name: string;
1578
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1579
+ expression: string;
1580
+ }[];
1581
+ managedRulesets: ("cloudflare" | "owasp")[];
1582
+ cloudflare?: {
1583
+ zoneId?: string | undefined;
1584
+ apiToken?: string | undefined;
1585
+ apiBase?: string | undefined;
1586
+ } | undefined;
1072
1587
  };
1073
1588
  commerce: {
1074
1589
  payments: {
1075
1590
  provider: "native" | "stripe" | "custom";
1076
1591
  config?: Record<string, unknown> | undefined;
1592
+ package?: string | undefined;
1077
1593
  };
1078
1594
  email: {
1079
1595
  provider: "native" | "custom" | "smtp";
1080
1596
  config?: Record<string, unknown> | undefined;
1597
+ package?: string | undefined;
1081
1598
  };
1082
1599
  reviews: {
1083
1600
  provider: "native" | "custom";
1084
1601
  config?: Record<string, unknown> | undefined;
1602
+ package?: string | undefined;
1085
1603
  };
1086
1604
  search: {
1087
1605
  provider: "native" | "custom";
1088
1606
  config?: Record<string, unknown> | undefined;
1607
+ package?: string | undefined;
1089
1608
  };
1090
1609
  analytics: {
1091
1610
  provider: "native" | "custom";
1092
1611
  config?: Record<string, unknown> | undefined;
1612
+ package?: string | undefined;
1093
1613
  };
1094
1614
  shipping: {
1095
1615
  provider: "native" | "custom";
1096
1616
  config?: Record<string, unknown> | undefined;
1617
+ package?: string | undefined;
1097
1618
  };
1098
1619
  tax: {
1099
1620
  provider: "native" | "custom";
1100
1621
  config?: Record<string, unknown> | undefined;
1622
+ package?: string | undefined;
1101
1623
  };
1102
1624
  ai: {
1103
1625
  provider: "custom" | "none" | "anthropic";
1104
1626
  config?: Record<string, unknown> | undefined;
1627
+ package?: string | undefined;
1105
1628
  };
1106
1629
  orders: {
1107
1630
  numberPrefix: string;
@@ -1126,6 +1649,17 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1126
1649
  heartbeat: boolean;
1127
1650
  autoUpdates: boolean;
1128
1651
  };
1652
+ events: {
1653
+ retentionDays: number;
1654
+ archive?: {
1655
+ bucket: string;
1656
+ adapter: "s3";
1657
+ prefix?: string | undefined;
1658
+ region?: string | undefined;
1659
+ endpoint?: string | undefined;
1660
+ forcePathStyle?: boolean | undefined;
1661
+ } | undefined;
1662
+ };
1129
1663
  }, {
1130
1664
  store: {
1131
1665
  name: string;
@@ -1157,6 +1691,11 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1157
1691
  };
1158
1692
  security: {
1159
1693
  adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
1694
+ cloudflare?: {
1695
+ zoneId?: string | undefined;
1696
+ apiToken?: string | undefined;
1697
+ apiBase?: string | undefined;
1698
+ } | undefined;
1160
1699
  rateLimit?: Record<string, {
1161
1700
  requests: number;
1162
1701
  window: string;
@@ -1178,39 +1717,56 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1178
1717
  accessTtl?: string | undefined;
1179
1718
  refreshTtl?: string | undefined;
1180
1719
  } | undefined;
1720
+ geo?: {
1721
+ block?: string[] | undefined;
1722
+ } | undefined;
1723
+ customRules?: {
1724
+ name: string;
1725
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1726
+ expression: string;
1727
+ }[] | undefined;
1728
+ managedRulesets?: ("cloudflare" | "owasp")[] | undefined;
1181
1729
  };
1182
1730
  commerce: {
1183
1731
  payments: {
1184
1732
  provider: "native" | "stripe" | "custom";
1185
1733
  config?: Record<string, unknown> | undefined;
1734
+ package?: string | undefined;
1186
1735
  };
1187
1736
  email: {
1188
1737
  provider: "native" | "custom" | "smtp";
1189
1738
  config?: Record<string, unknown> | undefined;
1739
+ package?: string | undefined;
1190
1740
  };
1191
1741
  reviews: {
1192
1742
  provider: "native" | "custom";
1193
1743
  config?: Record<string, unknown> | undefined;
1744
+ package?: string | undefined;
1194
1745
  };
1195
1746
  search: {
1196
1747
  provider: "native" | "custom";
1197
1748
  config?: Record<string, unknown> | undefined;
1749
+ package?: string | undefined;
1198
1750
  };
1199
1751
  analytics: {
1200
1752
  provider: "native" | "custom";
1201
1753
  config?: Record<string, unknown> | undefined;
1754
+ package?: string | undefined;
1202
1755
  };
1203
1756
  shipping: {
1204
1757
  provider: "native" | "custom";
1205
1758
  config?: Record<string, unknown> | undefined;
1759
+ package?: string | undefined;
1206
1760
  };
1207
1761
  tax: {
1208
1762
  provider: "native" | "custom";
1209
1763
  config?: Record<string, unknown> | undefined;
1764
+ package?: string | undefined;
1210
1765
  };
1211
1766
  ai: {
1212
1767
  provider: "custom" | "none" | "anthropic";
1213
1768
  config?: Record<string, unknown> | undefined;
1769
+ package?: string | undefined;
1214
1770
  };
1215
1771
  orders?: {
1216
1772
  numberPrefix?: string | undefined;
@@ -1235,6 +1791,17 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1235
1791
  heartbeat?: boolean | undefined;
1236
1792
  autoUpdates?: boolean | undefined;
1237
1793
  } | undefined;
1794
+ events?: {
1795
+ retentionDays?: number | undefined;
1796
+ archive?: {
1797
+ bucket: string;
1798
+ adapter: "s3";
1799
+ prefix?: string | undefined;
1800
+ region?: string | undefined;
1801
+ endpoint?: string | undefined;
1802
+ forcePathStyle?: boolean | undefined;
1803
+ } | undefined;
1804
+ } | undefined;
1238
1805
  }>, {
1239
1806
  store: {
1240
1807
  name: string;
@@ -1287,39 +1854,61 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1287
1854
  accessTtl: string;
1288
1855
  refreshTtl: string;
1289
1856
  };
1857
+ geo: {
1858
+ block: string[];
1859
+ };
1860
+ customRules: {
1861
+ name: string;
1862
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
1863
+ expression: string;
1864
+ }[];
1865
+ managedRulesets: ("cloudflare" | "owasp")[];
1866
+ cloudflare?: {
1867
+ zoneId?: string | undefined;
1868
+ apiToken?: string | undefined;
1869
+ apiBase?: string | undefined;
1870
+ } | undefined;
1290
1871
  };
1291
1872
  commerce: {
1292
1873
  payments: {
1293
1874
  provider: "native" | "stripe" | "custom";
1294
1875
  config?: Record<string, unknown> | undefined;
1876
+ package?: string | undefined;
1295
1877
  };
1296
1878
  email: {
1297
1879
  provider: "native" | "custom" | "smtp";
1298
1880
  config?: Record<string, unknown> | undefined;
1881
+ package?: string | undefined;
1299
1882
  };
1300
1883
  reviews: {
1301
1884
  provider: "native" | "custom";
1302
1885
  config?: Record<string, unknown> | undefined;
1886
+ package?: string | undefined;
1303
1887
  };
1304
1888
  search: {
1305
1889
  provider: "native" | "custom";
1306
1890
  config?: Record<string, unknown> | undefined;
1891
+ package?: string | undefined;
1307
1892
  };
1308
1893
  analytics: {
1309
1894
  provider: "native" | "custom";
1310
1895
  config?: Record<string, unknown> | undefined;
1896
+ package?: string | undefined;
1311
1897
  };
1312
1898
  shipping: {
1313
1899
  provider: "native" | "custom";
1314
1900
  config?: Record<string, unknown> | undefined;
1901
+ package?: string | undefined;
1315
1902
  };
1316
1903
  tax: {
1317
1904
  provider: "native" | "custom";
1318
1905
  config?: Record<string, unknown> | undefined;
1906
+ package?: string | undefined;
1319
1907
  };
1320
1908
  ai: {
1321
1909
  provider: "custom" | "none" | "anthropic";
1322
1910
  config?: Record<string, unknown> | undefined;
1911
+ package?: string | undefined;
1323
1912
  };
1324
1913
  orders: {
1325
1914
  numberPrefix: string;
@@ -1344,6 +1933,17 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1344
1933
  heartbeat: boolean;
1345
1934
  autoUpdates: boolean;
1346
1935
  };
1936
+ events: {
1937
+ retentionDays: number;
1938
+ archive?: {
1939
+ bucket: string;
1940
+ adapter: "s3";
1941
+ prefix?: string | undefined;
1942
+ region?: string | undefined;
1943
+ endpoint?: string | undefined;
1944
+ forcePathStyle?: boolean | undefined;
1945
+ } | undefined;
1946
+ };
1347
1947
  }, {
1348
1948
  store: {
1349
1949
  name: string;
@@ -1375,6 +1975,11 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1375
1975
  };
1376
1976
  security: {
1377
1977
  adapter: "middleware" | "cloudflare" | "aws-waf" | "akamai";
1978
+ cloudflare?: {
1979
+ zoneId?: string | undefined;
1980
+ apiToken?: string | undefined;
1981
+ apiBase?: string | undefined;
1982
+ } | undefined;
1378
1983
  rateLimit?: Record<string, {
1379
1984
  requests: number;
1380
1985
  window: string;
@@ -1396,39 +2001,56 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1396
2001
  accessTtl?: string | undefined;
1397
2002
  refreshTtl?: string | undefined;
1398
2003
  } | undefined;
2004
+ geo?: {
2005
+ block?: string[] | undefined;
2006
+ } | undefined;
2007
+ customRules?: {
2008
+ name: string;
2009
+ action: "block" | "managed_challenge" | "js_challenge" | "log";
2010
+ expression: string;
2011
+ }[] | undefined;
2012
+ managedRulesets?: ("cloudflare" | "owasp")[] | undefined;
1399
2013
  };
1400
2014
  commerce: {
1401
2015
  payments: {
1402
2016
  provider: "native" | "stripe" | "custom";
1403
2017
  config?: Record<string, unknown> | undefined;
2018
+ package?: string | undefined;
1404
2019
  };
1405
2020
  email: {
1406
2021
  provider: "native" | "custom" | "smtp";
1407
2022
  config?: Record<string, unknown> | undefined;
2023
+ package?: string | undefined;
1408
2024
  };
1409
2025
  reviews: {
1410
2026
  provider: "native" | "custom";
1411
2027
  config?: Record<string, unknown> | undefined;
2028
+ package?: string | undefined;
1412
2029
  };
1413
2030
  search: {
1414
2031
  provider: "native" | "custom";
1415
2032
  config?: Record<string, unknown> | undefined;
2033
+ package?: string | undefined;
1416
2034
  };
1417
2035
  analytics: {
1418
2036
  provider: "native" | "custom";
1419
2037
  config?: Record<string, unknown> | undefined;
2038
+ package?: string | undefined;
1420
2039
  };
1421
2040
  shipping: {
1422
2041
  provider: "native" | "custom";
1423
2042
  config?: Record<string, unknown> | undefined;
2043
+ package?: string | undefined;
1424
2044
  };
1425
2045
  tax: {
1426
2046
  provider: "native" | "custom";
1427
2047
  config?: Record<string, unknown> | undefined;
2048
+ package?: string | undefined;
1428
2049
  };
1429
2050
  ai: {
1430
2051
  provider: "custom" | "none" | "anthropic";
1431
2052
  config?: Record<string, unknown> | undefined;
2053
+ package?: string | undefined;
1432
2054
  };
1433
2055
  orders?: {
1434
2056
  numberPrefix?: string | undefined;
@@ -1453,6 +2075,17 @@ declare const nymbalConfigSchema: z.ZodEffects<z.ZodObject<{
1453
2075
  heartbeat?: boolean | undefined;
1454
2076
  autoUpdates?: boolean | undefined;
1455
2077
  } | undefined;
2078
+ events?: {
2079
+ retentionDays?: number | undefined;
2080
+ archive?: {
2081
+ bucket: string;
2082
+ adapter: "s3";
2083
+ prefix?: string | undefined;
2084
+ region?: string | undefined;
2085
+ endpoint?: string | undefined;
2086
+ forcePathStyle?: boolean | undefined;
2087
+ } | undefined;
2088
+ } | undefined;
1456
2089
  }>;
1457
2090
  type NymbalConfigInput = z.input<typeof nymbalConfigSchema>;
1458
2091
  type NymbalConfig = z.output<typeof nymbalConfigSchema>;
@@ -1504,4 +2137,5 @@ interface LoadedConfig {
1504
2137
  declare function findConfigFile(startDir: string): string | null;
1505
2138
  declare function loadConfig(startDir?: string): Promise<LoadedConfig>;
1506
2139
 
1507
- export { DEFAULT_JWT_SECRET, type InfrastructureSlot, KNOWN_INFRASTRUCTURE, KNOWN_PROVIDERS, type LoadedConfig, type NymbalConfig, type NymbalConfigInput, REMOVED_INFRASTRUCTURE_KEYS, commerceSchema, defineConfig, deploymentSchema, env, envBool, envNumber, envOptional, featuresSchema, findConfigFile, httpSchema, infrastructureSchema, loadConfig, nymbalConfigSchema, redisSchema, s3Schema, securitySchema, storeSchema };
2140
+ export { DEFAULT_JWT_SECRET, KNOWN_INFRASTRUCTURE, KNOWN_PROVIDERS, REMOVED_INFRASTRUCTURE_KEYS, commerceSchema, defineConfig, deploymentSchema, env, envBool, envNumber, envOptional, eventArchiveSchema, eventsSchema, featuresSchema, findConfigFile, httpSchema, infrastructureSchema, loadConfig, nymbalConfigSchema, redisSchema, s3Schema, securitySchema, storeSchema };
2141
+ export type { InfrastructureSlot, LoadedConfig, NymbalConfig, NymbalConfigInput };