@runlot/api 0.1.0-rc.46 → 0.1.0-rc.47

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/dist/schema.d.ts CHANGED
@@ -610,7 +610,7 @@ export interface paths {
610
610
  put?: never;
611
611
  /**
612
612
  * Creates a diagnostic image (`runlot pg export`)
613
- * @description **Is not a backup** (docs/env-db-assembly.md §5). What it creates is an **immutable
613
+ * @description **This is not a backup** (docs/env-db-assembly.md §5). What it creates is an **immutable
614
614
  * diagnostic key** under the current `(project, epoch)`, and it moves none of the latest,
615
615
  * freshness, or retention pointers, nor does it affect the name of the next automatic
616
616
  * backup.
@@ -622,14 +622,14 @@ export interface paths {
622
622
  * this endpoint creates stays **outside** that namespace — restore cannot select it,
623
623
  * pruning does not count it, and it cannot move latest.
624
624
  *
625
- * **Is not idempotent.** Each call creates one more image, because the server builds a new
625
+ * **This is not idempotent.** Each call creates one more image, because the server builds a new
626
626
  * stamp for every request. The only thing absorbed idempotently is a **retry of the same
627
627
  * stamp** once it has reached the node.
628
628
  *
629
629
  * Requires member or higher only. The image is the entire database, so it is not something
630
630
  * a viewer should fetch in a single call.
631
631
  *
632
- * Is slow. The response arrives only after the dump finishes — in proportion to size — and
632
+ * It is slow. The response arrives only after the dump finishes — in proportion to size — and
633
633
  * the project's actor is held for that duration.
634
634
  */
635
635
  post: operations["exportDatabase"];
@@ -804,8 +804,7 @@ export interface paths {
804
804
  /**
805
805
  * Aborts an in-progress operation (`runlot pg abort`)
806
806
  * @description Only possible **before** an unrecoverable phase (docs/phase5.md B4): evict,
807
- * restore_generation, and delete are abortable up to committing; restore is not. Aborting
808
- * returns the batch to active and leaves `terminalCode=aborted`.
807
+ * restore_generation, and delete are abortable up to committing; restore is not. Aborting returns the placement to active and leaves `terminalCode=aborted`.
809
808
  *
810
809
  * admin and above. The server **reads first, then aborts** — reversing the order would
811
810
  * abort another project's operation for real before returning 404.
@@ -978,7 +977,7 @@ export interface paths {
978
977
  */
979
978
  post: operations["grantStorage"];
980
979
  /**
981
- * Unprovision storage usage (`runlot storage delete`)
980
+ * Remove project storage (`runlot storage delete`)
982
981
  * @description **Objects are not deleted.** Deleting everything under the prefix must be a CP operation
983
982
  * idempotent by `op_id` (docs/storage.md §7, the same lane as database deletion), and that
984
983
  * lane does not exist yet — this fact is recorded in the audit log.
@@ -1002,21 +1001,21 @@ export interface paths {
1002
1001
  cookie?: never;
1003
1002
  };
1004
1003
  /**
1005
- * AI 모델 카탈로그 (`runlot ai models`)
1006
- * @description `env.ai` 부를 수 있는 모델의 전부다 (docs/ai.md §2.3). **로그인만 하면
1007
- * 있다** 무엇을 있는지는 org 비밀이 아니고, 이 목록이 곧
1008
- * 가격표다.
1004
+ * AI model catalog (`runlot ai models`)
1005
+ * @description Every model `env.ai` can call (docs/ai.md §2.3). **Any signed-in user can read it** — what you can
1006
+ * buy is not an org secret, and this list is the price list.
1009
1007
  *
1010
- * 차선이 둘이다. `frontier` 프로바이더 **정가 그대로** 통과시킨다
1011
- * (`listPrice: true`, 마진 0) — 그래서 모델 id 프로바이더 이름이 그대로
1012
- * 있고 `provider` 실린다. `value` 우리가 도매로 사서 우리 값으로 파는
1013
- * 가성비 모델이라 `provider` **안 싣는다**: 값은 우리가 언제든 갈아끼운다.
1008
+ * There are two lanes. `frontier` passes the provider's **list price** straight through
1009
+ * (`listPrice: true`, zero margin) — that is why the provider's name stays in the model id and
1010
+ * `provider` is included. `value` models are the ones we buy wholesale and sell at our own price, so
1011
+ * `provider` is **not included**: that is a value we swap whenever we want.
1014
1012
  *
1015
- * 단가는 100 토큰당 **마이크로센트** 정수다 (1 µ¢ = 1e-8 USD). 소수
1016
- * 자리를 서버가 정하지 않는 것이 요점이다작은 호출이 센트로 반올림하면
1017
- * 0 이 되고 (docs/ai.md §3.1), 사실이 포맷 문자열 하나에 묶이면 된다.
1013
+ * Prices are integer **microcents** per million tokens (1 µ¢ = 1e-8 USD). The point is that the
1014
+ * server does not fix the number of decimal places a small call rounds to 0 in cents
1015
+ * (docs/ai.md §3.1), and that fact must not be tied to a single format string.
1018
1016
  *
1019
- * 목록에 없는 모델 id 호출에서 400 이다. **임의 모델 패스스루는 없다.**
1017
+ * A model id that is not on this list returns 400 at call time. **There is no arbitrary model
1018
+ * passthrough.**
1020
1019
  */
1021
1020
  get: operations["listAIModels"];
1022
1021
  put?: never;
@@ -1038,45 +1037,44 @@ export interface paths {
1038
1037
  cookie?: never;
1039
1038
  };
1040
1039
  /**
1041
- * AI 상태 (`runlot ai usage`)
1042
- * @description 부여 여부·상한 넷·org 잔액·최근 24 시간 사용량 (docs/ai.md §6). 부여가
1043
- * 없어도 상한은 채워 온다"켜면 이런 상한이 됩니다" 의 재료이고,
1044
- * `granted` 진짜 상태다.
1040
+ * AI status (`runlot ai usage`)
1041
+ * @description Whether AI is turned on, the four limits, the org's balance, and the last 24 hours of usage
1042
+ * (docs/ai.md §6). The limits come populated even when AI is off they are the material for "here is
1043
+ * what the limits would be if you turned this on", and `granted` is the real state.
1045
1044
  *
1046
- * `maxOutputTokens`·`maxInputTokens` `0` **"모델이 정한다"** 다.
1045
+ * `0` in `maxOutputTokens` and `maxInputTokens` means **the model decides**.
1047
1046
  *
1048
- * `spentMicroCents24h` `usage_hourly` 에서 만드는 수라 원장에서 따로
1049
- * 읽는다 단가가 시점의 함수이기 때문이고, 그것이 0046 표를 둘로 가른
1050
- * 이유다.
1047
+ * `spentMicroCents24h` cannot be built from `usage_hourly`, so it is read from the ledger instead —
1048
+ * prices are a function of the moment, which is why 0046 split the two tables.
1051
1049
  *
1052
- * viewer 이상.
1050
+ * viewer or above.
1053
1051
  */
1054
1052
  get: operations["getAI"];
1055
1053
  put?: never;
1056
1054
  /**
1057
- * AI 켠다 (배포가 `"ai": true` 를 읽고 부른다)
1058
- * @description **멱등이다.** 요청 본문이 없다상한도 모델 목록도 사용자가 정하는 값이
1059
- * 아니다.
1055
+ * Turns on AI (a deployment calls this after reading `"ai": true`)
1056
+ * @description **This is idempotent.** There is no request body neither the limits nor the model list is a
1057
+ * value the user sets.
1060
1058
  *
1061
- * 켜지면 노드가 다음 수렴에서 `env.ai` 연결한다. **번들도 `"ai": true`
1062
- * 여야 실린다**부여는 CP 것이고 어떤 시스템 워커를 띄울지는 번들의
1063
- * 것이다.
1059
+ * Once it is on, the node connects `env.ai` on the next convergence. **The bundle must also say
1060
+ * `\"ai\": true`**turning it on is the CP's side, and which system workers start is the bundle's
1061
+ * side.
1064
1062
  *
1065
- * 노드 자격 검사가 **없다**: 상류(Bedrock·Vertex) 노드 site.env 의 값이라
1066
- * 사실이 CP 등록돼 있지 않다. 자격 없는 노드에서는 부여가 통과하고
1067
- * 호출이 503 이다 (docs/ai.md §9 의 열린 것).
1063
+ * There is **no node credential check**: the upstream credentials (Bedrock, Vertex) live in the
1064
+ * node's site.env, so the CP has no record of them. On a node without them, turning it on still
1065
+ * succeeds and the call returns 503 (an open item in docs/ai.md §9).
1068
1066
  *
1069
- * member 이상. 감사 `ai.grant`.
1067
+ * member and above. Audited as `ai.grant`.
1070
1068
  */
1071
1069
  post: operations["grantAI"];
1072
1070
  /**
1073
- * AI 끈다 (`runlot ai delete`)
1074
- * @description 다음 배포부터 `env.ai` 없다. 멱등이다.
1071
+ * Turns off AI (`runlot ai delete`)
1072
+ * @description From the next deployment on, there is no `env.ai`. This is idempotent.
1075
1073
  *
1076
- * **원장은 지운다**이미 지불한 돈의 기록이다. 크레딧 잔액도 그대로다:
1077
- * 잔액은 org 것이고 부여는 프로젝트의 것이다.
1074
+ * **The ledger is not deleted** it is the record of money already paid. The credit balance stays
1075
+ * as well: the balance belongs to the org, and what you are turning off belongs to the project.
1078
1076
  *
1079
- * admin. 감사 `ai.revoke`.
1077
+ * admin. Audited as `ai.revoke`.
1080
1078
  */
1081
1079
  delete: operations["revokeAI"];
1082
1080
  options?: never;
@@ -1094,17 +1092,18 @@ export interface paths {
1094
1092
  cookie?: never;
1095
1093
  };
1096
1094
  /**
1097
- * AI 크레딧 잔액과 자동 충전 설정 (`runlot ai credit`)
1098
- * @description 잔액은 **마이크로센트**이고 음수일 있다 (docs/ai.md §3.3 — 잔액 검사는
1099
- * 호출 전이고 차감은 뒤라 시작한 호출 하나가 잔액을 넘길 있다).
1095
+ * AI credit balance and auto top-up settings (`runlot ai credit`)
1096
+ * @description The balance is in **microcents** and can go negative (docs/ai.md §3.3 — the balance check runs
1097
+ * before a call and the deduction after it, so a single call that has already started can take the
1098
+ * balance past zero).
1100
1099
  *
1101
- * `hasPaymentMethod` 거짓이면 자동 충전을 없다저장된 카드가
1102
- * 없기 때문이고, **첫 충전은 반드시 수동이다** (그것이 카드를 저장한다).
1100
+ * If `hasPaymentMethod` is false, auto top-up cannot be turned on there is no saved card, and
1101
+ * **the first top-up is always manual** (that is what saves the card).
1103
1102
  *
1104
- * `autoTopupsToday` `autoTopupPerDay` 같이 준다. 상한이 하루
1105
- * 지출 천장이라 화면이 둘을 같이 보여야 "왜 충전됐지" 답이 된다.
1103
+ * `autoTopupsToday` and `autoTopupPerDay` come together. That cap is the ceiling on a day's spend,
1104
+ * so a screen has to show both to answer "why didn't it top up".
1106
1105
  *
1107
- * member 이상.
1106
+ * member or above.
1108
1107
  */
1109
1108
  get: operations["getAICredit"];
1110
1109
  put?: never;
@@ -1125,12 +1124,12 @@ export interface paths {
1125
1124
  cookie?: never;
1126
1125
  };
1127
1126
  /**
1128
- * AI 원장
1129
- * @description 금액의 정본이다 (0046). `kind` `call`(음수)·`topup`(양수)·`adjust`.
1130
- * 커서는 `ledger_id` — 시각으로 자르면 같은 밀리초의 둘이 페이지 경계에서
1131
- * 갈린다.
1127
+ * AI ledger
1128
+ * @description This is the source of truth for amounts (0046). `kind` is `call` (negative), `topup` (positive),
1129
+ * or `adjust`. The cursor is `ledger_id` — cutting by time would split two rows in the same
1130
+ * millisecond across a page boundary.
1132
1131
  *
1133
- * member 이상.
1132
+ * member or above.
1134
1133
  */
1135
1134
  get: operations["listAILedger"];
1136
1135
  put?: never;
@@ -1153,18 +1152,16 @@ export interface paths {
1153
1152
  get?: never;
1154
1153
  put?: never;
1155
1154
  /**
1156
- * 크레딧 충전 체크아웃
1157
- * @description 임베드 체크아웃 URL 준다 (docs/billing.md §3.1 같은 모양 대시보드가
1158
- * iframe 으로 띄운다).
1159
- *
1160
- * **돌아온 브라우저는 증거가 아니다.** 잔액을 올리는 것은 `order.paid` 웹훅
1161
- * 하나이고, 화면은 성공 사건 뒤에 잔액을 폴링한다.
1155
+ * Credit top-up checkout
1156
+ * @description Returns an embedded checkout URL (the same shape as docs/billing.md §3.1 the dashboard opens it
1157
+ * in an iframe).
1162
1158
  *
1163
- * `microCents` 열거된 티어 하나여야 한다 자동 충전이 같은 목록을
1164
- * 쓰므로 (사람 없는 자리에서 도는 청구라 금액이 열거된 값이어야 한다) 수동만
1165
- * 자유롭게 두면 표가 둘이 된다.
1159
+ * **A browser coming back is not proof.** The one thing that raises the balance is the `order.paid`
1160
+ * webhook, and the screen polls the balance after the success event.
1166
1161
  *
1167
- * admin.
1162
+ * `microCents` must be one of the listed tiers — auto top-up uses the same list (it charges with
1163
+ * nobody watching, so the amount has to be one of the enumerated values), and leaving manual top-up
1164
+ * free-form would create two tables.
1168
1165
  */
1169
1166
  post: operations["createAICreditCheckout"];
1170
1167
  delete?: never;
@@ -1184,19 +1181,19 @@ export interface paths {
1184
1181
  };
1185
1182
  get?: never;
1186
1183
  /**
1187
- * 자동 충전을 켜거나 끈다
1188
- * @description **켜는 것은 명시 동의다** (docs/ai.md §3.5). 화면이 "잔액이 X 아래로
1189
- * 내려가면 저장된 카드에 Y 자동으로 청구합니다. 하루 최대 N " 그대로
1190
- * 보여 주고 체크를 받는다 off-session 청구는 카드사 규정이 사전 동의를
1191
- * 요구하고, 그 문장이 곧 동의의 내용이다.
1184
+ * Turns auto top-up on or off
1185
+ * @description **Turning it on is explicit consent** (docs/ai.md §3.5). The screen shows "when the balance falls
1186
+ * below X, we charge Y to the saved card, at most N times a day" verbatim and takes a checkbox — card
1187
+ * network rules require prior consent for off-session charges, and that sentence is the content of
1188
+ * the consent.
1192
1189
  *
1193
- * 서버가 보는 셋: 저장된 결제 수단이 있는가 (없으면 409), 금액이 티어
1194
- * 목록에 있는가, 그리고 기준이 **0 보다 크고 충전 금액보다 작은가**. 기준이
1195
- * 0 이면 충전이 비동기인 전부가 402 이고, 기준이 충전액 이상이면
1196
- * 충전해도 여전히 기준 아래라 하루 상한까지 계속 충전한다 설정이 아니라
1197
- * 함정이다.
1190
+ * The server checks three things: whether a payment method is saved (409 if not), whether the amount
1191
+ * is on the tier list, and whether the threshold is **greater than 0 and smaller than the top-up
1192
+ * amount**. A threshold of 0 makes the whole asynchronous top-up window return 402, and a threshold
1193
+ * at or above the top-up amount leaves the balance still below the threshold after a top-up, so it
1194
+ * keeps topping up to the daily cap — that is a trap, not a setting.
1198
1195
  *
1199
- * admin. 감사 `ai.autotopup.on` / `ai.autotopup.off`.
1196
+ * admin. Audited as `ai.autotopup.on` / `ai.autotopup.off`.
1200
1197
  */
1201
1198
  put: operations["setAIAutoTopup"];
1202
1199
  post?: never;
@@ -1228,7 +1225,7 @@ export interface paths {
1228
1225
  put?: never;
1229
1226
  /**
1230
1227
  * Turns on email (a deployment calls this after reading `"email": true`)
1231
- * @description **Is idempotent.** There is no request body — we determine the address
1228
+ * @description **This is idempotent.** There is no request body — we determine the address
1232
1229
  * (`<project>.<org>.<mail-domain>`), and the plan determines the limit. The address is
1233
1230
  * fixed to the name at the time of grant.
1234
1231
  *
@@ -1402,13 +1399,12 @@ export interface paths {
1402
1399
  head?: never;
1403
1400
  /**
1404
1401
  * Change settings (`runlot auth set`)
1405
- * @description **Is a partial update.** Only the fields you send change, and the rest stay as they are.
1402
+ * @description **This is a partial update.** Only the fields you send change, and the rest stay as they are.
1406
1403
  * If the UI sends all three brand settings every time a single switch changes, a later
1407
1404
  * save can overwrite an earlier one when two users edit the same settings.
1408
1405
  *
1409
- * Returns 404 `not_granted` if the usage setting does not exist. You cannot save settings
1410
- * alone ahead of time, because the setting values are stored together with the usage
1411
- * setting record.
1406
+ * Returns 404 `not_granted` if auth has not been turned on for this project. You cannot save settings
1407
+ * alone ahead of time, because the setting values are stored in the record created when auth was turned on.
1412
1408
  *
1413
1409
  * `sessionDays` is a setting that also determines the size of the session table
1414
1410
  * (docs/auth.md §13 — it stays within the 150 MB cap).
@@ -2353,7 +2349,7 @@ export interface paths {
2353
2349
  get?: never;
2354
2350
  put?: never;
2355
2351
  /**
2356
- * Renews it (`runlot domains renew`)
2352
+ * Renews a domain (`runlot domains renew`)
2357
2353
  * @description Requires admin or higher. Audited as `domain.renew`.
2358
2354
  */
2359
2355
  post: operations["renewDomain"];
@@ -2457,7 +2453,7 @@ export interface paths {
2457
2453
  get?: never;
2458
2454
  put?: never;
2459
2455
  /**
2460
- * The registrar reads this again right now
2456
+ * Re-reads this domain from the registrar now (`runlot domains sync`)
2461
2457
  * @description Requires member or higher. The registrar is the source of truth for
2462
2458
  * expiry date, lock, and NS. If the registrar responds that it is not in
2463
2459
  * our account, that is `transferred_out` — the only signal that a transfer
@@ -3003,7 +2999,7 @@ export interface components {
3003
2999
  };
3004
3000
  /**
3005
3001
  * @description Becomes a single label of the hostname, so it follows DNS rules. Since
3006
- * the project name goes directly into `<name>.lvh.me`, not enforcing this
3002
+ * the project name goes directly into `<name>.<org>.<app-domain>`, not enforcing this
3007
3003
  * here would let you create a project that exists but is unreachable.
3008
3004
  */
3009
3005
  Slug: string;
@@ -3059,6 +3055,14 @@ export interface components {
3059
3055
  * (the 409 `project_limit` from `createProject`).
3060
3056
  */
3061
3057
  projectLimit: number;
3058
+ /**
3059
+ * Format: int64
3060
+ * @description The project database size cap for this plan (Free 500 MiB, Pro 8 GiB). The
3061
+ * same derived-value reasoning as `projectLimit`: the dashboard's usage meter and
3062
+ * the CLI's limit line read it from here instead of carrying their own table.
3063
+ * Nothing rejects a write at the cap; see `/docs/data/database/size-cap`.
3064
+ */
3065
+ dbCapBytes: number;
3062
3066
  };
3063
3067
  Notification: {
3064
3068
  /** Format: int64 */
@@ -3271,7 +3275,7 @@ export interface components {
3271
3275
  user: string;
3272
3276
  password: string;
3273
3277
  /**
3274
- * @description **The disabled value never responds.** front cuts off the SSLRequest at the
3278
+ * @description **Connections with sslmode=disable are rejected.** front cuts off the SSLRequest at the
3275
3279
  * rejection stage, so `disable` never connects in the first place.
3276
3280
  * @enum {string}
3277
3281
  */
@@ -3363,16 +3367,33 @@ export interface components {
3363
3367
  */
3364
3368
  seq: number;
3365
3369
  /**
3366
- * @description Offsite key (`gen/<project>/<epoch>/<stamp>-<seq>.feather`)
3367
- * @example gen/2f1c…/7/20260902T031500Z-0003.feather
3370
+ * @description Offsite key (`gen/<project>/<epoch>/<stamp>-<seq>.pages`)
3371
+ * @example gen/2f1c…/7/20260902T031500Z-0003.pages
3368
3372
  */
3369
3373
  key: string;
3370
3374
  /**
3371
3375
  * Format: int64
3372
3376
  * @description The size of the **object stored offsite**. An encrypted generation is larger than
3373
- * the plaintext, and the admission reservation is also calculated based on this value.
3377
+ * the plaintext. For a delta this is the size of the changed pages only — see
3378
+ * `imageBytes` for the size of the database a restore produces.
3374
3379
  */
3375
3380
  bytes: number;
3381
+ /**
3382
+ * @description `true` when this object alone restores the database; `false` for a delta, which is
3383
+ * applied on top of the chain that ends at `prevTxnId`. Restoring a delta pours its whole
3384
+ * chain (full first); the chain is resolved by the server and never crosses an epoch.
3385
+ */
3386
+ full: boolean;
3387
+ /**
3388
+ * Format: int64
3389
+ * @description For a delta, the commit of the generation it links to. 0 for a full.
3390
+ */
3391
+ prevTxnId?: number;
3392
+ /**
3393
+ * Format: int64
3394
+ * @description The size of the database a restore of this generation produces.
3395
+ */
3396
+ imageBytes: number;
3376
3397
  sha256: string;
3377
3398
  /**
3378
3399
  * Format: int64
@@ -3771,65 +3792,65 @@ export interface components {
3771
3792
  */
3772
3793
  mailIn: number;
3773
3794
  };
3774
- /** @description 카탈로그 (docs/ai.md §2.3). */
3795
+ /** @description One row of the catalog (docs/ai.md §2.3). */
3775
3796
  AIModel: {
3776
- /** @description `env.ai.run()` 적는 문자열. 프론티어는 `<provider>/<model>`, 가성비 모델은 `@runlot/<model>` */
3797
+ /** @description The string you write in `env.ai.run()`. Frontier models are `<provider>/<model>`, value models are `@runlot/<model>` */
3777
3798
  id: string;
3778
3799
  /** @enum {string} */
3779
3800
  lane: "frontier" | "value";
3780
3801
  display: string;
3781
- /** @description 모델을 만든 (Anthropic·Google·Meta) */
3802
+ /** @description who built the model (Anthropic, Google, Meta, and so on) */
3782
3803
  vendor: string;
3783
3804
  /**
3784
- * @description 우리가 부르는 곳. **프론티어에서만 실린다**가성비 모델은 우리가
3785
- * 갈아끼우는 값이라 계약이 아니다.
3805
+ * @description The provider we call. **Included for frontier models only** for value models this is something we
3806
+ * swap, so it is not part of the contract.
3786
3807
  */
3787
3808
  provider?: string;
3788
- /** @description 모델 자체의 컨텍스트 */
3809
+ /** @description the model's own context window */
3789
3810
  contextTokens: number;
3790
3811
  /**
3791
- * @description runlot 모델에 허용하는 입력 상한. 대부분 contextTokens 같고,
3792
- * GPT-5.6 Terra 272,000 — 뒤는 요청 전체가 장문 단가로 바뀌므로
3793
- * 표준 단가 하나만 광고하는 카탈로그가 앞에서 자른다.
3812
+ * @description The input limit runlot allows for this model. It is the same as contextTokens for most models;
3813
+ * GPT-5.6 Terra is 272,000 — past that point the whole request switches to long-context pricing, so a
3814
+ * catalog that advertises a single standard price cuts it off there.
3794
3815
  */
3795
3816
  maxInputTokens: number;
3796
3817
  maxOutputTokens: number;
3797
3818
  /**
3798
3819
  * Format: int64
3799
- * @description 100 입력 토큰당 마이크로센트
3820
+ * @description microcents per million input tokens
3800
3821
  */
3801
3822
  inPerMTok: number;
3802
3823
  /** Format: int64 */
3803
3824
  outPerMTok: number;
3804
3825
  /**
3805
3826
  * Format: int64
3806
- * @description 캐시된 입력의 단가. 없으면 캐시 할인이 없는 모델이고 캐시된 토큰도 정가다
3827
+ * @description The price of cached input. Absent means the model has no cache discount and cached tokens are billed at the full input price
3807
3828
  */
3808
3829
  cachedInPerMTok?: number;
3809
3830
  /**
3810
- * @description 참이면 프로바이더 **정가 그대로**다 (마진 0). 화면이 그 사실을 말하는
3811
- * 것이 제품의 문장 하나이고, 말하지 않으면 사용자는 마크업을 가정한다.
3831
+ * @description When true, this is the provider's **list price** passed straight through (zero margin). Saying so
3832
+ * on screen is one of this product's promises if it goes unsaid, users assume a markup.
3812
3833
  */
3813
3834
  listPrice: boolean;
3814
3835
  };
3815
3836
  AIStatus: {
3816
3837
  granted: boolean;
3817
- /** @description 프로젝트마다 분당 호출 상한 */
3838
+ /** @description calls per minute, per project */
3818
3839
  perMinute: number;
3819
- /** @description 프로젝트마다 동시 호출 상한 */
3840
+ /** @description concurrent calls, per project */
3820
3841
  concurrent: number;
3821
- /** @description 0 이면 모델이 정한다 */
3842
+ /** @description 0 means the model decides */
3822
3843
  maxOutputTokens?: number;
3823
- /** @description 0 이면 모델이 정한다 */
3844
+ /** @description 0 means the model decides */
3824
3845
  maxInputTokens?: number;
3825
3846
  /**
3826
3847
  * Format: int64
3827
- * @description org 잔액 (음수 가능)
3848
+ * @description the org balance (can be negative)
3828
3849
  */
3829
3850
  creditMicroCents: number;
3830
3851
  /**
3831
3852
  * Format: int64
3832
- * @description 가성비 모델에만 주는 하루치
3853
+ * @description the daily allowance, for value models only
3833
3854
  */
3834
3855
  freeDailyMicroCents?: number;
3835
3856
  /** Format: int64 */
@@ -3840,7 +3861,7 @@ export interface components {
3840
3861
  tokensOut24h?: number;
3841
3862
  /**
3842
3863
  * Format: int64
3843
- * @description 최근 24 시간 원장의 (양수 = 금액). usage_hourly 에서는 만드는 수다
3864
+ * @description The sum of the last 24 hours of the ledger (positive = amount spent). This number cannot be built from usage_hourly
3844
3865
  */
3845
3866
  spentMicroCents24h?: number;
3846
3867
  };
@@ -3851,25 +3872,25 @@ export interface components {
3851
3872
  microCents: number;
3852
3873
  };
3853
3874
  AICredit: {
3854
- /** @description 거짓이면 배치에 크레딧 상품이 없다충전 끝점은 501 */
3875
+ /** @description false means this installation has no credit product the top-up endpoints return 501 */
3855
3876
  enabled: boolean;
3856
3877
  sandbox: boolean;
3857
3878
  /**
3858
3879
  * Format: int64
3859
- * @description 잔액 (음수 가능)
3880
+ * @description the balance (can be negative)
3860
3881
  */
3861
3882
  microCents: number;
3862
3883
  /** Format: int64 */
3863
3884
  lowMicroCents?: number;
3864
3885
  /** Format: int64 */
3865
3886
  freeDailyMicroCents?: number;
3866
- /** @description 충전 단위. 자동 충전이 **같은 목록**을 쓴다 */
3887
+ /** @description A top-up tier. Auto top-up uses the **same list** */
3867
3888
  tiers: number[];
3868
- /** @description 거짓이면 자동 충전을 켠다 충전이 카드를 저장한다 */
3889
+ /** @description When false, auto top-up cannot be turned on the first top-up is what saves the card */
3869
3890
  hasPaymentMethod: boolean;
3870
3891
  autoTopup?: components["schemas"]["AIAutoTopup"];
3871
3892
  autoTopupsToday: number;
3872
- /** @description 수가 하루 지출 천장이다 */
3893
+ /** @description this number is the daily spending ceiling */
3873
3894
  autoTopupPerDay: number;
3874
3895
  };
3875
3896
  AILedgerRow: {
@@ -3883,7 +3904,7 @@ export interface components {
3883
3904
  tokensOut?: number;
3884
3905
  /**
3885
3906
  * Format: int64
3886
- * @description `call` 음수
3907
+ * @description `call` rows are negative
3887
3908
  */
3888
3909
  microCents: number;
3889
3910
  /** Format: date-time */
@@ -3925,7 +3946,7 @@ export interface components {
3925
3946
  * @description number received in the last 24 hours
3926
3947
  */
3927
3948
  received24h: number;
3928
- /** @description The mail domain suffix for this batch. Email cannot be enabled if it is empty. */
3949
+ /** @description The mail domain suffix for this installation. Email cannot be enabled if it is empty. */
3929
3950
  mailDomain: string;
3930
3951
  };
3931
3952
  /** @description One line of the email log (docs/email.md §6.1). */
@@ -3990,6 +4011,13 @@ export interface components {
3990
4011
  projects: number;
3991
4012
  /** Format: int64 */
3992
4013
  storageBytes: number;
4014
+ /**
4015
+ * Format: int64
4016
+ * @description The project Postgres size cap for this plan (Free 500 MiB, Pro 8 GiB). The
4017
+ * dashboard's usage meter and chart read this value; nothing enforces it — the 90 %
4018
+ * notification is the only consumer on the server.
4019
+ */
4020
+ dbCapBytes: number;
3993
4021
  /** @description number of retained generations (= time) */
3994
4022
  backupKeep: number;
3995
4023
  crons: number;
@@ -4003,7 +4031,7 @@ export interface components {
4003
4031
  */
4004
4032
  StorageStatus: {
4005
4033
  /**
4006
- * @description Indicates whether storage usage is provisioned. Since the existence of the usage
4034
+ * @description Indicates whether storage has been turned on for this project. Since the existence of that
4007
4035
  * record is the only representation of this (migration 0022), there is no state of
4008
4036
  * "provisioned but turned off".
4009
4037
  */
@@ -4162,7 +4190,7 @@ export interface components {
4162
4190
  AuthStatus: {
4163
4191
  /**
4164
4192
  * @description Indicates whether auth is configured for use. Since the existence of a
4165
- * usage-configuration record is the only representation, there is no "configured but
4193
+ * record created when auth was turned on is the only representation, there is no "configured but
4166
4194
  * disabled" state. When disabled, `settings` holds default values and `providers` is
4167
4195
  * an empty array.
4168
4196
  */
@@ -4181,11 +4209,8 @@ export interface components {
4181
4209
  * login fails
4182
4210
  * on that host alone, and the reason is visible only in the provider's console.
4183
4211
  *
4184
- * There are two default hostnames `<project>.<org>.<domain>` and the older
4185
- * single-label
4186
- * name `<project>--<org>.<domain>`. A deploy registers both, so links already in the
4187
- * wild keep
4188
- * working, which is why both callback URLs are needed.
4212
+ * The default hostname is `<project>.<org>.<domain>`. Register a callback URL for every host in
4213
+ * this list — the list is exactly the set of hosts this project answers on.
4189
4214
  * @example [
4190
4215
  * "app.acme.runlot.app",
4191
4216
  * "app--acme.runlot.app",
@@ -4243,7 +4268,7 @@ export interface components {
4243
4268
  */
4244
4269
  hostname: string;
4245
4270
  /**
4246
- * @description `default` is the default name — this includes both `<project>.<org>.<app-domain>` and the legacy alias `<project>--<org>.<app-domain>`, which merges it into a single label. `custom` is a customer domain
4271
+ * @description `default` is the default name `<project>.<org>.<app-domain>`. `custom` is a customer domain
4247
4272
  * @enum {string}
4248
4273
  */
4249
4274
  kind: "default" | "custom";
@@ -5488,7 +5513,7 @@ export interface operations {
5488
5513
  "application/json": components["schemas"]["Error"];
5489
5514
  };
5490
5515
  };
5491
- /** @description Not in a state that can be restored (for example, no batch node available) */
5516
+ /** @description Not in a state that can be restored (for example, no node available for placement) */
5492
5517
  503: {
5493
5518
  headers: {
5494
5519
  [name: string]: unknown;
@@ -5923,7 +5948,7 @@ export interface operations {
5923
5948
  };
5924
5949
  requestBody?: never;
5925
5950
  responses: {
5926
- /** @description 카탈로그 */
5951
+ /** @description Catalog */
5927
5952
  200: {
5928
5953
  headers: {
5929
5954
  [name: string]: unknown;
@@ -5933,12 +5958,12 @@ export interface operations {
5933
5958
  models: components["schemas"]["AIModel"][];
5934
5959
  /**
5935
5960
  * Format: int64
5936
- * @description org 마다 하루 무료분 (마이크로센트). **가성비 모델에만** 쓴다
5961
+ * @description The per-org daily free allowance (microcents). It applies to **value-lane models only**
5937
5962
  */
5938
5963
  freeDailyMicroCents: number;
5939
5964
  /**
5940
5965
  * Format: int64
5941
- * @description "잔액이 낮다" 화면이 하드코딩하면 표가 둘이 된다
5966
+ * @description The "balance is low" thresholdif the UI hardcoded it, there would be two tables to keep in sync
5942
5967
  */
5943
5968
  lowMicroCents: number;
5944
5969
  };
@@ -5959,7 +5984,7 @@ export interface operations {
5959
5984
  };
5960
5985
  requestBody?: never;
5961
5986
  responses: {
5962
- /** @description AI 상태 */
5987
+ /** @description AI status */
5963
5988
  200: {
5964
5989
  headers: {
5965
5990
  [name: string]: unknown;
@@ -5993,7 +6018,7 @@ export interface operations {
5993
6018
  };
5994
6019
  requestBody?: never;
5995
6020
  responses: {
5996
- /** @description 부여 상태 (이미 있었으면 기존 ) */
6021
+ /** @description Status after turning it on (the existing value if it was already on) */
5997
6022
  200: {
5998
6023
  headers: {
5999
6024
  [name: string]: unknown;
@@ -6027,7 +6052,7 @@ export interface operations {
6027
6052
  };
6028
6053
  requestBody?: never;
6029
6054
  responses: {
6030
- /** @description 껐다 */
6055
+ /** @description turned off */
6031
6056
  204: {
6032
6057
  headers: {
6033
6058
  [name: string]: unknown;
@@ -6058,7 +6083,7 @@ export interface operations {
6058
6083
  };
6059
6084
  requestBody?: never;
6060
6085
  responses: {
6061
- /** @description 크레딧 상태 */
6086
+ /** @description Credit status */
6062
6087
  200: {
6063
6088
  headers: {
6064
6089
  [name: string]: unknown;
@@ -6074,7 +6099,7 @@ export interface operations {
6074
6099
  parameters: {
6075
6100
  query?: {
6076
6101
  limit?: number;
6077
- /** @description ledger_id 보다 앞의 */
6102
+ /** @description rows before this ledger_id */
6078
6103
  before?: number;
6079
6104
  };
6080
6105
  header?: never;
@@ -6085,7 +6110,7 @@ export interface operations {
6085
6110
  };
6086
6111
  requestBody?: never;
6087
6112
  responses: {
6088
- /** @description 원장 */
6113
+ /** @description Ledger */
6089
6114
  200: {
6090
6115
  headers: {
6091
6116
  [name: string]: unknown;
@@ -6120,7 +6145,7 @@ export interface operations {
6120
6145
  };
6121
6146
  };
6122
6147
  responses: {
6123
- /** @description 체크아웃 */
6148
+ /** @description Checkout */
6124
6149
  200: {
6125
6150
  headers: {
6126
6151
  [name: string]: unknown;
@@ -6132,7 +6157,7 @@ export interface operations {
6132
6157
  };
6133
6158
  };
6134
6159
  };
6135
- /** @description 충전 단위가 목록에 없다 · returnTo 허용된 주소가 아니다 */
6160
+ /** @description The top-up amount is not one of the offered tiers, or `returnTo` is not an allowed address */
6136
6161
  400: {
6137
6162
  headers: {
6138
6163
  [name: string]: unknown;
@@ -6142,7 +6167,7 @@ export interface operations {
6142
6167
  };
6143
6168
  };
6144
6169
  403: components["responses"]["Forbidden"];
6145
- /** @description `billing_off` — 배치에 크레딧 상품이 없다 */
6170
+ /** @description `billing_off` — this installation has no credit product configured */
6146
6171
  501: {
6147
6172
  headers: {
6148
6173
  [name: string]: unknown;
@@ -6174,7 +6199,7 @@ export interface operations {
6174
6199
  };
6175
6200
  };
6176
6201
  responses: {
6177
- /** @description 켰다 */
6202
+ /** @description Turned on */
6178
6203
  200: {
6179
6204
  headers: {
6180
6205
  [name: string]: unknown;
@@ -6185,14 +6210,14 @@ export interface operations {
6185
6210
  };
6186
6211
  };
6187
6212
  };
6188
- /** @description 껐다 */
6213
+ /** @description turned off */
6189
6214
  204: {
6190
6215
  headers: {
6191
6216
  [name: string]: unknown;
6192
6217
  };
6193
6218
  content?: never;
6194
6219
  };
6195
- /** @description 금액이 티어에 없다 · 기준이 0 이하 · 기준이 충전 금액 이상 */
6220
+ /** @description The amount is not on the tier list, the threshold is 0 or less, or the threshold is at or above the top-up amount */
6196
6221
  400: {
6197
6222
  headers: {
6198
6223
  [name: string]: unknown;
@@ -6202,7 +6227,7 @@ export interface operations {
6202
6227
  };
6203
6228
  };
6204
6229
  403: components["responses"]["Forbidden"];
6205
- /** @description `no_payment_method` — 저장된 카드가 없다. 먼저 수동으로 충전한다 */
6230
+ /** @description `no_payment_method` — there is no saved card. Top up manually once first */
6206
6231
  409: {
6207
6232
  headers: {
6208
6233
  [name: string]: unknown;