@clipwright/core 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/dist/billing-terms.d.ts +19 -0
- package/dist/billing-terms.js +8 -0
- package/dist/billing-terms.js.map +1 -0
- package/dist/broll-policy.d.ts +31 -0
- package/dist/broll-policy.js +24 -0
- package/dist/broll-policy.js.map +1 -0
- package/dist/contract-dispositions.d.ts +65 -3
- package/dist/contract-dispositions.js +25 -21
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/endpoints.d.ts +0 -2
- package/dist/endpoints.js +5 -0
- package/dist/endpoints.js.map +1 -1
- package/dist/face-billing.d.ts +116 -0
- package/dist/face-billing.js +83 -0
- package/dist/face-billing.js.map +1 -0
- package/dist/face-delivery.d.ts +17 -0
- package/dist/face-delivery.js +12 -0
- package/dist/face-delivery.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/long-form-pricing.d.ts +48 -0
- package/dist/long-form-pricing.js +73 -0
- package/dist/long-form-pricing.js.map +1 -0
- package/dist/long-form-profile.d.ts +5 -0
- package/dist/long-form-profile.js +6 -0
- package/dist/long-form-profile.js.map +1 -0
- package/dist/media-timebase.d.ts +2 -0
- package/dist/media-timebase.js +3 -0
- package/dist/media-timebase.js.map +1 -0
- package/dist/public-endpoints.d.ts +2 -0
- package/dist/public-endpoints.js +2 -0
- package/dist/public-endpoints.js.map +1 -1
- package/dist/render-backend.d.ts +3 -1
- package/dist/runs.d.ts +106 -0
- package/dist/runs.js +12 -0
- package/dist/runs.js.map +1 -1
- package/dist/semantic-inserts.d.ts +63 -0
- package/dist/semantic-inserts.js +160 -0
- package/dist/semantic-inserts.js.map +1 -0
- package/dist/skills.d.ts +210 -0
- package/dist/skills.js +66 -11
- package/dist/skills.js.map +1 -1
- package/dist/speech-rhythm-contract.d.ts +20 -0
- package/dist/speech-rhythm-contract.js +22 -0
- package/dist/speech-rhythm-contract.js.map +1 -0
- package/dist/speech-rhythm.d.ts +21 -0
- package/dist/speech-rhythm.js +47 -0
- package/dist/speech-rhythm.js.map +1 -0
- package/dist/tts-backend.d.ts +1 -0
- package/dist/tts-backend.js.map +1 -1
- package/dist/voice-admission.d.ts +40 -0
- package/dist/voice-preview-approval.d.ts +27 -0
- package/dist/voice-preview-approval.js +29 -0
- package/dist/voice-preview-approval.js.map +1 -0
- package/package.json +13 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/** Trusted worker evidence after probing the file and verifying its persisted bytes. */
|
|
3
|
+
export declare const faceDeliverySchema: z.ZodReadonly<z.ZodObject<{
|
|
4
|
+
version: z.ZodLiteral<1>;
|
|
5
|
+
runId: z.ZodString;
|
|
6
|
+
accountId: z.ZodString;
|
|
7
|
+
planHash: z.ZodString;
|
|
8
|
+
videoKey: z.ZodString;
|
|
9
|
+
sha256: z.ZodString;
|
|
10
|
+
bytes: z.ZodNumber;
|
|
11
|
+
width: z.ZodNumber;
|
|
12
|
+
height: z.ZodNumber;
|
|
13
|
+
fps: z.ZodNumber;
|
|
14
|
+
outputFrames: z.ZodNumber;
|
|
15
|
+
durationSec: z.ZodNumber;
|
|
16
|
+
}, z.core.$strict>>;
|
|
17
|
+
export type FaceDelivery = z.infer<typeof faceDeliverySchema>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const count = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);
|
|
3
|
+
const digest = z.string().regex(/^[a-f0-9]{64}$/);
|
|
4
|
+
/** Trusted worker evidence after probing the file and verifying its persisted bytes. */
|
|
5
|
+
export const faceDeliverySchema = z.object({
|
|
6
|
+
version: z.literal(1), runId: z.string().regex(/^[A-Za-z0-9_-]+$/).max(200),
|
|
7
|
+
accountId: z.string().min(1).max(200), planHash: digest,
|
|
8
|
+
videoKey: z.string(), sha256: digest, bytes: count,
|
|
9
|
+
width: count, height: count, fps: count, outputFrames: count, durationSec: z.number().positive().finite(),
|
|
10
|
+
}).strict().refine(value => value.videoKey === `runs/${value.runId}/deliveries/${value.sha256}.mp4` &&
|
|
11
|
+
Math.abs(value.durationSec - value.outputFrames / value.fps) <= 1 / value.fps, { message: "delivery key or measured duration does not match its evidence" }).readonly();
|
|
12
|
+
//# sourceMappingURL=face-delivery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"face-delivery.js","sourceRoot":"","sources":["../src/face-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACvE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAElD,wFAAwF;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC3E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM;IACvD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAClD,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;CAC1G,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,KAAK,CAAC,KAAK,eAAe,KAAK,CAAC,MAAM,MAAM;IACjG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,EAC/E,EAAE,OAAO,EAAE,+DAA+D,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,3 +21,12 @@ export * from "./public-endpoints.js";
|
|
|
21
21
|
export * from "./endpoints.js";
|
|
22
22
|
export * from "./run-static-warnings.js";
|
|
23
23
|
export * from "./run-preflight.js";
|
|
24
|
+
export * from "./speech-rhythm.js";
|
|
25
|
+
export * from "./broll-policy.js";
|
|
26
|
+
export * from "./speech-rhythm-contract.js";
|
|
27
|
+
export * from "./face-billing.js";
|
|
28
|
+
export * from "./long-form-pricing.js";
|
|
29
|
+
export * from "./media-timebase.js";
|
|
30
|
+
export * from "./billing-terms.js";
|
|
31
|
+
export * from "./voice-preview-approval.js";
|
|
32
|
+
export * from "./face-delivery.js";
|
package/dist/index.js
CHANGED
|
@@ -46,4 +46,13 @@ export * from "./endpoints.js";
|
|
|
46
46
|
export * from "./run-static-warnings.js";
|
|
47
47
|
// Невыводимые исходы префлайта: форма долговечного факта (clipwright#146).
|
|
48
48
|
export * from "./run-preflight.js";
|
|
49
|
+
export * from "./speech-rhythm.js";
|
|
50
|
+
export * from "./broll-policy.js";
|
|
51
|
+
export * from "./speech-rhythm-contract.js";
|
|
52
|
+
export * from "./face-billing.js";
|
|
53
|
+
export * from "./long-form-pricing.js";
|
|
54
|
+
export * from "./media-timebase.js";
|
|
55
|
+
export * from "./billing-terms.js";
|
|
56
|
+
export * from "./voice-preview-approval.js";
|
|
57
|
+
export * from "./face-delivery.js";
|
|
49
58
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AACpC,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,4EAA4E;AAC5E,gEAAgE;AAChE,cAAc,aAAa,CAAC;AAC5B,8EAA8E;AAC9E,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,+EAA+E;AAC/E,0DAA0D;AAC1D,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,yEAAyE;AACzE,iEAAiE;AACjE,cAAc,iBAAiB,CAAC;AAChC,2EAA2E;AAC3E,4EAA4E;AAC5E,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,0FAA0F;AAC1F,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,4EAA4E;AAC5E,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,8EAA8E;AAC9E,0EAA0E;AAC1E,aAAa;AACb,cAAc,sBAAsB,CAAC;AACrC,6EAA6E;AAC7E,4DAA4D;AAC5D,cAAc,uBAAuB,CAAC;AACtC,6FAA6F;AAC7F,cAAc,gBAAgB,CAAC;AAC/B,+EAA+E;AAC/E,wDAAwD;AACxD,cAAc,0BAA0B,CAAC;AACzC,2EAA2E;AAC3E,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,8EAA8E;AAC9E,cAAc,qBAAqB,CAAC;AACpC,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,cAAc,4BAA4B,CAAC;AAC3C,4EAA4E;AAC5E,gEAAgE;AAChE,cAAc,aAAa,CAAC;AAC5B,8EAA8E;AAC9E,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,+EAA+E;AAC/E,0DAA0D;AAC1D,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,yEAAyE;AACzE,iEAAiE;AACjE,cAAc,iBAAiB,CAAC;AAChC,2EAA2E;AAC3E,4EAA4E;AAC5E,2BAA2B;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,0FAA0F;AAC1F,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,4EAA4E;AAC5E,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,8EAA8E;AAC9E,0EAA0E;AAC1E,aAAa;AACb,cAAc,sBAAsB,CAAC;AACrC,6EAA6E;AAC7E,4DAA4D;AAC5D,cAAc,uBAAuB,CAAC;AACtC,6FAA6F;AAC7F,cAAc,gBAAgB,CAAC;AAC/B,+EAA+E;AAC/E,wDAAwD;AACxD,cAAc,0BAA0B,CAAC;AACzC,2EAA2E;AAC3E,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAE5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type FaceBillingInterval, type FaceBillingTariff } from "./face-billing.js";
|
|
3
|
+
export declare const LONG_FORM_LAUNCH_TARIFF: Readonly<{
|
|
4
|
+
readonly version: 2;
|
|
5
|
+
readonly pricingVersion: "long-form-v1";
|
|
6
|
+
readonly rateCreditsPerFaceSecond: 10;
|
|
7
|
+
readonly minimumCredits: 400;
|
|
8
|
+
readonly rounding: "ceil_aggregate_seconds";
|
|
9
|
+
readonly failurePolicy: "verified_delivery_only";
|
|
10
|
+
}>;
|
|
11
|
+
/** Действующие тарифы лица ПЕРЕЧНЕМ: публичный текст обходит его, а не две */
|
|
12
|
+
/** известные константы, иначе третий тариф уехал бы молча (#255). */
|
|
13
|
+
export declare const FACE_BILLING_TARIFFS: readonly FaceBillingTariff[];
|
|
14
|
+
export declare function faceTariffRate(tariff: FaceBillingTariff): number;
|
|
15
|
+
export declare function faceTariffPricingVersion(tariff: FaceBillingTariff): string;
|
|
16
|
+
export declare function faceTariffMinimum(tariff: FaceBillingTariff): number;
|
|
17
|
+
export declare function isDeliveryOnlyFaceTariff(tariff: FaceBillingTariff): boolean;
|
|
18
|
+
/** Exact union and one aggregate rounding; customer failure policy is applied by settlement. */
|
|
19
|
+
export declare function calculateFaceCharge(intervals: readonly FaceBillingInterval[], fps: number, tariff: FaceBillingTariff): {
|
|
20
|
+
faceFrames: number;
|
|
21
|
+
billableFaceSeconds: number;
|
|
22
|
+
credits: number;
|
|
23
|
+
minimumApplied: boolean;
|
|
24
|
+
};
|
|
25
|
+
/** ЗАПАС РЕЗЕРВА НА ФОРМУ РЕЧИ — НАЗВАННАЯ граница, не выведенное число: */
|
|
26
|
+
/** честное произведение трёх членов плавает по раскладкам (ADR #265). */
|
|
27
|
+
export declare const FACE_RESERVE_SHAPE_MARGIN = 1.15;
|
|
28
|
+
export declare const longFormQuoteSchema: z.ZodReadonly<z.ZodObject<{
|
|
29
|
+
pricingVersion: z.ZodString;
|
|
30
|
+
rateCreditsPerFaceSecond: z.ZodNumber;
|
|
31
|
+
minimumCredits: z.ZodNumber;
|
|
32
|
+
estimatedTotalDurationSec: z.ZodNumber;
|
|
33
|
+
estimatedFaceSeconds: z.ZodNumber;
|
|
34
|
+
estimatedCredits: z.ZodNumber;
|
|
35
|
+
estimatedFaceWordShare: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
minimumApplied: z.ZodBoolean;
|
|
37
|
+
}, z.core.$strict>>;
|
|
38
|
+
export declare const longFormBillingSummarySchema: z.ZodReadonly<z.ZodObject<{
|
|
39
|
+
pricingVersion: z.ZodString;
|
|
40
|
+
rateCreditsPerFaceSecond: z.ZodNumber;
|
|
41
|
+
minimumCredits: z.ZodNumber;
|
|
42
|
+
actualDurationSec: z.ZodNumber;
|
|
43
|
+
actualBillableFaceSeconds: z.ZodNumber;
|
|
44
|
+
finalCreditsCharged: z.ZodNumber;
|
|
45
|
+
minimumApplied: z.ZodBoolean;
|
|
46
|
+
}, z.core.$strict>>;
|
|
47
|
+
export type LongFormQuote = z.infer<typeof longFormQuoteSchema>;
|
|
48
|
+
export type LongFormBillingSummary = z.infer<typeof longFormBillingSummarySchema>;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { faceBillingIntervalSchema, faceBillingTariffSchema } from "./face-billing.js";
|
|
3
|
+
export const LONG_FORM_LAUNCH_TARIFF = Object.freeze({
|
|
4
|
+
version: 2, pricingVersion: "long-form-v1", rateCreditsPerFaceSecond: 10,
|
|
5
|
+
minimumCredits: 400, rounding: "ceil_aggregate_seconds", failurePolicy: "verified_delivery_only",
|
|
6
|
+
});
|
|
7
|
+
/** Действующие тарифы лица ПЕРЕЧНЕМ: публичный текст обходит его, а не две */
|
|
8
|
+
/** известные константы, иначе третий тариф уехал бы молча (#255). */
|
|
9
|
+
export const FACE_BILLING_TARIFFS = Object.freeze([
|
|
10
|
+
LONG_FORM_LAUNCH_TARIFF,
|
|
11
|
+
]);
|
|
12
|
+
export function faceTariffRate(tariff) {
|
|
13
|
+
return tariff.version === 1 ? tariff.creditsPerSecond : tariff.rateCreditsPerFaceSecond;
|
|
14
|
+
}
|
|
15
|
+
export function faceTariffPricingVersion(tariff) {
|
|
16
|
+
return tariff.version === 1 ? tariff.id : tariff.pricingVersion;
|
|
17
|
+
}
|
|
18
|
+
export function faceTariffMinimum(tariff) {
|
|
19
|
+
return tariff.version === 1 ? 0 : tariff.minimumCredits;
|
|
20
|
+
}
|
|
21
|
+
export function isDeliveryOnlyFaceTariff(tariff) {
|
|
22
|
+
return tariff.version === 2 && tariff.failurePolicy === "verified_delivery_only";
|
|
23
|
+
}
|
|
24
|
+
/** Exact union and one aggregate rounding; customer failure policy is applied by settlement. */
|
|
25
|
+
export function calculateFaceCharge(intervals, fps, tariff) {
|
|
26
|
+
const terms = faceBillingTariffSchema.parse(tariff);
|
|
27
|
+
const frameRate = BigInt(z.number().int().positive().max(Number.MAX_SAFE_INTEGER).parse(fps));
|
|
28
|
+
const sorted = z.array(faceBillingIntervalSchema).parse(intervals)
|
|
29
|
+
.sort((a, b) => a.startFrame - b.startFrame || a.endFrame - b.endFrame);
|
|
30
|
+
let end = 0n;
|
|
31
|
+
let frames = 0n;
|
|
32
|
+
for (const part of sorted) {
|
|
33
|
+
const start = BigInt(part.startFrame) > end ? BigInt(part.startFrame) : end;
|
|
34
|
+
const nextEnd = BigInt(part.endFrame);
|
|
35
|
+
if (nextEnd > start)
|
|
36
|
+
frames += nextEnd - start;
|
|
37
|
+
if (nextEnd > end)
|
|
38
|
+
end = nextEnd;
|
|
39
|
+
}
|
|
40
|
+
const seconds = (frames + frameRate - 1n) / frameRate;
|
|
41
|
+
const usageCredits = seconds * BigInt(faceTariffRate(terms));
|
|
42
|
+
const minimum = BigInt(faceTariffMinimum(terms));
|
|
43
|
+
const credits = usageCredits < minimum ? minimum : usageCredits;
|
|
44
|
+
if (credits > 2147483647n)
|
|
45
|
+
throw new RangeError("face billing credit overflow");
|
|
46
|
+
return { faceFrames: Number(frames), billableFaceSeconds: Number(seconds), credits: Number(credits),
|
|
47
|
+
minimumApplied: usageCredits < minimum };
|
|
48
|
+
}
|
|
49
|
+
/** ЗАПАС РЕЗЕРВА НА ФОРМУ РЕЧИ — НАЗВАННАЯ граница, не выведенное число: */
|
|
50
|
+
/** честное произведение трёх членов плавает по раскладкам (ADR #265). */
|
|
51
|
+
export const FACE_RESERVE_SHAPE_MARGIN = 1.15;
|
|
52
|
+
const credits = z.number().int().nonnegative().max(2_147_483_647);
|
|
53
|
+
const pricing = {
|
|
54
|
+
pricingVersion: z.string().min(1).max(200),
|
|
55
|
+
rateCreditsPerFaceSecond: credits.positive(),
|
|
56
|
+
minimumCredits: credits,
|
|
57
|
+
};
|
|
58
|
+
export const longFormQuoteSchema = z.object({
|
|
59
|
+
...pricing,
|
|
60
|
+
estimatedTotalDurationSec: z.number().positive().max(Number.MAX_SAFE_INTEGER),
|
|
61
|
+
estimatedFaceSeconds: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),
|
|
62
|
+
estimatedCredits: credits,
|
|
63
|
+
estimatedFaceWordShare: z.number().positive().max(1).optional(),
|
|
64
|
+
minimumApplied: z.boolean(),
|
|
65
|
+
}).strict().readonly();
|
|
66
|
+
export const longFormBillingSummarySchema = z.object({
|
|
67
|
+
...pricing,
|
|
68
|
+
actualDurationSec: z.number().positive().max(Number.MAX_SAFE_INTEGER),
|
|
69
|
+
actualBillableFaceSeconds: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),
|
|
70
|
+
finalCreditsCharged: credits,
|
|
71
|
+
minimumApplied: z.boolean(),
|
|
72
|
+
}).strict().readonly();
|
|
73
|
+
//# sourceMappingURL=long-form-pricing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"long-form-pricing.js","sourceRoot":"","sources":["../src/long-form-pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Test ceiling, not a claim that this profile has passed live qualification. */
|
|
2
|
+
export declare const LONG_FORM_QUALIFICATION_MAX_DURATION_SEC = 300;
|
|
3
|
+
/** Потолок слотов замороженного таймлайна; из него выводится MAX_INSERTS, */
|
|
4
|
+
/** поэтому числа не разъезжаются (`docs/adr/0004-insert-word-coverage.md`). */
|
|
5
|
+
export declare const RESOLVED_TIMELINE_MAX_SLOTS = 100;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Test ceiling, not a claim that this profile has passed live qualification. */
|
|
2
|
+
export const LONG_FORM_QUALIFICATION_MAX_DURATION_SEC = 300;
|
|
3
|
+
/** Потолок слотов замороженного таймлайна; из него выводится MAX_INSERTS, */
|
|
4
|
+
/** поэтому числа не разъезжаются (`docs/adr/0004-insert-word-coverage.md`). */
|
|
5
|
+
export const RESOLVED_TIMELINE_MAX_SLOTS = 100;
|
|
6
|
+
//# sourceMappingURL=long-form-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"long-form-profile.js","sourceRoot":"","sources":["../src/long-form-profile.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,CAAC,MAAM,wCAAwC,GAAG,GAAG,CAAC;AAE5D,6EAA6E;AAC7E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-timebase.js","sourceRoot":"","sources":["../src/media-timebase.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAC;AAC7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
/** обязаны называть один адрес. Разбор и переезд — `docs/03-api.md` §1. */
|
|
3
3
|
/** Свой домен с US-613; адрес площадки жив и не снят (`docs/03-api.md` §1). */
|
|
4
4
|
export declare const PUBLIC_API_BASE_URL = "https://api.clipwright.io";
|
|
5
|
+
/** Кабинет; пути клеятся к нему. НЕ `APP_ORIGIN` — тот из окружения. */
|
|
6
|
+
export declare const PUBLIC_APP_BASE_URL = "https://app.clipwright.io";
|
|
5
7
|
/**
|
|
6
8
|
* Пакеты npm, которыми продукт вызывается. Названия печатает и лендинг, и
|
|
7
9
|
* `--help`, и документация — значит это тоже контракт, а не текст страницы.
|
package/dist/public-endpoints.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
/** обязаны называть один адрес. Разбор и переезд — `docs/03-api.md` §1. */
|
|
3
3
|
/** Свой домен с US-613; адрес площадки жив и не снят (`docs/03-api.md` §1). */
|
|
4
4
|
export const PUBLIC_API_BASE_URL = "https://api.clipwright.io";
|
|
5
|
+
/** Кабинет; пути клеятся к нему. НЕ `APP_ORIGIN` — тот из окружения. */
|
|
6
|
+
export const PUBLIC_APP_BASE_URL = "https://app.clipwright.io";
|
|
5
7
|
/**
|
|
6
8
|
* Пакеты npm, которыми продукт вызывается. Названия печатает и лендинг, и
|
|
7
9
|
* `--help`, и документация — значит это тоже контракт, а не текст страницы.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-endpoints.js","sourceRoot":"","sources":["../src/public-endpoints.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAE3E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,oFAAoF;AACpF,2EAA2E;AAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,sFAAsF;AACtF,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC;IAE7E,MAAM,IAAI,KAAK,CACb,gEAAgE,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI;QAC/F,yEAAyE,CAC5E,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"public-endpoints.js","sourceRoot":"","sources":["../src/public-endpoints.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,2EAA2E;AAE3E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D,wEAAwE;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE7C,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,oFAAoF;AACpF,2EAA2E;AAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3E,sFAAsF;AACtF,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,GAAuB;IACvD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,CAAC;IAE7E,MAAM,IAAI,KAAK,CACb,gEAAgE,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI;QAC/F,yEAAyE,CAC5E,CAAC;AACJ,CAAC"}
|
package/dist/render-backend.d.ts
CHANGED
|
@@ -155,7 +155,9 @@ export interface RenderBackend {
|
|
|
155
155
|
* обычным error-handling не ловится. Реализация обязана иметь верхний предел
|
|
156
156
|
* ожидания и бросать по его превышению, а не висеть на зависшей очереди.
|
|
157
157
|
*/
|
|
158
|
-
pollAvatarJob(handle: AvatarJobHandle
|
|
158
|
+
pollAvatarJob(handle: AvatarJobHandle, options?: {
|
|
159
|
+
deadlineMs: number;
|
|
160
|
+
}): Promise<AvatarClipResult>;
|
|
159
161
|
/** Чья причина за отказом: наш счёт у вендора или его беда. ОБЯЗАТЕЛЕН — */
|
|
160
162
|
/** новый вендор без него не скомпилируется. Разбор — `docs/18` §11.6. */
|
|
161
163
|
classifyRefusal(error: unknown): VendorRefusalClass;
|
package/dist/runs.d.ts
CHANGED
|
@@ -86,6 +86,27 @@ export declare const run: z.ZodObject<{
|
|
|
86
86
|
}>;
|
|
87
87
|
credits_reserved: z.ZodNumber;
|
|
88
88
|
credits_charged: z.ZodNullable<z.ZodNumber>;
|
|
89
|
+
billing_terms: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
90
|
+
mode: z.ZodLiteral<"face_seconds">;
|
|
91
|
+
tariffSnapshot: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
92
|
+
version: z.ZodLiteral<1>;
|
|
93
|
+
id: z.ZodString;
|
|
94
|
+
creditsPerSecond: z.ZodNumber;
|
|
95
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
96
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
97
|
+
version: z.ZodLiteral<2>;
|
|
98
|
+
pricingVersion: z.ZodString;
|
|
99
|
+
rateCreditsPerFaceSecond: z.ZodNumber;
|
|
100
|
+
minimumCredits: z.ZodNumber;
|
|
101
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
102
|
+
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
103
|
+
}, z.core.$strict>>]>;
|
|
104
|
+
}, z.core.$strict>>>;
|
|
105
|
+
resolved_broll_policy: z.ZodOptional<z.ZodEnum<{
|
|
106
|
+
anyone: "anyone";
|
|
107
|
+
no_actor: "no_actor";
|
|
108
|
+
no_people: "no_people";
|
|
109
|
+
}>>;
|
|
89
110
|
warnings: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
90
111
|
error: z.ZodNullable<z.ZodString>;
|
|
91
112
|
created_actor: z.ZodOptional<z.ZodObject<{
|
|
@@ -114,6 +135,38 @@ export declare const run: z.ZodObject<{
|
|
|
114
135
|
character_sheet_url: z.ZodOptional<z.ZodString>;
|
|
115
136
|
character_id: z.ZodOptional<z.ZodString>;
|
|
116
137
|
duration_seconds: z.ZodNumber;
|
|
138
|
+
long_form_billing: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
139
|
+
pricingVersion: z.ZodString;
|
|
140
|
+
rateCreditsPerFaceSecond: z.ZodNumber;
|
|
141
|
+
minimumCredits: z.ZodNumber;
|
|
142
|
+
actualDurationSec: z.ZodNumber;
|
|
143
|
+
actualBillableFaceSeconds: z.ZodNumber;
|
|
144
|
+
finalCreditsCharged: z.ZodNumber;
|
|
145
|
+
minimumApplied: z.ZodBoolean;
|
|
146
|
+
}, z.core.$strict>>>;
|
|
147
|
+
face_duration_seconds: z.ZodOptional<z.ZodNumber>;
|
|
148
|
+
full_speech_duration_seconds: z.ZodOptional<z.ZodNumber>;
|
|
149
|
+
face_credits_per_second: z.ZodOptional<z.ZodNumber>;
|
|
150
|
+
face_tariff_id: z.ZodOptional<z.ZodString>;
|
|
151
|
+
speech_timing_gaps: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
152
|
+
status: z.ZodLiteral<"available">;
|
|
153
|
+
durationSec: z.ZodNumber;
|
|
154
|
+
wordGapDurationSec: z.ZodNumber;
|
|
155
|
+
wordGapFraction: z.ZodNumber;
|
|
156
|
+
leadingGapSec: z.ZodNumber;
|
|
157
|
+
trailingGapSec: z.ZodNumber;
|
|
158
|
+
interWordGapsSec: z.ZodArray<z.ZodNumber>;
|
|
159
|
+
measuredSentenceGapCount: z.ZodNumber;
|
|
160
|
+
sentenceGapMedianSec: z.ZodNullable<z.ZodNumber>;
|
|
161
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
162
|
+
status: z.ZodLiteral<"unavailable">;
|
|
163
|
+
reason: z.ZodEnum<{
|
|
164
|
+
invalid_duration: "invalid_duration";
|
|
165
|
+
invalid_timings: "invalid_timings";
|
|
166
|
+
missing_timings: "missing_timings";
|
|
167
|
+
unsupported_mode: "unsupported_mode";
|
|
168
|
+
}>;
|
|
169
|
+
}, z.core.$strip>], "status">>;
|
|
117
170
|
ai_generated: z.ZodLiteral<true>;
|
|
118
171
|
ai_disclosure: z.ZodString;
|
|
119
172
|
requested_aspect_ratio: z.ZodOptional<z.ZodString>;
|
|
@@ -179,6 +232,27 @@ export declare const runRead: z.ZodObject<{
|
|
|
179
232
|
skill: z.ZodString;
|
|
180
233
|
credits_reserved: z.ZodNumber;
|
|
181
234
|
credits_charged: z.ZodNullable<z.ZodNumber>;
|
|
235
|
+
billing_terms: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
236
|
+
mode: z.ZodLiteral<"face_seconds">;
|
|
237
|
+
tariffSnapshot: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
|
|
238
|
+
version: z.ZodLiteral<1>;
|
|
239
|
+
id: z.ZodString;
|
|
240
|
+
creditsPerSecond: z.ZodNumber;
|
|
241
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
242
|
+
}, z.core.$strict>>, z.ZodReadonly<z.ZodObject<{
|
|
243
|
+
version: z.ZodLiteral<2>;
|
|
244
|
+
pricingVersion: z.ZodString;
|
|
245
|
+
rateCreditsPerFaceSecond: z.ZodNumber;
|
|
246
|
+
minimumCredits: z.ZodNumber;
|
|
247
|
+
rounding: z.ZodLiteral<"ceil_aggregate_seconds">;
|
|
248
|
+
failurePolicy: z.ZodLiteral<"verified_delivery_only">;
|
|
249
|
+
}, z.core.$strict>>]>;
|
|
250
|
+
}, z.core.$strict>>>;
|
|
251
|
+
resolved_broll_policy: z.ZodOptional<z.ZodEnum<{
|
|
252
|
+
anyone: "anyone";
|
|
253
|
+
no_actor: "no_actor";
|
|
254
|
+
no_people: "no_people";
|
|
255
|
+
}>>;
|
|
182
256
|
warnings: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
183
257
|
error: z.ZodNullable<z.ZodString>;
|
|
184
258
|
created_actor: z.ZodOptional<z.ZodObject<{
|
|
@@ -207,6 +281,38 @@ export declare const runRead: z.ZodObject<{
|
|
|
207
281
|
character_sheet_url: z.ZodOptional<z.ZodString>;
|
|
208
282
|
character_id: z.ZodOptional<z.ZodString>;
|
|
209
283
|
duration_seconds: z.ZodNumber;
|
|
284
|
+
long_form_billing: z.ZodOptional<z.ZodReadonly<z.ZodObject<{
|
|
285
|
+
pricingVersion: z.ZodString;
|
|
286
|
+
rateCreditsPerFaceSecond: z.ZodNumber;
|
|
287
|
+
minimumCredits: z.ZodNumber;
|
|
288
|
+
actualDurationSec: z.ZodNumber;
|
|
289
|
+
actualBillableFaceSeconds: z.ZodNumber;
|
|
290
|
+
finalCreditsCharged: z.ZodNumber;
|
|
291
|
+
minimumApplied: z.ZodBoolean;
|
|
292
|
+
}, z.core.$strict>>>;
|
|
293
|
+
face_duration_seconds: z.ZodOptional<z.ZodNumber>;
|
|
294
|
+
full_speech_duration_seconds: z.ZodOptional<z.ZodNumber>;
|
|
295
|
+
face_credits_per_second: z.ZodOptional<z.ZodNumber>;
|
|
296
|
+
face_tariff_id: z.ZodOptional<z.ZodString>;
|
|
297
|
+
speech_timing_gaps: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
298
|
+
status: z.ZodLiteral<"available">;
|
|
299
|
+
durationSec: z.ZodNumber;
|
|
300
|
+
wordGapDurationSec: z.ZodNumber;
|
|
301
|
+
wordGapFraction: z.ZodNumber;
|
|
302
|
+
leadingGapSec: z.ZodNumber;
|
|
303
|
+
trailingGapSec: z.ZodNumber;
|
|
304
|
+
interWordGapsSec: z.ZodArray<z.ZodNumber>;
|
|
305
|
+
measuredSentenceGapCount: z.ZodNumber;
|
|
306
|
+
sentenceGapMedianSec: z.ZodNullable<z.ZodNumber>;
|
|
307
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
308
|
+
status: z.ZodLiteral<"unavailable">;
|
|
309
|
+
reason: z.ZodEnum<{
|
|
310
|
+
invalid_duration: "invalid_duration";
|
|
311
|
+
invalid_timings: "invalid_timings";
|
|
312
|
+
missing_timings: "missing_timings";
|
|
313
|
+
unsupported_mode: "unsupported_mode";
|
|
314
|
+
}>;
|
|
315
|
+
}, z.core.$strip>], "status">>;
|
|
210
316
|
ai_generated: z.ZodLiteral<true>;
|
|
211
317
|
ai_disclosure: z.ZodString;
|
|
212
318
|
requested_aspect_ratio: z.ZodOptional<z.ZodString>;
|
package/dist/runs.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { longFormBillingSummarySchema } from "./long-form-pricing.js";
|
|
3
|
+
import { speechRhythmResult } from "./speech-rhythm-contract.js";
|
|
2
4
|
import { actorSelection } from "./actors.js";
|
|
3
5
|
import { createdActor } from "./account-actors.js";
|
|
6
|
+
import { faceBillingAdmissionTermsSchema } from "./billing-terms.js";
|
|
7
|
+
import { brollPolicy } from "./broll-policy.js";
|
|
4
8
|
/** Стадии ранов обоих скиллов: make_ugc (docs/02 §2) и create_actor (`generating`, ADR-0003). */
|
|
5
9
|
export const RUN_STATES = [
|
|
6
10
|
"queued",
|
|
@@ -66,6 +70,8 @@ export const run = z.object({
|
|
|
66
70
|
state: runState,
|
|
67
71
|
credits_reserved: z.number().int().nonnegative(),
|
|
68
72
|
credits_charged: z.number().int().nonnegative().nullable(),
|
|
73
|
+
billing_terms: faceBillingAdmissionTermsSchema.optional(),
|
|
74
|
+
resolved_broll_policy: brollPolicy.optional(),
|
|
69
75
|
warnings: z.array(z.string()).default([]),
|
|
70
76
|
/**
|
|
71
77
|
* Причина. НЕПУСТОЙ `error` НЕ ЗНАЧИТ `state: "failed"` — и это стало правдой
|
|
@@ -92,6 +98,12 @@ export const run = z.object({
|
|
|
92
98
|
character_sheet_url: z.string().url().optional(),
|
|
93
99
|
character_id: z.string().optional(),
|
|
94
100
|
duration_seconds: z.number().positive(),
|
|
101
|
+
long_form_billing: longFormBillingSummarySchema.optional(),
|
|
102
|
+
face_duration_seconds: z.number().nonnegative().optional(),
|
|
103
|
+
full_speech_duration_seconds: z.number().positive().optional(),
|
|
104
|
+
face_credits_per_second: z.number().int().positive().optional(),
|
|
105
|
+
face_tariff_id: z.string().min(1).optional(),
|
|
106
|
+
speech_timing_gaps: speechRhythmResult.optional(),
|
|
95
107
|
/**
|
|
96
108
|
* ОБЯЗАТЕЛЬНЫЕ поля маркировки, а не опциональные.
|
|
97
109
|
*
|
package/dist/runs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { WordTiming } from "./tts-backend.js";
|
|
2
|
+
export type SemanticInsertInstruction = {
|
|
3
|
+
insertId: string;
|
|
4
|
+
mediaId: string;
|
|
5
|
+
anchor: {
|
|
6
|
+
startWord: number;
|
|
7
|
+
endWord: number;
|
|
8
|
+
} | {
|
|
9
|
+
quote: string;
|
|
10
|
+
occurrence?: number;
|
|
11
|
+
};
|
|
12
|
+
coverWords?: number;
|
|
13
|
+
};
|
|
14
|
+
export interface SemanticInsertAnchor {
|
|
15
|
+
insertId: string;
|
|
16
|
+
mediaId: string;
|
|
17
|
+
startWord: number;
|
|
18
|
+
endWord: number;
|
|
19
|
+
coverWord?: number;
|
|
20
|
+
}
|
|
21
|
+
/** Первое НЕЗАКРЫТОЕ вставкой слово. Умолчание читается здесь и только здесь, */
|
|
22
|
+
/** иначе «покрытие равно якорю» разъедется между читателями (#265). */
|
|
23
|
+
export declare function coverWordOf(anchor: {
|
|
24
|
+
endWord: number;
|
|
25
|
+
coverWord?: number | undefined;
|
|
26
|
+
}): number;
|
|
27
|
+
export interface SemanticInsertPlan {
|
|
28
|
+
sourceTokens: readonly string[];
|
|
29
|
+
inserts: readonly SemanticInsertAnchor[];
|
|
30
|
+
}
|
|
31
|
+
export type SemanticInsertShot = {
|
|
32
|
+
kind: "actor";
|
|
33
|
+
fromFrame: number;
|
|
34
|
+
durationInFrames: number;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "media";
|
|
37
|
+
fromFrame: number;
|
|
38
|
+
durationInFrames: number;
|
|
39
|
+
insertId: string;
|
|
40
|
+
mediaId: string;
|
|
41
|
+
};
|
|
42
|
+
export interface SemanticInsertResolution {
|
|
43
|
+
totalFrames: number;
|
|
44
|
+
shots: SemanticInsertShot[];
|
|
45
|
+
warnings: string[];
|
|
46
|
+
}
|
|
47
|
+
export declare function planSemanticInserts(script: string, instructions: readonly SemanticInsertInstruction[]): SemanticInsertPlan;
|
|
48
|
+
/** Число ПЛАТНЫХ актёрских шотов — чистая функция индексов слов, поэтому вход */
|
|
49
|
+
/** отвергается до синтеза речи, а не в воркере после оплаты (#265). */
|
|
50
|
+
export declare function countActorShots(plan: SemanticInsertPlan): number;
|
|
51
|
+
export declare function resolveSemanticInserts(input: {
|
|
52
|
+
plan: SemanticInsertPlan;
|
|
53
|
+
words: readonly WordTiming[];
|
|
54
|
+
durationSec: number;
|
|
55
|
+
fps: number;
|
|
56
|
+
}): SemanticInsertResolution;
|
|
57
|
+
export declare function selectTimelineInput<T>(segments: readonly T[] | undefined, planner: () => SemanticInsertPlan): {
|
|
58
|
+
kind: "explicit";
|
|
59
|
+
segments: readonly T[];
|
|
60
|
+
} | {
|
|
61
|
+
kind: "semantic";
|
|
62
|
+
plan: SemanticInsertPlan;
|
|
63
|
+
};
|