@character-foundry/character-foundry 0.4.2-dev.1765997746 → 0.4.2
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 +36 -15
- package/dist/charx.cjs.map +1 -1
- package/dist/charx.d.cts +9 -18
- package/dist/charx.d.ts +9 -18
- package/dist/charx.js +36 -15
- package/dist/charx.js.map +1 -1
- package/dist/exporter.cjs +38 -34
- package/dist/exporter.cjs.map +1 -1
- package/dist/exporter.d.cts +9 -18
- package/dist/exporter.d.ts +9 -18
- package/dist/exporter.js +38 -34
- package/dist/exporter.js.map +1 -1
- package/dist/federation.cjs +36 -104
- package/dist/federation.cjs.map +1 -1
- package/dist/federation.d.cts +9 -53
- package/dist/federation.d.ts +9 -53
- package/dist/federation.js +36 -104
- package/dist/federation.js.map +1 -1
- package/dist/index.cjs +38 -34
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -42
- package/dist/index.d.ts +21 -42
- package/dist/index.js +38 -34
- package/dist/index.js.map +1 -1
- package/dist/loader.cjs +15 -101
- package/dist/loader.cjs.map +1 -1
- package/dist/loader.d.cts +14 -42
- package/dist/loader.d.ts +14 -42
- package/dist/loader.js +15 -101
- package/dist/loader.js.map +1 -1
- package/dist/lorebook.d.cts +17 -34
- package/dist/lorebook.d.ts +17 -34
- package/dist/normalizer.cjs +2 -2
- package/dist/normalizer.cjs.map +1 -1
- package/dist/normalizer.d.cts +30 -60
- package/dist/normalizer.d.ts +30 -60
- package/dist/normalizer.js +2 -2
- package/dist/normalizer.js.map +1 -1
- package/dist/png.cjs +2 -2
- package/dist/png.cjs.map +1 -1
- package/dist/png.d.cts +16 -32
- package/dist/png.d.ts +16 -32
- package/dist/png.js +2 -2
- package/dist/png.js.map +1 -1
- package/dist/schemas.cjs +7 -7
- package/dist/schemas.cjs.map +1 -1
- package/dist/schemas.d.cts +48 -96
- package/dist/schemas.d.ts +48 -96
- package/dist/schemas.js +7 -7
- package/dist/schemas.js.map +1 -1
- package/dist/voxta.cjs +4 -21
- package/dist/voxta.cjs.map +1 -1
- package/dist/voxta.d.cts +14 -28
- package/dist/voxta.d.ts +14 -28
- package/dist/voxta.js +4 -21
- package/dist/voxta.js.map +1 -1
- package/package.json +6 -6
package/dist/exporter.d.cts
CHANGED
|
@@ -51,8 +51,7 @@ 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"
|
|
55
|
-
"in_chat"
|
|
54
|
+
"after_char"
|
|
56
55
|
]>,
|
|
57
56
|
z.ZodNumber,
|
|
58
57
|
z.ZodLiteral<"">
|
|
@@ -95,8 +94,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
95
94
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
96
95
|
z.ZodEnum<[
|
|
97
96
|
"before_char",
|
|
98
|
-
"after_char"
|
|
99
|
-
"in_chat"
|
|
97
|
+
"after_char"
|
|
100
98
|
]>,
|
|
101
99
|
z.ZodNumber,
|
|
102
100
|
z.ZodLiteral<"">
|
|
@@ -139,8 +137,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
139
137
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
140
138
|
z.ZodEnum<[
|
|
141
139
|
"before_char",
|
|
142
|
-
"after_char"
|
|
143
|
-
"in_chat"
|
|
140
|
+
"after_char"
|
|
144
141
|
]>,
|
|
145
142
|
z.ZodNumber,
|
|
146
143
|
z.ZodLiteral<"">
|
|
@@ -185,8 +182,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
185
182
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
186
183
|
z.ZodEnum<[
|
|
187
184
|
"before_char",
|
|
188
|
-
"after_char"
|
|
189
|
-
"in_chat"
|
|
185
|
+
"after_char"
|
|
190
186
|
]>,
|
|
191
187
|
z.ZodNumber,
|
|
192
188
|
z.ZodLiteral<"">
|
|
@@ -237,8 +233,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
237
233
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
238
234
|
z.ZodEnum<[
|
|
239
235
|
"before_char",
|
|
240
|
-
"after_char"
|
|
241
|
-
"in_chat"
|
|
236
|
+
"after_char"
|
|
242
237
|
]>,
|
|
243
238
|
z.ZodNumber,
|
|
244
239
|
z.ZodLiteral<"">
|
|
@@ -337,8 +332,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
337
332
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
338
333
|
z.ZodEnum<[
|
|
339
334
|
"before_char",
|
|
340
|
-
"after_char"
|
|
341
|
-
"in_chat"
|
|
335
|
+
"after_char"
|
|
342
336
|
]>,
|
|
343
337
|
z.ZodNumber,
|
|
344
338
|
z.ZodLiteral<"">
|
|
@@ -413,8 +407,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
413
407
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
414
408
|
z.ZodEnum<[
|
|
415
409
|
"before_char",
|
|
416
|
-
"after_char"
|
|
417
|
-
"in_chat"
|
|
410
|
+
"after_char"
|
|
418
411
|
]>,
|
|
419
412
|
z.ZodNumber,
|
|
420
413
|
z.ZodLiteral<"">
|
|
@@ -499,8 +492,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
499
492
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
500
493
|
z.ZodEnum<[
|
|
501
494
|
"before_char",
|
|
502
|
-
"after_char"
|
|
503
|
-
"in_chat"
|
|
495
|
+
"after_char"
|
|
504
496
|
]>,
|
|
505
497
|
z.ZodNumber,
|
|
506
498
|
z.ZodLiteral<"">
|
|
@@ -579,8 +571,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
579
571
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
580
572
|
z.ZodEnum<[
|
|
581
573
|
"before_char",
|
|
582
|
-
"after_char"
|
|
583
|
-
"in_chat"
|
|
574
|
+
"after_char"
|
|
584
575
|
]>,
|
|
585
576
|
z.ZodNumber,
|
|
586
577
|
z.ZodLiteral<"">
|
package/dist/exporter.d.ts
CHANGED
|
@@ -51,8 +51,7 @@ 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"
|
|
55
|
-
"in_chat"
|
|
54
|
+
"after_char"
|
|
56
55
|
]>,
|
|
57
56
|
z.ZodNumber,
|
|
58
57
|
z.ZodLiteral<"">
|
|
@@ -95,8 +94,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
95
94
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
96
95
|
z.ZodEnum<[
|
|
97
96
|
"before_char",
|
|
98
|
-
"after_char"
|
|
99
|
-
"in_chat"
|
|
97
|
+
"after_char"
|
|
100
98
|
]>,
|
|
101
99
|
z.ZodNumber,
|
|
102
100
|
z.ZodLiteral<"">
|
|
@@ -139,8 +137,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
139
137
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
140
138
|
z.ZodEnum<[
|
|
141
139
|
"before_char",
|
|
142
|
-
"after_char"
|
|
143
|
-
"in_chat"
|
|
140
|
+
"after_char"
|
|
144
141
|
]>,
|
|
145
142
|
z.ZodNumber,
|
|
146
143
|
z.ZodLiteral<"">
|
|
@@ -185,8 +182,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
185
182
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
186
183
|
z.ZodEnum<[
|
|
187
184
|
"before_char",
|
|
188
|
-
"after_char"
|
|
189
|
-
"in_chat"
|
|
185
|
+
"after_char"
|
|
190
186
|
]>,
|
|
191
187
|
z.ZodNumber,
|
|
192
188
|
z.ZodLiteral<"">
|
|
@@ -237,8 +233,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
237
233
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
238
234
|
z.ZodEnum<[
|
|
239
235
|
"before_char",
|
|
240
|
-
"after_char"
|
|
241
|
-
"in_chat"
|
|
236
|
+
"after_char"
|
|
242
237
|
]>,
|
|
243
238
|
z.ZodNumber,
|
|
244
239
|
z.ZodLiteral<"">
|
|
@@ -337,8 +332,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
337
332
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
338
333
|
z.ZodEnum<[
|
|
339
334
|
"before_char",
|
|
340
|
-
"after_char"
|
|
341
|
-
"in_chat"
|
|
335
|
+
"after_char"
|
|
342
336
|
]>,
|
|
343
337
|
z.ZodNumber,
|
|
344
338
|
z.ZodLiteral<"">
|
|
@@ -413,8 +407,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
413
407
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
414
408
|
z.ZodEnum<[
|
|
415
409
|
"before_char",
|
|
416
|
-
"after_char"
|
|
417
|
-
"in_chat"
|
|
410
|
+
"after_char"
|
|
418
411
|
]>,
|
|
419
412
|
z.ZodNumber,
|
|
420
413
|
z.ZodLiteral<"">
|
|
@@ -499,8 +492,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
499
492
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
500
493
|
z.ZodEnum<[
|
|
501
494
|
"before_char",
|
|
502
|
-
"after_char"
|
|
503
|
-
"in_chat"
|
|
495
|
+
"after_char"
|
|
504
496
|
]>,
|
|
505
497
|
z.ZodNumber,
|
|
506
498
|
z.ZodLiteral<"">
|
|
@@ -579,8 +571,7 @@ declare const CCv3DataSchema: z.ZodObject<{
|
|
|
579
571
|
position: z.ZodOptional<z.ZodNullable<z.ZodUnion<[
|
|
580
572
|
z.ZodEnum<[
|
|
581
573
|
"before_char",
|
|
582
|
-
"after_char"
|
|
583
|
-
"in_chat"
|
|
574
|
+
"after_char"
|
|
584
575
|
]>,
|
|
585
576
|
z.ZodNumber,
|
|
586
577
|
z.ZodLiteral<"">
|
package/dist/exporter.js
CHANGED
|
@@ -244,7 +244,7 @@ var CCv2LorebookEntrySchema = z2.object({
|
|
|
244
244
|
selective: z2.boolean().nullable().optional(),
|
|
245
245
|
secondary_keys: z2.array(z2.string()).nullable().optional(),
|
|
246
246
|
constant: z2.boolean().nullable().optional(),
|
|
247
|
-
position: z2.union([z2.enum(["before_char", "after_char"
|
|
247
|
+
position: z2.union([z2.enum(["before_char", "after_char"]), z2.number().int(), z2.literal("")]).nullable().optional()
|
|
248
248
|
}).passthrough();
|
|
249
249
|
var CCv2CharacterBookSchema = z2.object({
|
|
250
250
|
name: z2.string().optional(),
|
|
@@ -297,7 +297,7 @@ var CCv3LorebookEntrySchema = z3.object({
|
|
|
297
297
|
selective: z3.boolean().nullable().optional(),
|
|
298
298
|
secondary_keys: z3.array(z3.string()).nullable().optional(),
|
|
299
299
|
constant: z3.boolean().nullable().optional(),
|
|
300
|
-
position: z3.union([z3.enum(["before_char", "after_char"
|
|
300
|
+
position: z3.union([z3.enum(["before_char", "after_char"]), z3.number().int(), z3.literal("")]).nullable().optional(),
|
|
301
301
|
extensions: z3.record(z3.unknown()).optional(),
|
|
302
302
|
// v3 specific - also lenient with types since SillyTavern uses numbers for enums
|
|
303
303
|
automation_id: z3.string().optional(),
|
|
@@ -514,6 +514,36 @@ var SAFE_ASSET_TYPES = /* @__PURE__ */ new Set([
|
|
|
514
514
|
"data",
|
|
515
515
|
"unknown"
|
|
516
516
|
]);
|
|
517
|
+
var SAFE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
518
|
+
// Images
|
|
519
|
+
"png",
|
|
520
|
+
"jpg",
|
|
521
|
+
"jpeg",
|
|
522
|
+
"webp",
|
|
523
|
+
"gif",
|
|
524
|
+
"avif",
|
|
525
|
+
"svg",
|
|
526
|
+
"bmp",
|
|
527
|
+
"ico",
|
|
528
|
+
// Audio
|
|
529
|
+
"mp3",
|
|
530
|
+
"wav",
|
|
531
|
+
"ogg",
|
|
532
|
+
"flac",
|
|
533
|
+
"m4a",
|
|
534
|
+
"aac",
|
|
535
|
+
"opus",
|
|
536
|
+
// Video
|
|
537
|
+
"mp4",
|
|
538
|
+
"webm",
|
|
539
|
+
"avi",
|
|
540
|
+
"mov",
|
|
541
|
+
"mkv",
|
|
542
|
+
// Data
|
|
543
|
+
"json",
|
|
544
|
+
"txt",
|
|
545
|
+
"bin"
|
|
546
|
+
]);
|
|
517
547
|
function getCharxCategory(mimetype) {
|
|
518
548
|
if (mimetype.startsWith("image/")) return "images";
|
|
519
549
|
if (mimetype.startsWith("audio/")) return "audio";
|
|
@@ -529,20 +559,11 @@ function sanitizeAssetType(type) {
|
|
|
529
559
|
return sanitized || "custom";
|
|
530
560
|
}
|
|
531
561
|
function sanitizeExtension(ext) {
|
|
532
|
-
const normalized = ext.
|
|
533
|
-
if (
|
|
534
|
-
|
|
535
|
-
}
|
|
536
|
-
if (normalized.length > 64) {
|
|
537
|
-
throw new Error(`Invalid asset extension: too long (${normalized.length} chars)`);
|
|
538
|
-
}
|
|
539
|
-
if (normalized.includes("/") || normalized.includes("\\") || normalized.includes("\0")) {
|
|
540
|
-
throw new Error("Invalid asset extension: path separators are not allowed");
|
|
541
|
-
}
|
|
542
|
-
if (!/^[a-z0-9][a-z0-9._-]*$/.test(normalized)) {
|
|
543
|
-
throw new Error(`Invalid asset extension: "${ext}"`);
|
|
562
|
+
const normalized = ext.replace(/^\./, "").toLowerCase().replace(/[^a-z0-9]/g, "");
|
|
563
|
+
if (SAFE_EXTENSIONS.has(normalized)) {
|
|
564
|
+
return normalized;
|
|
544
565
|
}
|
|
545
|
-
return
|
|
566
|
+
return "bin";
|
|
546
567
|
}
|
|
547
568
|
function sanitizeName(name, ext) {
|
|
548
569
|
let safeName = name;
|
|
@@ -6993,22 +7014,6 @@ function sanitizeName2(name, ext) {
|
|
|
6993
7014
|
if (!safeName) safeName = "asset";
|
|
6994
7015
|
return safeName;
|
|
6995
7016
|
}
|
|
6996
|
-
function sanitizeExtension2(ext) {
|
|
6997
|
-
const normalized = ext.trim().replace(/^\./, "").toLowerCase();
|
|
6998
|
-
if (!normalized) {
|
|
6999
|
-
throw new Error("Invalid asset extension: empty extension");
|
|
7000
|
-
}
|
|
7001
|
-
if (normalized.length > 64) {
|
|
7002
|
-
throw new Error(`Invalid asset extension: too long (${normalized.length} chars)`);
|
|
7003
|
-
}
|
|
7004
|
-
if (normalized.includes("/") || normalized.includes("\\") || normalized.includes("\0")) {
|
|
7005
|
-
throw new Error("Invalid asset extension: path separators are not allowed");
|
|
7006
|
-
}
|
|
7007
|
-
if (!/^[a-z0-9][a-z0-9._-]*$/.test(normalized)) {
|
|
7008
|
-
throw new Error(`Invalid asset extension: "${ext}"`);
|
|
7009
|
-
}
|
|
7010
|
-
return normalized;
|
|
7011
|
-
}
|
|
7012
7017
|
function writeVoxta(card, assets, options = {}) {
|
|
7013
7018
|
const { compressionLevel = 6, includePackageJson = false } = options;
|
|
7014
7019
|
const cardData = card.data;
|
|
@@ -7097,9 +7102,8 @@ function writeVoxta(card, assets, options = {}) {
|
|
|
7097
7102
|
let assetCount = 0;
|
|
7098
7103
|
let mainThumbnail;
|
|
7099
7104
|
for (const asset of assets) {
|
|
7100
|
-
const
|
|
7101
|
-
const
|
|
7102
|
-
const finalFilename = `${safeName}.${safeExt}`;
|
|
7105
|
+
const safeName = sanitizeName2(asset.name, asset.ext);
|
|
7106
|
+
const finalFilename = `${safeName}.${asset.ext}`;
|
|
7103
7107
|
let voxtaPath = "";
|
|
7104
7108
|
const tags = asset.tags || [];
|
|
7105
7109
|
const isMainIcon = asset.type === "icon" && (tags.includes("portrait-override") || asset.name === "main" || asset.isMain);
|