@oxygen-agent/cli 1.1010.650 → 1.1010.905

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 (114) hide show
  1. package/README.md +1 -1
  2. package/dist/auto-update.d.ts +129 -0
  3. package/dist/auto-update.js +392 -0
  4. package/dist/command-manifest.js +15 -1
  5. package/dist/credentials.d.ts +2 -0
  6. package/dist/credentials.js +6 -3
  7. package/dist/functions-commands.js +1 -1
  8. package/dist/http-client.js +28 -4
  9. package/dist/inbox-needs-reply-notice.d.ts +12 -0
  10. package/dist/inbox-needs-reply-notice.js +51 -0
  11. package/dist/index.js +756 -177
  12. package/dist/run-wait.d.ts +3 -1
  13. package/dist/run-wait.js +19 -5
  14. package/dist/skills.js +48 -22
  15. package/dist/streamed-file-import.d.ts +58 -0
  16. package/dist/streamed-file-import.js +115 -0
  17. package/dist/update.d.ts +29 -0
  18. package/dist/update.js +62 -16
  19. package/dist/workflow-plan-limit-notices.d.ts +8 -0
  20. package/dist/workflow-plan-limit-notices.js +28 -0
  21. package/node_modules/@oxygen/cli-ugc/dist/commands.js +3 -3
  22. package/node_modules/@oxygen/shared/dist/billing-anchors.d.ts +50 -2
  23. package/node_modules/@oxygen/shared/dist/billing-anchors.js +94 -2
  24. package/node_modules/@oxygen/shared/dist/billing.d.ts +247 -37
  25. package/node_modules/@oxygen/shared/dist/billing.js +418 -45
  26. package/node_modules/@oxygen/shared/dist/capability-discovery.js +66 -6
  27. package/node_modules/@oxygen/shared/dist/copilot-skills.generated.d.ts +6 -6
  28. package/node_modules/@oxygen/shared/dist/copilot-skills.generated.js +6 -6
  29. package/node_modules/@oxygen/shared/dist/cost-estimate-view.d.ts +50 -0
  30. package/node_modules/@oxygen/shared/dist/cost-estimate-view.js +90 -0
  31. package/node_modules/@oxygen/shared/dist/cost-estimate.d.ts +167 -0
  32. package/node_modules/@oxygen/shared/dist/cost-estimate.js +361 -0
  33. package/node_modules/@oxygen/shared/dist/credit-gate.d.ts +26 -0
  34. package/node_modules/@oxygen/shared/dist/credit-gate.js +65 -0
  35. package/node_modules/@oxygen/shared/dist/email-deliverability-policy.d.ts +51 -0
  36. package/node_modules/@oxygen/shared/dist/email-deliverability-policy.js +101 -0
  37. package/node_modules/@oxygen/shared/dist/email-hard-bounce.d.ts +27 -0
  38. package/node_modules/@oxygen/shared/dist/email-hard-bounce.js +27 -0
  39. package/node_modules/@oxygen/shared/dist/error-redaction.d.ts +1 -1
  40. package/node_modules/@oxygen/shared/dist/error-redaction.js +1 -1
  41. package/node_modules/@oxygen/shared/dist/feature-gates.d.ts +10 -1
  42. package/node_modules/@oxygen/shared/dist/feature-gates.js +12 -1
  43. package/node_modules/@oxygen/shared/dist/file-import.d.ts +13 -1
  44. package/node_modules/@oxygen/shared/dist/file-import.js +33 -6
  45. package/node_modules/@oxygen/shared/dist/hosted-ai.d.ts +73 -3
  46. package/node_modules/@oxygen/shared/dist/hosted-ai.js +246 -24
  47. package/node_modules/@oxygen/shared/dist/import-limits.d.ts +25 -1
  48. package/node_modules/@oxygen/shared/dist/import-limits.js +35 -2
  49. package/node_modules/@oxygen/shared/dist/index.d.ts +4 -23
  50. package/node_modules/@oxygen/shared/dist/index.js +4 -43
  51. package/node_modules/@oxygen/shared/dist/linkedin-sequences.d.ts +114 -0
  52. package/node_modules/@oxygen/shared/dist/linkedin-sequences.js +150 -0
  53. package/node_modules/@oxygen/shared/dist/object-storage.d.ts +9 -0
  54. package/node_modules/@oxygen/shared/dist/object-storage.js +17 -0
  55. package/node_modules/@oxygen/shared/dist/operational-telemetry.d.ts +41 -0
  56. package/node_modules/@oxygen/shared/dist/operational-telemetry.js +55 -0
  57. package/node_modules/@oxygen/shared/dist/otlp-log-sink.js +19 -2
  58. package/node_modules/@oxygen/shared/dist/plan-band.d.ts +234 -0
  59. package/node_modules/@oxygen/shared/dist/plan-band.js +312 -0
  60. package/node_modules/@oxygen/shared/dist/plan-capabilities.d.ts +77 -7
  61. package/node_modules/@oxygen/shared/dist/plan-capabilities.js +87 -7
  62. package/node_modules/@oxygen/shared/dist/plan-limits-view.d.ts +219 -0
  63. package/node_modules/@oxygen/shared/dist/plan-limits-view.js +330 -0
  64. package/node_modules/@oxygen/shared/dist/plan-limits.d.ts +335 -126
  65. package/node_modules/@oxygen/shared/dist/plan-limits.js +277 -86
  66. package/node_modules/@oxygen/shared/dist/pricing-sheet.d.ts +158 -49
  67. package/node_modules/@oxygen/shared/dist/pricing-sheet.js +139 -41
  68. package/node_modules/@oxygen/shared/dist/pricing-snapshot.generated.d.ts +42 -23
  69. package/node_modules/@oxygen/shared/dist/pricing-snapshot.generated.js +56 -37
  70. package/node_modules/@oxygen/shared/dist/process-resource.d.ts +4 -0
  71. package/node_modules/@oxygen/shared/dist/process-resource.js +25 -0
  72. package/node_modules/@oxygen/shared/dist/provider-http-error.d.ts +10 -0
  73. package/node_modules/@oxygen/shared/dist/provider-http-error.js +27 -0
  74. package/node_modules/@oxygen/shared/dist/repricing.d.ts +257 -0
  75. package/node_modules/@oxygen/shared/dist/repricing.js +721 -0
  76. package/node_modules/@oxygen/shared/dist/semver.d.ts +21 -0
  77. package/node_modules/@oxygen/shared/dist/semver.js +41 -0
  78. package/node_modules/@oxygen/shared/dist/sending-limits.d.ts +30 -0
  79. package/node_modules/@oxygen/shared/dist/sending-limits.js +43 -0
  80. package/node_modules/@oxygen/shared/dist/sending-seats.d.ts +18 -15
  81. package/node_modules/@oxygen/shared/dist/sending-seats.js +22 -17
  82. package/node_modules/@oxygen/shared/dist/sequence-failures.js +4 -1
  83. package/node_modules/@oxygen/shared/dist/spend-safety.d.ts +57 -8
  84. package/node_modules/@oxygen/shared/dist/spend-safety.js +64 -11
  85. package/node_modules/@oxygen/shared/dist/stripe-price-catalog.d.ts +33 -1
  86. package/node_modules/@oxygen/shared/dist/stripe-price-catalog.js +71 -1
  87. package/node_modules/@oxygen/shared/dist/table-capacity.d.ts +68 -10
  88. package/node_modules/@oxygen/shared/dist/table-capacity.js +85 -4
  89. package/node_modules/@oxygen/shared/dist/telemetry-export-observer.d.ts +6 -0
  90. package/node_modules/@oxygen/shared/dist/telemetry-export-observer.js +13 -5
  91. package/node_modules/@oxygen/shared/dist/telemetry-resource.d.ts +40 -0
  92. package/node_modules/@oxygen/shared/dist/telemetry-resource.js +35 -0
  93. package/node_modules/@oxygen/shared/dist/telemetry.d.ts +9 -0
  94. package/node_modules/@oxygen/shared/dist/telemetry.js +41 -2
  95. package/node_modules/@oxygen/shared/dist/trace-context.d.ts +29 -0
  96. package/node_modules/@oxygen/shared/dist/trace-context.js +88 -0
  97. package/node_modules/@oxygen/shared/dist/ugc.d.ts +15 -0
  98. package/node_modules/@oxygen/shared/dist/ugc.js +29 -0
  99. package/node_modules/@oxygen/shared/dist/version.d.ts +1 -3
  100. package/node_modules/@oxygen/shared/dist/version.generated.d.ts +1 -1
  101. package/node_modules/@oxygen/shared/dist/version.generated.js +1 -1
  102. package/node_modules/@oxygen/shared/dist/version.js +14 -27
  103. package/node_modules/@oxygen/shared/dist/workspace-file-storage.d.ts +5 -0
  104. package/node_modules/@oxygen/shared/dist/workspace-file-storage.js +5 -0
  105. package/node_modules/@oxygen/workflows/dist/graph/manifest-schema.d.ts +3 -3
  106. package/node_modules/@oxygen/workflows/dist/graph/types.d.ts +15 -1
  107. package/node_modules/@oxygen/workflows/dist/graph/types.js +15 -1
  108. package/node_modules/@oxygen/workflows/dist/index.d.ts +45 -0
  109. package/node_modules/@oxygen/workflows/dist/index.js +152 -2
  110. package/node_modules/@oxygen/workflows/dist/usage-estimate.d.ts +10 -1
  111. package/node_modules/@oxygen/workflows/dist/usage-estimate.js +33 -29
  112. package/package.json +1 -1
  113. package/node_modules/@oxygen/shared/dist/email-warmup-readiness.d.ts +0 -64
  114. package/node_modules/@oxygen/shared/dist/email-warmup-readiness.js +0 -90
@@ -1,3 +1,4 @@
1
+ import { type RepricingOptions } from "./repricing.js";
1
2
  /**
2
3
  * The five enforcement rungs of the per-plan limits ladder. Every PlanTier maps
3
4
  * onto exactly one rung: "free" doubles as the unentitled fallback (no live
@@ -8,6 +9,12 @@
8
9
  * Credits are the billing meter; these limits are abuse/runaway guards. They
9
10
  * are sized so legitimate interactive use never hits them and scale with plan
10
11
  * price so worst-case burn stays proportional to what the org pays.
12
+ *
13
+ * Org-scope unit budgets (`orgUnits`) bound row-weighted bulk volume only: a
14
+ * call whose normalized amount is 1 is counted against the budget but never
15
+ * refused by it, so single-item work is bounded by `requestsPerMinute` and the
16
+ * global `cli` buckets. A budget accumulated under a higher rung keeps refusing
17
+ * bulk calls until its window resets after a downgrade; there is no rebase.
11
18
  */
12
19
  export type LimitsTier = "free" | "starter" | "pro" | "team" | "scale";
13
20
  export declare const LIMITS_TIER_ORDER: readonly LimitsTier[];
@@ -16,7 +23,10 @@ export type OrgWindowLimit = {
16
23
  limit: number;
17
24
  windowSeconds: number;
18
25
  };
19
- /** Request bucket (per api-key / web-user scope) + org-scope unit budget. */
26
+ /**
27
+ * Request bucket (per api-key / web-user scope) + org-scope unit budget. The
28
+ * unit budget never refuses a 1-unit call (rate-limits.ts `orgUnitBudget`).
29
+ */
20
30
  export type UnitPolicyLimits = {
21
31
  requestsPerMinute: number;
22
32
  orgUnits: OrgWindowLimit;
@@ -53,6 +63,11 @@ export type PlanLimits = {
53
63
  maxDirectCsvBodyBytes: number;
54
64
  };
55
65
  agents: {
66
+ /**
67
+ * The pre-2026-09-repricing default Agent run ceilings. Read the value in
68
+ * force with `resolvePlanAgentCreditLimits`: team and scale drop at the
69
+ * repricing instant.
70
+ */
56
71
  maxTotalCredits: number;
57
72
  maxInferenceCredits: number;
58
73
  maxUpstreamCostUsd: number;
@@ -69,14 +84,25 @@ export type PlanLimits = {
69
84
  tableActions: {
70
85
  maxActionsPerRun: number;
71
86
  };
87
+ /**
88
+ * `cronMinIntervalMinutes` is the fastest cron cadence a workflow or Agent
89
+ * trigger may be scheduled at (repricing 2026-09, decision L4.2). It is the
90
+ * ratified value; read the value in force with `resolveCronMinIntervalMinutes`,
91
+ * because the free rung's cut waits for the repricing switch.
92
+ */
93
+ workflows: {
94
+ cronMinIntervalMinutes: number;
95
+ };
72
96
  };
73
97
  /**
74
- * One platform-wide Table import ceiling. A file can fill an empty physical
75
- * Table exactly to its retained-row capacity on every plan; imports into a
76
- * non-empty Table remain subject to that Table's remaining capacity and the
77
- * workspace-wide capacity envelope.
98
+ * The per-rung Table import ceiling this matrix reports: today's envelope. The
99
+ * ceiling ENFORCED on an import is the workspace's plan-band rows-per-Table
100
+ * limit (`resolveWorkspaceTableCapacity`, PROPOSED P-60: a file can fill an
101
+ * empty Table exactly), which the web import paths resolve per organization.
102
+ * Imports into a non-empty Table remain subject to that Table's remaining
103
+ * capacity and the workspace-wide envelope.
78
104
  */
79
- export declare const TABLE_IMPORT_ROW_LIMIT: 3000000;
105
+ export declare const TABLE_IMPORT_ROW_LIMIT: number;
80
106
  export { VERCEL_REQUEST_BODY_LIMIT_BYTES } from "./import-limits.js";
81
107
  /**
82
108
  * OXYGEN's own JSON-body ceiling for every `/api/cli/*` route (enforced by
@@ -86,57 +112,126 @@ export { VERCEL_REQUEST_BODY_LIMIT_BYTES } from "./import-limits.js";
86
112
  * in the CLI alone — an older server would still 413 at the old number.
87
113
  */
88
114
  export declare const MAX_CLI_JSON_BODY_BYTES = 2000000;
115
+ /**
116
+ * Derived plan-scaled limits (repricing 2026-09 decision L6, spec § 4.7):
117
+ * import file size, columns per action run or standing auto-run and the signals
118
+ * feed. Each only rises against the pre-repricing ladder, so no paid customer
119
+ * loses a limit and nothing here waits for the effective-date switch. Rows per
120
+ * write request stay 5,000 free / 50,000 paid: the 2 MB request body
121
+ * (`MAX_CLI_JSON_BODY_BYTES`) binds first.
122
+ *
123
+ * `importFileBytes` is ratified (decision F.8, Philipp 2026-09-27): free 500 MiB,
124
+ * $49–$99 1 GiB, $199–$499 2 GiB, $999–$1,999 5 GiB. It is live on every plan
125
+ * and no longer waits for the per-Table capacity test: rows per Table still cap
126
+ * what one import can load, so a bigger file never buys more rows. 5 GiB is also
127
+ * the largest single PUT an S3-compatible store accepts
128
+ * (`IMPORT_OBJECT_SINGLE_PUT_MAX_BYTES`), which is the one upload a staged
129
+ * import makes.
130
+ */
131
+ export declare const DERIVED_PLAN_LIMIT_TARGETS: {
132
+ readonly free: {
133
+ readonly importFileBytes: number;
134
+ readonly maxActionsPerRun: 10;
135
+ readonly signals: {
136
+ readonly maxEvents: 100;
137
+ readonly maxWindowDays: 30;
138
+ };
139
+ };
140
+ readonly starter: {
141
+ readonly importFileBytes: number;
142
+ readonly maxActionsPerRun: 25;
143
+ readonly signals: {
144
+ readonly maxEvents: 200;
145
+ readonly maxWindowDays: 90;
146
+ };
147
+ };
148
+ readonly pro: {
149
+ readonly importFileBytes: number;
150
+ readonly maxActionsPerRun: 25;
151
+ readonly signals: {
152
+ readonly maxEvents: 500;
153
+ readonly maxWindowDays: 180;
154
+ };
155
+ };
156
+ readonly team: {
157
+ readonly importFileBytes: number;
158
+ readonly maxActionsPerRun: 50;
159
+ readonly signals: {
160
+ readonly maxEvents: 1000;
161
+ readonly maxWindowDays: 365;
162
+ };
163
+ };
164
+ readonly scale: {
165
+ readonly importFileBytes: number;
166
+ readonly maxActionsPerRun: 50;
167
+ readonly signals: {
168
+ readonly maxEvents: 1000;
169
+ readonly maxWindowDays: 365;
170
+ };
171
+ };
172
+ };
173
+ /** The import file size a rung enforces (see `DERIVED_PLAN_LIMIT_TARGETS`). */
174
+ export declare function importMaxFileBytesForTier(tier: LimitsTier): number;
89
175
  /**
90
176
  * The per-rung limit matrix. `ai_live` deliberately equals `tool_live` at every
91
177
  * rung — one "live actions" mental model; the per-call cost asymmetry between
92
178
  * AI and tool calls is priced in credits, not throttled here.
179
+ *
180
+ * API rates follow the 2026-09 repricing (decision L2, ratified 2026-09-26):
181
+ * `cli.global` is the per-organization and per-key request total per minute,
182
+ * 1,200 / 3,000 / 6,000 / 12,000 / 30,000 from free to scale. The per-operation
183
+ * buckets below are PROPOSED (P-52, repricing spec § 4.2): each pre-repricing
184
+ * bucket multiplied by its rung's organization factor, 2x on free and 5x on
185
+ * every paid rung, and never above the rung's per-key total. `tenantSchema` and
186
+ * the flat `tenant_admin` guard in the web rate limiter are DDL abuse guards and
187
+ * stay unscaled.
93
188
  */
94
189
  export declare const PLAN_LIMITS: {
95
190
  readonly free: {
96
191
  readonly cli: {
97
192
  readonly global: {
98
- readonly keyRequestsPerMinute: 120;
99
- readonly orgRequestsPerMinute: 600;
193
+ readonly keyRequestsPerMinute: 1200;
194
+ readonly orgRequestsPerMinute: 1200;
100
195
  };
101
196
  readonly tenantRead: {
102
- readonly requestsPerMinute: 60;
197
+ readonly requestsPerMinute: 120;
103
198
  readonly orgUnits: {
104
- readonly limit: 500000;
199
+ readonly limit: 1000000;
105
200
  readonly windowSeconds: number;
106
201
  };
107
202
  };
108
203
  readonly tenantWrite: {
109
- readonly requestsPerMinute: 30;
204
+ readonly requestsPerMinute: 60;
110
205
  readonly orgUnits: {
111
- readonly limit: 100000;
206
+ readonly limit: 200000;
112
207
  readonly windowSeconds: number;
113
208
  };
114
209
  };
115
210
  readonly bulkImport: {
116
- readonly requestsPerMinute: 10;
211
+ readonly requestsPerMinute: 20;
117
212
  readonly orgRequests: {
118
- readonly limit: 100;
213
+ readonly limit: 200;
119
214
  readonly windowSeconds: number;
120
215
  };
121
216
  };
122
217
  readonly aiLive: {
123
- readonly requestsPerMinute: 20;
218
+ readonly requestsPerMinute: 40;
124
219
  readonly orgRequests: {
125
- readonly limit: 100;
220
+ readonly limit: 200;
126
221
  readonly windowSeconds: number;
127
222
  };
128
223
  };
129
224
  readonly toolLive: {
130
- readonly requestsPerMinute: 20;
225
+ readonly requestsPerMinute: 40;
131
226
  readonly orgRequests: {
132
- readonly limit: 100;
227
+ readonly limit: 200;
133
228
  readonly windowSeconds: number;
134
229
  };
135
230
  };
136
231
  readonly toolDryRun: {
137
- readonly requestsPerMinute: 60;
232
+ readonly requestsPerMinute: 120;
138
233
  readonly orgRequests: {
139
- readonly limit: 500;
234
+ readonly limit: 1000;
140
235
  readonly windowSeconds: number;
141
236
  };
142
237
  };
@@ -151,36 +246,36 @@ export declare const PLAN_LIMITS: {
151
246
  };
152
247
  readonly web: {
153
248
  readonly tenantRead: {
154
- readonly requestsPerMinute: 120;
249
+ readonly requestsPerMinute: 240;
155
250
  readonly orgUnits: {
156
- readonly limit: 1000000;
251
+ readonly limit: 2000000;
157
252
  readonly windowSeconds: number;
158
253
  };
159
254
  };
160
255
  readonly tenantWrite: {
161
- readonly requestsPerMinute: 60;
256
+ readonly requestsPerMinute: 120;
162
257
  readonly orgUnits: {
163
- readonly limit: 500000;
258
+ readonly limit: 1000000;
164
259
  readonly windowSeconds: number;
165
260
  };
166
261
  };
167
262
  readonly columnRun: {
168
- readonly requestsPerMinute: 30;
263
+ readonly requestsPerMinute: 60;
169
264
  readonly orgUnits: {
170
- readonly limit: 2000;
265
+ readonly limit: 4000;
171
266
  readonly windowSeconds: number;
172
267
  };
173
268
  };
174
269
  readonly import: {
175
- readonly requestsPerMinute: 10;
270
+ readonly requestsPerMinute: 20;
176
271
  readonly orgRequests: {
177
- readonly limit: 100;
272
+ readonly limit: 200;
178
273
  readonly windowSeconds: number;
179
274
  };
180
275
  };
181
276
  };
182
277
  readonly import: {
183
- readonly maxRowsPerFile: 3000000;
278
+ readonly maxRowsPerFile: number;
184
279
  readonly maxFileBytes: number;
185
280
  readonly maxDirectCsvBodyBytes: 10000000;
186
281
  };
@@ -201,52 +296,55 @@ export declare const PLAN_LIMITS: {
201
296
  readonly tableActions: {
202
297
  readonly maxActionsPerRun: 10;
203
298
  };
299
+ readonly workflows: {
300
+ readonly cronMinIntervalMinutes: 15;
301
+ };
204
302
  };
205
303
  readonly starter: {
206
304
  readonly cli: {
207
305
  readonly global: {
208
- readonly keyRequestsPerMinute: 240;
209
- readonly orgRequestsPerMinute: 600;
306
+ readonly keyRequestsPerMinute: 3000;
307
+ readonly orgRequestsPerMinute: 3000;
210
308
  };
211
309
  readonly tenantRead: {
212
- readonly requestsPerMinute: 120;
310
+ readonly requestsPerMinute: 600;
213
311
  readonly orgUnits: {
214
- readonly limit: 25000000;
312
+ readonly limit: 125000000;
215
313
  readonly windowSeconds: number;
216
314
  };
217
315
  };
218
316
  readonly tenantWrite: {
219
- readonly requestsPerMinute: 120;
317
+ readonly requestsPerMinute: 600;
220
318
  readonly orgUnits: {
221
- readonly limit: 5000000;
319
+ readonly limit: 25000000;
222
320
  readonly windowSeconds: number;
223
321
  };
224
322
  };
225
323
  readonly bulkImport: {
226
- readonly requestsPerMinute: 30;
324
+ readonly requestsPerMinute: 150;
227
325
  readonly orgRequests: {
228
- readonly limit: 500;
326
+ readonly limit: 2500;
229
327
  readonly windowSeconds: number;
230
328
  };
231
329
  };
232
330
  readonly aiLive: {
233
- readonly requestsPerMinute: 60;
331
+ readonly requestsPerMinute: 300;
234
332
  readonly orgRequests: {
235
- readonly limit: 5000;
333
+ readonly limit: 25000;
236
334
  readonly windowSeconds: number;
237
335
  };
238
336
  };
239
337
  readonly toolLive: {
240
- readonly requestsPerMinute: 60;
338
+ readonly requestsPerMinute: 300;
241
339
  readonly orgRequests: {
242
- readonly limit: 5000;
340
+ readonly limit: 25000;
243
341
  readonly windowSeconds: number;
244
342
  };
245
343
  };
246
344
  readonly toolDryRun: {
247
- readonly requestsPerMinute: 120;
345
+ readonly requestsPerMinute: 600;
248
346
  readonly orgRequests: {
249
- readonly limit: 2000;
347
+ readonly limit: 10000;
250
348
  readonly windowSeconds: number;
251
349
  };
252
350
  };
@@ -261,36 +359,36 @@ export declare const PLAN_LIMITS: {
261
359
  };
262
360
  readonly web: {
263
361
  readonly tenantRead: {
264
- readonly requestsPerMinute: 300;
362
+ readonly requestsPerMinute: 1500;
265
363
  readonly orgUnits: {
266
- readonly limit: 20000000;
364
+ readonly limit: 100000000;
267
365
  readonly windowSeconds: number;
268
366
  };
269
367
  };
270
368
  readonly tenantWrite: {
271
- readonly requestsPerMinute: 180;
369
+ readonly requestsPerMinute: 900;
272
370
  readonly orgUnits: {
273
- readonly limit: 10000000;
371
+ readonly limit: 50000000;
274
372
  readonly windowSeconds: number;
275
373
  };
276
374
  };
277
375
  readonly columnRun: {
278
- readonly requestsPerMinute: 120;
376
+ readonly requestsPerMinute: 600;
279
377
  readonly orgUnits: {
280
- readonly limit: 500000;
378
+ readonly limit: 2500000;
281
379
  readonly windowSeconds: number;
282
380
  };
283
381
  };
284
382
  readonly import: {
285
- readonly requestsPerMinute: 30;
383
+ readonly requestsPerMinute: 150;
286
384
  readonly orgRequests: {
287
- readonly limit: 500;
385
+ readonly limit: 2500;
288
386
  readonly windowSeconds: number;
289
387
  };
290
388
  };
291
389
  };
292
390
  readonly import: {
293
- readonly maxRowsPerFile: 3000000;
391
+ readonly maxRowsPerFile: number;
294
392
  readonly maxFileBytes: number;
295
393
  readonly maxDirectCsvBodyBytes: 10000000;
296
394
  };
@@ -311,52 +409,55 @@ export declare const PLAN_LIMITS: {
311
409
  readonly tableActions: {
312
410
  readonly maxActionsPerRun: 25;
313
411
  };
412
+ readonly workflows: {
413
+ readonly cronMinIntervalMinutes: 1;
414
+ };
314
415
  };
315
416
  readonly pro: {
316
417
  readonly cli: {
317
418
  readonly global: {
318
- readonly keyRequestsPerMinute: 240;
319
- readonly orgRequestsPerMinute: 1200;
419
+ readonly keyRequestsPerMinute: 6000;
420
+ readonly orgRequestsPerMinute: 6000;
320
421
  };
321
422
  readonly tenantRead: {
322
- readonly requestsPerMinute: 240;
423
+ readonly requestsPerMinute: 1200;
323
424
  readonly orgUnits: {
324
- readonly limit: 50000000;
425
+ readonly limit: 250000000;
325
426
  readonly windowSeconds: number;
326
427
  };
327
428
  };
328
429
  readonly tenantWrite: {
329
- readonly requestsPerMinute: 240;
430
+ readonly requestsPerMinute: 1200;
330
431
  readonly orgUnits: {
331
- readonly limit: 10000000;
432
+ readonly limit: 50000000;
332
433
  readonly windowSeconds: number;
333
434
  };
334
435
  };
335
436
  readonly bulkImport: {
336
- readonly requestsPerMinute: 60;
437
+ readonly requestsPerMinute: 300;
337
438
  readonly orgRequests: {
338
- readonly limit: 1000;
439
+ readonly limit: 5000;
339
440
  readonly windowSeconds: number;
340
441
  };
341
442
  };
342
443
  readonly aiLive: {
343
- readonly requestsPerMinute: 120;
444
+ readonly requestsPerMinute: 600;
344
445
  readonly orgRequests: {
345
- readonly limit: 12000;
446
+ readonly limit: 60000;
346
447
  readonly windowSeconds: number;
347
448
  };
348
449
  };
349
450
  readonly toolLive: {
350
- readonly requestsPerMinute: 120;
451
+ readonly requestsPerMinute: 600;
351
452
  readonly orgRequests: {
352
- readonly limit: 12000;
453
+ readonly limit: 60000;
353
454
  readonly windowSeconds: number;
354
455
  };
355
456
  };
356
457
  readonly toolDryRun: {
357
- readonly requestsPerMinute: 120;
458
+ readonly requestsPerMinute: 600;
358
459
  readonly orgRequests: {
359
- readonly limit: 2000;
460
+ readonly limit: 10000;
360
461
  readonly windowSeconds: number;
361
462
  };
362
463
  };
@@ -371,36 +472,36 @@ export declare const PLAN_LIMITS: {
371
472
  };
372
473
  readonly web: {
373
474
  readonly tenantRead: {
374
- readonly requestsPerMinute: 600;
475
+ readonly requestsPerMinute: 3000;
375
476
  readonly orgUnits: {
376
- readonly limit: 40000000;
477
+ readonly limit: 200000000;
377
478
  readonly windowSeconds: number;
378
479
  };
379
480
  };
380
481
  readonly tenantWrite: {
381
- readonly requestsPerMinute: 360;
482
+ readonly requestsPerMinute: 1800;
382
483
  readonly orgUnits: {
383
- readonly limit: 20000000;
484
+ readonly limit: 100000000;
384
485
  readonly windowSeconds: number;
385
486
  };
386
487
  };
387
488
  readonly columnRun: {
388
- readonly requestsPerMinute: 240;
489
+ readonly requestsPerMinute: 1200;
389
490
  readonly orgUnits: {
390
- readonly limit: 1000000;
491
+ readonly limit: 5000000;
391
492
  readonly windowSeconds: number;
392
493
  };
393
494
  };
394
495
  readonly import: {
395
- readonly requestsPerMinute: 60;
496
+ readonly requestsPerMinute: 300;
396
497
  readonly orgRequests: {
397
- readonly limit: 1000;
498
+ readonly limit: 5000;
398
499
  readonly windowSeconds: number;
399
500
  };
400
501
  };
401
502
  };
402
503
  readonly import: {
403
- readonly maxRowsPerFile: 3000000;
504
+ readonly maxRowsPerFile: number;
404
505
  readonly maxFileBytes: number;
405
506
  readonly maxDirectCsvBodyBytes: 10000000;
406
507
  };
@@ -415,58 +516,61 @@ export declare const PLAN_LIMITS: {
415
516
  readonly defaultPerTurnCreditCeiling: 250;
416
517
  };
417
518
  readonly signals: {
418
- readonly maxEvents: 200;
519
+ readonly maxEvents: 500;
419
520
  readonly maxWindowDays: 180;
420
521
  };
421
522
  readonly tableActions: {
422
523
  readonly maxActionsPerRun: 25;
423
524
  };
525
+ readonly workflows: {
526
+ readonly cronMinIntervalMinutes: 1;
527
+ };
424
528
  };
425
529
  readonly team: {
426
530
  readonly cli: {
427
531
  readonly global: {
428
- readonly keyRequestsPerMinute: 240;
429
- readonly orgRequestsPerMinute: 2400;
532
+ readonly keyRequestsPerMinute: 12000;
533
+ readonly orgRequestsPerMinute: 12000;
430
534
  };
431
535
  readonly tenantRead: {
432
- readonly requestsPerMinute: 480;
536
+ readonly requestsPerMinute: 2400;
433
537
  readonly orgUnits: {
434
- readonly limit: 100000000;
538
+ readonly limit: 500000000;
435
539
  readonly windowSeconds: number;
436
540
  };
437
541
  };
438
542
  readonly tenantWrite: {
439
- readonly requestsPerMinute: 480;
543
+ readonly requestsPerMinute: 2400;
440
544
  readonly orgUnits: {
441
- readonly limit: 25000000;
545
+ readonly limit: 125000000;
442
546
  readonly windowSeconds: number;
443
547
  };
444
548
  };
445
549
  readonly bulkImport: {
446
- readonly requestsPerMinute: 120;
550
+ readonly requestsPerMinute: 600;
447
551
  readonly orgRequests: {
448
- readonly limit: 2000;
552
+ readonly limit: 10000;
449
553
  readonly windowSeconds: number;
450
554
  };
451
555
  };
452
556
  readonly aiLive: {
453
- readonly requestsPerMinute: 240;
557
+ readonly requestsPerMinute: 1200;
454
558
  readonly orgRequests: {
455
- readonly limit: 30000;
559
+ readonly limit: 150000;
456
560
  readonly windowSeconds: number;
457
561
  };
458
562
  };
459
563
  readonly toolLive: {
460
- readonly requestsPerMinute: 240;
564
+ readonly requestsPerMinute: 1200;
461
565
  readonly orgRequests: {
462
- readonly limit: 30000;
566
+ readonly limit: 150000;
463
567
  readonly windowSeconds: number;
464
568
  };
465
569
  };
466
570
  readonly toolDryRun: {
467
- readonly requestsPerMinute: 120;
571
+ readonly requestsPerMinute: 600;
468
572
  readonly orgRequests: {
469
- readonly limit: 2000;
573
+ readonly limit: 10000;
470
574
  readonly windowSeconds: number;
471
575
  };
472
576
  };
@@ -481,36 +585,36 @@ export declare const PLAN_LIMITS: {
481
585
  };
482
586
  readonly web: {
483
587
  readonly tenantRead: {
484
- readonly requestsPerMinute: 1200;
588
+ readonly requestsPerMinute: 6000;
485
589
  readonly orgUnits: {
486
- readonly limit: 100000000;
590
+ readonly limit: 500000000;
487
591
  readonly windowSeconds: number;
488
592
  };
489
593
  };
490
594
  readonly tenantWrite: {
491
- readonly requestsPerMinute: 720;
595
+ readonly requestsPerMinute: 3600;
492
596
  readonly orgUnits: {
493
- readonly limit: 50000000;
597
+ readonly limit: 250000000;
494
598
  readonly windowSeconds: number;
495
599
  };
496
600
  };
497
601
  readonly columnRun: {
498
- readonly requestsPerMinute: 480;
602
+ readonly requestsPerMinute: 2400;
499
603
  readonly orgUnits: {
500
- readonly limit: 2500000;
604
+ readonly limit: 12500000;
501
605
  readonly windowSeconds: number;
502
606
  };
503
607
  };
504
608
  readonly import: {
505
- readonly requestsPerMinute: 120;
609
+ readonly requestsPerMinute: 600;
506
610
  readonly orgRequests: {
507
- readonly limit: 2000;
611
+ readonly limit: 10000;
508
612
  readonly windowSeconds: number;
509
613
  };
510
614
  };
511
615
  };
512
616
  readonly import: {
513
- readonly maxRowsPerFile: 3000000;
617
+ readonly maxRowsPerFile: number;
514
618
  readonly maxFileBytes: number;
515
619
  readonly maxDirectCsvBodyBytes: 10000000;
516
620
  };
@@ -525,58 +629,61 @@ export declare const PLAN_LIMITS: {
525
629
  readonly defaultPerTurnCreditCeiling: 500;
526
630
  };
527
631
  readonly signals: {
528
- readonly maxEvents: 200;
632
+ readonly maxEvents: 1000;
529
633
  readonly maxWindowDays: 365;
530
634
  };
531
635
  readonly tableActions: {
532
- readonly maxActionsPerRun: 25;
636
+ readonly maxActionsPerRun: 50;
637
+ };
638
+ readonly workflows: {
639
+ readonly cronMinIntervalMinutes: 1;
533
640
  };
534
641
  };
535
642
  readonly scale: {
536
643
  readonly cli: {
537
644
  readonly global: {
538
- readonly keyRequestsPerMinute: 240;
539
- readonly orgRequestsPerMinute: 6000;
645
+ readonly keyRequestsPerMinute: 30000;
646
+ readonly orgRequestsPerMinute: 30000;
540
647
  };
541
648
  readonly tenantRead: {
542
- readonly requestsPerMinute: 1000;
649
+ readonly requestsPerMinute: 5000;
543
650
  readonly orgUnits: {
544
- readonly limit: 500000000;
651
+ readonly limit: 2500000000;
545
652
  readonly windowSeconds: number;
546
653
  };
547
654
  };
548
655
  readonly tenantWrite: {
549
- readonly requestsPerMinute: 1000;
656
+ readonly requestsPerMinute: 5000;
550
657
  readonly orgUnits: {
551
- readonly limit: 100000000;
658
+ readonly limit: 500000000;
552
659
  readonly windowSeconds: number;
553
660
  };
554
661
  };
555
662
  readonly bulkImport: {
556
- readonly requestsPerMinute: 240;
663
+ readonly requestsPerMinute: 1200;
557
664
  readonly orgRequests: {
558
- readonly limit: 5000;
665
+ readonly limit: 25000;
559
666
  readonly windowSeconds: number;
560
667
  };
561
668
  };
562
669
  readonly aiLive: {
563
- readonly requestsPerMinute: 600;
670
+ readonly requestsPerMinute: 3000;
564
671
  readonly orgRequests: {
565
- readonly limit: 100000;
672
+ readonly limit: 500000;
566
673
  readonly windowSeconds: number;
567
674
  };
568
675
  };
569
676
  readonly toolLive: {
570
- readonly requestsPerMinute: 600;
677
+ readonly requestsPerMinute: 3000;
571
678
  readonly orgRequests: {
572
- readonly limit: 100000;
679
+ readonly limit: 500000;
573
680
  readonly windowSeconds: number;
574
681
  };
575
682
  };
576
683
  readonly toolDryRun: {
577
- readonly requestsPerMinute: 120;
684
+ readonly requestsPerMinute: 600;
578
685
  readonly orgRequests: {
579
- readonly limit: 2000;
686
+ readonly limit: 10000;
580
687
  readonly windowSeconds: number;
581
688
  };
582
689
  };
@@ -591,36 +698,36 @@ export declare const PLAN_LIMITS: {
591
698
  };
592
699
  readonly web: {
593
700
  readonly tenantRead: {
594
- readonly requestsPerMinute: 2000;
701
+ readonly requestsPerMinute: 10000;
595
702
  readonly orgUnits: {
596
- readonly limit: 400000000;
703
+ readonly limit: 2000000000;
597
704
  readonly windowSeconds: number;
598
705
  };
599
706
  };
600
707
  readonly tenantWrite: {
601
- readonly requestsPerMinute: 1500;
708
+ readonly requestsPerMinute: 7500;
602
709
  readonly orgUnits: {
603
- readonly limit: 200000000;
710
+ readonly limit: 1000000000;
604
711
  readonly windowSeconds: number;
605
712
  };
606
713
  };
607
714
  readonly columnRun: {
608
- readonly requestsPerMinute: 1000;
715
+ readonly requestsPerMinute: 5000;
609
716
  readonly orgUnits: {
610
- readonly limit: 10000000;
717
+ readonly limit: 50000000;
611
718
  readonly windowSeconds: number;
612
719
  };
613
720
  };
614
721
  readonly import: {
615
- readonly requestsPerMinute: 240;
722
+ readonly requestsPerMinute: 1200;
616
723
  readonly orgRequests: {
617
- readonly limit: 5000;
724
+ readonly limit: 25000;
618
725
  readonly windowSeconds: number;
619
726
  };
620
727
  };
621
728
  };
622
729
  readonly import: {
623
- readonly maxRowsPerFile: 3000000;
730
+ readonly maxRowsPerFile: number;
624
731
  readonly maxFileBytes: number;
625
732
  readonly maxDirectCsvBodyBytes: 10000000;
626
733
  };
@@ -635,14 +742,30 @@ export declare const PLAN_LIMITS: {
635
742
  readonly defaultPerTurnCreditCeiling: 1000;
636
743
  };
637
744
  readonly signals: {
638
- readonly maxEvents: 200;
745
+ readonly maxEvents: 1000;
639
746
  readonly maxWindowDays: 365;
640
747
  };
641
748
  readonly tableActions: {
642
- readonly maxActionsPerRun: 25;
749
+ readonly maxActionsPerRun: 50;
750
+ };
751
+ readonly workflows: {
752
+ readonly cronMinIntervalMinutes: 1;
643
753
  };
644
754
  };
645
755
  };
756
+ /**
757
+ * The fastest cron cadence, in minutes, a rung may schedule right now. The free
758
+ * rung's cut from every minute to every 15 (decision L4.2) is a tightening, so
759
+ * it resolves through the 2026-09 repricing switch: every minute until the
760
+ * effective instant, `PLAN_LIMITS.free.workflows.cronMinIntervalMinutes` from it.
761
+ */
762
+ export declare function resolveCronMinIntervalMinutes(tier: LimitsTier, options?: RepricingOptions): number;
763
+ /**
764
+ * The largest minimum cron interval any rung enforces right now. A schedule
765
+ * whose fires are never closer than this fits every plan, so a caller can skip
766
+ * the plan lookup for it.
767
+ */
768
+ export declare function highestCronMinIntervalMinutes(options?: RepricingOptions): number;
646
769
  /**
647
770
  * Map a raw plan-tier string (subscription `tier`, metadata tier, legacy plan
648
771
  * key like `growth_250`, or an Oxygen rung key like `oxygen_499`) onto its
@@ -651,3 +774,89 @@ export declare const PLAN_LIMITS: {
651
774
  */
652
775
  export declare function limitsTierForPlanTier(tier: string | null | undefined): LimitsTier;
653
776
  export declare function planLimitsForTier(tier: LimitsTier): PlanLimits;
777
+ /** The default credit ceilings of one Agent run on a rung. */
778
+ export type PlanAgentCreditLimits = {
779
+ maxTotalCredits: number;
780
+ maxInferenceCredits: number;
781
+ };
782
+ /**
783
+ * The default credit ceilings of one Agent run in force on a rung right now.
784
+ *
785
+ * `PLAN_LIMITS[tier].agents` holds the values each rung read before the 2026-09
786
+ * repricing. The team and scale rungs drop to 2,500 total / 1,250 inference
787
+ * (decision L5.4, inference half PROPOSED P-56), and a cut waits for the
788
+ * effective-date switch (`agents.<tier>.*` in `REPRICING_2026_09_SCHEDULE`).
789
+ * Every Agent budget check reads this, never the table, so the cut lands
790
+ * everywhere at the same instant.
791
+ */
792
+ export declare function resolvePlanAgentCreditLimits(tier: LimitsTier, options?: RepricingOptions): PlanAgentCreditLimits;
793
+ /**
794
+ * The platform's hard backstop on one Agent run's approved credit ceiling
795
+ * (decision F.4, ratified 2026-09-27).
796
+ *
797
+ * The plan's Agent run ceiling is a DEFAULT: a run or trigger whose approved
798
+ * `max_credits` fits under it needs only the usual approval. Going above it
799
+ * takes a second, explicit per-run (or per-trigger) approval, and even that
800
+ * approval stops here. 25,000 credits ($250) is the largest standing
801
+ * per-delivery default any plan has carried (the pre-2026-09 scale trigger
802
+ * default), so an approved Agent run never outspends one delivery of the
803
+ * largest plan's own automation. The other backstops stay in force whatever is
804
+ * approved: the plan's upstream-USD clamp, the iteration, tool-call and
805
+ * active-minute bounds, the balance check on every reservation and the org
806
+ * daily spend guard.
807
+ */
808
+ export declare const AGENT_RUN_APPROVED_CEILING_MAX_CREDITS = 25000;
809
+ /** Where an org's default Agent run ceiling came from. */
810
+ export type AgentRunDefaultCeilingSource = "plan" | "enterprise_contract";
811
+ /** The Agent run ceilings an org's runs are held to without a further approval. */
812
+ export type AgentRunDefaultCeilings = PlanAgentCreditLimits & {
813
+ source: AgentRunDefaultCeilingSource;
814
+ };
815
+ /**
816
+ * The default Agent run ceilings for an org: its plan rung's, unless an
817
+ * enterprise contract names its own default (decision F.4). The contract value
818
+ * replaces the rung's total and model calls take half of it, as on every paid
819
+ * rung. A contract value is clamped to the platform backstop; an unusable one
820
+ * (absent, non-numeric, not positive) is ignored.
821
+ */
822
+ export declare function resolveAgentRunDefaultCeilings(input: {
823
+ tier: LimitsTier;
824
+ enterpriseDefaultCredits?: number | null;
825
+ options?: RepricingOptions;
826
+ }): AgentRunDefaultCeilings;
827
+ /** `details.approval_kind` on the refusal below, so every surface can render its own approval card. */
828
+ export declare const AGENT_CEILING_ABOVE_DEFAULT_APPROVAL_KIND = "agent_ceiling_above_default";
829
+ /**
830
+ * Check one run's (or one trigger's per-delivery) approved ceiling against the
831
+ * org's default before anything is created.
832
+ *
833
+ * - At or under the default: nothing more to approve.
834
+ * - Above it: refused with `approval_required` unless the caller also passed the
835
+ * explicit above-default approval. The details carry the numbers and the flag
836
+ * each surface re-sends, so the refusal is the approval card.
837
+ * - Above the platform backstop: refused outright; no approval raises it.
838
+ *
839
+ * Returns whether the approved ceiling is above the default; the caller persists
840
+ * that as the run's or trigger's above-default approval.
841
+ */
842
+ export declare function assertAgentRunCeilingApproval(input: {
843
+ maxCredits: number;
844
+ defaults: AgentRunDefaultCeilings;
845
+ approveAboveDefault: boolean;
846
+ /** "run" for one run, "trigger" for a trigger's per-delivery ceiling. */
847
+ scope: "run" | "trigger";
848
+ }): {
849
+ aboveDefault: boolean;
850
+ };
851
+ /**
852
+ * The ceilings one run is held to, for the worker and every budget check that
853
+ * reads a run's authority. A run with a recorded above-default approval is
854
+ * bounded by its own approved `max_credits` (applied by the caller as a user
855
+ * limit) under the platform backstop. Every other run is bounded by the default,
856
+ * so a ceiling approved without the second approval — including every one
857
+ * approved before this rule — still binds at the default exactly as before.
858
+ */
859
+ export declare function agentRunEnforcedCeilings(input: {
860
+ defaults: PlanAgentCreditLimits;
861
+ aboveDefaultApproved: boolean;
862
+ }): PlanAgentCreditLimits;