@character-foundry/character-foundry 0.1.3 → 0.1.5

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 (100) hide show
  1. package/README.md +70 -0
  2. package/dist/app-framework.cjs +1742 -0
  3. package/dist/app-framework.cjs.map +1 -0
  4. package/dist/app-framework.d.cts +881 -0
  5. package/dist/app-framework.d.ts +881 -2
  6. package/dist/app-framework.js +1718 -1
  7. package/dist/app-framework.js.map +1 -1
  8. package/dist/charx.cjs +917 -0
  9. package/dist/charx.cjs.map +1 -0
  10. package/dist/charx.d.cts +640 -0
  11. package/dist/charx.d.ts +640 -2
  12. package/dist/charx.js +893 -1
  13. package/dist/charx.js.map +1 -1
  14. package/dist/core.cjs +668 -0
  15. package/dist/core.cjs.map +1 -0
  16. package/dist/core.d.cts +363 -0
  17. package/dist/core.d.ts +363 -2
  18. package/dist/core.js +644 -1
  19. package/dist/core.js.map +1 -1
  20. package/dist/exporter.cjs +7539 -0
  21. package/dist/exporter.cjs.map +1 -0
  22. package/dist/exporter.d.cts +681 -0
  23. package/dist/exporter.d.ts +681 -2
  24. package/dist/exporter.js +7522 -1
  25. package/dist/exporter.js.map +1 -1
  26. package/dist/federation.cjs +3915 -0
  27. package/dist/federation.cjs.map +1 -0
  28. package/dist/federation.d.cts +2951 -0
  29. package/dist/federation.d.ts +2951 -2
  30. package/dist/federation.js +3891 -1
  31. package/dist/federation.js.map +1 -1
  32. package/dist/index.cjs +9109 -0
  33. package/dist/index.cjs.map +1 -0
  34. package/dist/index.d.cts +1119 -0
  35. package/dist/index.d.ts +1113 -20
  36. package/dist/index.js +9092 -26
  37. package/dist/index.js.map +1 -1
  38. package/dist/loader.cjs +8923 -0
  39. package/dist/loader.cjs.map +1 -0
  40. package/dist/loader.d.cts +1037 -0
  41. package/dist/loader.d.ts +1037 -2
  42. package/dist/loader.js +8906 -1
  43. package/dist/loader.js.map +1 -1
  44. package/dist/lorebook.cjs +865 -0
  45. package/dist/lorebook.cjs.map +1 -0
  46. package/dist/lorebook.d.cts +1008 -0
  47. package/dist/lorebook.d.ts +1008 -2
  48. package/dist/lorebook.js +841 -1
  49. package/dist/lorebook.js.map +1 -1
  50. package/dist/media.cjs +6660 -0
  51. package/dist/media.cjs.map +1 -0
  52. package/dist/media.d.cts +87 -0
  53. package/dist/media.d.ts +87 -2
  54. package/dist/media.js +6643 -1
  55. package/dist/media.js.map +1 -1
  56. package/dist/normalizer.cjs +502 -0
  57. package/dist/normalizer.cjs.map +1 -0
  58. package/dist/normalizer.d.cts +1216 -0
  59. package/dist/normalizer.d.ts +1216 -2
  60. package/dist/normalizer.js +478 -1
  61. package/dist/normalizer.js.map +1 -1
  62. package/dist/png.cjs +778 -0
  63. package/dist/png.cjs.map +1 -0
  64. package/dist/png.d.cts +786 -0
  65. package/dist/png.d.ts +786 -2
  66. package/dist/png.js +754 -1
  67. package/dist/png.js.map +1 -1
  68. package/dist/schemas.cjs +799 -0
  69. package/dist/schemas.cjs.map +1 -0
  70. package/dist/schemas.d.cts +2178 -0
  71. package/dist/schemas.d.ts +2178 -2
  72. package/dist/schemas.js +775 -1
  73. package/dist/schemas.js.map +1 -1
  74. package/dist/tokenizers.cjs +153 -0
  75. package/dist/tokenizers.cjs.map +1 -0
  76. package/dist/tokenizers.d.cts +155 -0
  77. package/dist/tokenizers.d.ts +155 -2
  78. package/dist/tokenizers.js +129 -1
  79. package/dist/tokenizers.js.map +1 -1
  80. package/dist/voxta.cjs +7995 -0
  81. package/dist/voxta.cjs.map +1 -0
  82. package/dist/voxta.d.cts +1349 -0
  83. package/dist/voxta.d.ts +1349 -2
  84. package/dist/voxta.js +7978 -1
  85. package/dist/voxta.js.map +1 -1
  86. package/package.json +177 -45
  87. package/dist/app-framework.d.ts.map +0 -1
  88. package/dist/charx.d.ts.map +0 -1
  89. package/dist/core.d.ts.map +0 -1
  90. package/dist/exporter.d.ts.map +0 -1
  91. package/dist/federation.d.ts.map +0 -1
  92. package/dist/index.d.ts.map +0 -1
  93. package/dist/loader.d.ts.map +0 -1
  94. package/dist/lorebook.d.ts.map +0 -1
  95. package/dist/media.d.ts.map +0 -1
  96. package/dist/normalizer.d.ts.map +0 -1
  97. package/dist/png.d.ts.map +0 -1
  98. package/dist/schemas.d.ts.map +0 -1
  99. package/dist/tokenizers.d.ts.map +0 -1
  100. package/dist/voxta.d.ts.map +0 -1
@@ -1,2 +1,681 @@
1
- export * from '@character-foundry/exporter';
2
- //# sourceMappingURL=exporter.d.ts.map
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Binary Data Utilities
5
+ *
6
+ * Universal binary data operations using Uint8Array.
7
+ * Works in both Node.js and browser environments.
8
+ */
9
+ /**
10
+ * Universal binary data type (works in both environments)
11
+ */
12
+ export type BinaryData = Uint8Array;
13
+ declare const CCv3DataSchema: z.ZodObject<{
14
+ spec: z.ZodLiteral<"chara_card_v3">;
15
+ spec_version: z.ZodLiteral<"3.0">;
16
+ data: z.ZodObject<{
17
+ name: z.ZodDefault<z.ZodString>;
18
+ description: z.ZodDefault<z.ZodString>;
19
+ personality: z.ZodDefault<z.ZodNullable<z.ZodString>>;
20
+ scenario: z.ZodDefault<z.ZodString>;
21
+ first_mes: z.ZodDefault<z.ZodString>;
22
+ mes_example: z.ZodDefault<z.ZodNullable<z.ZodString>>;
23
+ creator: z.ZodDefault<z.ZodString>;
24
+ character_version: z.ZodDefault<z.ZodString>;
25
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
26
+ group_only_greetings: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
27
+ creator_notes: z.ZodOptional<z.ZodString>;
28
+ system_prompt: z.ZodOptional<z.ZodString>;
29
+ post_history_instructions: z.ZodOptional<z.ZodString>;
30
+ alternate_greetings: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
31
+ character_book: z.ZodNullable<z.ZodOptional<z.ZodObject<{
32
+ name: z.ZodOptional<z.ZodString>;
33
+ description: z.ZodOptional<z.ZodString>;
34
+ scan_depth: z.ZodOptional<z.ZodNumber>;
35
+ token_budget: z.ZodOptional<z.ZodNumber>;
36
+ recursive_scanning: z.ZodOptional<z.ZodBoolean>;
37
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
38
+ entries: z.ZodArray<z.ZodObject<{
39
+ keys: z.ZodArray<z.ZodString, "many">;
40
+ content: z.ZodString;
41
+ enabled: z.ZodBoolean;
42
+ insertion_order: z.ZodNumber;
43
+ case_sensitive: z.ZodOptional<z.ZodBoolean>;
44
+ name: z.ZodOptional<z.ZodString>;
45
+ priority: z.ZodOptional<z.ZodNumber>;
46
+ id: z.ZodOptional<z.ZodNumber>;
47
+ comment: z.ZodOptional<z.ZodString>;
48
+ selective: z.ZodOptional<z.ZodBoolean>;
49
+ secondary_keys: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
50
+ constant: z.ZodOptional<z.ZodBoolean>;
51
+ position: z.ZodOptional<z.ZodEnum<[
52
+ "before_char",
53
+ "after_char"
54
+ ]>>;
55
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
56
+ automation_id: z.ZodOptional<z.ZodString>;
57
+ role: z.ZodOptional<z.ZodEnum<[
58
+ "system",
59
+ "user",
60
+ "assistant"
61
+ ]>>;
62
+ group: z.ZodOptional<z.ZodString>;
63
+ scan_frequency: z.ZodOptional<z.ZodNumber>;
64
+ probability: z.ZodOptional<z.ZodNumber>;
65
+ use_regex: z.ZodOptional<z.ZodBoolean>;
66
+ depth: z.ZodOptional<z.ZodNumber>;
67
+ selective_logic: z.ZodOptional<z.ZodEnum<[
68
+ "AND",
69
+ "NOT"
70
+ ]>>;
71
+ }, "strip", z.ZodTypeAny, {
72
+ keys: string[];
73
+ content: string;
74
+ enabled: boolean;
75
+ insertion_order: number;
76
+ name?: string | undefined;
77
+ extensions?: Record<string, unknown> | undefined;
78
+ case_sensitive?: boolean | undefined;
79
+ priority?: number | undefined;
80
+ id?: number | undefined;
81
+ comment?: string | undefined;
82
+ selective?: boolean | undefined;
83
+ secondary_keys?: string[] | undefined;
84
+ constant?: boolean | undefined;
85
+ position?: "before_char" | "after_char" | undefined;
86
+ automation_id?: string | undefined;
87
+ role?: "system" | "user" | "assistant" | undefined;
88
+ group?: string | undefined;
89
+ scan_frequency?: number | undefined;
90
+ probability?: number | undefined;
91
+ use_regex?: boolean | undefined;
92
+ depth?: number | undefined;
93
+ selective_logic?: "AND" | "NOT" | undefined;
94
+ }, {
95
+ keys: string[];
96
+ content: string;
97
+ enabled: boolean;
98
+ insertion_order: number;
99
+ name?: string | undefined;
100
+ extensions?: Record<string, unknown> | undefined;
101
+ case_sensitive?: boolean | undefined;
102
+ priority?: number | undefined;
103
+ id?: number | undefined;
104
+ comment?: string | undefined;
105
+ selective?: boolean | undefined;
106
+ secondary_keys?: string[] | undefined;
107
+ constant?: boolean | undefined;
108
+ position?: "before_char" | "after_char" | undefined;
109
+ automation_id?: string | undefined;
110
+ role?: "system" | "user" | "assistant" | undefined;
111
+ group?: string | undefined;
112
+ scan_frequency?: number | undefined;
113
+ probability?: number | undefined;
114
+ use_regex?: boolean | undefined;
115
+ depth?: number | undefined;
116
+ selective_logic?: "AND" | "NOT" | undefined;
117
+ }>, "many">;
118
+ }, "strip", z.ZodTypeAny, {
119
+ entries: {
120
+ keys: string[];
121
+ content: string;
122
+ enabled: boolean;
123
+ insertion_order: number;
124
+ name?: string | undefined;
125
+ extensions?: Record<string, unknown> | undefined;
126
+ case_sensitive?: boolean | undefined;
127
+ priority?: number | undefined;
128
+ id?: number | undefined;
129
+ comment?: string | undefined;
130
+ selective?: boolean | undefined;
131
+ secondary_keys?: string[] | undefined;
132
+ constant?: boolean | undefined;
133
+ position?: "before_char" | "after_char" | undefined;
134
+ automation_id?: string | undefined;
135
+ role?: "system" | "user" | "assistant" | undefined;
136
+ group?: string | undefined;
137
+ scan_frequency?: number | undefined;
138
+ probability?: number | undefined;
139
+ use_regex?: boolean | undefined;
140
+ depth?: number | undefined;
141
+ selective_logic?: "AND" | "NOT" | undefined;
142
+ }[];
143
+ name?: string | undefined;
144
+ description?: string | undefined;
145
+ scan_depth?: number | undefined;
146
+ token_budget?: number | undefined;
147
+ recursive_scanning?: boolean | undefined;
148
+ extensions?: Record<string, unknown> | undefined;
149
+ }, {
150
+ entries: {
151
+ keys: string[];
152
+ content: string;
153
+ enabled: boolean;
154
+ insertion_order: number;
155
+ name?: string | undefined;
156
+ extensions?: Record<string, unknown> | undefined;
157
+ case_sensitive?: boolean | undefined;
158
+ priority?: number | undefined;
159
+ id?: number | undefined;
160
+ comment?: string | undefined;
161
+ selective?: boolean | undefined;
162
+ secondary_keys?: string[] | undefined;
163
+ constant?: boolean | undefined;
164
+ position?: "before_char" | "after_char" | undefined;
165
+ automation_id?: string | undefined;
166
+ role?: "system" | "user" | "assistant" | undefined;
167
+ group?: string | undefined;
168
+ scan_frequency?: number | undefined;
169
+ probability?: number | undefined;
170
+ use_regex?: boolean | undefined;
171
+ depth?: number | undefined;
172
+ selective_logic?: "AND" | "NOT" | undefined;
173
+ }[];
174
+ name?: string | undefined;
175
+ description?: string | undefined;
176
+ scan_depth?: number | undefined;
177
+ token_budget?: number | undefined;
178
+ recursive_scanning?: boolean | undefined;
179
+ extensions?: Record<string, unknown> | undefined;
180
+ }>>>;
181
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
182
+ assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
183
+ type: z.ZodEnum<[
184
+ "icon",
185
+ "background",
186
+ "emotion",
187
+ "user_icon",
188
+ "sound",
189
+ "video",
190
+ "custom",
191
+ "x-risu-asset"
192
+ ]>;
193
+ uri: z.ZodString;
194
+ name: z.ZodString;
195
+ ext: z.ZodString;
196
+ }, "strip", z.ZodTypeAny, {
197
+ name: string;
198
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
199
+ uri: string;
200
+ ext: string;
201
+ }, {
202
+ name: string;
203
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
204
+ uri: string;
205
+ ext: string;
206
+ }>, "many">>;
207
+ nickname: z.ZodOptional<z.ZodString>;
208
+ creator_notes_multilingual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
209
+ source: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
210
+ creation_date: z.ZodOptional<z.ZodNumber>;
211
+ modification_date: z.ZodOptional<z.ZodNumber>;
212
+ }, "strip", z.ZodTypeAny, {
213
+ name: string;
214
+ description: string;
215
+ personality: string | null;
216
+ scenario: string;
217
+ first_mes: string;
218
+ mes_example: string | null;
219
+ tags: string[];
220
+ creator: string;
221
+ character_version: string;
222
+ group_only_greetings: string[];
223
+ extensions?: Record<string, unknown> | undefined;
224
+ creator_notes?: string | undefined;
225
+ system_prompt?: string | undefined;
226
+ post_history_instructions?: string | undefined;
227
+ alternate_greetings?: string[] | undefined;
228
+ character_book?: {
229
+ entries: {
230
+ keys: string[];
231
+ content: string;
232
+ enabled: boolean;
233
+ insertion_order: number;
234
+ name?: string | undefined;
235
+ extensions?: Record<string, unknown> | undefined;
236
+ case_sensitive?: boolean | undefined;
237
+ priority?: number | undefined;
238
+ id?: number | undefined;
239
+ comment?: string | undefined;
240
+ selective?: boolean | undefined;
241
+ secondary_keys?: string[] | undefined;
242
+ constant?: boolean | undefined;
243
+ position?: "before_char" | "after_char" | undefined;
244
+ automation_id?: string | undefined;
245
+ role?: "system" | "user" | "assistant" | undefined;
246
+ group?: string | undefined;
247
+ scan_frequency?: number | undefined;
248
+ probability?: number | undefined;
249
+ use_regex?: boolean | undefined;
250
+ depth?: number | undefined;
251
+ selective_logic?: "AND" | "NOT" | undefined;
252
+ }[];
253
+ name?: string | undefined;
254
+ description?: string | undefined;
255
+ scan_depth?: number | undefined;
256
+ token_budget?: number | undefined;
257
+ recursive_scanning?: boolean | undefined;
258
+ extensions?: Record<string, unknown> | undefined;
259
+ } | null | undefined;
260
+ assets?: {
261
+ name: string;
262
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
263
+ uri: string;
264
+ ext: string;
265
+ }[] | undefined;
266
+ nickname?: string | undefined;
267
+ creator_notes_multilingual?: Record<string, string> | undefined;
268
+ source?: string[] | undefined;
269
+ creation_date?: number | undefined;
270
+ modification_date?: number | undefined;
271
+ }, {
272
+ name?: string | undefined;
273
+ description?: string | undefined;
274
+ extensions?: Record<string, unknown> | undefined;
275
+ personality?: string | null | undefined;
276
+ scenario?: string | undefined;
277
+ first_mes?: string | undefined;
278
+ mes_example?: string | null | undefined;
279
+ creator_notes?: string | undefined;
280
+ system_prompt?: string | undefined;
281
+ post_history_instructions?: string | undefined;
282
+ alternate_greetings?: string[] | undefined;
283
+ character_book?: {
284
+ entries: {
285
+ keys: string[];
286
+ content: string;
287
+ enabled: boolean;
288
+ insertion_order: number;
289
+ name?: string | undefined;
290
+ extensions?: Record<string, unknown> | undefined;
291
+ case_sensitive?: boolean | undefined;
292
+ priority?: number | undefined;
293
+ id?: number | undefined;
294
+ comment?: string | undefined;
295
+ selective?: boolean | undefined;
296
+ secondary_keys?: string[] | undefined;
297
+ constant?: boolean | undefined;
298
+ position?: "before_char" | "after_char" | undefined;
299
+ automation_id?: string | undefined;
300
+ role?: "system" | "user" | "assistant" | undefined;
301
+ group?: string | undefined;
302
+ scan_frequency?: number | undefined;
303
+ probability?: number | undefined;
304
+ use_regex?: boolean | undefined;
305
+ depth?: number | undefined;
306
+ selective_logic?: "AND" | "NOT" | undefined;
307
+ }[];
308
+ name?: string | undefined;
309
+ description?: string | undefined;
310
+ scan_depth?: number | undefined;
311
+ token_budget?: number | undefined;
312
+ recursive_scanning?: boolean | undefined;
313
+ extensions?: Record<string, unknown> | undefined;
314
+ } | null | undefined;
315
+ tags?: string[] | undefined;
316
+ creator?: string | undefined;
317
+ character_version?: string | undefined;
318
+ group_only_greetings?: string[] | undefined;
319
+ assets?: {
320
+ name: string;
321
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
322
+ uri: string;
323
+ ext: string;
324
+ }[] | undefined;
325
+ nickname?: string | undefined;
326
+ creator_notes_multilingual?: Record<string, string> | undefined;
327
+ source?: string[] | undefined;
328
+ creation_date?: number | undefined;
329
+ modification_date?: number | undefined;
330
+ }>;
331
+ }, "strip", z.ZodTypeAny, {
332
+ data: {
333
+ name: string;
334
+ description: string;
335
+ personality: string | null;
336
+ scenario: string;
337
+ first_mes: string;
338
+ mes_example: string | null;
339
+ tags: string[];
340
+ creator: string;
341
+ character_version: string;
342
+ group_only_greetings: string[];
343
+ extensions?: Record<string, unknown> | undefined;
344
+ creator_notes?: string | undefined;
345
+ system_prompt?: string | undefined;
346
+ post_history_instructions?: string | undefined;
347
+ alternate_greetings?: string[] | undefined;
348
+ character_book?: {
349
+ entries: {
350
+ keys: string[];
351
+ content: string;
352
+ enabled: boolean;
353
+ insertion_order: number;
354
+ name?: string | undefined;
355
+ extensions?: Record<string, unknown> | undefined;
356
+ case_sensitive?: boolean | undefined;
357
+ priority?: number | undefined;
358
+ id?: number | undefined;
359
+ comment?: string | undefined;
360
+ selective?: boolean | undefined;
361
+ secondary_keys?: string[] | undefined;
362
+ constant?: boolean | undefined;
363
+ position?: "before_char" | "after_char" | undefined;
364
+ automation_id?: string | undefined;
365
+ role?: "system" | "user" | "assistant" | undefined;
366
+ group?: string | undefined;
367
+ scan_frequency?: number | undefined;
368
+ probability?: number | undefined;
369
+ use_regex?: boolean | undefined;
370
+ depth?: number | undefined;
371
+ selective_logic?: "AND" | "NOT" | undefined;
372
+ }[];
373
+ name?: string | undefined;
374
+ description?: string | undefined;
375
+ scan_depth?: number | undefined;
376
+ token_budget?: number | undefined;
377
+ recursive_scanning?: boolean | undefined;
378
+ extensions?: Record<string, unknown> | undefined;
379
+ } | null | undefined;
380
+ assets?: {
381
+ name: string;
382
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
383
+ uri: string;
384
+ ext: string;
385
+ }[] | undefined;
386
+ nickname?: string | undefined;
387
+ creator_notes_multilingual?: Record<string, string> | undefined;
388
+ source?: string[] | undefined;
389
+ creation_date?: number | undefined;
390
+ modification_date?: number | undefined;
391
+ };
392
+ spec: "chara_card_v3";
393
+ spec_version: "3.0";
394
+ }, {
395
+ data: {
396
+ name?: string | undefined;
397
+ description?: string | undefined;
398
+ extensions?: Record<string, unknown> | undefined;
399
+ personality?: string | null | undefined;
400
+ scenario?: string | undefined;
401
+ first_mes?: string | undefined;
402
+ mes_example?: string | null | undefined;
403
+ creator_notes?: string | undefined;
404
+ system_prompt?: string | undefined;
405
+ post_history_instructions?: string | undefined;
406
+ alternate_greetings?: string[] | undefined;
407
+ character_book?: {
408
+ entries: {
409
+ keys: string[];
410
+ content: string;
411
+ enabled: boolean;
412
+ insertion_order: number;
413
+ name?: string | undefined;
414
+ extensions?: Record<string, unknown> | undefined;
415
+ case_sensitive?: boolean | undefined;
416
+ priority?: number | undefined;
417
+ id?: number | undefined;
418
+ comment?: string | undefined;
419
+ selective?: boolean | undefined;
420
+ secondary_keys?: string[] | undefined;
421
+ constant?: boolean | undefined;
422
+ position?: "before_char" | "after_char" | undefined;
423
+ automation_id?: string | undefined;
424
+ role?: "system" | "user" | "assistant" | undefined;
425
+ group?: string | undefined;
426
+ scan_frequency?: number | undefined;
427
+ probability?: number | undefined;
428
+ use_regex?: boolean | undefined;
429
+ depth?: number | undefined;
430
+ selective_logic?: "AND" | "NOT" | undefined;
431
+ }[];
432
+ name?: string | undefined;
433
+ description?: string | undefined;
434
+ scan_depth?: number | undefined;
435
+ token_budget?: number | undefined;
436
+ recursive_scanning?: boolean | undefined;
437
+ extensions?: Record<string, unknown> | undefined;
438
+ } | null | undefined;
439
+ tags?: string[] | undefined;
440
+ creator?: string | undefined;
441
+ character_version?: string | undefined;
442
+ group_only_greetings?: string[] | undefined;
443
+ assets?: {
444
+ name: string;
445
+ type: "custom" | "icon" | "background" | "emotion" | "user_icon" | "sound" | "video" | "x-risu-asset";
446
+ uri: string;
447
+ ext: string;
448
+ }[] | undefined;
449
+ nickname?: string | undefined;
450
+ creator_notes_multilingual?: Record<string, string> | undefined;
451
+ source?: string[] | undefined;
452
+ creation_date?: number | undefined;
453
+ modification_date?: number | undefined;
454
+ };
455
+ spec: "chara_card_v3";
456
+ spec_version: "3.0";
457
+ }>;
458
+ /**
459
+ * Character Card v3 full structure
460
+ */
461
+ export type CCv3Data = z.infer<typeof CCv3DataSchema>;
462
+ /**
463
+ * Exporter Types
464
+ *
465
+ * Types for the universal card exporter API.
466
+ */
467
+ /**
468
+ * Target export format
469
+ */
470
+ export type ExportFormat = "png" | "charx" | "voxta";
471
+ /**
472
+ * Asset to include in export
473
+ */
474
+ export interface ExportAsset {
475
+ /** Asset name/identifier */
476
+ name: string;
477
+ /** Asset type */
478
+ type: "icon" | "emotion" | "background" | "sound" | "data" | "custom";
479
+ /** File extension */
480
+ ext: string;
481
+ /** Binary data */
482
+ data: BinaryData;
483
+ /** Whether this is the main/primary asset (used for PNG embedding) */
484
+ isMain?: boolean;
485
+ /** Original path or source identifier (e.g., pngchunk:0) */
486
+ path?: string;
487
+ /** Additional tags for categorization */
488
+ tags?: string[];
489
+ }
490
+ /**
491
+ * Loss report for export
492
+ */
493
+ export interface ExportLossReport {
494
+ /** Fields that will be lost */
495
+ lostFields: string[];
496
+ /** Assets that cannot be exported */
497
+ lostAssets: string[];
498
+ /** Warnings about potential issues */
499
+ warnings: string[];
500
+ /** Target format */
501
+ targetFormat: ExportFormat;
502
+ /** Whether export is lossless */
503
+ isLossless: boolean;
504
+ }
505
+ /**
506
+ * Common export options
507
+ */
508
+ export interface ExportOptionsBase {
509
+ /** Whether to check for loss before export (default: true) */
510
+ checkLoss?: boolean;
511
+ /** Compression level for ZIP-based formats (0-9, default: 6) */
512
+ compressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
513
+ }
514
+ /**
515
+ * PNG export options
516
+ */
517
+ export interface PngExportOptions extends ExportOptionsBase {
518
+ /** Chunk key to use (default: 'chara' for v2 compat, 'ccv3' for v3) */
519
+ chunkKey?: "chara" | "ccv3" | "chara_card_v3";
520
+ /** Whether to use zTXt (compressed) chunk (default: true for large cards) */
521
+ useCompression?: boolean;
522
+ /** Export as v2 format for maximum compatibility (default: false) */
523
+ exportAsV2?: boolean;
524
+ }
525
+ /**
526
+ * CharX export options
527
+ */
528
+ export interface CharxExportOptions extends ExportOptionsBase {
529
+ /** Target spec: 'v3' = standard, 'risu' = include x_meta */
530
+ spec?: "v3" | "risu";
531
+ /** Include readme.txt (default: false) */
532
+ includeReadme?: boolean;
533
+ /** Emit x_meta for image assets (default: false, auto-enabled for risu spec) */
534
+ emitXMeta?: boolean;
535
+ /** Risu module.risum binary to include (opaque, preserved from read) */
536
+ moduleRisum?: BinaryData;
537
+ }
538
+ /**
539
+ * Voxta export options
540
+ */
541
+ export interface VoxtaExportOptions extends ExportOptionsBase {
542
+ /** Character ID to use (auto-generated if not provided) */
543
+ characterId?: string;
544
+ /** Package ID to use (auto-generated if not provided) */
545
+ packageId?: string;
546
+ /** Include package.json metadata (default: false) */
547
+ includePackageJson?: boolean;
548
+ }
549
+ /**
550
+ * Export options union
551
+ */
552
+ export type ExportOptions = PngExportOptions | CharxExportOptions | VoxtaExportOptions;
553
+ /**
554
+ * Result of exporting a card
555
+ */
556
+ export interface ExportResult {
557
+ /** The exported binary data */
558
+ buffer: BinaryData;
559
+ /** Target format that was used */
560
+ format: ExportFormat;
561
+ /** Suggested filename */
562
+ filename: string;
563
+ /** MIME type for the export */
564
+ mimeType: string;
565
+ /** Number of assets included */
566
+ assetCount: number;
567
+ /** Total size in bytes */
568
+ totalSize: number;
569
+ /** Loss report (if checkLoss was enabled) */
570
+ lossReport?: ExportLossReport;
571
+ }
572
+ /**
573
+ * Pre-export check result
574
+ */
575
+ export interface PreExportCheck {
576
+ /** Whether export can proceed */
577
+ canExport: boolean;
578
+ /** Loss report */
579
+ lossReport: ExportLossReport;
580
+ /** Suggested alternatives if current format has significant loss */
581
+ suggestedFormats?: ExportFormat[];
582
+ }
583
+ /**
584
+ * Universal Card Exporter
585
+ *
586
+ * Exports character cards to any supported format.
587
+ */
588
+ /**
589
+ * Options for exportCard function
590
+ */
591
+ export interface ExportCardOptions {
592
+ /** Target format */
593
+ format: ExportFormat;
594
+ /** Format-specific options */
595
+ png?: PngExportOptions;
596
+ charx?: CharxExportOptions;
597
+ voxta?: VoxtaExportOptions;
598
+ }
599
+ /**
600
+ * Export a character card to any supported format
601
+ *
602
+ * @param card - CCv3 card data to export
603
+ * @param assets - Assets to include in export
604
+ * @param options - Export options including target format
605
+ * @returns ExportResult with buffer and metadata
606
+ */
607
+ export declare function exportCard(card: CCv3Data, assets: ExportAsset[], options: ExportCardOptions): ExportResult;
608
+ /**
609
+ * Async version of exportCard
610
+ */
611
+ export declare function exportCardAsync(card: CCv3Data, assets: ExportAsset[], options: ExportCardOptions): Promise<ExportResult>;
612
+ /**
613
+ * Get supported export formats
614
+ */
615
+ export declare function getSupportedFormats(): ExportFormat[];
616
+ /**
617
+ * Get file extension for a format
618
+ */
619
+ export declare function getFormatExtension(format: ExportFormat): string;
620
+ /**
621
+ * Get MIME type for a format
622
+ */
623
+ export declare function getFormatMimeType(format: ExportFormat): string;
624
+ /**
625
+ * PNG Exporter
626
+ *
627
+ * Exports character cards to PNG format with embedded JSON.
628
+ */
629
+ /**
630
+ * Export card to PNG format
631
+ */
632
+ export declare function exportToPng(card: CCv3Data, assets: ExportAsset[], options?: PngExportOptions): ExportResult;
633
+ /**
634
+ * Async version of exportToPng
635
+ */
636
+ export declare function exportToPngAsync(card: CCv3Data, assets: ExportAsset[], options?: PngExportOptions): Promise<ExportResult>;
637
+ /**
638
+ * CharX Exporter
639
+ *
640
+ * Exports character cards to CharX (ZIP) format.
641
+ */
642
+ /**
643
+ * Export card to CharX format
644
+ */
645
+ export declare function exportToCharx(card: CCv3Data, assets: ExportAsset[], options?: CharxExportOptions): ExportResult;
646
+ /**
647
+ * Async version of exportToCharx
648
+ */
649
+ export declare function exportToCharxAsync(card: CCv3Data, assets: ExportAsset[], options?: CharxExportOptions): Promise<ExportResult>;
650
+ /**
651
+ * Voxta Exporter
652
+ *
653
+ * Exports character cards to Voxta (VoxPkg) format.
654
+ */
655
+ /**
656
+ * Export card to Voxta format
657
+ */
658
+ export declare function exportToVoxta(card: CCv3Data, assets: ExportAsset[], options?: VoxtaExportOptions): ExportResult;
659
+ /**
660
+ * Async version of exportToVoxta
661
+ */
662
+ export declare function exportToVoxtaAsync(card: CCv3Data, assets: ExportAsset[], options?: VoxtaExportOptions): Promise<ExportResult>;
663
+ /**
664
+ * Export Loss Checker
665
+ *
666
+ * Analyzes what data would be lost when exporting to different formats.
667
+ */
668
+ /**
669
+ * Check what would be lost when exporting to a specific format
670
+ */
671
+ export declare function checkExportLoss(card: CCv3Data, assets: ExportAsset[], targetFormat: ExportFormat): ExportLossReport;
672
+ /**
673
+ * Perform pre-export check and suggest alternatives
674
+ */
675
+ export declare function preExportCheck(card: CCv3Data, assets: ExportAsset[], targetFormat: ExportFormat): PreExportCheck;
676
+ /**
677
+ * Format a loss report as human-readable string
678
+ */
679
+ export declare function formatLossReport(report: ExportLossReport): string;
680
+
681
+ export {};