@attestry/sdk 0.6.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.
Files changed (99) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +1269 -0
  3. package/dist/client.d.ts +58 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +74 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/constants.d.ts +7 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +43 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/errors.d.ts +16 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +41 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/index.d.ts +17 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +20 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lines-parser.d.ts +50 -0
  20. package/dist/lines-parser.d.ts.map +1 -0
  21. package/dist/lines-parser.js +211 -0
  22. package/dist/lines-parser.js.map +1 -0
  23. package/dist/ndjson-parser.d.ts +57 -0
  24. package/dist/ndjson-parser.d.ts.map +1 -0
  25. package/dist/ndjson-parser.js +245 -0
  26. package/dist/ndjson-parser.js.map +1 -0
  27. package/dist/resources/abac-policies.d.ts +1034 -0
  28. package/dist/resources/abac-policies.d.ts.map +1 -0
  29. package/dist/resources/abac-policies.js +1519 -0
  30. package/dist/resources/abac-policies.js.map +1 -0
  31. package/dist/resources/audit-log.d.ts +588 -0
  32. package/dist/resources/audit-log.d.ts.map +1 -0
  33. package/dist/resources/audit-log.js +629 -0
  34. package/dist/resources/audit-log.js.map +1 -0
  35. package/dist/resources/batch.d.ts +845 -0
  36. package/dist/resources/batch.d.ts.map +1 -0
  37. package/dist/resources/batch.js +1074 -0
  38. package/dist/resources/batch.js.map +1 -0
  39. package/dist/resources/chat.d.ts +151 -0
  40. package/dist/resources/chat.d.ts.map +1 -0
  41. package/dist/resources/chat.js +124 -0
  42. package/dist/resources/chat.js.map +1 -0
  43. package/dist/resources/check.d.ts +348 -0
  44. package/dist/resources/check.d.ts.map +1 -0
  45. package/dist/resources/check.js +543 -0
  46. package/dist/resources/check.js.map +1 -0
  47. package/dist/resources/compliance-check.d.ts +330 -0
  48. package/dist/resources/compliance-check.d.ts.map +1 -0
  49. package/dist/resources/compliance-check.js +402 -0
  50. package/dist/resources/compliance-check.js.map +1 -0
  51. package/dist/resources/decisions.d.ts +1208 -0
  52. package/dist/resources/decisions.d.ts.map +1 -0
  53. package/dist/resources/decisions.js +1362 -0
  54. package/dist/resources/decisions.js.map +1 -0
  55. package/dist/resources/evidence-pack.d.ts +1080 -0
  56. package/dist/resources/evidence-pack.d.ts.map +1 -0
  57. package/dist/resources/evidence-pack.js +1789 -0
  58. package/dist/resources/evidence-pack.js.map +1 -0
  59. package/dist/resources/gate.d.ts +613 -0
  60. package/dist/resources/gate.d.ts.map +1 -0
  61. package/dist/resources/gate.js +737 -0
  62. package/dist/resources/gate.js.map +1 -0
  63. package/dist/resources/incidents.d.ts +136 -0
  64. package/dist/resources/incidents.d.ts.map +1 -0
  65. package/dist/resources/incidents.js +229 -0
  66. package/dist/resources/incidents.js.map +1 -0
  67. package/dist/resources/regulatory-changes.d.ts +307 -0
  68. package/dist/resources/regulatory-changes.d.ts.map +1 -0
  69. package/dist/resources/regulatory-changes.js +365 -0
  70. package/dist/resources/regulatory-changes.js.map +1 -0
  71. package/dist/resources/safe-input-read.d.ts +21 -0
  72. package/dist/resources/safe-input-read.d.ts.map +1 -0
  73. package/dist/resources/safe-input-read.js +57 -0
  74. package/dist/resources/safe-input-read.js.map +1 -0
  75. package/dist/resources/ship-gate.d.ts +475 -0
  76. package/dist/resources/ship-gate.d.ts.map +1 -0
  77. package/dist/resources/ship-gate.js +727 -0
  78. package/dist/resources/ship-gate.js.map +1 -0
  79. package/dist/resources/vision.d.ts +540 -0
  80. package/dist/resources/vision.d.ts.map +1 -0
  81. package/dist/resources/vision.js +1036 -0
  82. package/dist/resources/vision.js.map +1 -0
  83. package/dist/retry.d.ts +103 -0
  84. package/dist/retry.d.ts.map +1 -0
  85. package/dist/retry.js +224 -0
  86. package/dist/retry.js.map +1 -0
  87. package/dist/sse-parser.d.ts +64 -0
  88. package/dist/sse-parser.d.ts.map +1 -0
  89. package/dist/sse-parser.js +271 -0
  90. package/dist/sse-parser.js.map +1 -0
  91. package/dist/transport.d.ts +142 -0
  92. package/dist/transport.d.ts.map +1 -0
  93. package/dist/transport.js +455 -0
  94. package/dist/transport.js.map +1 -0
  95. package/dist/types.d.ts +61 -0
  96. package/dist/types.d.ts.map +1 -0
  97. package/dist/types.js +3 -0
  98. package/dist/types.js.map +1 -0
  99. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision.js","sourceRoot":"","sources":["../../src/resources/vision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import { AttestryAPIError } from "./errors.js";
2
+ /**
3
+ * Tunable retry behavior. Pass to `AttestryClient` for client-wide config
4
+ * or per-call via `RequestOptions.retry`. Per-call overrides client-level;
5
+ * client-level overrides defaults.
6
+ */
7
+ export interface RetryOptions {
8
+ /**
9
+ * Maximum number of retry attempts on 429. The initial request is NOT
10
+ * counted — `maxRetries: 3` means up to 4 total attempts.
11
+ * Set to `0` to disable retries entirely.
12
+ * Default: `3`.
13
+ */
14
+ maxRetries: number;
15
+ /**
16
+ * Initial backoff delay in milliseconds. Doubled on each retry, then
17
+ * full-jittered. Default: `1000`.
18
+ */
19
+ initialDelayMs: number;
20
+ /**
21
+ * Maximum backoff delay (cap). Both the exponential schedule and the
22
+ * server-supplied `Retry-After` are capped at this value. Default: `30_000`.
23
+ */
24
+ maxDelayMs: number;
25
+ /**
26
+ * If true, an HTTP `Retry-After` header on the 429 response takes
27
+ * precedence over the exponential schedule (still capped at `maxDelayMs`).
28
+ * Both delta-seconds (`Retry-After: 60`) and HTTP-date forms are
29
+ * supported. Default: `true`.
30
+ */
31
+ honorRetryAfter: boolean;
32
+ }
33
+ /**
34
+ * Defaults. Conservative — retry-on by default with a small cap, honoring
35
+ * server hints. Three retries (4 attempts total) with 1s base, 30s cap is
36
+ * the industry norm (Stripe, Anthropic SDK, AWS SDK all sit in that range).
37
+ */
38
+ export declare const DEFAULT_RETRY_OPTIONS: RetryOptions;
39
+ /**
40
+ * Merge per-call > client > defaults. Returns a fully-resolved
41
+ * `RetryOptions` with no undefined fields. Validates the merged values
42
+ * — negative numbers, non-finite, or non-integer `maxRetries` throw
43
+ * `AttestryError` so a bad config is caught at first call.
44
+ */
45
+ export declare function resolveRetryOptions(clientLevel: Partial<RetryOptions> | undefined, perCall: Partial<RetryOptions> | undefined): RetryOptions;
46
+ /**
47
+ * Parse an HTTP `Retry-After` header value into a delay in milliseconds.
48
+ * Supports both forms per RFC 7231 § 7.1.3:
49
+ *
50
+ * - delta-seconds: `Retry-After: 120` → 120_000ms
51
+ * - HTTP-date: `Retry-After: Mon, 04 May 2026 14:30:00 GMT` → (date - now)
52
+ *
53
+ * Returns `null` for missing / unparseable / negative-or-zero / NaN input.
54
+ * Caller decides what to do with `null` (typically: fall back to the
55
+ * exponential schedule). Defensive against hostile servers — a value
56
+ * returning a real positive number can still be `Infinity` if the header
57
+ * is huge; that's the caller's `maxDelayMs` cap to enforce.
58
+ */
59
+ export declare function parseRetryAfter(headerValue: string | null): number | null;
60
+ /**
61
+ * Compute the next backoff delay in milliseconds.
62
+ *
63
+ * Order of precedence:
64
+ * 1. If `honorRetryAfter` and the 429 response carried a parseable
65
+ * `Retry-After` header, use that value (capped at `maxDelayMs`).
66
+ * 2. Otherwise: exponential `initialDelayMs * 2^attempt`, full-jittered
67
+ * to `random_between(0, exponential_value)`, capped at `maxDelayMs`.
68
+ *
69
+ * `attempt` is the zero-indexed retry number (0 = first retry).
70
+ *
71
+ * Full jitter is the AWS-recommended pattern for client-side throttling:
72
+ * https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/.
73
+ * Prevents thundering herd when many clients all 429 at the same instant.
74
+ */
75
+ export declare function computeRetryDelay(err: AttestryAPIError, attempt: number, options: RetryOptions, rng?: () => number): number;
76
+ /**
77
+ * Sleep for `ms` milliseconds, but reject early with `AttestryError` if
78
+ * the caller's signal aborts. Without the signal hook, `await new Promise
79
+ * (r => setTimeout(r, ms))` would block the abort path until the timer
80
+ * fires — defeating the purpose of cancellation.
81
+ *
82
+ * Pre-aborted signal rejects synchronously (well, after one microtask)
83
+ * — symmetric to transport.request's pre-abort guard.
84
+ *
85
+ * Cleanup invariant: the abort listener is removed in BOTH paths
86
+ * (timer-fires-first AND abort-fires-first). Without removal on the
87
+ * timer path, a long-lived caller signal would accumulate listeners
88
+ * across many retries — small leak per call but real, and EventTarget
89
+ * has no built-in cap.
90
+ */
91
+ export declare function sleepWithSignal(ms: number, signal: AbortSignal | undefined): Promise<void>;
92
+ /**
93
+ * Internal — attach a `Retry-After` header value to an AttestryAPIError
94
+ * for retry-delay computation. Set as a non-enumerable property so it
95
+ * doesn't show up in JSON.stringify or in user-facing console.log.
96
+ */
97
+ export declare function attachRetryAfter(err: AttestryAPIError, headerValue: string | null): void;
98
+ /**
99
+ * True iff the error is a retryable HTTP status. Today: 429 only. See
100
+ * file header for rationale.
101
+ */
102
+ export declare function isRetryableError(err: unknown): err is AttestryAPIError;
103
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,gBAAgB,EAAiB,MAAM,aAAa,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAKnC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,EAC9C,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,GACzC,YAAY,CA+Bd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAkBzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,GAAG,GAAE,MAAM,MAAoB,GAC9B,MAAM,CAmBR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAoBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,IAAI,CAQN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,gBAAgB,CAEtE"}
package/dist/retry.js ADDED
@@ -0,0 +1,224 @@
1
+ // ─── Retry middleware ───────────────────────────────────────────────────────
2
+ //
3
+ // Automatic retry on HTTP 429 (Too Many Requests). Applied transparently
4
+ // to every JSON request and to the initial fetch of every SSE stream.
5
+ // Mid-iteration retries on streams are deliberately NOT supported — events
6
+ // would be lost or duplicated without idempotency design surface.
7
+ //
8
+ // Why only 429 in v0:
9
+ // - 429 means "rejected before processing" — by definition safe to retry,
10
+ // even for non-idempotent POSTs (the server didn't run anything).
11
+ // - 5xx errors might indicate persistent bugs; auto-retrying could mask
12
+ // them. Caller can retry manually after inspecting `err.status`.
13
+ // - 408 (Request Timeout) is rare at the API layer and ambiguous.
14
+ // - 503 in our kernel can mean "permanent config issue" (chat without
15
+ // Anthropic key) — auto-retry would loop forever.
16
+ // Future expansion to 503/502/504 with idempotency-key support is forward-
17
+ // compat — see spec-diff round.
18
+ //
19
+ // Backoff strategy: exponential with full jitter. Default base 1000ms,
20
+ // multiplier 2x, cap 30s. Server-supplied `Retry-After` header (RFC 7231)
21
+ // takes precedence when present and is capped at maxDelayMs (a hostile
22
+ // server can't park the client for an hour).
23
+ import { AttestryAPIError, AttestryError } from "./errors.js";
24
+ /**
25
+ * Defaults. Conservative — retry-on by default with a small cap, honoring
26
+ * server hints. Three retries (4 attempts total) with 1s base, 30s cap is
27
+ * the industry norm (Stripe, Anthropic SDK, AWS SDK all sit in that range).
28
+ */
29
+ export const DEFAULT_RETRY_OPTIONS = {
30
+ maxRetries: 3,
31
+ initialDelayMs: 1_000,
32
+ maxDelayMs: 30_000,
33
+ honorRetryAfter: true,
34
+ };
35
+ /**
36
+ * Merge per-call > client > defaults. Returns a fully-resolved
37
+ * `RetryOptions` with no undefined fields. Validates the merged values
38
+ * — negative numbers, non-finite, or non-integer `maxRetries` throw
39
+ * `AttestryError` so a bad config is caught at first call.
40
+ */
41
+ export function resolveRetryOptions(clientLevel, perCall) {
42
+ const merged = {
43
+ ...DEFAULT_RETRY_OPTIONS,
44
+ ...clientLevel,
45
+ ...perCall,
46
+ };
47
+ if (!Number.isInteger(merged.maxRetries) ||
48
+ merged.maxRetries < 0 ||
49
+ merged.maxRetries > 100) {
50
+ throw new AttestryError("retry: `maxRetries` must be a non-negative integer ≤ 100");
51
+ }
52
+ if (!Number.isFinite(merged.initialDelayMs) || merged.initialDelayMs < 0) {
53
+ throw new AttestryError("retry: `initialDelayMs` must be a non-negative finite number");
54
+ }
55
+ if (!Number.isFinite(merged.maxDelayMs) || merged.maxDelayMs < 0) {
56
+ throw new AttestryError("retry: `maxDelayMs` must be a non-negative finite number");
57
+ }
58
+ if (typeof merged.honorRetryAfter !== "boolean") {
59
+ throw new AttestryError("retry: `honorRetryAfter` must be a boolean");
60
+ }
61
+ return merged;
62
+ }
63
+ /**
64
+ * Parse an HTTP `Retry-After` header value into a delay in milliseconds.
65
+ * Supports both forms per RFC 7231 § 7.1.3:
66
+ *
67
+ * - delta-seconds: `Retry-After: 120` → 120_000ms
68
+ * - HTTP-date: `Retry-After: Mon, 04 May 2026 14:30:00 GMT` → (date - now)
69
+ *
70
+ * Returns `null` for missing / unparseable / negative-or-zero / NaN input.
71
+ * Caller decides what to do with `null` (typically: fall back to the
72
+ * exponential schedule). Defensive against hostile servers — a value
73
+ * returning a real positive number can still be `Infinity` if the header
74
+ * is huge; that's the caller's `maxDelayMs` cap to enforce.
75
+ */
76
+ export function parseRetryAfter(headerValue) {
77
+ if (headerValue === null)
78
+ return null;
79
+ const trimmed = headerValue.trim();
80
+ if (trimmed.length === 0)
81
+ return null;
82
+ // Try delta-seconds first. RFC 7231 specifies the value is a non-negative
83
+ // decimal integer, but be slightly permissive: leading/trailing whitespace
84
+ // is trimmed; pure-numeric strings parse via Number.
85
+ if (/^\d+(\.\d+)?$/.test(trimmed)) {
86
+ const seconds = Number(trimmed);
87
+ if (!Number.isFinite(seconds) || seconds <= 0)
88
+ return null;
89
+ return Math.floor(seconds * 1_000);
90
+ }
91
+ // Otherwise: HTTP-date. `Date.parse` handles RFC 5322 / RFC 7231 forms.
92
+ const t = Date.parse(trimmed);
93
+ if (Number.isNaN(t))
94
+ return null;
95
+ const delayMs = t - Date.now();
96
+ if (delayMs <= 0)
97
+ return null;
98
+ return delayMs;
99
+ }
100
+ /**
101
+ * Compute the next backoff delay in milliseconds.
102
+ *
103
+ * Order of precedence:
104
+ * 1. If `honorRetryAfter` and the 429 response carried a parseable
105
+ * `Retry-After` header, use that value (capped at `maxDelayMs`).
106
+ * 2. Otherwise: exponential `initialDelayMs * 2^attempt`, full-jittered
107
+ * to `random_between(0, exponential_value)`, capped at `maxDelayMs`.
108
+ *
109
+ * `attempt` is the zero-indexed retry number (0 = first retry).
110
+ *
111
+ * Full jitter is the AWS-recommended pattern for client-side throttling:
112
+ * https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/.
113
+ * Prevents thundering herd when many clients all 429 at the same instant.
114
+ */
115
+ export function computeRetryDelay(err, attempt, options, rng = Math.random) {
116
+ if (options.honorRetryAfter) {
117
+ const headerValue = extractRetryAfter(err);
118
+ const parsed = parseRetryAfter(headerValue);
119
+ if (parsed !== null) {
120
+ return Math.min(parsed, options.maxDelayMs);
121
+ }
122
+ }
123
+ // Exponential. Cap the exponent at 30 to avoid Math.pow overflow on
124
+ // pathological maxRetries values; the caller's resolveRetryOptions
125
+ // already caps maxRetries at 100, but full jitter's input is computed
126
+ // pre-cap and could otherwise overflow.
127
+ const safeExponent = Math.min(attempt, 30);
128
+ const exponential = options.initialDelayMs * Math.pow(2, safeExponent);
129
+ const cappedExp = Math.min(exponential, options.maxDelayMs);
130
+ // Full jitter: `random_between(0, cappedExp)`. The lower bound 0 is
131
+ // intentional — over many clients, the average delay across a cohort
132
+ // is cappedExp/2 with low cross-correlation.
133
+ return Math.floor(rng() * cappedExp);
134
+ }
135
+ /**
136
+ * Sleep for `ms` milliseconds, but reject early with `AttestryError` if
137
+ * the caller's signal aborts. Without the signal hook, `await new Promise
138
+ * (r => setTimeout(r, ms))` would block the abort path until the timer
139
+ * fires — defeating the purpose of cancellation.
140
+ *
141
+ * Pre-aborted signal rejects synchronously (well, after one microtask)
142
+ * — symmetric to transport.request's pre-abort guard.
143
+ *
144
+ * Cleanup invariant: the abort listener is removed in BOTH paths
145
+ * (timer-fires-first AND abort-fires-first). Without removal on the
146
+ * timer path, a long-lived caller signal would accumulate listeners
147
+ * across many retries — small leak per call but real, and EventTarget
148
+ * has no built-in cap.
149
+ */
150
+ export async function sleepWithSignal(ms, signal) {
151
+ if (signal?.aborted) {
152
+ throw new AttestryError("request aborted by caller", {
153
+ cause: signal.reason,
154
+ });
155
+ }
156
+ // Zero / negative delay: resolve immediately on next microtask so callers
157
+ // don't synchronously starve the event loop. (Hostile rng can produce
158
+ // negative — the cap also handles NaN by failing the comparison and
159
+ // falling to setTimeout, where Node's setTimeout(NaN) coerces to 1ms.)
160
+ if (ms <= 0) {
161
+ await Promise.resolve();
162
+ return;
163
+ }
164
+ await new Promise((resolve, reject) => {
165
+ let timer;
166
+ const onAbort = () => {
167
+ clearTimeout(timer);
168
+ reject(new AttestryError("request aborted by caller", {
169
+ cause: signal.reason,
170
+ }));
171
+ };
172
+ timer = setTimeout(() => {
173
+ // Remove the listener BEFORE resolving — symmetric cleanup with
174
+ // the abort path's clearTimeout. Hostile-round H1 fix.
175
+ if (signal !== undefined) {
176
+ signal.removeEventListener("abort", onAbort);
177
+ }
178
+ resolve();
179
+ }, ms);
180
+ if (signal !== undefined) {
181
+ signal.addEventListener("abort", onAbort, { once: true });
182
+ }
183
+ });
184
+ }
185
+ /**
186
+ * Internal — extract the `Retry-After` header from an AttestryAPIError's
187
+ * details, when present. The transport's error path stores the response
188
+ * body in `details`; the response headers aren't currently captured. We
189
+ * special-case Retry-After by stashing it under a private key when the
190
+ * request fires.
191
+ *
192
+ * For the build round, we extract from a "_retryAfter" property on the
193
+ * AttestryAPIError instance set by the transport. Tracked in the build
194
+ * doc as a deliberate departure from the existing AttestryAPIError
195
+ * shape — we add ONE non-enumerable property rather than restructuring
196
+ * the public details.
197
+ */
198
+ function extractRetryAfter(err) {
199
+ const value = err._retryAfter;
200
+ return typeof value === "string" ? value : null;
201
+ }
202
+ /**
203
+ * Internal — attach a `Retry-After` header value to an AttestryAPIError
204
+ * for retry-delay computation. Set as a non-enumerable property so it
205
+ * doesn't show up in JSON.stringify or in user-facing console.log.
206
+ */
207
+ export function attachRetryAfter(err, headerValue) {
208
+ if (headerValue === null)
209
+ return;
210
+ Object.defineProperty(err, "_retryAfter", {
211
+ value: headerValue,
212
+ enumerable: false,
213
+ writable: false,
214
+ configurable: false,
215
+ });
216
+ }
217
+ /**
218
+ * True iff the error is a retryable HTTP status. Today: 429 only. See
219
+ * file header for rationale.
220
+ */
221
+ export function isRetryableError(err) {
222
+ return err instanceof AttestryAPIError && err.status === 429;
223
+ }
224
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * One parsed SSE frame. `data` is a string (consumer parses JSON if
3
+ * applicable). `id` and `event` are present iff the frame had those
4
+ * fields. Empty frames (only whitespace, or only comments) are NOT
5
+ * yielded — comments / heartbeats are filtered at the parser level.
6
+ */
7
+ export interface SSEFrame {
8
+ /** Value of the `id:` field if present; else undefined. */
9
+ id?: string;
10
+ /** Value of the `event:` field if present; else undefined. */
11
+ event?: string;
12
+ /** Concatenated `data:` lines, joined by `\n`. May be empty string. */
13
+ data: string;
14
+ }
15
+ /**
16
+ * Async generator: reads from a stream of UTF-8-encoded SSE bytes and
17
+ * yields each complete frame. Ends when the underlying reader signals
18
+ * `done`. Defensive: a caller that breaks early out of the for-await
19
+ * loop leaves the reader open — call `reader.cancel()` from your finally
20
+ * block (or use the `parseSSEResponse` wrapper below which handles it).
21
+ *
22
+ * @throws AttestryError if a frame line is malformed past recovery (no
23
+ * such case in the kernel's emitter today; future-proofing); OR
24
+ * if the buffer exceeds `maxBufferBytes` (defense against
25
+ * unbounded-frame DoS — hostile-review H3).
26
+ */
27
+ export declare function parseSSE(reader: ReadableStreamDefaultReader<Uint8Array>, options?: {
28
+ maxBufferBytes?: number;
29
+ }): AsyncGenerator<SSEFrame, void, unknown>;
30
+ /**
31
+ * Convenience wrapper around `parseSSE` that accepts a `Response`,
32
+ * derives the reader, and ALWAYS calls `reader.cancel()` in a `finally`
33
+ * block — including when a caller breaks out of the for-await loop
34
+ * early. Without this, an early `break` leaks the underlying connection.
35
+ *
36
+ * Resources should call this rather than `parseSSE` directly.
37
+ */
38
+ export declare function parseSSEResponse(response: Response, options?: {
39
+ maxBufferBytes?: number;
40
+ }): AsyncGenerator<SSEFrame, void, unknown>;
41
+ /**
42
+ * One block of SSE text (delimited by blank line) → a parsed frame, or
43
+ * `null` if the block was nothing but comments / whitespace.
44
+ *
45
+ * Per spec:
46
+ * - Lines beginning with `:` are comments, ignored.
47
+ * - Otherwise split on first `:` into `field` + `value`.
48
+ * - If `value` starts with U+0020 SPACE, remove ONE leading space.
49
+ * - Multiple `data:` lines accumulate, joined by `\n`.
50
+ * - Field names other than `id`, `event`, `data`, `retry` are ignored.
51
+ */
52
+ declare function parseFrameBlock(block: string): SSEFrame | null;
53
+ /**
54
+ * Parse a `data:` payload as JSON. Throws `AttestryError` (with the
55
+ * underlying error as `cause`) if the payload isn't valid JSON. Resources
56
+ * call this when the wire shape is documented as JSON-encoded.
57
+ */
58
+ export declare function parseSSEData<T>(data: string): T;
59
+ export declare const __test__: {
60
+ FRAME_BOUNDARY: RegExp;
61
+ parseFrameBlock: typeof parseFrameBlock;
62
+ };
63
+ export {};
64
+ //# sourceMappingURL=sse-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-parser.d.ts","sourceRoot":"","sources":["../src/sse-parser.ts"],"names":[],"mappings":"AA2BA;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;CACd;AAeD;;;;;;;;;;;GAWG;AACH,wBAAuB,QAAQ,CAC7B,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,EAC/C,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CA6EzC;AAED;;;;;;;GAOG;AACH,wBAAuB,gBAAgB,CACrC,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAmBzC;AAID;;;;;;;;;;GAUG;AACH,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAsEvD;AAQD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAc/C;AAGD,eAAO,MAAM,QAAQ;;;CAGpB,CAAC"}