@character-foundry/character-foundry 0.4.2 → 0.4.3-dev.1766103111

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 (57) hide show
  1. package/dist/charx.cjs +87 -54
  2. package/dist/charx.cjs.map +1 -1
  3. package/dist/charx.d.cts +40 -31
  4. package/dist/charx.d.ts +40 -31
  5. package/dist/charx.js +87 -54
  6. package/dist/charx.js.map +1 -1
  7. package/dist/exporter.cjs +106 -56
  8. package/dist/exporter.cjs.map +1 -1
  9. package/dist/exporter.d.cts +37 -28
  10. package/dist/exporter.d.ts +37 -28
  11. package/dist/exporter.js +106 -56
  12. package/dist/exporter.js.map +1 -1
  13. package/dist/federation.cjs +104 -36
  14. package/dist/federation.cjs.map +1 -1
  15. package/dist/federation.d.cts +72 -28
  16. package/dist/federation.d.ts +72 -28
  17. package/dist/federation.js +104 -36
  18. package/dist/federation.js.map +1 -1
  19. package/dist/index.cjs +106 -56
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +71 -50
  22. package/dist/index.d.ts +71 -50
  23. package/dist/index.js +106 -56
  24. package/dist/index.js.map +1 -1
  25. package/dist/loader.cjs +173 -33
  26. package/dist/loader.cjs.map +1 -1
  27. package/dist/loader.d.cts +65 -37
  28. package/dist/loader.d.ts +65 -37
  29. package/dist/loader.js +173 -33
  30. package/dist/loader.js.map +1 -1
  31. package/dist/lorebook.d.cts +57 -40
  32. package/dist/lorebook.d.ts +57 -40
  33. package/dist/normalizer.cjs +74 -20
  34. package/dist/normalizer.cjs.map +1 -1
  35. package/dist/normalizer.d.cts +97 -67
  36. package/dist/normalizer.d.ts +97 -67
  37. package/dist/normalizer.js +74 -20
  38. package/dist/normalizer.js.map +1 -1
  39. package/dist/png.cjs +74 -20
  40. package/dist/png.cjs.map +1 -1
  41. package/dist/png.d.cts +57 -41
  42. package/dist/png.d.ts +57 -41
  43. package/dist/png.js +74 -20
  44. package/dist/png.js.map +1 -1
  45. package/dist/schemas.cjs +82 -25
  46. package/dist/schemas.cjs.map +1 -1
  47. package/dist/schemas.d.cts +181 -115
  48. package/dist/schemas.d.ts +181 -115
  49. package/dist/schemas.js +82 -25
  50. package/dist/schemas.js.map +1 -1
  51. package/dist/voxta.cjs +93 -22
  52. package/dist/voxta.cjs.map +1 -1
  53. package/dist/voxta.d.cts +51 -37
  54. package/dist/voxta.d.ts +51 -37
  55. package/dist/voxta.js +93 -22
  56. package/dist/voxta.js.map +1 -1
  57. package/package.json +5 -5
@@ -21,8 +21,8 @@ declare const CCv3DataSchema: z.ZodObject<{
21
21
  character_book: z.ZodNullable<z.ZodOptional<z.ZodObject<{
22
22
  name: z.ZodOptional<z.ZodString>;
23
23
  description: z.ZodOptional<z.ZodString>;
24
- scan_depth: z.ZodOptional<z.ZodNumber>;
25
- token_budget: z.ZodOptional<z.ZodNumber>;
24
+ scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
25
+ token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
26
26
  recursive_scanning: z.ZodOptional<z.ZodBoolean>;
27
27
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
28
28
  entries: z.ZodArray<z.ZodObject<{
@@ -41,7 +41,8 @@ declare const CCv3DataSchema: z.ZodObject<{
41
41
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
42
42
  z.ZodEnum<[
43
43
  "before_char",
44
- "after_char"
44
+ "after_char",
45
+ "in_chat"
45
46
  ]>,
46
47
  z.ZodNumber,
47
48
  z.ZodLiteral<"">
@@ -84,7 +85,8 @@ declare const CCv3DataSchema: z.ZodObject<{
84
85
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
85
86
  z.ZodEnum<[
86
87
  "before_char",
87
- "after_char"
88
+ "after_char",
89
+ "in_chat"
88
90
  ]>,
89
91
  z.ZodNumber,
90
92
  z.ZodLiteral<"">
@@ -127,7 +129,8 @@ declare const CCv3DataSchema: z.ZodObject<{
127
129
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
128
130
  z.ZodEnum<[
129
131
  "before_char",
130
- "after_char"
132
+ "after_char",
133
+ "in_chat"
131
134
  ]>,
132
135
  z.ZodNumber,
133
136
  z.ZodLiteral<"">
@@ -172,7 +175,8 @@ declare const CCv3DataSchema: z.ZodObject<{
172
175
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
173
176
  z.ZodEnum<[
174
177
  "before_char",
175
- "after_char"
178
+ "after_char",
179
+ "in_chat"
176
180
  ]>,
177
181
  z.ZodNumber,
178
182
  z.ZodLiteral<"">
@@ -223,7 +227,8 @@ declare const CCv3DataSchema: z.ZodObject<{
223
227
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
224
228
  z.ZodEnum<[
225
229
  "before_char",
226
- "after_char"
230
+ "after_char",
231
+ "in_chat"
227
232
  ]>,
228
233
  z.ZodNumber,
229
234
  z.ZodLiteral<"">
@@ -253,14 +258,14 @@ declare const CCv3DataSchema: z.ZodObject<{
253
258
  }, z.ZodTypeAny, "passthrough">[];
254
259
  name?: string | undefined;
255
260
  description?: string | undefined;
256
- scan_depth?: number | undefined;
257
- token_budget?: number | undefined;
261
+ scan_depth?: unknown;
262
+ token_budget?: unknown;
258
263
  recursive_scanning?: boolean | undefined;
259
264
  extensions?: Record<string, unknown> | undefined;
260
265
  }>>>;
261
266
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
262
267
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
263
- type: z.ZodEnum<[
268
+ type: z.ZodEffects<z.ZodEnum<[
264
269
  "icon",
265
270
  "background",
266
271
  "emotion",
@@ -269,7 +274,7 @@ declare const CCv3DataSchema: z.ZodObject<{
269
274
  "video",
270
275
  "custom",
271
276
  "x-risu-asset"
272
- ]>;
277
+ ]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
273
278
  uri: z.ZodString;
274
279
  name: z.ZodString;
275
280
  ext: z.ZodString;
@@ -280,15 +285,15 @@ declare const CCv3DataSchema: z.ZodObject<{
280
285
  ext: string;
281
286
  }, {
282
287
  name: string;
283
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
284
288
  uri: string;
285
289
  ext: string;
290
+ type?: unknown;
286
291
  }>, "many">>;
287
292
  nickname: z.ZodOptional<z.ZodString>;
288
293
  creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
289
294
  source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
290
- creation_date: z.ZodOptional<z.ZodNumber>;
291
- modification_date: z.ZodOptional<z.ZodNumber>;
295
+ creation_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
296
+ modification_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
292
297
  }, "strip", z.ZodTypeAny, {
293
298
  name: string;
294
299
  description: string;
@@ -322,7 +327,8 @@ declare const CCv3DataSchema: z.ZodObject<{
322
327
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
323
328
  z.ZodEnum<[
324
329
  "before_char",
325
- "after_char"
330
+ "after_char",
331
+ "in_chat"
326
332
  ]>,
327
333
  z.ZodNumber,
328
334
  z.ZodLiteral<"">
@@ -397,7 +403,8 @@ declare const CCv3DataSchema: z.ZodObject<{
397
403
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
398
404
  z.ZodEnum<[
399
405
  "before_char",
400
- "after_char"
406
+ "after_char",
407
+ "in_chat"
401
408
  ]>,
402
409
  z.ZodNumber,
403
410
  z.ZodLiteral<"">
@@ -427,8 +434,8 @@ declare const CCv3DataSchema: z.ZodObject<{
427
434
  }, z.ZodTypeAny, "passthrough">[];
428
435
  name?: string | undefined;
429
436
  description?: string | undefined;
430
- scan_depth?: number | undefined;
431
- token_budget?: number | undefined;
437
+ scan_depth?: unknown;
438
+ token_budget?: unknown;
432
439
  recursive_scanning?: boolean | undefined;
433
440
  extensions?: Record<string, unknown> | undefined;
434
441
  } | null | undefined;
@@ -438,15 +445,15 @@ declare const CCv3DataSchema: z.ZodObject<{
438
445
  group_only_greetings?: string[] | undefined;
439
446
  assets?: {
440
447
  name: string;
441
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
442
448
  uri: string;
443
449
  ext: string;
450
+ type?: unknown;
444
451
  }[] | undefined;
445
452
  nickname?: string | undefined;
446
453
  creator_notes_multilingual?: Record<string, string> | undefined;
447
454
  source?: string[] | undefined;
448
- creation_date?: number | undefined;
449
- modification_date?: number | undefined;
455
+ creation_date?: unknown;
456
+ modification_date?: unknown;
450
457
  }>;
451
458
  }, "strip", z.ZodTypeAny, {
452
459
  data: {
@@ -482,7 +489,8 @@ declare const CCv3DataSchema: z.ZodObject<{
482
489
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
483
490
  z.ZodEnum<[
484
491
  "before_char",
485
- "after_char"
492
+ "after_char",
493
+ "in_chat"
486
494
  ]>,
487
495
  z.ZodNumber,
488
496
  z.ZodLiteral<"">
@@ -561,7 +569,8 @@ declare const CCv3DataSchema: z.ZodObject<{
561
569
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
562
570
  z.ZodEnum<[
563
571
  "before_char",
564
- "after_char"
572
+ "after_char",
573
+ "in_chat"
565
574
  ]>,
566
575
  z.ZodNumber,
567
576
  z.ZodLiteral<"">
@@ -591,8 +600,8 @@ declare const CCv3DataSchema: z.ZodObject<{
591
600
  }, z.ZodTypeAny, "passthrough">[];
592
601
  name?: string | undefined;
593
602
  description?: string | undefined;
594
- scan_depth?: number | undefined;
595
- token_budget?: number | undefined;
603
+ scan_depth?: unknown;
604
+ token_budget?: unknown;
596
605
  recursive_scanning?: boolean | undefined;
597
606
  extensions?: Record<string, unknown> | undefined;
598
607
  } | null | undefined;
@@ -602,15 +611,15 @@ declare const CCv3DataSchema: z.ZodObject<{
602
611
  group_only_greetings?: string[] | undefined;
603
612
  assets?: {
604
613
  name: string;
605
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
606
614
  uri: string;
607
615
  ext: string;
616
+ type?: unknown;
608
617
  }[] | undefined;
609
618
  nickname?: string | undefined;
610
619
  creator_notes_multilingual?: Record<string, string> | undefined;
611
620
  source?: string[] | undefined;
612
- creation_date?: number | undefined;
613
- modification_date?: number | undefined;
621
+ creation_date?: unknown;
622
+ modification_date?: unknown;
614
623
  };
615
624
  spec: "chara_card_v3";
616
625
  spec_version: "3.0";
@@ -619,6 +628,23 @@ declare const CCv3DataSchema: z.ZodObject<{
619
628
  * Character Card v3 full structure
620
629
  */
621
630
  export type CCv3Data = z.infer<typeof CCv3DataSchema>;
631
+ /**
632
+ * Federation Logger
633
+ *
634
+ * Lightweight logger with configurable verbosity and a safe default (warn).
635
+ * No external dependencies.
636
+ */
637
+ export type LogLevel = "silent" | "error" | "warn" | "info" | "debug";
638
+ export interface Logger {
639
+ debug: (...args: unknown[]) => void;
640
+ info: (...args: unknown[]) => void;
641
+ warn: (...args: unknown[]) => void;
642
+ error: (...args: unknown[]) => void;
643
+ }
644
+ export declare function createConsoleLogger(level?: LogLevel): Logger;
645
+ declare function getLogger(): Logger;
646
+ declare function setLogger(logger: Logger): void;
647
+ declare function setLogLevel(level: LogLevel): void;
622
648
  /**
623
649
  * Federation Types
624
650
  *
@@ -978,6 +1004,17 @@ export interface InboxHandlerOptions {
978
1004
  strictMode?: boolean;
979
1005
  /** Maximum age for signatures in seconds (default 300) */
980
1006
  maxAge?: number;
1007
+ /**
1008
+ * Optional shared network key for internal-only federation.
1009
+ *
1010
+ * When set, incoming requests must include a matching network key header.
1011
+ * In strictMode, the header must also be included in the signed header list.
1012
+ */
1013
+ networkKey?: string;
1014
+ /**
1015
+ * Header name for the shared network key (default: X-Foundry-Network-Key)
1016
+ */
1017
+ networkKeyHeader?: string;
981
1018
  }
982
1019
  /**
983
1020
  * ActivityPub Utilities
@@ -3098,6 +3135,10 @@ export declare class RateLimiter {
3098
3135
  */
3099
3136
  export declare function enableFederation(options?: {
3100
3137
  skipEnvCheck?: boolean;
3138
+ /** Optional logger override */
3139
+ logger?: Logger;
3140
+ /** Optional log level (used when logger is not provided). Default: warn */
3141
+ logLevel?: LogLevel;
3101
3142
  }): void;
3102
3143
  /**
3103
3144
  * Check if federation is enabled
@@ -3113,6 +3154,9 @@ export declare function isFederationEnabled(): boolean;
3113
3154
  export declare function assertFederationEnabled(feature: string): void;
3114
3155
 
3115
3156
  export {
3157
+ getLogger as getFederationLogger,
3158
+ setLogLevel as setFederationLogLevel,
3159
+ setLogger as setFederationLogger,
3116
3160
  validateActivitySignature as validateHttpSignature,
3117
3161
  validateBlockActivity as validateBlockActivityFields,
3118
3162
  validateFlagActivity as validateFlagActivityFields,
@@ -21,8 +21,8 @@ declare const CCv3DataSchema: z.ZodObject<{
21
21
  character_book: z.ZodNullable<z.ZodOptional<z.ZodObject<{
22
22
  name: z.ZodOptional<z.ZodString>;
23
23
  description: z.ZodOptional<z.ZodString>;
24
- scan_depth: z.ZodOptional<z.ZodNumber>;
25
- token_budget: z.ZodOptional<z.ZodNumber>;
24
+ scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
25
+ token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
26
26
  recursive_scanning: z.ZodOptional<z.ZodBoolean>;
27
27
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
28
28
  entries: z.ZodArray<z.ZodObject<{
@@ -41,7 +41,8 @@ declare const CCv3DataSchema: z.ZodObject<{
41
41
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
42
42
  z.ZodEnum<[
43
43
  "before_char",
44
- "after_char"
44
+ "after_char",
45
+ "in_chat"
45
46
  ]>,
46
47
  z.ZodNumber,
47
48
  z.ZodLiteral<"">
@@ -84,7 +85,8 @@ declare const CCv3DataSchema: z.ZodObject<{
84
85
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
85
86
  z.ZodEnum<[
86
87
  "before_char",
87
- "after_char"
88
+ "after_char",
89
+ "in_chat"
88
90
  ]>,
89
91
  z.ZodNumber,
90
92
  z.ZodLiteral<"">
@@ -127,7 +129,8 @@ declare const CCv3DataSchema: z.ZodObject<{
127
129
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
128
130
  z.ZodEnum<[
129
131
  "before_char",
130
- "after_char"
132
+ "after_char",
133
+ "in_chat"
131
134
  ]>,
132
135
  z.ZodNumber,
133
136
  z.ZodLiteral<"">
@@ -172,7 +175,8 @@ declare const CCv3DataSchema: z.ZodObject<{
172
175
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
173
176
  z.ZodEnum<[
174
177
  "before_char",
175
- "after_char"
178
+ "after_char",
179
+ "in_chat"
176
180
  ]>,
177
181
  z.ZodNumber,
178
182
  z.ZodLiteral<"">
@@ -223,7 +227,8 @@ declare const CCv3DataSchema: z.ZodObject<{
223
227
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
224
228
  z.ZodEnum<[
225
229
  "before_char",
226
- "after_char"
230
+ "after_char",
231
+ "in_chat"
227
232
  ]>,
228
233
  z.ZodNumber,
229
234
  z.ZodLiteral<"">
@@ -253,14 +258,14 @@ declare const CCv3DataSchema: z.ZodObject<{
253
258
  }, z.ZodTypeAny, "passthrough">[];
254
259
  name?: string | undefined;
255
260
  description?: string | undefined;
256
- scan_depth?: number | undefined;
257
- token_budget?: number | undefined;
261
+ scan_depth?: unknown;
262
+ token_budget?: unknown;
258
263
  recursive_scanning?: boolean | undefined;
259
264
  extensions?: Record<string, unknown> | undefined;
260
265
  }>>>;
261
266
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
262
267
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
263
- type: z.ZodEnum<[
268
+ type: z.ZodEffects<z.ZodEnum<[
264
269
  "icon",
265
270
  "background",
266
271
  "emotion",
@@ -269,7 +274,7 @@ declare const CCv3DataSchema: z.ZodObject<{
269
274
  "video",
270
275
  "custom",
271
276
  "x-risu-asset"
272
- ]>;
277
+ ]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
273
278
  uri: z.ZodString;
274
279
  name: z.ZodString;
275
280
  ext: z.ZodString;
@@ -280,15 +285,15 @@ declare const CCv3DataSchema: z.ZodObject<{
280
285
  ext: string;
281
286
  }, {
282
287
  name: string;
283
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
284
288
  uri: string;
285
289
  ext: string;
290
+ type?: unknown;
286
291
  }>, "many">>;
287
292
  nickname: z.ZodOptional<z.ZodString>;
288
293
  creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
289
294
  source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
290
- creation_date: z.ZodOptional<z.ZodNumber>;
291
- modification_date: z.ZodOptional<z.ZodNumber>;
295
+ creation_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
296
+ modification_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
292
297
  }, "strip", z.ZodTypeAny, {
293
298
  name: string;
294
299
  description: string;
@@ -322,7 +327,8 @@ declare const CCv3DataSchema: z.ZodObject<{
322
327
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
323
328
  z.ZodEnum<[
324
329
  "before_char",
325
- "after_char"
330
+ "after_char",
331
+ "in_chat"
326
332
  ]>,
327
333
  z.ZodNumber,
328
334
  z.ZodLiteral<"">
@@ -397,7 +403,8 @@ declare const CCv3DataSchema: z.ZodObject<{
397
403
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
398
404
  z.ZodEnum<[
399
405
  "before_char",
400
- "after_char"
406
+ "after_char",
407
+ "in_chat"
401
408
  ]>,
402
409
  z.ZodNumber,
403
410
  z.ZodLiteral<"">
@@ -427,8 +434,8 @@ declare const CCv3DataSchema: z.ZodObject<{
427
434
  }, z.ZodTypeAny, "passthrough">[];
428
435
  name?: string | undefined;
429
436
  description?: string | undefined;
430
- scan_depth?: number | undefined;
431
- token_budget?: number | undefined;
437
+ scan_depth?: unknown;
438
+ token_budget?: unknown;
432
439
  recursive_scanning?: boolean | undefined;
433
440
  extensions?: Record<string, unknown> | undefined;
434
441
  } | null | undefined;
@@ -438,15 +445,15 @@ declare const CCv3DataSchema: z.ZodObject<{
438
445
  group_only_greetings?: string[] | undefined;
439
446
  assets?: {
440
447
  name: string;
441
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
442
448
  uri: string;
443
449
  ext: string;
450
+ type?: unknown;
444
451
  }[] | undefined;
445
452
  nickname?: string | undefined;
446
453
  creator_notes_multilingual?: Record<string, string> | undefined;
447
454
  source?: string[] | undefined;
448
- creation_date?: number | undefined;
449
- modification_date?: number | undefined;
455
+ creation_date?: unknown;
456
+ modification_date?: unknown;
450
457
  }>;
451
458
  }, "strip", z.ZodTypeAny, {
452
459
  data: {
@@ -482,7 +489,8 @@ declare const CCv3DataSchema: z.ZodObject<{
482
489
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
483
490
  z.ZodEnum<[
484
491
  "before_char",
485
- "after_char"
492
+ "after_char",
493
+ "in_chat"
486
494
  ]>,
487
495
  z.ZodNumber,
488
496
  z.ZodLiteral<"">
@@ -561,7 +569,8 @@ declare const CCv3DataSchema: z.ZodObject<{
561
569
  position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
562
570
  z.ZodEnum<[
563
571
  "before_char",
564
- "after_char"
572
+ "after_char",
573
+ "in_chat"
565
574
  ]>,
566
575
  z.ZodNumber,
567
576
  z.ZodLiteral<"">
@@ -591,8 +600,8 @@ declare const CCv3DataSchema: z.ZodObject<{
591
600
  }, z.ZodTypeAny, "passthrough">[];
592
601
  name?: string | undefined;
593
602
  description?: string | undefined;
594
- scan_depth?: number | undefined;
595
- token_budget?: number | undefined;
603
+ scan_depth?: unknown;
604
+ token_budget?: unknown;
596
605
  recursive_scanning?: boolean | undefined;
597
606
  extensions?: Record<string, unknown> | undefined;
598
607
  } | null | undefined;
@@ -602,15 +611,15 @@ declare const CCv3DataSchema: z.ZodObject<{
602
611
  group_only_greetings?: string[] | undefined;
603
612
  assets?: {
604
613
  name: string;
605
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
606
614
  uri: string;
607
615
  ext: string;
616
+ type?: unknown;
608
617
  }[] | undefined;
609
618
  nickname?: string | undefined;
610
619
  creator_notes_multilingual?: Record<string, string> | undefined;
611
620
  source?: string[] | undefined;
612
- creation_date?: number | undefined;
613
- modification_date?: number | undefined;
621
+ creation_date?: unknown;
622
+ modification_date?: unknown;
614
623
  };
615
624
  spec: "chara_card_v3";
616
625
  spec_version: "3.0";
@@ -619,6 +628,23 @@ declare const CCv3DataSchema: z.ZodObject<{
619
628
  * Character Card v3 full structure
620
629
  */
621
630
  export type CCv3Data = z.infer<typeof CCv3DataSchema>;
631
+ /**
632
+ * Federation Logger
633
+ *
634
+ * Lightweight logger with configurable verbosity and a safe default (warn).
635
+ * No external dependencies.
636
+ */
637
+ export type LogLevel = "silent" | "error" | "warn" | "info" | "debug";
638
+ export interface Logger {
639
+ debug: (...args: unknown[]) => void;
640
+ info: (...args: unknown[]) => void;
641
+ warn: (...args: unknown[]) => void;
642
+ error: (...args: unknown[]) => void;
643
+ }
644
+ export declare function createConsoleLogger(level?: LogLevel): Logger;
645
+ declare function getLogger(): Logger;
646
+ declare function setLogger(logger: Logger): void;
647
+ declare function setLogLevel(level: LogLevel): void;
622
648
  /**
623
649
  * Federation Types
624
650
  *
@@ -978,6 +1004,17 @@ export interface InboxHandlerOptions {
978
1004
  strictMode?: boolean;
979
1005
  /** Maximum age for signatures in seconds (default 300) */
980
1006
  maxAge?: number;
1007
+ /**
1008
+ * Optional shared network key for internal-only federation.
1009
+ *
1010
+ * When set, incoming requests must include a matching network key header.
1011
+ * In strictMode, the header must also be included in the signed header list.
1012
+ */
1013
+ networkKey?: string;
1014
+ /**
1015
+ * Header name for the shared network key (default: X-Foundry-Network-Key)
1016
+ */
1017
+ networkKeyHeader?: string;
981
1018
  }
982
1019
  /**
983
1020
  * ActivityPub Utilities
@@ -3098,6 +3135,10 @@ export declare class RateLimiter {
3098
3135
  */
3099
3136
  export declare function enableFederation(options?: {
3100
3137
  skipEnvCheck?: boolean;
3138
+ /** Optional logger override */
3139
+ logger?: Logger;
3140
+ /** Optional log level (used when logger is not provided). Default: warn */
3141
+ logLevel?: LogLevel;
3101
3142
  }): void;
3102
3143
  /**
3103
3144
  * Check if federation is enabled
@@ -3113,6 +3154,9 @@ export declare function isFederationEnabled(): boolean;
3113
3154
  export declare function assertFederationEnabled(feature: string): void;
3114
3155
 
3115
3156
  export {
3157
+ getLogger as getFederationLogger,
3158
+ setLogLevel as setFederationLogLevel,
3159
+ setLogger as setFederationLogger,
3116
3160
  validateActivitySignature as validateHttpSignature,
3117
3161
  validateBlockActivity as validateBlockActivityFields,
3118
3162
  validateFlagActivity as validateFlagActivityFields,