@clipwright/sdk 0.2.0 → 0.3.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/README.md +33 -0
- package/dist/index.d.ts +9 -14
- package/dist/index.js +56 -36
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -19,3 +19,36 @@ id, so a retried request returns the original run instead of paying twice. Pass
|
|
|
19
19
|
Requires `CLIPWRIGHT_CLIENT_ID`, or a writable `~/.clipwright/` for the SDK to
|
|
20
20
|
create one on first use. It fails loudly rather than generating a throwaway id,
|
|
21
21
|
because a per-process id would disable duplicate protection without saying so.
|
|
22
|
+
|
|
23
|
+
## Deadlines cancel the request (behaviour change)
|
|
24
|
+
|
|
25
|
+
`fetch` has no default timeout in Node, so until this release a connection that
|
|
26
|
+
was accepted and then went silent — a proxy dying between you and the API — hung
|
|
27
|
+
forever. `maxWaitMs` did not save you: it was checked *between* status polls, so
|
|
28
|
+
control never came back to it.
|
|
29
|
+
|
|
30
|
+
Two deadlines now abort the request itself, not just the wait:
|
|
31
|
+
|
|
32
|
+
- `maxWaitMs` (per `makeUgc` call, default 10 min) bounds the whole call,
|
|
33
|
+
including the request in flight when it expires.
|
|
34
|
+
- `requestTimeoutMs` (per client, default 30 s) bounds every single request.
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
const client = new ClipwrightClient({
|
|
38
|
+
apiKey: process.env.CLIPWRIGHT_API_KEY!,
|
|
39
|
+
requestTimeoutMs: 60_000,
|
|
40
|
+
});
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**What changes for you:** a call that used to hang now rejects. A `makeUgc`
|
|
44
|
+
whose polling is cut short still throws the same timeout error, naming the run
|
|
45
|
+
so you can pick it up later with `getRun`. A **start** request aborted mid-flight
|
|
46
|
+
throws `ClipwrightResponseError` with `mayHaveTakenEffect: true` and
|
|
47
|
+
`deliveryConfirmed: false` — the run may exist and may be charged, so check your
|
|
48
|
+
recent runs instead of retrying with a fresh idempotency key. Requests on the
|
|
49
|
+
free paths (`quoteUgc`, `listVoices`, `getRun`) reject with a `TimeoutError`
|
|
50
|
+
`DOMException`; retrying them is safe.
|
|
51
|
+
|
|
52
|
+
Raise `requestTimeoutMs` if you sit behind a slow proxy; it must stay positive,
|
|
53
|
+
and a non-positive or non-finite value is rejected loudly rather than replaced
|
|
54
|
+
with the default.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { type AgentFailureReport, type ApiFailure, type MakeUgcInput, type MakeUgcInputArgs, type QuoteResponse, type Run, type RunRead
|
|
1
|
+
import { type VoiceCatalogEntry as CoreVoiceCatalogEntry, type AgentFailureReport, type ApiFailure, type MakeUgcInput, type MakeUgcInputArgs, type QuoteResponse, type Run, type RunRead } from "@clipwright/core";
|
|
2
2
|
export interface ClipwrightClientOptions {
|
|
3
3
|
apiKey: string;
|
|
4
4
|
baseUrl?: string | undefined;
|
|
5
5
|
/** Интервал поллинга статуса рана, мс. */
|
|
6
6
|
pollIntervalMs?: number | undefined;
|
|
7
|
+
/** Срок ОДНОГО запроса, мс (дефолт 30_000). Не путать с `maxWaitMs`: тот */
|
|
8
|
+
/** ограничивает весь `makeUgc`, этот — каждое обращение по отдельности. */
|
|
9
|
+
requestTimeoutMs?: number | undefined;
|
|
7
10
|
}
|
|
8
11
|
/** Опции старта рана. `attempt` даёт суффикс `:N`; явный ключ его перекрывает. */
|
|
9
12
|
export interface StartUgcOptions {
|
|
@@ -48,10 +51,9 @@ export declare class ClipwrightResponseError extends Error {
|
|
|
48
51
|
readonly deliveryConfirmed: boolean;
|
|
49
52
|
constructor(path: string, mayHaveTakenEffect: boolean, cause: unknown, deliveryConfirmed?: boolean);
|
|
50
53
|
}
|
|
51
|
-
/** Один пресет каталога `/v1/voices
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
54
|
+
/** Один пресет каталога `/v1/voices` — ВЫВЕДЕН из схемы ответа, а не написан */
|
|
55
|
+
/** рядом с ней: две формы одного тела расходились бы молча (правило №2). */
|
|
56
|
+
export type VoiceCatalogEntry = CoreVoiceCatalogEntry;
|
|
55
57
|
/**
|
|
56
58
|
* ОТКАЗ API, ДОЕХАВШИЙ ДО ВЫЗЫВАТЕЛЯ ЦЕЛИКОМ (US-622).
|
|
57
59
|
*
|
|
@@ -110,15 +112,8 @@ export declare class ClipwrightClient {
|
|
|
110
112
|
* приняли бы `state` за закрытый enum.
|
|
111
113
|
*/
|
|
112
114
|
getRun(runId: string): Promise<RunRead>;
|
|
113
|
-
/**
|
|
114
|
-
|
|
115
|
-
*
|
|
116
|
-
* [C-5] `attempt` ПРОБРАСЫВАЕТСЯ во внутренний `startUgc`: CLI `make` зовёт
|
|
117
|
-
* именно `makeUgc`, а не `startUgc`, — без проброса `--retry` молча терялся бы.
|
|
118
|
-
* [US-207] `maxWaitMs` — дедлайн: застрявший ран иначе вешал бы `clipwright
|
|
119
|
-
* make` навсегда. Проверка дедлайна ДО сна (и сон не длиннее остатка), чтобы
|
|
120
|
-
* бросок случался вовремя, а не через целый интервал поллинга.
|
|
121
|
-
*/
|
|
115
|
+
/** Запуск + поллинг до терминального состояния. `attempt` пробрасывается внутрь, */
|
|
116
|
+
/** `maxWaitMs` — дедлайн, обрывающий и паузу, и сам запрос. */
|
|
122
117
|
makeUgc(input: MakeUgcInputArgs, opts?: MakeUgcOptions, onProgress?: (run: RunRead) => void): Promise<RunRead>;
|
|
123
118
|
}
|
|
124
119
|
export { resolveClientId } from "./client-id.js";
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import { agentFailureReport, isRetryableFailure, parseApiFailure, retryDelayMs, run as runSchema, runRead as runReadSchema, isTerminal, FAILED_STATE, quoteResponse, RETRY_AFTER_HEADER, } from "@clipwright/core";
|
|
1
|
+
import { agentFailureReport, isRetryableFailure, parseApiFailure, PUBLIC_API_BASE_URL, retryDelayMs, run as runSchema, runRead as runReadSchema, isTerminal, FAILED_STATE, quoteResponse, RETRY_AFTER_HEADER, voicesResponse, } from "@clipwright/core";
|
|
2
2
|
import { idempotencyKeyFor } from "@clipwright/core/idempotency";
|
|
3
3
|
import { resolveClientId } from "./client-id.js";
|
|
4
|
-
/**
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Прод-API по умолчанию: SDK «просто работает» без явного baseUrl.
|
|
6
|
+
*
|
|
7
|
+
* Значение приезжает из `@clipwright/core` (US-614): тот же адрес печатает
|
|
8
|
+
* лендинг в копируемой команде `curl`, и два литерала разошлись бы так, что
|
|
9
|
+
* заметил бы это посетитель. Разбор — у самой константы.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_BASE_URL = PUBLIC_API_BASE_URL;
|
|
6
12
|
/** Дефолтный дедлайн поллинга: ≥5× над проекцией рендера (~113 с, docs/13). */
|
|
7
13
|
const DEFAULT_MAX_WAIT_MS = 600_000;
|
|
14
|
+
/** Срок одного запроса по умолчанию. У `fetch` в Node таймаута НЕТ: принятое, но */
|
|
15
|
+
/** молчащее соединение висит вечно, и дедлайн вызова его не снимает. */
|
|
16
|
+
const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
|
|
8
17
|
/**
|
|
9
18
|
* Потолок ОДНОГО `setTimeout` — 2^31−1 мс (примерно 24.8 суток).
|
|
10
19
|
*
|
|
@@ -222,6 +231,7 @@ export class ClipwrightClient {
|
|
|
222
231
|
#apiKey;
|
|
223
232
|
#baseUrl;
|
|
224
233
|
#pollIntervalMs;
|
|
234
|
+
#requestTimeoutMs;
|
|
225
235
|
/**
|
|
226
236
|
* [A5] Идентичность установки резолвится ЛЕНИВО (при первом старте рана) и
|
|
227
237
|
* кэшируется здесь. Конструктор её НЕ трогает: MCP-сервер строит клиент НА
|
|
@@ -234,6 +244,7 @@ export class ClipwrightClient {
|
|
|
234
244
|
this.#apiKey = opts.apiKey;
|
|
235
245
|
this.#baseUrl = opts.baseUrl ?? DEFAULT_BASE_URL;
|
|
236
246
|
this.#pollIntervalMs = positiveMs(opts.pollIntervalMs, 5_000, "pollIntervalMs");
|
|
247
|
+
this.#requestTimeoutMs = positiveMs(opts.requestTimeoutMs, DEFAULT_REQUEST_TIMEOUT_MS, "requestTimeoutMs");
|
|
237
248
|
}
|
|
238
249
|
/** Ленивый резолв + кэш идентичности установки (см. `#clientId`). */
|
|
239
250
|
#getClientId() {
|
|
@@ -267,13 +278,19 @@ export class ClipwrightClient {
|
|
|
267
278
|
// молчал о последствиях. Сюда же отнесён и провал самого `fetch`: доставку
|
|
268
279
|
// он не опровергает, и на платном пути честнее сказать «неизвестно».
|
|
269
280
|
let res;
|
|
281
|
+
// ОТМЕНА ДОХОДИТ ДО СЕТИ: свой срок у каждого запроса плюс сигнал вызывателя.
|
|
282
|
+
// Сигнал ВЫНУТ из `init` — иначе срок запроса обходился бы мимо этой строки.
|
|
283
|
+
const { signal: callerSignal, ...rest } = init ?? {};
|
|
284
|
+
const timeout = AbortSignal.timeout(this.#requestTimeoutMs);
|
|
285
|
+
const signal = callerSignal ? AbortSignal.any([callerSignal, timeout]) : timeout;
|
|
270
286
|
try {
|
|
271
287
|
res = await fetch(`${this.#baseUrl}${path}`, {
|
|
272
|
-
...
|
|
288
|
+
...rest,
|
|
289
|
+
signal,
|
|
273
290
|
headers: {
|
|
274
291
|
Authorization: `Bearer ${this.#apiKey}`,
|
|
275
292
|
"Content-Type": "application/json",
|
|
276
|
-
...
|
|
293
|
+
...rest.headers,
|
|
277
294
|
},
|
|
278
295
|
});
|
|
279
296
|
}
|
|
@@ -340,12 +357,17 @@ export class ClipwrightClient {
|
|
|
340
357
|
* `<hash>`, а CLI `<hash>:1` — межповерхностный шов, в котором дедуп ломается.
|
|
341
358
|
*/
|
|
342
359
|
async startUgc(input, opts) {
|
|
360
|
+
return this.#startUgc(input, opts);
|
|
361
|
+
}
|
|
362
|
+
/** `signal` приходит только изнутри: дедлайн `makeUgc` обрывает и сам старт. */
|
|
363
|
+
async #startUgc(input, opts, signal) {
|
|
343
364
|
const key = opts?.idempotencyKey ?? `${idempotencyKeyFor(input, this.#getClientId())}:${attemptSuffix(opts?.attempt)}`;
|
|
344
365
|
// `true`: запрос уже ушёл, ран мог быть создан и оплачен.
|
|
345
366
|
const body = await this.#request("/v1/skills/make_ugc/run", true, {
|
|
346
367
|
method: "POST",
|
|
347
368
|
body: JSON.stringify(input),
|
|
348
369
|
headers: { "Idempotency-Key": key },
|
|
370
|
+
signal: signal ?? null,
|
|
349
371
|
});
|
|
350
372
|
// `hasSideEffect: true` — запрос уже ушёл и ран мог быть создан и оплачен.
|
|
351
373
|
return parseResponse(runSchema, body, "/v1/skills/make_ugc/run", true);
|
|
@@ -358,15 +380,9 @@ export class ClipwrightClient {
|
|
|
358
380
|
*/
|
|
359
381
|
async listVoices() {
|
|
360
382
|
const body = await this.#request("/v1/voices", false);
|
|
361
|
-
//
|
|
362
|
-
//
|
|
363
|
-
|
|
364
|
-
// проверяется то единственное, на что опирается потребитель.
|
|
365
|
-
const voices = body.voices;
|
|
366
|
-
if (!Array.isArray(voices)) {
|
|
367
|
-
throw new ClipwrightResponseError("/v1/voices", false, body);
|
|
368
|
-
}
|
|
369
|
-
return voices;
|
|
383
|
+
// ТОЙ ЖЕ СХЕМОЙ, ЧТО ОТДАЁТ СЕРВЕР. `Array.isArray` пропускал массив чего
|
|
384
|
+
// угодно: вызыватель падал на `.map` над строками, вдали от причины.
|
|
385
|
+
return parseResponse(voicesResponse, body, "/v1/voices", false).voices;
|
|
370
386
|
}
|
|
371
387
|
/**
|
|
372
388
|
* Чтение рана в ТОЛЕРАНТНОЙ проекции (`runRead`, `state: string`): сервер мог
|
|
@@ -378,25 +394,24 @@ export class ClipwrightClient {
|
|
|
378
394
|
* приняли бы `state` за закрытый enum.
|
|
379
395
|
*/
|
|
380
396
|
async getRun(runId) {
|
|
381
|
-
|
|
397
|
+
return this.#getRun(runId);
|
|
398
|
+
}
|
|
399
|
+
/** `signal` приходит только изнутри: дедлайн `makeUgc` обрывает и сам опрос. */
|
|
400
|
+
async #getRun(runId, signal) {
|
|
401
|
+
const body = await this.#request(`/v1/runs/${runId}`, false, { signal: signal ?? null });
|
|
382
402
|
const parsed = runReadSchema.safeParse(body);
|
|
383
403
|
return parsed.success ? parsed.data : body;
|
|
384
404
|
}
|
|
385
|
-
/**
|
|
386
|
-
|
|
387
|
-
*
|
|
388
|
-
* [C-5] `attempt` ПРОБРАСЫВАЕТСЯ во внутренний `startUgc`: CLI `make` зовёт
|
|
389
|
-
* именно `makeUgc`, а не `startUgc`, — без проброса `--retry` молча терялся бы.
|
|
390
|
-
* [US-207] `maxWaitMs` — дедлайн: застрявший ран иначе вешал бы `clipwright
|
|
391
|
-
* make` навсегда. Проверка дедлайна ДО сна (и сон не длиннее остатка), чтобы
|
|
392
|
-
* бросок случался вовремя, а не через целый интервал поллинга.
|
|
393
|
-
*/
|
|
405
|
+
/** Запуск + поллинг до терминального состояния. `attempt` пробрасывается внутрь, */
|
|
406
|
+
/** `maxWaitMs` — дедлайн, обрывающий и паузу, и сам запрос. */
|
|
394
407
|
async makeUgc(input, opts, onProgress) {
|
|
395
408
|
const maxWaitMs = positiveMs(opts?.maxWaitMs, DEFAULT_MAX_WAIT_MS, "maxWaitMs");
|
|
396
409
|
const deadline = Date.now() + maxWaitMs;
|
|
397
|
-
//
|
|
398
|
-
|
|
399
|
-
|
|
410
|
+
// Дедлайн как сигнал отмены; потолок таймера — тот же, что у `sleep`.
|
|
411
|
+
const callDeadline = AbortSignal.timeout(Math.min(maxWaitMs, MAX_TIMER_DELAY_MS));
|
|
412
|
+
// Тип расширяем до `RunRead`: дальше сюда присваивается толерантный `getRun`.
|
|
413
|
+
// Оборванный дедлайном СТАРТ летит наружу как есть — ран мог быть оплачен.
|
|
414
|
+
let current = await this.#startUgc(input, { attempt: opts?.attempt }, callDeadline);
|
|
400
415
|
// Пауза перед СЛЕДУЮЩИМ опросом. Обычно это интервал поллинга; отбитый
|
|
401
416
|
// опрос заменяет её паузой, назначенной сервером (US-622).
|
|
402
417
|
let nextDelayMs = this.#pollIntervalMs;
|
|
@@ -404,6 +419,13 @@ export class ClipwrightClient {
|
|
|
404
419
|
// упёрся в дедлайн из-за 429, и ран, который просто долго рендерится, — это
|
|
405
420
|
// разные новости, и человеку они нужны разными.
|
|
406
421
|
let lastRetried;
|
|
422
|
+
/** Один текст таймаута на оба места, где дедлайн срабатывает. */
|
|
423
|
+
const timedOut = () => new Error(`makeUgc timed out after ${maxWaitMs}ms; run ${current.run_id} is still ` +
|
|
424
|
+
`${current.state}. Poll it later with getRun("${current.run_id}").` +
|
|
425
|
+
(lastRetried === undefined
|
|
426
|
+
? ""
|
|
427
|
+
: ` The last status check was refused with HTTP ${lastRetried.status}: ` +
|
|
428
|
+
`${lastRetried.message}`));
|
|
407
429
|
// Терминальность — через разделяемый `isTerminal`, а не литералы: неизвестный
|
|
408
430
|
// ТЕРМИНАЛЬНЫЙ статус сервера (`isTerminal=false`) осознанно поллится до
|
|
409
431
|
// `maxWaitMs` и даёт чистый таймаут с `run_id`, а не вечный цикл (PM4).
|
|
@@ -413,21 +435,19 @@ export class ClipwrightClient {
|
|
|
413
435
|
// и цепочка 429 продлевала бы ожидание бесконечно, ровно вопреки тому,
|
|
414
436
|
// ради чего `maxWaitMs` существует (US-207).
|
|
415
437
|
const remaining = deadline - Date.now();
|
|
416
|
-
if (remaining <= 0)
|
|
417
|
-
throw
|
|
418
|
-
`${current.state}. Poll it later with getRun("${current.run_id}").` +
|
|
419
|
-
(lastRetried === undefined
|
|
420
|
-
? ""
|
|
421
|
-
: ` The last status check was refused with HTTP ${lastRetried.status}: ` +
|
|
422
|
-
`${lastRetried.message}`));
|
|
423
|
-
}
|
|
438
|
+
if (remaining <= 0)
|
|
439
|
+
throw timedOut();
|
|
424
440
|
await sleep(Math.min(nextDelayMs, remaining));
|
|
425
441
|
try {
|
|
426
|
-
current = await this
|
|
442
|
+
current = await this.#getRun(current.run_id, callDeadline);
|
|
427
443
|
nextDelayMs = this.#pollIntervalMs;
|
|
428
444
|
onProgress?.(current);
|
|
429
445
|
}
|
|
430
446
|
catch (error) {
|
|
447
|
+
// Дедлайн, сорвавший сам опрос, — тот же таймаут, что и дедлайн между
|
|
448
|
+
// опросами: новость одна, значит и текст один.
|
|
449
|
+
if (callDeadline.aborted && !(error instanceof ClipwrightApiError))
|
|
450
|
+
throw timedOut();
|
|
431
451
|
// ОТБИТЫЙ ОПРОС — НЕ ПРОВАЛ РАНА. Ран уже запущен и уже оплачен: 429 на
|
|
432
452
|
// `GET /v1/runs/:id` до US-622 убивал `makeUgc` целиком, то есть бросал
|
|
433
453
|
// работу, за которую заплатили. Повторяем — но только то, что повторять
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,GAAG,IAAI,SAAS,EAChB,OAAO,IAAI,aAAa,EACxB,UAAU,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@clipwright/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "TypeScript client for the Clipwright UGC video API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Dimantika Sp. z o.o.",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"zod": "^4.4.3",
|
|
26
|
-
"@clipwright/core": "0.
|
|
26
|
+
"@clipwright/core": "0.3.0"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@types/node": "^26.1.1"
|