@character-foundry/character-foundry 0.4.3-dev.1766019473 → 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 (53) hide show
  1. package/dist/charx.cjs +72 -18
  2. package/dist/charx.cjs.map +1 -1
  3. package/dist/charx.d.cts +22 -22
  4. package/dist/charx.d.ts +22 -22
  5. package/dist/charx.js +72 -18
  6. package/dist/charx.js.map +1 -1
  7. package/dist/exporter.cjs +72 -18
  8. package/dist/exporter.cjs.map +1 -1
  9. package/dist/exporter.d.cts +19 -19
  10. package/dist/exporter.d.ts +19 -19
  11. package/dist/exporter.js +72 -18
  12. package/dist/exporter.js.map +1 -1
  13. package/dist/federation.d.cts +19 -19
  14. package/dist/federation.d.ts +19 -19
  15. package/dist/index.cjs +72 -18
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +29 -29
  18. package/dist/index.d.ts +29 -29
  19. package/dist/index.js +72 -18
  20. package/dist/index.js.map +1 -1
  21. package/dist/loader.cjs +72 -18
  22. package/dist/loader.cjs.map +1 -1
  23. package/dist/loader.d.cts +23 -23
  24. package/dist/loader.d.ts +23 -23
  25. package/dist/loader.js +72 -18
  26. package/dist/loader.js.map +1 -1
  27. package/dist/lorebook.d.cts +23 -23
  28. package/dist/lorebook.d.ts +23 -23
  29. package/dist/normalizer.cjs +72 -18
  30. package/dist/normalizer.cjs.map +1 -1
  31. package/dist/normalizer.d.cts +37 -37
  32. package/dist/normalizer.d.ts +37 -37
  33. package/dist/normalizer.js +72 -18
  34. package/dist/normalizer.js.map +1 -1
  35. package/dist/png.cjs +72 -18
  36. package/dist/png.cjs.map +1 -1
  37. package/dist/png.d.cts +25 -25
  38. package/dist/png.d.ts +25 -25
  39. package/dist/png.js +72 -18
  40. package/dist/png.js.map +1 -1
  41. package/dist/schemas.cjs +75 -18
  42. package/dist/schemas.cjs.map +1 -1
  43. package/dist/schemas.d.cts +85 -67
  44. package/dist/schemas.d.ts +85 -67
  45. package/dist/schemas.js +75 -18
  46. package/dist/schemas.js.map +1 -1
  47. package/dist/voxta.cjs +72 -18
  48. package/dist/voxta.cjs.map +1 -1
  49. package/dist/voxta.d.cts +23 -23
  50. package/dist/voxta.d.ts +23 -23
  51. package/dist/voxta.js +72 -18
  52. package/dist/voxta.js.map +1 -1
  53. 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<{
@@ -258,14 +258,14 @@ declare const CCv3DataSchema: z.ZodObject<{
258
258
  }, z.ZodTypeAny, "passthrough">[];
259
259
  name?: string | undefined;
260
260
  description?: string | undefined;
261
- scan_depth?: number | undefined;
262
- token_budget?: number | undefined;
261
+ scan_depth?: unknown;
262
+ token_budget?: unknown;
263
263
  recursive_scanning?: boolean | undefined;
264
264
  extensions?: Record<string, unknown> | undefined;
265
265
  }>>>;
266
266
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
267
267
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
268
- type: z.ZodEnum<[
268
+ type: z.ZodEffects<z.ZodEnum<[
269
269
  "icon",
270
270
  "background",
271
271
  "emotion",
@@ -274,7 +274,7 @@ declare const CCv3DataSchema: z.ZodObject<{
274
274
  "video",
275
275
  "custom",
276
276
  "x-risu-asset"
277
- ]>;
277
+ ]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
278
278
  uri: z.ZodString;
279
279
  name: z.ZodString;
280
280
  ext: z.ZodString;
@@ -285,15 +285,15 @@ declare const CCv3DataSchema: z.ZodObject<{
285
285
  ext: string;
286
286
  }, {
287
287
  name: string;
288
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
289
288
  uri: string;
290
289
  ext: string;
290
+ type?: unknown;
291
291
  }>, "many">>;
292
292
  nickname: z.ZodOptional<z.ZodString>;
293
293
  creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
294
294
  source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
295
- creation_date: z.ZodOptional<z.ZodNumber>;
296
- 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>;
297
297
  }, "strip", z.ZodTypeAny, {
298
298
  name: string;
299
299
  description: string;
@@ -434,8 +434,8 @@ declare const CCv3DataSchema: z.ZodObject<{
434
434
  }, z.ZodTypeAny, "passthrough">[];
435
435
  name?: string | undefined;
436
436
  description?: string | undefined;
437
- scan_depth?: number | undefined;
438
- token_budget?: number | undefined;
437
+ scan_depth?: unknown;
438
+ token_budget?: unknown;
439
439
  recursive_scanning?: boolean | undefined;
440
440
  extensions?: Record<string, unknown> | undefined;
441
441
  } | null | undefined;
@@ -445,15 +445,15 @@ declare const CCv3DataSchema: z.ZodObject<{
445
445
  group_only_greetings?: string[] | undefined;
446
446
  assets?: {
447
447
  name: string;
448
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
449
448
  uri: string;
450
449
  ext: string;
450
+ type?: unknown;
451
451
  }[] | undefined;
452
452
  nickname?: string | undefined;
453
453
  creator_notes_multilingual?: Record<string, string> | undefined;
454
454
  source?: string[] | undefined;
455
- creation_date?: number | undefined;
456
- modification_date?: number | undefined;
455
+ creation_date?: unknown;
456
+ modification_date?: unknown;
457
457
  }>;
458
458
  }, "strip", z.ZodTypeAny, {
459
459
  data: {
@@ -600,8 +600,8 @@ declare const CCv3DataSchema: z.ZodObject<{
600
600
  }, z.ZodTypeAny, "passthrough">[];
601
601
  name?: string | undefined;
602
602
  description?: string | undefined;
603
- scan_depth?: number | undefined;
604
- token_budget?: number | undefined;
603
+ scan_depth?: unknown;
604
+ token_budget?: unknown;
605
605
  recursive_scanning?: boolean | undefined;
606
606
  extensions?: Record<string, unknown> | undefined;
607
607
  } | null | undefined;
@@ -611,15 +611,15 @@ declare const CCv3DataSchema: z.ZodObject<{
611
611
  group_only_greetings?: string[] | undefined;
612
612
  assets?: {
613
613
  name: string;
614
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
615
614
  uri: string;
616
615
  ext: string;
616
+ type?: unknown;
617
617
  }[] | undefined;
618
618
  nickname?: string | undefined;
619
619
  creator_notes_multilingual?: Record<string, string> | undefined;
620
620
  source?: string[] | undefined;
621
- creation_date?: number | undefined;
622
- modification_date?: number | undefined;
621
+ creation_date?: unknown;
622
+ modification_date?: unknown;
623
623
  };
624
624
  spec: "chara_card_v3";
625
625
  spec_version: "3.0";
@@ -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<{
@@ -258,14 +258,14 @@ declare const CCv3DataSchema: z.ZodObject<{
258
258
  }, z.ZodTypeAny, "passthrough">[];
259
259
  name?: string | undefined;
260
260
  description?: string | undefined;
261
- scan_depth?: number | undefined;
262
- token_budget?: number | undefined;
261
+ scan_depth?: unknown;
262
+ token_budget?: unknown;
263
263
  recursive_scanning?: boolean | undefined;
264
264
  extensions?: Record<string, unknown> | undefined;
265
265
  }>>>;
266
266
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
267
267
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
268
- type: z.ZodEnum<[
268
+ type: z.ZodEffects<z.ZodEnum<[
269
269
  "icon",
270
270
  "background",
271
271
  "emotion",
@@ -274,7 +274,7 @@ declare const CCv3DataSchema: z.ZodObject<{
274
274
  "video",
275
275
  "custom",
276
276
  "x-risu-asset"
277
- ]>;
277
+ ]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
278
278
  uri: z.ZodString;
279
279
  name: z.ZodString;
280
280
  ext: z.ZodString;
@@ -285,15 +285,15 @@ declare const CCv3DataSchema: z.ZodObject<{
285
285
  ext: string;
286
286
  }, {
287
287
  name: string;
288
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
289
288
  uri: string;
290
289
  ext: string;
290
+ type?: unknown;
291
291
  }>, "many">>;
292
292
  nickname: z.ZodOptional<z.ZodString>;
293
293
  creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
294
294
  source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
295
- creation_date: z.ZodOptional<z.ZodNumber>;
296
- 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>;
297
297
  }, "strip", z.ZodTypeAny, {
298
298
  name: string;
299
299
  description: string;
@@ -434,8 +434,8 @@ declare const CCv3DataSchema: z.ZodObject<{
434
434
  }, z.ZodTypeAny, "passthrough">[];
435
435
  name?: string | undefined;
436
436
  description?: string | undefined;
437
- scan_depth?: number | undefined;
438
- token_budget?: number | undefined;
437
+ scan_depth?: unknown;
438
+ token_budget?: unknown;
439
439
  recursive_scanning?: boolean | undefined;
440
440
  extensions?: Record<string, unknown> | undefined;
441
441
  } | null | undefined;
@@ -445,15 +445,15 @@ declare const CCv3DataSchema: z.ZodObject<{
445
445
  group_only_greetings?: string[] | undefined;
446
446
  assets?: {
447
447
  name: string;
448
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
449
448
  uri: string;
450
449
  ext: string;
450
+ type?: unknown;
451
451
  }[] | undefined;
452
452
  nickname?: string | undefined;
453
453
  creator_notes_multilingual?: Record<string, string> | undefined;
454
454
  source?: string[] | undefined;
455
- creation_date?: number | undefined;
456
- modification_date?: number | undefined;
455
+ creation_date?: unknown;
456
+ modification_date?: unknown;
457
457
  }>;
458
458
  }, "strip", z.ZodTypeAny, {
459
459
  data: {
@@ -600,8 +600,8 @@ declare const CCv3DataSchema: z.ZodObject<{
600
600
  }, z.ZodTypeAny, "passthrough">[];
601
601
  name?: string | undefined;
602
602
  description?: string | undefined;
603
- scan_depth?: number | undefined;
604
- token_budget?: number | undefined;
603
+ scan_depth?: unknown;
604
+ token_budget?: unknown;
605
605
  recursive_scanning?: boolean | undefined;
606
606
  extensions?: Record<string, unknown> | undefined;
607
607
  } | null | undefined;
@@ -611,15 +611,15 @@ declare const CCv3DataSchema: z.ZodObject<{
611
611
  group_only_greetings?: string[] | undefined;
612
612
  assets?: {
613
613
  name: string;
614
- type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
615
614
  uri: string;
616
615
  ext: string;
616
+ type?: unknown;
617
617
  }[] | undefined;
618
618
  nickname?: string | undefined;
619
619
  creator_notes_multilingual?: Record<string, string> | undefined;
620
620
  source?: string[] | undefined;
621
- creation_date?: number | undefined;
622
- modification_date?: number | undefined;
621
+ creation_date?: unknown;
622
+ modification_date?: unknown;
623
623
  };
624
624
  spec: "chara_card_v3";
625
625
  spec_version: "3.0";
package/dist/index.cjs CHANGED
@@ -560,6 +560,58 @@ var import_zod = require("zod");
560
560
  var import_zod2 = require("zod");
561
561
  var import_zod3 = require("zod");
562
562
  var import_zod4 = require("zod");
563
+ function preprocessTimestamp(val) {
564
+ if (val === null || val === void 0) return void 0;
565
+ let num;
566
+ if (typeof val === "number") {
567
+ num = val;
568
+ } else if (typeof val === "string") {
569
+ const trimmed = val.trim();
570
+ if (!trimmed) return void 0;
571
+ const parsed = Number(trimmed);
572
+ if (!isNaN(parsed)) {
573
+ num = parsed;
574
+ } else {
575
+ const date = new Date(trimmed);
576
+ if (isNaN(date.getTime())) return void 0;
577
+ num = Math.floor(date.getTime() / 1e3);
578
+ }
579
+ } else {
580
+ return void 0;
581
+ }
582
+ if (num > 1e10) {
583
+ num = Math.floor(num / 1e3);
584
+ }
585
+ if (num < 0) return void 0;
586
+ return num;
587
+ }
588
+ function preprocessNumeric(val) {
589
+ if (val === null || val === void 0) return void 0;
590
+ if (typeof val === "number") {
591
+ return isNaN(val) ? void 0 : val;
592
+ }
593
+ if (typeof val === "string") {
594
+ const trimmed = val.trim();
595
+ if (!trimmed) return void 0;
596
+ const parsed = Number(trimmed);
597
+ return isNaN(parsed) ? void 0 : parsed;
598
+ }
599
+ return void 0;
600
+ }
601
+ var KNOWN_ASSET_TYPES = /* @__PURE__ */ new Set([
602
+ "icon",
603
+ "background",
604
+ "emotion",
605
+ "user_icon",
606
+ "sound",
607
+ "video",
608
+ "custom",
609
+ "x-risu-asset"
610
+ ]);
611
+ function preprocessAssetType(val) {
612
+ if (typeof val !== "string") return "custom";
613
+ return KNOWN_ASSET_TYPES.has(val) ? val : "custom";
614
+ }
563
615
  var ISO8601Schema = import_zod.z.string().datetime();
564
616
  var UUIDSchema = import_zod.z.string().uuid();
565
617
  var SpecSchema = import_zod.z.enum(["v2", "v3"]);
@@ -582,16 +634,19 @@ var SourceFormatSchema = import_zod.z.enum([
582
634
  // VoxPkg format
583
635
  ]);
584
636
  var OriginalShapeSchema = import_zod.z.enum(["wrapped", "unwrapped", "legacy"]);
585
- var AssetTypeSchema = import_zod.z.enum([
586
- "icon",
587
- "background",
588
- "emotion",
589
- "user_icon",
590
- "sound",
591
- "video",
592
- "custom",
593
- "x-risu-asset"
594
- ]);
637
+ var AssetTypeSchema = import_zod.z.preprocess(
638
+ preprocessAssetType,
639
+ import_zod.z.enum([
640
+ "icon",
641
+ "background",
642
+ "emotion",
643
+ "user_icon",
644
+ "sound",
645
+ "video",
646
+ "custom",
647
+ "x-risu-asset"
648
+ ])
649
+ );
595
650
  var AssetDescriptorSchema = import_zod.z.object({
596
651
  type: AssetTypeSchema,
597
652
  uri: import_zod.z.string(),
@@ -625,8 +680,8 @@ var CCv2LorebookEntrySchema = import_zod2.z.object({
625
680
  var CCv2CharacterBookSchema = import_zod2.z.object({
626
681
  name: import_zod2.z.string().optional(),
627
682
  description: import_zod2.z.string().optional(),
628
- scan_depth: import_zod2.z.number().int().nonnegative().optional(),
629
- token_budget: import_zod2.z.number().int().nonnegative().optional(),
683
+ scan_depth: import_zod2.z.preprocess(preprocessNumeric, import_zod2.z.number().int().nonnegative().optional()),
684
+ token_budget: import_zod2.z.preprocess(preprocessNumeric, import_zod2.z.number().int().nonnegative().optional()),
630
685
  recursive_scanning: import_zod2.z.boolean().optional(),
631
686
  extensions: import_zod2.z.record(import_zod2.z.unknown()).optional(),
632
687
  entries: import_zod2.z.array(CCv2LorebookEntrySchema)
@@ -700,8 +755,8 @@ var CCv3LorebookEntrySchema = import_zod3.z.object({
700
755
  var CCv3CharacterBookSchema = import_zod3.z.object({
701
756
  name: import_zod3.z.string().optional(),
702
757
  description: import_zod3.z.string().optional(),
703
- scan_depth: import_zod3.z.number().int().nonnegative().optional(),
704
- token_budget: import_zod3.z.number().int().nonnegative().optional(),
758
+ scan_depth: import_zod3.z.preprocess(preprocessNumeric, import_zod3.z.number().int().nonnegative().optional()),
759
+ token_budget: import_zod3.z.preprocess(preprocessNumeric, import_zod3.z.number().int().nonnegative().optional()),
705
760
  recursive_scanning: import_zod3.z.boolean().optional(),
706
761
  extensions: import_zod3.z.record(import_zod3.z.unknown()).optional(),
707
762
  entries: import_zod3.z.array(CCv3LorebookEntrySchema)
@@ -733,10 +788,9 @@ var CCv3DataInnerSchema = import_zod3.z.object({
733
788
  nickname: import_zod3.z.string().optional(),
734
789
  creator_notes_multilingual: import_zod3.z.record(import_zod3.z.string()).optional(),
735
790
  source: import_zod3.z.array(import_zod3.z.string()).optional(),
736
- creation_date: import_zod3.z.number().int().nonnegative().optional(),
737
- // Unix timestamp in seconds
738
- modification_date: import_zod3.z.number().int().nonnegative().optional()
739
- // Unix timestamp in seconds
791
+ // Unix timestamps - preprocess to handle ISO strings, numeric strings, milliseconds
792
+ creation_date: import_zod3.z.preprocess(preprocessTimestamp, import_zod3.z.number().int().nonnegative().optional()),
793
+ modification_date: import_zod3.z.preprocess(preprocessTimestamp, import_zod3.z.number().int().nonnegative().optional())
740
794
  });
741
795
  var CCv3DataSchema = import_zod3.z.object({
742
796
  spec: import_zod3.z.literal("chara_card_v3"),