@clipwright/core 0.19.0 → 0.21.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.
Files changed (135) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/__fixtures__/queue-promises.d.ts +5 -84
  3. package/dist/__fixtures__/queue-promises.js +7 -84
  4. package/dist/__fixtures__/queue-promises.js.map +1 -1
  5. package/dist/account-actors.d.ts +25 -25
  6. package/dist/account-actors.js +25 -25
  7. package/dist/account-actors.js.map +1 -1
  8. package/dist/account.d.ts +4 -10
  9. package/dist/account.js +6 -12
  10. package/dist/account.js.map +1 -1
  11. package/dist/actor-bounds.d.ts +4 -4
  12. package/dist/actor-bounds.js +4 -4
  13. package/dist/actor-bounds.js.map +1 -1
  14. package/dist/actor-qualities.d.ts +3 -3
  15. package/dist/actor-qualities.js +3 -3
  16. package/dist/actor-qualities.js.map +1 -1
  17. package/dist/actors.d.ts +8 -8
  18. package/dist/actors.js +9 -9
  19. package/dist/actors.js.map +1 -1
  20. package/dist/api-failure.d.ts +28 -129
  21. package/dist/api-failure.js +52 -225
  22. package/dist/api-failure.js.map +1 -1
  23. package/dist/aspect.d.ts +26 -96
  24. package/dist/aspect.js +32 -108
  25. package/dist/aspect.js.map +1 -1
  26. package/dist/contract-dispositions.d.ts +42 -167
  27. package/dist/contract-dispositions.js +54 -184
  28. package/dist/contract-dispositions.js.map +1 -1
  29. package/dist/endpoints.d.ts +5 -5
  30. package/dist/endpoints.js +5 -3
  31. package/dist/endpoints.js.map +1 -1
  32. package/dist/errors.d.ts +33 -101
  33. package/dist/errors.js +42 -108
  34. package/dist/errors.js.map +1 -1
  35. package/dist/faceless-cut-style.d.ts +115 -0
  36. package/dist/faceless-cut-style.js +109 -0
  37. package/dist/faceless-cut-style.js.map +1 -0
  38. package/dist/faceless-image-qualification.d.ts +97 -0
  39. package/dist/faceless-image-qualification.js +145 -0
  40. package/dist/faceless-image-qualification.js.map +1 -0
  41. package/dist/faceless-price.d.ts +21 -0
  42. package/dist/faceless-price.js +25 -0
  43. package/dist/faceless-price.js.map +1 -0
  44. package/dist/faceless-public-plan.d.ts +71 -0
  45. package/dist/faceless-public-plan.js +166 -0
  46. package/dist/faceless-public-plan.js.map +1 -0
  47. package/dist/faceless-public.d.ts +107 -0
  48. package/dist/faceless-public.js +74 -0
  49. package/dist/faceless-public.js.map +1 -0
  50. package/dist/faceless-short-61.d.ts +83 -0
  51. package/dist/faceless-short-61.js +152 -0
  52. package/dist/faceless-short-61.js.map +1 -0
  53. package/dist/faceless-storyboard-timing.d.ts +40 -0
  54. package/dist/faceless-storyboard-timing.js +97 -0
  55. package/dist/faceless-storyboard-timing.js.map +1 -0
  56. package/dist/faceless-storyboard-v2-plan.d.ts +3 -0
  57. package/dist/faceless-storyboard-v2-plan.js +112 -0
  58. package/dist/faceless-storyboard-v2-plan.js.map +1 -0
  59. package/dist/faceless-storyboard-v2-timing.d.ts +63 -0
  60. package/dist/faceless-storyboard-v2-timing.js +143 -0
  61. package/dist/faceless-storyboard-v2-timing.js.map +1 -0
  62. package/dist/faceless-storyboard-v2.d.ts +44 -0
  63. package/dist/faceless-storyboard-v2.js +43 -0
  64. package/dist/faceless-storyboard-v2.js.map +1 -0
  65. package/dist/faceless-storyboard.d.ts +55 -0
  66. package/dist/faceless-storyboard.js +105 -0
  67. package/dist/faceless-storyboard.js.map +1 -0
  68. package/dist/idempotency.d.ts +10 -44
  69. package/dist/idempotency.js +18 -44
  70. package/dist/idempotency.js.map +1 -1
  71. package/dist/index.d.ts +3 -0
  72. package/dist/index.js +24 -25
  73. package/dist/index.js.map +1 -1
  74. package/dist/long-form-pricing.d.ts +4 -4
  75. package/dist/long-form-pricing.js +4 -4
  76. package/dist/long-form-pricing.js.map +1 -1
  77. package/dist/long-form-profile.d.ts +2 -2
  78. package/dist/long-form-profile.js +2 -2
  79. package/dist/long-form-profile.js.map +1 -1
  80. package/dist/pacing.d.ts +1 -1
  81. package/dist/pacing.js +1 -1
  82. package/dist/pacing.js.map +1 -1
  83. package/dist/public-endpoints.d.ts +9 -11
  84. package/dist/public-endpoints.js +11 -13
  85. package/dist/public-endpoints.js.map +1 -1
  86. package/dist/rate-limit.d.ts +23 -130
  87. package/dist/rate-limit.js +27 -132
  88. package/dist/rate-limit.js.map +1 -1
  89. package/dist/render-backend.d.ts +30 -145
  90. package/dist/render-backend.js +4 -27
  91. package/dist/render-backend.js.map +1 -1
  92. package/dist/run-preflight.d.ts +4 -4
  93. package/dist/run-preflight.js +10 -10
  94. package/dist/run-preflight.js.map +1 -1
  95. package/dist/run-static-warnings.d.ts +8 -8
  96. package/dist/run-static-warnings.js +26 -24
  97. package/dist/run-static-warnings.js.map +1 -1
  98. package/dist/runs.d.ts +34 -55
  99. package/dist/runs.js +28 -94
  100. package/dist/runs.js.map +1 -1
  101. package/dist/script-integrity.d.ts +6 -7
  102. package/dist/script-integrity.js +7 -8
  103. package/dist/script-integrity.js.map +1 -1
  104. package/dist/semantic-inserts.d.ts +4 -4
  105. package/dist/semantic-inserts.js +6 -6
  106. package/dist/semantic-inserts.js.map +1 -1
  107. package/dist/skills.d.ts +37 -108
  108. package/dist/skills.js +77 -161
  109. package/dist/skills.js.map +1 -1
  110. package/dist/tts-backend.d.ts +13 -42
  111. package/dist/tts-backend.js +2 -10
  112. package/dist/tts-backend.js.map +1 -1
  113. package/dist/uploads.d.ts +4 -4
  114. package/dist/uploads.js +4 -4
  115. package/dist/uploads.js.map +1 -1
  116. package/dist/vendor-response.d.ts +17 -80
  117. package/dist/vendor-response.js +19 -67
  118. package/dist/vendor-response.js.map +1 -1
  119. package/dist/voice-admission.d.ts +5 -5
  120. package/dist/voice-admission.js +6 -6
  121. package/dist/voice-admission.js.map +1 -1
  122. package/dist/voice-catalog-data.d.ts +2 -2
  123. package/dist/voice-catalog-data.js +2 -2
  124. package/dist/voice-catalog-data.js.map +1 -1
  125. package/dist/voice-catalog.d.ts +5 -5
  126. package/dist/voice-catalog.generated.json +56 -54
  127. package/dist/voice-catalog.js +6 -6
  128. package/dist/voice-catalog.js.map +1 -1
  129. package/dist/voice-listing.d.ts +4 -4
  130. package/dist/voice-listing.js +6 -6
  131. package/dist/voice-listing.js.map +1 -1
  132. package/dist/voices.d.ts +40 -82
  133. package/dist/voices.js +56 -99
  134. package/dist/voices.js.map +1 -1
  135. package/package.json +1 -1
@@ -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
- * Пауза перед повтором, мс. `fallbackMs` — собственный шаг вызывателя (для
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
- * HTTP-date → миллисекунды эпохи. Три формы RFC 9110 §5.6.7, СОБСТВЕННОЙ
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
- // ГОД МЛАДШЕ 1900 ОТВЕРГАЕТСЯ, И ЭТО НЕ ПРИДИРКА (внешнее ревью, круг 4).
109
- // У `Date.UTC` есть наследственный квирк: годы 0–99 он трактует как 1900+год,
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
- // Сверка на полной дате отвергала бы координационную секунду: `23:59:60`
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
- // ПРАВИЛО ВЕКА ИЗ RFC 9110 §5.6.7: берём тот же век, что у текущего года, и
137
- // отступаем на сто лет назад, только если получилось больше чем на 50 лет
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
- * `Retry-After` в секундах, обе формы RFC 9110.
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
- // ДАТА РАЗБИРАЕТСЯ СОБСТВЕННОЙ ГРАММАТИКОЙ, А НЕ `Date.parse`.
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
- // US-620. За этим кодом закреплено поведение в `packages/mcp-server/SKILL.md`
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
- // ВЕНТИЛЬ НА N — НА СВОЁМ СТАТУСЕ И ТОЛЬКО НА НЁМ (US-620). Ветка нужна
304
- // именно потому, что код внесён в `BEHAVIOURAL_CODES`: без неё он подавлялся
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
- // (`apiError`) даёт хотя бы текст и код; всё, что не разобралось и им, —
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
- // КОД ИЗ ТЕЛА ПРОПУСКАЕТСЯ, ТОЛЬКО ЕСЛИ ОН НЕ ГОВОРЯЩИЙ (внешнее ревью, круг 2).
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
- // ИСТОЧНИК ОТКАЗА НЕ ПРИПИСЫВАЕТСЯ ПО ПУСТОМУ МЕСТУ (внешнее ревью, круг 13).
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
- // ИСТОЧНИК НЕ НАЗЫВАЕТСЯ И ЗДЕСЬ (внешнее ревью, круг 15). Круг 14 вычистил
371
- // атрибуцию из `next_action`, но в самом сообщении осталась догадка «обычно
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
- // ревью (круг 6). Прежняя редакция дописывала «nothing was charged» ко
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
- // снимает». С clipwright#27 это ЛОЖЬ: поступившие кредиты гасят долг
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
- // ИСТОЧНИК ОТКАЗА НЕ НАЗЫВАЕТСЯ (внешнее ревью, круг 14). Прежний текст
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
- // Совет отличается от общего 4xx намеренно: чинить в вызове нечего, и
473
- // покупка кредитов блокировку не снимет. Тот же текст, что в SKILL.md.
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.",
@@ -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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"}