@shardlink/agent-sdk 0.1.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 (143) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +129 -0
  3. package/dist/client-quick-join.d.ts +38 -0
  4. package/dist/client-quick-join.d.ts.map +1 -0
  5. package/dist/client-quick-join.js +141 -0
  6. package/dist/client-quick-join.js.map +1 -0
  7. package/dist/client.d.ts +134 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +190 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/errors.d.ts +126 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +330 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/index.d.ts +47 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +47 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/modules/a2a.d.ts +42 -0
  20. package/dist/modules/a2a.d.ts.map +1 -0
  21. package/dist/modules/a2a.js +47 -0
  22. package/dist/modules/a2a.js.map +1 -0
  23. package/dist/modules/agents.d.ts +100 -0
  24. package/dist/modules/agents.d.ts.map +1 -0
  25. package/dist/modules/agents.js +85 -0
  26. package/dist/modules/agents.js.map +1 -0
  27. package/dist/modules/auth.d.ts +49 -0
  28. package/dist/modules/auth.d.ts.map +1 -0
  29. package/dist/modules/auth.js +69 -0
  30. package/dist/modules/auth.js.map +1 -0
  31. package/dist/modules/billing.d.ts +254 -0
  32. package/dist/modules/billing.d.ts.map +1 -0
  33. package/dist/modules/billing.js +203 -0
  34. package/dist/modules/billing.js.map +1 -0
  35. package/dist/modules/clans.d.ts +73 -0
  36. package/dist/modules/clans.d.ts.map +1 -0
  37. package/dist/modules/clans.js +94 -0
  38. package/dist/modules/clans.js.map +1 -0
  39. package/dist/modules/compliance.d.ts +97 -0
  40. package/dist/modules/compliance.d.ts.map +1 -0
  41. package/dist/modules/compliance.js +227 -0
  42. package/dist/modules/compliance.js.map +1 -0
  43. package/dist/modules/cross-plane.d.ts +164 -0
  44. package/dist/modules/cross-plane.d.ts.map +1 -0
  45. package/dist/modules/cross-plane.js +195 -0
  46. package/dist/modules/cross-plane.js.map +1 -0
  47. package/dist/modules/dashboard.d.ts +130 -0
  48. package/dist/modules/dashboard.d.ts.map +1 -0
  49. package/dist/modules/dashboard.js +120 -0
  50. package/dist/modules/dashboard.js.map +1 -0
  51. package/dist/modules/degradation.d.ts +120 -0
  52. package/dist/modules/degradation.d.ts.map +1 -0
  53. package/dist/modules/degradation.js +205 -0
  54. package/dist/modules/degradation.js.map +1 -0
  55. package/dist/modules/diagnostics-checks.d.ts +32 -0
  56. package/dist/modules/diagnostics-checks.d.ts.map +1 -0
  57. package/dist/modules/diagnostics-checks.js +231 -0
  58. package/dist/modules/diagnostics-checks.js.map +1 -0
  59. package/dist/modules/diagnostics-types.d.ts +118 -0
  60. package/dist/modules/diagnostics-types.d.ts.map +1 -0
  61. package/dist/modules/diagnostics-types.js +16 -0
  62. package/dist/modules/diagnostics-types.js.map +1 -0
  63. package/dist/modules/diagnostics.d.ts +64 -0
  64. package/dist/modules/diagnostics.d.ts.map +1 -0
  65. package/dist/modules/diagnostics.js +206 -0
  66. package/dist/modules/diagnostics.js.map +1 -0
  67. package/dist/modules/discovery.d.ts +152 -0
  68. package/dist/modules/discovery.d.ts.map +1 -0
  69. package/dist/modules/discovery.js +100 -0
  70. package/dist/modules/discovery.js.map +1 -0
  71. package/dist/modules/fleets.d.ts +82 -0
  72. package/dist/modules/fleets.d.ts.map +1 -0
  73. package/dist/modules/fleets.js +33 -0
  74. package/dist/modules/fleets.js.map +1 -0
  75. package/dist/modules/lease-manager.d.ts +119 -0
  76. package/dist/modules/lease-manager.d.ts.map +1 -0
  77. package/dist/modules/lease-manager.js +242 -0
  78. package/dist/modules/lease-manager.js.map +1 -0
  79. package/dist/modules/leases.d.ts +70 -0
  80. package/dist/modules/leases.d.ts.map +1 -0
  81. package/dist/modules/leases.js +51 -0
  82. package/dist/modules/leases.js.map +1 -0
  83. package/dist/modules/operators.d.ts +176 -0
  84. package/dist/modules/operators.d.ts.map +1 -0
  85. package/dist/modules/operators.js +133 -0
  86. package/dist/modules/operators.js.map +1 -0
  87. package/dist/modules/providers.d.ts +141 -0
  88. package/dist/modules/providers.d.ts.map +1 -0
  89. package/dist/modules/providers.js +118 -0
  90. package/dist/modules/providers.js.map +1 -0
  91. package/dist/modules/quota.d.ts +102 -0
  92. package/dist/modules/quota.d.ts.map +1 -0
  93. package/dist/modules/quota.js +135 -0
  94. package/dist/modules/quota.js.map +1 -0
  95. package/dist/modules/reactions.d.ts +141 -0
  96. package/dist/modules/reactions.d.ts.map +1 -0
  97. package/dist/modules/reactions.js +122 -0
  98. package/dist/modules/reactions.js.map +1 -0
  99. package/dist/modules/register.d.ts +159 -0
  100. package/dist/modules/register.d.ts.map +1 -0
  101. package/dist/modules/register.js +239 -0
  102. package/dist/modules/register.js.map +1 -0
  103. package/dist/modules/sandbox.d.ts +106 -0
  104. package/dist/modules/sandbox.d.ts.map +1 -0
  105. package/dist/modules/sandbox.js +224 -0
  106. package/dist/modules/sandbox.js.map +1 -0
  107. package/dist/modules/streams.d.ts +81 -0
  108. package/dist/modules/streams.d.ts.map +1 -0
  109. package/dist/modules/streams.js +292 -0
  110. package/dist/modules/streams.js.map +1 -0
  111. package/dist/modules/tasks.d.ts +145 -0
  112. package/dist/modules/tasks.d.ts.map +1 -0
  113. package/dist/modules/tasks.js +165 -0
  114. package/dist/modules/tasks.js.map +1 -0
  115. package/dist/modules/telemetry.d.ts +137 -0
  116. package/dist/modules/telemetry.d.ts.map +1 -0
  117. package/dist/modules/telemetry.js +203 -0
  118. package/dist/modules/telemetry.js.map +1 -0
  119. package/dist/modules/workspace.d.ts +180 -0
  120. package/dist/modules/workspace.d.ts.map +1 -0
  121. package/dist/modules/workspace.js +157 -0
  122. package/dist/modules/workspace.js.map +1 -0
  123. package/dist/quickstart-join.d.ts +56 -0
  124. package/dist/quickstart-join.d.ts.map +1 -0
  125. package/dist/quickstart-join.js +116 -0
  126. package/dist/quickstart-join.js.map +1 -0
  127. package/dist/quickstart.d.ts +137 -0
  128. package/dist/quickstart.d.ts.map +1 -0
  129. package/dist/quickstart.js +292 -0
  130. package/dist/quickstart.js.map +1 -0
  131. package/dist/retry.d.ts +88 -0
  132. package/dist/retry.d.ts.map +1 -0
  133. package/dist/retry.js +152 -0
  134. package/dist/retry.js.map +1 -0
  135. package/dist/types.d.ts +447 -0
  136. package/dist/types.d.ts.map +1 -0
  137. package/dist/types.js +10 -0
  138. package/dist/types.js.map +1 -0
  139. package/dist/utils.d.ts +88 -0
  140. package/dist/utils.d.ts.map +1 -0
  141. package/dist/utils.js +199 -0
  142. package/dist/utils.js.map +1 -0
  143. package/package.json +215 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,190 @@
1
+ /**
2
+ * `AgentSdkClient` — the thin coordinator that wires every SDK module onto a
3
+ * single HTTP context.
4
+ *
5
+ * The coordinator preserves backward compatibility with the pre-modular SDK:
6
+ * every method that existed on the old monolithic client continues to work
7
+ * with the same signatures. New work should prefer the module accessors
8
+ * (`client.auth`, `client.tasks`, etc.) or the module imports at
9
+ * `@shardlink/agent-sdk/auth`, `@shardlink/agent-sdk/tasks`, ...
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import { HttpContext } from "./utils.js";
14
+ import { runQuickJoin } from "./client-quick-join.js";
15
+ import { AgentsClient } from "./modules/agents.js";
16
+ import { AuthClient } from "./modules/auth.js";
17
+ import { BillingClient } from "./modules/billing.js";
18
+ import { DiscoveryClient } from "./modules/discovery.js";
19
+ import { LeaseClient } from "./modules/leases.js";
20
+ import { ProvidersClient } from "./modules/providers.js";
21
+ import { ReactionsClient } from "./modules/reactions.js";
22
+ import { TasksClient } from "./modules/tasks.js";
23
+ import { WorkspaceClient } from "./modules/workspace.js";
24
+ import { A2AClient } from "./modules/a2a.js";
25
+ import { RegisterClient } from "./modules/register.js";
26
+ import { DiagnosticsClient } from "./modules/diagnostics.js";
27
+ import { QuotaClient } from "./modules/quota.js";
28
+ import { TelemetryClient } from "./modules/telemetry.js";
29
+ import { DashboardClient } from "./modules/dashboard.js";
30
+ export * from "./types.js";
31
+ export { ShardLinkError, AuthError, LeaseError, BillingError, RateLimitError, PaymentRequiredError, CapabilityError, ValidationError, ConflictError, ServerError, NetworkError } from "./errors.js";
32
+ export { parseX402PaymentRequired, parseX402PaymentResponse } from "./utils.js";
33
+ /**
34
+ * Coordinator client for the ShardLink control-plane.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const client = new AgentSdkClient({
39
+ * baseUrl: process.env.SHARDLINK_BASE_URL!,
40
+ * getToken: () => process.env.SHARDLINK_SERVICE_TOKEN!
41
+ * });
42
+ * await client.quickJoin({ ... });
43
+ * ```
44
+ */
45
+ export class AgentSdkClient {
46
+ auth;
47
+ discovery;
48
+ workspace;
49
+ agents;
50
+ billing;
51
+ leases;
52
+ providers;
53
+ tasks;
54
+ reactions;
55
+ a2a;
56
+ register;
57
+ diagnostics;
58
+ quota;
59
+ dashboard;
60
+ /** Telemetry client — always present; no-op when not configured. */
61
+ telemetry;
62
+ /**
63
+ * The underlying HTTP context. Exposed read-only so consumers can construct
64
+ * workspace-scoped modules ({@link CrossPlaneClient}, {@link LeaseManager},
65
+ * custom extensions) that share the client's base URL + token provider.
66
+ */
67
+ http;
68
+ constructor(options) {
69
+ this.telemetry =
70
+ options.telemetry instanceof TelemetryClient
71
+ ? options.telemetry
72
+ : new TelemetryClient({ enabled: false, ...(options.telemetry ?? {}) });
73
+ this.http = new HttpContext({
74
+ baseUrl: options.baseUrl,
75
+ ...(options.getToken ? { getToken: options.getToken } : {}),
76
+ ...(options.fetchImpl ? { fetchImpl: options.fetchImpl } : {}),
77
+ telemetry: this.telemetry
78
+ });
79
+ this.auth = new AuthClient(this.http);
80
+ this.discovery = new DiscoveryClient(this.http);
81
+ this.workspace = new WorkspaceClient(this.http);
82
+ this.agents = new AgentsClient(this.http);
83
+ this.billing = new BillingClient(this.http);
84
+ this.leases = new LeaseClient(this.http);
85
+ this.providers = new ProvidersClient(this.http);
86
+ this.tasks = new TasksClient(this.http);
87
+ this.reactions = new ReactionsClient(this.http);
88
+ this.a2a = new A2AClient(this.http);
89
+ this.register = new RegisterClient(this.http, this.auth, this.agents, this.workspace);
90
+ this.diagnostics = new DiagnosticsClient({ http: this.http, discovery: this.discovery });
91
+ this.quota = new QuotaClient();
92
+ this.dashboard = new DashboardClient({ http: this.http, discovery: this.discovery });
93
+ }
94
+ /** Base URL the client was constructed with. */
95
+ get baseUrl() {
96
+ return this.http.baseUrl;
97
+ }
98
+ // ---- Backward-compatible method surface below ---------------------------
99
+ async requestWalletChallenge(input) {
100
+ return this.auth.requestWalletChallenge(input);
101
+ }
102
+ async verifyWalletChallenge(input) {
103
+ return this.auth.verifyWalletChallenge(input);
104
+ }
105
+ async repeatWalletAccess() {
106
+ return this.auth.repeatWalletAccess();
107
+ }
108
+ async getRoamingPreflight() {
109
+ return this.discovery.getRoamingPreflight();
110
+ }
111
+ async getPublicAgentPassport(identity) {
112
+ return this.discovery.getPublicAgentPassport(identity);
113
+ }
114
+ async getMcpServerMetadata() {
115
+ return this.discovery.getMcpServerMetadata();
116
+ }
117
+ async registerRuntime(input, options = {}) {
118
+ return this.agents.registerRuntime(input, options);
119
+ }
120
+ async bootstrap(input, options = {}) {
121
+ return this.agents.bootstrap(input, options);
122
+ }
123
+ async createPricingQuote(workspaceSlug, actorSessionToken, input, idempotencyKey) {
124
+ return this.billing.createPricingQuote(workspaceSlug, actorSessionToken, input, idempotencyKey);
125
+ }
126
+ async acceptPricingQuote(workspaceSlug, actorSessionToken, quoteId, idempotencyKey) {
127
+ return this.billing.acceptPricingQuote(workspaceSlug, actorSessionToken, quoteId, idempotencyKey);
128
+ }
129
+ async createBillingAccount(workspaceSlug, actorSessionToken, input, idempotencyKey) {
130
+ return this.billing.createAccount(workspaceSlug, actorSessionToken, input, idempotencyKey);
131
+ }
132
+ async attachFundingInstrument(workspaceSlug, actorSessionToken, accountId, input, idempotencyKey) {
133
+ return this.billing.attachInstrument(workspaceSlug, actorSessionToken, accountId, input, idempotencyKey);
134
+ }
135
+ async verifyFundingInstrument(workspaceSlug, actorSessionToken, accountId, instrumentId, idempotencyKey) {
136
+ return this.billing.verifyInstrument(workspaceSlug, actorSessionToken, accountId, instrumentId, idempotencyKey);
137
+ }
138
+ async createSpendEnvelope(workspaceSlug, actorSessionToken, accountId, input, idempotencyKey) {
139
+ return this.billing.createEnvelope(workspaceSlug, actorSessionToken, accountId, input, idempotencyKey);
140
+ }
141
+ async createDelegatedSpendGrant(workspaceSlug, actorSessionToken, accountId, input, idempotencyKey) {
142
+ return this.billing.createDelegatedGrant(workspaceSlug, actorSessionToken, accountId, input, idempotencyKey);
143
+ }
144
+ async listDelegatedSpendGrants(workspaceSlug, actorSessionToken, accountId) {
145
+ return this.billing.listDelegatedGrants(workspaceSlug, actorSessionToken, accountId);
146
+ }
147
+ async revokeDelegatedSpendGrant(workspaceSlug, actorSessionToken, accountId, grantId, idempotencyKey) {
148
+ return this.billing.revokeDelegatedGrant(workspaceSlug, actorSessionToken, accountId, grantId, idempotencyKey);
149
+ }
150
+ async createProviderQuote(workspaceSlug, actorSessionToken, input, idempotencyKey) {
151
+ return this.providers.createQuote(workspaceSlug, actorSessionToken, input, idempotencyKey);
152
+ }
153
+ async executeProviderQuote(workspaceSlug, actorSessionToken, quoteId, input, idempotencyKey) {
154
+ return this.providers.executeQuote(workspaceSlug, actorSessionToken, quoteId, input, idempotencyKey);
155
+ }
156
+ async executeProviderQuoteWithX402(input) {
157
+ return this.providers.executeQuoteWithX402(input);
158
+ }
159
+ async getWorkspaceLoad(workspaceSlug, windowSeconds = 900) {
160
+ return this.workspace.getLoad(workspaceSlug, windowSeconds);
161
+ }
162
+ async getMeteringSummary(input) {
163
+ return this.workspace.getMeteringSummary(input);
164
+ }
165
+ async exportMetering(input) {
166
+ return this.workspace.exportMetering(input);
167
+ }
168
+ async listWorkspaceDirectory(input = {}) {
169
+ return this.workspace.list(input);
170
+ }
171
+ /**
172
+ * Zero-to-lease onboarding: register runtime → bootstrap → optional funding
173
+ * → lease request. Preserves the original sequencing and idempotency-key
174
+ * derivation from the pre-modular SDK.
175
+ *
176
+ * The orchestration body lives in {@link runQuickJoin} (`./client-quick-join`)
177
+ * so this coordinator file stays under the SDK module size ceiling; behavior
178
+ * and signature are unchanged.
179
+ */
180
+ async quickJoin(input) {
181
+ return runQuickJoin({
182
+ http: this.http,
183
+ workspace: this.workspace,
184
+ agents: this.agents,
185
+ billing: this.billing,
186
+ leases: this.leases
187
+ }, input);
188
+ }
189
+ }
190
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Typed error catalog for the ShardLink Agent SDK.
3
+ *
4
+ * Every HTTP failure the control-plane produces is mapped to a concrete
5
+ * subclass of {@link ShardLinkError} so agents can discriminate on `code`,
6
+ * decide whether to retry (`retryable`, `retryAfter`), and attach
7
+ * `correlationId` to support tickets.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import type { X402PaymentRequirement } from "./types.js";
12
+ /**
13
+ * Base error thrown by the ShardLink Agent SDK for any control-plane failure.
14
+ *
15
+ * Prefer catching the subclasses (e.g. {@link RateLimitError},
16
+ * {@link PaymentRequiredError}) when you need category-specific handling.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * try {
21
+ * await tasks.claim("task_123");
22
+ * } catch (err) {
23
+ * if (err instanceof RateLimitError && err.retryAfter) {
24
+ * await sleep(err.retryAfter);
25
+ * continue;
26
+ * }
27
+ * throw err;
28
+ * }
29
+ * ```
30
+ */
31
+ export declare class ShardLinkError extends Error {
32
+ /** Machine-readable error code (e.g. `"rate_limited"`). */
33
+ readonly code: string;
34
+ /** HTTP status that produced this error (0 if not HTTP-originated). */
35
+ readonly status: number;
36
+ /** Whether the caller can safely retry the same request. */
37
+ readonly retryable: boolean;
38
+ /** Server-suggested delay before retrying, in milliseconds. */
39
+ readonly retryAfter?: number;
40
+ /** Correlation identifier for support/debug. */
41
+ readonly correlationId?: string;
42
+ /** Name of the SDK operation that raised this error. */
43
+ readonly operation?: string;
44
+ /** Structured payload returned by the server (if any). */
45
+ readonly details?: unknown;
46
+ constructor(init: {
47
+ message: string;
48
+ code: string;
49
+ status: number;
50
+ retryable?: boolean;
51
+ retryAfter?: number;
52
+ correlationId?: string;
53
+ operation?: string;
54
+ details?: unknown;
55
+ });
56
+ }
57
+ /** Authentication/authorization failure (401, 403, invalid token, missing scope). */
58
+ export declare class AuthError extends ShardLinkError {
59
+ constructor(init: ConstructorParameters<typeof ShardLinkError>[0]);
60
+ }
61
+ /** Lease lifecycle failure (lease missing, expired, revoked, insufficient tier). */
62
+ export declare class LeaseError extends ShardLinkError {
63
+ constructor(init: ConstructorParameters<typeof ShardLinkError>[0]);
64
+ }
65
+ /** Billing or spend-envelope failure (cap hit, instrument invalid, grant expired). */
66
+ export declare class BillingError extends ShardLinkError {
67
+ constructor(init: ConstructorParameters<typeof ShardLinkError>[0]);
68
+ }
69
+ /** Rate-limited by the control-plane. `retryAfter` is always set. */
70
+ export declare class RateLimitError extends ShardLinkError {
71
+ constructor(init: Omit<ConstructorParameters<typeof ShardLinkError>[0], "retryable">);
72
+ }
73
+ /**
74
+ * A 402 payment-required challenge. The `requirement` is the parsed x402
75
+ * envelope — feed it to your wallet to mint a PAYMENT header, then retry.
76
+ */
77
+ export declare class PaymentRequiredError extends ShardLinkError {
78
+ /** Parsed x402 payment requirement from the `PAYMENT-REQUIRED` header/body. */
79
+ readonly requirement: X402PaymentRequirement | null;
80
+ constructor(init: ConstructorParameters<typeof ShardLinkError>[0] & {
81
+ requirement: X402PaymentRequirement | null;
82
+ });
83
+ }
84
+ /** Capability mismatch — agent can't take this action (wrong adapter, trust tier, etc). */
85
+ export declare class CapabilityError extends ShardLinkError {
86
+ constructor(init: ConstructorParameters<typeof ShardLinkError>[0]);
87
+ }
88
+ /** Request validation failure — 400 with a field-level cause. */
89
+ export declare class ValidationError extends ShardLinkError {
90
+ constructor(init: ConstructorParameters<typeof ShardLinkError>[0]);
91
+ }
92
+ /** Conflict — idempotency collision, already-claimed task, duplicate join. */
93
+ export declare class ConflictError extends ShardLinkError {
94
+ constructor(init: ConstructorParameters<typeof ShardLinkError>[0]);
95
+ }
96
+ /** Server-side fault (500/502/503/504). Retryable with backoff. */
97
+ export declare class ServerError extends ShardLinkError {
98
+ constructor(init: Omit<ConstructorParameters<typeof ShardLinkError>[0], "retryable">);
99
+ }
100
+ /** Network/transport error before the server could respond. Always retryable. */
101
+ export declare class NetworkError extends ShardLinkError {
102
+ constructor(init: Omit<ConstructorParameters<typeof ShardLinkError>[0], "retryable" | "status">);
103
+ }
104
+ /**
105
+ * Build a typed error from a non-OK `Response` and the decoded JSON payload.
106
+ *
107
+ * @param operation - Name of the SDK operation (e.g. `"task-claim"`) — surfaces in error messages.
108
+ * @param response - The HTTP response the server returned.
109
+ * @param payload - The parsed JSON body (or `null` if none).
110
+ * @param parsedRequirement - Pre-parsed x402 requirement (used for 402 responses).
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * const res = await fetch(url);
115
+ * if (!res.ok) {
116
+ * throw errorFromResponse("task-claim", res, await res.json());
117
+ * }
118
+ * ```
119
+ */
120
+ export declare function errorFromResponse(operation: string, response: Response, payload: unknown, parsedRequirement?: X402PaymentRequirement | null): ShardLinkError;
121
+ /**
122
+ * Wrap a thrown exception from `fetch()` in a {@link NetworkError} so callers
123
+ * get the same typed-error contract for transport failures.
124
+ */
125
+ export declare function wrapNetworkError(operation: string, cause: unknown): NetworkError;
126
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/errors.js ADDED
@@ -0,0 +1,330 @@
1
+ /**
2
+ * Typed error catalog for the ShardLink Agent SDK.
3
+ *
4
+ * Every HTTP failure the control-plane produces is mapped to a concrete
5
+ * subclass of {@link ShardLinkError} so agents can discriminate on `code`,
6
+ * decide whether to retry (`retryable`, `retryAfter`), and attach
7
+ * `correlationId` to support tickets.
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ /**
12
+ * Base error thrown by the ShardLink Agent SDK for any control-plane failure.
13
+ *
14
+ * Prefer catching the subclasses (e.g. {@link RateLimitError},
15
+ * {@link PaymentRequiredError}) when you need category-specific handling.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * try {
20
+ * await tasks.claim("task_123");
21
+ * } catch (err) {
22
+ * if (err instanceof RateLimitError && err.retryAfter) {
23
+ * await sleep(err.retryAfter);
24
+ * continue;
25
+ * }
26
+ * throw err;
27
+ * }
28
+ * ```
29
+ */
30
+ export class ShardLinkError extends Error {
31
+ /** Machine-readable error code (e.g. `"rate_limited"`). */
32
+ code;
33
+ /** HTTP status that produced this error (0 if not HTTP-originated). */
34
+ status;
35
+ /** Whether the caller can safely retry the same request. */
36
+ retryable;
37
+ /** Server-suggested delay before retrying, in milliseconds. */
38
+ retryAfter;
39
+ /** Correlation identifier for support/debug. */
40
+ correlationId;
41
+ /** Name of the SDK operation that raised this error. */
42
+ operation;
43
+ /** Structured payload returned by the server (if any). */
44
+ details;
45
+ constructor(init) {
46
+ super(init.message);
47
+ this.name = "ShardLinkError";
48
+ this.code = init.code;
49
+ this.status = init.status;
50
+ this.retryable = init.retryable ?? false;
51
+ if (init.retryAfter !== undefined) {
52
+ this.retryAfter = init.retryAfter;
53
+ }
54
+ if (init.correlationId !== undefined) {
55
+ this.correlationId = init.correlationId;
56
+ }
57
+ if (init.operation !== undefined) {
58
+ this.operation = init.operation;
59
+ }
60
+ if (init.details !== undefined) {
61
+ this.details = init.details;
62
+ }
63
+ }
64
+ }
65
+ /** Authentication/authorization failure (401, 403, invalid token, missing scope). */
66
+ export class AuthError extends ShardLinkError {
67
+ constructor(init) {
68
+ super(init);
69
+ this.name = "AuthError";
70
+ }
71
+ }
72
+ /** Lease lifecycle failure (lease missing, expired, revoked, insufficient tier). */
73
+ export class LeaseError extends ShardLinkError {
74
+ constructor(init) {
75
+ super(init);
76
+ this.name = "LeaseError";
77
+ }
78
+ }
79
+ /** Billing or spend-envelope failure (cap hit, instrument invalid, grant expired). */
80
+ export class BillingError extends ShardLinkError {
81
+ constructor(init) {
82
+ super(init);
83
+ this.name = "BillingError";
84
+ }
85
+ }
86
+ /** Rate-limited by the control-plane. `retryAfter` is always set. */
87
+ export class RateLimitError extends ShardLinkError {
88
+ constructor(init) {
89
+ super({ ...init, retryable: true });
90
+ this.name = "RateLimitError";
91
+ }
92
+ }
93
+ /**
94
+ * A 402 payment-required challenge. The `requirement` is the parsed x402
95
+ * envelope — feed it to your wallet to mint a PAYMENT header, then retry.
96
+ */
97
+ export class PaymentRequiredError extends ShardLinkError {
98
+ /** Parsed x402 payment requirement from the `PAYMENT-REQUIRED` header/body. */
99
+ requirement;
100
+ constructor(init) {
101
+ super(init);
102
+ this.name = "PaymentRequiredError";
103
+ this.requirement = init.requirement;
104
+ }
105
+ }
106
+ /** Capability mismatch — agent can't take this action (wrong adapter, trust tier, etc). */
107
+ export class CapabilityError extends ShardLinkError {
108
+ constructor(init) {
109
+ super(init);
110
+ this.name = "CapabilityError";
111
+ }
112
+ }
113
+ /** Request validation failure — 400 with a field-level cause. */
114
+ export class ValidationError extends ShardLinkError {
115
+ constructor(init) {
116
+ super(init);
117
+ this.name = "ValidationError";
118
+ }
119
+ }
120
+ /** Conflict — idempotency collision, already-claimed task, duplicate join. */
121
+ export class ConflictError extends ShardLinkError {
122
+ constructor(init) {
123
+ super(init);
124
+ this.name = "ConflictError";
125
+ }
126
+ }
127
+ /** Server-side fault (500/502/503/504). Retryable with backoff. */
128
+ export class ServerError extends ShardLinkError {
129
+ constructor(init) {
130
+ super({ ...init, retryable: true });
131
+ this.name = "ServerError";
132
+ }
133
+ }
134
+ /** Network/transport error before the server could respond. Always retryable. */
135
+ export class NetworkError extends ShardLinkError {
136
+ constructor(init) {
137
+ super({ ...init, status: 0, retryable: true });
138
+ this.name = "NetworkError";
139
+ }
140
+ }
141
+ /** Known error codes that the control-plane returns — used by {@link errorFromResponse}. */
142
+ const AUTH_CODES = new Set([
143
+ "unauthorized",
144
+ "missing_token",
145
+ "invalid_token",
146
+ "token_expired",
147
+ "forbidden",
148
+ "wallet_signature_invalid",
149
+ "wallet_challenge_expired",
150
+ "wallet_challenge_not_found",
151
+ "session_expired"
152
+ ]);
153
+ const LEASE_CODES = new Set([
154
+ "lease_expired",
155
+ "lease_revoked",
156
+ "lease_missing",
157
+ "lease_tier_invalid",
158
+ "lease_quota_exceeded",
159
+ "lease_already_active"
160
+ ]);
161
+ const BILLING_CODES = new Set([
162
+ "spend_cap_exceeded",
163
+ "envelope_depleted",
164
+ "envelope_expired",
165
+ "instrument_invalid",
166
+ "delegated_grant_expired",
167
+ "delegated_grant_revoked",
168
+ "funding_required"
169
+ ]);
170
+ const CAPABILITY_CODES = new Set([
171
+ "capability_missing",
172
+ "adapter_unsupported",
173
+ "trust_tier_insufficient",
174
+ "reaction_term_invalid",
175
+ "action_not_permitted"
176
+ ]);
177
+ function parseRetryAfter(raw) {
178
+ if (!raw) {
179
+ return undefined;
180
+ }
181
+ const trimmed = raw.trim();
182
+ if (trimmed.length === 0) {
183
+ return undefined;
184
+ }
185
+ const asSeconds = Number(trimmed);
186
+ if (Number.isFinite(asSeconds)) {
187
+ return Math.max(0, Math.round(asSeconds * 1000));
188
+ }
189
+ const asDate = Date.parse(trimmed);
190
+ if (!Number.isNaN(asDate)) {
191
+ return Math.max(0, asDate - Date.now());
192
+ }
193
+ return undefined;
194
+ }
195
+ function isRecord(value) {
196
+ return typeof value === "object" && value !== null;
197
+ }
198
+ function extractErrorShape(payload) {
199
+ if (!isRecord(payload)) {
200
+ return {};
201
+ }
202
+ const err = isRecord(payload.error) ? payload.error : payload;
203
+ const code = typeof err.code === "string" ? err.code : undefined;
204
+ const message = typeof err.message === "string" ? err.message : undefined;
205
+ const details = err.details ?? (isRecord(payload.error) ? payload.details : undefined);
206
+ const correlationId = typeof err.correlationId === "string"
207
+ ? err.correlationId
208
+ : typeof payload.correlationId === "string"
209
+ ? payload.correlationId
210
+ : undefined;
211
+ const requirement = payload.paymentRequirement;
212
+ // The control-plane error envelope emits `error.retryAfter` in MILLISECONDS,
213
+ // which is more precise than the whole-second `Retry-After` HTTP header.
214
+ // Only accept a finite, non-negative number.
215
+ const retryAfter = typeof err.retryAfter === "number" && Number.isFinite(err.retryAfter) && err.retryAfter >= 0
216
+ ? err.retryAfter
217
+ : undefined;
218
+ return {
219
+ ...(code !== undefined ? { code } : {}),
220
+ ...(message !== undefined ? { message } : {}),
221
+ ...(details !== undefined ? { details } : {}),
222
+ ...(correlationId !== undefined ? { correlationId } : {}),
223
+ ...(requirement !== undefined ? { requirement } : {}),
224
+ ...(retryAfter !== undefined ? { retryAfter } : {})
225
+ };
226
+ }
227
+ /**
228
+ * Build a typed error from a non-OK `Response` and the decoded JSON payload.
229
+ *
230
+ * @param operation - Name of the SDK operation (e.g. `"task-claim"`) — surfaces in error messages.
231
+ * @param response - The HTTP response the server returned.
232
+ * @param payload - The parsed JSON body (or `null` if none).
233
+ * @param parsedRequirement - Pre-parsed x402 requirement (used for 402 responses).
234
+ *
235
+ * @example
236
+ * ```ts
237
+ * const res = await fetch(url);
238
+ * if (!res.ok) {
239
+ * throw errorFromResponse("task-claim", res, await res.json());
240
+ * }
241
+ * ```
242
+ */
243
+ export function errorFromResponse(operation, response, payload, parsedRequirement = null) {
244
+ const shape = extractErrorShape(payload);
245
+ const code = shape.code ?? defaultCodeForStatus(response.status);
246
+ const correlationId = shape.correlationId ?? response.headers.get("x-correlation-id") ?? undefined;
247
+ // Prefer the JSON body's `error.retryAfter` (milliseconds, more precise) and
248
+ // fall back to the whole-second `Retry-After` HTTP header when absent.
249
+ const retryAfter = shape.retryAfter ?? parseRetryAfter(response.headers.get("retry-after"));
250
+ const message = shape.message ?? `[${operation}] request failed with ${response.status} (${code})`;
251
+ const init = {
252
+ message,
253
+ code,
254
+ status: response.status,
255
+ operation,
256
+ details: shape.details ?? payload,
257
+ ...(correlationId !== undefined ? { correlationId } : {}),
258
+ ...(retryAfter !== undefined ? { retryAfter } : {})
259
+ };
260
+ if (response.status === 402) {
261
+ return new PaymentRequiredError({
262
+ ...init,
263
+ retryable: true,
264
+ requirement: parsedRequirement
265
+ });
266
+ }
267
+ if (response.status === 429) {
268
+ return new RateLimitError({
269
+ ...init,
270
+ retryAfter: retryAfter ?? 1_000
271
+ });
272
+ }
273
+ if (response.status === 401 || AUTH_CODES.has(code)) {
274
+ return new AuthError({ ...init, retryable: false });
275
+ }
276
+ if (response.status === 403 && CAPABILITY_CODES.has(code)) {
277
+ return new CapabilityError({ ...init, retryable: false });
278
+ }
279
+ if (response.status === 409) {
280
+ return new ConflictError({ ...init, retryable: false });
281
+ }
282
+ if (LEASE_CODES.has(code)) {
283
+ return new LeaseError({ ...init, retryable: false });
284
+ }
285
+ if (BILLING_CODES.has(code)) {
286
+ return new BillingError({ ...init, retryable: false });
287
+ }
288
+ if (response.status >= 500) {
289
+ return new ServerError(init);
290
+ }
291
+ if (response.status === 400 || response.status === 422) {
292
+ return new ValidationError({ ...init, retryable: false });
293
+ }
294
+ return new ShardLinkError({ ...init, retryable: false });
295
+ }
296
+ function defaultCodeForStatus(status) {
297
+ if (status === 400)
298
+ return "bad_request";
299
+ if (status === 401)
300
+ return "unauthorized";
301
+ if (status === 402)
302
+ return "payment_required";
303
+ if (status === 403)
304
+ return "forbidden";
305
+ if (status === 404)
306
+ return "not_found";
307
+ if (status === 409)
308
+ return "conflict";
309
+ if (status === 422)
310
+ return "validation_failed";
311
+ if (status === 429)
312
+ return "rate_limited";
313
+ if (status >= 500 && status < 600)
314
+ return "server_error";
315
+ return `http_${status}`;
316
+ }
317
+ /**
318
+ * Wrap a thrown exception from `fetch()` in a {@link NetworkError} so callers
319
+ * get the same typed-error contract for transport failures.
320
+ */
321
+ export function wrapNetworkError(operation, cause) {
322
+ const message = cause instanceof Error ? cause.message : typeof cause === "string" ? cause : "network error";
323
+ return new NetworkError({
324
+ message: `[${operation}] ${message}`,
325
+ code: "network_error",
326
+ operation,
327
+ details: cause
328
+ });
329
+ }
330
+ //# sourceMappingURL=errors.js.map