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

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 +52 -85
  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 +52 -85
  6. package/dist/charx.js.map +1 -1
  7. package/dist/exporter.cjs +54 -104
  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 +54 -104
  12. package/dist/exporter.js.map +1 -1
  13. package/dist/federation.cjs +36 -104
  14. package/dist/federation.cjs.map +1 -1
  15. package/dist/federation.d.cts +19 -54
  16. package/dist/federation.d.ts +19 -54
  17. package/dist/federation.js +36 -104
  18. package/dist/federation.js.map +1 -1
  19. package/dist/index.cjs +54 -104
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.d.cts +29 -29
  22. package/dist/index.d.ts +29 -29
  23. package/dist/index.js +54 -104
  24. package/dist/index.js.map +1 -1
  25. package/dist/loader.cjs +31 -171
  26. package/dist/loader.cjs.map +1 -1
  27. package/dist/loader.d.cts +23 -37
  28. package/dist/loader.d.ts +23 -37
  29. package/dist/loader.js +31 -171
  30. package/dist/loader.js.map +1 -1
  31. package/dist/lorebook.d.cts +23 -23
  32. package/dist/lorebook.d.ts +23 -23
  33. package/dist/normalizer.cjs +18 -72
  34. package/dist/normalizer.cjs.map +1 -1
  35. package/dist/normalizer.d.cts +37 -37
  36. package/dist/normalizer.d.ts +37 -37
  37. package/dist/normalizer.js +18 -72
  38. package/dist/normalizer.js.map +1 -1
  39. package/dist/png.cjs +18 -72
  40. package/dist/png.cjs.map +1 -1
  41. package/dist/png.d.cts +25 -25
  42. package/dist/png.d.ts +25 -25
  43. package/dist/png.js +18 -72
  44. package/dist/png.js.map +1 -1
  45. package/dist/schemas.cjs +23 -80
  46. package/dist/schemas.cjs.map +1 -1
  47. package/dist/schemas.d.cts +67 -85
  48. package/dist/schemas.d.ts +67 -85
  49. package/dist/schemas.js +23 -80
  50. package/dist/schemas.js.map +1 -1
  51. package/dist/voxta.cjs +20 -91
  52. package/dist/voxta.cjs.map +1 -1
  53. package/dist/voxta.d.cts +23 -23
  54. package/dist/voxta.d.ts +23 -23
  55. package/dist/voxta.js +20 -91
  56. package/dist/voxta.js.map +1 -1
  57. package/package.json +5 -5
package/dist/png.d.cts CHANGED
@@ -31,8 +31,8 @@ declare const CCv3DataSchema: z.ZodObject<{
31
31
  character_book: z.ZodNullable<z.ZodOptional<z.ZodObject<{
32
32
  name: z.ZodOptional<z.ZodString>;
33
33
  description: z.ZodOptional<z.ZodString>;
34
- scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
35
- token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
34
+ scan_depth: z.ZodOptional<z.ZodNumber>;
35
+ token_budget: z.ZodOptional<z.ZodNumber>;
36
36
  recursive_scanning: z.ZodOptional<z.ZodBoolean>;
37
37
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
38
38
  entries: z.ZodArray<z.ZodObject<{
@@ -268,14 +268,14 @@ declare const CCv3DataSchema: z.ZodObject<{
268
268
  }, z.ZodTypeAny, "passthrough">[];
269
269
  name?: string | undefined;
270
270
  description?: string | undefined;
271
- scan_depth?: unknown;
272
- token_budget?: unknown;
271
+ scan_depth?: number | undefined;
272
+ token_budget?: number | undefined;
273
273
  recursive_scanning?: boolean | undefined;
274
274
  extensions?: Record<string, unknown> | undefined;
275
275
  }>>>;
276
276
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
277
277
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
278
- type: z.ZodEffects<z.ZodEnum<[
278
+ type: z.ZodEnum<[
279
279
  "icon",
280
280
  "background",
281
281
  "emotion",
@@ -284,7 +284,7 @@ declare const CCv3DataSchema: z.ZodObject<{
284
284
  "video",
285
285
  "custom",
286
286
  "x-risu-asset"
287
- ]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
287
+ ]>;
288
288
  uri: z.ZodString;
289
289
  name: z.ZodString;
290
290
  ext: z.ZodString;
@@ -295,15 +295,15 @@ declare const CCv3DataSchema: z.ZodObject<{
295
295
  ext: string;
296
296
  }, {
297
297
  name: string;
298
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
298
299
  uri: string;
299
300
  ext: string;
300
- type?: unknown;
301
301
  }>, "many">>;
302
302
  nickname: z.ZodOptional<z.ZodString>;
303
303
  creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
304
304
  source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
305
- creation_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
306
- modification_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
305
+ creation_date: z.ZodOptional<z.ZodNumber>;
306
+ modification_date: z.ZodOptional<z.ZodNumber>;
307
307
  }, "strip", z.ZodTypeAny, {
308
308
  name: string;
309
309
  description: string;
@@ -444,8 +444,8 @@ declare const CCv3DataSchema: z.ZodObject<{
444
444
  }, z.ZodTypeAny, "passthrough">[];
445
445
  name?: string | undefined;
446
446
  description?: string | undefined;
447
- scan_depth?: unknown;
448
- token_budget?: unknown;
447
+ scan_depth?: number | undefined;
448
+ token_budget?: number | undefined;
449
449
  recursive_scanning?: boolean | undefined;
450
450
  extensions?: Record<string, unknown> | undefined;
451
451
  } | null | undefined;
@@ -455,15 +455,15 @@ declare const CCv3DataSchema: z.ZodObject<{
455
455
  group_only_greetings?: string[] | undefined;
456
456
  assets?: {
457
457
  name: string;
458
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
458
459
  uri: string;
459
460
  ext: string;
460
- type?: unknown;
461
461
  }[] | undefined;
462
462
  nickname?: string | undefined;
463
463
  creator_notes_multilingual?: Record<string, string> | undefined;
464
464
  source?: string[] | undefined;
465
- creation_date?: unknown;
466
- modification_date?: unknown;
465
+ creation_date?: number | undefined;
466
+ modification_date?: number | undefined;
467
467
  }>;
468
468
  }, "strip", z.ZodTypeAny, {
469
469
  data: {
@@ -610,8 +610,8 @@ declare const CCv3DataSchema: z.ZodObject<{
610
610
  }, z.ZodTypeAny, "passthrough">[];
611
611
  name?: string | undefined;
612
612
  description?: string | undefined;
613
- scan_depth?: unknown;
614
- token_budget?: unknown;
613
+ scan_depth?: number | undefined;
614
+ token_budget?: number | undefined;
615
615
  recursive_scanning?: boolean | undefined;
616
616
  extensions?: Record<string, unknown> | undefined;
617
617
  } | null | undefined;
@@ -621,15 +621,15 @@ declare const CCv3DataSchema: z.ZodObject<{
621
621
  group_only_greetings?: string[] | undefined;
622
622
  assets?: {
623
623
  name: string;
624
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
624
625
  uri: string;
625
626
  ext: string;
626
- type?: unknown;
627
627
  }[] | undefined;
628
628
  nickname?: string | undefined;
629
629
  creator_notes_multilingual?: Record<string, string> | undefined;
630
630
  source?: string[] | undefined;
631
- creation_date?: unknown;
632
- modification_date?: unknown;
631
+ creation_date?: number | undefined;
632
+ modification_date?: number | undefined;
633
633
  };
634
634
  spec: "chara_card_v3";
635
635
  spec_version: "3.0";
@@ -660,8 +660,8 @@ declare const CCv2DataSchema: z.ZodObject<{
660
660
  character_book: z.ZodNullable<z.ZodOptional<z.ZodObject<{
661
661
  name: z.ZodOptional<z.ZodString>;
662
662
  description: z.ZodOptional<z.ZodString>;
663
- scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
664
- token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
663
+ scan_depth: z.ZodOptional<z.ZodNumber>;
664
+ token_budget: z.ZodOptional<z.ZodNumber>;
665
665
  recursive_scanning: z.ZodOptional<z.ZodBoolean>;
666
666
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
667
667
  entries: z.ZodArray<z.ZodObject<{
@@ -792,8 +792,8 @@ declare const CCv2DataSchema: z.ZodObject<{
792
792
  }, z.ZodTypeAny, "passthrough">[];
793
793
  name?: string | undefined;
794
794
  description?: string | undefined;
795
- scan_depth?: unknown;
796
- token_budget?: unknown;
795
+ scan_depth?: number | undefined;
796
+ token_budget?: number | undefined;
797
797
  recursive_scanning?: boolean | undefined;
798
798
  extensions?: Record<string, unknown> | undefined;
799
799
  }>>>;
@@ -887,8 +887,8 @@ declare const CCv2DataSchema: z.ZodObject<{
887
887
  }, z.ZodTypeAny, "passthrough">[];
888
888
  name?: string | undefined;
889
889
  description?: string | undefined;
890
- scan_depth?: unknown;
891
- token_budget?: unknown;
890
+ scan_depth?: number | undefined;
891
+ token_budget?: number | undefined;
892
892
  recursive_scanning?: boolean | undefined;
893
893
  extensions?: Record<string, unknown> | undefined;
894
894
  } | null | undefined;
package/dist/png.d.ts CHANGED
@@ -31,8 +31,8 @@ declare const CCv3DataSchema: z.ZodObject<{
31
31
  character_book: z.ZodNullable<z.ZodOptional<z.ZodObject<{
32
32
  name: z.ZodOptional<z.ZodString>;
33
33
  description: z.ZodOptional<z.ZodString>;
34
- scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
35
- token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
34
+ scan_depth: z.ZodOptional<z.ZodNumber>;
35
+ token_budget: z.ZodOptional<z.ZodNumber>;
36
36
  recursive_scanning: z.ZodOptional<z.ZodBoolean>;
37
37
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
38
38
  entries: z.ZodArray<z.ZodObject<{
@@ -268,14 +268,14 @@ declare const CCv3DataSchema: z.ZodObject<{
268
268
  }, z.ZodTypeAny, "passthrough">[];
269
269
  name?: string | undefined;
270
270
  description?: string | undefined;
271
- scan_depth?: unknown;
272
- token_budget?: unknown;
271
+ scan_depth?: number | undefined;
272
+ token_budget?: number | undefined;
273
273
  recursive_scanning?: boolean | undefined;
274
274
  extensions?: Record<string, unknown> | undefined;
275
275
  }>>>;
276
276
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
277
277
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
278
- type: z.ZodEffects<z.ZodEnum<[
278
+ type: z.ZodEnum<[
279
279
  "icon",
280
280
  "background",
281
281
  "emotion",
@@ -284,7 +284,7 @@ declare const CCv3DataSchema: z.ZodObject<{
284
284
  "video",
285
285
  "custom",
286
286
  "x-risu-asset"
287
- ]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
287
+ ]>;
288
288
  uri: z.ZodString;
289
289
  name: z.ZodString;
290
290
  ext: z.ZodString;
@@ -295,15 +295,15 @@ declare const CCv3DataSchema: z.ZodObject<{
295
295
  ext: string;
296
296
  }, {
297
297
  name: string;
298
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
298
299
  uri: string;
299
300
  ext: string;
300
- type?: unknown;
301
301
  }>, "many">>;
302
302
  nickname: z.ZodOptional<z.ZodString>;
303
303
  creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
304
304
  source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
305
- creation_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
306
- modification_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
305
+ creation_date: z.ZodOptional<z.ZodNumber>;
306
+ modification_date: z.ZodOptional<z.ZodNumber>;
307
307
  }, "strip", z.ZodTypeAny, {
308
308
  name: string;
309
309
  description: string;
@@ -444,8 +444,8 @@ declare const CCv3DataSchema: z.ZodObject<{
444
444
  }, z.ZodTypeAny, "passthrough">[];
445
445
  name?: string | undefined;
446
446
  description?: string | undefined;
447
- scan_depth?: unknown;
448
- token_budget?: unknown;
447
+ scan_depth?: number | undefined;
448
+ token_budget?: number | undefined;
449
449
  recursive_scanning?: boolean | undefined;
450
450
  extensions?: Record<string, unknown> | undefined;
451
451
  } | null | undefined;
@@ -455,15 +455,15 @@ declare const CCv3DataSchema: z.ZodObject<{
455
455
  group_only_greetings?: string[] | undefined;
456
456
  assets?: {
457
457
  name: string;
458
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
458
459
  uri: string;
459
460
  ext: string;
460
- type?: unknown;
461
461
  }[] | undefined;
462
462
  nickname?: string | undefined;
463
463
  creator_notes_multilingual?: Record<string, string> | undefined;
464
464
  source?: string[] | undefined;
465
- creation_date?: unknown;
466
- modification_date?: unknown;
465
+ creation_date?: number | undefined;
466
+ modification_date?: number | undefined;
467
467
  }>;
468
468
  }, "strip", z.ZodTypeAny, {
469
469
  data: {
@@ -610,8 +610,8 @@ declare const CCv3DataSchema: z.ZodObject<{
610
610
  }, z.ZodTypeAny, "passthrough">[];
611
611
  name?: string | undefined;
612
612
  description?: string | undefined;
613
- scan_depth?: unknown;
614
- token_budget?: unknown;
613
+ scan_depth?: number | undefined;
614
+ token_budget?: number | undefined;
615
615
  recursive_scanning?: boolean | undefined;
616
616
  extensions?: Record<string, unknown> | undefined;
617
617
  } | null | undefined;
@@ -621,15 +621,15 @@ declare const CCv3DataSchema: z.ZodObject<{
621
621
  group_only_greetings?: string[] | undefined;
622
622
  assets?: {
623
623
  name: string;
624
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
624
625
  uri: string;
625
626
  ext: string;
626
- type?: unknown;
627
627
  }[] | undefined;
628
628
  nickname?: string | undefined;
629
629
  creator_notes_multilingual?: Record<string, string> | undefined;
630
630
  source?: string[] | undefined;
631
- creation_date?: unknown;
632
- modification_date?: unknown;
631
+ creation_date?: number | undefined;
632
+ modification_date?: number | undefined;
633
633
  };
634
634
  spec: "chara_card_v3";
635
635
  spec_version: "3.0";
@@ -660,8 +660,8 @@ declare const CCv2DataSchema: z.ZodObject<{
660
660
  character_book: z.ZodNullable<z.ZodOptional<z.ZodObject<{
661
661
  name: z.ZodOptional<z.ZodString>;
662
662
  description: z.ZodOptional<z.ZodString>;
663
- scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
664
- token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
663
+ scan_depth: z.ZodOptional<z.ZodNumber>;
664
+ token_budget: z.ZodOptional<z.ZodNumber>;
665
665
  recursive_scanning: z.ZodOptional<z.ZodBoolean>;
666
666
  extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
667
667
  entries: z.ZodArray<z.ZodObject<{
@@ -792,8 +792,8 @@ declare const CCv2DataSchema: z.ZodObject<{
792
792
  }, z.ZodTypeAny, "passthrough">[];
793
793
  name?: string | undefined;
794
794
  description?: string | undefined;
795
- scan_depth?: unknown;
796
- token_budget?: unknown;
795
+ scan_depth?: number | undefined;
796
+ token_budget?: number | undefined;
797
797
  recursive_scanning?: boolean | undefined;
798
798
  extensions?: Record<string, unknown> | undefined;
799
799
  }>>>;
@@ -887,8 +887,8 @@ declare const CCv2DataSchema: z.ZodObject<{
887
887
  }, z.ZodTypeAny, "passthrough">[];
888
888
  name?: string | undefined;
889
889
  description?: string | undefined;
890
- scan_depth?: unknown;
891
- token_budget?: unknown;
890
+ scan_depth?: number | undefined;
891
+ token_budget?: number | undefined;
892
892
  recursive_scanning?: boolean | undefined;
893
893
  extensions?: Record<string, unknown> | undefined;
894
894
  } | null | undefined;
package/dist/png.js CHANGED
@@ -135,58 +135,6 @@ import { z } from "zod";
135
135
  import { z as z2 } from "zod";
136
136
  import { z as z3 } from "zod";
137
137
  import "zod";
138
- function preprocessTimestamp(val) {
139
- if (val === null || val === void 0) return void 0;
140
- let num;
141
- if (typeof val === "number") {
142
- num = val;
143
- } else if (typeof val === "string") {
144
- const trimmed = val.trim();
145
- if (!trimmed) return void 0;
146
- const parsed = Number(trimmed);
147
- if (!isNaN(parsed)) {
148
- num = parsed;
149
- } else {
150
- const date = new Date(trimmed);
151
- if (isNaN(date.getTime())) return void 0;
152
- num = Math.floor(date.getTime() / 1e3);
153
- }
154
- } else {
155
- return void 0;
156
- }
157
- if (num > 1e10) {
158
- num = Math.floor(num / 1e3);
159
- }
160
- if (num < 0) return void 0;
161
- return num;
162
- }
163
- function preprocessNumeric(val) {
164
- if (val === null || val === void 0) return void 0;
165
- if (typeof val === "number") {
166
- return isNaN(val) ? void 0 : val;
167
- }
168
- if (typeof val === "string") {
169
- const trimmed = val.trim();
170
- if (!trimmed) return void 0;
171
- const parsed = Number(trimmed);
172
- return isNaN(parsed) ? void 0 : parsed;
173
- }
174
- return void 0;
175
- }
176
- var KNOWN_ASSET_TYPES = /* @__PURE__ */ new Set([
177
- "icon",
178
- "background",
179
- "emotion",
180
- "user_icon",
181
- "sound",
182
- "video",
183
- "custom",
184
- "x-risu-asset"
185
- ]);
186
- function preprocessAssetType(val) {
187
- if (typeof val !== "string") return "custom";
188
- return KNOWN_ASSET_TYPES.has(val) ? val : "custom";
189
- }
190
138
  var ISO8601Schema = z.string().datetime();
191
139
  var UUIDSchema = z.string().uuid();
192
140
  var SpecSchema = z.enum(["v2", "v3"]);
@@ -209,19 +157,16 @@ var SourceFormatSchema = z.enum([
209
157
  // VoxPkg format
210
158
  ]);
211
159
  var OriginalShapeSchema = z.enum(["wrapped", "unwrapped", "legacy"]);
212
- var AssetTypeSchema = z.preprocess(
213
- preprocessAssetType,
214
- z.enum([
215
- "icon",
216
- "background",
217
- "emotion",
218
- "user_icon",
219
- "sound",
220
- "video",
221
- "custom",
222
- "x-risu-asset"
223
- ])
224
- );
160
+ var AssetTypeSchema = z.enum([
161
+ "icon",
162
+ "background",
163
+ "emotion",
164
+ "user_icon",
165
+ "sound",
166
+ "video",
167
+ "custom",
168
+ "x-risu-asset"
169
+ ]);
225
170
  var AssetDescriptorSchema = z.object({
226
171
  type: AssetTypeSchema,
227
172
  uri: z.string(),
@@ -255,8 +200,8 @@ var CCv2LorebookEntrySchema = z2.object({
255
200
  var CCv2CharacterBookSchema = z2.object({
256
201
  name: z2.string().optional(),
257
202
  description: z2.string().optional(),
258
- scan_depth: z2.preprocess(preprocessNumeric, z2.number().int().nonnegative().optional()),
259
- token_budget: z2.preprocess(preprocessNumeric, z2.number().int().nonnegative().optional()),
203
+ scan_depth: z2.number().int().nonnegative().optional(),
204
+ token_budget: z2.number().int().nonnegative().optional(),
260
205
  recursive_scanning: z2.boolean().optional(),
261
206
  extensions: z2.record(z2.unknown()).optional(),
262
207
  entries: z2.array(CCv2LorebookEntrySchema)
@@ -319,8 +264,8 @@ var CCv3LorebookEntrySchema = z3.object({
319
264
  var CCv3CharacterBookSchema = z3.object({
320
265
  name: z3.string().optional(),
321
266
  description: z3.string().optional(),
322
- scan_depth: z3.preprocess(preprocessNumeric, z3.number().int().nonnegative().optional()),
323
- token_budget: z3.preprocess(preprocessNumeric, z3.number().int().nonnegative().optional()),
267
+ scan_depth: z3.number().int().nonnegative().optional(),
268
+ token_budget: z3.number().int().nonnegative().optional(),
324
269
  recursive_scanning: z3.boolean().optional(),
325
270
  extensions: z3.record(z3.unknown()).optional(),
326
271
  entries: z3.array(CCv3LorebookEntrySchema)
@@ -352,9 +297,10 @@ var CCv3DataInnerSchema = z3.object({
352
297
  nickname: z3.string().optional(),
353
298
  creator_notes_multilingual: z3.record(z3.string()).optional(),
354
299
  source: z3.array(z3.string()).optional(),
355
- // Unix timestamps - preprocess to handle ISO strings, numeric strings, milliseconds
356
- creation_date: z3.preprocess(preprocessTimestamp, z3.number().int().nonnegative().optional()),
357
- modification_date: z3.preprocess(preprocessTimestamp, z3.number().int().nonnegative().optional())
300
+ creation_date: z3.number().int().nonnegative().optional(),
301
+ // Unix timestamp in seconds
302
+ modification_date: z3.number().int().nonnegative().optional()
303
+ // Unix timestamp in seconds
358
304
  });
359
305
  var CCv3DataSchema = z3.object({
360
306
  spec: z3.literal("chara_card_v3"),