aidol 0.9.0 → 0.11.0

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 (49) hide show
  1. package/dist/claimToken-Deg8CW5f.js +2 -0
  2. package/dist/claimToken-Deg8CW5f.js.map +1 -0
  3. package/dist/claimToken-hV5GtEQf.mjs +117 -0
  4. package/dist/claimToken-hV5GtEQf.mjs.map +1 -0
  5. package/dist/client.cjs +14 -1
  6. package/dist/client.cjs.map +1 -1
  7. package/dist/client.d.ts +17 -0
  8. package/dist/client.d.ts.map +1 -1
  9. package/dist/client.js +1955 -614
  10. package/dist/client.js.map +1 -1
  11. package/dist/components/landing/HeroSection.d.ts +4 -1
  12. package/dist/components/landing/HeroSection.d.ts.map +1 -1
  13. package/dist/i18n/translations.d.ts +72 -0
  14. package/dist/i18n/translations.d.ts.map +1 -1
  15. package/dist/index.cjs +37 -37
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.ts +2 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +293 -244
  20. package/dist/index.js.map +1 -1
  21. package/dist/isChromatic-5i32AXac-BWePUv7P.js +2 -0
  22. package/dist/isChromatic-5i32AXac-BWePUv7P.js.map +1 -0
  23. package/dist/isChromatic-5i32AXac-CtZ5BKgh.mjs +8 -0
  24. package/dist/isChromatic-5i32AXac-CtZ5BKgh.mjs.map +1 -0
  25. package/dist/lib/assertResourceId.d.ts +6 -0
  26. package/dist/lib/assertResourceId.d.ts.map +1 -0
  27. package/dist/lib/claimToken.d.ts +3 -0
  28. package/dist/lib/claimToken.d.ts.map +1 -0
  29. package/dist/lottie-react.esm-DEs_dZjs.js +257 -0
  30. package/dist/lottie-react.esm-DEs_dZjs.js.map +1 -0
  31. package/dist/lottie-react.esm-SvLDd70e.mjs +5949 -0
  32. package/dist/lottie-react.esm-SvLDd70e.mjs.map +1 -0
  33. package/dist/repositories/AIdolRepository.d.ts +21 -8
  34. package/dist/repositories/AIdolRepository.d.ts.map +1 -1
  35. package/dist/repositories/CompanionRepository.d.ts +25 -5
  36. package/dist/repositories/CompanionRepository.d.ts.map +1 -1
  37. package/dist/repositories/index.d.ts +0 -1
  38. package/dist/repositories/index.d.ts.map +1 -1
  39. package/dist/schemas/aidol.d.ts +20 -0
  40. package/dist/schemas/aidol.d.ts.map +1 -1
  41. package/dist/schemas/index.d.ts +2 -2
  42. package/dist/schemas/index.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/dist/aidol-CUuPOg12.mjs +0 -37
  45. package/dist/aidol-CUuPOg12.mjs.map +0 -1
  46. package/dist/aidol-CqvBUwd0.js +0 -2
  47. package/dist/aidol-CqvBUwd0.js.map +0 -1
  48. package/dist/repositories/MockCompanionRepository.d.ts +0 -13
  49. package/dist/repositories/MockCompanionRepository.d.ts.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use strict";const e=require("zod"),m=e.z.object({id:e.z.string(),name:e.z.string().nullable(),email:e.z.string().nullable().optional(),greeting:e.z.string().nullable().optional(),concept:e.z.string().nullable().optional(),profileImageUrl:e.z.string().nullable(),createdAt:e.z.string(),updatedAt:e.z.string()}),c=e.z.object({id:e.z.string()}),s=e.z.object({name:e.z.string().min(1,"creation.memberNameRequired"),personality:e.z.string().optional(),systemPrompt:e.z.string().optional()}),u=e.z.object({groupName:e.z.string().min(1,"creation.groupNameRequired"),concept:e.z.string().optional(),profileImageUrl:e.z.string().min(1,"creation.emblemRequired"),members:e.z.array(s).min(1,"creation.memberRequired").refine(n=>n.some(t=>t.name.trim()!==""),{message:"creation.memberRequired"})});e.z.object({prompt:e.z.string().max(200)});const g=e.z.object({imageUrl:e.z.string(),width:e.z.number(),height:e.z.number(),format:e.z.string()}),p=e.z.object({data:g}),d=["mainVocal","subVocal","mainDancer","subDancer","mainRapper","subRapper"],b=e.z.object({vocal:e.z.number(),dance:e.z.number(),rap:e.z.number(),visual:e.z.number(),stamina:e.z.number(),charm:e.z.number()}),z=e.z.object({id:e.z.string(),aidolId:e.z.string().nullable().optional(),name:e.z.string().nullable().optional(),biography:e.z.string().nullable().optional(),profilePictureUrl:e.z.string().nullable().optional(),grade:e.z.enum(["A","B","C","F"]).nullable().optional(),position:e.z.enum(["mainVocal","subVocal","mainDancer","subDancer","mainRapper","subRapper"]).nullable().optional(),mbti:e.z.string().nullable().optional(),gender:e.z.enum(["male","female"]).nullable().optional(),stats:b.optional(),createdAt:e.z.string(),updatedAt:e.z.string()}),S=e.z.object({aidolId:e.z.string(),email:e.z.string()});let i;const h=new Uint8Array(16);function y(){if(!i&&(i=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!i))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return i(h)}const a=[];for(let n=0;n<256;++n)a.push((n+256).toString(16).slice(1));function R(n,t=0){return a[n[t+0]]+a[n[t+1]]+a[n[t+2]]+a[n[t+3]]+"-"+a[n[t+4]]+a[n[t+5]]+"-"+a[n[t+6]]+a[n[t+7]]+"-"+a[n[t+8]]+a[n[t+9]]+"-"+a[n[t+10]]+a[n[t+11]]+a[n[t+12]]+a[n[t+13]]+a[n[t+14]]+a[n[t+15]]}const I=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),l={randomUUID:I};function U(n,t,D){if(l.randomUUID&&!n)return l.randomUUID();n=n||{};const o=n.random||(n.rng||y)();return o[6]=o[6]&15|64,o[8]=o[8]&63|128,R(o)}const r="aidol_claim_token",C=()=>typeof window>"u"?null:localStorage.getItem(r),j=()=>{if(typeof window>"u")throw new Error("getOrCreateClaimToken can only be called on the client side.");const n=localStorage.getItem(r);if(n)return n;const t=U();return localStorage.setItem(r,t),t};exports.POSITIONS=d;exports.aidolCreateResponseSchema=c;exports.aidolSchema=m;exports.companionSchema=z;exports.getClaimToken=C;exports.getOrCreateClaimToken=j;exports.groupCreationSchema=u;exports.imageGenerationResponseSchema=p;exports.leadResponseSchema=S;
2
+ //# sourceMappingURL=claimToken-Deg8CW5f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claimToken-Deg8CW5f.js","sources":["../src/schemas/aidol.ts","../src/schemas/companion.ts","../src/schemas/lead.ts","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/lib/claimToken.ts"],"sourcesContent":["/**\n * AIdol (group) schemas\n * Matches backend aidol/schemas/aidol.py definitions (Public only for MVP)\n */\n\nimport type { BaseRecord } from \"@aioia/core\";\nimport { z } from \"zod\";\n\nimport type { Companion } from \"./companion\";\n\n/**\n * AIdol schema (public fields only, excludes claim_token)\n * Matches backend AIdolPublic (aidol/schemas/aidol.py)\n */\nexport const aidolSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n email: z.string().nullable().optional(),\n greeting: z.string().nullable().optional(),\n concept: z.string().nullable().optional(),\n profileImageUrl: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport interface AIdol extends BaseRecord {\n id: string;\n name: string | null;\n email?: string | null;\n greeting?: string | null;\n concept?: string | null;\n profileImageUrl: string | null;\n createdAt: string;\n updatedAt: string;\n companions?: Companion[];\n}\n\n/**\n * Schema for AIdol creation response (backend returns only id)\n */\nexport const aidolCreateResponseSchema = z.object({\n id: z.string(),\n});\n\nexport type AIdolCreateResponse = z.infer<typeof aidolCreateResponseSchema>;\n\n/**\n * Schema for creating an AIdol group\n * claimToken is optional for anonymous ownership verification\n */\nexport interface AIdolCreate {\n name: string;\n concept?: string | null;\n profileImageUrl: string;\n claimToken?: string | null;\n}\n\n/**\n * Schema for updating an AIdol group\n */\nexport interface AIdolUpdate {\n name?: string;\n concept?: string | null;\n profileImageUrl?: string | null;\n}\n\n/**\n * Member draft schema for group creation form\n */\nexport const memberDraftSchema = z.object({\n name: z.string().min(1, \"creation.memberNameRequired\"),\n personality: z.string().optional(),\n systemPrompt: z.string().optional(),\n});\n\nexport type MemberDraft = z.infer<typeof memberDraftSchema>;\n\n/**\n * Group creation form schema (react-hook-form + zod)\n */\nexport const groupCreationSchema = z.object({\n groupName: z.string().min(1, \"creation.groupNameRequired\"),\n concept: z.string().optional(),\n profileImageUrl: z.string().min(1, \"creation.emblemRequired\"),\n members: z\n .array(memberDraftSchema)\n .min(1, \"creation.memberRequired\")\n .refine((members) => members.some((m) => m.name.trim() !== \"\"), {\n message: \"creation.memberRequired\",\n }),\n});\n\nexport type GroupCreationFormData = z.infer<typeof groupCreationSchema>;\n\n// ---------------------------------------------------------------------------\n// Image Generation\n// ---------------------------------------------------------------------------\n\n/**\n * Request schema for image generation\n */\nexport const imageGenerationRequestSchema = z.object({\n prompt: z.string().max(200),\n});\n\nexport type ImageGenerationRequest = z.infer<\n typeof imageGenerationRequestSchema\n>;\n\n/**\n * Image generation result data\n */\nexport const imageGenerationDataSchema = z.object({\n imageUrl: z.string(),\n width: z.number(),\n height: z.number(),\n format: z.string(),\n});\n\nexport type ImageGenerationData = z.infer<typeof imageGenerationDataSchema>;\n\n/**\n * Response schema for image generation\n */\nexport const imageGenerationResponseSchema = z.object({\n data: imageGenerationDataSchema,\n});\n\nexport type ImageGenerationResponse = z.infer<\n typeof imageGenerationResponseSchema\n>;\n","/**\n * Companion (member) schemas\n * Matches backend aidol/schemas/companion.py definitions (Public only for MVP)\n */\n\nimport type { BaseRecord } from \"@aioia/core\";\nimport { z } from \"zod\";\n\nexport const POSITIONS = [\n \"mainVocal\",\n \"subVocal\",\n \"mainDancer\",\n \"subDancer\",\n \"mainRapper\",\n \"subRapper\",\n] as const;\n\nexport type Position = (typeof POSITIONS)[number];\n\nexport type Gender = \"male\" | \"female\";\n\nexport type Grade = \"A\" | \"B\" | \"C\" | \"F\";\n\nexport interface CompanionStats {\n vocal: number;\n dance: number;\n rap: number;\n visual: number;\n stamina: number;\n charm: number;\n}\n\nconst companionStatsSchema = z.object({\n vocal: z.number(),\n dance: z.number(),\n rap: z.number(),\n visual: z.number(),\n stamina: z.number(),\n charm: z.number(),\n});\n\n/**\n * Companion schema (public fields only, excludes system_prompt)\n */\nexport const companionSchema = z.object({\n id: z.string(),\n aidolId: z.string().nullable().optional(),\n name: z.string().nullable().optional(),\n biography: z.string().nullable().optional(),\n profilePictureUrl: z.string().nullable().optional(),\n grade: z.enum([\"A\", \"B\", \"C\", \"F\"]).nullable().optional(),\n position: z\n .enum([\n \"mainVocal\",\n \"subVocal\",\n \"mainDancer\",\n \"subDancer\",\n \"mainRapper\",\n \"subRapper\",\n ])\n .nullable()\n .optional(),\n mbti: z.string().nullable().optional(),\n gender: z.enum([\"male\", \"female\"]).nullable().optional(),\n stats: companionStatsSchema.optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport interface Companion extends BaseRecord {\n id: string;\n aidolId?: string | null;\n name?: string | null;\n biography?: string | null;\n profilePictureUrl?: string | null;\n grade?: Grade | null;\n position?: Position | null;\n mbti?: string | null;\n gender?: Gender | null;\n stats?: CompanionStats;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Schema for creating a Companion\n * Includes systemPrompt for creation (excluded from response)\n */\nexport interface CompanionCreate {\n aidolId?: string | null;\n name: string;\n biography?: string | null;\n profilePictureUrl?: string | null;\n systemPrompt?: string | null;\n}\n\n/**\n * Schema for updating a Companion\n */\nexport interface CompanionUpdate {\n aidolId?: string | null;\n name?: string;\n biography?: string | null;\n profilePictureUrl?: string | null;\n systemPrompt?: string | null;\n position?: Position | null;\n gender?: Gender | null;\n mbtiEnergy?: number;\n mbtiPerception?: number;\n mbtiJudgment?: number;\n mbtiLifestyle?: number;\n}\n","/**\n * Lead schemas\n * Matches backend aidol/schemas/aidol_lead.py definitions\n */\n\nimport { z } from \"zod\";\n\n/**\n * Lead request schema\n */\nexport interface LeadRequest {\n aidolId: string;\n email: string;\n}\n\n/**\n * Lead response schema\n */\nexport const leadResponseSchema = z.object({\n aidolId: z.string(),\n email: z.string(),\n});\n\nexport type LeadResponse = z.infer<typeof leadResponseSchema>;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from \"uuid\";\n\nconst STORAGE_KEY = \"aidol_claim_token\";\n\nexport const getClaimToken = (): string | null => {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(STORAGE_KEY);\n};\n\nexport const getOrCreateClaimToken = (): string => {\n if (typeof window === \"undefined\") {\n throw new Error(\n \"getOrCreateClaimToken can only be called on the client side.\",\n );\n }\n const existing = localStorage.getItem(STORAGE_KEY);\n if (existing) return existing;\n\n const token = uuidv4();\n localStorage.setItem(STORAGE_KEY, token);\n return token;\n};\n"],"names":["aidolSchema","z","aidolCreateResponseSchema","memberDraftSchema","groupCreationSchema","members","m","imageGenerationDataSchema","imageGenerationResponseSchema","POSITIONS","companionStatsSchema","companionSchema","leadResponseSchema","getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","offset","randomUUID","native","v4","options","buf","rnds","STORAGE_KEY","getClaimToken","getOrCreateClaimToken","existing","token","uuidv4"],"mappings":"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","x_google_ignoreList":[3,4,5,6]}
@@ -0,0 +1,117 @@
1
+ import { z as e } from "zod";
2
+ const S = e.object({
3
+ id: e.string(),
4
+ name: e.string().nullable(),
5
+ email: e.string().nullable().optional(),
6
+ greeting: e.string().nullable().optional(),
7
+ concept: e.string().nullable().optional(),
8
+ profileImageUrl: e.string().nullable(),
9
+ createdAt: e.string(),
10
+ updatedAt: e.string()
11
+ }), R = e.object({
12
+ id: e.string()
13
+ }), m = e.object({
14
+ name: e.string().min(1, "creation.memberNameRequired"),
15
+ personality: e.string().optional(),
16
+ systemPrompt: e.string().optional()
17
+ }), U = e.object({
18
+ groupName: e.string().min(1, "creation.groupNameRequired"),
19
+ concept: e.string().optional(),
20
+ profileImageUrl: e.string().min(1, "creation.emblemRequired"),
21
+ members: e.array(m).min(1, "creation.memberRequired").refine((n) => n.some((t) => t.name.trim() !== ""), {
22
+ message: "creation.memberRequired"
23
+ })
24
+ });
25
+ e.object({
26
+ prompt: e.string().max(200)
27
+ });
28
+ const c = e.object({
29
+ imageUrl: e.string(),
30
+ width: e.number(),
31
+ height: e.number(),
32
+ format: e.string()
33
+ }), I = e.object({
34
+ data: c
35
+ }), j = [
36
+ "mainVocal",
37
+ "subVocal",
38
+ "mainDancer",
39
+ "subDancer",
40
+ "mainRapper",
41
+ "subRapper"
42
+ ], s = e.object({
43
+ vocal: e.number(),
44
+ dance: e.number(),
45
+ rap: e.number(),
46
+ visual: e.number(),
47
+ stamina: e.number(),
48
+ charm: e.number()
49
+ }), D = e.object({
50
+ id: e.string(),
51
+ aidolId: e.string().nullable().optional(),
52
+ name: e.string().nullable().optional(),
53
+ biography: e.string().nullable().optional(),
54
+ profilePictureUrl: e.string().nullable().optional(),
55
+ grade: e.enum(["A", "B", "C", "F"]).nullable().optional(),
56
+ position: e.enum([
57
+ "mainVocal",
58
+ "subVocal",
59
+ "mainDancer",
60
+ "subDancer",
61
+ "mainRapper",
62
+ "subRapper"
63
+ ]).nullable().optional(),
64
+ mbti: e.string().nullable().optional(),
65
+ gender: e.enum(["male", "female"]).nullable().optional(),
66
+ stats: s.optional(),
67
+ createdAt: e.string(),
68
+ updatedAt: e.string()
69
+ }), w = e.object({
70
+ aidolId: e.string(),
71
+ email: e.string()
72
+ });
73
+ let i;
74
+ const u = new Uint8Array(16);
75
+ function g() {
76
+ if (!i && (i = typeof crypto < "u" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto), !i))
77
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
78
+ return i(u);
79
+ }
80
+ const a = [];
81
+ for (let n = 0; n < 256; ++n)
82
+ a.push((n + 256).toString(16).slice(1));
83
+ function p(n, t = 0) {
84
+ return a[n[t + 0]] + a[n[t + 1]] + a[n[t + 2]] + a[n[t + 3]] + "-" + a[n[t + 4]] + a[n[t + 5]] + "-" + a[n[t + 6]] + a[n[t + 7]] + "-" + a[n[t + 8]] + a[n[t + 9]] + "-" + a[n[t + 10]] + a[n[t + 11]] + a[n[t + 12]] + a[n[t + 13]] + a[n[t + 14]] + a[n[t + 15]];
85
+ }
86
+ const d = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), l = {
87
+ randomUUID: d
88
+ };
89
+ function b(n, t, y) {
90
+ if (l.randomUUID && !n)
91
+ return l.randomUUID();
92
+ n = n || {};
93
+ const o = n.random || (n.rng || g)();
94
+ return o[6] = o[6] & 15 | 64, o[8] = o[8] & 63 | 128, p(o);
95
+ }
96
+ const r = "aidol_claim_token", x = () => typeof window > "u" ? null : localStorage.getItem(r), C = () => {
97
+ if (typeof window > "u")
98
+ throw new Error(
99
+ "getOrCreateClaimToken can only be called on the client side."
100
+ );
101
+ const n = localStorage.getItem(r);
102
+ if (n) return n;
103
+ const t = b();
104
+ return localStorage.setItem(r, t), t;
105
+ };
106
+ export {
107
+ j as P,
108
+ S as a,
109
+ R as b,
110
+ D as c,
111
+ U as d,
112
+ C as e,
113
+ x as g,
114
+ I as i,
115
+ w as l
116
+ };
117
+ //# sourceMappingURL=claimToken-hV5GtEQf.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claimToken-hV5GtEQf.mjs","sources":["../src/schemas/aidol.ts","../src/schemas/companion.ts","../src/schemas/lead.ts","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/native.js","../node_modules/uuid/dist/esm-browser/v4.js","../src/lib/claimToken.ts"],"sourcesContent":["/**\n * AIdol (group) schemas\n * Matches backend aidol/schemas/aidol.py definitions (Public only for MVP)\n */\n\nimport type { BaseRecord } from \"@aioia/core\";\nimport { z } from \"zod\";\n\nimport type { Companion } from \"./companion\";\n\n/**\n * AIdol schema (public fields only, excludes claim_token)\n * Matches backend AIdolPublic (aidol/schemas/aidol.py)\n */\nexport const aidolSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n email: z.string().nullable().optional(),\n greeting: z.string().nullable().optional(),\n concept: z.string().nullable().optional(),\n profileImageUrl: z.string().nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport interface AIdol extends BaseRecord {\n id: string;\n name: string | null;\n email?: string | null;\n greeting?: string | null;\n concept?: string | null;\n profileImageUrl: string | null;\n createdAt: string;\n updatedAt: string;\n companions?: Companion[];\n}\n\n/**\n * Schema for AIdol creation response (backend returns only id)\n */\nexport const aidolCreateResponseSchema = z.object({\n id: z.string(),\n});\n\nexport type AIdolCreateResponse = z.infer<typeof aidolCreateResponseSchema>;\n\n/**\n * Schema for creating an AIdol group\n * claimToken is optional for anonymous ownership verification\n */\nexport interface AIdolCreate {\n name: string;\n concept?: string | null;\n profileImageUrl: string;\n claimToken?: string | null;\n}\n\n/**\n * Schema for updating an AIdol group\n */\nexport interface AIdolUpdate {\n name?: string;\n concept?: string | null;\n profileImageUrl?: string | null;\n}\n\n/**\n * Member draft schema for group creation form\n */\nexport const memberDraftSchema = z.object({\n name: z.string().min(1, \"creation.memberNameRequired\"),\n personality: z.string().optional(),\n systemPrompt: z.string().optional(),\n});\n\nexport type MemberDraft = z.infer<typeof memberDraftSchema>;\n\n/**\n * Group creation form schema (react-hook-form + zod)\n */\nexport const groupCreationSchema = z.object({\n groupName: z.string().min(1, \"creation.groupNameRequired\"),\n concept: z.string().optional(),\n profileImageUrl: z.string().min(1, \"creation.emblemRequired\"),\n members: z\n .array(memberDraftSchema)\n .min(1, \"creation.memberRequired\")\n .refine((members) => members.some((m) => m.name.trim() !== \"\"), {\n message: \"creation.memberRequired\",\n }),\n});\n\nexport type GroupCreationFormData = z.infer<typeof groupCreationSchema>;\n\n// ---------------------------------------------------------------------------\n// Image Generation\n// ---------------------------------------------------------------------------\n\n/**\n * Request schema for image generation\n */\nexport const imageGenerationRequestSchema = z.object({\n prompt: z.string().max(200),\n});\n\nexport type ImageGenerationRequest = z.infer<\n typeof imageGenerationRequestSchema\n>;\n\n/**\n * Image generation result data\n */\nexport const imageGenerationDataSchema = z.object({\n imageUrl: z.string(),\n width: z.number(),\n height: z.number(),\n format: z.string(),\n});\n\nexport type ImageGenerationData = z.infer<typeof imageGenerationDataSchema>;\n\n/**\n * Response schema for image generation\n */\nexport const imageGenerationResponseSchema = z.object({\n data: imageGenerationDataSchema,\n});\n\nexport type ImageGenerationResponse = z.infer<\n typeof imageGenerationResponseSchema\n>;\n","/**\n * Companion (member) schemas\n * Matches backend aidol/schemas/companion.py definitions (Public only for MVP)\n */\n\nimport type { BaseRecord } from \"@aioia/core\";\nimport { z } from \"zod\";\n\nexport const POSITIONS = [\n \"mainVocal\",\n \"subVocal\",\n \"mainDancer\",\n \"subDancer\",\n \"mainRapper\",\n \"subRapper\",\n] as const;\n\nexport type Position = (typeof POSITIONS)[number];\n\nexport type Gender = \"male\" | \"female\";\n\nexport type Grade = \"A\" | \"B\" | \"C\" | \"F\";\n\nexport interface CompanionStats {\n vocal: number;\n dance: number;\n rap: number;\n visual: number;\n stamina: number;\n charm: number;\n}\n\nconst companionStatsSchema = z.object({\n vocal: z.number(),\n dance: z.number(),\n rap: z.number(),\n visual: z.number(),\n stamina: z.number(),\n charm: z.number(),\n});\n\n/**\n * Companion schema (public fields only, excludes system_prompt)\n */\nexport const companionSchema = z.object({\n id: z.string(),\n aidolId: z.string().nullable().optional(),\n name: z.string().nullable().optional(),\n biography: z.string().nullable().optional(),\n profilePictureUrl: z.string().nullable().optional(),\n grade: z.enum([\"A\", \"B\", \"C\", \"F\"]).nullable().optional(),\n position: z\n .enum([\n \"mainVocal\",\n \"subVocal\",\n \"mainDancer\",\n \"subDancer\",\n \"mainRapper\",\n \"subRapper\",\n ])\n .nullable()\n .optional(),\n mbti: z.string().nullable().optional(),\n gender: z.enum([\"male\", \"female\"]).nullable().optional(),\n stats: companionStatsSchema.optional(),\n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport interface Companion extends BaseRecord {\n id: string;\n aidolId?: string | null;\n name?: string | null;\n biography?: string | null;\n profilePictureUrl?: string | null;\n grade?: Grade | null;\n position?: Position | null;\n mbti?: string | null;\n gender?: Gender | null;\n stats?: CompanionStats;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Schema for creating a Companion\n * Includes systemPrompt for creation (excluded from response)\n */\nexport interface CompanionCreate {\n aidolId?: string | null;\n name: string;\n biography?: string | null;\n profilePictureUrl?: string | null;\n systemPrompt?: string | null;\n}\n\n/**\n * Schema for updating a Companion\n */\nexport interface CompanionUpdate {\n aidolId?: string | null;\n name?: string;\n biography?: string | null;\n profilePictureUrl?: string | null;\n systemPrompt?: string | null;\n position?: Position | null;\n gender?: Gender | null;\n mbtiEnergy?: number;\n mbtiPerception?: number;\n mbtiJudgment?: number;\n mbtiLifestyle?: number;\n}\n","/**\n * Lead schemas\n * Matches backend aidol/schemas/aidol_lead.py definitions\n */\n\nimport { z } from \"zod\";\n\n/**\n * Lead request schema\n */\nexport interface LeadRequest {\n aidolId: string;\n email: string;\n}\n\n/**\n * Lead response schema\n */\nexport const leadResponseSchema = z.object({\n aidolId: z.string(),\n email: z.string(),\n});\n\nexport type LeadResponse = z.infer<typeof leadResponseSchema>;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from \"uuid\";\n\nconst STORAGE_KEY = \"aidol_claim_token\";\n\nexport const getClaimToken = (): string | null => {\n if (typeof window === \"undefined\") return null;\n return localStorage.getItem(STORAGE_KEY);\n};\n\nexport const getOrCreateClaimToken = (): string => {\n if (typeof window === \"undefined\") {\n throw new Error(\n \"getOrCreateClaimToken can only be called on the client side.\",\n );\n }\n const existing = localStorage.getItem(STORAGE_KEY);\n if (existing) return existing;\n\n const token = uuidv4();\n localStorage.setItem(STORAGE_KEY, token);\n return token;\n};\n"],"names":["aidolSchema","z","aidolCreateResponseSchema","memberDraftSchema","groupCreationSchema","members","m","imageGenerationDataSchema","imageGenerationResponseSchema","POSITIONS","companionStatsSchema","companionSchema","leadResponseSchema","getRandomValues","rnds8","rng","byteToHex","i","unsafeStringify","arr","offset","randomUUID","native","v4","options","buf","rnds","STORAGE_KEY","getClaimToken","getOrCreateClaimToken","existing","token","uuidv4"],"mappings":"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","x_google_ignoreList":[3,4,5,6]}