@ziffer-io/client 0.1.0 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,7 @@
15
15
  * assert the re-export is the SAME function object, so this cannot decay
16
16
  * into a copy silently.
17
17
  */
18
- export { API_KEY_EXPIRES_HEADER, API_KEY_EXPIRY_WARNING_DAYS, ApiRefusal, ERROR_ADMISSION_UNAVAILABLE, ERROR_API_KEY_UNKNOWN, ERROR_DECISION_UNKNOWN, ERROR_PROPOSAL_MALFORMED, ERROR_TENANT_MISMATCH, ResponseMalformed, WaitTimeout, ZifferClient, type Decision, type DecisionStatus, type WaitOptions, type WireProposal, type WireProposalPayload, } from './client.js';
18
+ export { API_KEY_EXPIRES_HEADER, API_KEY_EXPIRY_WARNING_DAYS, ApiRefusal, ERROR_ADMISSION_UNAVAILABLE, ERROR_API_KEY_UNKNOWN, ERROR_DECISION_UNKNOWN, ERROR_FEEDBACK_MALFORMED, ERROR_FEEDBACK_RATE_LIMITED, ERROR_FEEDBACK_TOO_LARGE, ERROR_FEEDBACK_UNAVAILABLE, ERROR_LIST_QUERY_MALFORMED, ERROR_PROPOSAL_MALFORMED, ERROR_TENANT_MISMATCH, ResponseMalformed, WaitTimeout, ZifferClient, type Decision, type DecisionListItem, type DecisionPage, type DecisionStatus, type RefusalCategory, type Feedback, type FeedbackStored, type FetchInit, type FetchLike, type Identity, type ListOptions, type ReceiptPresence, type RequestOptions, type WaitOptions, type WireProposal, type WireProposalPayload, type ZifferClientOptions, } from './client.js';
19
+ export { DeadlineExceeded, REQUEST_TIMEOUT_MS, RETRY_BUCKET_CAPACITY, type RetryCounters, } from './retry.js';
19
20
  export { Refusal, verifyReceipt, type TrustAnchor, type Verified, type VerifyOptions, } from '@ziffer-io/verify';
20
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,UAAU,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAOrB,OAAO,EACL,OAAO,EACP,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,UAAU,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAOpB,OAAO,EACL,OAAO,EACP,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -15,7 +15,14 @@
15
15
  * assert the re-export is the SAME function object, so this cannot decay
16
16
  * into a copy silently.
17
17
  */
18
- export { API_KEY_EXPIRES_HEADER, API_KEY_EXPIRY_WARNING_DAYS, ApiRefusal, ERROR_ADMISSION_UNAVAILABLE, ERROR_API_KEY_UNKNOWN, ERROR_DECISION_UNKNOWN, ERROR_PROPOSAL_MALFORMED, ERROR_TENANT_MISMATCH, ResponseMalformed, WaitTimeout, ZifferClient, } from './client.js';
18
+ export { API_KEY_EXPIRES_HEADER, API_KEY_EXPIRY_WARNING_DAYS, ApiRefusal, ERROR_ADMISSION_UNAVAILABLE, ERROR_API_KEY_UNKNOWN, ERROR_DECISION_UNKNOWN, ERROR_FEEDBACK_MALFORMED, ERROR_FEEDBACK_RATE_LIMITED, ERROR_FEEDBACK_TOO_LARGE, ERROR_FEEDBACK_UNAVAILABLE, ERROR_LIST_QUERY_MALFORMED, ERROR_PROPOSAL_MALFORMED, ERROR_TENANT_MISMATCH, ResponseMalformed, WaitTimeout, ZifferClient, } from './client.js';
19
+ // The retry surface a caller can act on: the error a deadline produces, the
20
+ // counters to read, and the two numbers a runbook would quote. The rules
21
+ // themselves (the policy, the jitter, the header parser) stay inside the
22
+ // package — they are the client's behaviour, not an API to call, and
23
+ // exporting them would invite a second retry loop built out of this one's
24
+ // parts, which is the thing `packages/mcp` is careful not to have.
25
+ export { DeadlineExceeded, REQUEST_TIMEOUT_MS, RETRY_BUCKET_CAPACITY, } from './retry.js';
19
26
  // The verify surface a receipt-holding caller needs, and ONLY that: the
20
27
  // verifier itself, its refusal type, and the types its signature names.
21
28
  // The rest of @ziffer-io/verify (canon, the strict Ed25519 predicate, suite
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,UAAU,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,YAAY,GAMb,MAAM,aAAa,CAAC;AAErB,wEAAwE;AACxE,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,gEAAgE;AAChE,OAAO,EACL,OAAO,EACP,aAAa,GAId,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,UAAU,EACV,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,EACX,YAAY,GAkBb,MAAM,aAAa,CAAC;AAErB,4EAA4E;AAC5E,yEAAyE;AACzE,yEAAyE;AACzE,qEAAqE;AACrE,0EAA0E;AAC1E,mEAAmE;AACnE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,gEAAgE;AAChE,OAAO,EACL,OAAO,EACP,aAAa,GAId,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * The retry rules, in one place, for the one request path (ACP-355).
3
+ *
4
+ * A client that resends is a client that decides, on the customer's behalf,
5
+ * which failures are worth another try — and the wrong answer is expensive in
6
+ * both directions: a resend of something the gateway already accepted is a
7
+ * second hold on the same action, and a give-up on a degradation the gateway
8
+ * named is an outage the customer did not have. So the rules are written once,
9
+ * here, and the shared corpus `tools/fixtures/sdk-retry/cases.json` holds this
10
+ * SDK and the Python one to the same sleeps, the same counters and the same
11
+ * refusals. Two implementations of one rule are two rules unless something
12
+ * holds them to the same bytes.
13
+ *
14
+ * Nothing in this module talks to the network, reads a clock or draws a random
15
+ * number: it is handed `now`, the draw and the caller's deadline, and it
16
+ * returns what should happen next. That is what makes the corpus replayable —
17
+ * see `retry.test.ts`, where time advances only by sleeps.
18
+ */
19
+ /**
20
+ * R1. The answers a resend can help with, as ONE list.
21
+ *
22
+ * `0` is not an HTTP status: it is this client's spelling of "no HTTP answer at
23
+ * all" — the connection was refused, DNS failed, or the round trip outlived
24
+ * {@link REQUEST_TIMEOUT_MS}. The request may or may not have reached the
25
+ * gateway, and that is precisely why it is retryable: the gateway keys a
26
+ * pending hold on the hash of the bytes it received (R7), so a resend of the
27
+ * SAME bytes lands on the same hold rather than opening a second one.
28
+ *
29
+ * **500 is deliberately not on this list.** ZIFFER names its own degradations
30
+ * 502 and 503, so a 500 is an unclassified server fault — something the
31
+ * gateway did not expect and did not classify — and a resend repeats it. Every
32
+ * other 4xx is absent for the plainer reason: the request was refused on its
33
+ * merits and the same bytes will be refused again.
34
+ */
35
+ export declare const RETRYABLE_STATUSES: readonly number[];
36
+ /** R2. The first computed backoff window, doubled per computed retry. */
37
+ export declare const RETRY_BASE_MS = 500;
38
+ /**
39
+ * R2. The ceiling on the computed window. Unreachable today: R4 caps computed
40
+ * retries at four, so `k` never exceeds 3 and the largest window this client
41
+ * can produce is `500 * 2^3 = 4000` ms. It is written here rather than dropped
42
+ * because a bound that changes no outcome is documentation and not a control,
43
+ * and the next person to raise the cap needs to know which of the two it is.
44
+ */
45
+ export declare const RETRY_MAX_BACKOFF_MS = 30000;
46
+ /** R4. At most five attempts in total when the caller gave no deadline; and,
47
+ * deadline or not, at most four of those may be computed retries. */
48
+ export declare const RETRY_MAX_ATTEMPTS = 5;
49
+ /** R6. The token bucket's capacity, and the level a fresh client starts at. */
50
+ export declare const RETRY_BUCKET_CAPACITY = 10;
51
+ /**
52
+ * R8. The timeout on ONE ROUND TRIP — send, and read the answer's body. It is
53
+ * not a budget for the call: a call that retries four times may take far
54
+ * longer than this and is not wrong for doing so. Waiting for a human to
55
+ * approve is not a round trip either; that is `ZifferClient.wait`, which polls.
56
+ */
57
+ export declare const REQUEST_TIMEOUT_MS = 10000;
58
+ /** The header R3 reads. Lowercase because that is how `Headers.get` matches. */
59
+ export declare const RETRY_AFTER_HEADER = "retry-after";
60
+ /**
61
+ * R9. What the caller can read off the client instance: two counters and one
62
+ * gauge. Snake_case because these are the names R1..R10 gives them and the
63
+ * shared corpus pins them — a second spelling here would be a second name for
64
+ * one number, and the Python SDK's reader would be reading a different object.
65
+ *
66
+ * `retries_directed` and `retries_computed` are cumulative over the client's
67
+ * whole life; `retry_bucket_level` is a level, not a count, and moves both ways.
68
+ */
69
+ export interface RetryCounters {
70
+ /** Retries the SERVER asked for, by sending `Retry-After` (R3). */
71
+ readonly retries_directed: number;
72
+ /** Retries this client decided on its own, with jittered backoff (R2). */
73
+ readonly retries_computed: number;
74
+ /** R6's bucket, 0..{@link RETRY_BUCKET_CAPACITY}. */
75
+ readonly retry_bucket_level: number;
76
+ }
77
+ /**
78
+ * R5. The call's deadline arrived before the next sleep could be taken.
79
+ *
80
+ * Distinct from every other failure on purpose: it says the RETRY was
81
+ * abandoned, not that the gateway refused. It carries the last failure's name
82
+ * and status so the operator learns what was actually going wrong — a
83
+ * `DeadlineExceeded` that did not say "the last thing we saw was a 503" would
84
+ * send the reader looking at their own timeout instead of at the gateway.
85
+ *
86
+ * Thrown only when the caller gave a deadline. No deadline means no such
87
+ * check, and a directed sleep of an hour is then taken as directed.
88
+ */
89
+ export declare class DeadlineExceeded extends Error {
90
+ /** The name of the last failure before the deadline — `ApiRefusal`,
91
+ * `ResponseMalformed`, `TimeoutError`, whatever the transport threw. */
92
+ readonly lastError: string;
93
+ /** The last failure's HTTP status; `0` when there was no HTTP answer. */
94
+ readonly status: number;
95
+ constructor(lastError: string, status: number);
96
+ }
97
+ /** R1. `status` is an HTTP status, or 0 for no HTTP answer at all. */
98
+ export declare function isRetryable(status: number): boolean;
99
+ /**
100
+ * R2. Full jitter: `floor(u * min(30000, 500 * 2^k))`, `u` in [0,1).
101
+ *
102
+ * Full jitter and not "backoff plus a little noise", because the failure this
103
+ * defends against is a fleet of clients that all saw the same 503 and all come
104
+ * back at the same instant. Sleeping a uniform draw from the whole window is
105
+ * what spreads them; a narrow band around the window keeps the herd together.
106
+ * `floor` truncates and does not round.
107
+ */
108
+ export declare function computedSleepMs(u: number, k: number): number;
109
+ /**
110
+ * R3. `Retry-After` as an INTEGER NUMBER OF SECONDS, or `null` for "no
111
+ * direction given".
112
+ *
113
+ * Integer seconds only. HTTP also permits an HTTP-date here, and `1.5`, `-1`
114
+ * and an empty value all exist in the wild; every one of them is read as
115
+ * ABSENT and the retry becomes a computed one. That is deliberate and it is
116
+ * the fail-safe direction: a misparsed date is a sleep of the wrong length
117
+ * (`Date.parse` of a malformed date yields NaN, and a NaN sleep is either
118
+ * instant or forever), while falling back to the computed path yields a sleep
119
+ * this client already knows how to bound. A value this client cannot read is
120
+ * not a direction it should follow.
121
+ */
122
+ export declare function parseRetryAfterSeconds(raw: string | null): number | null;
123
+ /** What {@link RetryPolicy.decide} says to do next. */
124
+ export type RetryStep =
125
+ /** No retry. The caller throws the failure it already has, as it is. */
126
+ {
127
+ readonly kind: 'stop';
128
+ }
129
+ /** R5: a retry was due, but its sleep would cross the deadline. */
130
+ | {
131
+ readonly kind: 'deadline';
132
+ }
133
+ /** Sleep this long, then send the same bytes again. */
134
+ | {
135
+ readonly kind: 'sleep';
136
+ readonly ms: number;
137
+ readonly directed: boolean;
138
+ };
139
+ /**
140
+ * The state of ONE call: attempts made, R2's `k`, and how many of this call's
141
+ * retries were computed.
142
+ *
143
+ * It is handed in rather than kept on the policy because one client may have
144
+ * two calls in flight — `propose` and a `wait` poll, say — and a `k` living on
145
+ * the client would be two calls sharing one backoff window, each doubling the
146
+ * other's. The bucket and the counters are per client (R6, R9); everything
147
+ * that resets per call is here.
148
+ */
149
+ export interface CallState {
150
+ /** Round trips made so far in this call, including the one just answered. */
151
+ attempts: number;
152
+ /** R2's exponent. Advanced ONLY by a computed retry that actually happened. */
153
+ k: number;
154
+ /** R4's computed budget for this call. */
155
+ computed: number;
156
+ }
157
+ /** A fresh call's state. */
158
+ export declare function newCall(): CallState;
159
+ /**
160
+ * R1..R6 for one client instance: the token bucket, the two counters, and the
161
+ * decision.
162
+ *
163
+ * The bucket (R6) is the part that is easy to leave out and expensive to be
164
+ * without. Backoff alone still lets a client retry every call it makes, so a
165
+ * gateway that is down stays under the full retried load of every customer
166
+ * process at once. The bucket makes retrying a SHARED, exhaustible budget: ten
167
+ * computed retries, refilled one per successful call, so a client whose calls
168
+ * are all failing stops retrying and a client that is mostly healthy keeps its
169
+ * headroom. A directed retry spends nothing, because the server asked for it
170
+ * and it already knows its own load.
171
+ */
172
+ export declare class RetryPolicy {
173
+ private bucket;
174
+ private directed;
175
+ private computed;
176
+ constructor(initialBucket?: number);
177
+ /** R9, as a plain object: a snapshot, not a live view. */
178
+ get counters(): RetryCounters;
179
+ /** R6: every successful call (2xx) adds one token, capped at capacity. */
180
+ refill(): void;
181
+ /**
182
+ * The whole of R1..R6 for one answer, in the order the corpus's README
183
+ * states: **R4, then R6, then R5**.
184
+ *
185
+ * That order is load-bearing. R5 runs last because it is a question about a
186
+ * SLEEP — if R4's cap or R6's empty bucket already said there is no retry,
187
+ * there is no sleep to measure and the caller gets the gateway's own last
188
+ * error rather than a `DeadlineExceeded` that names the wrong problem.
189
+ *
190
+ * Counters and the bucket move only on the branch that returns `sleep`: a
191
+ * retry that was computed and then refused by the deadline is not a retry,
192
+ * and counting it would inflate the only numbers an operator has. The draw
193
+ * IS consumed on that path, because it was drawn before the deadline
194
+ * refused it.
195
+ *
196
+ * `deadlineAtMs` is an absolute instant on the same clock as `nowMs`;
197
+ * `undefined` means the caller gave no deadline, and then R5 does not run.
198
+ */
199
+ decide(status: number, retryAfterS: number | null, call: CallState, nowMs: number, deadlineAtMs: number | undefined, draw: () => number): RetryStep;
200
+ }
201
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAA4B,CAAC;AAE7E,yEAAyE;AACzE,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C;qEACqE;AACrE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC;4EACwE;IACxE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAS9C;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAYxE;AAED,uDAAuD;AACvD,MAAM,MAAM,SAAS;AACnB,wEAAwE;AACtE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC3B,mEAAmE;GACjE;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE;AAC/B,uDAAuD;GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAKhF;;;;;;;;;GASG;AACH,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,CAAC,EAAE,MAAM,CAAC;IACV,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4BAA4B;AAC5B,wBAAgB,OAAO,IAAI,SAAS,CAEnC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAK;gBAET,aAAa,GAAE,MAA8B;IAazD,0DAA0D;IAC1D,IAAI,QAAQ,IAAI,aAAa,CAM5B;IAED,0EAA0E;IAC1E,MAAM,IAAI,IAAI;IAId;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CACJ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,IAAI,EAAE,MAAM,MAAM,GACjB,SAAS;CAoDb"}
package/dist/retry.js ADDED
@@ -0,0 +1,240 @@
1
+ /**
2
+ * The retry rules, in one place, for the one request path (ACP-355).
3
+ *
4
+ * A client that resends is a client that decides, on the customer's behalf,
5
+ * which failures are worth another try — and the wrong answer is expensive in
6
+ * both directions: a resend of something the gateway already accepted is a
7
+ * second hold on the same action, and a give-up on a degradation the gateway
8
+ * named is an outage the customer did not have. So the rules are written once,
9
+ * here, and the shared corpus `tools/fixtures/sdk-retry/cases.json` holds this
10
+ * SDK and the Python one to the same sleeps, the same counters and the same
11
+ * refusals. Two implementations of one rule are two rules unless something
12
+ * holds them to the same bytes.
13
+ *
14
+ * Nothing in this module talks to the network, reads a clock or draws a random
15
+ * number: it is handed `now`, the draw and the caller's deadline, and it
16
+ * returns what should happen next. That is what makes the corpus replayable —
17
+ * see `retry.test.ts`, where time advances only by sleeps.
18
+ */
19
+ /**
20
+ * R1. The answers a resend can help with, as ONE list.
21
+ *
22
+ * `0` is not an HTTP status: it is this client's spelling of "no HTTP answer at
23
+ * all" — the connection was refused, DNS failed, or the round trip outlived
24
+ * {@link REQUEST_TIMEOUT_MS}. The request may or may not have reached the
25
+ * gateway, and that is precisely why it is retryable: the gateway keys a
26
+ * pending hold on the hash of the bytes it received (R7), so a resend of the
27
+ * SAME bytes lands on the same hold rather than opening a second one.
28
+ *
29
+ * **500 is deliberately not on this list.** ZIFFER names its own degradations
30
+ * 502 and 503, so a 500 is an unclassified server fault — something the
31
+ * gateway did not expect and did not classify — and a resend repeats it. Every
32
+ * other 4xx is absent for the plainer reason: the request was refused on its
33
+ * merits and the same bytes will be refused again.
34
+ */
35
+ export const RETRYABLE_STATUSES = [0, 429, 502, 503, 504];
36
+ /** R2. The first computed backoff window, doubled per computed retry. */
37
+ export const RETRY_BASE_MS = 500;
38
+ /**
39
+ * R2. The ceiling on the computed window. Unreachable today: R4 caps computed
40
+ * retries at four, so `k` never exceeds 3 and the largest window this client
41
+ * can produce is `500 * 2^3 = 4000` ms. It is written here rather than dropped
42
+ * because a bound that changes no outcome is documentation and not a control,
43
+ * and the next person to raise the cap needs to know which of the two it is.
44
+ */
45
+ export const RETRY_MAX_BACKOFF_MS = 30_000;
46
+ /** R4. At most five attempts in total when the caller gave no deadline; and,
47
+ * deadline or not, at most four of those may be computed retries. */
48
+ export const RETRY_MAX_ATTEMPTS = 5;
49
+ /** R6. The token bucket's capacity, and the level a fresh client starts at. */
50
+ export const RETRY_BUCKET_CAPACITY = 10;
51
+ /**
52
+ * R8. The timeout on ONE ROUND TRIP — send, and read the answer's body. It is
53
+ * not a budget for the call: a call that retries four times may take far
54
+ * longer than this and is not wrong for doing so. Waiting for a human to
55
+ * approve is not a round trip either; that is `ZifferClient.wait`, which polls.
56
+ */
57
+ export const REQUEST_TIMEOUT_MS = 10_000;
58
+ /** The header R3 reads. Lowercase because that is how `Headers.get` matches. */
59
+ export const RETRY_AFTER_HEADER = 'retry-after';
60
+ /**
61
+ * R5. The call's deadline arrived before the next sleep could be taken.
62
+ *
63
+ * Distinct from every other failure on purpose: it says the RETRY was
64
+ * abandoned, not that the gateway refused. It carries the last failure's name
65
+ * and status so the operator learns what was actually going wrong — a
66
+ * `DeadlineExceeded` that did not say "the last thing we saw was a 503" would
67
+ * send the reader looking at their own timeout instead of at the gateway.
68
+ *
69
+ * Thrown only when the caller gave a deadline. No deadline means no such
70
+ * check, and a directed sleep of an hour is then taken as directed.
71
+ */
72
+ export class DeadlineExceeded extends Error {
73
+ /** The name of the last failure before the deadline — `ApiRefusal`,
74
+ * `ResponseMalformed`, `TimeoutError`, whatever the transport threw. */
75
+ lastError;
76
+ /** The last failure's HTTP status; `0` when there was no HTTP answer. */
77
+ status;
78
+ constructor(lastError, status) {
79
+ super(`the deadline passed before the next retry could be taken; the last failure was ` +
80
+ `${lastError}${status === 0 ? ' with no HTTP answer' : ` (HTTP ${status})`}`);
81
+ this.name = 'DeadlineExceeded';
82
+ this.lastError = lastError;
83
+ this.status = status;
84
+ }
85
+ }
86
+ /** R1. `status` is an HTTP status, or 0 for no HTTP answer at all. */
87
+ export function isRetryable(status) {
88
+ return RETRYABLE_STATUSES.includes(status);
89
+ }
90
+ /**
91
+ * R2. Full jitter: `floor(u * min(30000, 500 * 2^k))`, `u` in [0,1).
92
+ *
93
+ * Full jitter and not "backoff plus a little noise", because the failure this
94
+ * defends against is a fleet of clients that all saw the same 503 and all come
95
+ * back at the same instant. Sleeping a uniform draw from the whole window is
96
+ * what spreads them; a narrow band around the window keeps the herd together.
97
+ * `floor` truncates and does not round.
98
+ */
99
+ export function computedSleepMs(u, k) {
100
+ return Math.floor(u * Math.min(RETRY_MAX_BACKOFF_MS, RETRY_BASE_MS * 2 ** k));
101
+ }
102
+ /**
103
+ * R3. `Retry-After` as an INTEGER NUMBER OF SECONDS, or `null` for "no
104
+ * direction given".
105
+ *
106
+ * Integer seconds only. HTTP also permits an HTTP-date here, and `1.5`, `-1`
107
+ * and an empty value all exist in the wild; every one of them is read as
108
+ * ABSENT and the retry becomes a computed one. That is deliberate and it is
109
+ * the fail-safe direction: a misparsed date is a sleep of the wrong length
110
+ * (`Date.parse` of a malformed date yields NaN, and a NaN sleep is either
111
+ * instant or forever), while falling back to the computed path yields a sleep
112
+ * this client already knows how to bound. A value this client cannot read is
113
+ * not a direction it should follow.
114
+ */
115
+ export function parseRetryAfterSeconds(raw) {
116
+ if (raw === null) {
117
+ return null;
118
+ }
119
+ const text = raw.trim();
120
+ // Digits only: this refuses '', '1.5', '-1', '+1', '1e3' and every HTTP-date
121
+ // spelling, each of which becomes a computed retry.
122
+ if (!/^[0-9]+$/.test(text)) {
123
+ return null;
124
+ }
125
+ const seconds = Number.parseInt(text, 10);
126
+ return Number.isSafeInteger(seconds) ? seconds : null;
127
+ }
128
+ const STOP = { kind: 'stop' };
129
+ const DEADLINE = { kind: 'deadline' };
130
+ /** A fresh call's state. */
131
+ export function newCall() {
132
+ return { attempts: 0, k: 0, computed: 0 };
133
+ }
134
+ /**
135
+ * R1..R6 for one client instance: the token bucket, the two counters, and the
136
+ * decision.
137
+ *
138
+ * The bucket (R6) is the part that is easy to leave out and expensive to be
139
+ * without. Backoff alone still lets a client retry every call it makes, so a
140
+ * gateway that is down stays under the full retried load of every customer
141
+ * process at once. The bucket makes retrying a SHARED, exhaustible budget: ten
142
+ * computed retries, refilled one per successful call, so a client whose calls
143
+ * are all failing stops retrying and a client that is mostly healthy keeps its
144
+ * headroom. A directed retry spends nothing, because the server asked for it
145
+ * and it already knows its own load.
146
+ */
147
+ export class RetryPolicy {
148
+ bucket;
149
+ directed = 0;
150
+ computed = 0;
151
+ constructor(initialBucket = RETRY_BUCKET_CAPACITY) {
152
+ if (!Number.isInteger(initialBucket) ||
153
+ initialBucket < 0 ||
154
+ initialBucket > RETRY_BUCKET_CAPACITY) {
155
+ throw new TypeError(`RetryPolicy: the initial bucket must be an integer 0..${RETRY_BUCKET_CAPACITY}`);
156
+ }
157
+ this.bucket = initialBucket;
158
+ }
159
+ /** R9, as a plain object: a snapshot, not a live view. */
160
+ get counters() {
161
+ return {
162
+ retries_directed: this.directed,
163
+ retries_computed: this.computed,
164
+ retry_bucket_level: this.bucket,
165
+ };
166
+ }
167
+ /** R6: every successful call (2xx) adds one token, capped at capacity. */
168
+ refill() {
169
+ this.bucket = Math.min(RETRY_BUCKET_CAPACITY, this.bucket + 1);
170
+ }
171
+ /**
172
+ * The whole of R1..R6 for one answer, in the order the corpus's README
173
+ * states: **R4, then R6, then R5**.
174
+ *
175
+ * That order is load-bearing. R5 runs last because it is a question about a
176
+ * SLEEP — if R4's cap or R6's empty bucket already said there is no retry,
177
+ * there is no sleep to measure and the caller gets the gateway's own last
178
+ * error rather than a `DeadlineExceeded` that names the wrong problem.
179
+ *
180
+ * Counters and the bucket move only on the branch that returns `sleep`: a
181
+ * retry that was computed and then refused by the deadline is not a retry,
182
+ * and counting it would inflate the only numbers an operator has. The draw
183
+ * IS consumed on that path, because it was drawn before the deadline
184
+ * refused it.
185
+ *
186
+ * `deadlineAtMs` is an absolute instant on the same clock as `nowMs`;
187
+ * `undefined` means the caller gave no deadline, and then R5 does not run.
188
+ */
189
+ decide(status, retryAfterS, call, nowMs, deadlineAtMs, draw) {
190
+ // R1, and it beats R3: a 500 carrying `Retry-After` is still not retried.
191
+ // The status decides; a header cannot promote an answer into the list.
192
+ if (!isRetryable(status)) {
193
+ return STOP;
194
+ }
195
+ // R4, half one: with NO deadline the cap counts attempts of either kind.
196
+ // Under a deadline the deadline is the bound on directed retries, because
197
+ // the server asking for a tenth try is the server telling us it is coming
198
+ // back — and the caller said how long it is prepared to wait.
199
+ if (deadlineAtMs === undefined && call.attempts >= RETRY_MAX_ATTEMPTS) {
200
+ return STOP;
201
+ }
202
+ let ms;
203
+ if (retryAfterS !== null) {
204
+ // R3: exactly N seconds. No jitter — the server already drew it, and a
205
+ // client adding its own would smear the window the server chose.
206
+ ms = retryAfterS * 1000;
207
+ }
208
+ else {
209
+ // R4, half two: the computed budget is four retries, deadline or not.
210
+ // A deadline buys patience with a server that is answering, not licence
211
+ // to hammer one that is not.
212
+ if (call.computed >= RETRY_MAX_ATTEMPTS - 1) {
213
+ return STOP;
214
+ }
215
+ // R6: an empty bucket means no computed retry, and the last error is
216
+ // raised exactly as it is.
217
+ if (this.bucket <= 0) {
218
+ return STOP;
219
+ }
220
+ ms = computedSleepMs(draw(), call.k);
221
+ }
222
+ // R5, strictly greater: a sleep that lands exactly on the deadline is taken.
223
+ if (deadlineAtMs !== undefined && nowMs + ms > deadlineAtMs) {
224
+ return DEADLINE;
225
+ }
226
+ if (retryAfterS !== null) {
227
+ // R3/R6: spends no token, and `k` does not advance — the server's
228
+ // direction is not evidence about how loaded WE think it is.
229
+ this.directed += 1;
230
+ }
231
+ else {
232
+ this.computed += 1;
233
+ this.bucket -= 1;
234
+ call.computed += 1;
235
+ call.k += 1;
236
+ }
237
+ return { kind: 'sleep', ms, directed: retryAfterS !== null };
238
+ }
239
+ }
240
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "name": "@ziffer-io/client",
3
- "version": "0.1.0",
4
- "description": "The ZIFFER decision API client for TypeScript, with receipt verification re-exported from one home.",
3
+ "version": "0.2.0",
4
+ "description": "ZIFFER TypeScript client: propose an action, wait for the decision, verify the receipt before you act",
5
+ "keywords": [
6
+ "ziffer",
7
+ "agent",
8
+ "ai-agent",
9
+ "guardrail",
10
+ "approval",
11
+ "receipt"
12
+ ],
5
13
  "author": "code75 SASU",
6
14
  "license": "SEE LICENSE IN LICENSE",
7
- "comment-license": "The SDK is proprietary (code75 SASU). \"license\" is the SPDX escape hatch for exactly this case: there is no SPDX identifier for these terms, so the field points at the file that states them, and LICENSE ships in the tarball beside THIRD-PARTY-NOTICES. Do not put an OSI identifier here -- Apache-2.0 stood in these four files until ACP-214 and was wrong the whole time.",
8
15
  "type": "module",
9
16
  "main": "./dist/index.js",
10
17
  "types": "./dist/index.d.ts",
@@ -32,16 +39,12 @@
32
39
  "publishConfig": {
33
40
  "access": "public"
34
41
  },
35
- "comment-no-provenance": "There is deliberately no \"provenance\": true here, and it was removed rather than never added. npm generates a provenance attestation only from a recognised CI runner, and its documentation states plainly that provenance is NOT SUPPORTED for private repositories (docs.npmjs.com/trusted-publishers, read 2026-09-03) -- ziffer-hq/ziffer is private (`gh api` says so). Setting the flag does not degrade to a warning: npm attempts the attestation and the publish FAILS, so the field would have broken the operator's very first publish from a laptop and every CI publish after it. tools/release-npm.sh asserts the field stays absent, and that assertion is the thing to delete on the day this repository becomes public -- at which point trusted publishing generates provenance on its own, with no flag at all.",
36
42
  "ziffer": {
37
- "enginePin": "fed43d10b427e0a4435a8f04e474334d88a5aa6e"
43
+ "enginePin": "7fd84dbe1a430e6deea4b241ebe1ba641103ffbe"
38
44
  },
39
- "comment-enginePin": "The engine commit whose wire types this client speaks and whose verifier it re-exports. A COPY of the rev in Cargo.toml, which is the one authority tools/guard.sh reads; tools/release-npm.sh refuses to release when the two differ, by name. tools/bump-pin.sh does not move this field -- see packages/types/package.json for why and what closing it costs.",
40
- "comment-deps": "Exactly two: @ziffer-io/types because the wire format is the one permitted shared definition (it IS the schemas, generated), and @ziffer-io/verify because verification has ONE home and this client re-exports it rather than growing a second (ACP-197 runbook section 6). No HTTP dependency: Node's own fetch carries two routes; a framework here is surface without a claim.",
41
- "comment-types-was-a-git-dependency": "Until ACP-214 the first of those two was `git+https://ziffer-hq@github.com/ziffer-hq/agent-control-plane.git#<pin>&path:/packages/acp-types`. That is a private repository, so the published client would have been uninstallable rather than merely awkward; and pnpm runs `prepare` for a git dependency, so a consumer who could reach it would have compiled our wire types on their own machine. It is now a workspace dependency on packages/types, which `pnpm pack` rewrites to that package's exact published version -- measured, and asserted again by tools/release-npm.sh over every tarball.",
42
45
  "dependencies": {
43
- "@ziffer-io/verify": "0.1.0",
44
- "@ziffer-io/types": "0.1.0"
46
+ "@ziffer-io/types": "0.2.0",
47
+ "@ziffer-io/verify": "0.2.0"
45
48
  },
46
49
  "devDependencies": {
47
50
  "@types/node": "^22.15.0",
@@ -50,7 +53,7 @@
50
53
  "scripts": {
51
54
  "build": "tsc -b",
52
55
  "typecheck": "tsc -b",
53
- "pretest": "tsc -b && if ! find dist -name '*.test.js' -print -quit | grep -q .; then echo 'ACP-248: no compiled test file under dist/ -- node --test reports 0 tests and exits 0, so this package would go green having run nothing' >&2; exit 1; fi",
56
+ "pretest": "tsc -b && if ! find dist -name '*.test.js' -print -quit | grep -q .; then echo 'no compiled test file under dist/ -- node --test reports 0 tests and exits 0, so this package would go green having run nothing' >&2; exit 1; fi",
54
57
  "test": "tsc -b && node --test \"dist/**/*.test.js\""
55
58
  }
56
59
  }