@astrale-os/kernel-client 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.
Files changed (257) hide show
  1. package/dist/client/batch.d.ts +26 -0
  2. package/dist/client/batch.d.ts.map +1 -0
  3. package/dist/client/batch.js +8 -0
  4. package/dist/client/batch.js.map +1 -0
  5. package/dist/client/bound.d.ts +27 -0
  6. package/dist/client/bound.d.ts.map +1 -0
  7. package/dist/client/bound.js +14 -0
  8. package/dist/client/bound.js.map +1 -0
  9. package/dist/client/client.d.ts +93 -0
  10. package/dist/client/client.d.ts.map +1 -0
  11. package/dist/client/client.js +393 -0
  12. package/dist/client/client.js.map +1 -0
  13. package/dist/client/config.d.ts +112 -0
  14. package/dist/client/config.d.ts.map +1 -0
  15. package/dist/client/config.js +10 -0
  16. package/dist/client/config.js.map +1 -0
  17. package/dist/client/fn-map.d.ts +61 -0
  18. package/dist/client/fn-map.d.ts.map +1 -0
  19. package/dist/client/fn-map.js +2 -0
  20. package/dist/client/fn-map.js.map +1 -0
  21. package/dist/client/freeze.d.ts +32 -0
  22. package/dist/client/freeze.d.ts.map +1 -0
  23. package/dist/client/freeze.js +42 -0
  24. package/dist/client/freeze.js.map +1 -0
  25. package/dist/client/hooks.d.ts +49 -0
  26. package/dist/client/hooks.d.ts.map +1 -0
  27. package/dist/client/hooks.js +2 -0
  28. package/dist/client/hooks.js.map +1 -0
  29. package/dist/client/index.d.ts +7 -0
  30. package/dist/client/index.d.ts.map +1 -0
  31. package/dist/client/index.js +2 -0
  32. package/dist/client/index.js.map +1 -0
  33. package/dist/delegation/cache.d.ts +133 -0
  34. package/dist/delegation/cache.d.ts.map +1 -0
  35. package/dist/delegation/cache.js +258 -0
  36. package/dist/delegation/cache.js.map +1 -0
  37. package/dist/delegation/errors.d.ts +44 -0
  38. package/dist/delegation/errors.d.ts.map +1 -0
  39. package/dist/delegation/errors.js +62 -0
  40. package/dist/delegation/errors.js.map +1 -0
  41. package/dist/delegation/index.d.ts +6 -0
  42. package/dist/delegation/index.d.ts.map +1 -0
  43. package/dist/delegation/index.js +4 -0
  44. package/dist/delegation/index.js.map +1 -0
  45. package/dist/delegation/policy.d.ts +175 -0
  46. package/dist/delegation/policy.d.ts.map +1 -0
  47. package/dist/delegation/policy.js +109 -0
  48. package/dist/delegation/policy.js.map +1 -0
  49. package/dist/errors/errors.d.ts +103 -0
  50. package/dist/errors/errors.d.ts.map +1 -0
  51. package/dist/errors/errors.js +170 -0
  52. package/dist/errors/errors.js.map +1 -0
  53. package/dist/errors/index.d.ts +4 -0
  54. package/dist/errors/index.d.ts.map +1 -0
  55. package/dist/errors/index.js +3 -0
  56. package/dist/errors/index.js.map +1 -0
  57. package/dist/errors/session-error.d.ts +21 -0
  58. package/dist/errors/session-error.d.ts.map +1 -0
  59. package/dist/errors/session-error.js +25 -0
  60. package/dist/errors/session-error.js.map +1 -0
  61. package/dist/index.d.ts +17 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +10 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/pacer/batcher.d.ts +11 -0
  66. package/dist/pacer/batcher.d.ts.map +1 -0
  67. package/dist/pacer/batcher.js +15 -0
  68. package/dist/pacer/batcher.js.map +1 -0
  69. package/dist/pacer/defaults.d.ts +18 -0
  70. package/dist/pacer/defaults.d.ts.map +1 -0
  71. package/dist/pacer/defaults.js +18 -0
  72. package/dist/pacer/defaults.js.map +1 -0
  73. package/dist/pacer/index.d.ts +10 -0
  74. package/dist/pacer/index.d.ts.map +1 -0
  75. package/dist/pacer/index.js +11 -0
  76. package/dist/pacer/index.js.map +1 -0
  77. package/dist/pacer/queue.d.ts +11 -0
  78. package/dist/pacer/queue.d.ts.map +1 -0
  79. package/dist/pacer/queue.js +15 -0
  80. package/dist/pacer/queue.js.map +1 -0
  81. package/dist/pacer/rate-limiter.d.ts +11 -0
  82. package/dist/pacer/rate-limiter.d.ts.map +1 -0
  83. package/dist/pacer/rate-limiter.js +15 -0
  84. package/dist/pacer/rate-limiter.js.map +1 -0
  85. package/dist/pacer/retry.d.ts +14 -0
  86. package/dist/pacer/retry.d.ts.map +1 -0
  87. package/dist/pacer/retry.js +50 -0
  88. package/dist/pacer/retry.js.map +1 -0
  89. package/dist/persistence/index.d.ts +3 -0
  90. package/dist/persistence/index.d.ts.map +1 -0
  91. package/dist/persistence/index.js +2 -0
  92. package/dist/persistence/index.js.map +1 -0
  93. package/dist/persistence/persistence.d.ts +52 -0
  94. package/dist/persistence/persistence.d.ts.map +1 -0
  95. package/dist/persistence/persistence.js +32 -0
  96. package/dist/persistence/persistence.js.map +1 -0
  97. package/dist/pool/errors.d.ts +13 -0
  98. package/dist/pool/errors.d.ts.map +1 -0
  99. package/dist/pool/errors.js +16 -0
  100. package/dist/pool/errors.js.map +1 -0
  101. package/dist/pool/index.d.ts +4 -0
  102. package/dist/pool/index.d.ts.map +1 -0
  103. package/dist/pool/index.js +3 -0
  104. package/dist/pool/index.js.map +1 -0
  105. package/dist/pool/pool.d.ts +63 -0
  106. package/dist/pool/pool.d.ts.map +1 -0
  107. package/dist/pool/pool.js +87 -0
  108. package/dist/pool/pool.js.map +1 -0
  109. package/dist/redirect/errors.d.ts +45 -0
  110. package/dist/redirect/errors.d.ts.map +1 -0
  111. package/dist/redirect/errors.js +52 -0
  112. package/dist/redirect/errors.js.map +1 -0
  113. package/dist/redirect/index.d.ts +4 -0
  114. package/dist/redirect/index.d.ts.map +1 -0
  115. package/dist/redirect/index.js +3 -0
  116. package/dist/redirect/index.js.map +1 -0
  117. package/dist/redirect/policy.d.ts +79 -0
  118. package/dist/redirect/policy.d.ts.map +1 -0
  119. package/dist/redirect/policy.js +69 -0
  120. package/dist/redirect/policy.js.map +1 -0
  121. package/dist/schema/call-args.d.ts +6 -0
  122. package/dist/schema/call-args.d.ts.map +1 -0
  123. package/dist/schema/call-args.js +21 -0
  124. package/dist/schema/call-args.js.map +1 -0
  125. package/dist/schema/class-proxy.d.ts +8 -0
  126. package/dist/schema/class-proxy.d.ts.map +1 -0
  127. package/dist/schema/class-proxy.js +38 -0
  128. package/dist/schema/class-proxy.js.map +1 -0
  129. package/dist/schema/extract.d.ts +9 -0
  130. package/dist/schema/extract.d.ts.map +1 -0
  131. package/dist/schema/extract.js +16 -0
  132. package/dist/schema/extract.js.map +1 -0
  133. package/dist/schema/from-entries.d.ts +12 -0
  134. package/dist/schema/from-entries.d.ts.map +1 -0
  135. package/dist/schema/from-entries.js +39 -0
  136. package/dist/schema/from-entries.js.map +1 -0
  137. package/dist/schema/index.d.ts +11 -0
  138. package/dist/schema/index.d.ts.map +1 -0
  139. package/dist/schema/index.js +9 -0
  140. package/dist/schema/index.js.map +1 -0
  141. package/dist/schema/node-proxy.d.ts +9 -0
  142. package/dist/schema/node-proxy.d.ts.map +1 -0
  143. package/dist/schema/node-proxy.js +32 -0
  144. package/dist/schema/node-proxy.js.map +1 -0
  145. package/dist/schema/proxy-types.d.ts +112 -0
  146. package/dist/schema/proxy-types.d.ts.map +1 -0
  147. package/dist/schema/proxy-types.js +2 -0
  148. package/dist/schema/proxy-types.js.map +1 -0
  149. package/dist/schema/registry.d.ts +51 -0
  150. package/dist/schema/registry.d.ts.map +1 -0
  151. package/dist/schema/registry.js +111 -0
  152. package/dist/schema/registry.js.map +1 -0
  153. package/dist/schema/resolve.d.ts +26 -0
  154. package/dist/schema/resolve.d.ts.map +1 -0
  155. package/dist/schema/resolve.js +27 -0
  156. package/dist/schema/resolve.js.map +1 -0
  157. package/dist/schema/typed-client.d.ts +10 -0
  158. package/dist/schema/typed-client.d.ts.map +1 -0
  159. package/dist/schema/typed-client.js +26 -0
  160. package/dist/schema/typed-client.js.map +1 -0
  161. package/dist/schema/types.d.ts +9 -0
  162. package/dist/schema/types.d.ts.map +1 -0
  163. package/dist/schema/types.js +2 -0
  164. package/dist/schema/types.js.map +1 -0
  165. package/dist/session/bound.d.ts +11 -0
  166. package/dist/session/bound.d.ts.map +1 -0
  167. package/dist/session/bound.js +24 -0
  168. package/dist/session/bound.js.map +1 -0
  169. package/dist/session/client-session.d.ts +61 -0
  170. package/dist/session/client-session.d.ts.map +1 -0
  171. package/dist/session/client-session.js +635 -0
  172. package/dist/session/client-session.js.map +1 -0
  173. package/dist/session/config.d.ts +157 -0
  174. package/dist/session/config.d.ts.map +1 -0
  175. package/dist/session/config.js +2 -0
  176. package/dist/session/config.js.map +1 -0
  177. package/dist/session/errors/index.d.ts +6 -0
  178. package/dist/session/errors/index.d.ts.map +1 -0
  179. package/dist/session/errors/index.js +8 -0
  180. package/dist/session/errors/index.js.map +1 -0
  181. package/dist/session/errors/session-errors.d.ts +52 -0
  182. package/dist/session/errors/session-errors.d.ts.map +1 -0
  183. package/dist/session/errors/session-errors.js +70 -0
  184. package/dist/session/errors/session-errors.js.map +1 -0
  185. package/dist/session/forward.d.ts +14 -0
  186. package/dist/session/forward.d.ts.map +1 -0
  187. package/dist/session/forward.js +44 -0
  188. package/dist/session/forward.js.map +1 -0
  189. package/dist/session/helpers.d.ts +23 -0
  190. package/dist/session/helpers.d.ts.map +1 -0
  191. package/dist/session/helpers.js +56 -0
  192. package/dist/session/helpers.js.map +1 -0
  193. package/dist/session/hooks.d.ts +140 -0
  194. package/dist/session/hooks.d.ts.map +1 -0
  195. package/dist/session/hooks.js +2 -0
  196. package/dist/session/hooks.js.map +1 -0
  197. package/dist/session/index.d.ts +6 -0
  198. package/dist/session/index.d.ts.map +1 -0
  199. package/dist/session/index.js +3 -0
  200. package/dist/session/index.js.map +1 -0
  201. package/dist/session/types.d.ts +38 -0
  202. package/dist/session/types.d.ts.map +1 -0
  203. package/dist/session/types.js +2 -0
  204. package/dist/session/types.js.map +1 -0
  205. package/dist/transport/binary.d.ts +15 -0
  206. package/dist/transport/binary.d.ts.map +1 -0
  207. package/dist/transport/binary.js +2 -0
  208. package/dist/transport/binary.js.map +1 -0
  209. package/dist/transport/contract.d.ts +58 -0
  210. package/dist/transport/contract.d.ts.map +1 -0
  211. package/dist/transport/contract.js +11 -0
  212. package/dist/transport/contract.js.map +1 -0
  213. package/dist/transport/fetch.d.ts +28 -0
  214. package/dist/transport/fetch.d.ts.map +1 -0
  215. package/dist/transport/fetch.js +74 -0
  216. package/dist/transport/fetch.js.map +1 -0
  217. package/dist/transport/http-envelope.d.ts +49 -0
  218. package/dist/transport/http-envelope.d.ts.map +1 -0
  219. package/dist/transport/http-envelope.js +405 -0
  220. package/dist/transport/http-envelope.js.map +1 -0
  221. package/dist/transport/http-routed.d.ts +61 -0
  222. package/dist/transport/http-routed.d.ts.map +1 -0
  223. package/dist/transport/http-routed.js +409 -0
  224. package/dist/transport/http-routed.js.map +1 -0
  225. package/dist/transport/index.d.ts +8 -0
  226. package/dist/transport/index.d.ts.map +1 -0
  227. package/dist/transport/index.js +6 -0
  228. package/dist/transport/index.js.map +1 -0
  229. package/dist/transport/request-id.d.ts +9 -0
  230. package/dist/transport/request-id.d.ts.map +1 -0
  231. package/dist/transport/request-id.js +12 -0
  232. package/dist/transport/request-id.js.map +1 -0
  233. package/dist/transport/ws-envelope.d.ts +74 -0
  234. package/dist/transport/ws-envelope.d.ts.map +1 -0
  235. package/dist/transport/ws-envelope.js +560 -0
  236. package/dist/transport/ws-envelope.js.map +1 -0
  237. package/dist/util/race-signal.d.ts +12 -0
  238. package/dist/util/race-signal.d.ts.map +1 -0
  239. package/dist/util/race-signal.js +34 -0
  240. package/dist/util/race-signal.js.map +1 -0
  241. package/dist/wire/controller.d.ts +38 -0
  242. package/dist/wire/controller.d.ts.map +1 -0
  243. package/dist/wire/controller.js +38 -0
  244. package/dist/wire/controller.js.map +1 -0
  245. package/dist/wire/index.d.ts +7 -0
  246. package/dist/wire/index.d.ts.map +1 -0
  247. package/dist/wire/index.js +4 -0
  248. package/dist/wire/index.js.map +1 -0
  249. package/dist/wire/meta.d.ts +81 -0
  250. package/dist/wire/meta.d.ts.map +1 -0
  251. package/dist/wire/meta.js +44 -0
  252. package/dist/wire/meta.js.map +1 -0
  253. package/dist/wire/sse.d.ts +67 -0
  254. package/dist/wire/sse.d.ts.map +1 -0
  255. package/dist/wire/sse.js +170 -0
  256. package/dist/wire/sse.js.map +1 -0
  257. package/package.json +104 -0
@@ -0,0 +1,109 @@
1
+ import { raceAgainstSignal } from '../util/race-signal';
2
+ // ─── Factories ───────────────────────────────────────────────────────────────
3
+ /**
4
+ * Default policy: mint for any target whose origin differs from the
5
+ * default kernel's origin, allow implicitly.
6
+ *
7
+ * `default` is the `ClientSessionConfig.default` URL; same-origin targets skip
8
+ * delegation (the base credential is valid). Used when `ClientSessionConfig`
9
+ * omits `delegationPolicy`.
10
+ */
11
+ export function allowAllDelegations(opts) {
12
+ return { audienceFor: originAudienceFor(opts.default) };
13
+ }
14
+ /**
15
+ * Allowlist: only mint for audiences `allow` returns true for. Matches
16
+ * `RedirectPolicy`'s `allowlistPolicy` shape for symmetry.
17
+ *
18
+ * `delegation`, when supplied, is the expression applied to every mint
19
+ * this policy produces; per-call overrides via `ClientSessionCallOptions.delegation`
20
+ * still win. Same for `attestation`.
21
+ */
22
+ export function allowlistDelegations(opts) {
23
+ return {
24
+ audienceFor: originAudienceFor(opts.default),
25
+ ...(opts.delegation !== undefined ? { delegationFor: () => opts.delegation } : {}),
26
+ ...(opts.attestation !== undefined ? { attestationFor: () => opts.attestation } : {}),
27
+ decide: (audience) => {
28
+ if (opts.allow(audience))
29
+ return { allow: true };
30
+ return { allow: false, reason: `audience not in allowlist: ${audience}` };
31
+ },
32
+ };
33
+ }
34
+ /**
35
+ * UI prompt: ask the consumer for each new audience. Races `onPrompt`
36
+ * against the caller's `signal` so aborting the top-level call cancels
37
+ * the prompt.
38
+ *
39
+ * `allow` is a fast-path predicate (pre-approved audiences). Returning
40
+ * `false` from `allow` falls through to `onPrompt`.
41
+ *
42
+ * `onPrompt` receives the full mint shape (audience + delegation +
43
+ * attestation + ctx) so the UI can render what's actually being minted,
44
+ * not just the audience. This matters when the policy narrows by method:
45
+ * the user should see "write to partner kernel as self with READ | WRITE
46
+ * on nodes [X, Y]," not just "trust partner kernel."
47
+ */
48
+ export function promptDelegations(opts) {
49
+ return {
50
+ audienceFor: originAudienceFor(opts.default),
51
+ ...(opts.delegation !== undefined ? { delegationFor: () => opts.delegation } : {}),
52
+ ...(opts.attestation !== undefined ? { attestationFor: () => opts.attestation } : {}),
53
+ decide: async (audience, delegation, attestation, ctx, signal) => {
54
+ if (opts.allow?.(audience))
55
+ return { allow: true };
56
+ // Short-circuit a pre-aborted signal before opening the prompt —
57
+ // otherwise the consumer's UI flashes for a call the caller already cancelled.
58
+ if (signal?.aborted)
59
+ throw signal.reason instanceof Error ? signal.reason : new Error('aborted');
60
+ const accepted = await raceAgainstSignal(opts.onPrompt(audience, delegation, attestation, ctx), signal);
61
+ if (accepted)
62
+ return { allow: true };
63
+ return { allow: false, reason: `consumer declined delegation for "${audience}"` };
64
+ },
65
+ };
66
+ }
67
+ // ─── Sugar — no new capability, just the common self+scope shape ─────────────
68
+ /**
69
+ * Build `{ kind: 'scope', scopes, expr: { kind: 'identity', self: true } }`
70
+ * — a self-delegation narrowed to the given scope set. This is the shape
71
+ * that was the *entire* delegation surface in an earlier draft of the
72
+ * spec, now expressible as one case of the full `UnresolvedIdentityExpr`
73
+ * algebra.
74
+ *
75
+ * Use for the common "vary perms by method" pattern. Reach for the raw
76
+ * `UnresolvedIdentityExpr` constructors when composing identities
77
+ * (union/intersect/exclude) or chaining credentials.
78
+ */
79
+ export function scopedSelf(scopes) {
80
+ return {
81
+ kind: 'scope',
82
+ scopes: [...scopes],
83
+ expr: { kind: 'identity', self: true },
84
+ };
85
+ }
86
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
87
+ /**
88
+ * Build an `audienceFor` function that returns the target's origin when
89
+ * it differs from the default kernel's origin, `undefined` otherwise.
90
+ * Shared across every factory — origin-compare is the default heuristic.
91
+ */
92
+ function originAudienceFor(defaultUrl) {
93
+ const defaultOrigin = safeOrigin(defaultUrl);
94
+ return (target) => {
95
+ const origin = safeOrigin(target);
96
+ if (origin === undefined || origin === defaultOrigin)
97
+ return undefined;
98
+ return origin;
99
+ };
100
+ }
101
+ function safeOrigin(url) {
102
+ try {
103
+ return new URL(url).origin;
104
+ }
105
+ catch {
106
+ return undefined;
107
+ }
108
+ }
109
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/delegation/policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import type { CallRedirection, FieldError, InvariantError } from '@astrale-os/kernel-api';
2
+ import type { TransportName, WireMeta } from '../wire/meta';
3
+ /**
4
+ * Context attached to every `WebOSError` thrown by the client. An
5
+ * orchestrator reads this to retry on a different client, inspect a
6
+ * redirection, read a step-up challenge, or correlate logs. The typed
7
+ * fields `redirection` and `challenge` carry the same payloads the
8
+ * corresponding thrown-error subclasses expose as structured properties;
9
+ * the client never dumps raw server `data` here.
10
+ *
11
+ * Populated once at the transport → error boundary. `url` is the URL
12
+ * *actually dispatched to* — when the orchestrator (future layer D)
13
+ * follows a redirect, each hop's error carries that hop's `url`.
14
+ */
15
+ export type ClientErrorDetails = {
16
+ method: string;
17
+ params: unknown;
18
+ url: string;
19
+ transport: TransportName;
20
+ correlationId?: string;
21
+ meta?: WireMeta;
22
+ redirection?: CallRedirection;
23
+ };
24
+ export declare class WebOSError extends Error {
25
+ details?: ClientErrorDetails;
26
+ constructor(message: string, options?: ErrorOptions);
27
+ }
28
+ export declare class ConnectionError extends WebOSError {
29
+ constructor(message: string, options?: ErrorOptions);
30
+ }
31
+ export declare class DisconnectedError extends WebOSError {
32
+ constructor(message?: string);
33
+ }
34
+ export declare class TimeoutError extends WebOSError {
35
+ readonly requestId: string;
36
+ readonly timeoutMs: number;
37
+ constructor(requestId: string, timeoutMs: number);
38
+ }
39
+ /**
40
+ * Caller forced a transport that the resolved method cannot use (e.g.
41
+ * an envelope transport on a routed-only method, or `routed` on a
42
+ * method without `binding.route`). Thrown synchronously before wire
43
+ * dispatch.
44
+ */
45
+ export declare class InvalidTransportError extends WebOSError {
46
+ constructor(message: string);
47
+ }
48
+ /**
49
+ * A transport was asked to serve an operation it does not express —
50
+ * `batch` on a routed transport, duplex binary stream on envelope, etc.
51
+ */
52
+ export declare class UnsupportedTransportError extends WebOSError {
53
+ constructor(message: string);
54
+ }
55
+ export type AuthReason = 'missing' | 'invalid' | 'expired';
56
+ export declare class AuthenticationError extends WebOSError {
57
+ readonly reason: AuthReason;
58
+ constructor(message: string, reason: AuthReason);
59
+ }
60
+ export declare class PermissionDeniedError extends WebOSError {
61
+ constructor(message?: string);
62
+ }
63
+ export declare class KernelError extends WebOSError {
64
+ readonly code: number;
65
+ readonly type: string;
66
+ readonly data?: unknown;
67
+ constructor(message: string, code: number, type?: string, data?: unknown);
68
+ }
69
+ /**
70
+ * Validation error. `errors` holds the server-reported `FieldError[]`,
71
+ * orthogonal to the inherited `WebOSError.details` (which carries
72
+ * invocation context — method/url/transport/correlationId). Two axes,
73
+ * two fields; neither overwrites the other.
74
+ */
75
+ export declare class ValidationError extends KernelError {
76
+ readonly errors: FieldError[];
77
+ constructor(message: string, errors: FieldError[]);
78
+ getFieldError(field: string): FieldError | undefined;
79
+ hasFieldError(field: string): boolean;
80
+ }
81
+ export declare class InvariantViolationError extends KernelError {
82
+ readonly errors: InvariantError[];
83
+ constructor(message: string, errors: InvariantError[]);
84
+ getError(code: string): InvariantError | undefined;
85
+ hasError(code: string): boolean;
86
+ }
87
+ export declare class NotFoundError extends WebOSError {
88
+ constructor(message?: string);
89
+ }
90
+ /**
91
+ * Map a `{ code, message, data }` envelope error to a typed `WebOSError`.
92
+ * The caller is responsible for attaching `ClientErrorDetails` via
93
+ * `withDetails` after mapping.
94
+ */
95
+ export declare function mapServerError(code: number, message: string, data?: unknown): WebOSError;
96
+ /**
97
+ * Attach a full `ClientErrorDetails` record to an error. Typed to require
98
+ * completeness — partial calls fail at compile time — so every thrown
99
+ * error surfaces the invariant set from spec §9.5. Call exactly once per
100
+ * error at the transport → client boundary.
101
+ */
102
+ export declare function withDetails<E extends WebOSError>(error: E, details: ClientErrorDetails): E;
103
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ import { KERNEL_ERROR_CODES } from '@astrale-os/kernel-api';
2
+ // ─── Base ───────────────────────────────────────────────
3
+ export class WebOSError extends Error {
4
+ details;
5
+ constructor(message, options) {
6
+ super(message, options);
7
+ this.name = 'WebOSError';
8
+ }
9
+ }
10
+ // ─── Transport ──────────────────────────────────────────
11
+ export class ConnectionError extends WebOSError {
12
+ constructor(message, options) {
13
+ super(message, options);
14
+ this.name = 'ConnectionError';
15
+ }
16
+ }
17
+ export class DisconnectedError extends WebOSError {
18
+ constructor(message = 'Disconnected while request was pending') {
19
+ super(message);
20
+ this.name = 'DisconnectedError';
21
+ }
22
+ }
23
+ export class TimeoutError extends WebOSError {
24
+ requestId;
25
+ timeoutMs;
26
+ constructor(requestId, timeoutMs) {
27
+ super(`Request ${requestId} timed out after ${timeoutMs}ms`);
28
+ this.requestId = requestId;
29
+ this.timeoutMs = timeoutMs;
30
+ this.name = 'TimeoutError';
31
+ }
32
+ }
33
+ /**
34
+ * Caller forced a transport that the resolved method cannot use (e.g.
35
+ * an envelope transport on a routed-only method, or `routed` on a
36
+ * method without `binding.route`). Thrown synchronously before wire
37
+ * dispatch.
38
+ */
39
+ export class InvalidTransportError extends WebOSError {
40
+ constructor(message) {
41
+ super(message);
42
+ this.name = 'InvalidTransportError';
43
+ }
44
+ }
45
+ /**
46
+ * A transport was asked to serve an operation it does not express —
47
+ * `batch` on a routed transport, duplex binary stream on envelope, etc.
48
+ */
49
+ export class UnsupportedTransportError extends WebOSError {
50
+ constructor(message) {
51
+ super(message);
52
+ this.name = 'UnsupportedTransportError';
53
+ }
54
+ }
55
+ export class AuthenticationError extends WebOSError {
56
+ reason;
57
+ constructor(message, reason) {
58
+ super(message);
59
+ this.reason = reason;
60
+ this.name = 'AuthenticationError';
61
+ }
62
+ }
63
+ export class PermissionDeniedError extends WebOSError {
64
+ constructor(message = 'Permission denied') {
65
+ super(message);
66
+ this.name = 'PermissionDeniedError';
67
+ }
68
+ }
69
+ // ─── Kernel ─────────────────────────────────────────────
70
+ export class KernelError extends WebOSError {
71
+ code;
72
+ type;
73
+ data;
74
+ constructor(message, code, type = 'KERNEL_ERROR', data) {
75
+ super(message);
76
+ this.code = code;
77
+ this.type = type;
78
+ this.data = data;
79
+ this.name = 'KernelError';
80
+ }
81
+ }
82
+ /**
83
+ * Validation error. `errors` holds the server-reported `FieldError[]`,
84
+ * orthogonal to the inherited `WebOSError.details` (which carries
85
+ * invocation context — method/url/transport/correlationId). Two axes,
86
+ * two fields; neither overwrites the other.
87
+ */
88
+ export class ValidationError extends KernelError {
89
+ errors;
90
+ constructor(message, errors) {
91
+ super(message, KERNEL_ERROR_CODES.VALIDATION_ERROR, 'VALIDATION_ERROR', errors);
92
+ this.name = 'ValidationError';
93
+ this.errors = errors;
94
+ }
95
+ getFieldError(field) {
96
+ return this.errors.find((e) => e.path.includes(field));
97
+ }
98
+ hasFieldError(field) {
99
+ return this.errors.some((e) => e.path.includes(field));
100
+ }
101
+ }
102
+ export class InvariantViolationError extends KernelError {
103
+ errors;
104
+ constructor(message, errors) {
105
+ super(message, KERNEL_ERROR_CODES.INVARIANT_VIOLATION, 'INVARIANT_VIOLATION', errors);
106
+ this.name = 'InvariantViolationError';
107
+ this.errors = errors;
108
+ }
109
+ getError(code) {
110
+ return this.errors.find((e) => e.code === code);
111
+ }
112
+ hasError(code) {
113
+ return this.errors.some((e) => e.code === code);
114
+ }
115
+ }
116
+ export class NotFoundError extends WebOSError {
117
+ constructor(message = 'Not found') {
118
+ super(message);
119
+ this.name = 'NotFoundError';
120
+ }
121
+ }
122
+ // ─── Error mapping ──────────────────────────────────────
123
+ const AUTH_REASON_BY_CODE = {
124
+ [KERNEL_ERROR_CODES.AUTH_MISSING]: 'missing',
125
+ [KERNEL_ERROR_CODES.AUTH_INVALID]: 'invalid',
126
+ [KERNEL_ERROR_CODES.AUTH_EXPIRED]: 'expired',
127
+ };
128
+ /**
129
+ * Map a `{ code, message, data }` envelope error to a typed `WebOSError`.
130
+ * The caller is responsible for attaching `ClientErrorDetails` via
131
+ * `withDetails` after mapping.
132
+ */
133
+ export function mapServerError(code, message, data) {
134
+ const authReason = AUTH_REASON_BY_CODE[code];
135
+ if (authReason)
136
+ return new AuthenticationError(message, authReason);
137
+ if (code === KERNEL_ERROR_CODES.PERMISSION_DENIED)
138
+ return new PermissionDeniedError(message);
139
+ if (code === KERNEL_ERROR_CODES.NOT_FOUND || code === KERNEL_ERROR_CODES.METHOD_NOT_FOUND) {
140
+ return new NotFoundError(message);
141
+ }
142
+ if (code === KERNEL_ERROR_CODES.VALIDATION_ERROR) {
143
+ return new ValidationError(message, readErrors(data));
144
+ }
145
+ if (code === KERNEL_ERROR_CODES.INVARIANT_VIOLATION) {
146
+ return new InvariantViolationError(message, readErrors(data));
147
+ }
148
+ return new KernelError(message, code, 'KERNEL_ERROR', data);
149
+ }
150
+ function readErrors(data) {
151
+ if (Array.isArray(data))
152
+ return data;
153
+ if (data && typeof data === 'object') {
154
+ const errs = data.errors;
155
+ if (Array.isArray(errs))
156
+ return errs;
157
+ }
158
+ return [];
159
+ }
160
+ /**
161
+ * Attach a full `ClientErrorDetails` record to an error. Typed to require
162
+ * completeness — partial calls fail at compile time — so every thrown
163
+ * error surfaces the invariant set from spec §9.5. Call exactly once per
164
+ * error at the transport → client boundary.
165
+ */
166
+ export function withDetails(error, details) {
167
+ error.details = details;
168
+ return error;
169
+ }
170
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { AuthenticationError, ConnectionError, DisconnectedError, InvalidTransportError, InvariantViolationError, KernelError, NotFoundError, PermissionDeniedError, TimeoutError, UnsupportedTransportError, ValidationError, WebOSError, mapServerError, withDetails, } from './errors';
2
+ export type { AuthReason, ClientErrorDetails } from './errors';
3
+ export { ClientSessionError } from './session-error';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { AuthenticationError, ConnectionError, DisconnectedError, InvalidTransportError, InvariantViolationError, KernelError, NotFoundError, PermissionDeniedError, TimeoutError, UnsupportedTransportError, ValidationError, WebOSError, mapServerError, withDetails, } from './errors';
2
+ export { ClientSessionError } from './session-error';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { WebOSError } from './errors';
2
+ /**
3
+ * Base class for every error ClientSession adds on top of the wire client's
4
+ * `WebOSError` hierarchy.
5
+ *
6
+ * Instances carry a string `kind` discriminator that narrows across
7
+ * every ClientSessionError subclass — consumers can `switch (e.kind)` as a
8
+ * one-namespace alternative to chains of `instanceof`. The choice of
9
+ * `kind` (not `type`) avoids ambiguity with `KernelError.type` which
10
+ * carries server-error-category strings.
11
+ *
12
+ * Lives in `@astrale-os/kernel-client/errors` (alongside `WebOSError`)
13
+ * rather than `session/errors` so that helper subpaths (`redirect`,
14
+ * `delegation`) can extend it without importing from `session/` —
15
+ * keeping the `session → helpers → errors` dep graph (§17.3) intact.
16
+ */
17
+ export declare class ClientSessionError extends WebOSError {
18
+ readonly kind: string;
19
+ constructor(message: string, kind: string, options?: ErrorOptions);
20
+ }
21
+ //# sourceMappingURL=session-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-error.d.ts","sourceRoot":"","sources":["../../src/errors/session-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;aAG9B,IAAI,EAAE,MAAM;IAF9B,YACE,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,YAAY,EAIvB;CACF"}
@@ -0,0 +1,25 @@
1
+ import { WebOSError } from './errors';
2
+ /**
3
+ * Base class for every error ClientSession adds on top of the wire client's
4
+ * `WebOSError` hierarchy.
5
+ *
6
+ * Instances carry a string `kind` discriminator that narrows across
7
+ * every ClientSessionError subclass — consumers can `switch (e.kind)` as a
8
+ * one-namespace alternative to chains of `instanceof`. The choice of
9
+ * `kind` (not `type`) avoids ambiguity with `KernelError.type` which
10
+ * carries server-error-category strings.
11
+ *
12
+ * Lives in `@astrale-os/kernel-client/errors` (alongside `WebOSError`)
13
+ * rather than `session/errors` so that helper subpaths (`redirect`,
14
+ * `delegation`) can extend it without importing from `session/` —
15
+ * keeping the `session → helpers → errors` dep graph (§17.3) intact.
16
+ */
17
+ export class ClientSessionError extends WebOSError {
18
+ kind;
19
+ constructor(message, kind, options) {
20
+ super(message, options);
21
+ this.kind = kind;
22
+ this.name = 'ClientSessionError';
23
+ }
24
+ }
25
+ //# sourceMappingURL=session-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-error.js","sourceRoot":"","sources":["../../src/errors/session-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAG9B,IAAI;IAFtB,YACE,OAAe,EACC,IAAY,EAC5B,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;oBAHP,IAAI;QAIpB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ export { KernelClient } from './client/client';
2
+ export type { BoundClientView } from './client/bound';
3
+ export type { CallOptions, ClientConfig, ClientLogger, Protocol, CallTransport, } from './client/config';
4
+ export type { AfterReceiveCtx, AfterSignalCtx, BeforeSendCtx, ClientHooks, ErrorCtx, StreamFrameCtx, } from './client/hooks';
5
+ export type { BinaryFns, CallFns, FnEntry, FnMap, SendBinaryResult, SendResult, SendStreamResult, SignalFns, StreamFns, } from './client/fn-map';
6
+ export type { BatchResults, TypedBatchRequest } from './client/batch';
7
+ export type { TransportName, WireMeta, WireProtocolMeta } from './wire/meta';
8
+ export { RETRY_DEFAULTS, QUEUE_DEFAULTS, BATCH_DEFAULTS, RATE_LIMIT_DEFAULTS, kernelRetry, createQueue, createBatcher, createRateLimiter, } from './pacer';
9
+ export type { KernelRetryOptions, KernelQueueOptions, KernelBatchOptions, KernelRateLimitOptions, } from './pacer';
10
+ export { AuthenticationError, ConnectionError, DisconnectedError, InvalidTransportError, InvariantViolationError, KernelError, NotFoundError, PermissionDeniedError, TimeoutError, UnsupportedTransportError, ValidationError, WebOSError, mapServerError, withDetails, } from './errors/errors';
11
+ export type { AuthReason, ClientErrorDetails } from './errors/errors';
12
+ export { SchemaRegistry } from './schema/registry';
13
+ export { toFunctionSchemas } from './schema/from-entries';
14
+ export type { FunctionSchema } from './schema/types';
15
+ export type { ClassProxy, NodeProxy, ProxyCallOptions, SchemaTypedClient, } from './schema/proxy-types';
16
+ export type { CredentialInput } from '@astrale-os/kernel-core';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGrD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAa,GACd,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,QAAQ,EACR,cAAc,GACf,MAAM,gBAAgB,CAAA;AAGvB,YAAY,EACV,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,SAAS,GACV,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGrE,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG5E,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAChB,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,YAAY,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,sBAAsB,CAAA;AAG7B,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ // ─── Client ─────────────────────────────────────────────
2
+ export { KernelClient } from './client/client';
3
+ // ─── Pacer (retry / queue / batcher / rate-limiter) ────
4
+ export { RETRY_DEFAULTS, QUEUE_DEFAULTS, BATCH_DEFAULTS, RATE_LIMIT_DEFAULTS, kernelRetry, createQueue, createBatcher, createRateLimiter, } from './pacer';
5
+ // ─── Errors ─────────────────────────────────────────────
6
+ export { AuthenticationError, ConnectionError, DisconnectedError, InvalidTransportError, InvariantViolationError, KernelError, NotFoundError, PermissionDeniedError, TimeoutError, UnsupportedTransportError, ValidationError, WebOSError, mapServerError, withDetails, } from './errors/errors';
7
+ // ─── Schema ─────────────────────────────────────────────
8
+ export { SchemaRegistry } from './schema/registry';
9
+ export { toFunctionSchemas } from './schema/from-entries';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAqC9C,0DAA0D;AAC1D,OAAO,EACL,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,aAAa,EACb,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAQhB,2DAA2D;AAC3D,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,iBAAiB,CAAA;AAGxB,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { AsyncBatcher, type AsyncBatcherOptions } from '@tanstack/pacer';
2
+ export type KernelBatchOptions<TValue> = Omit<AsyncBatcherOptions<TValue>, 'maxSize' | 'wait'> & {
3
+ maxSize?: number;
4
+ wait?: number;
5
+ };
6
+ /**
7
+ * Create an AsyncBatcher pre-configured with kernel defaults.
8
+ * `maxSize` defaults to 50, `wait` to 16 ms (one frame).
9
+ */
10
+ export declare function createBatcher<TValue>(fn: (items: TValue[]) => Promise<unknown>, opts?: KernelBatchOptions<TValue>): AsyncBatcher<TValue>;
11
+ //# sourceMappingURL=batcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batcher.d.ts","sourceRoot":"","sources":["../../src/pacer/batcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAIxE,MAAM,MAAM,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,GAAG;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAClC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EACzC,IAAI,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAChC,YAAY,CAAC,MAAM,CAAC,CAOtB"}
@@ -0,0 +1,15 @@
1
+ import { AsyncBatcher } from '@tanstack/pacer';
2
+ import { BATCH_DEFAULTS } from './defaults';
3
+ /**
4
+ * Create an AsyncBatcher pre-configured with kernel defaults.
5
+ * `maxSize` defaults to 50, `wait` to 16 ms (one frame).
6
+ */
7
+ export function createBatcher(fn, opts) {
8
+ const { maxSize, wait, ...rest } = opts ?? {};
9
+ return new AsyncBatcher(fn, {
10
+ ...rest,
11
+ maxSize: maxSize ?? BATCH_DEFAULTS.maxSize,
12
+ wait: wait ?? BATCH_DEFAULTS.wait,
13
+ });
14
+ }
15
+ //# sourceMappingURL=batcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batcher.js","sourceRoot":"","sources":["../../src/pacer/batcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,iBAAiB,CAAA;AAExE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAO3C;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAyC,EACzC,IAAiC;IAEjC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IAC7C,OAAO,IAAI,YAAY,CAAC,EAAE,EAAE;QAC1B,GAAG,IAAI;QACP,OAAO,EAAE,OAAO,IAAI,cAAc,CAAC,OAAO;QAC1C,IAAI,EAAE,IAAI,IAAI,cAAc,CAAC,IAAI;KAClC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ export declare const RETRY_DEFAULTS: {
2
+ maxAttempts: number;
3
+ baseWait: number;
4
+ maxWait: number;
5
+ jitter: number;
6
+ };
7
+ export declare const QUEUE_DEFAULTS: {
8
+ concurrency: number;
9
+ };
10
+ export declare const BATCH_DEFAULTS: {
11
+ maxSize: number;
12
+ wait: number;
13
+ };
14
+ export declare const RATE_LIMIT_DEFAULTS: {
15
+ limit: number;
16
+ window: number;
17
+ };
18
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/pacer/defaults.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;IACzB,WAAW;IACX,QAAQ;IACR,OAAO;IACP,MAAM;CACP,CAAA;AAED,eAAO,MAAM,cAAc;IACzB,WAAW;CACZ,CAAA;AAED,eAAO,MAAM,cAAc;IACzB,OAAO;IACP,IAAI;CACL,CAAA;AAED,eAAO,MAAM,mBAAmB;IAC9B,KAAK;IACL,MAAM;CACP,CAAA"}
@@ -0,0 +1,18 @@
1
+ export const RETRY_DEFAULTS = {
2
+ maxAttempts: 3,
3
+ baseWait: 1_000,
4
+ maxWait: 30_000,
5
+ jitter: 0.2,
6
+ };
7
+ export const QUEUE_DEFAULTS = {
8
+ concurrency: 10,
9
+ };
10
+ export const BATCH_DEFAULTS = {
11
+ maxSize: 50,
12
+ wait: 16,
13
+ };
14
+ export const RATE_LIMIT_DEFAULTS = {
15
+ limit: 300,
16
+ window: 60_000,
17
+ };
18
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/pacer/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,GAAG;CACZ,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EAAE,EAAE;CAChB,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;CACT,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,MAAM;CACf,CAAA"}
@@ -0,0 +1,10 @@
1
+ export { RETRY_DEFAULTS, QUEUE_DEFAULTS, BATCH_DEFAULTS, RATE_LIMIT_DEFAULTS } from './defaults';
2
+ export { kernelRetry } from './retry';
3
+ export type { KernelRetryOptions } from './retry';
4
+ export { createQueue } from './queue';
5
+ export type { KernelQueueOptions } from './queue';
6
+ export { createBatcher } from './batcher';
7
+ export type { KernelBatchOptions } from './batcher';
8
+ export { createRateLimiter } from './rate-limiter';
9
+ export type { KernelRateLimitOptions } from './rate-limiter';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pacer/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGhG,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACrC,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -0,0 +1,11 @@
1
+ // ─── Defaults ────────────────────────────────────────────
2
+ export { RETRY_DEFAULTS, QUEUE_DEFAULTS, BATCH_DEFAULTS, RATE_LIMIT_DEFAULTS } from './defaults';
3
+ // ─── Retry ───────────────────────────────────────────────
4
+ export { kernelRetry } from './retry';
5
+ // ─── Queue ───────────────────────────────────────────────
6
+ export { createQueue } from './queue';
7
+ // ─── Batcher ─────────────────────────────────────────────
8
+ export { createBatcher } from './batcher';
9
+ // ─── Rate Limiter ────────────────────────────────────────
10
+ export { createRateLimiter } from './rate-limiter';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pacer/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEhG,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,4DAA4D;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAGrC,4DAA4D;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAGzC,4DAA4D;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA"}