@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.
- package/dist/_vxil-feature-configs.d.ts +7 -4
- package/dist/config.d.ts +14 -4
- package/dist/vxil.js +386 -33
- package/package.json +3 -3
|
@@ -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
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
|
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.
|
|
139
|
-
*
|
|
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;
|