@character-foundry/character-foundry 0.4.3-dev.1766019473 → 0.4.3-dev.1767230557

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 (59) hide show
  1. package/dist/app-framework.cjs +12 -3
  2. package/dist/app-framework.cjs.map +1 -1
  3. package/dist/app-framework.d.cts +9 -1
  4. package/dist/app-framework.d.ts +9 -1
  5. package/dist/app-framework.js +12 -3
  6. package/dist/app-framework.js.map +1 -1
  7. package/dist/charx.cjs +72 -18
  8. package/dist/charx.cjs.map +1 -1
  9. package/dist/charx.d.cts +22 -22
  10. package/dist/charx.d.ts +22 -22
  11. package/dist/charx.js +72 -18
  12. package/dist/charx.js.map +1 -1
  13. package/dist/exporter.cjs +72 -18
  14. package/dist/exporter.cjs.map +1 -1
  15. package/dist/exporter.d.cts +19 -19
  16. package/dist/exporter.d.ts +19 -19
  17. package/dist/exporter.js +72 -18
  18. package/dist/exporter.js.map +1 -1
  19. package/dist/federation.d.cts +19 -19
  20. package/dist/federation.d.ts +19 -19
  21. package/dist/index.cjs +72 -18
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +29 -29
  24. package/dist/index.d.ts +29 -29
  25. package/dist/index.js +72 -18
  26. package/dist/index.js.map +1 -1
  27. package/dist/loader.cjs +72 -18
  28. package/dist/loader.cjs.map +1 -1
  29. package/dist/loader.d.cts +23 -23
  30. package/dist/loader.d.ts +23 -23
  31. package/dist/loader.js +72 -18
  32. package/dist/loader.js.map +1 -1
  33. package/dist/lorebook.d.cts +23 -23
  34. package/dist/lorebook.d.ts +23 -23
  35. package/dist/normalizer.cjs +72 -18
  36. package/dist/normalizer.cjs.map +1 -1
  37. package/dist/normalizer.d.cts +37 -37
  38. package/dist/normalizer.d.ts +37 -37
  39. package/dist/normalizer.js +72 -18
  40. package/dist/normalizer.js.map +1 -1
  41. package/dist/png.cjs +72 -18
  42. package/dist/png.cjs.map +1 -1
  43. package/dist/png.d.cts +25 -25
  44. package/dist/png.d.ts +25 -25
  45. package/dist/png.js +72 -18
  46. package/dist/png.js.map +1 -1
  47. package/dist/schemas.cjs +75 -18
  48. package/dist/schemas.cjs.map +1 -1
  49. package/dist/schemas.d.cts +85 -67
  50. package/dist/schemas.d.ts +85 -67
  51. package/dist/schemas.js +75 -18
  52. package/dist/schemas.js.map +1 -1
  53. package/dist/voxta.cjs +72 -18
  54. package/dist/voxta.cjs.map +1 -1
  55. package/dist/voxta.d.cts +23 -23
  56. package/dist/voxta.d.ts +23 -23
  57. package/dist/voxta.js +72 -18
  58. package/dist/voxta.js.map +1 -1
  59. package/package.json +24 -24
package/dist/exporter.cjs CHANGED
@@ -216,6 +216,58 @@ var import_zod = require("zod");
216
216
  var import_zod2 = require("zod");
217
217
  var import_zod3 = require("zod");
218
218
  var import_zod4 = require("zod");
219
+ function preprocessTimestamp(val) {
220
+ if (val === null || val === void 0) return void 0;
221
+ let num;
222
+ if (typeof val === "number") {
223
+ num = val;
224
+ } else if (typeof val === "string") {
225
+ const trimmed = val.trim();
226
+ if (!trimmed) return void 0;
227
+ const parsed = Number(trimmed);
228
+ if (!isNaN(parsed)) {
229
+ num = parsed;
230
+ } else {
231
+ const date = new Date(trimmed);
232
+ if (isNaN(date.getTime())) return void 0;
233
+ num = Math.floor(date.getTime() / 1e3);
234
+ }
235
+ } else {
236
+ return void 0;
237
+ }
238
+ if (num > 1e10) {
239
+ num = Math.floor(num / 1e3);
240
+ }
241
+ if (num < 0) return void 0;
242
+ return num;
243
+ }
244
+ function preprocessNumeric(val) {
245
+ if (val === null || val === void 0) return void 0;
246
+ if (typeof val === "number") {
247
+ return isNaN(val) ? void 0 : val;
248
+ }
249
+ if (typeof val === "string") {
250
+ const trimmed = val.trim();
251
+ if (!trimmed) return void 0;
252
+ const parsed = Number(trimmed);
253
+ return isNaN(parsed) ? void 0 : parsed;
254
+ }
255
+ return void 0;
256
+ }
257
+ var KNOWN_ASSET_TYPES = /* @__PURE__ */ new Set([
258
+ "icon",
259
+ "background",
260
+ "emotion",
261
+ "user_icon",
262
+ "sound",
263
+ "video",
264
+ "custom",
265
+ "x-risu-asset"
266
+ ]);
267
+ function preprocessAssetType(val) {
268
+ if (typeof val !== "string") return "custom";
269
+ return KNOWN_ASSET_TYPES.has(val) ? val : "custom";
270
+ }
219
271
  var ISO8601Schema = import_zod.z.string().datetime();
220
272
  var UUIDSchema = import_zod.z.string().uuid();
221
273
  var SpecSchema = import_zod.z.enum(["v2", "v3"]);
@@ -238,16 +290,19 @@ var SourceFormatSchema = import_zod.z.enum([
238
290
  // VoxPkg format
239
291
  ]);
240
292
  var OriginalShapeSchema = import_zod.z.enum(["wrapped", "unwrapped", "legacy"]);
241
- var AssetTypeSchema = import_zod.z.enum([
242
- "icon",
243
- "background",
244
- "emotion",
245
- "user_icon",
246
- "sound",
247
- "video",
248
- "custom",
249
- "x-risu-asset"
250
- ]);
293
+ var AssetTypeSchema = import_zod.z.preprocess(
294
+ preprocessAssetType,
295
+ import_zod.z.enum([
296
+ "icon",
297
+ "background",
298
+ "emotion",
299
+ "user_icon",
300
+ "sound",
301
+ "video",
302
+ "custom",
303
+ "x-risu-asset"
304
+ ])
305
+ );
251
306
  var AssetDescriptorSchema = import_zod.z.object({
252
307
  type: AssetTypeSchema,
253
308
  uri: import_zod.z.string(),
@@ -281,8 +336,8 @@ var CCv2LorebookEntrySchema = import_zod2.z.object({
281
336
  var CCv2CharacterBookSchema = import_zod2.z.object({
282
337
  name: import_zod2.z.string().optional(),
283
338
  description: import_zod2.z.string().optional(),
284
- scan_depth: import_zod2.z.number().int().nonnegative().optional(),
285
- token_budget: import_zod2.z.number().int().nonnegative().optional(),
339
+ scan_depth: import_zod2.z.preprocess(preprocessNumeric, import_zod2.z.number().int().nonnegative().optional()),
340
+ token_budget: import_zod2.z.preprocess(preprocessNumeric, import_zod2.z.number().int().nonnegative().optional()),
286
341
  recursive_scanning: import_zod2.z.boolean().optional(),
287
342
  extensions: import_zod2.z.record(import_zod2.z.unknown()).optional(),
288
343
  entries: import_zod2.z.array(CCv2LorebookEntrySchema)
@@ -345,8 +400,8 @@ var CCv3LorebookEntrySchema = import_zod3.z.object({
345
400
  var CCv3CharacterBookSchema = import_zod3.z.object({
346
401
  name: import_zod3.z.string().optional(),
347
402
  description: import_zod3.z.string().optional(),
348
- scan_depth: import_zod3.z.number().int().nonnegative().optional(),
349
- token_budget: import_zod3.z.number().int().nonnegative().optional(),
403
+ scan_depth: import_zod3.z.preprocess(preprocessNumeric, import_zod3.z.number().int().nonnegative().optional()),
404
+ token_budget: import_zod3.z.preprocess(preprocessNumeric, import_zod3.z.number().int().nonnegative().optional()),
350
405
  recursive_scanning: import_zod3.z.boolean().optional(),
351
406
  extensions: import_zod3.z.record(import_zod3.z.unknown()).optional(),
352
407
  entries: import_zod3.z.array(CCv3LorebookEntrySchema)
@@ -378,10 +433,9 @@ var CCv3DataInnerSchema = import_zod3.z.object({
378
433
  nickname: import_zod3.z.string().optional(),
379
434
  creator_notes_multilingual: import_zod3.z.record(import_zod3.z.string()).optional(),
380
435
  source: import_zod3.z.array(import_zod3.z.string()).optional(),
381
- creation_date: import_zod3.z.number().int().nonnegative().optional(),
382
- // Unix timestamp in seconds
383
- modification_date: import_zod3.z.number().int().nonnegative().optional()
384
- // Unix timestamp in seconds
436
+ // Unix timestamps - preprocess to handle ISO strings, numeric strings, milliseconds
437
+ creation_date: import_zod3.z.preprocess(preprocessTimestamp, import_zod3.z.number().int().nonnegative().optional()),
438
+ modification_date: import_zod3.z.preprocess(preprocessTimestamp, import_zod3.z.number().int().nonnegative().optional())
385
439
  });
386
440
  var CCv3DataSchema = import_zod3.z.object({
387
441
  spec: import_zod3.z.literal("chara_card_v3"),