@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.
- package/dist/charx.cjs +87 -54
- package/dist/charx.cjs.map +1 -1
- package/dist/charx.d.cts +40 -31
- package/dist/charx.d.ts +40 -31
- package/dist/charx.js +87 -54
- package/dist/charx.js.map +1 -1
- package/dist/exporter.cjs +106 -56
- package/dist/exporter.cjs.map +1 -1
- package/dist/exporter.d.cts +37 -28
- package/dist/exporter.d.ts +37 -28
- package/dist/exporter.js +106 -56
- package/dist/exporter.js.map +1 -1
- package/dist/federation.cjs +104 -36
- package/dist/federation.cjs.map +1 -1
- package/dist/federation.d.cts +72 -28
- package/dist/federation.d.ts +72 -28
- package/dist/federation.js +104 -36
- package/dist/federation.js.map +1 -1
- package/dist/index.cjs +106 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +71 -50
- package/dist/index.d.ts +71 -50
- package/dist/index.js +106 -56
- package/dist/index.js.map +1 -1
- package/dist/loader.cjs +173 -33
- package/dist/loader.cjs.map +1 -1
- package/dist/loader.d.cts +65 -37
- package/dist/loader.d.ts +65 -37
- package/dist/loader.js +173 -33
- package/dist/loader.js.map +1 -1
- package/dist/lorebook.d.cts +57 -40
- package/dist/lorebook.d.ts +57 -40
- package/dist/normalizer.cjs +74 -20
- package/dist/normalizer.cjs.map +1 -1
- package/dist/normalizer.d.cts +97 -67
- package/dist/normalizer.d.ts +97 -67
- package/dist/normalizer.js +74 -20
- package/dist/normalizer.js.map +1 -1
- package/dist/png.cjs +74 -20
- package/dist/png.cjs.map +1 -1
- package/dist/png.d.cts +57 -41
- package/dist/png.d.ts +57 -41
- package/dist/png.js +74 -20
- package/dist/png.js.map +1 -1
- package/dist/schemas.cjs +82 -25
- package/dist/schemas.cjs.map +1 -1
- package/dist/schemas.d.cts +181 -115
- package/dist/schemas.d.ts +181 -115
- package/dist/schemas.js +82 -25
- package/dist/schemas.js.map +1 -1
- package/dist/voxta.cjs +93 -22
- package/dist/voxta.cjs.map +1 -1
- package/dist/voxta.d.cts +51 -37
- package/dist/voxta.d.ts +51 -37
- package/dist/voxta.js +93 -22
- package/dist/voxta.js.map +1 -1
- package/package.json +5 -5
package/dist/charx.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.ZodOptional<z.ZodNumber>;
|
|
35
|
-
token_budget: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
35
|
+
token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
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<{
|
|
@@ -51,7 +51,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
51
51
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
52
52
|
z.ZodEnum<[
|
|
53
53
|
"before_char",
|
|
54
|
-
"after_char"
|
|
54
|
+
"after_char",
|
|
55
|
+
"in_chat"
|
|
55
56
|
]>,
|
|
56
57
|
z.ZodNumber,
|
|
57
58
|
z.ZodLiteral<"">
|
|
@@ -94,7 +95,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
94
95
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
95
96
|
z.ZodEnum<[
|
|
96
97
|
"before_char",
|
|
97
|
-
"after_char"
|
|
98
|
+
"after_char",
|
|
99
|
+
"in_chat"
|
|
98
100
|
]>,
|
|
99
101
|
z.ZodNumber,
|
|
100
102
|
z.ZodLiteral<"">
|
|
@@ -137,7 +139,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
137
139
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
138
140
|
z.ZodEnum<[
|
|
139
141
|
"before_char",
|
|
140
|
-
"after_char"
|
|
142
|
+
"after_char",
|
|
143
|
+
"in_chat"
|
|
141
144
|
]>,
|
|
142
145
|
z.ZodNumber,
|
|
143
146
|
z.ZodLiteral<"">
|
|
@@ -182,7 +185,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
182
185
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
183
186
|
z.ZodEnum<[
|
|
184
187
|
"before_char",
|
|
185
|
-
"after_char"
|
|
188
|
+
"after_char",
|
|
189
|
+
"in_chat"
|
|
186
190
|
]>,
|
|
187
191
|
z.ZodNumber,
|
|
188
192
|
z.ZodLiteral<"">
|
|
@@ -233,7 +237,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
233
237
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
234
238
|
z.ZodEnum<[
|
|
235
239
|
"before_char",
|
|
236
|
-
"after_char"
|
|
240
|
+
"after_char",
|
|
241
|
+
"in_chat"
|
|
237
242
|
]>,
|
|
238
243
|
z.ZodNumber,
|
|
239
244
|
z.ZodLiteral<"">
|
|
@@ -263,14 +268,14 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
263
268
|
}, z.ZodTypeAny, "passthrough">[];
|
|
264
269
|
name?: string | undefined;
|
|
265
270
|
description?: string | undefined;
|
|
266
|
-
scan_depth?:
|
|
267
|
-
token_budget?:
|
|
271
|
+
scan_depth?: unknown;
|
|
272
|
+
token_budget?: unknown;
|
|
268
273
|
recursive_scanning?: boolean | undefined;
|
|
269
274
|
extensions?: Record<string, unknown> | undefined;
|
|
270
275
|
}>>>;
|
|
271
276
|
extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
272
277
|
assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
273
|
-
type: z.ZodEnum<[
|
|
278
|
+
type: z.ZodEffects<z.ZodEnum<[
|
|
274
279
|
"icon",
|
|
275
280
|
"background",
|
|
276
281
|
"emotion",
|
|
@@ -279,7 +284,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
279
284
|
"video",
|
|
280
285
|
"custom",
|
|
281
286
|
"x-risu-asset"
|
|
282
|
-
]>;
|
|
287
|
+
]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
|
|
283
288
|
uri: z.ZodString;
|
|
284
289
|
name: z.ZodString;
|
|
285
290
|
ext: z.ZodString;
|
|
@@ -290,15 +295,15 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
290
295
|
ext: string;
|
|
291
296
|
}, {
|
|
292
297
|
name: string;
|
|
293
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
294
298
|
uri: string;
|
|
295
299
|
ext: string;
|
|
300
|
+
type?: unknown;
|
|
296
301
|
}>, "many">>;
|
|
297
302
|
nickname: z.ZodOptional<z.ZodString>;
|
|
298
303
|
creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
299
304
|
source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
300
|
-
creation_date: z.ZodOptional<z.ZodNumber>;
|
|
301
|
-
modification_date: z.ZodOptional<z.ZodNumber>;
|
|
305
|
+
creation_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
306
|
+
modification_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
302
307
|
}, "strip", z.ZodTypeAny, {
|
|
303
308
|
name: string;
|
|
304
309
|
description: string;
|
|
@@ -332,7 +337,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
332
337
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
333
338
|
z.ZodEnum<[
|
|
334
339
|
"before_char",
|
|
335
|
-
"after_char"
|
|
340
|
+
"after_char",
|
|
341
|
+
"in_chat"
|
|
336
342
|
]>,
|
|
337
343
|
z.ZodNumber,
|
|
338
344
|
z.ZodLiteral<"">
|
|
@@ -407,7 +413,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
407
413
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
408
414
|
z.ZodEnum<[
|
|
409
415
|
"before_char",
|
|
410
|
-
"after_char"
|
|
416
|
+
"after_char",
|
|
417
|
+
"in_chat"
|
|
411
418
|
]>,
|
|
412
419
|
z.ZodNumber,
|
|
413
420
|
z.ZodLiteral<"">
|
|
@@ -437,8 +444,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
437
444
|
}, z.ZodTypeAny, "passthrough">[];
|
|
438
445
|
name?: string | undefined;
|
|
439
446
|
description?: string | undefined;
|
|
440
|
-
scan_depth?:
|
|
441
|
-
token_budget?:
|
|
447
|
+
scan_depth?: unknown;
|
|
448
|
+
token_budget?: unknown;
|
|
442
449
|
recursive_scanning?: boolean | undefined;
|
|
443
450
|
extensions?: Record<string, unknown> | undefined;
|
|
444
451
|
} | null | undefined;
|
|
@@ -448,15 +455,15 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
448
455
|
group_only_greetings?: string[] | undefined;
|
|
449
456
|
assets?: {
|
|
450
457
|
name: string;
|
|
451
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
452
458
|
uri: string;
|
|
453
459
|
ext: string;
|
|
460
|
+
type?: unknown;
|
|
454
461
|
}[] | undefined;
|
|
455
462
|
nickname?: string | undefined;
|
|
456
463
|
creator_notes_multilingual?: Record<string, string> | undefined;
|
|
457
464
|
source?: string[] | undefined;
|
|
458
|
-
creation_date?:
|
|
459
|
-
modification_date?:
|
|
465
|
+
creation_date?: unknown;
|
|
466
|
+
modification_date?: unknown;
|
|
460
467
|
}>;
|
|
461
468
|
}, "strip", z.ZodTypeAny, {
|
|
462
469
|
data: {
|
|
@@ -492,7 +499,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
492
499
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
493
500
|
z.ZodEnum<[
|
|
494
501
|
"before_char",
|
|
495
|
-
"after_char"
|
|
502
|
+
"after_char",
|
|
503
|
+
"in_chat"
|
|
496
504
|
]>,
|
|
497
505
|
z.ZodNumber,
|
|
498
506
|
z.ZodLiteral<"">
|
|
@@ -571,7 +579,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
571
579
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
572
580
|
z.ZodEnum<[
|
|
573
581
|
"before_char",
|
|
574
|
-
"after_char"
|
|
582
|
+
"after_char",
|
|
583
|
+
"in_chat"
|
|
575
584
|
]>,
|
|
576
585
|
z.ZodNumber,
|
|
577
586
|
z.ZodLiteral<"">
|
|
@@ -601,8 +610,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
601
610
|
}, z.ZodTypeAny, "passthrough">[];
|
|
602
611
|
name?: string | undefined;
|
|
603
612
|
description?: string | undefined;
|
|
604
|
-
scan_depth?:
|
|
605
|
-
token_budget?:
|
|
613
|
+
scan_depth?: unknown;
|
|
614
|
+
token_budget?: unknown;
|
|
606
615
|
recursive_scanning?: boolean | undefined;
|
|
607
616
|
extensions?: Record<string, unknown> | undefined;
|
|
608
617
|
} | null | undefined;
|
|
@@ -612,15 +621,15 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
612
621
|
group_only_greetings?: string[] | undefined;
|
|
613
622
|
assets?: {
|
|
614
623
|
name: string;
|
|
615
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
616
624
|
uri: string;
|
|
617
625
|
ext: string;
|
|
626
|
+
type?: unknown;
|
|
618
627
|
}[] | undefined;
|
|
619
628
|
nickname?: string | undefined;
|
|
620
629
|
creator_notes_multilingual?: Record<string, string> | undefined;
|
|
621
630
|
source?: string[] | undefined;
|
|
622
|
-
creation_date?:
|
|
623
|
-
modification_date?:
|
|
631
|
+
creation_date?: unknown;
|
|
632
|
+
modification_date?: unknown;
|
|
624
633
|
};
|
|
625
634
|
spec: "chara_card_v3";
|
|
626
635
|
spec_version: "3.0";
|
|
@@ -630,7 +639,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
630
639
|
*/
|
|
631
640
|
export type CCv3Data = z.infer<typeof CCv3DataSchema>;
|
|
632
641
|
declare const AssetDescriptorSchema: z.ZodObject<{
|
|
633
|
-
type: z.ZodEnum<[
|
|
642
|
+
type: z.ZodEffects<z.ZodEnum<[
|
|
634
643
|
"icon",
|
|
635
644
|
"background",
|
|
636
645
|
"emotion",
|
|
@@ -639,7 +648,7 @@ declare const AssetDescriptorSchema: z.ZodObject<{
|
|
|
639
648
|
"video",
|
|
640
649
|
"custom",
|
|
641
650
|
"x-risu-asset"
|
|
642
|
-
]>;
|
|
651
|
+
]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
|
|
643
652
|
uri: z.ZodString;
|
|
644
653
|
name: z.ZodString;
|
|
645
654
|
ext: z.ZodString;
|
|
@@ -650,9 +659,9 @@ declare const AssetDescriptorSchema: z.ZodObject<{
|
|
|
650
659
|
ext: string;
|
|
651
660
|
}, {
|
|
652
661
|
name: string;
|
|
653
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
654
662
|
uri: string;
|
|
655
663
|
ext: string;
|
|
664
|
+
type?: unknown;
|
|
656
665
|
}>;
|
|
657
666
|
/**
|
|
658
667
|
* Asset descriptor (v3 spec)
|
package/dist/charx.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.ZodOptional<z.ZodNumber>;
|
|
35
|
-
token_budget: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
scan_depth: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
35
|
+
token_budget: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
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<{
|
|
@@ -51,7 +51,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
51
51
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
52
52
|
z.ZodEnum<[
|
|
53
53
|
"before_char",
|
|
54
|
-
"after_char"
|
|
54
|
+
"after_char",
|
|
55
|
+
"in_chat"
|
|
55
56
|
]>,
|
|
56
57
|
z.ZodNumber,
|
|
57
58
|
z.ZodLiteral<"">
|
|
@@ -94,7 +95,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
94
95
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
95
96
|
z.ZodEnum<[
|
|
96
97
|
"before_char",
|
|
97
|
-
"after_char"
|
|
98
|
+
"after_char",
|
|
99
|
+
"in_chat"
|
|
98
100
|
]>,
|
|
99
101
|
z.ZodNumber,
|
|
100
102
|
z.ZodLiteral<"">
|
|
@@ -137,7 +139,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
137
139
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
138
140
|
z.ZodEnum<[
|
|
139
141
|
"before_char",
|
|
140
|
-
"after_char"
|
|
142
|
+
"after_char",
|
|
143
|
+
"in_chat"
|
|
141
144
|
]>,
|
|
142
145
|
z.ZodNumber,
|
|
143
146
|
z.ZodLiteral<"">
|
|
@@ -182,7 +185,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
182
185
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
183
186
|
z.ZodEnum<[
|
|
184
187
|
"before_char",
|
|
185
|
-
"after_char"
|
|
188
|
+
"after_char",
|
|
189
|
+
"in_chat"
|
|
186
190
|
]>,
|
|
187
191
|
z.ZodNumber,
|
|
188
192
|
z.ZodLiteral<"">
|
|
@@ -233,7 +237,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
233
237
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
234
238
|
z.ZodEnum<[
|
|
235
239
|
"before_char",
|
|
236
|
-
"after_char"
|
|
240
|
+
"after_char",
|
|
241
|
+
"in_chat"
|
|
237
242
|
]>,
|
|
238
243
|
z.ZodNumber,
|
|
239
244
|
z.ZodLiteral<"">
|
|
@@ -263,14 +268,14 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
263
268
|
}, z.ZodTypeAny, "passthrough">[];
|
|
264
269
|
name?: string | undefined;
|
|
265
270
|
description?: string | undefined;
|
|
266
|
-
scan_depth?:
|
|
267
|
-
token_budget?:
|
|
271
|
+
scan_depth?: unknown;
|
|
272
|
+
token_budget?: unknown;
|
|
268
273
|
recursive_scanning?: boolean | undefined;
|
|
269
274
|
extensions?: Record<string, unknown> | undefined;
|
|
270
275
|
}>>>;
|
|
271
276
|
extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
272
277
|
assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
273
|
-
type: z.ZodEnum<[
|
|
278
|
+
type: z.ZodEffects<z.ZodEnum<[
|
|
274
279
|
"icon",
|
|
275
280
|
"background",
|
|
276
281
|
"emotion",
|
|
@@ -279,7 +284,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
279
284
|
"video",
|
|
280
285
|
"custom",
|
|
281
286
|
"x-risu-asset"
|
|
282
|
-
]>;
|
|
287
|
+
]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
|
|
283
288
|
uri: z.ZodString;
|
|
284
289
|
name: z.ZodString;
|
|
285
290
|
ext: z.ZodString;
|
|
@@ -290,15 +295,15 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
290
295
|
ext: string;
|
|
291
296
|
}, {
|
|
292
297
|
name: string;
|
|
293
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
294
298
|
uri: string;
|
|
295
299
|
ext: string;
|
|
300
|
+
type?: unknown;
|
|
296
301
|
}>, "many">>;
|
|
297
302
|
nickname: z.ZodOptional<z.ZodString>;
|
|
298
303
|
creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
299
304
|
source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
300
|
-
creation_date: z.ZodOptional<z.ZodNumber>;
|
|
301
|
-
modification_date: z.ZodOptional<z.ZodNumber>;
|
|
305
|
+
creation_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
306
|
+
modification_date: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
|
|
302
307
|
}, "strip", z.ZodTypeAny, {
|
|
303
308
|
name: string;
|
|
304
309
|
description: string;
|
|
@@ -332,7 +337,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
332
337
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
333
338
|
z.ZodEnum<[
|
|
334
339
|
"before_char",
|
|
335
|
-
"after_char"
|
|
340
|
+
"after_char",
|
|
341
|
+
"in_chat"
|
|
336
342
|
]>,
|
|
337
343
|
z.ZodNumber,
|
|
338
344
|
z.ZodLiteral<"">
|
|
@@ -407,7 +413,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
407
413
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
408
414
|
z.ZodEnum<[
|
|
409
415
|
"before_char",
|
|
410
|
-
"after_char"
|
|
416
|
+
"after_char",
|
|
417
|
+
"in_chat"
|
|
411
418
|
]>,
|
|
412
419
|
z.ZodNumber,
|
|
413
420
|
z.ZodLiteral<"">
|
|
@@ -437,8 +444,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
437
444
|
}, z.ZodTypeAny, "passthrough">[];
|
|
438
445
|
name?: string | undefined;
|
|
439
446
|
description?: string | undefined;
|
|
440
|
-
scan_depth?:
|
|
441
|
-
token_budget?:
|
|
447
|
+
scan_depth?: unknown;
|
|
448
|
+
token_budget?: unknown;
|
|
442
449
|
recursive_scanning?: boolean | undefined;
|
|
443
450
|
extensions?: Record<string, unknown> | undefined;
|
|
444
451
|
} | null | undefined;
|
|
@@ -448,15 +455,15 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
448
455
|
group_only_greetings?: string[] | undefined;
|
|
449
456
|
assets?: {
|
|
450
457
|
name: string;
|
|
451
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
452
458
|
uri: string;
|
|
453
459
|
ext: string;
|
|
460
|
+
type?: unknown;
|
|
454
461
|
}[] | undefined;
|
|
455
462
|
nickname?: string | undefined;
|
|
456
463
|
creator_notes_multilingual?: Record<string, string> | undefined;
|
|
457
464
|
source?: string[] | undefined;
|
|
458
|
-
creation_date?:
|
|
459
|
-
modification_date?:
|
|
465
|
+
creation_date?: unknown;
|
|
466
|
+
modification_date?: unknown;
|
|
460
467
|
}>;
|
|
461
468
|
}, "strip", z.ZodTypeAny, {
|
|
462
469
|
data: {
|
|
@@ -492,7 +499,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
492
499
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
493
500
|
z.ZodEnum<[
|
|
494
501
|
"before_char",
|
|
495
|
-
"after_char"
|
|
502
|
+
"after_char",
|
|
503
|
+
"in_chat"
|
|
496
504
|
]>,
|
|
497
505
|
z.ZodNumber,
|
|
498
506
|
z.ZodLiteral<"">
|
|
@@ -571,7 +579,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
571
579
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
572
580
|
z.ZodEnum<[
|
|
573
581
|
"before_char",
|
|
574
|
-
"after_char"
|
|
582
|
+
"after_char",
|
|
583
|
+
"in_chat"
|
|
575
584
|
]>,
|
|
576
585
|
z.ZodNumber,
|
|
577
586
|
z.ZodLiteral<"">
|
|
@@ -601,8 +610,8 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
601
610
|
}, z.ZodTypeAny, "passthrough">[];
|
|
602
611
|
name?: string | undefined;
|
|
603
612
|
description?: string | undefined;
|
|
604
|
-
scan_depth?:
|
|
605
|
-
token_budget?:
|
|
613
|
+
scan_depth?: unknown;
|
|
614
|
+
token_budget?: unknown;
|
|
606
615
|
recursive_scanning?: boolean | undefined;
|
|
607
616
|
extensions?: Record<string, unknown> | undefined;
|
|
608
617
|
} | null | undefined;
|
|
@@ -612,15 +621,15 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
612
621
|
group_only_greetings?: string[] | undefined;
|
|
613
622
|
assets?: {
|
|
614
623
|
name: string;
|
|
615
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
616
624
|
uri: string;
|
|
617
625
|
ext: string;
|
|
626
|
+
type?: unknown;
|
|
618
627
|
}[] | undefined;
|
|
619
628
|
nickname?: string | undefined;
|
|
620
629
|
creator_notes_multilingual?: Record<string, string> | undefined;
|
|
621
630
|
source?: string[] | undefined;
|
|
622
|
-
creation_date?:
|
|
623
|
-
modification_date?:
|
|
631
|
+
creation_date?: unknown;
|
|
632
|
+
modification_date?: unknown;
|
|
624
633
|
};
|
|
625
634
|
spec: "chara_card_v3";
|
|
626
635
|
spec_version: "3.0";
|
|
@@ -630,7 +639,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
630
639
|
*/
|
|
631
640
|
export type CCv3Data = z.infer<typeof CCv3DataSchema>;
|
|
632
641
|
declare const AssetDescriptorSchema: z.ZodObject<{
|
|
633
|
-
type: z.ZodEnum<[
|
|
642
|
+
type: z.ZodEffects<z.ZodEnum<[
|
|
634
643
|
"icon",
|
|
635
644
|
"background",
|
|
636
645
|
"emotion",
|
|
@@ -639,7 +648,7 @@ declare const AssetDescriptorSchema: z.ZodObject<{
|
|
|
639
648
|
"video",
|
|
640
649
|
"custom",
|
|
641
650
|
"x-risu-asset"
|
|
642
|
-
]>;
|
|
651
|
+
]>, "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset", unknown>;
|
|
643
652
|
uri: z.ZodString;
|
|
644
653
|
name: z.ZodString;
|
|
645
654
|
ext: z.ZodString;
|
|
@@ -650,9 +659,9 @@ declare const AssetDescriptorSchema: z.ZodObject<{
|
|
|
650
659
|
ext: string;
|
|
651
660
|
}, {
|
|
652
661
|
name: string;
|
|
653
|
-
type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
|
|
654
662
|
uri: string;
|
|
655
663
|
ext: string;
|
|
664
|
+
type?: unknown;
|
|
656
665
|
}>;
|
|
657
666
|
/**
|
|
658
667
|
* Asset descriptor (v3 spec)
|
package/dist/charx.js
CHANGED
|
@@ -408,6 +408,58 @@ import { z } from "zod";
|
|
|
408
408
|
import { z as z2 } from "zod";
|
|
409
409
|
import { z as z3 } from "zod";
|
|
410
410
|
import "zod";
|
|
411
|
+
function preprocessTimestamp(val) {
|
|
412
|
+
if (val === null || val === void 0) return void 0;
|
|
413
|
+
let num;
|
|
414
|
+
if (typeof val === "number") {
|
|
415
|
+
num = val;
|
|
416
|
+
} else if (typeof val === "string") {
|
|
417
|
+
const trimmed = val.trim();
|
|
418
|
+
if (!trimmed) return void 0;
|
|
419
|
+
const parsed = Number(trimmed);
|
|
420
|
+
if (!isNaN(parsed)) {
|
|
421
|
+
num = parsed;
|
|
422
|
+
} else {
|
|
423
|
+
const date = new Date(trimmed);
|
|
424
|
+
if (isNaN(date.getTime())) return void 0;
|
|
425
|
+
num = Math.floor(date.getTime() / 1e3);
|
|
426
|
+
}
|
|
427
|
+
} else {
|
|
428
|
+
return void 0;
|
|
429
|
+
}
|
|
430
|
+
if (num > 1e10) {
|
|
431
|
+
num = Math.floor(num / 1e3);
|
|
432
|
+
}
|
|
433
|
+
if (num < 0) return void 0;
|
|
434
|
+
return num;
|
|
435
|
+
}
|
|
436
|
+
function preprocessNumeric(val) {
|
|
437
|
+
if (val === null || val === void 0) return void 0;
|
|
438
|
+
if (typeof val === "number") {
|
|
439
|
+
return isNaN(val) ? void 0 : val;
|
|
440
|
+
}
|
|
441
|
+
if (typeof val === "string") {
|
|
442
|
+
const trimmed = val.trim();
|
|
443
|
+
if (!trimmed) return void 0;
|
|
444
|
+
const parsed = Number(trimmed);
|
|
445
|
+
return isNaN(parsed) ? void 0 : parsed;
|
|
446
|
+
}
|
|
447
|
+
return void 0;
|
|
448
|
+
}
|
|
449
|
+
var KNOWN_ASSET_TYPES = /* @__PURE__ */ new Set([
|
|
450
|
+
"icon",
|
|
451
|
+
"background",
|
|
452
|
+
"emotion",
|
|
453
|
+
"user_icon",
|
|
454
|
+
"sound",
|
|
455
|
+
"video",
|
|
456
|
+
"custom",
|
|
457
|
+
"x-risu-asset"
|
|
458
|
+
]);
|
|
459
|
+
function preprocessAssetType(val) {
|
|
460
|
+
if (typeof val !== "string") return "custom";
|
|
461
|
+
return KNOWN_ASSET_TYPES.has(val) ? val : "custom";
|
|
462
|
+
}
|
|
411
463
|
var ISO8601Schema = z.string().datetime();
|
|
412
464
|
var UUIDSchema = z.string().uuid();
|
|
413
465
|
var SpecSchema = z.enum(["v2", "v3"]);
|
|
@@ -430,16 +482,19 @@ var SourceFormatSchema = z.enum([
|
|
|
430
482
|
// VoxPkg format
|
|
431
483
|
]);
|
|
432
484
|
var OriginalShapeSchema = z.enum(["wrapped", "unwrapped", "legacy"]);
|
|
433
|
-
var AssetTypeSchema = z.
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
485
|
+
var AssetTypeSchema = z.preprocess(
|
|
486
|
+
preprocessAssetType,
|
|
487
|
+
z.enum([
|
|
488
|
+
"icon",
|
|
489
|
+
"background",
|
|
490
|
+
"emotion",
|
|
491
|
+
"user_icon",
|
|
492
|
+
"sound",
|
|
493
|
+
"video",
|
|
494
|
+
"custom",
|
|
495
|
+
"x-risu-asset"
|
|
496
|
+
])
|
|
497
|
+
);
|
|
443
498
|
var AssetDescriptorSchema = z.object({
|
|
444
499
|
type: AssetTypeSchema,
|
|
445
500
|
uri: z.string(),
|
|
@@ -468,13 +523,13 @@ var CCv2LorebookEntrySchema = z2.object({
|
|
|
468
523
|
selective: z2.boolean().nullable().optional(),
|
|
469
524
|
secondary_keys: z2.array(z2.string()).nullable().optional(),
|
|
470
525
|
constant: z2.boolean().nullable().optional(),
|
|
471
|
-
position: z2.union([z2.enum(["before_char", "after_char"]), z2.number().int(), z2.literal("")]).nullable().optional()
|
|
526
|
+
position: z2.union([z2.enum(["before_char", "after_char", "in_chat"]), z2.number().int(), z2.literal("")]).nullable().optional()
|
|
472
527
|
}).passthrough();
|
|
473
528
|
var CCv2CharacterBookSchema = z2.object({
|
|
474
529
|
name: z2.string().optional(),
|
|
475
530
|
description: z2.string().optional(),
|
|
476
|
-
scan_depth: z2.number().int().nonnegative().optional(),
|
|
477
|
-
token_budget: z2.number().int().nonnegative().optional(),
|
|
531
|
+
scan_depth: z2.preprocess(preprocessNumeric, z2.number().int().nonnegative().optional()),
|
|
532
|
+
token_budget: z2.preprocess(preprocessNumeric, z2.number().int().nonnegative().optional()),
|
|
478
533
|
recursive_scanning: z2.boolean().optional(),
|
|
479
534
|
extensions: z2.record(z2.unknown()).optional(),
|
|
480
535
|
entries: z2.array(CCv2LorebookEntrySchema)
|
|
@@ -521,7 +576,7 @@ var CCv3LorebookEntrySchema = z3.object({
|
|
|
521
576
|
selective: z3.boolean().nullable().optional(),
|
|
522
577
|
secondary_keys: z3.array(z3.string()).nullable().optional(),
|
|
523
578
|
constant: z3.boolean().nullable().optional(),
|
|
524
|
-
position: z3.union([z3.enum(["before_char", "after_char"]), z3.number().int(), z3.literal("")]).nullable().optional(),
|
|
579
|
+
position: z3.union([z3.enum(["before_char", "after_char", "in_chat"]), z3.number().int(), z3.literal("")]).nullable().optional(),
|
|
525
580
|
extensions: z3.record(z3.unknown()).optional(),
|
|
526
581
|
// v3 specific - also lenient with types since SillyTavern uses numbers for enums
|
|
527
582
|
automation_id: z3.string().optional(),
|
|
@@ -537,8 +592,8 @@ var CCv3LorebookEntrySchema = z3.object({
|
|
|
537
592
|
var CCv3CharacterBookSchema = z3.object({
|
|
538
593
|
name: z3.string().optional(),
|
|
539
594
|
description: z3.string().optional(),
|
|
540
|
-
scan_depth: z3.number().int().nonnegative().optional(),
|
|
541
|
-
token_budget: z3.number().int().nonnegative().optional(),
|
|
595
|
+
scan_depth: z3.preprocess(preprocessNumeric, z3.number().int().nonnegative().optional()),
|
|
596
|
+
token_budget: z3.preprocess(preprocessNumeric, z3.number().int().nonnegative().optional()),
|
|
542
597
|
recursive_scanning: z3.boolean().optional(),
|
|
543
598
|
extensions: z3.record(z3.unknown()).optional(),
|
|
544
599
|
entries: z3.array(CCv3LorebookEntrySchema)
|
|
@@ -570,10 +625,9 @@ var CCv3DataInnerSchema = z3.object({
|
|
|
570
625
|
nickname: z3.string().optional(),
|
|
571
626
|
creator_notes_multilingual: z3.record(z3.string()).optional(),
|
|
572
627
|
source: z3.array(z3.string()).optional(),
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
modification_date: z3.number().int().nonnegative().optional()
|
|
576
|
-
// Unix timestamp in seconds
|
|
628
|
+
// Unix timestamps - preprocess to handle ISO strings, numeric strings, milliseconds
|
|
629
|
+
creation_date: z3.preprocess(preprocessTimestamp, z3.number().int().nonnegative().optional()),
|
|
630
|
+
modification_date: z3.preprocess(preprocessTimestamp, z3.number().int().nonnegative().optional())
|
|
577
631
|
});
|
|
578
632
|
var CCv3DataSchema = z3.object({
|
|
579
633
|
spec: z3.literal("chara_card_v3"),
|
|
@@ -836,36 +890,6 @@ var SAFE_ASSET_TYPES = /* @__PURE__ */ new Set([
|
|
|
836
890
|
"data",
|
|
837
891
|
"unknown"
|
|
838
892
|
]);
|
|
839
|
-
var SAFE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
840
|
-
// Images
|
|
841
|
-
"png",
|
|
842
|
-
"jpg",
|
|
843
|
-
"jpeg",
|
|
844
|
-
"webp",
|
|
845
|
-
"gif",
|
|
846
|
-
"avif",
|
|
847
|
-
"svg",
|
|
848
|
-
"bmp",
|
|
849
|
-
"ico",
|
|
850
|
-
// Audio
|
|
851
|
-
"mp3",
|
|
852
|
-
"wav",
|
|
853
|
-
"ogg",
|
|
854
|
-
"flac",
|
|
855
|
-
"m4a",
|
|
856
|
-
"aac",
|
|
857
|
-
"opus",
|
|
858
|
-
// Video
|
|
859
|
-
"mp4",
|
|
860
|
-
"webm",
|
|
861
|
-
"avi",
|
|
862
|
-
"mov",
|
|
863
|
-
"mkv",
|
|
864
|
-
// Data
|
|
865
|
-
"json",
|
|
866
|
-
"txt",
|
|
867
|
-
"bin"
|
|
868
|
-
]);
|
|
869
893
|
function getCharxCategory(mimetype) {
|
|
870
894
|
if (mimetype.startsWith("image/")) return "images";
|
|
871
895
|
if (mimetype.startsWith("audio/")) return "audio";
|
|
@@ -881,11 +905,20 @@ function sanitizeAssetType(type) {
|
|
|
881
905
|
return sanitized || "custom";
|
|
882
906
|
}
|
|
883
907
|
function sanitizeExtension(ext) {
|
|
884
|
-
const normalized = ext.replace(/^\./, "").toLowerCase()
|
|
885
|
-
if (
|
|
886
|
-
|
|
908
|
+
const normalized = ext.trim().replace(/^\./, "").toLowerCase();
|
|
909
|
+
if (!normalized) {
|
|
910
|
+
throw new Error("Invalid asset extension: empty extension");
|
|
911
|
+
}
|
|
912
|
+
if (normalized.length > 64) {
|
|
913
|
+
throw new Error(`Invalid asset extension: too long (${normalized.length} chars)`);
|
|
914
|
+
}
|
|
915
|
+
if (normalized.includes("/") || normalized.includes("\\") || normalized.includes("\0")) {
|
|
916
|
+
throw new Error("Invalid asset extension: path separators are not allowed");
|
|
917
|
+
}
|
|
918
|
+
if (!/^[a-z0-9][a-z0-9._-]*$/.test(normalized)) {
|
|
919
|
+
throw new Error(`Invalid asset extension: "${ext}"`);
|
|
887
920
|
}
|
|
888
|
-
return
|
|
921
|
+
return normalized;
|
|
889
922
|
}
|
|
890
923
|
function sanitizeName(name, ext) {
|
|
891
924
|
let safeName = name;
|