@1claw/sdk 0.14.0 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,99 +0,0 @@
1
- import { describe, it, expect, vi, afterEach } from "vitest";
2
- import { OneclawClient, createClient } from "../core/client";
3
- const originalFetch = globalThis.fetch;
4
- afterEach(() => {
5
- globalThis.fetch = originalFetch;
6
- });
7
- function mockFetch(status, body) {
8
- return vi.fn().mockResolvedValue({
9
- ok: status >= 200 && status < 300,
10
- status,
11
- headers: new Headers(),
12
- json: () => Promise.resolve(body),
13
- });
14
- }
15
- describe("OneclawClient", () => {
16
- it("initializes all 14 resource properties", () => {
17
- globalThis.fetch = mockFetch(200, {});
18
- const client = new OneclawClient({ baseUrl: "https://api.test", token: "t" });
19
- expect(client.vault).toBeDefined();
20
- expect(client.secrets).toBeDefined();
21
- expect(client.access).toBeDefined();
22
- expect(client.agents).toBeDefined();
23
- expect(client.sharing).toBeDefined();
24
- expect(client.approvals).toBeDefined();
25
- expect(client.billing).toBeDefined();
26
- expect(client.audit).toBeDefined();
27
- expect(client.org).toBeDefined();
28
- expect(client.auth).toBeDefined();
29
- expect(client.apiKeys).toBeDefined();
30
- expect(client.chains).toBeDefined();
31
- expect(client.x402).toBeDefined();
32
- });
33
- it("auto-authenticates with agent apiKey + agentId on first request", async () => {
34
- const fetcher = vi.fn()
35
- .mockResolvedValueOnce({
36
- ok: true,
37
- status: 200,
38
- headers: new Headers(),
39
- json: () => Promise.resolve({ access_token: "agent-jwt" }),
40
- })
41
- .mockResolvedValueOnce({
42
- ok: true,
43
- status: 200,
44
- headers: new Headers(),
45
- json: () => Promise.resolve({ vaults: [] }),
46
- });
47
- globalThis.fetch = fetcher;
48
- const client = new OneclawClient({
49
- baseUrl: "https://api.test",
50
- apiKey: "ocv_abc",
51
- agentId: "agent-uuid",
52
- });
53
- // Agent auth is lazy — fires on first request, not constructor
54
- await client.vault.list();
55
- const [url, init] = fetcher.mock.calls[0];
56
- expect(url).toContain("/v1/auth/agent-token");
57
- const body = JSON.parse(init.body);
58
- expect(body.agent_id).toBe("agent-uuid");
59
- expect(body.api_key).toBe("ocv_abc");
60
- });
61
- it("auto-authenticates with user apiKey (no agentId)", async () => {
62
- const fetcher = mockFetch(200, { access_token: "user-jwt" });
63
- globalThis.fetch = fetcher;
64
- new OneclawClient({
65
- baseUrl: "https://api.test",
66
- apiKey: "1ck_abc",
67
- });
68
- await vi.waitFor(() => expect(fetcher).toHaveBeenCalled());
69
- const [url] = fetcher.mock.calls[0];
70
- expect(url).toContain("/v1/auth/api-key-token");
71
- });
72
- it("skips auto-auth when token is already provided", () => {
73
- const fetcher = mockFetch(200, {});
74
- globalThis.fetch = fetcher;
75
- new OneclawClient({
76
- baseUrl: "https://api.test",
77
- token: "existing-jwt",
78
- apiKey: "ocv_abc",
79
- });
80
- expect(fetcher).not.toHaveBeenCalled();
81
- });
82
- it("skips auto-auth when no apiKey is provided", () => {
83
- const fetcher = mockFetch(200, {});
84
- globalThis.fetch = fetcher;
85
- new OneclawClient({
86
- baseUrl: "https://api.test",
87
- token: "jwt",
88
- });
89
- expect(fetcher).not.toHaveBeenCalled();
90
- });
91
- });
92
- describe("createClient", () => {
93
- it("returns an OneclawClient instance", () => {
94
- globalThis.fetch = mockFetch(200, {});
95
- const client = createClient({ baseUrl: "https://api.test", token: "t" });
96
- expect(client).toBeInstanceOf(OneclawClient);
97
- });
98
- });
99
- //# sourceMappingURL=client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/__tests__/client.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=errors.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/errors.test.ts"],"names":[],"mappings":""}
@@ -1,125 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { OneclawError, AuthError, PaymentRequiredError, ApprovalRequiredError, NotFoundError, RateLimitError, ValidationError, ServerError, errorFromResponse, } from "../core/errors";
3
- describe("Error classes", () => {
4
- it("OneclawError stores status, type, and detail", () => {
5
- const err = new OneclawError("msg", 418, "teapot", "short and stout");
6
- expect(err.message).toBe("msg");
7
- expect(err.status).toBe(418);
8
- expect(err.type).toBe("teapot");
9
- expect(err.detail).toBe("short and stout");
10
- expect(err.name).toBe("OneclawError");
11
- expect(err).toBeInstanceOf(Error);
12
- });
13
- it("AuthError defaults to 401", () => {
14
- const err = new AuthError("bad token");
15
- expect(err.status).toBe(401);
16
- expect(err.type).toBe("auth_error");
17
- });
18
- it("AuthError accepts 403", () => {
19
- const err = new AuthError("forbidden", 403);
20
- expect(err.status).toBe(403);
21
- });
22
- it("PaymentRequiredError includes paymentRequirement", () => {
23
- const req = { x402Version: 1, accepts: [], description: "pay" };
24
- const err = new PaymentRequiredError("pay up", req);
25
- expect(err.status).toBe(402);
26
- expect(err.paymentRequirement).toBe(req);
27
- });
28
- it("ApprovalRequiredError includes approvalRequestId", () => {
29
- const err = new ApprovalRequiredError("req-123");
30
- expect(err.status).toBe(403);
31
- expect(err.approvalRequestId).toBe("req-123");
32
- expect(err.message).toContain("approval");
33
- });
34
- it("NotFoundError defaults message", () => {
35
- const err = new NotFoundError();
36
- expect(err.status).toBe(404);
37
- expect(err.message).toBe("Resource not found");
38
- });
39
- it("RateLimitError includes retryAfterMs", () => {
40
- const err = new RateLimitError("slow down", 5000);
41
- expect(err.status).toBe(429);
42
- expect(err.retryAfterMs).toBe(5000);
43
- });
44
- it("ValidationError includes fields", () => {
45
- const err = new ValidationError("bad input", { name: "required" });
46
- expect(err.status).toBe(400);
47
- expect(err.fields).toEqual({ name: "required" });
48
- });
49
- it("ServerError defaults to 500", () => {
50
- const err = new ServerError();
51
- expect(err.status).toBe(500);
52
- expect(err.type).toBe("server_error");
53
- });
54
- });
55
- describe("errorFromResponse", () => {
56
- function fakeResponse(status, body, headers) {
57
- return {
58
- status,
59
- ok: status >= 200 && status < 300,
60
- headers: new Headers(headers),
61
- json: () => Promise.resolve(body),
62
- };
63
- }
64
- it("maps 400 to ValidationError", async () => {
65
- const err = await errorFromResponse(fakeResponse(400, { detail: "bad field" }));
66
- expect(err).toBeInstanceOf(ValidationError);
67
- expect(err.message).toBe("bad field");
68
- });
69
- it("maps 401 to AuthError", async () => {
70
- const err = await errorFromResponse(fakeResponse(401, { detail: "expired" }));
71
- expect(err).toBeInstanceOf(AuthError);
72
- expect(err.status).toBe(401);
73
- });
74
- it("maps 403 to AuthError", async () => {
75
- const err = await errorFromResponse(fakeResponse(403, { detail: "forbidden" }));
76
- expect(err).toBeInstanceOf(AuthError);
77
- expect(err.status).toBe(403);
78
- });
79
- it("maps 402 to PaymentRequiredError", async () => {
80
- const body = { x402Version: 1, accepts: [], description: "pay" };
81
- const err = await errorFromResponse(fakeResponse(402, body));
82
- expect(err).toBeInstanceOf(PaymentRequiredError);
83
- });
84
- it("maps 404 to NotFoundError", async () => {
85
- const err = await errorFromResponse(fakeResponse(404, { detail: "gone" }));
86
- expect(err).toBeInstanceOf(NotFoundError);
87
- });
88
- it("maps 429 to RateLimitError with Retry-After header", async () => {
89
- const err = await errorFromResponse(fakeResponse(429, { detail: "too many" }, { "Retry-After": "5" }));
90
- expect(err).toBeInstanceOf(RateLimitError);
91
- expect(err.retryAfterMs).toBe(5000);
92
- });
93
- it("maps 500 to ServerError", async () => {
94
- const err = await errorFromResponse(fakeResponse(500, { detail: "boom" }));
95
- expect(err).toBeInstanceOf(ServerError);
96
- });
97
- it("maps 502 to ServerError", async () => {
98
- const err = await errorFromResponse(fakeResponse(502, {}));
99
- expect(err).toBeInstanceOf(ServerError);
100
- });
101
- it("maps unknown status to generic OneclawError", async () => {
102
- const err = await errorFromResponse(fakeResponse(418, { detail: "teapot" }));
103
- expect(err).toBeInstanceOf(OneclawError);
104
- expect(err.type).toBe("unknown");
105
- });
106
- it("falls back to 'HTTP {status}' when body has no message", async () => {
107
- const err = await errorFromResponse(fakeResponse(500, {}));
108
- expect(err.message).toBe("HTTP 500");
109
- });
110
- it("reads message field as fallback", async () => {
111
- const err = await errorFromResponse(fakeResponse(400, { message: "from message" }));
112
- expect(err.message).toBe("from message");
113
- });
114
- it("handles non-JSON response gracefully", async () => {
115
- const res = {
116
- status: 500,
117
- ok: false,
118
- headers: new Headers(),
119
- json: () => Promise.reject(new Error("not json")),
120
- };
121
- const err = await errorFromResponse(res);
122
- expect(err.message).toBe("HTTP 500");
123
- });
124
- });
125
- //# sourceMappingURL=errors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/__tests__/errors.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=http.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/http.test.ts"],"names":[],"mappings":""}
@@ -1,233 +0,0 @@
1
- import { describe, it, expect, vi, afterEach } from "vitest";
2
- import { HttpClient } from "../core/http";
3
- import { PaymentRequiredError } from "../core/errors";
4
- function mockFetch(status, body, headers) {
5
- return vi.fn().mockResolvedValue({
6
- ok: status >= 200 && status < 300,
7
- status,
8
- headers: new Headers(headers),
9
- json: () => Promise.resolve(body),
10
- });
11
- }
12
- describe("HttpClient", () => {
13
- const originalFetch = globalThis.fetch;
14
- afterEach(() => {
15
- globalThis.fetch = originalFetch;
16
- });
17
- it("sends GET with Bearer token", async () => {
18
- const fetcher = mockFetch(200, { id: "v1" });
19
- globalThis.fetch = fetcher;
20
- const http = new HttpClient({
21
- baseUrl: "https://api.test",
22
- token: "tok123",
23
- });
24
- const res = await http.request("GET", "/v1/vaults");
25
- expect(fetcher).toHaveBeenCalledOnce();
26
- const [url, init] = fetcher.mock.calls[0];
27
- expect(url).toBe("https://api.test/v1/vaults");
28
- expect(init.method).toBe("GET");
29
- expect(init.headers["Authorization"]).toBe("Bearer tok123");
30
- expect(res.data).toEqual({ id: "v1" });
31
- expect(res.error).toBeNull();
32
- expect(res.meta?.status).toBe(200);
33
- });
34
- it("sends POST with JSON body", async () => {
35
- const fetcher = mockFetch(201, { id: "new" });
36
- globalThis.fetch = fetcher;
37
- const http = new HttpClient({
38
- baseUrl: "https://api.test",
39
- token: "t",
40
- });
41
- await http.request("POST", "/v1/vaults", { body: { name: "test" } });
42
- const [, init] = fetcher.mock.calls[0];
43
- expect(init.body).toBe(JSON.stringify({ name: "test" }));
44
- expect(init.headers["Content-Type"]).toBe("application/json");
45
- });
46
- it("omits Authorization when no token", async () => {
47
- const fetcher = mockFetch(200, {});
48
- globalThis.fetch = fetcher;
49
- const http = new HttpClient({ baseUrl: "https://api.test" });
50
- await http.request("GET", "/v1/health");
51
- const [, init] = fetcher.mock.calls[0];
52
- expect(init.headers["Authorization"]).toBeUndefined();
53
- });
54
- it("strips trailing slash from baseUrl", async () => {
55
- const fetcher = mockFetch(200, {});
56
- globalThis.fetch = fetcher;
57
- const http = new HttpClient({ baseUrl: "https://api.test/" });
58
- await http.request("GET", "/v1/health");
59
- expect(fetcher.mock.calls[0][0]).toBe("https://api.test/v1/health");
60
- });
61
- it("appends query parameters and skips undefined values", async () => {
62
- const fetcher = mockFetch(200, {});
63
- globalThis.fetch = fetcher;
64
- const http = new HttpClient({
65
- baseUrl: "https://api.test",
66
- token: "t",
67
- });
68
- await http.request("GET", "/v1/secrets", {
69
- query: { prefix: "db", limit: 10, missing: undefined },
70
- });
71
- const url = new URL(fetcher.mock.calls[0][0]);
72
- expect(url.searchParams.get("prefix")).toBe("db");
73
- expect(url.searchParams.get("limit")).toBe("10");
74
- expect(url.searchParams.has("missing")).toBe(false);
75
- });
76
- it("returns null data for 204 No Content", async () => {
77
- globalThis.fetch = mockFetch(204, null);
78
- const http = new HttpClient({
79
- baseUrl: "https://api.test",
80
- token: "t",
81
- });
82
- const res = await http.request("DELETE", "/v1/vaults/abc");
83
- expect(res.data).toBeNull();
84
- expect(res.error).toBeNull();
85
- expect(res.meta?.status).toBe(204);
86
- });
87
- it("returns error envelope on non-ok responses", async () => {
88
- globalThis.fetch = mockFetch(404, { detail: "Vault not found" });
89
- const http = new HttpClient({
90
- baseUrl: "https://api.test",
91
- token: "t",
92
- });
93
- const res = await http.request("GET", "/v1/vaults/missing");
94
- expect(res.data).toBeNull();
95
- expect(res.error).toBeTruthy();
96
- expect(res.error?.type).toBe("not_found");
97
- expect(res.error?.message).toBe("Vault not found");
98
- expect(res.meta?.status).toBe(404);
99
- });
100
- it("requestOrThrow throws on error responses", async () => {
101
- globalThis.fetch = mockFetch(401, { detail: "Invalid token" });
102
- const http = new HttpClient({
103
- baseUrl: "https://api.test",
104
- token: "bad",
105
- });
106
- await expect(http.requestOrThrow("GET", "/v1/vaults")).rejects.toThrow("Invalid token");
107
- });
108
- it("requestOrThrow returns data on success", async () => {
109
- globalThis.fetch = mockFetch(200, { vaults: [] });
110
- const http = new HttpClient({
111
- baseUrl: "https://api.test",
112
- token: "t",
113
- });
114
- const data = await http.requestOrThrow("GET", "/v1/vaults");
115
- expect(data.vaults).toEqual([]);
116
- });
117
- it("setToken/getToken updates the auth header", async () => {
118
- const fetcher = mockFetch(200, {});
119
- globalThis.fetch = fetcher;
120
- const http = new HttpClient({ baseUrl: "https://api.test" });
121
- expect(http.getToken()).toBeUndefined();
122
- http.setToken("new-jwt");
123
- expect(http.getToken()).toBe("new-jwt");
124
- await http.request("GET", "/v1/vaults");
125
- expect(fetcher.mock.calls[0][1].headers["Authorization"]).toBe("Bearer new-jwt");
126
- });
127
- describe("x402 auto-payment", () => {
128
- const paymentRequirement = {
129
- x402Version: 1,
130
- accepts: [
131
- {
132
- scheme: "exact",
133
- network: "eip155:8453",
134
- payTo: "0xabc",
135
- maxAmountRequired: "1000",
136
- resource: "https://api.test/v1/vaults/v1/secrets/key",
137
- maxTimeoutSeconds: 60,
138
- asset: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
139
- description: "Pay per query",
140
- mimeType: "application/json",
141
- price: "0.001",
142
- },
143
- ],
144
- description: "Pay per query",
145
- };
146
- it("retries with X-PAYMENT header when signer is configured", async () => {
147
- const signer = {
148
- getAddress: vi.fn().mockResolvedValue("0xsigner"),
149
- signPayment: vi.fn().mockResolvedValue("sig-bytes"),
150
- };
151
- let callCount = 0;
152
- globalThis.fetch = vi.fn().mockImplementation(() => {
153
- callCount++;
154
- if (callCount === 1) {
155
- return Promise.resolve({
156
- ok: false,
157
- status: 402,
158
- headers: new Headers(),
159
- json: () => Promise.resolve(paymentRequirement),
160
- });
161
- }
162
- return Promise.resolve({
163
- ok: true,
164
- status: 200,
165
- headers: new Headers(),
166
- json: () => Promise.resolve({ value: "secret" }),
167
- });
168
- });
169
- const http = new HttpClient({
170
- baseUrl: "https://api.test",
171
- token: "t",
172
- x402Signer: signer,
173
- maxAutoPayUsd: 1,
174
- });
175
- const res = await http.request("GET", "/v1/vaults/v1/secrets/key");
176
- expect(signer.signPayment).toHaveBeenCalledWith(paymentRequirement.accepts[0]);
177
- expect(globalThis.fetch).toHaveBeenCalledTimes(2);
178
- const retryHeaders = globalThis.fetch
179
- .mock.calls[1][1].headers;
180
- expect(retryHeaders["X-PAYMENT"]).toBeDefined();
181
- expect(res.data).toEqual({ value: "secret" });
182
- });
183
- it("throws PaymentRequiredError when maxAutoPayUsd is 0", async () => {
184
- globalThis.fetch = vi.fn().mockResolvedValue({
185
- ok: false,
186
- status: 402,
187
- headers: new Headers(),
188
- json: () => Promise.resolve(paymentRequirement),
189
- });
190
- const signer = {
191
- getAddress: vi.fn(),
192
- signPayment: vi.fn(),
193
- };
194
- const http = new HttpClient({
195
- baseUrl: "https://api.test",
196
- token: "t",
197
- x402Signer: signer,
198
- maxAutoPayUsd: 0,
199
- });
200
- await expect(http.request("GET", "/v1/test")).rejects.toThrow(PaymentRequiredError);
201
- });
202
- it("throws when payment exceeds maxAutoPayUsd", async () => {
203
- const expensiveRequirement = {
204
- ...paymentRequirement,
205
- accepts: [
206
- {
207
- ...paymentRequirement.accepts[0],
208
- price: "100.0",
209
- maxAmountRequired: "100000000",
210
- },
211
- ],
212
- };
213
- globalThis.fetch = vi.fn().mockResolvedValue({
214
- ok: false,
215
- status: 402,
216
- headers: new Headers(),
217
- json: () => Promise.resolve(expensiveRequirement),
218
- });
219
- const signer = {
220
- getAddress: vi.fn(),
221
- signPayment: vi.fn(),
222
- };
223
- const http = new HttpClient({
224
- baseUrl: "https://api.test",
225
- token: "t",
226
- x402Signer: signer,
227
- maxAutoPayUsd: 1,
228
- });
229
- await expect(http.request("GET", "/v1/test")).rejects.toThrow(/exceeds auto-pay limit/);
230
- });
231
- });
232
- });
233
- //# sourceMappingURL=http.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.test.js","sourceRoot":"","sources":["../../src/__tests__/http.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=resources.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resources.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/resources.test.ts"],"names":[],"mappings":""}