@chuzi/shared 1.3.42 → 1.3.43

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.
@@ -1,4 +1,4 @@
1
- import { PasswordLoginRequest, PasswordLoginResponse, OidcExchangeRequest, OidcExchangeResponse, MagicLinkRequest, MagicLinkRequestResponse, MagicLinkVerifyRequest, MagicLinkVerifyResponse, UsernameAvailabilityResponse, UserProfile, CatalogResponse, LocaleId, RealmConfigResponse, PaginatedResponse, StoryListItem, MineResponse, CreateStoryRequest, UpdateStoryRequest, TagListResponse, SceneListItem, CreateSceneRequest, UpdateSceneRequest, SceneActionItem, CreateSceneActionRequest, UpdateSceneActionRequest, UploadUrlRequest, UploadUrlResponse, RegisterMediaRequest, RegisterMediaResponse, TranscodeRequest, TranscodeResponse, PlayUrlResponse, SourceUrlResponse, SceneMapResponse, TrackEngagementRequest, EngagementResponse, SaveBookmarkRequest, BookmarkResponse, BookmarkListResponse, PublicDirectorProfile, UpdateRealmRequest, UpdateRealmResponse, UpdateLocaleRequest, UpdateLocaleResponse, UpdateProfileRequest, UpdateProfileResponse, CreditBalanceResponse, CreditPool, CreditPack, UploadCostResponse, PurchaseCreditsRequest, PurchaseCreditsResponse, PurchaseAmountRequest, CreditBalance, PaymentMethod, StorePaymentMethodRequest, GrantCreditsRequest, GrantCreditsResponse, GenerateImageRequest, GenerateImageResponse, AiGenerationShowResponse, AcceptGenerationRequest, AcceptGenerationResponse, RejectGenerationRequest, RejectGenerationResponse, StoryStyleResponse } from '../types/index.js';
1
+ import { PasswordLoginRequest, PasswordLoginResponse, OidcExchangeRequest, OidcExchangeResponse, MagicLinkRequest, MagicLinkRequestResponse, MagicLinkVerifyRequest, MagicLinkVerifyResponse, UsernameAvailabilityResponse, UserProfile, CatalogResponse, LocaleId, RealmConfigResponse, PaginatedResponse, StoryListItem, MineResponse, CreateStoryRequest, UpdateStoryRequest, TagListResponse, SceneListItem, CreateSceneRequest, UpdateSceneRequest, SceneActionItem, CreateSceneActionRequest, UpdateSceneActionRequest, UploadUrlRequest, UploadUrlResponse, RegisterMediaRequest, RegisterMediaResponse, TranscodeRequest, TranscodeResponse, PlayUrlResponse, SourceUrlResponse, SceneMapResponse, TrackEngagementRequest, EngagementResponse, SaveBookmarkRequest, BookmarkResponse, BookmarkListResponse, PublicDirectorProfile, UpdateRealmRequest, UpdateRealmResponse, UpdateLocaleRequest, UpdateLocaleResponse, UpdateProfileRequest, UpdateProfileResponse, CreditBalanceResponse, CreditPool, CreditPack, UploadCostResponse, PurchaseCreditsRequest, PurchaseCreditsResponse, PurchaseAmountRequest, CreditBalance, PaymentMethod, StorePaymentMethodRequest, GrantCreditsRequest, GrantCreditsResponse, GenerateImageRequest, GenerateImageResponse, AiGenerationShowResponse, AcceptGenerationRequest, AcceptGenerationResponse, RejectGenerationRequest, RejectGenerationResponse, StoryStyleResponse, AiStoryEstimateRequest, AiStoryEstimateResponse, AiStoryGenerateRequest, AiStoryGenerateResponse } from '../types/index.js';
2
2
 
3
3
  /**
4
4
  * Token resolver returned by the host app. Called on every request; may be
@@ -192,6 +192,8 @@ interface ChuziClient {
192
192
  storyStyle(storyId: string, opts?: {
193
193
  signal?: AbortSignal;
194
194
  }): Promise<StoryStyleResponse>;
195
+ storyEstimate(req: AiStoryEstimateRequest): Promise<AiStoryEstimateResponse>;
196
+ storyGenerate(req: AiStoryGenerateRequest): Promise<AiStoryGenerateResponse>;
195
197
  };
196
198
  }
197
199
  /**
package/dist/api/index.js CHANGED
@@ -190,7 +190,9 @@ function createChuziClient(config) {
190
190
  show: (id, opts) => request("GET", `/api/v1/ai/generations/${encodeURIComponent(id)}`, opts),
191
191
  accept: (id, req) => request("POST", `/api/v1/ai/generations/${encodeURIComponent(id)}/accept`, { body: req }),
192
192
  reject: (id, req) => request("POST", `/api/v1/ai/generations/${encodeURIComponent(id)}/reject`, { body: req }),
193
- storyStyle: (storyId, opts) => request("GET", `/api/v1/ai/stories/${encodeURIComponent(storyId)}/style`, opts)
193
+ storyStyle: (storyId, opts) => request("GET", `/api/v1/ai/stories/${encodeURIComponent(storyId)}/style`, opts),
194
+ storyEstimate: (req) => request("POST", "/api/v1/ai/story/estimate", { body: req }),
195
+ storyGenerate: (req) => request("POST", "/api/v1/ai/story/generate", { body: req })
194
196
  }
195
197
  };
196
198
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/api/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n AcceptGenerationRequest,\n AcceptGenerationResponse,\n AiGenerationShowResponse,\n BookmarkListResponse,\n BookmarkResponse,\n CatalogResponse,\n CreateSceneActionRequest,\n CreateSceneRequest,\n CreateStoryRequest,\n EngagementResponse,\n GenerateImageRequest,\n GenerateImageResponse,\n LocaleId,\n MagicLinkRequest,\n MagicLinkRequestResponse,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n MediaItem,\n MineResponse,\n OidcExchangeRequest,\n OidcExchangeResponse,\n PasswordLoginRequest,\n PasswordLoginResponse,\n PaginatedResponse,\n PlayUrlResponse,\n PublicDirectorProfile,\n RealmConfigResponse,\n RegisterMediaRequest,\n RegisterMediaResponse,\n RejectGenerationRequest,\n RejectGenerationResponse,\n SaveBookmarkRequest,\n SceneActionItem,\n SceneListItem,\n SceneMapResponse,\n SourceUrlResponse,\n StoryListItem,\n StoryStyleResponse,\n TagListResponse,\n TrackEngagementRequest,\n TranscodeRequest,\n TranscodeResponse,\n UsernameAvailabilityResponse,\n UpdateLocaleRequest,\n UpdateLocaleResponse,\n UpdateProfileRequest,\n UpdateProfileResponse,\n UpdateRealmRequest,\n UpdateRealmResponse,\n UpdateSceneActionRequest,\n UpdateSceneRequest,\n UpdateStoryRequest,\n UploadUrlRequest,\n UploadUrlResponse,\n UserProfile,\n CreditBalanceResponse,\n CreditPool,\n GrantCreditsRequest,\n GrantCreditsResponse,\n PaymentMethod,\n PurchaseAmountRequest,\n PurchaseCreditsRequest,\n PurchaseCreditsResponse,\n StorePaymentMethodRequest,\n UploadCostResponse,\n} from \"../types/index.js\";\n\n/**\n * Token resolver returned by the host app. Called on every request; may be\n * synchronous (in-memory) or async (SecureStore on RN-tvOS, AsyncStorage on\n * RN). Return null when the user is unauthenticated.\n */\nexport type TokenResolver = () => string | null | Promise<string | null>;\n\nexport interface ChuziClientConfig {\n /** Base URL of the CHUZI API — no trailing slash required. */\n baseUrl: string;\n /** Returns the current bearer token, or null if unauthenticated. */\n getToken?: TokenResolver;\n /** Override fetch for testing or RN polyfills. Defaults to globalThis.fetch. */\n fetch?: typeof fetch;\n /** Sent as User-Agent (web), or X-Client header (RN). Optional. */\n client?: string;\n}\n\nexport class ChuziApiError extends Error {\n constructor(\n public status: number,\n public body: unknown,\n message?: string,\n ) {\n super(message ?? `chuzi-api ${status}`);\n this.name = \"ChuziApiError\";\n }\n}\n\nexport function isInsufficientCreditsError(err: unknown): err is ChuziApiError {\n if (!(err instanceof ChuziApiError) || err.status !== 403) {\n return false;\n }\n const body = err.body as { error?: string } | null;\n return typeof body?.error === \"string\" && /insufficient/i.test(body.error);\n}\n\nexport function insufficientCreditsPool(err: unknown): CreditPool | null {\n if (!isInsufficientCreditsError(err)) {\n return null;\n }\n const body = err.body as { error?: string };\n const message = body.error ?? \"\";\n if (/watch/i.test(message)) return \"watch\";\n if (/create/i.test(message)) return \"create\";\n return null;\n}\n\ninterface RequestOptions {\n query?: Record<string, string | number | boolean | undefined>;\n body?: unknown;\n signal?: AbortSignal;\n}\n\nfunction buildQuery(query: RequestOptions[\"query\"]): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v === undefined) continue;\n params.set(k, String(v));\n }\n const s = params.toString();\n return s ? `?${s}` : \"\";\n}\n\nfunction makeRequester(config: ChuziClientConfig) {\n const fetchFn = config.fetch ?? globalThis.fetch;\n const baseUrl = config.baseUrl.replace(/\\/+$/, \"\");\n\n return async function request<T>(\n method: string,\n path: string,\n opts: RequestOptions = {},\n ): Promise<T> {\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n };\n if (config.client) headers[\"X-Chuzi-Client\"] = config.client;\n if (config.getToken) {\n const token = await config.getToken();\n if (token) headers[\"Authorization\"] = `Bearer ${token}`;\n }\n if (opts.body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n\n const res = await fetchFn(`${baseUrl}${path}${buildQuery(opts.query)}`, {\n method,\n headers,\n body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,\n signal: opts.signal,\n });\n\n if (res.status === 204) return undefined as T;\n\n let parsed: unknown = null;\n const text = await res.text();\n if (text.length > 0) {\n try {\n parsed = JSON.parse(text);\n } catch {\n parsed = text;\n }\n }\n\n if (!res.ok) {\n throw new ChuziApiError(res.status, parsed);\n }\n return parsed as T;\n };\n}\n\nexport interface ChuziClient {\n auth: {\n login(req: PasswordLoginRequest): Promise<PasswordLoginResponse>;\n exchangeOidcCode(req: OidcExchangeRequest): Promise<OidcExchangeResponse>;\n requestMagicLink(req: MagicLinkRequest): Promise<MagicLinkRequestResponse>;\n verifyMagicLink(req: MagicLinkVerifyRequest): Promise<MagicLinkVerifyResponse>;\n usernameAvailability(username: string, opts?: { signal?: AbortSignal }): Promise<UsernameAvailabilityResponse>;\n logout(): Promise<void>;\n user(): Promise<UserProfile>;\n };\n catalog: {\n index(opts?: { signal?: AbortSignal }): Promise<CatalogResponse>;\n byCreator(userId: string, opts?: { signal?: AbortSignal }): Promise<CatalogResponse>;\n };\n config: {\n realms(opts?: { locale?: LocaleId; signal?: AbortSignal }): Promise<RealmConfigResponse>;\n };\n stories: {\n index(opts?: { signal?: AbortSignal }): Promise<PaginatedResponse<StoryListItem>>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<StoryListItem>;\n mine(opts?: { signal?: AbortSignal }): Promise<MineResponse>;\n create(req: CreateStoryRequest): Promise<{ data: StoryListItem }>;\n update(id: string, req: UpdateStoryRequest): Promise<{ data: StoryListItem }>;\n destroy(id: string): Promise<void>;\n };\n tags: {\n index(opts?: { signal?: AbortSignal }): Promise<TagListResponse>;\n };\n scenes: {\n index(storyId: string, opts?: { signal?: AbortSignal }): Promise<SceneListItem[]>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<SceneListItem>;\n create(req: CreateSceneRequest): Promise<SceneListItem>;\n update(id: string, req: UpdateSceneRequest): Promise<SceneListItem>;\n destroy(id: string): Promise<void>;\n };\n sceneActions: {\n index(opts?: {\n sceneId?: string;\n signal?: AbortSignal;\n }): Promise<SceneActionItem[]>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<SceneActionItem>;\n create(req: CreateSceneActionRequest): Promise<SceneActionItem>;\n update(id: string, req: UpdateSceneActionRequest): Promise<SceneActionItem>;\n destroy(id: string): Promise<{ message: string }>;\n };\n media: {\n uploadUrl(req: UploadUrlRequest): Promise<UploadUrlResponse>;\n register(req: RegisterMediaRequest): Promise<RegisterMediaResponse>;\n transcode(req: TranscodeRequest): Promise<TranscodeResponse>;\n playUrl(id: string, opts?: { signal?: AbortSignal }): Promise<PlayUrlResponse>;\n sourceUrl(id: string, opts?: { signal?: AbortSignal }): Promise<SourceUrlResponse>;\n };\n watch: {\n sceneMap(storyId: string, opts?: { signal?: AbortSignal }): Promise<SceneMapResponse>;\n trackEngagement(storyId: string, req: TrackEngagementRequest): Promise<EngagementResponse>;\n saveBookmark(storyId: string, req: SaveBookmarkRequest): Promise<BookmarkResponse>;\n listBookmarks(storyId: string, opts?: { signal?: AbortSignal }): Promise<BookmarkListResponse>;\n };\n user: {\n profile(opts?: { signal?: AbortSignal }): Promise<UserProfile>;\n publicProfile(userId: string, opts?: { signal?: AbortSignal }): Promise<PublicDirectorProfile>;\n updateRealm(req: UpdateRealmRequest): Promise<UpdateRealmResponse>;\n updateLocale(req: UpdateLocaleRequest): Promise<UpdateLocaleResponse>;\n updateProfile(req: UpdateProfileRequest): Promise<UpdateProfileResponse>;\n usernameAvailability(username: string, opts?: { signal?: AbortSignal }): Promise<UsernameAvailabilityResponse>;\n };\n credits: {\n balance(opts?: { signal?: AbortSignal }): Promise<CreditBalanceResponse>;\n ledger(opts?: {\n signal?: AbortSignal;\n pool?: CreditPool;\n }): Promise<{ transactions: unknown[] }>;\n packs(opts?: { signal?: AbortSignal }): Promise<{ packs: import(\"../types/index.js\").CreditPack[] }>;\n uploadCost(fileSize: number, opts?: { signal?: AbortSignal }): Promise<UploadCostResponse>;\n purchase(req: PurchaseCreditsRequest): Promise<PurchaseCreditsResponse>;\n purchaseAmount(req: PurchaseAmountRequest): Promise<PurchaseCreditsResponse>;\n unlockScene(sceneId: string, opts?: { signal?: AbortSignal }): Promise<{\n unlocked: boolean;\n already_watched?: boolean;\n balance: import(\"../types/index.js\").CreditBalance;\n error?: string;\n }>;\n };\n payments: {\n list(opts?: { signal?: AbortSignal }): Promise<{ payment_methods: PaymentMethod[] }>;\n store(req: StorePaymentMethodRequest): Promise<{ payment_method: PaymentMethod }>;\n remove(paymentMethodId: string): Promise<{ message: string }>;\n setDefault(paymentMethodId: string): Promise<{ message: string }>;\n };\n admin: {\n credits: {\n grant(req: GrantCreditsRequest): Promise<GrantCreditsResponse>;\n };\n };\n ai: {\n generateImage(req: GenerateImageRequest): Promise<GenerateImageResponse>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<AiGenerationShowResponse>;\n accept(id: string, req: AcceptGenerationRequest): Promise<AcceptGenerationResponse>;\n reject(id: string, req: RejectGenerationRequest): Promise<RejectGenerationResponse>;\n storyStyle(storyId: string, opts?: { signal?: AbortSignal }): Promise<StoryStyleResponse>;\n };\n}\n\n/**\n * Construct a typed CHUZI API client. Bearer-token auth via Authorization\n * header (works for web/SPA and native apps). The host owns token storage\n * and lifecycle — pass `getToken` to plug in localStorage / AsyncStorage /\n * SecureStore as appropriate.\n *\n * Surfaces not yet wired: scene-actions, exports, admin, reports.\n * Add them here as the migration reaches each surface; the route shapes\n * are documented in chuzi-api/routes/api.php.\n */\nexport function createChuziClient(config: ChuziClientConfig): ChuziClient {\n const request = makeRequester(config);\n\n return {\n auth: {\n login: (req) =>\n request(\"POST\", \"/api/v1/auth/login\", { body: req }),\n exchangeOidcCode: (req) =>\n request(\"POST\", \"/api/v1/auth/oidc/exchange\", { body: req }),\n requestMagicLink: (req) =>\n request(\"POST\", \"/api/v1/auth/magic-link/request\", { body: req }),\n verifyMagicLink: (req) =>\n request(\"POST\", \"/api/v1/auth/magic-link/verify\", { body: req }),\n usernameAvailability: (username, opts) =>\n request(\"GET\", \"/api/v1/auth/username-availability\", {\n signal: opts?.signal,\n query: { username },\n }),\n logout: () => request(\"POST\", \"/api/v1/auth/logout\"),\n user: () => request(\"GET\", \"/api/v1/auth/user\"),\n },\n catalog: {\n index: (opts) => request(\"GET\", \"/api/v1/catalog\", opts),\n byCreator: (userId, opts) =>\n request(\"GET\", \"/api/v1/catalog\", {\n signal: opts?.signal,\n query: { creator_id: userId },\n }),\n },\n config: {\n realms: (opts) =>\n request(\"GET\", \"/api/v1/config/realms\", {\n signal: opts?.signal,\n query: opts?.locale ? { locale: opts.locale } : undefined,\n }),\n },\n stories: {\n index: (opts) => request(\"GET\", \"/api/v1/stories\", opts),\n show: (id, opts) => request(\"GET\", `/api/v1/stories/${encodeURIComponent(id)}`, opts),\n mine: (opts) => request(\"GET\", \"/api/v1/stories/mine\", opts),\n create: (req) => request(\"POST\", \"/api/v1/stories\", { body: req }),\n update: (id, req) => request(\"PATCH\", `/api/v1/stories/${encodeURIComponent(id)}`, { body: req }),\n destroy: (id) => request(\"DELETE\", `/api/v1/stories/${encodeURIComponent(id)}`),\n },\n tags: {\n index: (opts) => request(\"GET\", \"/api/v1/tags\", opts),\n },\n scenes: {\n index: (storyId, opts) =>\n request(\"GET\", \"/api/v1/scenes\", {\n signal: opts?.signal,\n query: { story_id: storyId },\n }),\n show: (id, opts) =>\n request(\"GET\", `/api/v1/scenes/${encodeURIComponent(id)}`, opts),\n create: (req) =>\n request(\"POST\", \"/api/v1/scenes\", { body: req }),\n update: (id, req) =>\n request(\"PATCH\", `/api/v1/scenes/${encodeURIComponent(id)}`, { body: req }),\n destroy: (id) =>\n request(\"DELETE\", `/api/v1/scenes/${encodeURIComponent(id)}`),\n },\n sceneActions: {\n index: (opts) =>\n request(\"GET\", \"/api/v1/scene-actions\", {\n signal: opts?.signal,\n query: opts?.sceneId ? { scene_id: opts.sceneId } : undefined,\n }),\n show: (id, opts) =>\n request(\"GET\", `/api/v1/scene-actions/${encodeURIComponent(id)}`, opts),\n create: (req) =>\n request(\"POST\", \"/api/v1/scene-actions\", { body: req }),\n update: (id, req) =>\n request(\"PATCH\", `/api/v1/scene-actions/${encodeURIComponent(id)}`, {\n body: req,\n }),\n destroy: (id) =>\n request(\"DELETE\", `/api/v1/scene-actions/${encodeURIComponent(id)}`),\n },\n media: {\n uploadUrl: (req) =>\n request(\"POST\", \"/api/v1/media/upload-url\", { body: req }),\n register: (req) =>\n request(\"POST\", \"/api/v1/media/register\", { body: req }),\n transcode: (req) =>\n request(\"POST\", \"/api/v1/media/transcode\", { body: req }),\n playUrl: (id, opts) =>\n request(\"GET\", `/api/v1/media/${encodeURIComponent(id)}/play`, opts),\n sourceUrl: (id, opts) =>\n request(\"GET\", `/api/v1/media/${encodeURIComponent(id)}/source-url`, opts),\n },\n watch: {\n sceneMap: (storyId, opts) =>\n request(\"GET\", `/api/v1/stories/${encodeURIComponent(storyId)}/scene-map`, opts),\n trackEngagement: (storyId, req) =>\n request(\"POST\", `/api/v1/stories/${encodeURIComponent(storyId)}/engagement`, { body: req }),\n saveBookmark: (storyId, req) =>\n request(\"POST\", `/api/v1/stories/${encodeURIComponent(storyId)}/bookmark`, { body: req }),\n listBookmarks: (storyId, opts) =>\n request(\"GET\", `/api/v1/stories/${encodeURIComponent(storyId)}/bookmarks`, opts),\n },\n user: {\n profile: (opts) => request(\"GET\", \"/api/v1/user/profile\", opts),\n publicProfile: (userId, opts) =>\n request(\"GET\", `/api/v1/users/${encodeURIComponent(userId)}/public`, opts),\n updateRealm: (req) => request(\"PUT\", \"/api/v1/user/realm\", { body: req }),\n updateLocale: (req) => request(\"PUT\", \"/api/v1/user/locale\", { body: req }),\n updateProfile: (req) => request(\"PUT\", \"/api/v1/user/profile\", { body: req }),\n usernameAvailability: (username, opts) =>\n request(\"GET\", \"/api/v1/user/username-availability\", {\n signal: opts?.signal,\n query: { username },\n }),\n },\n credits: {\n balance: (opts) => request(\"GET\", \"/api/v1/credits/balance\", opts),\n ledger: (opts) =>\n request(\"GET\", \"/api/v1/credits/ledger\", {\n signal: opts?.signal,\n query: opts?.pool ? { pool: opts.pool } : undefined,\n }),\n packs: (opts) => request(\"GET\", \"/api/v1/credits/packs\", opts),\n uploadCost: (fileSize, opts) =>\n request(\"GET\", \"/api/v1/credits/upload-cost\", {\n signal: opts?.signal,\n query: { file_size: fileSize },\n }),\n purchase: (req) =>\n request(\"POST\", \"/api/v1/credits/purchase\", { body: req }),\n purchaseAmount: (req) =>\n request(\"POST\", \"/api/v1/credits/purchase-amount\", { body: req }),\n unlockScene: (sceneId, opts) =>\n request(\"POST\", `/api/v1/scenes/${encodeURIComponent(sceneId)}/unlock`, opts),\n },\n payments: {\n list: (opts) => request(\"GET\", \"/api/v1/payments/methods\", opts),\n store: (req) =>\n request(\"POST\", \"/api/v1/payments/methods\", { body: req }),\n remove: (paymentMethodId) =>\n request(\"DELETE\", `/api/v1/payments/methods/${encodeURIComponent(paymentMethodId)}`),\n setDefault: (paymentMethodId) =>\n request(\n \"POST\",\n `/api/v1/payments/methods/${encodeURIComponent(paymentMethodId)}/default`,\n ),\n },\n admin: {\n credits: {\n grant: (req) =>\n request(\"POST\", \"/api/v1/admin/credits/grant\", { body: req }),\n },\n },\n ai: {\n generateImage: (req) =>\n request(\"POST\", \"/api/v1/ai/generate-image\", { body: req }),\n show: (id, opts) =>\n request(\"GET\", `/api/v1/ai/generations/${encodeURIComponent(id)}`, opts),\n accept: (id, req) =>\n request(\"POST\", `/api/v1/ai/generations/${encodeURIComponent(id)}/accept`, { body: req }),\n reject: (id, req) =>\n request(\"POST\", `/api/v1/ai/generations/${encodeURIComponent(id)}/reject`, { body: req }),\n storyStyle: (storyId, opts) =>\n request(\"GET\", `/api/v1/ai/stories/${encodeURIComponent(storyId)}/style`, opts),\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../../src/api/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n AcceptGenerationRequest,\n AcceptGenerationResponse,\n AiGenerationShowResponse,\n BookmarkListResponse,\n BookmarkResponse,\n CatalogResponse,\n CreateSceneActionRequest,\n CreateSceneRequest,\n CreateStoryRequest,\n EngagementResponse,\n GenerateImageRequest,\n GenerateImageResponse,\n LocaleId,\n MagicLinkRequest,\n MagicLinkRequestResponse,\n MagicLinkVerifyRequest,\n MagicLinkVerifyResponse,\n MediaItem,\n MineResponse,\n OidcExchangeRequest,\n OidcExchangeResponse,\n PasswordLoginRequest,\n PasswordLoginResponse,\n PaginatedResponse,\n PlayUrlResponse,\n PublicDirectorProfile,\n RealmConfigResponse,\n RegisterMediaRequest,\n RegisterMediaResponse,\n RejectGenerationRequest,\n RejectGenerationResponse,\n SaveBookmarkRequest,\n SceneActionItem,\n SceneListItem,\n SceneMapResponse,\n SourceUrlResponse,\n StoryListItem,\n StoryStyleResponse,\n TagListResponse,\n TrackEngagementRequest,\n TranscodeRequest,\n TranscodeResponse,\n UsernameAvailabilityResponse,\n UpdateLocaleRequest,\n UpdateLocaleResponse,\n UpdateProfileRequest,\n UpdateProfileResponse,\n UpdateRealmRequest,\n UpdateRealmResponse,\n UpdateSceneActionRequest,\n UpdateSceneRequest,\n UpdateStoryRequest,\n UploadUrlRequest,\n UploadUrlResponse,\n UserProfile,\n CreditBalanceResponse,\n CreditPool,\n GrantCreditsRequest,\n GrantCreditsResponse,\n PaymentMethod,\n PurchaseAmountRequest,\n PurchaseCreditsRequest,\n PurchaseCreditsResponse,\n StorePaymentMethodRequest,\n UploadCostResponse,\n} from \"../types/index.js\";\n\n/**\n * Token resolver returned by the host app. Called on every request; may be\n * synchronous (in-memory) or async (SecureStore on RN-tvOS, AsyncStorage on\n * RN). Return null when the user is unauthenticated.\n */\nexport type TokenResolver = () => string | null | Promise<string | null>;\n\nexport interface ChuziClientConfig {\n /** Base URL of the CHUZI API — no trailing slash required. */\n baseUrl: string;\n /** Returns the current bearer token, or null if unauthenticated. */\n getToken?: TokenResolver;\n /** Override fetch for testing or RN polyfills. Defaults to globalThis.fetch. */\n fetch?: typeof fetch;\n /** Sent as User-Agent (web), or X-Client header (RN). Optional. */\n client?: string;\n}\n\nexport class ChuziApiError extends Error {\n constructor(\n public status: number,\n public body: unknown,\n message?: string,\n ) {\n super(message ?? `chuzi-api ${status}`);\n this.name = \"ChuziApiError\";\n }\n}\n\nexport function isInsufficientCreditsError(err: unknown): err is ChuziApiError {\n if (!(err instanceof ChuziApiError) || err.status !== 403) {\n return false;\n }\n const body = err.body as { error?: string } | null;\n return typeof body?.error === \"string\" && /insufficient/i.test(body.error);\n}\n\nexport function insufficientCreditsPool(err: unknown): CreditPool | null {\n if (!isInsufficientCreditsError(err)) {\n return null;\n }\n const body = err.body as { error?: string };\n const message = body.error ?? \"\";\n if (/watch/i.test(message)) return \"watch\";\n if (/create/i.test(message)) return \"create\";\n return null;\n}\n\ninterface RequestOptions {\n query?: Record<string, string | number | boolean | undefined>;\n body?: unknown;\n signal?: AbortSignal;\n}\n\nfunction buildQuery(query: RequestOptions[\"query\"]): string {\n if (!query) return \"\";\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v === undefined) continue;\n params.set(k, String(v));\n }\n const s = params.toString();\n return s ? `?${s}` : \"\";\n}\n\nfunction makeRequester(config: ChuziClientConfig) {\n const fetchFn = config.fetch ?? globalThis.fetch;\n const baseUrl = config.baseUrl.replace(/\\/+$/, \"\");\n\n return async function request<T>(\n method: string,\n path: string,\n opts: RequestOptions = {},\n ): Promise<T> {\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n };\n if (config.client) headers[\"X-Chuzi-Client\"] = config.client;\n if (config.getToken) {\n const token = await config.getToken();\n if (token) headers[\"Authorization\"] = `Bearer ${token}`;\n }\n if (opts.body !== undefined) headers[\"Content-Type\"] = \"application/json\";\n\n const res = await fetchFn(`${baseUrl}${path}${buildQuery(opts.query)}`, {\n method,\n headers,\n body: opts.body !== undefined ? JSON.stringify(opts.body) : undefined,\n signal: opts.signal,\n });\n\n if (res.status === 204) return undefined as T;\n\n let parsed: unknown = null;\n const text = await res.text();\n if (text.length > 0) {\n try {\n parsed = JSON.parse(text);\n } catch {\n parsed = text;\n }\n }\n\n if (!res.ok) {\n throw new ChuziApiError(res.status, parsed);\n }\n return parsed as T;\n };\n}\n\nexport interface ChuziClient {\n auth: {\n login(req: PasswordLoginRequest): Promise<PasswordLoginResponse>;\n exchangeOidcCode(req: OidcExchangeRequest): Promise<OidcExchangeResponse>;\n requestMagicLink(req: MagicLinkRequest): Promise<MagicLinkRequestResponse>;\n verifyMagicLink(req: MagicLinkVerifyRequest): Promise<MagicLinkVerifyResponse>;\n usernameAvailability(username: string, opts?: { signal?: AbortSignal }): Promise<UsernameAvailabilityResponse>;\n logout(): Promise<void>;\n user(): Promise<UserProfile>;\n };\n catalog: {\n index(opts?: { signal?: AbortSignal }): Promise<CatalogResponse>;\n byCreator(userId: string, opts?: { signal?: AbortSignal }): Promise<CatalogResponse>;\n };\n config: {\n realms(opts?: { locale?: LocaleId; signal?: AbortSignal }): Promise<RealmConfigResponse>;\n };\n stories: {\n index(opts?: { signal?: AbortSignal }): Promise<PaginatedResponse<StoryListItem>>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<StoryListItem>;\n mine(opts?: { signal?: AbortSignal }): Promise<MineResponse>;\n create(req: CreateStoryRequest): Promise<{ data: StoryListItem }>;\n update(id: string, req: UpdateStoryRequest): Promise<{ data: StoryListItem }>;\n destroy(id: string): Promise<void>;\n };\n tags: {\n index(opts?: { signal?: AbortSignal }): Promise<TagListResponse>;\n };\n scenes: {\n index(storyId: string, opts?: { signal?: AbortSignal }): Promise<SceneListItem[]>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<SceneListItem>;\n create(req: CreateSceneRequest): Promise<SceneListItem>;\n update(id: string, req: UpdateSceneRequest): Promise<SceneListItem>;\n destroy(id: string): Promise<void>;\n };\n sceneActions: {\n index(opts?: {\n sceneId?: string;\n signal?: AbortSignal;\n }): Promise<SceneActionItem[]>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<SceneActionItem>;\n create(req: CreateSceneActionRequest): Promise<SceneActionItem>;\n update(id: string, req: UpdateSceneActionRequest): Promise<SceneActionItem>;\n destroy(id: string): Promise<{ message: string }>;\n };\n media: {\n uploadUrl(req: UploadUrlRequest): Promise<UploadUrlResponse>;\n register(req: RegisterMediaRequest): Promise<RegisterMediaResponse>;\n transcode(req: TranscodeRequest): Promise<TranscodeResponse>;\n playUrl(id: string, opts?: { signal?: AbortSignal }): Promise<PlayUrlResponse>;\n sourceUrl(id: string, opts?: { signal?: AbortSignal }): Promise<SourceUrlResponse>;\n };\n watch: {\n sceneMap(storyId: string, opts?: { signal?: AbortSignal }): Promise<SceneMapResponse>;\n trackEngagement(storyId: string, req: TrackEngagementRequest): Promise<EngagementResponse>;\n saveBookmark(storyId: string, req: SaveBookmarkRequest): Promise<BookmarkResponse>;\n listBookmarks(storyId: string, opts?: { signal?: AbortSignal }): Promise<BookmarkListResponse>;\n };\n user: {\n profile(opts?: { signal?: AbortSignal }): Promise<UserProfile>;\n publicProfile(userId: string, opts?: { signal?: AbortSignal }): Promise<PublicDirectorProfile>;\n updateRealm(req: UpdateRealmRequest): Promise<UpdateRealmResponse>;\n updateLocale(req: UpdateLocaleRequest): Promise<UpdateLocaleResponse>;\n updateProfile(req: UpdateProfileRequest): Promise<UpdateProfileResponse>;\n usernameAvailability(username: string, opts?: { signal?: AbortSignal }): Promise<UsernameAvailabilityResponse>;\n };\n credits: {\n balance(opts?: { signal?: AbortSignal }): Promise<CreditBalanceResponse>;\n ledger(opts?: {\n signal?: AbortSignal;\n pool?: CreditPool;\n }): Promise<{ transactions: unknown[] }>;\n packs(opts?: { signal?: AbortSignal }): Promise<{ packs: import(\"../types/index.js\").CreditPack[] }>;\n uploadCost(fileSize: number, opts?: { signal?: AbortSignal }): Promise<UploadCostResponse>;\n purchase(req: PurchaseCreditsRequest): Promise<PurchaseCreditsResponse>;\n purchaseAmount(req: PurchaseAmountRequest): Promise<PurchaseCreditsResponse>;\n unlockScene(sceneId: string, opts?: { signal?: AbortSignal }): Promise<{\n unlocked: boolean;\n already_watched?: boolean;\n balance: import(\"../types/index.js\").CreditBalance;\n error?: string;\n }>;\n };\n payments: {\n list(opts?: { signal?: AbortSignal }): Promise<{ payment_methods: PaymentMethod[] }>;\n store(req: StorePaymentMethodRequest): Promise<{ payment_method: PaymentMethod }>;\n remove(paymentMethodId: string): Promise<{ message: string }>;\n setDefault(paymentMethodId: string): Promise<{ message: string }>;\n };\n admin: {\n credits: {\n grant(req: GrantCreditsRequest): Promise<GrantCreditsResponse>;\n };\n };\n ai: {\n generateImage(req: GenerateImageRequest): Promise<GenerateImageResponse>;\n show(id: string, opts?: { signal?: AbortSignal }): Promise<AiGenerationShowResponse>;\n accept(id: string, req: AcceptGenerationRequest): Promise<AcceptGenerationResponse>;\n reject(id: string, req: RejectGenerationRequest): Promise<RejectGenerationResponse>;\n storyStyle(storyId: string, opts?: { signal?: AbortSignal }): Promise<StoryStyleResponse>;\n storyEstimate(req: import(\"../types/index.js\").AiStoryEstimateRequest): Promise<import(\"../types/index.js\").AiStoryEstimateResponse>;\n storyGenerate(req: import(\"../types/index.js\").AiStoryGenerateRequest): Promise<import(\"../types/index.js\").AiStoryGenerateResponse>;\n };\n}\n\n/**\n * Construct a typed CHUZI API client. Bearer-token auth via Authorization\n * header (works for web/SPA and native apps). The host owns token storage\n * and lifecycle — pass `getToken` to plug in localStorage / AsyncStorage /\n * SecureStore as appropriate.\n *\n * Surfaces not yet wired: scene-actions, exports, admin, reports.\n * Add them here as the migration reaches each surface; the route shapes\n * are documented in chuzi-api/routes/api.php.\n */\nexport function createChuziClient(config: ChuziClientConfig): ChuziClient {\n const request = makeRequester(config);\n\n return {\n auth: {\n login: (req) =>\n request(\"POST\", \"/api/v1/auth/login\", { body: req }),\n exchangeOidcCode: (req) =>\n request(\"POST\", \"/api/v1/auth/oidc/exchange\", { body: req }),\n requestMagicLink: (req) =>\n request(\"POST\", \"/api/v1/auth/magic-link/request\", { body: req }),\n verifyMagicLink: (req) =>\n request(\"POST\", \"/api/v1/auth/magic-link/verify\", { body: req }),\n usernameAvailability: (username, opts) =>\n request(\"GET\", \"/api/v1/auth/username-availability\", {\n signal: opts?.signal,\n query: { username },\n }),\n logout: () => request(\"POST\", \"/api/v1/auth/logout\"),\n user: () => request(\"GET\", \"/api/v1/auth/user\"),\n },\n catalog: {\n index: (opts) => request(\"GET\", \"/api/v1/catalog\", opts),\n byCreator: (userId, opts) =>\n request(\"GET\", \"/api/v1/catalog\", {\n signal: opts?.signal,\n query: { creator_id: userId },\n }),\n },\n config: {\n realms: (opts) =>\n request(\"GET\", \"/api/v1/config/realms\", {\n signal: opts?.signal,\n query: opts?.locale ? { locale: opts.locale } : undefined,\n }),\n },\n stories: {\n index: (opts) => request(\"GET\", \"/api/v1/stories\", opts),\n show: (id, opts) => request(\"GET\", `/api/v1/stories/${encodeURIComponent(id)}`, opts),\n mine: (opts) => request(\"GET\", \"/api/v1/stories/mine\", opts),\n create: (req) => request(\"POST\", \"/api/v1/stories\", { body: req }),\n update: (id, req) => request(\"PATCH\", `/api/v1/stories/${encodeURIComponent(id)}`, { body: req }),\n destroy: (id) => request(\"DELETE\", `/api/v1/stories/${encodeURIComponent(id)}`),\n },\n tags: {\n index: (opts) => request(\"GET\", \"/api/v1/tags\", opts),\n },\n scenes: {\n index: (storyId, opts) =>\n request(\"GET\", \"/api/v1/scenes\", {\n signal: opts?.signal,\n query: { story_id: storyId },\n }),\n show: (id, opts) =>\n request(\"GET\", `/api/v1/scenes/${encodeURIComponent(id)}`, opts),\n create: (req) =>\n request(\"POST\", \"/api/v1/scenes\", { body: req }),\n update: (id, req) =>\n request(\"PATCH\", `/api/v1/scenes/${encodeURIComponent(id)}`, { body: req }),\n destroy: (id) =>\n request(\"DELETE\", `/api/v1/scenes/${encodeURIComponent(id)}`),\n },\n sceneActions: {\n index: (opts) =>\n request(\"GET\", \"/api/v1/scene-actions\", {\n signal: opts?.signal,\n query: opts?.sceneId ? { scene_id: opts.sceneId } : undefined,\n }),\n show: (id, opts) =>\n request(\"GET\", `/api/v1/scene-actions/${encodeURIComponent(id)}`, opts),\n create: (req) =>\n request(\"POST\", \"/api/v1/scene-actions\", { body: req }),\n update: (id, req) =>\n request(\"PATCH\", `/api/v1/scene-actions/${encodeURIComponent(id)}`, {\n body: req,\n }),\n destroy: (id) =>\n request(\"DELETE\", `/api/v1/scene-actions/${encodeURIComponent(id)}`),\n },\n media: {\n uploadUrl: (req) =>\n request(\"POST\", \"/api/v1/media/upload-url\", { body: req }),\n register: (req) =>\n request(\"POST\", \"/api/v1/media/register\", { body: req }),\n transcode: (req) =>\n request(\"POST\", \"/api/v1/media/transcode\", { body: req }),\n playUrl: (id, opts) =>\n request(\"GET\", `/api/v1/media/${encodeURIComponent(id)}/play`, opts),\n sourceUrl: (id, opts) =>\n request(\"GET\", `/api/v1/media/${encodeURIComponent(id)}/source-url`, opts),\n },\n watch: {\n sceneMap: (storyId, opts) =>\n request(\"GET\", `/api/v1/stories/${encodeURIComponent(storyId)}/scene-map`, opts),\n trackEngagement: (storyId, req) =>\n request(\"POST\", `/api/v1/stories/${encodeURIComponent(storyId)}/engagement`, { body: req }),\n saveBookmark: (storyId, req) =>\n request(\"POST\", `/api/v1/stories/${encodeURIComponent(storyId)}/bookmark`, { body: req }),\n listBookmarks: (storyId, opts) =>\n request(\"GET\", `/api/v1/stories/${encodeURIComponent(storyId)}/bookmarks`, opts),\n },\n user: {\n profile: (opts) => request(\"GET\", \"/api/v1/user/profile\", opts),\n publicProfile: (userId, opts) =>\n request(\"GET\", `/api/v1/users/${encodeURIComponent(userId)}/public`, opts),\n updateRealm: (req) => request(\"PUT\", \"/api/v1/user/realm\", { body: req }),\n updateLocale: (req) => request(\"PUT\", \"/api/v1/user/locale\", { body: req }),\n updateProfile: (req) => request(\"PUT\", \"/api/v1/user/profile\", { body: req }),\n usernameAvailability: (username, opts) =>\n request(\"GET\", \"/api/v1/user/username-availability\", {\n signal: opts?.signal,\n query: { username },\n }),\n },\n credits: {\n balance: (opts) => request(\"GET\", \"/api/v1/credits/balance\", opts),\n ledger: (opts) =>\n request(\"GET\", \"/api/v1/credits/ledger\", {\n signal: opts?.signal,\n query: opts?.pool ? { pool: opts.pool } : undefined,\n }),\n packs: (opts) => request(\"GET\", \"/api/v1/credits/packs\", opts),\n uploadCost: (fileSize, opts) =>\n request(\"GET\", \"/api/v1/credits/upload-cost\", {\n signal: opts?.signal,\n query: { file_size: fileSize },\n }),\n purchase: (req) =>\n request(\"POST\", \"/api/v1/credits/purchase\", { body: req }),\n purchaseAmount: (req) =>\n request(\"POST\", \"/api/v1/credits/purchase-amount\", { body: req }),\n unlockScene: (sceneId, opts) =>\n request(\"POST\", `/api/v1/scenes/${encodeURIComponent(sceneId)}/unlock`, opts),\n },\n payments: {\n list: (opts) => request(\"GET\", \"/api/v1/payments/methods\", opts),\n store: (req) =>\n request(\"POST\", \"/api/v1/payments/methods\", { body: req }),\n remove: (paymentMethodId) =>\n request(\"DELETE\", `/api/v1/payments/methods/${encodeURIComponent(paymentMethodId)}`),\n setDefault: (paymentMethodId) =>\n request(\n \"POST\",\n `/api/v1/payments/methods/${encodeURIComponent(paymentMethodId)}/default`,\n ),\n },\n admin: {\n credits: {\n grant: (req) =>\n request(\"POST\", \"/api/v1/admin/credits/grant\", { body: req }),\n },\n },\n ai: {\n generateImage: (req) =>\n request(\"POST\", \"/api/v1/ai/generate-image\", { body: req }),\n show: (id, opts) =>\n request(\"GET\", `/api/v1/ai/generations/${encodeURIComponent(id)}`, opts),\n accept: (id, req) =>\n request(\"POST\", `/api/v1/ai/generations/${encodeURIComponent(id)}/accept`, { body: req }),\n reject: (id, req) =>\n request(\"POST\", `/api/v1/ai/generations/${encodeURIComponent(id)}/reject`, { body: req }),\n storyStyle: (storyId, opts) =>\n request(\"GET\", `/api/v1/ai/stories/${encodeURIComponent(storyId)}/style`, opts),\n storyEstimate: (req) =>\n request(\"POST\", \"/api/v1/ai/story/estimate\", { body: req }),\n storyGenerate: (req) =>\n request(\"POST\", \"/api/v1/ai/story/generate\", { body: req }),\n },\n };\n}\n"]}
@@ -11,6 +11,20 @@ declare function defaultPurchaseCredits(pool: CreditPool): number;
11
11
  declare function priceCentsForCredits(pool: CreditPool, credits: number): number;
12
12
  declare function formatCreditPrice(cents: number): string;
13
13
 
14
+ /**
15
+ * Guided prompts for Chuzi AI story creation.
16
+ * Based on Dan Harmon's Story Circle and Joseph Campbell's Hero's Journey.
17
+ */
18
+ interface ChuziAiPromptStep {
19
+ key: string;
20
+ lexicon_title: string;
21
+ lexicon_hint: string;
22
+ /** Monomyth stage reference shown in the UI */
23
+ monomyth_ref?: string;
24
+ required?: boolean;
25
+ }
26
+ declare const CHUZI_AI_PROMPT_STEPS: ChuziAiPromptStep[];
27
+
14
28
  declare const REALM_IDS: readonly RealmId[];
15
29
  declare const SUPPORTED_LOCALES: readonly LocaleId[];
16
30
  declare const LOCALE_LABELS: Record<LocaleId, string>;
@@ -50,4 +64,4 @@ declare function t(realmId: RealmId | null | undefined, key: string, fallback?:
50
64
  */
51
65
  declare function lexiconForRealm(realmId: RealmId | null | undefined, locale?: LocaleId | null | undefined): Record<string, string>;
52
66
 
53
- export { CONTENT_RATINGS, CONTENT_RATING_IDS, CREDITS_PER_DOLLAR, CREDIT_CENTS_PER_UNIT, DEFAULT_LOCALE, FALLBACK_LEXICON, FALLBACK_LOCALES, LOCALE_LABELS, REALMS, REALM_IDS, SUPPORTED_LOCALES, defaultPurchaseCredits, formatCreditPrice, getRealmLexiconOverrides, isContentRating, isSupportedLocale, lexiconForRealm, matchAcceptLanguage, normalizeLocale, priceCentsForCredits, setRealmLexiconOverrides, t };
67
+ export { CHUZI_AI_PROMPT_STEPS, CONTENT_RATINGS, CONTENT_RATING_IDS, CREDITS_PER_DOLLAR, CREDIT_CENTS_PER_UNIT, type ChuziAiPromptStep, DEFAULT_LOCALE, FALLBACK_LEXICON, FALLBACK_LOCALES, LOCALE_LABELS, REALMS, REALM_IDS, SUPPORTED_LOCALES, defaultPurchaseCredits, formatCreditPrice, getRealmLexiconOverrides, isContentRating, isSupportedLocale, lexiconForRealm, matchAcceptLanguage, normalizeLocale, priceCentsForCredits, setRealmLexiconOverrides, t };
@@ -17,6 +17,86 @@ function formatCreditPrice(cents) {
17
17
  return `$${(cents / 100).toFixed(2)}`;
18
18
  }
19
19
 
20
+ // src/config/chuzi-ai-prompts.ts
21
+ var CHUZI_AI_PROMPT_STEPS = [
22
+ {
23
+ key: "hero",
24
+ lexicon_title: "chuzi_ai_step_hero",
25
+ lexicon_hint: "chuzi_ai_step_hero_hint",
26
+ monomyth_ref: "chuzi_ai_monomyth_hero",
27
+ required: true
28
+ },
29
+ {
30
+ key: "world",
31
+ lexicon_title: "chuzi_ai_step_world",
32
+ lexicon_hint: "chuzi_ai_step_world_hint",
33
+ monomyth_ref: "chuzi_ai_monomyth_world",
34
+ required: true
35
+ },
36
+ {
37
+ key: "you",
38
+ lexicon_title: "chuzi_ai_step_you",
39
+ lexicon_hint: "chuzi_ai_step_you_hint",
40
+ monomyth_ref: "chuzi_ai_monomyth_you",
41
+ required: true
42
+ },
43
+ {
44
+ key: "need",
45
+ lexicon_title: "chuzi_ai_step_need",
46
+ lexicon_hint: "chuzi_ai_step_need_hint",
47
+ monomyth_ref: "chuzi_ai_monomyth_need",
48
+ required: true
49
+ },
50
+ {
51
+ key: "go",
52
+ lexicon_title: "chuzi_ai_step_go",
53
+ lexicon_hint: "chuzi_ai_step_go_hint",
54
+ monomyth_ref: "chuzi_ai_monomyth_go",
55
+ required: true
56
+ },
57
+ {
58
+ key: "search",
59
+ lexicon_title: "chuzi_ai_step_search",
60
+ lexicon_hint: "chuzi_ai_step_search_hint",
61
+ monomyth_ref: "chuzi_ai_monomyth_search",
62
+ required: false
63
+ },
64
+ {
65
+ key: "find",
66
+ lexicon_title: "chuzi_ai_step_find",
67
+ lexicon_hint: "chuzi_ai_step_find_hint",
68
+ monomyth_ref: "chuzi_ai_monomyth_find",
69
+ required: false
70
+ },
71
+ {
72
+ key: "take",
73
+ lexicon_title: "chuzi_ai_step_take",
74
+ lexicon_hint: "chuzi_ai_step_take_hint",
75
+ monomyth_ref: "chuzi_ai_monomyth_take",
76
+ required: false
77
+ },
78
+ {
79
+ key: "return",
80
+ lexicon_title: "chuzi_ai_step_return",
81
+ lexicon_hint: "chuzi_ai_step_return_hint",
82
+ monomyth_ref: "chuzi_ai_monomyth_return",
83
+ required: false
84
+ },
85
+ {
86
+ key: "change",
87
+ lexicon_title: "chuzi_ai_step_change",
88
+ lexicon_hint: "chuzi_ai_step_change_hint",
89
+ monomyth_ref: "chuzi_ai_monomyth_change",
90
+ required: false
91
+ },
92
+ {
93
+ key: "tone",
94
+ lexicon_title: "chuzi_ai_step_tone",
95
+ lexicon_hint: "chuzi_ai_step_tone_hint",
96
+ required: false
97
+ }
98
+ ];
99
+
20
100
  // src/config/index.ts
21
101
  var REALM_IDS = ["cosmos", "wilds"];
22
102
  var SUPPORTED_LOCALES = [
@@ -150,7 +230,7 @@ var REALMS = {
150
230
  select_genre: "Select galaxy",
151
231
  genre_field_aria: "Galaxy",
152
232
  delete_story_verb: "Delete star system",
153
- title_scene_default: "Title planet",
233
+ title_scene_default: "Launch",
154
234
  choices_made_stat: "trajectories taken",
155
235
  content_rating: "Audience Class",
156
236
  content_rating_field_aria: "Audience class",
@@ -163,10 +243,10 @@ var REALMS = {
163
243
  editor_alt_media: "Effects",
164
244
  editor_choices: "Choices",
165
245
  editor_scene_settings: "Star Settings",
166
- editor_title_scene: "Title Star",
246
+ editor_title_scene: "Start",
167
247
  editor_film_title: "Star System Title",
168
248
  editor_film_title_hint: "Click to rename this star system",
169
- editor_ending_scene: "Final Star",
249
+ editor_ending_scene: "End",
170
250
  editor_play: "Engage",
171
251
  editor_pause: "Hold",
172
252
  editor_prev_frame: "Previous Frame",
@@ -183,8 +263,61 @@ var REALMS = {
183
263
  editor_create_scene_cost: "1 Stardust",
184
264
  editor_delete_scene_cta: "Delete Scene",
185
265
  editor_delete_scene_confirm: "Click again to confirm",
186
- editor_scene_locked_delete: "Title and end scenes cannot be deleted.",
266
+ editor_scene_locked_delete: "Start and end scenes cannot be deleted.",
187
267
  editor_scene_color: "Star Hue",
268
+ chuzi_ai_name: "Chuzi AI",
269
+ chuzi_ai_create_with: "Create with Chuzi AI",
270
+ chuzi_ai_create_manual: "Enter title manually",
271
+ chuzi_ai_intro: "Answer story-circle prompts and Chuzi AI will chart your short story.",
272
+ chuzi_ai_step_of: "Step",
273
+ chuzi_ai_back: "Back",
274
+ chuzi_ai_next: "Next",
275
+ chuzi_ai_scenes_label: "scenes",
276
+ chuzi_ai_creating: "Creating\u2026",
277
+ chuzi_ai_generate_failed: "Story generation failed.",
278
+ chuzi_ai_build_failed: "Failed to build story.",
279
+ chuzi_ai_generate: "Generate story",
280
+ chuzi_ai_generating: "Generating\u2026",
281
+ chuzi_ai_token_in: "Tokens in",
282
+ chuzi_ai_token_out: "Tokens out",
283
+ chuzi_ai_credits_cost: "AI credits",
284
+ chuzi_ai_scene_credits: "Scene credits",
285
+ chuzi_ai_total_cost: "Total create credits",
286
+ chuzi_ai_insufficient: "Not enough create credits for this generation.",
287
+ chuzi_ai_apply: "Build story",
288
+ chuzi_ai_applying: "Building scenes\u2026",
289
+ chuzi_ai_step_hero: "Hero",
290
+ chuzi_ai_step_hero_hint: "Who is your protagonist? Name, age, personality, and what makes them relatable.",
291
+ chuzi_ai_step_world: "Ordinary world",
292
+ chuzi_ai_step_world_hint: "Where does the story begin? Describe the setting and daily life before adventure calls.",
293
+ chuzi_ai_step_you: "You",
294
+ chuzi_ai_step_you_hint: "The character in a zone of comfort. What is their normal life like right now?",
295
+ chuzi_ai_step_need: "Need",
296
+ chuzi_ai_step_need_hint: "Something isn\u2019t right. What problem, longing, or imbalance disrupts their comfort?",
297
+ chuzi_ai_step_go: "Go",
298
+ chuzi_ai_step_go_hint: "Crossing the threshold. What event pushes them into the unknown?",
299
+ chuzi_ai_step_search: "Search",
300
+ chuzi_ai_step_search_hint: "Trials, growth, and exploration. What challenges and discoveries shape them?",
301
+ chuzi_ai_step_find: "Find",
302
+ chuzi_ai_step_find_hint: "The thing is found or revealed. What truth, object, or insight do they uncover?",
303
+ chuzi_ai_step_take: "Take",
304
+ chuzi_ai_step_take_hint: "Pay the price. What must they sacrifice or confront to claim their goal?",
305
+ chuzi_ai_step_return: "Return",
306
+ chuzi_ai_step_return_hint: "Back to the known world. How do they bring what they learned home?",
307
+ chuzi_ai_step_change: "Change",
308
+ chuzi_ai_step_change_hint: "Transformation achieved. How is the hero different from who they were at the start?",
309
+ chuzi_ai_step_tone: "Tone & mood",
310
+ chuzi_ai_step_tone_hint: "Genre, mood, and atmosphere (e.g. bittersweet sci-fi, cozy mystery, epic fantasy).",
311
+ chuzi_ai_monomyth_hero: "Hero\u2019s Journey: the protagonist",
312
+ chuzi_ai_monomyth_world: "Monomyth: ordinary world",
313
+ chuzi_ai_monomyth_you: "Story Circle: zone of comfort",
314
+ chuzi_ai_monomyth_need: "Story Circle: something isn\u2019t right",
315
+ chuzi_ai_monomyth_go: "Monomyth: crossing the first threshold",
316
+ chuzi_ai_monomyth_search: "Monomyth: road of trials",
317
+ chuzi_ai_monomyth_find: "Monomyth: the ultimate boon",
318
+ chuzi_ai_monomyth_take: "Monomyth: atonement with the father",
319
+ chuzi_ai_monomyth_return: "Monomyth: crossing the return threshold",
320
+ chuzi_ai_monomyth_change: "Monomyth: freedom to live",
188
321
  editor_ai_generate: "Generate Transmission",
189
322
  editor_ai_generating: "Transmitting Signal\u2026",
190
323
  editor_ai_mood_question: "What energy should this planet radiate?",
@@ -482,7 +615,7 @@ var REALMS = {
482
615
  select_genre: "Select biome",
483
616
  genre_field_aria: "Biome",
484
617
  delete_story_verb: "Delete grove",
485
- title_scene_default: "Title clearing",
618
+ title_scene_default: "Trailhead",
486
619
  choices_made_stat: "trails taken",
487
620
  content_rating: "Field Guide",
488
621
  content_rating_field_aria: "Field guide",
@@ -495,10 +628,10 @@ var REALMS = {
495
628
  editor_alt_media: "Effects",
496
629
  editor_choices: "Choices",
497
630
  editor_scene_settings: "Clearing Settings",
498
- editor_title_scene: "Title Clearing",
631
+ editor_title_scene: "Start",
499
632
  editor_film_title: "Grove Title",
500
633
  editor_film_title_hint: "Click to rename this grove",
501
- editor_ending_scene: "Roots",
634
+ editor_ending_scene: "End",
502
635
  editor_play: "Unfurl",
503
636
  editor_pause: "Rest",
504
637
  editor_prev_frame: "Previous Frame",
@@ -515,8 +648,61 @@ var REALMS = {
515
648
  editor_create_scene_cost: "1 Pollen",
516
649
  editor_delete_scene_cta: "Delete Scene",
517
650
  editor_delete_scene_confirm: "Click again to confirm",
518
- editor_scene_locked_delete: "Title and end scenes cannot be deleted.",
651
+ editor_scene_locked_delete: "Start and end scenes cannot be deleted.",
519
652
  editor_scene_color: "Clearing Tint",
653
+ chuzi_ai_name: "Chuzi AI",
654
+ chuzi_ai_create_with: "Create with Chuzi AI",
655
+ chuzi_ai_create_manual: "Enter title manually",
656
+ chuzi_ai_intro: "Answer story-circle prompts and Chuzi AI will grow your short story.",
657
+ chuzi_ai_step_of: "Step",
658
+ chuzi_ai_back: "Back",
659
+ chuzi_ai_next: "Next",
660
+ chuzi_ai_scenes_label: "scenes",
661
+ chuzi_ai_creating: "Creating\u2026",
662
+ chuzi_ai_generate_failed: "Story generation failed.",
663
+ chuzi_ai_build_failed: "Failed to build story.",
664
+ chuzi_ai_generate: "Generate story",
665
+ chuzi_ai_generating: "Generating\u2026",
666
+ chuzi_ai_token_in: "Tokens in",
667
+ chuzi_ai_token_out: "Tokens out",
668
+ chuzi_ai_credits_cost: "AI credits",
669
+ chuzi_ai_scene_credits: "Scene credits",
670
+ chuzi_ai_total_cost: "Total create credits",
671
+ chuzi_ai_insufficient: "Not enough create credits for this generation.",
672
+ chuzi_ai_apply: "Build story",
673
+ chuzi_ai_applying: "Building scenes\u2026",
674
+ chuzi_ai_step_hero: "Hero",
675
+ chuzi_ai_step_hero_hint: "Who is your protagonist? Name, age, personality, and what makes them relatable.",
676
+ chuzi_ai_step_world: "Ordinary world",
677
+ chuzi_ai_step_world_hint: "Where does the story begin? Describe the setting and daily life before adventure calls.",
678
+ chuzi_ai_step_you: "You",
679
+ chuzi_ai_step_you_hint: "The character in a zone of comfort. What is their normal life like right now?",
680
+ chuzi_ai_step_need: "Need",
681
+ chuzi_ai_step_need_hint: "Something isn\u2019t right. What problem, longing, or imbalance disrupts their comfort?",
682
+ chuzi_ai_step_go: "Go",
683
+ chuzi_ai_step_go_hint: "Crossing the threshold. What event pushes them into the unknown?",
684
+ chuzi_ai_step_search: "Search",
685
+ chuzi_ai_step_search_hint: "Trials, growth, and exploration. What challenges and discoveries shape them?",
686
+ chuzi_ai_step_find: "Find",
687
+ chuzi_ai_step_find_hint: "The thing is found or revealed. What truth, object, or insight do they uncover?",
688
+ chuzi_ai_step_take: "Take",
689
+ chuzi_ai_step_take_hint: "Pay the price. What must they sacrifice or confront to claim their goal?",
690
+ chuzi_ai_step_return: "Return",
691
+ chuzi_ai_step_return_hint: "Back to the known world. How do they bring what they learned home?",
692
+ chuzi_ai_step_change: "Change",
693
+ chuzi_ai_step_change_hint: "Transformation achieved. How is the hero different from who they were at the start?",
694
+ chuzi_ai_step_tone: "Tone & mood",
695
+ chuzi_ai_step_tone_hint: "Genre, mood, and atmosphere (e.g. bittersweet sci-fi, cozy mystery, epic fantasy).",
696
+ chuzi_ai_monomyth_hero: "Hero\u2019s Journey: the protagonist",
697
+ chuzi_ai_monomyth_world: "Monomyth: ordinary world",
698
+ chuzi_ai_monomyth_you: "Story Circle: zone of comfort",
699
+ chuzi_ai_monomyth_need: "Story Circle: something isn\u2019t right",
700
+ chuzi_ai_monomyth_go: "Monomyth: crossing the first threshold",
701
+ chuzi_ai_monomyth_search: "Monomyth: road of trials",
702
+ chuzi_ai_monomyth_find: "Monomyth: the ultimate boon",
703
+ chuzi_ai_monomyth_take: "Monomyth: atonement with the father",
704
+ chuzi_ai_monomyth_return: "Monomyth: crossing the return threshold",
705
+ chuzi_ai_monomyth_change: "Monomyth: freedom to live",
520
706
  editor_ai_generate: "Grow Bloom",
521
707
  editor_ai_generating: "Seed Sprouting\u2026",
522
708
  editor_ai_mood_question: "What feeling should this clearing evoke?",
@@ -812,7 +998,7 @@ var FALLBACK_LEXICON = {
812
998
  select_genre: "Select genre",
813
999
  genre_field_aria: "Film genre",
814
1000
  delete_story_verb: "Delete film",
815
- title_scene_default: "Title Scene",
1001
+ title_scene_default: "Start",
816
1002
  choices_made_stat: "choices made",
817
1003
  content_rating: "Rating",
818
1004
  content_rating_field_aria: "Content rating",
@@ -825,10 +1011,10 @@ var FALLBACK_LEXICON = {
825
1011
  editor_alt_media: "Effects",
826
1012
  editor_choices: "Choices",
827
1013
  editor_scene_settings: "Scene Settings",
828
- editor_title_scene: "Title Scene",
1014
+ editor_title_scene: "Start",
829
1015
  editor_film_title: "Film Title",
830
1016
  editor_film_title_hint: "Click to rename this film",
831
- editor_ending_scene: "Ending Scene",
1017
+ editor_ending_scene: "End",
832
1018
  editor_play: "Play",
833
1019
  editor_pause: "Pause",
834
1020
  editor_prev_frame: "Previous Frame",
@@ -845,8 +1031,61 @@ var FALLBACK_LEXICON = {
845
1031
  editor_create_scene_cost: "1 credit",
846
1032
  editor_delete_scene_cta: "Delete Scene",
847
1033
  editor_delete_scene_confirm: "Click again to confirm",
848
- editor_scene_locked_delete: "Title and end scenes cannot be deleted.",
1034
+ editor_scene_locked_delete: "Start and end scenes cannot be deleted.",
849
1035
  editor_scene_color: "Scene Color",
1036
+ chuzi_ai_name: "Chuzi AI",
1037
+ chuzi_ai_create_with: "Create with Chuzi AI",
1038
+ chuzi_ai_create_manual: "Enter title manually",
1039
+ chuzi_ai_intro: "Answer a few story-circle prompts and Chuzi AI will draft your short story.",
1040
+ chuzi_ai_step_of: "Step",
1041
+ chuzi_ai_back: "Back",
1042
+ chuzi_ai_next: "Next",
1043
+ chuzi_ai_scenes_label: "scenes",
1044
+ chuzi_ai_creating: "Creating\u2026",
1045
+ chuzi_ai_generate_failed: "Story generation failed.",
1046
+ chuzi_ai_build_failed: "Failed to build story.",
1047
+ chuzi_ai_generate: "Generate story",
1048
+ chuzi_ai_generating: "Generating\u2026",
1049
+ chuzi_ai_token_in: "Tokens in",
1050
+ chuzi_ai_token_out: "Tokens out",
1051
+ chuzi_ai_credits_cost: "AI credits",
1052
+ chuzi_ai_scene_credits: "Scene credits",
1053
+ chuzi_ai_total_cost: "Total create credits",
1054
+ chuzi_ai_insufficient: "Not enough create credits for this generation.",
1055
+ chuzi_ai_apply: "Build story",
1056
+ chuzi_ai_applying: "Building scenes\u2026",
1057
+ chuzi_ai_step_hero: "Hero",
1058
+ chuzi_ai_step_hero_hint: "Who is your protagonist? Name, age, personality, and what makes them relatable.",
1059
+ chuzi_ai_step_world: "Ordinary world",
1060
+ chuzi_ai_step_world_hint: "Where does the story begin? Describe the setting and daily life before adventure calls.",
1061
+ chuzi_ai_step_you: "You",
1062
+ chuzi_ai_step_you_hint: "The character in a zone of comfort. What is their normal life like right now?",
1063
+ chuzi_ai_step_need: "Need",
1064
+ chuzi_ai_step_need_hint: "Something isn\u2019t right. What problem, longing, or imbalance disrupts their comfort?",
1065
+ chuzi_ai_step_go: "Go",
1066
+ chuzi_ai_step_go_hint: "Crossing the threshold. What event pushes them into the unknown?",
1067
+ chuzi_ai_step_search: "Search",
1068
+ chuzi_ai_step_search_hint: "Trials, growth, and exploration. What challenges and discoveries shape them?",
1069
+ chuzi_ai_step_find: "Find",
1070
+ chuzi_ai_step_find_hint: "The thing is found or revealed. What truth, object, or insight do they uncover?",
1071
+ chuzi_ai_step_take: "Take",
1072
+ chuzi_ai_step_take_hint: "Pay the price. What must they sacrifice or confront to claim their goal?",
1073
+ chuzi_ai_step_return: "Return",
1074
+ chuzi_ai_step_return_hint: "Back to the known world. How do they bring what they learned home?",
1075
+ chuzi_ai_step_change: "Change",
1076
+ chuzi_ai_step_change_hint: "Transformation achieved. How is the hero different from who they were at the start?",
1077
+ chuzi_ai_step_tone: "Tone & mood",
1078
+ chuzi_ai_step_tone_hint: "Genre, mood, and atmosphere (e.g. bittersweet sci-fi, cozy mystery, epic fantasy).",
1079
+ chuzi_ai_monomyth_hero: "Hero\u2019s Journey: the protagonist",
1080
+ chuzi_ai_monomyth_world: "Monomyth: ordinary world",
1081
+ chuzi_ai_monomyth_you: "Story Circle: zone of comfort",
1082
+ chuzi_ai_monomyth_need: "Story Circle: something isn\u2019t right",
1083
+ chuzi_ai_monomyth_go: "Monomyth: crossing the first threshold",
1084
+ chuzi_ai_monomyth_search: "Monomyth: road of trials",
1085
+ chuzi_ai_monomyth_find: "Monomyth: the ultimate boon",
1086
+ chuzi_ai_monomyth_take: "Monomyth: atonement with the father",
1087
+ chuzi_ai_monomyth_return: "Monomyth: crossing the return threshold",
1088
+ chuzi_ai_monomyth_change: "Monomyth: freedom to live",
850
1089
  editor_ai_generate: "Generate with AI",
851
1090
  editor_ai_generating: "Generating\u2026",
852
1091
  editor_ai_mood_question: "What mood should this scene convey?",
@@ -1146,6 +1385,6 @@ function lexiconForRealm(realmId, locale = null) {
1146
1385
  return { ...fb, ...resolveRealm(realmId, locale) };
1147
1386
  }
1148
1387
 
1149
- export { CONTENT_RATINGS, CONTENT_RATING_IDS, CREDITS_PER_DOLLAR, CREDIT_CENTS_PER_UNIT, DEFAULT_LOCALE, FALLBACK_LEXICON, FALLBACK_LOCALES, LOCALE_LABELS, REALMS, REALM_IDS, SUPPORTED_LOCALES, defaultPurchaseCredits, formatCreditPrice, getRealmLexiconOverrides, isContentRating, isSupportedLocale, lexiconForRealm, matchAcceptLanguage, normalizeLocale, priceCentsForCredits, setRealmLexiconOverrides, t };
1388
+ export { CHUZI_AI_PROMPT_STEPS, CONTENT_RATINGS, CONTENT_RATING_IDS, CREDITS_PER_DOLLAR, CREDIT_CENTS_PER_UNIT, DEFAULT_LOCALE, FALLBACK_LEXICON, FALLBACK_LOCALES, LOCALE_LABELS, REALMS, REALM_IDS, SUPPORTED_LOCALES, defaultPurchaseCredits, formatCreditPrice, getRealmLexiconOverrides, isContentRating, isSupportedLocale, lexiconForRealm, matchAcceptLanguage, normalizeLocale, priceCentsForCredits, setRealmLexiconOverrides, t };
1150
1389
  //# sourceMappingURL=index.js.map
1151
1390
  //# sourceMappingURL=index.js.map