@vxil/cli 0.14.1 → 0.16.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.
@@ -6,9 +6,12 @@ export * from './_vxil-feature-configs-canonicalJson.js';
6
6
  export * from './_vxil-feature-configs-publicAssets.js';
7
7
  export declare const RESERVED_CREDIT_TYPES: ReadonlySet<string>;
8
8
  /** A function binding's `retry.maxAttempts` ceiling, and the
9
- * binding kinds that may carry `retry` — the platform-delivered event lanes
10
- * (an http invoke returns its own status; a cron tick's retry would overlap
11
- * the next tick). Read by the schema, the deploy clamp and the CLI. */
9
+ * binding kinds that may carry `retry` — every lane the platform delivers
10
+ * through jobs. Since 2026-10-03 (JT-9) that includes `cron` (a failed tick is
11
+ * re-delivered on the ladder; pair it with `overlap: 'skip'` so a retrying
12
+ * tick never runs beside the next one) and `http` (the ASYNC lane only — a
13
+ * synchronous invoke always hands its caller the function's own status).
14
+ * Read by the schema, the deploy clamp and the CLI. */
12
15
  export declare const FN_RETRY_MAX_ATTEMPTS = 5;
13
16
  export declare const FN_RETRY_BINDING_KINDS: ReadonlySet<string>;
14
17
  /** True when a credit_type is a vxil-COGS reserved type (grant/consume/config
@@ -359,7 +362,7 @@ export declare const FilesConfigSchema: import("@sinclair/typebox").TObject<{
359
362
  downloadUrlTtl: import("@sinclair/typebox").TInteger;
360
363
  quotas: import("@sinclair/typebox").TObject<{
361
364
  maxObjectBytes: import("@sinclair/typebox").TInteger;
362
- maxTotalBytes: import("@sinclair/typebox").TInteger;
365
+ maxTotalBytes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
363
366
  maxObjectCount: import("@sinclair/typebox").TInteger;
364
367
  }>;
365
368
  allowedContentTypes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
package/dist/config.d.ts CHANGED
@@ -129,14 +129,22 @@ export type AuthHookEvent = 'user.created' | 'session.created' | 'session.revoke
129
129
  * jobs retry ladder instead (60 s, 120 s, … backoff) and the last failed
130
130
  * attempt dead-letters the run (`job.dead_lettered`, replayable from the
131
131
  * Jobs page). Each attempt is a billed invocation and carries the SAME
132
- * `idempotency_key` — dedupe on it. Effective attempts =
133
- * min(maxAttempts, the project's `jobs.retry.defaultMaxAttempts`, default 5).
132
+ * `idempotency_key` — dedupe on it. Effective attempts on queue / webhook /
133
+ * cmsHook / authHook = min(maxAttempts, the project's
134
+ * `jobs.retry.defaultMaxAttempts`, default 5); on `cron` and the async `http`
135
+ * lane the binding's maxAttempts IS the budget (it becomes the schedule's /
136
+ * the async run's own max_attempts), whatever the project default.
134
137
  * A handler that partially writes and then fails re-fires its downstream
135
138
  * events on EVERY attempt, so the chain is a tree (up to maxAttempts children
136
139
  * per hop): the causal-depth guard bounds its length (32 hops), not its size —
137
140
  * the breaker, the loop guard, the dead-letter quota and the daily share do.
138
- * Write only once you will return 2xx, or dedupe on idempotency_key. Not accepted on `http` (it returns its
139
- * real status to its caller) or `cron` (a retry would overlap the next tick). */
141
+ * Write only once you will return 2xx, or dedupe on idempotency_key.
142
+ * On `cron` (2026-10-03) a failed tick is re-delivered the same way — set
143
+ * `overlap: 'skip'` beside it so a tick that is still retrying never runs
144
+ * next to the following one. On `http` it applies to the ASYNC lane only
145
+ * (`X-Vxil-Async: 1`): a 408 / 429 / 5xx answer is re-delivered up to
146
+ * maxAttempts; a synchronous invoke always returns the function's own status
147
+ * to its caller and is never retried. */
140
148
  export interface FunctionTriggerRetry {
141
149
  /** 1–5 attempts in all (1 = a failed attempt dead-letters at once, no re-delivery) */
142
150
  maxAttempts: number;
@@ -147,6 +155,7 @@ export interface FunctionTriggerRetry {
147
155
  export type FunctionTrigger = {
148
156
  kind: 'http';
149
157
  path?: string;
158
+ retry?: FunctionTriggerRetry;
150
159
  }
151
160
  /** `overlap: 'skip'` (2026-10-01): a due tick fires nothing while the
152
161
  * previous tick's run is still open (queued / running / retrying / waiting /
@@ -156,6 +165,7 @@ export type FunctionTrigger = {
156
165
  kind: 'cron';
157
166
  schedule: string;
158
167
  overlap?: 'allow' | 'skip';
168
+ retry?: FunctionTriggerRetry;
159
169
  } | {
160
170
  kind: 'queue';
161
171
  source: string;