vidspotai-shared 1.0.100 → 1.0.101
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.
- package/lib/globals/aiModels/enums.d.ts +1 -0
- package/lib/globals/aiModels/enums.d.ts.map +1 -1
- package/lib/globals/aiModels/enums.js +3 -0
- package/lib/globals/aiModels/extendCapability.d.ts +26 -0
- package/lib/globals/aiModels/extendCapability.d.ts.map +1 -0
- package/lib/globals/aiModels/extendCapability.js +42 -0
- package/lib/globals/aiModels/index.d.ts +1 -0
- package/lib/globals/aiModels/index.d.ts.map +1 -1
- package/lib/globals/aiModels/index.js +1 -0
- package/lib/globals/aiModels/providers/hostedAvatars.js +10 -10
- package/lib/globals/types.d.ts +34 -2
- package/lib/globals/types.d.ts.map +1 -1
- package/lib/globals/types.js +37 -0
- package/lib/models/demoVideoProject.model.d.ts +213 -0
- package/lib/models/demoVideoProject.model.d.ts.map +1 -1
- package/lib/models/index.d.ts +2 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/index.js +2 -0
- package/lib/models/mediaUpload.model.d.ts +25 -0
- package/lib/models/mediaUpload.model.d.ts.map +1 -1
- package/lib/models/productConnection.model.d.ts +57 -0
- package/lib/models/productConnection.model.d.ts.map +1 -0
- package/lib/models/productConnection.model.js +7 -0
- package/lib/models/video.model.d.ts +11 -0
- package/lib/models/video.model.d.ts.map +1 -1
- package/lib/models/videoQaJob.model.d.ts +61 -0
- package/lib/models/videoQaJob.model.d.ts.map +1 -0
- package/lib/models/videoQaJob.model.js +16 -0
- package/lib/schemas/brandKit.schema.d.ts +3 -1
- package/lib/schemas/brandKit.schema.d.ts.map +1 -1
- package/lib/schemas/brandKit.schema.js +9 -0
- package/lib/schemas/brief.schema.d.ts +5 -4
- package/lib/schemas/brief.schema.d.ts.map +1 -1
- package/lib/schemas/brief.schema.js +23 -1
- package/lib/schemas/demoQuestion.schema.d.ts +24 -4
- package/lib/schemas/demoQuestion.schema.d.ts.map +1 -1
- package/lib/schemas/demoQuestion.schema.js +8 -2
- package/lib/schemas/demoSpec.schema.d.ts +40 -6
- package/lib/schemas/demoSpec.schema.d.ts.map +1 -1
- package/lib/schemas/demoSpec.schema.js +46 -1
- package/lib/schemas/project.schema.d.ts +33 -3
- package/lib/schemas/project.schema.d.ts.map +1 -1
- package/lib/schemas/project.schema.js +22 -0
- package/lib/schemas/social.schema.d.ts +1 -1
- package/lib/schemas/videoPlan.schema.d.ts +22 -20
- package/lib/schemas/videoPlan.schema.d.ts.map +1 -1
- package/lib/schemas/videoPlan.schema.js +19 -0
- package/lib/services/agent/editClassifier.d.ts +10 -10
- package/lib/services/agent/eval/types.d.ts +3 -2
- package/lib/services/agent/eval/types.d.ts.map +1 -1
- package/lib/services/agent/executor/core.d.ts.map +1 -1
- package/lib/services/agent/executor/core.js +11 -0
- package/lib/services/agent/planner/Planner.d.ts.map +1 -1
- package/lib/services/agent/planner/Planner.js +5 -0
- package/lib/services/agent/planner/overlayRegen.d.ts.map +1 -1
- package/lib/services/agent/planner/overlayRegen.js +5 -0
- package/lib/services/agent/planner/plannerMessages.d.ts.map +1 -1
- package/lib/services/agent/planner/plannerMessages.js +10 -1
- package/lib/services/agent/planner/scriptFirstPlanner.d.ts.map +1 -1
- package/lib/services/agent/planner/scriptFirstPlanner.js +2 -0
- package/lib/services/agent/regenCore.d.ts.map +1 -1
- package/lib/services/agent/regenCore.js +11 -1
- package/lib/services/agent/runHelpers.d.ts +8 -0
- package/lib/services/agent/runHelpers.d.ts.map +1 -1
- package/lib/services/agent/runHelpers.js +5 -1
- package/lib/services/agent/tools/chapterOutline.tool.d.ts +8 -0
- package/lib/services/agent/tools/chapterOutline.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/chapterOutline.tool.js +21 -8
- package/lib/services/agent/tools/composeScene.tool.d.ts +32 -2
- package/lib/services/agent/tools/composeScene.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/estimateCost.tool.d.ts +11 -1
- package/lib/services/agent/tools/estimateCost.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/extendVideo.tool.d.ts +9 -3
- package/lib/services/agent/tools/extendVideo.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/extendVideo.tool.js +12 -27
- package/lib/services/agent/tools/generateAvatarVideo.tool.d.ts +1 -1
- package/lib/services/agent/tools/generateScript.tool.d.ts +3 -2
- package/lib/services/agent/tools/generateScript.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/generateScript.tool.js +16 -7
- package/lib/services/agent/tools/generateVoiceover.tool.d.ts +1 -1
- package/lib/services/agent/tools/planVideo.tool.d.ts +11 -8
- package/lib/services/agent/tools/planVideo.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/render.tool.d.ts +11 -1
- package/lib/services/agent/tools/render.tool.d.ts.map +1 -1
- package/lib/services/agent/tools/searchStock.tool.d.ts +1 -1
- package/lib/services/agent/tools/searchUserLibrary.tool.d.ts +4 -4
- package/lib/services/aiGen/providers/kling/kling.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/kling.service.js +22 -3
- package/lib/services/aiGen/providers/kling/klingStatus.d.ts +7 -0
- package/lib/services/aiGen/providers/kling/klingStatus.d.ts.map +1 -1
- package/lib/services/aiGen/providers/kling/klingStatus.js +41 -4
- package/lib/services/aiGen/providers/pixverse/pixverse.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/pixverse/pixverse.service.js +25 -0
- package/lib/services/aiGen/providers/types.d.ts +20 -0
- package/lib/services/aiGen/providers/types.d.ts.map +1 -1
- package/lib/services/avatarGen/avatarProviderFactory.d.ts.map +1 -1
- package/lib/services/avatarGen/avatarProviderFactory.js +3 -0
- package/lib/services/avatarGen/index.d.ts +1 -0
- package/lib/services/avatarGen/index.d.ts.map +1 -1
- package/lib/services/avatarGen/index.js +1 -0
- package/lib/services/avatarGen/providers/synthesiaAvatarProvider.d.ts +53 -0
- package/lib/services/avatarGen/providers/synthesiaAvatarProvider.d.ts.map +1 -0
- package/lib/services/avatarGen/providers/synthesiaAvatarProvider.js +176 -0
- package/lib/services/demo/demoAuthor.d.ts +7 -0
- package/lib/services/demo/demoAuthor.d.ts.map +1 -1
- package/lib/services/demo/demoAuthor.js +2 -0
- package/lib/services/demo/demoAuthorPrompt.d.ts +6 -0
- package/lib/services/demo/demoAuthorPrompt.d.ts.map +1 -1
- package/lib/services/demo/demoAuthorPrompt.js +24 -2
- package/lib/services/demo/demoCaptions.d.ts +69 -0
- package/lib/services/demo/demoCaptions.d.ts.map +1 -0
- package/lib/services/demo/demoCaptions.js +152 -0
- package/lib/services/demo/demoMusic.d.ts +8 -1
- package/lib/services/demo/demoMusic.d.ts.map +1 -1
- package/lib/services/demo/demoMusic.js +32 -16
- package/lib/services/demo/demoScriptPrompt.d.ts +2 -1
- package/lib/services/demo/demoScriptPrompt.d.ts.map +1 -1
- package/lib/services/demo/demoScriptPrompt.js +29 -2
- package/lib/services/demo/demoStockAssets.d.ts +29 -0
- package/lib/services/demo/demoStockAssets.d.ts.map +1 -0
- package/lib/services/demo/demoStockAssets.js +107 -0
- package/lib/services/demo/index.d.ts +3 -0
- package/lib/services/demo/index.d.ts.map +1 -1
- package/lib/services/demo/index.js +3 -0
- package/lib/services/demo/productConnection.service.d.ts +78 -0
- package/lib/services/demo/productConnection.service.d.ts.map +1 -0
- package/lib/services/demo/productConnection.service.js +125 -0
- package/lib/services/editor/planToProject.d.ts.map +1 -1
- package/lib/services/editor/planToProject.helpers.d.ts +1 -0
- package/lib/services/editor/planToProject.helpers.d.ts.map +1 -1
- package/lib/services/editor/planToProject.helpers.js +3 -0
- package/lib/services/editor/planToProject.js +39 -0
- package/lib/services/editor/projectToDesign.js +13 -1
- package/lib/services/firestore.service.d.ts +14 -0
- package/lib/services/firestore.service.d.ts.map +1 -1
- package/lib/services/firestore.service.js +16 -0
- package/lib/services/translation/index.d.ts +1 -0
- package/lib/services/translation/index.d.ts.map +1 -1
- package/lib/services/translation/index.js +8 -1
- package/lib/services/translation/outputLanguage.d.ts +75 -0
- package/lib/services/translation/outputLanguage.d.ts.map +1 -0
- package/lib/services/translation/outputLanguage.js +190 -0
- package/lib/services/translation/translation.service.d.ts +13 -2
- package/lib/services/translation/translation.service.d.ts.map +1 -1
- package/lib/services/translation/translation.service.js +66 -5
- package/lib/services/tts/index.d.ts +1 -0
- package/lib/services/tts/index.d.ts.map +1 -1
- package/lib/services/tts/index.js +1 -0
- package/lib/services/tts/providers/elevenlabs.service.d.ts +7 -0
- package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
- package/lib/services/tts/providers/elevenlabs.service.js +69 -13
- package/lib/services/tts/types.d.ts +29 -0
- package/lib/services/tts/types.d.ts.map +1 -1
- package/lib/services/tts/wordTimings.d.ts +27 -0
- package/lib/services/tts/wordTimings.d.ts.map +1 -0
- package/lib/services/tts/wordTimings.js +57 -0
- package/lib/utils/billableDuration.d.ts +11 -0
- package/lib/utils/billableDuration.d.ts.map +1 -0
- package/lib/utils/billableDuration.js +91 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +3 -0
- package/lib/utils/mp4Duration.d.ts +38 -0
- package/lib/utils/mp4Duration.d.ts.map +1 -0
- package/lib/utils/mp4Duration.js +164 -0
- package/lib/utils/socialEntitlements.d.ts +51 -0
- package/lib/utils/socialEntitlements.d.ts.map +1 -0
- package/lib/utils/socialEntitlements.js +65 -0
- package/package.json +1 -1
package/lib/models/index.d.ts
CHANGED
|
@@ -12,5 +12,7 @@ export * from "./mediaUpload.model";
|
|
|
12
12
|
export * from "./social.model";
|
|
13
13
|
export * from "./demoVideoProject.model";
|
|
14
14
|
export * from "./githubConnection.model";
|
|
15
|
+
export * from "./productConnection.model";
|
|
15
16
|
export * from "./outreach.model";
|
|
17
|
+
export * from "./videoQaJob.model";
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
|
package/lib/models/index.js
CHANGED
|
@@ -28,4 +28,6 @@ __exportStar(require("./mediaUpload.model"), exports);
|
|
|
28
28
|
__exportStar(require("./social.model"), exports);
|
|
29
29
|
__exportStar(require("./demoVideoProject.model"), exports);
|
|
30
30
|
__exportStar(require("./githubConnection.model"), exports);
|
|
31
|
+
__exportStar(require("./productConnection.model"), exports);
|
|
31
32
|
__exportStar(require("./outreach.model"), exports);
|
|
33
|
+
__exportStar(require("./videoQaJob.model"), exports);
|
|
@@ -7,6 +7,19 @@
|
|
|
7
7
|
* (tags, folders, sharing) is v2.
|
|
8
8
|
*/
|
|
9
9
|
export type EMediaUploadKind = "image" | "video" | "audio" | "other";
|
|
10
|
+
/**
|
|
11
|
+
* Lifecycle of an upload record.
|
|
12
|
+
*
|
|
13
|
+
* `single-upload` writes its record only once the bytes are already in GCS, so
|
|
14
|
+
* it has no use for this and legacy rows carry no `status` at all — absent is
|
|
15
|
+
* therefore read as "ready" everywhere. The resumable path (see
|
|
16
|
+
* `mediaUploadSession.controller.ts`) must reserve the row BEFORE the browser
|
|
17
|
+
* starts PUTting, because the object path is the thing being authorized; those
|
|
18
|
+
* rows start `pending` and are flipped once the object is verified present.
|
|
19
|
+
* `aborted` is a tombstone — kept rather than deleted so an interrupted upload
|
|
20
|
+
* can be resumed or garbage-collected on evidence instead of guesswork.
|
|
21
|
+
*/
|
|
22
|
+
export type EMediaUploadStatus = "pending" | "ready" | "aborted";
|
|
10
23
|
export interface IMediaUploadModel {
|
|
11
24
|
userId: string;
|
|
12
25
|
url: string;
|
|
@@ -15,5 +28,17 @@ export interface IMediaUploadModel {
|
|
|
15
28
|
kind: EMediaUploadKind;
|
|
16
29
|
sizeBytes?: number;
|
|
17
30
|
createdAt: string;
|
|
31
|
+
/** Absent means ready — see EMediaUploadStatus. */
|
|
32
|
+
status?: EMediaUploadStatus;
|
|
33
|
+
/**
|
|
34
|
+
* Bucket-relative object path (e.g. `media-uploads/foo-ab12-171.webm`).
|
|
35
|
+
*
|
|
36
|
+
* Only set by the resumable path, which needs to re-derive the GCS handle at
|
|
37
|
+
* completion time. It is deliberately NOT taken from the client on completion:
|
|
38
|
+
* the client would then be able to claim any object in the bucket as its own.
|
|
39
|
+
*/
|
|
40
|
+
objectPath?: string;
|
|
41
|
+
/** Set when this row came from the in-app screen recorder rather than a file picker. */
|
|
42
|
+
source?: "screen-recorder";
|
|
18
43
|
}
|
|
19
44
|
//# sourceMappingURL=mediaUpload.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediaUpload.model.d.ts","sourceRoot":"","sources":["../../src/models/mediaUpload.model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"mediaUpload.model.d.ts","sourceRoot":"","sources":["../../src/models/mediaUpload.model.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { FieldValue } from "firebase-admin/firestore";
|
|
2
|
+
/**
|
|
3
|
+
* Product sign-in connection — the stored, encrypted result of a user signing
|
|
4
|
+
* into their own SaaS product once via the self-hosted live-browser session, so
|
|
5
|
+
* the worker can replay it headlessly and RECORD the authenticated UI as B-roll
|
|
6
|
+
* (Tier 2 of the product-footage-capture feature — notes/PRODUCT_FOOTAGE_CAPTURE_PLAN.md).
|
|
7
|
+
*
|
|
8
|
+
* We NEVER store the user's credentials. The human signs in inside a browser
|
|
9
|
+
* they drive (Google popup, email/password, SSO, magic link — whichever their
|
|
10
|
+
* product uses); we capture only the RESULT — a Playwright-style `storageState`
|
|
11
|
+
* (cookies + localStorage across the origins touched during sign-in) — and store
|
|
12
|
+
* it ENCRYPTED at rest via the shared token vault (AES-256-GCM,
|
|
13
|
+
* `SOCIAL_TOKEN_ENC_KEY`), exactly like {@link IGithubConnectionModel}. Only a
|
|
14
|
+
* worker / Cloud Function decrypts it at replay time.
|
|
15
|
+
*
|
|
16
|
+
* Doc id = `${userId}__${host}` so re-connecting the same product upserts (a
|
|
17
|
+
* fresh session replaces the expired one) and a user can hold several product
|
|
18
|
+
* profiles (one per host), reused across demo projects. Sessions expire, so the
|
|
19
|
+
* worker flips `status` to "expired" when a replay hits a login wall, and the
|
|
20
|
+
* needs_signin resume loop asks the user to reconnect.
|
|
21
|
+
*/
|
|
22
|
+
export interface IProductConnectionModel {
|
|
23
|
+
/** Owning user (also part of the doc id). */
|
|
24
|
+
userId: string;
|
|
25
|
+
/** Origin host of the connected product (part of the doc id), e.g. "app.acme.com". */
|
|
26
|
+
host: string;
|
|
27
|
+
/** The URL the user connected / the default recording target. */
|
|
28
|
+
productUrl: string;
|
|
29
|
+
/**
|
|
30
|
+
* All web origins captured in the session (multi-origin auth — e.g. a product
|
|
31
|
+
* spanning app.acme.com + auth.acme.com). storageState is keyed per origin.
|
|
32
|
+
*/
|
|
33
|
+
origins: string[];
|
|
34
|
+
/** Optional user-facing label ("My dashboard", "Acme staging"). */
|
|
35
|
+
label?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Playwright-style `storageState` (cookies + localStorage) serialized to JSON
|
|
38
|
+
* then ENCRYPTED via the shared token vault. Never store or log plaintext.
|
|
39
|
+
* Decrypt with `decryptToken` only inside a worker / Cloud Function at replay.
|
|
40
|
+
*/
|
|
41
|
+
stateEnc: string;
|
|
42
|
+
/**
|
|
43
|
+
* Best-effort epoch ms of the earliest captured cookie expiry — drives the
|
|
44
|
+
* "reconnect soon" UX. Absent when no expiries were readable (session cookies).
|
|
45
|
+
*/
|
|
46
|
+
expiresHint?: number;
|
|
47
|
+
/** Lifecycle: "active" until a replay detects the session no longer authenticates. */
|
|
48
|
+
status: "active" | "expired";
|
|
49
|
+
/** When the session was captured / last refreshed. */
|
|
50
|
+
capturedAt: FieldValue;
|
|
51
|
+
/** When a worker last replayed it for a recording (observability). */
|
|
52
|
+
lastUsedAt?: FieldValue;
|
|
53
|
+
updatedAt: FieldValue;
|
|
54
|
+
}
|
|
55
|
+
/** Deterministic doc id for a user's product connection (one per host). */
|
|
56
|
+
export declare function productConnectionDocId(userId: string, host: string): string;
|
|
57
|
+
//# sourceMappingURL=productConnection.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"productConnection.model.d.ts","sourceRoot":"","sources":["../../src/models/productConnection.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC7B,sDAAsD;IACtD,UAAU,EAAE,UAAU,CAAC;IACvB,sEAAsE;IACtE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.productConnectionDocId = productConnectionDocId;
|
|
4
|
+
/** Deterministic doc id for a user's product connection (one per host). */
|
|
5
|
+
function productConnectionDocId(userId, host) {
|
|
6
|
+
return `${userId}__${host}`;
|
|
7
|
+
}
|
|
@@ -16,7 +16,18 @@ export interface IVideoScene {
|
|
|
16
16
|
*/
|
|
17
17
|
taskProvider?: string;
|
|
18
18
|
sceneIndex: number;
|
|
19
|
+
/** REQUESTED duration, in seconds. What we asked the provider for. */
|
|
19
20
|
duration?: number;
|
|
21
|
+
/**
|
|
22
|
+
* DELIVERED duration, in seconds, when the provider reports it
|
|
23
|
+
* (VideoStatusResult.durationSec). Billing prefers this over `duration`.
|
|
24
|
+
*
|
|
25
|
+
* These diverge whenever a provider ignores or clamps the request — most
|
|
26
|
+
* sharply on video-extend, where Kling/Pixverse append a fixed native
|
|
27
|
+
* increment (~5s) regardless of what was asked. Undefined for providers that
|
|
28
|
+
* don't report a length; billing then falls back to `duration` as before.
|
|
29
|
+
*/
|
|
30
|
+
actualDurationSec?: number;
|
|
20
31
|
prompt?: string;
|
|
21
32
|
outputVideoUrl?: string;
|
|
22
33
|
inputVideoUrl?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { IDemoQaReport } from "./demoVideoProject.model";
|
|
2
|
+
/**
|
|
3
|
+
* Output-QA job model — the main-pipeline sibling of the demo supervisor's
|
|
4
|
+
* `qaReport` (see notes/SAAS_DEMO_GENERATOR_PLAN.md §12).
|
|
5
|
+
*
|
|
6
|
+
* Backs the MCP `check_video_quality` / `repair_video` tools. Those are
|
|
7
|
+
* enqueue→poll like every other long-running VidSpotAI flow: the MCP server
|
|
8
|
+
* validates + writes one of these docs + enqueues, and the Express worker (the
|
|
9
|
+
* only surface with ffmpeg installed) does the download/probe/repair and writes
|
|
10
|
+
* the result back here. The MCP tool polls this doc to completion.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately its OWN collection rather than a field on `videoJobs`: QA is a
|
|
13
|
+
* per-request event (you can inspect the same video repeatedly, with different
|
|
14
|
+
* repair sets), and keeping it separate means the main generation model's shape
|
|
15
|
+
* is untouched.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The QA report shape is pipeline-agnostic despite its historical `Demo` name —
|
|
19
|
+
* it's produced by one engine (`services/qa/outputQa.ts`) for both pipelines.
|
|
20
|
+
* This alias lets main-pipeline code refer to it without reading as demo code.
|
|
21
|
+
*/
|
|
22
|
+
export type IOutputQaReport = IDemoQaReport;
|
|
23
|
+
export declare enum EVideoQaJobStatus {
|
|
24
|
+
QUEUED = "queued",
|
|
25
|
+
RUNNING = "running",
|
|
26
|
+
COMPLETED = "completed",
|
|
27
|
+
FAILED = "failed"
|
|
28
|
+
}
|
|
29
|
+
/** What the caller asked for. `inspect` never writes; `repair` may re-upload. */
|
|
30
|
+
export declare enum EVideoQaMode {
|
|
31
|
+
INSPECT = "inspect",
|
|
32
|
+
REPAIR = "repair"
|
|
33
|
+
}
|
|
34
|
+
export interface IVideoQaJobModel {
|
|
35
|
+
/** Owner — always the authenticated caller; enforced at enqueue AND re-checked
|
|
36
|
+
* in the worker, so a forged doc can't make the worker touch someone's file. */
|
|
37
|
+
userId: string;
|
|
38
|
+
/** The `videoJobs` doc whose output is being inspected/repaired. */
|
|
39
|
+
videoJobId: string;
|
|
40
|
+
status: EVideoQaJobStatus;
|
|
41
|
+
mode: EVideoQaMode;
|
|
42
|
+
/**
|
|
43
|
+
* Repairs the caller permitted, for `repair` mode. Always a subset of the
|
|
44
|
+
* closed allow-list in `demoFfmpegTools.repairOutput`; empty in `inspect` mode.
|
|
45
|
+
*/
|
|
46
|
+
requestedFixes: string[];
|
|
47
|
+
/** The output URL as it stood when the job was enqueued. */
|
|
48
|
+
sourceVideoUrl: string;
|
|
49
|
+
report?: IOutputQaReport;
|
|
50
|
+
/** Set only when a repair changed the bytes AND the re-upload succeeded. */
|
|
51
|
+
repairedVideoUrl?: string;
|
|
52
|
+
/** True when `repairedVideoUrl` was written back onto the videoJobs doc. */
|
|
53
|
+
appliedToVideoJob?: boolean;
|
|
54
|
+
errorMessage?: string;
|
|
55
|
+
createdAt: string;
|
|
56
|
+
updatedAt: string;
|
|
57
|
+
/** Epoch ms the worker started, for stuck-job triage. */
|
|
58
|
+
startedAt?: number;
|
|
59
|
+
finishedAt?: number;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=videoQaJob.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoQaJob.model.d.ts","sourceRoot":"","sources":["../../src/models/videoQaJob.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;AAE5C,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED,iFAAiF;AACjF,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B;oFACgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IAGvB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EVideoQaMode = exports.EVideoQaJobStatus = void 0;
|
|
4
|
+
var EVideoQaJobStatus;
|
|
5
|
+
(function (EVideoQaJobStatus) {
|
|
6
|
+
EVideoQaJobStatus["QUEUED"] = "queued";
|
|
7
|
+
EVideoQaJobStatus["RUNNING"] = "running";
|
|
8
|
+
EVideoQaJobStatus["COMPLETED"] = "completed";
|
|
9
|
+
EVideoQaJobStatus["FAILED"] = "failed";
|
|
10
|
+
})(EVideoQaJobStatus || (exports.EVideoQaJobStatus = EVideoQaJobStatus = {}));
|
|
11
|
+
/** What the caller asked for. `inspect` never writes; `repair` may re-upload. */
|
|
12
|
+
var EVideoQaMode;
|
|
13
|
+
(function (EVideoQaMode) {
|
|
14
|
+
EVideoQaMode["INSPECT"] = "inspect";
|
|
15
|
+
EVideoQaMode["REPAIR"] = "repair";
|
|
16
|
+
})(EVideoQaMode || (exports.EVideoQaMode = EVideoQaMode = {}));
|
|
@@ -20,6 +20,7 @@ export declare const BrandIdentitySchema: z.ZodObject<{
|
|
|
20
20
|
brandName: z.ZodOptional<z.ZodString>;
|
|
21
21
|
wordmark: z.ZodOptional<z.ZodString>;
|
|
22
22
|
logoUrl: z.ZodOptional<z.ZodString>;
|
|
23
|
+
siteUrl: z.ZodOptional<z.ZodString>;
|
|
23
24
|
}, z.core.$strip>;
|
|
24
25
|
export declare const BrandReferenceSchema: z.ZodObject<{
|
|
25
26
|
url: z.ZodString;
|
|
@@ -31,6 +32,7 @@ export declare const BrandKitSchema: z.ZodObject<{
|
|
|
31
32
|
brandName: z.ZodOptional<z.ZodString>;
|
|
32
33
|
wordmark: z.ZodOptional<z.ZodString>;
|
|
33
34
|
logoUrl: z.ZodOptional<z.ZodString>;
|
|
35
|
+
siteUrl: z.ZodOptional<z.ZodString>;
|
|
34
36
|
}, z.core.$strip>>;
|
|
35
37
|
colors: z.ZodDefault<z.ZodObject<{
|
|
36
38
|
primary: z.ZodOptional<z.ZodString>;
|
|
@@ -58,7 +60,7 @@ export declare const BrandKitSchema: z.ZodObject<{
|
|
|
58
60
|
senior: "senior";
|
|
59
61
|
}>>;
|
|
60
62
|
accent: z.ZodOptional<z.ZodString>;
|
|
61
|
-
language: z.
|
|
63
|
+
language: z.ZodOptional<z.ZodString>;
|
|
62
64
|
voiceId: z.ZodOptional<z.ZodString>;
|
|
63
65
|
style: z.ZodOptional<z.ZodEnum<{
|
|
64
66
|
energetic: "energetic";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brandKit.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/brandKit.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBAa3B,CAAC;AAEH,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"brandKit.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/brandKit.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;GAIG;AAEH,eAAO,MAAM,iBAAiB;;;;;iBAM5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBAa3B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;iBAa9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkBzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -34,6 +34,15 @@ exports.BrandIdentitySchema = zod_1.z.object({
|
|
|
34
34
|
brandName: zod_1.z.string().optional(),
|
|
35
35
|
wordmark: zod_1.z.string().optional(),
|
|
36
36
|
logoUrl: zod_1.z.string().url().optional(),
|
|
37
|
+
/**
|
|
38
|
+
* The product's own web address. Rendered in the address bar of any browser
|
|
39
|
+
* <DeviceFrame>, which otherwise falls back to the placeholder
|
|
40
|
+
* "app.example.com" — a stand-in that reads as an unfinished mock the moment
|
|
41
|
+
* real product footage sits behind it. The demo pipeline already resolves a
|
|
42
|
+
* website for every author (`authorInput.websiteUrl`), so this is normally
|
|
43
|
+
* populated for free rather than being one more thing to ask for.
|
|
44
|
+
*/
|
|
45
|
+
siteUrl: zod_1.z.string().url().optional(),
|
|
37
46
|
});
|
|
38
47
|
exports.BrandReferenceSchema = zod_1.z.object({
|
|
39
48
|
url: zod_1.z.string().url(),
|
|
@@ -47,8 +47,8 @@ export declare const HookStyleSchema: z.ZodEnum<{
|
|
|
47
47
|
"voiceover-only": "voiceover-only";
|
|
48
48
|
}>;
|
|
49
49
|
export declare const PacingSchema: z.ZodEnum<{
|
|
50
|
-
medium: "medium";
|
|
51
50
|
fast: "fast";
|
|
51
|
+
medium: "medium";
|
|
52
52
|
slow: "slow";
|
|
53
53
|
"very-fast": "very-fast";
|
|
54
54
|
}>;
|
|
@@ -114,7 +114,7 @@ export declare const VoiceProfileSchema: z.ZodObject<{
|
|
|
114
114
|
senior: "senior";
|
|
115
115
|
}>>;
|
|
116
116
|
accent: z.ZodOptional<z.ZodString>;
|
|
117
|
-
language: z.
|
|
117
|
+
language: z.ZodOptional<z.ZodString>;
|
|
118
118
|
voiceId: z.ZodOptional<z.ZodString>;
|
|
119
119
|
style: z.ZodOptional<z.ZodEnum<{
|
|
120
120
|
energetic: "energetic";
|
|
@@ -198,8 +198,8 @@ export declare const VideoBriefSchema: z.ZodObject<{
|
|
|
198
198
|
"voiceover-only": "voiceover-only";
|
|
199
199
|
}>>;
|
|
200
200
|
pacing: z.ZodOptional<z.ZodEnum<{
|
|
201
|
-
medium: "medium";
|
|
202
201
|
fast: "fast";
|
|
202
|
+
medium: "medium";
|
|
203
203
|
slow: "slow";
|
|
204
204
|
"very-fast": "very-fast";
|
|
205
205
|
}>>;
|
|
@@ -218,6 +218,7 @@ export declare const VideoBriefSchema: z.ZodObject<{
|
|
|
218
218
|
L2: "L2";
|
|
219
219
|
L3: "L3";
|
|
220
220
|
}>>;
|
|
221
|
+
outputLanguage: z.ZodOptional<z.ZodString>;
|
|
221
222
|
voice: z.ZodOptional<z.ZodObject<{
|
|
222
223
|
gender: z.ZodOptional<z.ZodEnum<{
|
|
223
224
|
male: "male";
|
|
@@ -232,7 +233,7 @@ export declare const VideoBriefSchema: z.ZodObject<{
|
|
|
232
233
|
senior: "senior";
|
|
233
234
|
}>>;
|
|
234
235
|
accent: z.ZodOptional<z.ZodString>;
|
|
235
|
-
language: z.
|
|
236
|
+
language: z.ZodOptional<z.ZodString>;
|
|
236
237
|
voiceId: z.ZodOptional<z.ZodString>;
|
|
237
238
|
style: z.ZodOptional<z.ZodEnum<{
|
|
238
239
|
energetic: "energetic";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brief.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/brief.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;EAc3B,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;EAUrB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;EAAkD,CAAC;AAE5E;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB;;;;;;;EAA+C,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CASjE;AAKD,eAAO,MAAM,gBAAgB;;;;;;;;;;;EAW3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"brief.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/brief.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;GAWG;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;EAc3B,CAAC;AAEH,eAAO,MAAM,UAAU;;;;;;;;;;EAUrB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;EAQ1B,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;EAAkD,CAAC;AAE5E;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,gBAAgB;;;;;;;EAA+C,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,UAAU,CASjE;AAKD,eAAO,MAAM,gBAAgB;;;;;;;;;;;EAW3B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkB7B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAiB7B,CAAC;AAEH,eAAO,MAAM,YAAY;;;iBAKvB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;iBAa9B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkG3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -112,7 +112,16 @@ exports.VoiceProfileSchema = zod_1.z.object({
|
|
|
112
112
|
gender: zod_1.z.enum(["female", "male", "neutral"]).optional(),
|
|
113
113
|
ageRange: zod_1.z.enum(["child", "teen", "young-adult", "adult", "senior"]).optional(),
|
|
114
114
|
accent: zod_1.z.string().optional(),
|
|
115
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Per-voice language override. Optional (was `.default("en")`) — the default
|
|
117
|
+
* was actively harmful: the whole brief is serialized into the planner's
|
|
118
|
+
* user message, so every plan literally showed the model
|
|
119
|
+
* `"voice": { "language": "en" }` and got English narration back even when
|
|
120
|
+
* the user wrote their brief in another language. The canonical field is now
|
|
121
|
+
* `VideoBriefSchema.outputLanguage`; this stays for back-compat and for the
|
|
122
|
+
* rare case of a voice that should differ from the video's output language.
|
|
123
|
+
*/
|
|
124
|
+
language: zod_1.z.string().optional(),
|
|
116
125
|
/** Reference to a TTS voice id once selected. */
|
|
117
126
|
voiceId: zod_1.z.string().optional(),
|
|
118
127
|
/** AG-31: emotion / delivery style. Mapped to provider voice_settings by executor. */
|
|
@@ -172,6 +181,19 @@ exports.VideoBriefSchema = zod_1.z.object({
|
|
|
172
181
|
* (L-5) rather than the planner.
|
|
173
182
|
*/
|
|
174
183
|
lengthTier: exports.LengthTierSchema.optional(),
|
|
184
|
+
/**
|
|
185
|
+
* The language the VIEWER hears and reads — narration, captions, on-screen
|
|
186
|
+
* copy, and the plan title. ISO 639-1 (or "zh-cn"/"zh-tw").
|
|
187
|
+
*
|
|
188
|
+
* Resolved automatically at intake by `resolveOutputLanguage`: the language
|
|
189
|
+
* the user wrote `rawPrompt` in wins, falling back to their UI locale, then
|
|
190
|
+
* English. There is no user-facing picker by design.
|
|
191
|
+
*
|
|
192
|
+
* Explicitly NOT the prompt language — scene `prompt`/`intent` stay English
|
|
193
|
+
* because the image/video providers are tuned on English. Absent = English
|
|
194
|
+
* (every pre-existing brief), so the common path is unchanged.
|
|
195
|
+
*/
|
|
196
|
+
outputLanguage: zod_1.z.string().optional(),
|
|
175
197
|
voice: exports.VoiceProfileSchema.optional(),
|
|
176
198
|
music: exports.MusicProfileSchema.optional(),
|
|
177
199
|
cta: zod_1.z.string().optional(),
|
|
@@ -85,7 +85,12 @@ export declare const TextQuestionSchema: z.ZodObject<{
|
|
|
85
85
|
* The frontend uploads via /v1/media/single-upload and answers with the URLs.
|
|
86
86
|
*/
|
|
87
87
|
export declare const UploadQuestionSchema: z.ZodObject<{
|
|
88
|
-
accept: z.ZodDefault<z.
|
|
88
|
+
accept: z.ZodDefault<z.ZodEnum<{
|
|
89
|
+
any: "any";
|
|
90
|
+
video: "video";
|
|
91
|
+
image: "image";
|
|
92
|
+
audio: "audio";
|
|
93
|
+
}>>;
|
|
89
94
|
multiple: z.ZodDefault<z.ZodBoolean>;
|
|
90
95
|
maxFiles: z.ZodDefault<z.ZodNumber>;
|
|
91
96
|
id: z.ZodString;
|
|
@@ -139,7 +144,12 @@ export declare const DemoQuestionSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
139
144
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
140
145
|
kind: z.ZodLiteral<"text">;
|
|
141
146
|
}, z.core.$strip>, z.ZodObject<{
|
|
142
|
-
accept: z.ZodDefault<z.
|
|
147
|
+
accept: z.ZodDefault<z.ZodEnum<{
|
|
148
|
+
any: "any";
|
|
149
|
+
video: "video";
|
|
150
|
+
image: "image";
|
|
151
|
+
audio: "audio";
|
|
152
|
+
}>>;
|
|
143
153
|
multiple: z.ZodDefault<z.ZodBoolean>;
|
|
144
154
|
maxFiles: z.ZodDefault<z.ZodNumber>;
|
|
145
155
|
id: z.ZodString;
|
|
@@ -196,7 +206,12 @@ export declare const DemoQuestionsSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.
|
|
|
196
206
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
197
207
|
kind: z.ZodLiteral<"text">;
|
|
198
208
|
}, z.core.$strip>, z.ZodObject<{
|
|
199
|
-
accept: z.ZodDefault<z.
|
|
209
|
+
accept: z.ZodDefault<z.ZodEnum<{
|
|
210
|
+
any: "any";
|
|
211
|
+
video: "video";
|
|
212
|
+
image: "image";
|
|
213
|
+
audio: "audio";
|
|
214
|
+
}>>;
|
|
200
215
|
multiple: z.ZodDefault<z.ZodBoolean>;
|
|
201
216
|
maxFiles: z.ZodDefault<z.ZodNumber>;
|
|
202
217
|
id: z.ZodString;
|
|
@@ -258,7 +273,12 @@ export declare const DemoTriageResultSchema: z.ZodObject<{
|
|
|
258
273
|
required: z.ZodDefault<z.ZodBoolean>;
|
|
259
274
|
kind: z.ZodLiteral<"text">;
|
|
260
275
|
}, z.core.$strip>, z.ZodObject<{
|
|
261
|
-
accept: z.ZodDefault<z.
|
|
276
|
+
accept: z.ZodDefault<z.ZodEnum<{
|
|
277
|
+
any: "any";
|
|
278
|
+
video: "video";
|
|
279
|
+
image: "image";
|
|
280
|
+
audio: "audio";
|
|
281
|
+
}>>;
|
|
262
282
|
multiple: z.ZodDefault<z.ZodBoolean>;
|
|
263
283
|
maxFiles: z.ZodDefault<z.ZodNumber>;
|
|
264
284
|
id: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"demoQuestion.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/demoQuestion.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AAEH,gEAAgE;AAChE,eAAO,MAAM,wBAAwB;;;;iBAOnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAc1E,+BAA+B;AAC/B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAMrC,CAAC;AAEH,kCAAkC;AAClC,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAQpC,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,oBAAoB;;;;;;;;;iBAQ/B,CAAC;AAEH,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB;;;;;;;;;iBAO7B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"demoQuestion.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/demoQuestion.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AAEH,gEAAgE;AAChE,eAAO,MAAM,wBAAwB;;;;iBAOnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAc1E,+BAA+B;AAC/B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAMrC,CAAC;AAEH,kCAAkC;AAClC,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;iBAQpC,CAAC;AAEH,gDAAgD;AAChD,eAAO,MAAM,oBAAoB;;;;;;;;;iBAQ/B,CAAC;AAEH,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB;;;;;;;;;iBAO7B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;iBAe/B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAM7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEpD,kFAAkF;AAClF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAAqC,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,YAAY,EAAE,EACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmFtG"}
|
|
@@ -89,8 +89,14 @@ exports.TextQuestionSchema = zod_1.z.object({
|
|
|
89
89
|
exports.UploadQuestionSchema = zod_1.z.object({
|
|
90
90
|
kind: zod_1.z.literal("upload"),
|
|
91
91
|
...QuestionBase,
|
|
92
|
-
/**
|
|
93
|
-
|
|
92
|
+
/**
|
|
93
|
+
* What the picker should accept. Widened beyond images so the worker can ask
|
|
94
|
+
* for a logo/screenshots ("image"), a music bed ("audio"), a voiceover track
|
|
95
|
+
* ("audio"), or real product footage ("video") — the "ask before improvising"
|
|
96
|
+
* asset asks. "any" is the escape hatch. The frontend maps this to the file
|
|
97
|
+
* input's `accept` attribute; validation only enforces http(s) URLs (below).
|
|
98
|
+
*/
|
|
99
|
+
accept: zod_1.z.enum(["image", "audio", "video", "any"]).default("image"),
|
|
94
100
|
/** Allow more than one file (answer becomes string[]). */
|
|
95
101
|
multiple: zod_1.z.boolean().default(false),
|
|
96
102
|
/** Upper bound when `multiple`. */
|