@lightspeed-ai/sdk 0.4.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 (47) hide show
  1. package/README.md +68 -0
  2. package/dist/client.d.ts +65 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +198 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/errors.d.ts +20 -0
  7. package/dist/errors.d.ts.map +1 -0
  8. package/dist/errors.js +53 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/generated/methods.d.ts +3308 -0
  11. package/dist/generated/methods.d.ts.map +1 -0
  12. package/dist/generated/methods.js +2085 -0
  13. package/dist/generated/methods.js.map +1 -0
  14. package/dist/generated/types.d.ts +8048 -0
  15. package/dist/generated/types.d.ts.map +1 -0
  16. package/dist/generated/types.js +6 -0
  17. package/dist/generated/types.js.map +1 -0
  18. package/dist/generated/workflow-manifest.d.ts +223 -0
  19. package/dist/generated/workflow-manifest.d.ts.map +1 -0
  20. package/dist/generated/workflow-manifest.js +258 -0
  21. package/dist/generated/workflow-manifest.js.map +1 -0
  22. package/dist/generated/workflow-types.d.ts +587 -0
  23. package/dist/generated/workflow-types.d.ts.map +1 -0
  24. package/dist/generated/workflow-types.js +6 -0
  25. package/dist/generated/workflow-types.js.map +1 -0
  26. package/dist/index.d.ts +8 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +4 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/workflow.d.ts +221 -0
  31. package/dist/workflow.d.ts.map +1 -0
  32. package/dist/workflow.js +346 -0
  33. package/dist/workflow.js.map +1 -0
  34. package/examples/temporal-activity.ts +32 -0
  35. package/package.json +55 -0
  36. package/release.json +4 -0
  37. package/schema/api.schema.json +18595 -0
  38. package/schema/workflow.json +253 -0
  39. package/schema/workflow.schema.json +1237 -0
  40. package/src/client.ts +323 -0
  41. package/src/errors.ts +73 -0
  42. package/src/generated/methods.ts +3348 -0
  43. package/src/generated/types.ts +8319 -0
  44. package/src/generated/workflow-manifest.ts +258 -0
  45. package/src/generated/workflow-types.ts +612 -0
  46. package/src/index.ts +31 -0
  47. package/src/workflow.ts +475 -0
package/README.md ADDED
@@ -0,0 +1,68 @@
1
+ # Lightspeed TypeScript SDK
2
+
3
+ TypeScript SDK for Lightspeed, with a typed JSON-RPC client and workflow helpers.
4
+
5
+ The public API types and typed method map are generated from the committed
6
+ contract artifacts in `crates/api/contract/`. The hand-written code is limited to the
7
+ JSON-RPC transport and small workflow helpers.
8
+
9
+ For a complete application walkthrough with authentication, retry identity,
10
+ events, and results, read
11
+ [API and TypeScript](../../docs/documentation/integrating-and-extending/api-and-typescript.md).
12
+ Durable receivers and custom workers are covered in
13
+ [Workflow tools](../../docs/documentation/integrating-and-extending/workflow-tools.md).
14
+
15
+ ## Install
16
+
17
+ Tagged Lightspeed releases publish `@lightspeed-ai/sdk` to npm. In-tree
18
+ consumers use the repository workspace directly.
19
+
20
+ ```bash
21
+ npm install @lightspeed-ai/sdk
22
+ ```
23
+
24
+ ## Use
25
+
26
+ ```ts
27
+ import { LightspeedClient } from "@lightspeed-ai/sdk";
28
+
29
+ const lightspeed = new LightspeedClient("http://127.0.0.1:18080/rpc");
30
+
31
+ const session = await lightspeed.call("session/start", {
32
+ sessionId: "session_123",
33
+ config: null,
34
+ });
35
+
36
+ const run = await lightspeed.startRun(
37
+ session.result.session.id,
38
+ [{ type: "text", text: "summarize this repository" }],
39
+ );
40
+
41
+ const terminal = await lightspeed.awaitRun(session.result.session.id, run.result.run.id);
42
+
43
+ console.log(terminal.state.status, terminal.cursor);
44
+ ```
45
+
46
+ Raw calls return the full `AgentApiOutcome<...>` envelope, including any
47
+ notifications. JSON-RPC failures throw `LightspeedRpcError` with `code`, `message`,
48
+ `kind`, and raw `data` preserved.
49
+
50
+ `METHOD_INFO` exposes the canonical Rust-authored scope, summary, and
51
+ operational description for every method. The generated `rpc.*` helpers carry
52
+ the same text as JSDoc, while parameter and result field documentation comes
53
+ from the generated schema types.
54
+
55
+ ## Regenerate
56
+
57
+ ```bash
58
+ npm install
59
+ npm run check --workspace @lightspeed-ai/sdk
60
+ ```
61
+
62
+ `npm run check:generated` regenerates `src/generated/*` and the packaged
63
+ schemas, and fails if the committed generated output is stale.
64
+
65
+ Workflow receivers import `@lightspeed-ai/sdk/workflow`. That subpath
66
+ contains generated emission/start-on-call types and manifest-owned constants,
67
+ plus Temporal-sandbox-safe parsing, id derivation, workflow-id, recipe, and
68
+ reply helpers. It has no Temporal package dependency.
@@ -0,0 +1,65 @@
1
+ import type { AgentApiOutcomeOfRunStartResponse, AgentApiOutcomeOfSessionEventsReadResponse, EventCursor, ContentRefView, InputItem, RunStartConfig, RunStartSource, SessionEventView } from "./generated/types.js";
2
+ import type { Method, MethodParams, MethodResult, RpcCaller } from "./generated/methods.js";
3
+ export type RequestId = number | string;
4
+ export interface CallOptions {
5
+ headers?: HeadersInit;
6
+ signal?: AbortSignal;
7
+ }
8
+ export interface LightspeedClientOptions {
9
+ endpoint: string | URL;
10
+ fetch?: typeof fetch;
11
+ headers?: HeadersInit | (() => HeadersInit | Promise<HeadersInit>);
12
+ requestId?: () => RequestId;
13
+ }
14
+ export interface StartRunOptions extends CallOptions {
15
+ config?: RunStartConfig | null;
16
+ submissionId?: string | null;
17
+ }
18
+ export interface ReadEventsOptions extends CallOptions {
19
+ after?: EventCursor | null;
20
+ limit?: number | null;
21
+ waitMs?: number | null;
22
+ }
23
+ export type RunTerminalState = {
24
+ status: "completed";
25
+ event: SessionEventView;
26
+ output: ContentRefView | null;
27
+ } | {
28
+ status: "failed";
29
+ event: SessionEventView;
30
+ message: string;
31
+ } | {
32
+ status: "cancelled";
33
+ event: SessionEventView;
34
+ };
35
+ export interface AwaitRunOptions extends CallOptions {
36
+ after?: EventCursor | null;
37
+ limit?: number | null;
38
+ waitMs?: number | null;
39
+ heartbeat?: (cursor: EventCursor | null, page: AgentApiOutcomeOfSessionEventsReadResponse) => void | Promise<void>;
40
+ onEvent?: (event: SessionEventView) => void | Promise<void>;
41
+ onPage?: (page: AgentApiOutcomeOfSessionEventsReadResponse) => void | Promise<void>;
42
+ }
43
+ export interface AwaitRunResult {
44
+ state: RunTerminalState;
45
+ cursor: EventCursor;
46
+ page: AgentApiOutcomeOfSessionEventsReadResponse;
47
+ }
48
+ export declare class LightspeedClient implements RpcCaller {
49
+ private readonly endpoint;
50
+ private readonly fetchImpl;
51
+ private readonly headers;
52
+ private readonly requestId;
53
+ private nextNumericRequestId;
54
+ constructor(endpoint: string | URL);
55
+ constructor(options: LightspeedClientOptions);
56
+ call<M extends Method>(method: M, params: MethodParams<M>, options?: CallOptions): Promise<MethodResult<M>>;
57
+ startRun(sessionId: string, input: InputItem[], options?: StartRunOptions): Promise<AgentApiOutcomeOfRunStartResponse>;
58
+ startRunWithSource(sessionId: string, source: RunStartSource, options?: StartRunOptions): Promise<AgentApiOutcomeOfRunStartResponse>;
59
+ readEvents(sessionId: string, options?: ReadEventsOptions): Promise<AgentApiOutcomeOfSessionEventsReadResponse>;
60
+ awaitRun(sessionId: string, runId: string, options?: AwaitRunOptions): Promise<AwaitRunResult>;
61
+ private nextRequestId;
62
+ private buildHeaders;
63
+ }
64
+ export declare function generateSubmissionId(): string;
65
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iCAAiC,EACjC,0CAA0C,EAC1C,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EAEd,cAAc,EACd,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,EACV,MAAM,wBAAwB,CAAC;AAIhC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,SAAS,CAAC;CAC7B;AAQD,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAC/B,GACD;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IACE,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEN,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,CACV,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,0CAA0C,KAC7C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,0CAA0C,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,0CAA0C,CAAC;CAClD;AAED,qBAAa,gBAAiB,YAAW,SAAS;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,oBAAoB,CAAK;gBAErB,QAAQ,EAAE,MAAM,GAAG,GAAG;gBACtB,OAAO,EAAE,uBAAuB;IActC,IAAI,CAAC,CAAC,SAAS,MAAM,EACzB,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAgD3B,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,EAAE,EAClB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,iCAAiC,CAAC;IAI7C,kBAAkB,CAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,iCAAiC,CAAC;IAa7C,UAAU,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,0CAA0C,CAAC;IAchD,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC;IAmC1B,OAAO,CAAC,aAAa;YAOP,YAAY;CAU3B;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAU7C"}
package/dist/client.js ADDED
@@ -0,0 +1,198 @@
1
+ import { METHOD_INFO } from "./generated/methods.js";
2
+ import { LightspeedRpcError, LightspeedTransportError } from "./errors.js";
3
+ export class LightspeedClient {
4
+ endpoint;
5
+ fetchImpl;
6
+ headers;
7
+ requestId;
8
+ nextNumericRequestId = 1;
9
+ constructor(options) {
10
+ const resolved = typeof options === "string" || options instanceof URL ? { endpoint: options } : options;
11
+ const fetchImpl = resolved.fetch ?? globalThis.fetch;
12
+ if (!fetchImpl) {
13
+ throw new LightspeedTransportError("LightspeedClient requires a fetch implementation");
14
+ }
15
+ this.endpoint = resolved.endpoint.toString();
16
+ this.fetchImpl = fetchImpl;
17
+ this.headers = resolved.headers;
18
+ this.requestId = resolved.requestId;
19
+ }
20
+ async call(method, params, options = {}) {
21
+ const id = this.nextRequestId();
22
+ const headers = await this.buildHeaders(options.headers);
23
+ if (METHOD_INFO[method].scope === "connection" || METHOD_INFO[method].scope === "deployment") {
24
+ headers.delete("x-lightspeed-universe");
25
+ }
26
+ const init = {
27
+ method: "POST",
28
+ headers,
29
+ body: JSON.stringify({ id, method, params }),
30
+ };
31
+ if (options.signal) {
32
+ init.signal = options.signal;
33
+ }
34
+ let response;
35
+ try {
36
+ response = await this.fetchImpl(this.endpoint, init);
37
+ }
38
+ catch (error) {
39
+ throw new LightspeedTransportError(`Lightspeed API request failed: ${errorMessage(error)}`);
40
+ }
41
+ const body = await readJson(response);
42
+ if (!response.ok) {
43
+ throw new LightspeedTransportError(`Lightspeed API request failed with HTTP ${response.status}`, {
44
+ status: response.status,
45
+ body,
46
+ });
47
+ }
48
+ if (!isRecord(body)) {
49
+ throw new LightspeedTransportError("Lightspeed API response was not a JSON object", { body });
50
+ }
51
+ const rpcResponse = body;
52
+ if (rpcResponse.id !== undefined && rpcResponse.id !== id) {
53
+ throw new LightspeedTransportError("Lightspeed API response id did not match the request id", {
54
+ body,
55
+ });
56
+ }
57
+ if (rpcResponse.error) {
58
+ throw new LightspeedRpcError(rpcResponse.error);
59
+ }
60
+ if (!("result" in rpcResponse)) {
61
+ throw new LightspeedTransportError("Lightspeed API response was missing result", { body });
62
+ }
63
+ return rpcResponse.result;
64
+ }
65
+ startRun(sessionId, input, options = {}) {
66
+ return this.startRunWithSource(sessionId, { type: "input", items: input }, options);
67
+ }
68
+ startRunWithSource(sessionId, source, options = {}) {
69
+ const params = {
70
+ sessionId,
71
+ source,
72
+ submissionId: options.submissionId === undefined ? generateSubmissionId() : options.submissionId,
73
+ };
74
+ if ("config" in options) {
75
+ params.config = options.config ?? null;
76
+ }
77
+ return this.call("session/runs/start", params, options);
78
+ }
79
+ readEvents(sessionId, options = {}) {
80
+ const params = { sessionId };
81
+ if (options.after !== undefined) {
82
+ params.after = options.after;
83
+ }
84
+ if (options.limit !== undefined) {
85
+ params.limit = options.limit;
86
+ }
87
+ if (options.waitMs !== undefined) {
88
+ params.waitMs = options.waitMs;
89
+ }
90
+ return this.call("session/events/read", params, options);
91
+ }
92
+ async awaitRun(sessionId, runId, options = {}) {
93
+ let cursor = options.after ?? null;
94
+ for (;;) {
95
+ throwIfAborted(options.signal);
96
+ const readOptions = {
97
+ after: cursor,
98
+ waitMs: options.waitMs ?? 30_000,
99
+ };
100
+ if (options.limit !== undefined) {
101
+ readOptions.limit = options.limit;
102
+ }
103
+ if (options.signal) {
104
+ readOptions.signal = options.signal;
105
+ }
106
+ if (options.headers) {
107
+ readOptions.headers = options.headers;
108
+ }
109
+ const page = await this.readEvents(sessionId, readOptions);
110
+ await options.onPage?.(page);
111
+ for (const event of page.result.events ?? []) {
112
+ cursor = event.cursor;
113
+ await options.onEvent?.(event);
114
+ const state = terminalStateForRun(event, runId);
115
+ if (state) {
116
+ await options.heartbeat?.(cursor, page);
117
+ return { state, cursor, page };
118
+ }
119
+ }
120
+ cursor = page.result.nextCursor ?? page.result.headCursor ?? cursor;
121
+ await options.heartbeat?.(cursor, page);
122
+ }
123
+ }
124
+ nextRequestId() {
125
+ if (this.requestId) {
126
+ return this.requestId();
127
+ }
128
+ return this.nextNumericRequestId++;
129
+ }
130
+ async buildHeaders(callHeaders) {
131
+ const headers = new Headers();
132
+ headers.set("content-type", "application/json");
133
+ headers.set("accept", "application/json");
134
+ const defaultHeaders = typeof this.headers === "function" ? await this.headers() : this.headers;
135
+ appendHeaders(headers, defaultHeaders);
136
+ appendHeaders(headers, callHeaders);
137
+ return headers;
138
+ }
139
+ }
140
+ export function generateSubmissionId() {
141
+ if (globalThis.crypto?.randomUUID) {
142
+ return globalThis.crypto.randomUUID();
143
+ }
144
+ const bytes = new Uint8Array(16);
145
+ globalThis.crypto?.getRandomValues(bytes);
146
+ if (bytes.some((byte) => byte !== 0)) {
147
+ return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
148
+ }
149
+ return `sub_${Date.now().toString(36)}_${Math.random().toString(36).slice(2)}`;
150
+ }
151
+ function terminalStateForRun(event, runId) {
152
+ const kind = event.kind;
153
+ switch (kind.type) {
154
+ case "runCompleted":
155
+ return kind.runId === runId
156
+ ? { status: "completed", event, output: kind.output ?? null }
157
+ : null;
158
+ case "runFailed":
159
+ return kind.runId === runId ? { status: "failed", event, message: kind.message } : null;
160
+ case "runCancelled":
161
+ return kind.runId === runId ? { status: "cancelled", event } : null;
162
+ default:
163
+ return null;
164
+ }
165
+ }
166
+ function appendHeaders(headers, values) {
167
+ if (!values) {
168
+ return;
169
+ }
170
+ new Headers(values).forEach((value, key) => headers.set(key, value));
171
+ }
172
+ async function readJson(response) {
173
+ const text = await response.text();
174
+ if (text.length === 0) {
175
+ return null;
176
+ }
177
+ try {
178
+ return JSON.parse(text);
179
+ }
180
+ catch (error) {
181
+ throw new LightspeedTransportError(`Lightspeed API response was not valid JSON: ${errorMessage(error)}`, {
182
+ status: response.status,
183
+ body: text,
184
+ });
185
+ }
186
+ }
187
+ function isRecord(value) {
188
+ return typeof value === "object" && value !== null && !Array.isArray(value);
189
+ }
190
+ function errorMessage(error) {
191
+ return error instanceof Error ? error.message : String(error);
192
+ }
193
+ function throwIfAborted(signal) {
194
+ if (signal?.aborted) {
195
+ throw signal.reason instanceof Error ? signal.reason : new Error("operation aborted");
196
+ }
197
+ }
198
+ //# 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,20 @@
1
+ import type { AgentApiError, JsonRpcError as ApiJsonRpcError } from "./generated/types.js";
2
+ export type JsonRpcErrorPayload = ApiJsonRpcError;
3
+ export type LightspeedRpcErrorKind = "invalid_request" | "method_not_found" | "unauthenticated" | "forbidden" | "not_found" | "conflict" | "rejected" | "environment_not_ready" | "model_default_unset" | "internal" | "unknown";
4
+ export declare function lightspeedRpcErrorKind(code: number): LightspeedRpcErrorKind;
5
+ export declare class LightspeedRpcError extends Error {
6
+ readonly code: number;
7
+ readonly data: AgentApiError | null | undefined;
8
+ readonly kind: LightspeedRpcErrorKind;
9
+ readonly payload: JsonRpcErrorPayload;
10
+ constructor(payload: JsonRpcErrorPayload);
11
+ }
12
+ export declare class LightspeedTransportError extends Error {
13
+ readonly status: number | undefined;
14
+ readonly body: unknown | undefined;
15
+ constructor(message: string, options?: {
16
+ status?: number;
17
+ body?: unknown;
18
+ });
19
+ }
20
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3F,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAElD,MAAM,MAAM,sBAAsB,GAC9B,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,WAAW,GACX,WAAW,GACX,UAAU,GACV,UAAU,GACV,uBAAuB,GACvB,qBAAqB,GACrB,UAAU,GACV,SAAS,CAAC;AAEd,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAyB3E;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAE1B,OAAO,EAAE,mBAAmB;CASzC;AAED,qBAAa,wBAAyB,SAAQ,KAAK;IACjD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAO;CAO/E"}
package/dist/errors.js ADDED
@@ -0,0 +1,53 @@
1
+ export function lightspeedRpcErrorKind(code) {
2
+ switch (code) {
3
+ case -32602:
4
+ return "invalid_request";
5
+ case -32601:
6
+ return "method_not_found";
7
+ case -32001:
8
+ return "unauthenticated";
9
+ case -32003:
10
+ return "forbidden";
11
+ case -32004:
12
+ return "not_found";
13
+ case -32009:
14
+ return "conflict";
15
+ case -32010:
16
+ return "rejected";
17
+ case -32012:
18
+ return "environment_not_ready";
19
+ case -32603:
20
+ return "internal";
21
+ case -32014:
22
+ return "model_default_unset";
23
+ default:
24
+ return "unknown";
25
+ }
26
+ }
27
+ export class LightspeedRpcError extends Error {
28
+ code;
29
+ data;
30
+ kind;
31
+ payload;
32
+ constructor(payload) {
33
+ super(payload.message);
34
+ this.name = "LightspeedRpcError";
35
+ this.code = payload.code;
36
+ this.data = payload.data;
37
+ this.kind = lightspeedRpcErrorKind(payload.code);
38
+ this.payload = payload;
39
+ Object.setPrototypeOf(this, new.target.prototype);
40
+ }
41
+ }
42
+ export class LightspeedTransportError extends Error {
43
+ status;
44
+ body;
45
+ constructor(message, options = {}) {
46
+ super(message);
47
+ this.name = "LightspeedTransportError";
48
+ this.status = options.status;
49
+ this.body = options.body;
50
+ Object.setPrototypeOf(this, new.target.prototype);
51
+ }
52
+ }
53
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAiBA,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,KAAK;YACT,OAAO,iBAAiB,CAAC;QAC3B,KAAK,CAAC,KAAK;YACT,OAAO,kBAAkB,CAAC;QAC5B,KAAK,CAAC,KAAK;YACT,OAAO,iBAAiB,CAAC;QAC3B,KAAK,CAAC,KAAK;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,CAAC,KAAK;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,CAAC,KAAK;YACT,OAAO,UAAU,CAAC;QACpB,KAAK,CAAC,KAAK;YACT,OAAO,UAAU,CAAC;QACpB,KAAK,CAAC,KAAK;YACT,OAAO,uBAAuB,CAAC;QACjC,KAAK,CAAC,KAAK;YACT,OAAO,UAAU,CAAC;QACpB,KAAK,CAAC,KAAK;YACT,OAAO,qBAAqB,CAAC;QAC/B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAS;IACb,IAAI,CAAmC;IACvC,IAAI,CAAyB;IAC7B,OAAO,CAAsB;IAEtC,YAAY,OAA4B;QACtC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACxC,MAAM,CAAqB;IAC3B,IAAI,CAAsB;IAEnC,YAAY,OAAe,EAAE,UAA+C,EAAE;QAC5E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}