@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/normalizer.cjs
CHANGED
|
@@ -40,6 +40,58 @@ var import_zod = require("zod");
|
|
|
40
40
|
var import_zod2 = require("zod");
|
|
41
41
|
var import_zod3 = require("zod");
|
|
42
42
|
var import_zod4 = require("zod");
|
|
43
|
+
function preprocessTimestamp(val) {
|
|
44
|
+
if (val === null || val === void 0) return void 0;
|
|
45
|
+
let num;
|
|
46
|
+
if (typeof val === "number") {
|
|
47
|
+
num = val;
|
|
48
|
+
} else if (typeof val === "string") {
|
|
49
|
+
const trimmed = val.trim();
|
|
50
|
+
if (!trimmed) return void 0;
|
|
51
|
+
const parsed = Number(trimmed);
|
|
52
|
+
if (!isNaN(parsed)) {
|
|
53
|
+
num = parsed;
|
|
54
|
+
} else {
|
|
55
|
+
const date = new Date(trimmed);
|
|
56
|
+
if (isNaN(date.getTime())) return void 0;
|
|
57
|
+
num = Math.floor(date.getTime() / 1e3);
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
return void 0;
|
|
61
|
+
}
|
|
62
|
+
if (num > 1e10) {
|
|
63
|
+
num = Math.floor(num / 1e3);
|
|
64
|
+
}
|
|
65
|
+
if (num < 0) return void 0;
|
|
66
|
+
return num;
|
|
67
|
+
}
|
|
68
|
+
function preprocessNumeric(val) {
|
|
69
|
+
if (val === null || val === void 0) return void 0;
|
|
70
|
+
if (typeof val === "number") {
|
|
71
|
+
return isNaN(val) ? void 0 : val;
|
|
72
|
+
}
|
|
73
|
+
if (typeof val === "string") {
|
|
74
|
+
const trimmed = val.trim();
|
|
75
|
+
if (!trimmed) return void 0;
|
|
76
|
+
const parsed = Number(trimmed);
|
|
77
|
+
return isNaN(parsed) ? void 0 : parsed;
|
|
78
|
+
}
|
|
79
|
+
return void 0;
|
|
80
|
+
}
|
|
81
|
+
var KNOWN_ASSET_TYPES = /* @__PURE__ */ new Set([
|
|
82
|
+
"icon",
|
|
83
|
+
"background",
|
|
84
|
+
"emotion",
|
|
85
|
+
"user_icon",
|
|
86
|
+
"sound",
|
|
87
|
+
"video",
|
|
88
|
+
"custom",
|
|
89
|
+
"x-risu-asset"
|
|
90
|
+
]);
|
|
91
|
+
function preprocessAssetType(val) {
|
|
92
|
+
if (typeof val !== "string") return "custom";
|
|
93
|
+
return KNOWN_ASSET_TYPES.has(val) ? val : "custom";
|
|
94
|
+
}
|
|
43
95
|
var ISO8601Schema = import_zod.z.string().datetime();
|
|
44
96
|
var UUIDSchema = import_zod.z.string().uuid();
|
|
45
97
|
var SpecSchema = import_zod.z.enum(["v2", "v3"]);
|
|
@@ -62,16 +114,19 @@ var SourceFormatSchema = import_zod.z.enum([
|
|
|
62
114
|
// VoxPkg format
|
|
63
115
|
]);
|
|
64
116
|
var OriginalShapeSchema = import_zod.z.enum(["wrapped", "unwrapped", "legacy"]);
|
|
65
|
-
var AssetTypeSchema = import_zod.z.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
117
|
+
var AssetTypeSchema = import_zod.z.preprocess(
|
|
118
|
+
preprocessAssetType,
|
|
119
|
+
import_zod.z.enum([
|
|
120
|
+
"icon",
|
|
121
|
+
"background",
|
|
122
|
+
"emotion",
|
|
123
|
+
"user_icon",
|
|
124
|
+
"sound",
|
|
125
|
+
"video",
|
|
126
|
+
"custom",
|
|
127
|
+
"x-risu-asset"
|
|
128
|
+
])
|
|
129
|
+
);
|
|
75
130
|
var AssetDescriptorSchema = import_zod.z.object({
|
|
76
131
|
type: AssetTypeSchema,
|
|
77
132
|
uri: import_zod.z.string(),
|
|
@@ -100,13 +155,13 @@ var CCv2LorebookEntrySchema = import_zod2.z.object({
|
|
|
100
155
|
selective: import_zod2.z.boolean().nullable().optional(),
|
|
101
156
|
secondary_keys: import_zod2.z.array(import_zod2.z.string()).nullable().optional(),
|
|
102
157
|
constant: import_zod2.z.boolean().nullable().optional(),
|
|
103
|
-
position: import_zod2.z.union([import_zod2.z.enum(["before_char", "after_char"]), import_zod2.z.number().int(), import_zod2.z.literal("")]).nullable().optional()
|
|
158
|
+
position: import_zod2.z.union([import_zod2.z.enum(["before_char", "after_char", "in_chat"]), import_zod2.z.number().int(), import_zod2.z.literal("")]).nullable().optional()
|
|
104
159
|
}).passthrough();
|
|
105
160
|
var CCv2CharacterBookSchema = import_zod2.z.object({
|
|
106
161
|
name: import_zod2.z.string().optional(),
|
|
107
162
|
description: import_zod2.z.string().optional(),
|
|
108
|
-
scan_depth: import_zod2.z.number().int().nonnegative().optional(),
|
|
109
|
-
token_budget: import_zod2.z.number().int().nonnegative().optional(),
|
|
163
|
+
scan_depth: import_zod2.z.preprocess(preprocessNumeric, import_zod2.z.number().int().nonnegative().optional()),
|
|
164
|
+
token_budget: import_zod2.z.preprocess(preprocessNumeric, import_zod2.z.number().int().nonnegative().optional()),
|
|
110
165
|
recursive_scanning: import_zod2.z.boolean().optional(),
|
|
111
166
|
extensions: import_zod2.z.record(import_zod2.z.unknown()).optional(),
|
|
112
167
|
entries: import_zod2.z.array(CCv2LorebookEntrySchema)
|
|
@@ -167,7 +222,7 @@ var CCv3LorebookEntrySchema = import_zod3.z.object({
|
|
|
167
222
|
selective: import_zod3.z.boolean().nullable().optional(),
|
|
168
223
|
secondary_keys: import_zod3.z.array(import_zod3.z.string()).nullable().optional(),
|
|
169
224
|
constant: import_zod3.z.boolean().nullable().optional(),
|
|
170
|
-
position: import_zod3.z.union([import_zod3.z.enum(["before_char", "after_char"]), import_zod3.z.number().int(), import_zod3.z.literal("")]).nullable().optional(),
|
|
225
|
+
position: import_zod3.z.union([import_zod3.z.enum(["before_char", "after_char", "in_chat"]), import_zod3.z.number().int(), import_zod3.z.literal("")]).nullable().optional(),
|
|
171
226
|
extensions: import_zod3.z.record(import_zod3.z.unknown()).optional(),
|
|
172
227
|
// v3 specific - also lenient with types since SillyTavern uses numbers for enums
|
|
173
228
|
automation_id: import_zod3.z.string().optional(),
|
|
@@ -183,8 +238,8 @@ var CCv3LorebookEntrySchema = import_zod3.z.object({
|
|
|
183
238
|
var CCv3CharacterBookSchema = import_zod3.z.object({
|
|
184
239
|
name: import_zod3.z.string().optional(),
|
|
185
240
|
description: import_zod3.z.string().optional(),
|
|
186
|
-
scan_depth: import_zod3.z.number().int().nonnegative().optional(),
|
|
187
|
-
token_budget: import_zod3.z.number().int().nonnegative().optional(),
|
|
241
|
+
scan_depth: import_zod3.z.preprocess(preprocessNumeric, import_zod3.z.number().int().nonnegative().optional()),
|
|
242
|
+
token_budget: import_zod3.z.preprocess(preprocessNumeric, import_zod3.z.number().int().nonnegative().optional()),
|
|
188
243
|
recursive_scanning: import_zod3.z.boolean().optional(),
|
|
189
244
|
extensions: import_zod3.z.record(import_zod3.z.unknown()).optional(),
|
|
190
245
|
entries: import_zod3.z.array(CCv3LorebookEntrySchema)
|
|
@@ -216,10 +271,9 @@ var CCv3DataInnerSchema = import_zod3.z.object({
|
|
|
216
271
|
nickname: import_zod3.z.string().optional(),
|
|
217
272
|
creator_notes_multilingual: import_zod3.z.record(import_zod3.z.string()).optional(),
|
|
218
273
|
source: import_zod3.z.array(import_zod3.z.string()).optional(),
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
modification_date: import_zod3.z.number().int().nonnegative().optional()
|
|
222
|
-
// Unix timestamp in seconds
|
|
274
|
+
// Unix timestamps - preprocess to handle ISO strings, numeric strings, milliseconds
|
|
275
|
+
creation_date: import_zod3.z.preprocess(preprocessTimestamp, import_zod3.z.number().int().nonnegative().optional()),
|
|
276
|
+
modification_date: import_zod3.z.preprocess(preprocessTimestamp, import_zod3.z.number().int().nonnegative().optional())
|
|
223
277
|
});
|
|
224
278
|
var CCv3DataSchema = import_zod3.z.object({
|
|
225
279
|
spec: import_zod3.z.literal("chara_card_v3"),
|