@chuzi/shared 1.3.43 → 1.3.44

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, AiStoryEstimateRequest, AiStoryEstimateResponse, AiStoryGenerateRequest, AiStoryGenerateResponse } 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, AiSceneEstimateRequest, AiSceneEstimateResponse, AiSceneGenerateRequest, AiSceneGenerateResponse } from '../types/index.js';
2
2
 
3
3
  /**
4
4
  * Token resolver returned by the host app. Called on every request; may be
@@ -194,6 +194,8 @@ interface ChuziClient {
194
194
  }): Promise<StoryStyleResponse>;
195
195
  storyEstimate(req: AiStoryEstimateRequest): Promise<AiStoryEstimateResponse>;
196
196
  storyGenerate(req: AiStoryGenerateRequest): Promise<AiStoryGenerateResponse>;
197
+ sceneEstimate(req: AiSceneEstimateRequest): Promise<AiSceneEstimateResponse>;
198
+ sceneGenerate(req: AiSceneGenerateRequest): Promise<AiSceneGenerateResponse>;
197
199
  };
198
200
  }
199
201
  /**
package/dist/api/index.js CHANGED
@@ -192,7 +192,13 @@ function createChuziClient(config) {
192
192
  reject: (id, req) => request("POST", `/api/v1/ai/generations/${encodeURIComponent(id)}/reject`, { body: req }),
193
193
  storyStyle: (storyId, opts) => request("GET", `/api/v1/ai/stories/${encodeURIComponent(storyId)}/style`, opts),
194
194
  storyEstimate: (req) => request("POST", "/api/v1/ai/story/estimate", { body: req }),
195
- storyGenerate: (req) => request("POST", "/api/v1/ai/story/generate", { body: req })
195
+ storyGenerate: (req) => request("POST", "/api/v1/ai/story/generate", { body: req }),
196
+ sceneEstimate: (req) => request("POST", `/api/v1/ai/stories/${encodeURIComponent(req.story_id)}/scene/estimate`, {
197
+ body: { brief: req.brief, mode: req.mode, scene_id: req.scene_id }
198
+ }),
199
+ sceneGenerate: (req) => request("POST", `/api/v1/ai/stories/${encodeURIComponent(req.story_id)}/scene/generate`, {
200
+ body: { brief: req.brief, mode: req.mode, scene_id: req.scene_id }
201
+ })
196
202
  }
197
203
  };
198
204
  }
@@ -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 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"]}
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 sceneEstimate(req: import(\"../types/index.js\").AiSceneEstimateRequest): Promise<import(\"../types/index.js\").AiSceneEstimateResponse>;\n sceneGenerate(req: import(\"../types/index.js\").AiSceneGenerateRequest): Promise<import(\"../types/index.js\").AiSceneGenerateResponse>;\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 sceneEstimate: (req) =>\n request(\"POST\", `/api/v1/ai/stories/${encodeURIComponent(req.story_id)}/scene/estimate`, {\n body: { brief: req.brief, mode: req.mode, scene_id: req.scene_id },\n }),\n sceneGenerate: (req) =>\n request(\"POST\", `/api/v1/ai/stories/${encodeURIComponent(req.story_id)}/scene/generate`, {\n body: { brief: req.brief, mode: req.mode, scene_id: req.scene_id },\n }),\n },\n };\n}\n"]}
@@ -286,6 +286,14 @@ var REALMS = {
286
286
  chuzi_ai_insufficient: "Not enough create credits for this generation.",
287
287
  chuzi_ai_apply: "Build story",
288
288
  chuzi_ai_applying: "Building scenes\u2026",
289
+ chuzi_ai_scene_create: "Create scene with Chuzi AI",
290
+ chuzi_ai_scene_overwrite: "Rewrite scene with Chuzi AI",
291
+ chuzi_ai_scene_brief: "Scene direction",
292
+ chuzi_ai_scene_brief_hint: "Describe what should happen in this scene. Chuzi AI reads your existing story for characters, tone, and style.",
293
+ chuzi_ai_scene_context_note: "Uses your story\u2019s existing scenes, typography, and art direction as context.",
294
+ chuzi_ai_scene_overwrite_confirm: "I understand this replaces this scene\u2019s text and styling.",
295
+ chuzi_ai_scene_apply_create: "Create scene",
296
+ chuzi_ai_scene_apply_overwrite: "Replace scene",
289
297
  chuzi_ai_step_hero: "Hero",
290
298
  chuzi_ai_step_hero_hint: "Who is your protagonist? Name, age, personality, and what makes them relatable.",
291
299
  chuzi_ai_step_world: "Ordinary world",
@@ -671,6 +679,14 @@ var REALMS = {
671
679
  chuzi_ai_insufficient: "Not enough create credits for this generation.",
672
680
  chuzi_ai_apply: "Build story",
673
681
  chuzi_ai_applying: "Building scenes\u2026",
682
+ chuzi_ai_scene_create: "Create scene with Chuzi AI",
683
+ chuzi_ai_scene_overwrite: "Rewrite scene with Chuzi AI",
684
+ chuzi_ai_scene_brief: "Scene direction",
685
+ chuzi_ai_scene_brief_hint: "Describe what should happen in this scene. Chuzi AI reads your existing story for characters, tone, and style.",
686
+ chuzi_ai_scene_context_note: "Uses your story\u2019s existing scenes, typography, and art direction as context.",
687
+ chuzi_ai_scene_overwrite_confirm: "I understand this replaces this scene\u2019s text and styling.",
688
+ chuzi_ai_scene_apply_create: "Create scene",
689
+ chuzi_ai_scene_apply_overwrite: "Replace scene",
674
690
  chuzi_ai_step_hero: "Hero",
675
691
  chuzi_ai_step_hero_hint: "Who is your protagonist? Name, age, personality, and what makes them relatable.",
676
692
  chuzi_ai_step_world: "Ordinary world",
@@ -1054,6 +1070,14 @@ var FALLBACK_LEXICON = {
1054
1070
  chuzi_ai_insufficient: "Not enough create credits for this generation.",
1055
1071
  chuzi_ai_apply: "Build story",
1056
1072
  chuzi_ai_applying: "Building scenes\u2026",
1073
+ chuzi_ai_scene_create: "Create scene with Chuzi AI",
1074
+ chuzi_ai_scene_overwrite: "Rewrite scene with Chuzi AI",
1075
+ chuzi_ai_scene_brief: "Scene direction",
1076
+ chuzi_ai_scene_brief_hint: "Describe what should happen in this scene. Chuzi AI reads your existing story for characters, tone, and style.",
1077
+ chuzi_ai_scene_context_note: "Uses your story\u2019s existing scenes, typography, and art direction as context.",
1078
+ chuzi_ai_scene_overwrite_confirm: "I understand this replaces this scene\u2019s text and styling.",
1079
+ chuzi_ai_scene_apply_create: "Create scene",
1080
+ chuzi_ai_scene_apply_overwrite: "Replace scene",
1057
1081
  chuzi_ai_step_hero: "Hero",
1058
1082
  chuzi_ai_step_hero_hint: "Who is your protagonist? Name, age, personality, and what makes them relatable.",
1059
1083
  chuzi_ai_step_world: "Ordinary world",