@clipwright/core 0.19.0 → 0.20.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 +14 -0
- package/dist/__fixtures__/queue-promises.d.ts +5 -84
- package/dist/__fixtures__/queue-promises.js +7 -84
- package/dist/__fixtures__/queue-promises.js.map +1 -1
- package/dist/account-actors.d.ts +25 -25
- package/dist/account-actors.js +25 -25
- package/dist/account-actors.js.map +1 -1
- package/dist/account.d.ts +4 -10
- package/dist/account.js +6 -12
- package/dist/account.js.map +1 -1
- package/dist/actor-bounds.d.ts +4 -4
- package/dist/actor-bounds.js +4 -4
- package/dist/actor-bounds.js.map +1 -1
- package/dist/actor-qualities.d.ts +3 -3
- package/dist/actor-qualities.js +3 -3
- package/dist/actor-qualities.js.map +1 -1
- package/dist/actors.d.ts +8 -8
- package/dist/actors.js +9 -9
- package/dist/actors.js.map +1 -1
- package/dist/api-failure.d.ts +28 -129
- package/dist/api-failure.js +52 -225
- package/dist/api-failure.js.map +1 -1
- package/dist/aspect.d.ts +26 -96
- package/dist/aspect.js +32 -108
- package/dist/aspect.js.map +1 -1
- package/dist/contract-dispositions.d.ts +42 -167
- package/dist/contract-dispositions.js +54 -184
- package/dist/contract-dispositions.js.map +1 -1
- package/dist/endpoints.d.ts +5 -5
- package/dist/endpoints.js +3 -3
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +33 -101
- package/dist/errors.js +42 -108
- package/dist/errors.js.map +1 -1
- package/dist/faceless-cut-style.d.ts +115 -0
- package/dist/faceless-cut-style.js +109 -0
- package/dist/faceless-cut-style.js.map +1 -0
- package/dist/faceless-image-qualification.d.ts +97 -0
- package/dist/faceless-image-qualification.js +145 -0
- package/dist/faceless-image-qualification.js.map +1 -0
- package/dist/faceless-short-61.d.ts +83 -0
- package/dist/faceless-short-61.js +152 -0
- package/dist/faceless-short-61.js.map +1 -0
- package/dist/faceless-storyboard-timing.d.ts +40 -0
- package/dist/faceless-storyboard-timing.js +97 -0
- package/dist/faceless-storyboard-timing.js.map +1 -0
- package/dist/faceless-storyboard-v2-plan.d.ts +3 -0
- package/dist/faceless-storyboard-v2-plan.js +112 -0
- package/dist/faceless-storyboard-v2-plan.js.map +1 -0
- package/dist/faceless-storyboard-v2-timing.d.ts +52 -0
- package/dist/faceless-storyboard-v2-timing.js +136 -0
- package/dist/faceless-storyboard-v2-timing.js.map +1 -0
- package/dist/faceless-storyboard-v2.d.ts +44 -0
- package/dist/faceless-storyboard-v2.js +43 -0
- package/dist/faceless-storyboard-v2.js.map +1 -0
- package/dist/faceless-storyboard.d.ts +55 -0
- package/dist/faceless-storyboard.js +105 -0
- package/dist/faceless-storyboard.js.map +1 -0
- package/dist/idempotency.d.ts +8 -44
- package/dist/idempotency.js +10 -44
- package/dist/idempotency.js.map +1 -1
- package/dist/index.js +21 -25
- package/dist/index.js.map +1 -1
- package/dist/long-form-pricing.d.ts +4 -4
- package/dist/long-form-pricing.js +4 -4
- package/dist/long-form-pricing.js.map +1 -1
- package/dist/long-form-profile.d.ts +2 -2
- package/dist/long-form-profile.js +2 -2
- package/dist/long-form-profile.js.map +1 -1
- package/dist/pacing.d.ts +1 -1
- package/dist/pacing.js +1 -1
- package/dist/pacing.js.map +1 -1
- package/dist/public-endpoints.d.ts +9 -11
- package/dist/public-endpoints.js +11 -13
- package/dist/public-endpoints.js.map +1 -1
- package/dist/rate-limit.d.ts +23 -130
- package/dist/rate-limit.js +27 -132
- package/dist/rate-limit.js.map +1 -1
- package/dist/render-backend.d.ts +30 -145
- package/dist/render-backend.js +4 -27
- package/dist/render-backend.js.map +1 -1
- package/dist/run-preflight.d.ts +4 -4
- package/dist/run-preflight.js +10 -10
- package/dist/run-preflight.js.map +1 -1
- package/dist/run-static-warnings.d.ts +8 -8
- package/dist/run-static-warnings.js +24 -24
- package/dist/run-static-warnings.js.map +1 -1
- package/dist/runs.d.ts +18 -55
- package/dist/runs.js +26 -94
- package/dist/runs.js.map +1 -1
- package/dist/script-integrity.d.ts +6 -7
- package/dist/script-integrity.js +7 -8
- package/dist/script-integrity.js.map +1 -1
- package/dist/semantic-inserts.d.ts +4 -4
- package/dist/semantic-inserts.js +6 -6
- package/dist/semantic-inserts.js.map +1 -1
- package/dist/skills.d.ts +33 -107
- package/dist/skills.js +69 -160
- package/dist/skills.js.map +1 -1
- package/dist/tts-backend.d.ts +13 -42
- package/dist/tts-backend.js +2 -10
- package/dist/tts-backend.js.map +1 -1
- package/dist/uploads.d.ts +4 -4
- package/dist/uploads.js +4 -4
- package/dist/uploads.js.map +1 -1
- package/dist/vendor-response.d.ts +17 -80
- package/dist/vendor-response.js +19 -67
- package/dist/vendor-response.js.map +1 -1
- package/dist/voice-admission.d.ts +5 -5
- package/dist/voice-admission.js +6 -6
- package/dist/voice-admission.js.map +1 -1
- package/dist/voice-catalog-data.d.ts +2 -2
- package/dist/voice-catalog-data.js +2 -2
- package/dist/voice-catalog-data.js.map +1 -1
- package/dist/voice-catalog.d.ts +5 -5
- package/dist/voice-catalog.js +6 -6
- package/dist/voice-catalog.js.map +1 -1
- package/dist/voice-listing.d.ts +4 -4
- package/dist/voice-listing.js +6 -6
- package/dist/voice-listing.js.map +1 -1
- package/dist/voices.d.ts +40 -82
- package/dist/voices.js +56 -99
- package/dist/voices.js.map +1 -1
- package/package.json +1 -1
package/dist/api-failure.js
CHANGED
|
@@ -1,25 +1,12 @@
|
|
|
1
1
|
import { accountNotAdmittedError, apiError, debtOutstandingError, insufficientCreditsError, } from "./errors.js";
|
|
2
2
|
import { rateLimitedError } from "./rate-limit.js";
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* Ошибиться здесь можно в обе стороны, и цены разные. Не повторить 429 — это
|
|
7
|
-
* оборванный `makeUgc` на ране, за который уже заплачено. Повторить 402 — это
|
|
8
|
-
* агент, крутящий отказ по деньгам в цикле: баланс от повторов не растёт, а
|
|
9
|
-
* лимит частоты они съедают, и человек получает вместо «пополни счёт» молчание
|
|
10
|
-
* до самого дедлайна.
|
|
11
|
-
*/
|
|
3
|
+
/** Retry decision in one place. Not retrying a 429 aborts a paid run; retrying a 402 */
|
|
4
|
+
/** loops on a money refusal and burns the rate limit. */
|
|
12
5
|
export function isRetryableFailure(failure) {
|
|
13
6
|
return failure.kind === "rate_limited" || failure.kind === "server_error";
|
|
14
7
|
}
|
|
15
|
-
/**
|
|
16
|
-
|
|
17
|
-
* поллинга это его интервал): он же и пол, потому что сервер, не назвавший
|
|
18
|
-
* `Retry-After`, не разрешил долбить чаще обычного.
|
|
19
|
-
*
|
|
20
|
-
* Вызывать имеет смысл только после `isRetryableFailure`; на терминальном
|
|
21
|
-
* отказе результат бессмыслен, и функция не притворяется, что это не так.
|
|
22
|
-
*/
|
|
8
|
+
/** Delay before a retry, ms. `fallbackMs` is also the floor: no `Retry-After` does not */
|
|
9
|
+
/** permit polling faster than usual. Meaningful only after `isRetryableFailure`. */
|
|
23
10
|
export function retryDelayMs(failure, fallbackMs) {
|
|
24
11
|
const fromServer = failure.kind === "rate_limited" || failure.kind === "server_error"
|
|
25
12
|
? failure.retryAfterSeconds
|
|
@@ -43,58 +30,17 @@ const MONTHS = [
|
|
|
43
30
|
const MONTH = MONTHS.join("|");
|
|
44
31
|
const DAY_SHORT = "Mon|Tue|Wed|Thu|Fri|Sat|Sun";
|
|
45
32
|
const DAY_LONG = "Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday";
|
|
46
|
-
/** IMF-fixdate: `Sun, 06 Nov 1994 08:49:37 GMT` —
|
|
33
|
+
/** IMF-fixdate: `Sun, 06 Nov 1994 08:49:37 GMT` — the form senders MUST use. */
|
|
47
34
|
const IMF_FIXDATE = new RegExp(`^(?:${DAY_SHORT}), (\\d{2}) (${MONTH}) (\\d{4}) (\\d{2}):(\\d{2}):(\\d{2}) GMT$`);
|
|
48
|
-
/** RFC 850: `Sunday, 06-Nov-94 08:49:37 GMT` —
|
|
35
|
+
/** RFC 850: `Sunday, 06-Nov-94 08:49:37 GMT` — obsolete, but recipients must accept it. */
|
|
49
36
|
const RFC850_DATE = new RegExp(`^(?:${DAY_LONG}), (\\d{2})-(${MONTH})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2}) GMT$`);
|
|
50
|
-
/** asctime: `Sun Nov 6 08:49:37 1994` —
|
|
37
|
+
/** asctime: `Sun Nov 6 08:49:37 1994` — also obsolete and also mandatory. */
|
|
51
38
|
const ASCTIME_DATE = new RegExp(`^(?:${DAY_SHORT}) (${MONTH}) ([ \\d]\\d) (\\d{2}):(\\d{2}):(\\d{2}) (\\d{4})$`);
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
* сборкой через `Date.UTC`, а не через `Date.parse`.
|
|
55
|
-
*
|
|
56
|
-
* ПОЧЕМУ НЕ `Date.parse`. Внешнее ревью показало на его квирках два разных
|
|
57
|
-
* дефекта, и оба — молчаливые.
|
|
58
|
-
*
|
|
59
|
-
* 1. Двузначный год формы RFC 850 V8 разворачивает по своему правилу:
|
|
60
|
-
* `29-Jul-75` он читает как 1975 год, тогда как RFC велит считать годом в
|
|
61
|
-
* прошлое только то, что оказалось БОЛЕЕ ЧЕМ НА 50 ЛЕТ в будущем, — то есть
|
|
62
|
-
* это 2075-й (проверено запуском). Назначенная пауза превращалась в дату из
|
|
63
|
-
* прошлого, то есть в ноль, и клиент шёл опрашивать снова своим шагом.
|
|
64
|
-
* 2. Форма asctime не несёт пояса, и `Date.parse` читает её как МЕСТНОЕ время,
|
|
65
|
-
* тогда как HTTP считает её UTC. В поясе UTC+3 пауза «до 15:00:30» давала
|
|
66
|
-
* 30 секунд вместо трёх часов (проверено запуском с `TZ=Europe/Minsk`):
|
|
67
|
-
* повтор уходил почти на три часа раньше разрешённого.
|
|
68
|
-
*
|
|
69
|
-
* Сборка из разобранных полей обеих ошибок не имеет: пояс задан явно, век
|
|
70
|
-
* вычисляется по правилу RFC. Заодно исчезает зависимость поведения от часового
|
|
71
|
-
* пояса машины, на которой запущен клиент.
|
|
72
|
-
*
|
|
73
|
-
* БЛИЗКИЕ, НО НЕ СОВПАДАЮЩИЕ НАПИСАНИЯ ОТВЕРГАЮТСЯ НАМЕРЕННО — `UTC` вместо
|
|
74
|
-
* `GMT`, нижний регистр, однозначный день в IMF-fixdate. RFC задаёт эти
|
|
75
|
-
* написания буквально, регистр в том числе, поэтому нестрогое совпадение — уже
|
|
76
|
-
* не HTTP-date, а догадка о нём. Цена отказа мала и известна: заголовок читается
|
|
77
|
-
* как «сервер паузы не назвал», и клиент ждёт свой обычный шаг.
|
|
78
|
-
*
|
|
79
|
-
* День недели в строке не сверяется с датой: RFC разрешает получателю его
|
|
80
|
-
* игнорировать, а расхождение не делает дату непонятной.
|
|
81
|
-
*/
|
|
39
|
+
/** HTTP-date to epoch ms: the three RFC 9110 §5.6.7 forms, built via `Date.UTC`, not `Date.parse`, */
|
|
40
|
+
/** which misreads two-digit years and treats asctime as local time. Near-miss spellings are rejected. */
|
|
82
41
|
function httpDateToEpochMs(raw, now) {
|
|
83
|
-
/**
|
|
84
|
-
|
|
85
|
-
*
|
|
86
|
-
* `Date.UTC` невалидные поля не отвергает, а НОРМАЛИЗУЕТ: 32 июля становится
|
|
87
|
-
* первым августа, 25:00 — часом следующих суток, 29 февраля невисокосного
|
|
88
|
-
* года — первым марта (внешнее ревью, круг 3). Для нас это не мелочь: мусорный
|
|
89
|
-
* заголовок превращался бы не в «сервер паузы не назвал», а в паузу на трое
|
|
90
|
-
* суток, клиент проспал бы весь свой дедлайн и вернул таймаут по рану, который
|
|
91
|
-
* к тому моменту уже завершился.
|
|
92
|
-
*
|
|
93
|
-
* Секунда 60 разрешена НАМЕРЕННО: это координационная секунда, RFC 9110 её
|
|
94
|
-
* допускает, и отвергать законное значение было бы такой же ошибкой, как
|
|
95
|
-
* принимать незаконное. `Date.UTC` переносит её на следующую минуту — разница
|
|
96
|
-
* в одну секунду против паузы, которую всё равно назначил не мы.
|
|
97
|
-
*/
|
|
42
|
+
/** `Date.UTC` normalizes invalid fields (July 32 becomes August 1), so fields are range-checked. */
|
|
43
|
+
/** Second 60 is allowed on purpose: RFC 9110 permits a leap second. */
|
|
98
44
|
const utc = (year, month, day, h, m, s) => {
|
|
99
45
|
const monthIndex = MONTHS.indexOf(month);
|
|
100
46
|
const dayNumber = Number.parseInt(day, 10);
|
|
@@ -105,20 +51,12 @@ function httpDateToEpochMs(raw, now) {
|
|
|
105
51
|
return undefined;
|
|
106
52
|
if (dayNumber < 1)
|
|
107
53
|
return undefined;
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
// поэтому `Sun, 01 Jan 0099 …` превращался в 1999-й (проверено запуском). Дата
|
|
111
|
-
// уезжала в прошлое, пауза считалась нулевой, и агент получал «подожди 0
|
|
112
|
-
// секунд» — то есть повторял отбитый запрос немедленно и мог продлить себе
|
|
113
|
-
// блокировку. Нижняя граница взята из семантики даты RFC 5322, на которую
|
|
114
|
-
// ссылается RFC 9110: раньше 1900 года HTTP-дат не бывает.
|
|
54
|
+
// `Date.UTC` maps years 0–99 to 1900+year, turning a garbage date into a zero wait.
|
|
55
|
+
// HTTP dates never precede 1900.
|
|
115
56
|
if (year < 1900)
|
|
116
57
|
return undefined;
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
// переносится на следующие сутки, число месяца уезжает, и законное значение
|
|
120
|
-
// выглядело бы как невалидное. Поэтому число месяца проверяется на полуночи
|
|
121
|
-
// тех же суток, а время суток — диапазонами выше.
|
|
58
|
+
// The calendar is checked at midnight, apart from the time of day, so a leap
|
|
59
|
+
// second at 23:59:60 does not roll the day over and look invalid.
|
|
122
60
|
const midnight = new Date(Date.UTC(year, monthIndex, dayNumber));
|
|
123
61
|
if (midnight.getUTCDate() !== dayNumber || midnight.getUTCMonth() !== monthIndex) {
|
|
124
62
|
return undefined;
|
|
@@ -133,9 +71,8 @@ function httpDateToEpochMs(raw, now) {
|
|
|
133
71
|
const rfc850 = RFC850_DATE.exec(raw);
|
|
134
72
|
if (rfc850 !== null) {
|
|
135
73
|
const [, day, month, shortYear, h, m, s] = rfc850;
|
|
136
|
-
//
|
|
137
|
-
//
|
|
138
|
-
// вперёд. Именно этого правила нет у `Date.parse`.
|
|
74
|
+
// RFC 9110 century rule: use the current century, and step back a hundred years
|
|
75
|
+
// only if that lands more than 50 years in the future.
|
|
139
76
|
const nowYear = now.getUTCFullYear();
|
|
140
77
|
let year = Math.floor(nowYear / 100) * 100 + Number.parseInt(shortYear, 10);
|
|
141
78
|
if (year - nowYear > 50)
|
|
@@ -149,17 +86,8 @@ function httpDateToEpochMs(raw, now) {
|
|
|
149
86
|
}
|
|
150
87
|
return undefined;
|
|
151
88
|
}
|
|
152
|
-
/**
|
|
153
|
-
|
|
154
|
-
*
|
|
155
|
-
* ДВЕ ФОРМЫ — НЕ ПЕДАНТИЗМ. Дельту в секундах отдаёт наша мидлвара, а HTTP-дату
|
|
156
|
-
* — чужие прокси (её разрешает та же RFC, и nginx с облачными edge её ставят).
|
|
157
|
-
* Клиент, знающий только цифры, на дате получил бы `NaN` и либо не ждал вовсе,
|
|
158
|
-
* либо ждал бесконечность — обе ветки хуже, чем «подожди свой обычный шаг».
|
|
159
|
-
*
|
|
160
|
-
* `now` — параметр, а не `Date.now()` внутри: разбор даты обязан быть проверяем
|
|
161
|
-
* прогоном, а не зависеть от того, когда его запустили.
|
|
162
|
-
*/
|
|
89
|
+
/** `Retry-After` in seconds, both RFC 9110 forms: our middleware sends a delta, proxies */
|
|
90
|
+
/** often send an HTTP-date. `now` is a parameter so date parsing stays testable. */
|
|
163
91
|
export function parseRetryAfterSeconds(raw, now) {
|
|
164
92
|
if (raw === null || raw === undefined)
|
|
165
93
|
return undefined;
|
|
@@ -170,31 +98,18 @@ export function parseRetryAfterSeconds(raw, now) {
|
|
|
170
98
|
const seconds = Number.parseInt(trimmed, 10);
|
|
171
99
|
return Number.isSafeInteger(seconds) ? seconds : undefined;
|
|
172
100
|
}
|
|
173
|
-
//
|
|
174
|
-
//
|
|
175
|
-
// Легаси-разбор дат в V8 принимает почти всё: `Date.parse("-5")` даёт 30
|
|
176
|
-
// апреля 2001 года, `Date.parse("7.5")` — 4 июля того же, а
|
|
177
|
-
// `Date.parse("Mon 1/2/2099")` — 2099-й (всё проверено запуском). Мусор
|
|
178
|
-
// превращался бы в паузу длиной в десятилетия; клиент обрезал бы её своим
|
|
179
|
-
// дедлайном, проспал бы его весь и вернул таймаут по рану, который к тому
|
|
180
|
-
// моменту уже успешно завершился. Разбор и его доводы — в `httpDateToEpochMs`.
|
|
101
|
+
// A strict grammar, not `Date.parse`: V8's legacy parser turns garbage like "-5"
|
|
102
|
+
// into a date, which would become a wait of decades.
|
|
181
103
|
const at = httpDateToEpochMs(trimmed, now);
|
|
182
104
|
if (at === undefined || Number.isNaN(at))
|
|
183
105
|
return undefined;
|
|
184
|
-
//
|
|
185
|
-
// `Math.max` ниже по течению получил бы значение, тянущее паузу вниз.
|
|
106
|
+
// A past date means "now": zero, never negative.
|
|
186
107
|
return Math.max(0, Math.ceil((at - now.getTime()) / 1000));
|
|
187
108
|
}
|
|
188
|
-
/**
|
|
109
|
+
/** How many characters of a foreign body to carry into the message. */
|
|
189
110
|
const BODY_EXCERPT_LIMIT = 200;
|
|
190
|
-
/**
|
|
191
|
-
|
|
192
|
-
*
|
|
193
|
-
* ЗАЧЕМ ОНА ВООБЩЕ. Сообщение «HTTP 429» без единой подробности отправляет
|
|
194
|
-
* человека читать логи прокси, которых у него нет. Строка «error code: 1015» из
|
|
195
|
-
* тела Cloudflare отвечает на вопрос сразу. Обрезка обязательна: HTML-страница
|
|
196
|
-
* ошибки бывает в десятки килобайт, и целиком она не сообщение, а свалка.
|
|
197
|
-
*/
|
|
111
|
+
/** One-line excerpt of an unreadable body, so "HTTP 429" carries a hint like "error code: 1015". */
|
|
112
|
+
/** Truncated because an HTML error page can run to tens of kilobytes. */
|
|
198
113
|
function excerpt(bodyText) {
|
|
199
114
|
if (bodyText === undefined)
|
|
200
115
|
return undefined;
|
|
@@ -203,7 +118,7 @@ function excerpt(bodyText) {
|
|
|
203
118
|
return undefined;
|
|
204
119
|
return flat.length > BODY_EXCERPT_LIMIT ? `${flat.slice(0, BODY_EXCERPT_LIMIT)}…` : flat;
|
|
205
120
|
}
|
|
206
|
-
/** `JSON.parse
|
|
121
|
+
/** `JSON.parse` that never throws: nothing promises a proxy body is JSON. */
|
|
207
122
|
function safeJson(bodyText) {
|
|
208
123
|
if (bodyText === undefined)
|
|
209
124
|
return undefined;
|
|
@@ -214,54 +129,18 @@ function safeJson(bodyText) {
|
|
|
214
129
|
return undefined;
|
|
215
130
|
}
|
|
216
131
|
}
|
|
217
|
-
/**
|
|
218
|
-
|
|
219
|
-
*
|
|
220
|
-
* Список выведен из самих схем, а не переписан руками: разъедься он с ними —
|
|
221
|
-
* и защита ниже перестала бы закрывать то, ради чего написана. Значения берутся
|
|
222
|
-
* из литералов схем, поэтому переименование кода в `errors.ts` или
|
|
223
|
-
* `rate-limit.ts` доедет сюда само.
|
|
224
|
-
*/
|
|
132
|
+
/** Codes that drive client behavior, not just text. Derived from the schema literals, */
|
|
133
|
+
/** so a rename in `errors.ts` or `rate-limit.ts` reaches here on its own. */
|
|
225
134
|
const BEHAVIOURAL_CODES = new Set([
|
|
226
135
|
rateLimitedError.shape.error.shape.code.value,
|
|
227
136
|
insufficientCreditsError.shape.error.shape.code.value,
|
|
228
137
|
debtOutstandingError.shape.error.shape.code.value,
|
|
229
|
-
//
|
|
230
|
-
//
|
|
231
|
-
// обязан подчиняться тому же правилу, что и три соседних: признаваться
|
|
232
|
-
// только на своём статусе. Без этой строки 402 с телом `account_not_admitted`
|
|
233
|
-
// (кэширующий прокси, отдавший тело одного ответа со статусом другого) увёл
|
|
234
|
-
// бы агента говорить «кредиты покупать не надо» на денежном отказе.
|
|
138
|
+
// Recognized only on its own status, like the three above, so a cached body on a
|
|
139
|
+
// 402 cannot tell the agent that buying credits is pointless.
|
|
235
140
|
accountNotAdmittedError.shape.error.shape.code.value,
|
|
236
141
|
]);
|
|
237
|
-
/**
|
|
238
|
-
|
|
239
|
-
*
|
|
240
|
-
* ТЕЛО УТОЧНЯЕТ СТАТУС, НО НЕ ОТМЕНЯЕТ ЕГО. Специализированная схема
|
|
241
|
-
* применяется, только если статус ей СООТВЕТСТВУЕТ: `rate_limited` — на 429,
|
|
242
|
-
* оба денежных кода — на 402.
|
|
243
|
-
*
|
|
244
|
-
* Первая редакция давала телу перевешивать статус, рассуждая так: код объявлен
|
|
245
|
-
* в теле, а статус по дороге переписывает кто угодно, значит 502 поверх нашего
|
|
246
|
-
* 402 — это всё ещё «не хватило кредитов». Внешнее ревью показало обратную
|
|
247
|
-
* сторону того же рассуждения, и она хуже. Кэширующий прокси, отдавший старое
|
|
248
|
-
* тело `debt_outstanding` с новым статусом 429, делал отказ ТЕРМИНАЛЬНЫМ: агент
|
|
249
|
-
* бросал бы уже оплаченный ран и требовал погасить долг, которого нет. Зеркально
|
|
250
|
-
* 402 с телом `rate_limited` становился РЕТРАЙНЫМ, прямо вопреки правилу «любой
|
|
251
|
-
* 402 останавливает». Получались и внутренне противоречивые отказы вида
|
|
252
|
-
* `status === 402 && retryable === true`.
|
|
253
|
-
*
|
|
254
|
-
* Сочетание статуса и кода из РАЗНЫХ ответов — это не сообщение, а его порча, и
|
|
255
|
-
* доверять в нём надо тому, что уцелело наверняка. Уцелел статус: он часть
|
|
256
|
-
* стартовой строки, его не кэшируют отдельно от тела и им управляет тот же
|
|
257
|
-
* узел, который решил ответить. Поэтому при расхождении класс отказа берётся из
|
|
258
|
-
* статуса, а текст — из тела: сказать «сервер перегружен, повтори» и оказаться
|
|
259
|
-
* неправым дешевле, чем бросить оплаченный ран.
|
|
260
|
-
*
|
|
261
|
-
* ЧИСЛА `retry_after_seconds` ИЗ ТЕЛА СИЛЬНЕЕ ЗАГОЛОВКА — здесь тело выигрывает
|
|
262
|
-
* законно, потому что спорят два поля ОДНОГО ответа, а не ответ с самим собой.
|
|
263
|
-
* Наша мидлвара ставит в оба места одно число, и заголовок переписывают чаще.
|
|
264
|
-
*/
|
|
142
|
+
/** Status + body + header to an actionable failure. The body refines the status but never */
|
|
143
|
+
/** overrides it; on a mismatch the class comes from the status, the text from the body. */
|
|
265
144
|
export function parseApiFailure(input) {
|
|
266
145
|
const { status, bodyText } = input;
|
|
267
146
|
const now = input.now ?? new Date();
|
|
@@ -300,10 +179,8 @@ export function parseApiFailure(input) {
|
|
|
300
179
|
debtCredits: error.debt_credits,
|
|
301
180
|
};
|
|
302
181
|
}
|
|
303
|
-
//
|
|
304
|
-
//
|
|
305
|
-
// бы и на честном 403, то есть защита от несовпадения статуса с телом съела
|
|
306
|
-
// бы сам код. Здесь он признаётся, ниже — нет.
|
|
182
|
+
// The admission gate is recognized on 403 only; without this branch the code,
|
|
183
|
+
// being in `BEHAVIOURAL_CODES`, would be suppressed even on an honest 403.
|
|
307
184
|
const notAdmitted = status === 403 ? accountNotAdmittedError.safeParse(body) : undefined;
|
|
308
185
|
if (notAdmitted?.success === true) {
|
|
309
186
|
return {
|
|
@@ -312,27 +189,14 @@ export function parseApiFailure(input) {
|
|
|
312
189
|
message: notAdmitted.data.error.message,
|
|
313
190
|
};
|
|
314
191
|
}
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
// чужое, и сообщение придётся собрать из статуса.
|
|
192
|
+
// From here the body is foreign or unparsed. The generic envelope still gives
|
|
193
|
+
// text and code; otherwise the message is built from the status.
|
|
318
194
|
const generic = apiError.safeParse(body);
|
|
319
195
|
const message = generic.success
|
|
320
196
|
? generic.data.error.message
|
|
321
197
|
: messageFromStatus(status, bodyText);
|
|
322
|
-
//
|
|
323
|
-
//
|
|
324
|
-
// Сюда мы попадаем в том числе после несовпадения статуса с телом: 403 с
|
|
325
|
-
// нашим телом `rate_limited` специализированную схему не прошёл — и правильно
|
|
326
|
-
// не прошёл. Но общий конверт всё равно вытаскивал из него `code:
|
|
327
|
-
// "rate_limited"`, и отчёт агенту выходил самопротиворечивым: код, который
|
|
328
|
-
// SKILL.md связывает с «подожди и повтори», приезжал вместе с `retryable:
|
|
329
|
-
// false`. Клиент, ветвящийся по коду, повторял бы терминальный отказ;
|
|
330
|
-
// ветвящийся по флагу — останавливался. Самоописывающий контракт, дающий два
|
|
331
|
-
// разных ответа на один вопрос, хуже отсутствия контракта.
|
|
332
|
-
//
|
|
333
|
-
// Поэтому коды, за которыми закреплено ПОВЕДЕНИЕ, признаются только на своём
|
|
334
|
-
// статусе. Не признанный здесь код не теряется бесследно: текст тела уходит в
|
|
335
|
-
// `message` целиком, и человек его увидит.
|
|
198
|
+
// A behavioral code off its own status is dropped, or the report would pair
|
|
199
|
+
// "rate_limited" with `retryable: false`. The body text still reaches `message`.
|
|
336
200
|
const rawCode = generic.success ? generic.data.error.code : undefined;
|
|
337
201
|
const code = rawCode !== undefined && BEHAVIOURAL_CODES.has(rawCode) ? undefined : rawCode;
|
|
338
202
|
if (status === 429) {
|
|
@@ -350,29 +214,15 @@ export function parseApiFailure(input) {
|
|
|
350
214
|
}
|
|
351
215
|
return { kind: "client_error", status, message, code };
|
|
352
216
|
}
|
|
353
|
-
/**
|
|
354
|
-
|
|
355
|
-
*
|
|
356
|
-
* Именно ЭТА ветка чинит падение, названное в US-622: `res.json()` на HTML-теле
|
|
357
|
-
* от прокси бросал `SyntaxError`, и вызыватель видел «Unexpected token <»
|
|
358
|
-
* вместо «слишком часто, подожди». Ошибка парсера не только бесполезна — она
|
|
359
|
-
* УВОДИТ: выглядит как баг клиента там, где сервер честно сказал 429.
|
|
360
|
-
*/
|
|
217
|
+
/** Message when the body said nothing usable, instead of a parser `SyntaxError` */
|
|
218
|
+
/** that looks like a client bug where the server honestly answered 429. */
|
|
361
219
|
function messageFromStatus(status, bodyText) {
|
|
362
|
-
//
|
|
363
|
-
// Прежняя редакция объявляла всякий неразобранный 429 отказом прокси — и
|
|
364
|
-
// ошибалась ровно там, где тело не удалось ПРОЧИТАТЬ: заголовки могли прийти
|
|
365
|
-
// от нашего же API, а человека отправляли искать несуществующий шлюз вместо
|
|
366
|
-
// исчерпанного лимита аккаунта.
|
|
220
|
+
// An unread body says nothing about who answered, so no source is guessed.
|
|
367
221
|
if (bodyText === undefined) {
|
|
368
222
|
return `HTTP ${status}: the response body could not be read, so the reason is only known by status`;
|
|
369
223
|
}
|
|
370
|
-
//
|
|
371
|
-
//
|
|
372
|
-
// это шлюз или CDN» — тот же класс, просто соседней строкой. Отдать неродное
|
|
373
|
-
// тело может и наш сервер за балансировщиком, и промежуточный узел; знать
|
|
374
|
-
// это здесь неоткуда. Всё, что известно достоверно, — код ответа и то, что
|
|
375
|
-
// тело не наше; выжимка тела ниже даёт человеку самому увидеть, кто ответил.
|
|
224
|
+
// The source is not named here either: our server or any hop may send a foreign
|
|
225
|
+
// body. The excerpt lets the reader see who answered.
|
|
376
226
|
const tail = excerpt(bodyText);
|
|
377
227
|
const head = status === 429
|
|
378
228
|
? "HTTP 429: too many requests, and the body did not carry a Clipwright error object"
|
|
@@ -389,17 +239,8 @@ export function agentFailureReport(failure) {
|
|
|
389
239
|
status: "RETRY_LATER",
|
|
390
240
|
code: "rate_limited",
|
|
391
241
|
retryable: true,
|
|
392
|
-
//
|
|
393
|
-
//
|
|
394
|
-
// всякому 429 — а 429 приходит и на ОПРОС СТАТУСА уже запущенного рана,
|
|
395
|
-
// за который деньги зарезервированы или уже списаны. Агент, повторивший
|
|
396
|
-
// это человеку, сказал бы неправду о его счёте.
|
|
397
|
-
//
|
|
398
|
-
// Точное утверждение про деньги умеет делать только сервер: у него есть
|
|
399
|
-
// ведро, и `rateLimitedBody` в `rate-limit.ts` формулирует его отдельно
|
|
400
|
-
// для платных и бесплатных путей. Оно приезжает в `message` целиком.
|
|
401
|
-
// Дублировать его здесь более слабой и менее верной копией значило бы
|
|
402
|
-
// завести второй источник правды о деньгах — худший из возможных.
|
|
242
|
+
// No claim about money: a 429 can hit a status poll of an already charged run.
|
|
243
|
+
// Only the server knows, and its wording arrives in `message`.
|
|
403
244
|
next_action: seconds === undefined
|
|
404
245
|
? "Too many requests. Wait a few seconds, then repeat the SAME call — do not start a new one."
|
|
405
246
|
: `Too many requests. Wait ${seconds} seconds, then repeat the SAME call — do not start a new one.`,
|
|
@@ -414,9 +255,8 @@ export function agentFailureReport(failure) {
|
|
|
414
255
|
status: "FAILED",
|
|
415
256
|
code: "insufficient_credits",
|
|
416
257
|
retryable: false,
|
|
417
|
-
//
|
|
418
|
-
//
|
|
419
|
-
// покупать.
|
|
258
|
+
// Numbers repeat in the imperative: the agent shows one line, and the user
|
|
259
|
+
// needs them to decide how much to buy.
|
|
420
260
|
next_action: `STOP. Do NOT retry: this account has ${failure.balanceCredits} credits and the call ` +
|
|
421
261
|
`needs ${failure.requiredCredits}. Retrying cannot change that. Tell the user to top up ` +
|
|
422
262
|
"the balance, then call again. Nothing was charged and no run was created.",
|
|
@@ -429,14 +269,8 @@ export function agentFailureReport(failure) {
|
|
|
429
269
|
status: "FAILED",
|
|
430
270
|
code: "debt_outstanding",
|
|
431
271
|
retryable: false,
|
|
432
|
-
//
|
|
433
|
-
//
|
|
434
|
-
// первым. Хуже того, текст адресован АГЕНТУ и уводил его от
|
|
435
|
-
// единственного действия, которое снимает блокировку, — то есть
|
|
436
|
-
// отменял починку в точке доставки. Отдельным от `insufficient_credits`
|
|
437
|
-
// текст остаётся по другой причине: у счёта с долгом деньги на балансе
|
|
438
|
-
// БЫВАЮТ (`topUpHold` наращивает долг, не трогая баланс), и «не хватает
|
|
439
|
-
// кредитов» сказало бы заведомую неправду.
|
|
272
|
+
// Buying credits is the fix: incoming credits clear debt first. The text differs
|
|
273
|
+
// from `insufficient_credits` because an indebted account may hold a balance.
|
|
440
274
|
next_action: `STOP. Do NOT retry: an outstanding debt of ${failure.debtCredits} credits blocks new ` +
|
|
441
275
|
"paid runs. Tell the user to buy credits — incoming credits clear the debt before any " +
|
|
442
276
|
"of them reach the balance. Clearing it lifts this block, but the run still needs " +
|
|
@@ -451,12 +285,7 @@ export function agentFailureReport(failure) {
|
|
|
451
285
|
status: "RETRY_LATER",
|
|
452
286
|
code: `http_${failure.status}`,
|
|
453
287
|
retryable: true,
|
|
454
|
-
//
|
|
455
|
-
// утверждал «Clipwright API упал на своей стороне» — а 5xx одинаково
|
|
456
|
-
// отдают и наш сервер, и корпоративный шлюз, и CDN. Ошибочная
|
|
457
|
-
// атрибуция отправляет человека разбирать инцидент не в том месте, и
|
|
458
|
-
// она же противоречила соседнему сообщению, которое честно говорит, что
|
|
459
|
-
// причина известна только по статусу.
|
|
288
|
+
// The source is not named: our server, a corporate gateway and a CDN all send 5xx.
|
|
460
289
|
next_action: "The call failed with a server-side error. Repeat the SAME call in a few seconds. If it " +
|
|
461
290
|
"keeps failing, stop and tell the user; do not start a new run with a different " +
|
|
462
291
|
"idempotency key.",
|
|
@@ -469,10 +298,8 @@ export function agentFailureReport(failure) {
|
|
|
469
298
|
status: "FAILED",
|
|
470
299
|
code: "account_not_admitted",
|
|
471
300
|
retryable: false,
|
|
472
|
-
//
|
|
473
|
-
//
|
|
474
|
-
// Ни срока, ни обещания допуска: тем же кодом отвечает счёт,
|
|
475
|
-
// обезличенный удалением (US-624), а допуска на надгробие не бывает.
|
|
301
|
+
// Nothing in the call to fix and credits do not help. No promise of admission:
|
|
302
|
+
// a deleted, anonymized account answers with the same code.
|
|
476
303
|
next_action: "STOP. The account is not admitted to the beta. Do NOT retry and do NOT offer to buy " +
|
|
477
304
|
"credits: neither changes the answer. Tell the user the account has no beta access and " +
|
|
478
305
|
"to ask the operator about it.",
|
package/dist/api-failure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-failure.js","sourceRoot":"","sources":["../src/api-failure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-failure.js","sourceRoot":"","sources":["../src/api-failure.ts"],"names":[],"mappings":"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"}
|