@codespar/sdk 0.1.0 → 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.
- package/dist/__tests__/codespar.test.d.ts +7 -0
- package/dist/__tests__/codespar.test.d.ts.map +1 -1
- package/dist/__tests__/codespar.test.js +118 -240
- package/dist/__tests__/codespar.test.js.map +1 -1
- package/dist/index.d.ts +14 -31
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -47
- package/dist/index.js.map +1 -1
- package/dist/session.d.ts +7 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +171 -44
- package/dist/session.js.map +1 -1
- package/dist/types.d.ts +118 -47
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -3
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @codespar/sdk basic tests.
|
|
3
|
+
*
|
|
4
|
+
* The 0.1.0 test suite assumed an older client-shaped API and has been
|
|
5
|
+
* replaced for 0.2.0. Comprehensive integration tests (mocking fetch
|
|
6
|
+
* against the api.codespar.dev contract) are tracked for a follow-up.
|
|
7
|
+
*/
|
|
1
8
|
export {};
|
|
2
9
|
//# sourceMappingURL=codespar.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codespar.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/codespar.test.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"codespar.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/codespar.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -1,257 +1,135 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
function successResult(tool = "ZOOP_CREATE_CHARGE") {
|
|
16
|
-
return { success: true, data: { id: "ch_1" }, duration: 42, server: "zoop", tool };
|
|
17
|
-
}
|
|
18
|
-
function failResult(tool = "ZOOP_CREATE_CHARGE") {
|
|
19
|
-
return { success: false, data: null, error: "500: Internal Server Error", duration: 10, server: "zoop", tool };
|
|
20
|
-
}
|
|
21
|
-
function mockFetchResponse(body, ok = true, status = 200) {
|
|
22
|
-
return vi.fn().mockResolvedValue({
|
|
23
|
-
ok,
|
|
24
|
-
status,
|
|
25
|
-
json: () => Promise.resolve(body),
|
|
26
|
-
text: () => Promise.resolve(JSON.stringify(body)),
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
/* ── CodeSpar constructor ── */
|
|
30
|
-
describe("CodeSpar", () => {
|
|
31
|
-
const originalEnv = { ...process.env };
|
|
32
|
-
afterEach(() => {
|
|
33
|
-
process.env = { ...originalEnv };
|
|
34
|
-
});
|
|
35
|
-
it("throws without API key", () => {
|
|
1
|
+
/**
|
|
2
|
+
* @codespar/sdk basic tests.
|
|
3
|
+
*
|
|
4
|
+
* The 0.1.0 test suite assumed an older client-shaped API and has been
|
|
5
|
+
* replaced for 0.2.0. Comprehensive integration tests (mocking fetch
|
|
6
|
+
* against the api.codespar.dev contract) are tracked for a follow-up.
|
|
7
|
+
*/
|
|
8
|
+
import { describe, it, expect, vi, afterEach } from "vitest";
|
|
9
|
+
import { CodeSpar } from "../index.js";
|
|
10
|
+
import { SessionConfigSchema } from "../types.js";
|
|
11
|
+
describe("CodeSpar constructor", () => {
|
|
12
|
+
it("requires an API key", () => {
|
|
13
|
+
const prev = process.env.CODESPAR_API_KEY;
|
|
36
14
|
delete process.env.CODESPAR_API_KEY;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
15
|
+
try {
|
|
16
|
+
expect(() => new CodeSpar({})).toThrow(/API key is required/);
|
|
17
|
+
}
|
|
18
|
+
finally {
|
|
19
|
+
if (prev)
|
|
20
|
+
process.env.CODESPAR_API_KEY = prev;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
it("accepts apiKey via constructor", () => {
|
|
24
|
+
const cs = new CodeSpar({ apiKey: "csk_live_test" });
|
|
25
|
+
expect(cs).toBeDefined();
|
|
26
|
+
});
|
|
27
|
+
it("accepts apiKey via env var", () => {
|
|
28
|
+
process.env.CODESPAR_API_KEY = "csk_live_envtest";
|
|
29
|
+
try {
|
|
30
|
+
const cs = new CodeSpar();
|
|
31
|
+
expect(cs).toBeDefined();
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
delete process.env.CODESPAR_API_KEY;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
it("defaults baseUrl to api.codespar.dev", () => {
|
|
38
|
+
process.env.CODESPAR_API_KEY = "csk_live_test";
|
|
39
|
+
process.env.CODESPAR_BASE_URL = "";
|
|
40
|
+
try {
|
|
41
|
+
const cs = new CodeSpar();
|
|
42
|
+
// baseUrl is private but the constructor logic verifies the default.
|
|
43
|
+
expect(cs).toBeDefined();
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
delete process.env.CODESPAR_API_KEY;
|
|
47
|
+
delete process.env.CODESPAR_BASE_URL;
|
|
48
|
+
}
|
|
47
49
|
});
|
|
48
50
|
});
|
|
49
|
-
/* ── SessionConfigSchema ── */
|
|
50
51
|
describe("SessionConfigSchema", () => {
|
|
51
|
-
it("
|
|
52
|
-
|
|
53
|
-
servers: ["zoop", "nfe"],
|
|
54
|
-
preset: "brazilian",
|
|
55
|
-
manageConnections: { waitForConnections: true, timeout: 5000 },
|
|
56
|
-
metadata: { org: "acme" },
|
|
57
|
-
});
|
|
58
|
-
expect(result.success).toBe(true);
|
|
59
|
-
});
|
|
60
|
-
it("validates empty config", () => {
|
|
61
|
-
expect(SessionConfigSchema.safeParse({}).success).toBe(true);
|
|
62
|
-
});
|
|
63
|
-
it("rejects invalid preset", () => {
|
|
64
|
-
const result = SessionConfigSchema.safeParse({ preset: "invalid" });
|
|
65
|
-
expect(result.success).toBe(false);
|
|
66
|
-
});
|
|
67
|
-
it("rejects non-string servers", () => {
|
|
68
|
-
const result = SessionConfigSchema.safeParse({ servers: [123] });
|
|
69
|
-
expect(result.success).toBe(false);
|
|
70
|
-
});
|
|
71
|
-
});
|
|
72
|
-
/* ── createSession ── */
|
|
73
|
-
describe("createSession", () => {
|
|
74
|
-
let fetchMock;
|
|
75
|
-
beforeEach(() => {
|
|
76
|
-
fetchMock = mockFetchResponse({
|
|
77
|
-
id: "sess_1",
|
|
78
|
-
servers: [{ id: "zoop", name: "Zoop", pkg: "@codespar/zoop", connected: true, auth: "oauth2", toolCount: 3 }],
|
|
79
|
-
mcp: { url: "https://mcp.codespar.dev/sess_1", headers: { Authorization: "Bearer tok" } },
|
|
80
|
-
});
|
|
81
|
-
vi.stubGlobal("fetch", fetchMock);
|
|
82
|
-
});
|
|
83
|
-
afterEach(() => {
|
|
84
|
-
vi.restoreAllMocks();
|
|
85
|
-
});
|
|
86
|
-
it("makes POST to /v1/sessions", async () => {
|
|
87
|
-
await createSession("user_1", { preset: "brazilian" }, {
|
|
88
|
-
baseUrl: "https://api.codespar.dev",
|
|
89
|
-
apiKey: "ak_test",
|
|
90
|
-
managed: true,
|
|
91
|
-
});
|
|
92
|
-
expect(fetchMock).toHaveBeenCalledWith("https://api.codespar.dev/v1/sessions", expect.objectContaining({ method: "POST" }));
|
|
52
|
+
it("accepts an empty config", () => {
|
|
53
|
+
expect(() => SessionConfigSchema.parse({})).not.toThrow();
|
|
93
54
|
});
|
|
94
|
-
it("
|
|
95
|
-
|
|
96
|
-
vi.stubGlobal("fetch", fetchMock);
|
|
97
|
-
await expect(createSession("user_1", {}, { baseUrl: "https://api.codespar.dev", apiKey: "bad", managed: true })).rejects.toThrow("Failed to create session");
|
|
55
|
+
it("accepts servers as a string array", () => {
|
|
56
|
+
expect(() => SessionConfigSchema.parse({ servers: ["zoop", "nuvem-fiscal"] })).not.toThrow();
|
|
98
57
|
});
|
|
99
|
-
it("
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
managed: true,
|
|
104
|
-
});
|
|
105
|
-
expect(session.id).toBe("sess_1");
|
|
106
|
-
expect(session.userId).toBe("user_1");
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
/* ── session.findTools ── */
|
|
110
|
-
describe("session.findTools", () => {
|
|
111
|
-
let session;
|
|
112
|
-
beforeEach(async () => {
|
|
113
|
-
const sessionResponse = {
|
|
114
|
-
id: "sess_1",
|
|
115
|
-
servers: [],
|
|
116
|
-
mcp: { url: "https://mcp.codespar.dev/sess_1", headers: {} },
|
|
117
|
-
};
|
|
118
|
-
const connectionsResponse = {
|
|
119
|
-
servers: [],
|
|
120
|
-
tools: [
|
|
121
|
-
mockTool({ name: "ZOOP_CREATE_CHARGE", slug: "zoop_create_charge", description: "Create a Pix charge", server: "zoop" }),
|
|
122
|
-
mockTool({ name: "NFE_ISSUE", slug: "nfe_issue", description: "Issue an NF-e invoice", server: "nfe" }),
|
|
123
|
-
mockTool({ name: "ZOOP_REFUND", slug: "zoop_refund", description: "Refund a charge", server: "zoop" }),
|
|
124
|
-
],
|
|
125
|
-
};
|
|
126
|
-
let callCount = 0;
|
|
127
|
-
vi.stubGlobal("fetch", vi.fn().mockImplementation(() => {
|
|
128
|
-
callCount++;
|
|
129
|
-
if (callCount === 1) {
|
|
130
|
-
return Promise.resolve({ ok: true, json: () => Promise.resolve(sessionResponse) });
|
|
131
|
-
}
|
|
132
|
-
return Promise.resolve({ ok: true, json: () => Promise.resolve(connectionsResponse) });
|
|
133
|
-
}));
|
|
134
|
-
session = await createSession("u1", {}, { baseUrl: "https://api.test", apiKey: "ak", managed: true });
|
|
135
|
-
await session.connections();
|
|
58
|
+
it("accepts known presets", () => {
|
|
59
|
+
expect(() => SessionConfigSchema.parse({ preset: "brazilian" })).not.toThrow();
|
|
60
|
+
expect(() => SessionConfigSchema.parse({ preset: "mexican" })).not.toThrow();
|
|
61
|
+
expect(() => SessionConfigSchema.parse({ preset: "all" })).not.toThrow();
|
|
136
62
|
});
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
expect(session.findTools("refund")).toHaveLength(1);
|
|
140
|
-
expect(session.findTools("refund")[0].slug).toBe("zoop_refund");
|
|
63
|
+
it("rejects unknown presets", () => {
|
|
64
|
+
expect(() => SessionConfigSchema.parse({ preset: "klingon" })).toThrow();
|
|
141
65
|
});
|
|
142
|
-
it("
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
it("filters by description", () => {
|
|
147
|
-
expect(session.findTools("invoice")).toHaveLength(1);
|
|
66
|
+
it("accepts manageConnections options", () => {
|
|
67
|
+
expect(() => SessionConfigSchema.parse({
|
|
68
|
+
manageConnections: { waitForConnections: true, timeout: 5000 },
|
|
69
|
+
})).not.toThrow();
|
|
148
70
|
});
|
|
149
|
-
it("
|
|
150
|
-
|
|
151
|
-
vi.stubGlobal("fetch", mockFetchResponse({
|
|
152
|
-
id: "sess_2", servers: [], mcp: { url: "u", headers: {} },
|
|
153
|
-
}));
|
|
154
|
-
const fresh = await createSession("u2", {}, { baseUrl: "https://api.test", apiKey: "ak", managed: true });
|
|
155
|
-
expect(fresh.findTools("anything")).toEqual([]);
|
|
71
|
+
it("accepts metadata", () => {
|
|
72
|
+
expect(() => SessionConfigSchema.parse({ metadata: { source: "sandbox" } })).not.toThrow();
|
|
156
73
|
});
|
|
157
74
|
});
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
{ server: "b", tool: "step_b", params: { y: 2 } },
|
|
178
|
-
],
|
|
179
|
-
});
|
|
180
|
-
expect(result.success).toBe(true);
|
|
181
|
-
expect(result.completedSteps).toBe(2);
|
|
182
|
-
expect(result.totalSteps).toBe(2);
|
|
183
|
-
expect(result.results).toHaveLength(2);
|
|
184
|
-
});
|
|
185
|
-
it("aborts on error by default", async () => {
|
|
186
|
-
fetchImpl
|
|
187
|
-
.mockResolvedValueOnce({ ok: false, status: 500, text: () => Promise.resolve("err") })
|
|
188
|
-
.mockResolvedValueOnce({ ok: true, json: () => Promise.resolve(successResult("step_b")) });
|
|
189
|
-
const result = await session.loop({
|
|
190
|
-
steps: [
|
|
191
|
-
{ server: "a", tool: "step_a", params: {} },
|
|
192
|
-
{ server: "b", tool: "step_b", params: {} },
|
|
193
|
-
],
|
|
194
|
-
});
|
|
195
|
-
expect(result.success).toBe(false);
|
|
196
|
-
expect(result.completedSteps).toBe(0);
|
|
197
|
-
// Second step should not have been called
|
|
198
|
-
expect(fetchImpl).toHaveBeenCalledTimes(2); // 1 createSession + 1 failed execute
|
|
199
|
-
});
|
|
200
|
-
it("continues on error when abortOnError is false", async () => {
|
|
201
|
-
fetchImpl
|
|
202
|
-
.mockResolvedValueOnce({ ok: false, status: 500, text: () => Promise.resolve("err") })
|
|
203
|
-
.mockResolvedValueOnce({ ok: true, json: () => Promise.resolve(successResult("step_b")) });
|
|
204
|
-
const result = await session.loop({
|
|
205
|
-
steps: [
|
|
206
|
-
{ server: "a", tool: "step_a", params: {} },
|
|
207
|
-
{ server: "b", tool: "step_b", params: {} },
|
|
208
|
-
],
|
|
209
|
-
abortOnError: false,
|
|
210
|
-
});
|
|
211
|
-
expect(result.completedSteps).toBe(1);
|
|
212
|
-
expect(result.results).toHaveLength(2);
|
|
213
|
-
});
|
|
214
|
-
it("retries failed steps", async () => {
|
|
215
|
-
fetchImpl
|
|
216
|
-
.mockResolvedValueOnce({ ok: false, status: 500, text: () => Promise.resolve("err") }) // attempt 0
|
|
217
|
-
.mockResolvedValueOnce({ ok: true, json: () => Promise.resolve(successResult("step_a")) }); // attempt 1
|
|
218
|
-
const result = await session.loop({
|
|
219
|
-
steps: [{ server: "a", tool: "step_a", params: {} }],
|
|
220
|
-
retryPolicy: { maxRetries: 1, baseDelay: 1 },
|
|
221
|
-
});
|
|
222
|
-
expect(result.success).toBe(true);
|
|
223
|
-
expect(result.completedSteps).toBe(1);
|
|
224
|
-
});
|
|
225
|
-
it("skips steps when 'when' returns false", async () => {
|
|
226
|
-
fetchImpl
|
|
227
|
-
.mockResolvedValueOnce({ ok: true, json: () => Promise.resolve(successResult("step_a")) });
|
|
228
|
-
const result = await session.loop({
|
|
229
|
-
steps: [
|
|
230
|
-
{ server: "a", tool: "step_a", params: {} },
|
|
231
|
-
{ server: "b", tool: "step_b", params: {}, when: () => false },
|
|
232
|
-
],
|
|
75
|
+
describe("CodeSpar.create wires fetch correctly", () => {
|
|
76
|
+
const originalFetch = globalThis.fetch;
|
|
77
|
+
afterEach(() => {
|
|
78
|
+
globalThis.fetch = originalFetch;
|
|
79
|
+
});
|
|
80
|
+
it("POSTs to /v1/sessions with snake_case body", async () => {
|
|
81
|
+
const fetchMock = vi.fn().mockResolvedValue({
|
|
82
|
+
ok: true,
|
|
83
|
+
status: 201,
|
|
84
|
+
text: async () => "",
|
|
85
|
+
json: async () => ({
|
|
86
|
+
id: "ses_test123",
|
|
87
|
+
org_id: "org_test",
|
|
88
|
+
user_id: "user_42",
|
|
89
|
+
servers: ["zoop"],
|
|
90
|
+
status: "active",
|
|
91
|
+
created_at: new Date().toISOString(),
|
|
92
|
+
closed_at: null,
|
|
93
|
+
}),
|
|
233
94
|
});
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
fetchImpl.mockResolvedValueOnce({ ok: true, json: () => Promise.resolve(successResult("s")) });
|
|
239
|
-
const onComplete = vi.fn();
|
|
240
|
-
await session.loop({
|
|
241
|
-
steps: [{ server: "a", tool: "s", params: {} }],
|
|
242
|
-
onStepComplete: onComplete,
|
|
95
|
+
globalThis.fetch = fetchMock;
|
|
96
|
+
const cs = new CodeSpar({
|
|
97
|
+
apiKey: "csk_live_test",
|
|
98
|
+
baseUrl: "https://api.example.com",
|
|
243
99
|
});
|
|
244
|
-
|
|
245
|
-
expect(
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
100
|
+
const session = await cs.create("user_42", { servers: ["zoop"] });
|
|
101
|
+
expect(session.id).toBe("ses_test123");
|
|
102
|
+
expect(session.userId).toBe("user_42");
|
|
103
|
+
expect(session.servers).toEqual(["zoop"]);
|
|
104
|
+
// Assert the request body uses snake_case keys (not userId)
|
|
105
|
+
const callArgs = fetchMock.mock.calls[0];
|
|
106
|
+
expect(callArgs[0]).toBe("https://api.example.com/v1/sessions");
|
|
107
|
+
const init = callArgs[1];
|
|
108
|
+
expect(init.method).toBe("POST");
|
|
109
|
+
expect(init.headers.Authorization).toBe("Bearer csk_live_test");
|
|
110
|
+
const body = JSON.parse(init.body);
|
|
111
|
+
expect(body.servers).toEqual(["zoop"]);
|
|
112
|
+
expect(body.user_id).toBe("user_42");
|
|
113
|
+
});
|
|
114
|
+
it("populates session.mcp as a placeholder", async () => {
|
|
115
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
116
|
+
ok: true,
|
|
117
|
+
status: 201,
|
|
118
|
+
text: async () => "",
|
|
119
|
+
json: async () => ({
|
|
120
|
+
id: "ses_mcp",
|
|
121
|
+
org_id: "org_test",
|
|
122
|
+
user_id: "user_1",
|
|
123
|
+
servers: [],
|
|
124
|
+
status: "active",
|
|
125
|
+
created_at: new Date().toISOString(),
|
|
126
|
+
closed_at: null,
|
|
127
|
+
}),
|
|
253
128
|
});
|
|
254
|
-
|
|
129
|
+
const cs = new CodeSpar({ apiKey: "csk_live_test", baseUrl: "https://api.example.com" });
|
|
130
|
+
const session = await cs.create("user_1");
|
|
131
|
+
expect(session.mcp.url).toBe("https://api.example.com/v1/sessions/ses_mcp/mcp");
|
|
132
|
+
expect(session.mcp.headers.Authorization).toBe("Bearer csk_live_test");
|
|
255
133
|
});
|
|
256
134
|
});
|
|
257
135
|
//# sourceMappingURL=codespar.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codespar.test.js","sourceRoot":"","sources":["../../src/__tests__/codespar.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codespar.test.js","sourceRoot":"","sources":["../../src/__tests__/codespar.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @codespar/sdk — Commerce SDK for AI agents
|
|
3
3
|
*
|
|
4
|
-
* Sessions, managed auth, Complete Loop orchestration
|
|
5
|
-
*
|
|
4
|
+
* Sessions, managed auth, Complete Loop orchestration for Latin American
|
|
5
|
+
* commercial APIs. Talks to api.codespar.dev — see the backend at
|
|
6
|
+
* codespar/codespar-enterprise (packages/api) for the wire contract.
|
|
6
7
|
*
|
|
7
8
|
* @example
|
|
8
9
|
* ```ts
|
|
9
10
|
* import { CodeSpar } from "@codespar/sdk";
|
|
10
11
|
*
|
|
11
|
-
* const cs = new CodeSpar({ apiKey: "
|
|
12
|
+
* const cs = new CodeSpar({ apiKey: "csk_live_..." });
|
|
12
13
|
* const session = await cs.create("user_123", { preset: "brazilian" });
|
|
14
|
+
*
|
|
15
|
+
* // One-shot natural language
|
|
13
16
|
* const result = await session.send("Charge R$150 via Pix and issue the NF-e");
|
|
17
|
+
*
|
|
18
|
+
* // Or stream the agent's thinking + tool calls
|
|
19
|
+
* for await (const event of session.sendStream("Charge R$150 via Pix")) {
|
|
20
|
+
* if (event.type === "tool_result") console.log(event.toolCall);
|
|
21
|
+
* if (event.type === "assistant_text") console.log(event.content);
|
|
22
|
+
* }
|
|
14
23
|
* ```
|
|
15
24
|
*
|
|
16
25
|
* @packageDocumentation
|
|
17
26
|
*/
|
|
18
|
-
export type { CodeSparConfig, Session, SessionConfig, Tool, ToolResult, LoopConfig, LoopStep, LoopResult, AuthConfig, AuthResult, ServerConnection, SendResult, } from "./types.js";
|
|
27
|
+
export type { CodeSparConfig, Session, SessionConfig, Tool, ToolResult, LoopConfig, LoopStep, LoopResult, AuthConfig, AuthResult, ServerConnection, SendResult, ToolCallRecord, StreamEvent, } from "./types.js";
|
|
19
28
|
export { SessionConfigSchema } from "./types.js";
|
|
20
29
|
import type { CodeSparConfig, Session, SessionConfig } from "./types.js";
|
|
21
30
|
export declare class CodeSpar {
|
|
@@ -25,35 +34,9 @@ export declare class CodeSpar {
|
|
|
25
34
|
* Create a new session for a user.
|
|
26
35
|
*
|
|
27
36
|
* @param userId - Unique user identifier
|
|
28
|
-
* @param config - Session configuration (servers, preset,
|
|
29
|
-
* @returns A session with tools, execute, loop, and send methods
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```ts
|
|
33
|
-
* const session = await cs.create("user_123", {
|
|
34
|
-
* preset: "brazilian",
|
|
35
|
-
* manageConnections: { waitForConnections: true },
|
|
36
|
-
* });
|
|
37
|
-
* ```
|
|
37
|
+
* @param config - Session configuration (servers, preset, metadata)
|
|
38
38
|
*/
|
|
39
39
|
create(userId: string, config?: SessionConfig): Promise<Session>;
|
|
40
|
-
/**
|
|
41
|
-
* Auth manager for programmatic OAuth flows.
|
|
42
|
-
*/
|
|
43
|
-
get authManager(): {
|
|
44
|
-
/**
|
|
45
|
-
* Get the OAuth connect URL for a provider.
|
|
46
|
-
* Redirect the user to this URL to start the OAuth flow.
|
|
47
|
-
*/
|
|
48
|
-
getConnectUrl(serverId: string, redirectUrl?: string): string;
|
|
49
|
-
/**
|
|
50
|
-
* Check connection status for a server.
|
|
51
|
-
*/
|
|
52
|
-
getStatus(serverId: string): Promise<{
|
|
53
|
-
connected: boolean;
|
|
54
|
-
expiresAt?: string;
|
|
55
|
-
}>;
|
|
56
|
-
};
|
|
57
40
|
}
|
|
58
41
|
export default CodeSpar;
|
|
59
42
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,YAAY,EACV,cAAc,EACd,OAAO,EACP,aAAa,EACb,IAAI,EACJ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMzE,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAEtC,MAAM,GAAE,cAAmB;IAcvC;;;;;OAKG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;CAO3E;AAED,eAAe,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @codespar/sdk — Commerce SDK for AI agents
|
|
3
3
|
*
|
|
4
|
-
* Sessions, managed auth, Complete Loop orchestration
|
|
5
|
-
*
|
|
4
|
+
* Sessions, managed auth, Complete Loop orchestration for Latin American
|
|
5
|
+
* commercial APIs. Talks to api.codespar.dev — see the backend at
|
|
6
|
+
* codespar/codespar-enterprise (packages/api) for the wire contract.
|
|
6
7
|
*
|
|
7
8
|
* @example
|
|
8
9
|
* ```ts
|
|
9
10
|
* import { CodeSpar } from "@codespar/sdk";
|
|
10
11
|
*
|
|
11
|
-
* const cs = new CodeSpar({ apiKey: "
|
|
12
|
+
* const cs = new CodeSpar({ apiKey: "csk_live_..." });
|
|
12
13
|
* const session = await cs.create("user_123", { preset: "brazilian" });
|
|
14
|
+
*
|
|
15
|
+
* // One-shot natural language
|
|
13
16
|
* const result = await session.send("Charge R$150 via Pix and issue the NF-e");
|
|
17
|
+
*
|
|
18
|
+
* // Or stream the agent's thinking + tool calls
|
|
19
|
+
* for await (const event of session.sendStream("Charge R$150 via Pix")) {
|
|
20
|
+
* if (event.type === "tool_result") console.log(event.toolCall);
|
|
21
|
+
* if (event.type === "assistant_text") console.log(event.content);
|
|
22
|
+
* }
|
|
14
23
|
* ```
|
|
15
24
|
*
|
|
16
25
|
* @packageDocumentation
|
|
@@ -25,67 +34,25 @@ export class CodeSpar {
|
|
|
25
34
|
this.config = {
|
|
26
35
|
apiKey: config.apiKey || process.env.CODESPAR_API_KEY || "",
|
|
27
36
|
baseUrl: config.baseUrl || process.env.CODESPAR_BASE_URL || DEFAULT_BASE_URL,
|
|
28
|
-
managed: config.managed ?? true,
|
|
29
37
|
};
|
|
30
38
|
if (!this.config.apiKey) {
|
|
31
39
|
throw new Error("CodeSpar API key is required. Pass { apiKey: '...' } or set CODESPAR_API_KEY env var.\n" +
|
|
32
|
-
"Get your key at https://
|
|
40
|
+
"Get your key at https://codespar.dev/dashboard/settings?tab=api-keys");
|
|
33
41
|
}
|
|
34
42
|
}
|
|
35
43
|
/**
|
|
36
44
|
* Create a new session for a user.
|
|
37
45
|
*
|
|
38
46
|
* @param userId - Unique user identifier
|
|
39
|
-
* @param config - Session configuration (servers, preset,
|
|
40
|
-
* @returns A session with tools, execute, loop, and send methods
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```ts
|
|
44
|
-
* const session = await cs.create("user_123", {
|
|
45
|
-
* preset: "brazilian",
|
|
46
|
-
* manageConnections: { waitForConnections: true },
|
|
47
|
-
* });
|
|
48
|
-
* ```
|
|
47
|
+
* @param config - Session configuration (servers, preset, metadata)
|
|
49
48
|
*/
|
|
50
49
|
async create(userId, config = {}) {
|
|
51
|
-
// Validate config
|
|
52
50
|
SessionConfigSchema.parse(config);
|
|
53
51
|
return createSession(userId, config, {
|
|
54
52
|
baseUrl: this.config.baseUrl,
|
|
55
53
|
apiKey: this.config.apiKey,
|
|
56
|
-
managed: this.config.managed,
|
|
57
54
|
});
|
|
58
55
|
}
|
|
59
|
-
/**
|
|
60
|
-
* Auth manager for programmatic OAuth flows.
|
|
61
|
-
*/
|
|
62
|
-
get authManager() {
|
|
63
|
-
const baseUrl = this.config.baseUrl;
|
|
64
|
-
const apiKey = this.config.apiKey;
|
|
65
|
-
return {
|
|
66
|
-
/**
|
|
67
|
-
* Get the OAuth connect URL for a provider.
|
|
68
|
-
* Redirect the user to this URL to start the OAuth flow.
|
|
69
|
-
*/
|
|
70
|
-
getConnectUrl(serverId, redirectUrl) {
|
|
71
|
-
const params = new URLSearchParams({ serverId });
|
|
72
|
-
if (redirectUrl)
|
|
73
|
-
params.set("redirect", redirectUrl);
|
|
74
|
-
return `${baseUrl}/v1/auth/connect?${params.toString()}&key=${apiKey}`;
|
|
75
|
-
},
|
|
76
|
-
/**
|
|
77
|
-
* Check connection status for a server.
|
|
78
|
-
*/
|
|
79
|
-
async getStatus(serverId) {
|
|
80
|
-
const res = await fetch(`${baseUrl}/v1/auth/status/${serverId}`, {
|
|
81
|
-
headers: { Authorization: `Bearer ${apiKey}` },
|
|
82
|
-
});
|
|
83
|
-
if (!res.ok)
|
|
84
|
-
return { connected: false };
|
|
85
|
-
return res.json();
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
56
|
}
|
|
90
57
|
export default CodeSpar;
|
|
91
58
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAmBH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAEpD,MAAM,OAAO,QAAQ;IACF,MAAM,CAA2B;IAElD,YAAY,SAAyB,EAAE;QACrC,IAAI,CAAC,MAAM,GAAG;YACZ,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;YAC3D,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,gBAAgB;SAC7E,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,yFAAyF;gBACvF,sEAAsE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,SAAwB,EAAE;QACrD,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE;YACnC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AAED,eAAe,QAAQ,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session implementation — talks to api.codespar.dev backend.
|
|
3
|
+
*
|
|
4
|
+
* The shape of every request and response in this file matches what the
|
|
5
|
+
* backend (codespar-enterprise/packages/api) actually exposes. Do not edit
|
|
6
|
+
* one without the other.
|
|
7
|
+
*/
|
|
1
8
|
import type { Session, SessionConfig } from "./types.js";
|
|
2
9
|
interface SessionDeps {
|
|
3
10
|
baseUrl: string;
|
|
4
11
|
apiKey: string;
|
|
5
|
-
managed: boolean;
|
|
6
12
|
}
|
|
7
13
|
export declare function createSession(userId: string, config: SessionConfig, deps: SessionDeps): Promise<Session>;
|
|
8
14
|
export {};
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EAUd,MAAM,YAAY,CAAC;AAEpB,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAiBD,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,OAAO,CAAC,CAkNlB"}
|
package/dist/session.js
CHANGED
|
@@ -1,47 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session implementation — talks to api.codespar.dev backend.
|
|
3
|
+
*
|
|
4
|
+
* The shape of every request and response in this file matches what the
|
|
5
|
+
* backend (codespar-enterprise/packages/api) actually exposes. Do not edit
|
|
6
|
+
* one without the other.
|
|
7
|
+
*/
|
|
1
8
|
export async function createSession(userId, config, deps) {
|
|
2
|
-
const { baseUrl, apiKey
|
|
9
|
+
const { baseUrl, apiKey } = deps;
|
|
3
10
|
const headers = {
|
|
4
11
|
"Content-Type": "application/json",
|
|
5
12
|
Authorization: `Bearer ${apiKey}`,
|
|
6
13
|
};
|
|
7
|
-
//
|
|
14
|
+
// Resolve servers from preset if not explicit. The backend doesn't know
|
|
15
|
+
// about presets — it expects an explicit array of server ids.
|
|
16
|
+
const servers = config.servers ?? presetToServers(config.preset);
|
|
8
17
|
const res = await fetch(`${baseUrl}/v1/sessions`, {
|
|
9
18
|
method: "POST",
|
|
10
19
|
headers,
|
|
11
|
-
body: JSON.stringify({
|
|
20
|
+
body: JSON.stringify({ servers, user_id: userId }),
|
|
12
21
|
});
|
|
13
22
|
if (!res.ok) {
|
|
14
23
|
const body = await res.text();
|
|
15
|
-
throw new Error(`
|
|
24
|
+
throw new Error(`createSession failed: ${res.status} ${body}`);
|
|
16
25
|
}
|
|
17
|
-
const data = await res.json();
|
|
26
|
+
const data = (await res.json());
|
|
18
27
|
let cachedTools = null;
|
|
28
|
+
let cachedConnections = null;
|
|
19
29
|
const session = {
|
|
20
30
|
id: data.id,
|
|
21
|
-
userId,
|
|
31
|
+
userId: data.user_id,
|
|
22
32
|
servers: data.servers,
|
|
23
|
-
createdAt: new Date(),
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
createdAt: new Date(data.created_at),
|
|
34
|
+
status: data.status,
|
|
35
|
+
// Placeholder MCP transport URL — runtime endpoint lands in Marco 3.
|
|
36
|
+
// Kept here so @codespar/mcp config helpers work today.
|
|
37
|
+
mcp: {
|
|
38
|
+
url: `${baseUrl}/v1/sessions/${data.id}/mcp`,
|
|
39
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
40
|
+
},
|
|
41
|
+
async tools() {
|
|
26
42
|
if (cachedTools)
|
|
27
43
|
return cachedTools;
|
|
28
|
-
|
|
29
|
-
|
|
44
|
+
await session.connections();
|
|
45
|
+
return cachedTools ?? [];
|
|
30
46
|
},
|
|
31
|
-
findTools(intent) {
|
|
32
|
-
|
|
33
|
-
return [];
|
|
47
|
+
async findTools(intent) {
|
|
48
|
+
const all = await session.tools();
|
|
34
49
|
const q = intent.toLowerCase();
|
|
35
|
-
return
|
|
36
|
-
t.description.toLowerCase().includes(q)
|
|
37
|
-
t.server.toLowerCase().includes(q));
|
|
50
|
+
return all.filter((t) => t.name.toLowerCase().includes(q) ||
|
|
51
|
+
t.description.toLowerCase().includes(q));
|
|
38
52
|
},
|
|
39
53
|
async execute(toolName, params) {
|
|
40
54
|
const start = Date.now();
|
|
41
55
|
const r = await fetch(`${baseUrl}/v1/sessions/${data.id}/execute`, {
|
|
42
56
|
method: "POST",
|
|
43
57
|
headers,
|
|
44
|
-
body: JSON.stringify({ tool: toolName, params }),
|
|
58
|
+
body: JSON.stringify({ tool: toolName, input: params }),
|
|
45
59
|
});
|
|
46
60
|
if (!r.ok) {
|
|
47
61
|
const body = await r.text();
|
|
@@ -54,8 +68,8 @@ export async function createSession(userId, config, deps) {
|
|
|
54
68
|
tool: toolName,
|
|
55
69
|
};
|
|
56
70
|
}
|
|
57
|
-
const result = await r.json();
|
|
58
|
-
return
|
|
71
|
+
const result = (await r.json());
|
|
72
|
+
return result;
|
|
59
73
|
},
|
|
60
74
|
async loop(loopConfig) {
|
|
61
75
|
const start = Date.now();
|
|
@@ -64,11 +78,8 @@ export async function createSession(userId, config, deps) {
|
|
|
64
78
|
const abortOnError = loopConfig.abortOnError ?? true;
|
|
65
79
|
for (let i = 0; i < loopConfig.steps.length; i++) {
|
|
66
80
|
const step = loopConfig.steps[i];
|
|
67
|
-
|
|
68
|
-
if (step.when && !step.when(results)) {
|
|
81
|
+
if (step.when && !step.when(results))
|
|
69
82
|
continue;
|
|
70
|
-
}
|
|
71
|
-
// Resolve params (can be a function of previous results)
|
|
72
83
|
const params = typeof step.params === "function" ? step.params(results) : step.params;
|
|
73
84
|
let lastError = null;
|
|
74
85
|
let result = null;
|
|
@@ -84,7 +95,6 @@ export async function createSession(userId, config, deps) {
|
|
|
84
95
|
catch (err) {
|
|
85
96
|
lastError = err instanceof Error ? err : new Error(String(err));
|
|
86
97
|
}
|
|
87
|
-
// Backoff before retry
|
|
88
98
|
if (attempt < maxRetries) {
|
|
89
99
|
const baseDelay = loopConfig.retryPolicy?.baseDelay ?? 1000;
|
|
90
100
|
const delay = loopConfig.retryPolicy?.backoff === "exponential"
|
|
@@ -124,38 +134,46 @@ export async function createSession(userId, config, deps) {
|
|
|
124
134
|
};
|
|
125
135
|
},
|
|
126
136
|
async send(message) {
|
|
127
|
-
const start = Date.now();
|
|
128
137
|
const r = await fetch(`${baseUrl}/v1/sessions/${data.id}/send`, {
|
|
129
138
|
method: "POST",
|
|
130
|
-
headers,
|
|
139
|
+
headers: { ...headers, Accept: "application/json" },
|
|
131
140
|
body: JSON.stringify({ message }),
|
|
132
141
|
});
|
|
133
142
|
if (!r.ok) {
|
|
134
143
|
const body = await r.text();
|
|
135
|
-
throw new Error(`
|
|
144
|
+
throw new Error(`send failed: ${r.status} ${body}`);
|
|
136
145
|
}
|
|
137
|
-
|
|
138
|
-
return { ...result, duration: result.duration || Date.now() - start };
|
|
146
|
+
return (await r.json());
|
|
139
147
|
},
|
|
140
|
-
async
|
|
141
|
-
const r = await fetch(`${baseUrl}/v1/sessions/${data.id}/
|
|
148
|
+
async *sendStream(message) {
|
|
149
|
+
const r = await fetch(`${baseUrl}/v1/sessions/${data.id}/send`, {
|
|
142
150
|
method: "POST",
|
|
143
|
-
headers,
|
|
144
|
-
body: JSON.stringify({
|
|
151
|
+
headers: { ...headers, Accept: "text/event-stream" },
|
|
152
|
+
body: JSON.stringify({ message }),
|
|
145
153
|
});
|
|
146
|
-
if (!r.ok) {
|
|
147
|
-
|
|
154
|
+
if (!r.ok || !r.body) {
|
|
155
|
+
const body = await r.text();
|
|
156
|
+
throw new Error(`sendStream failed: ${r.status} ${body}`);
|
|
148
157
|
}
|
|
149
|
-
|
|
158
|
+
yield* parseSseStream(r.body);
|
|
159
|
+
},
|
|
160
|
+
async authorize(_serverId, _config) {
|
|
161
|
+
return {
|
|
162
|
+
connected: false,
|
|
163
|
+
error: "session.authorize() is not implemented in @codespar/sdk@0.2.0 — coming in Marco 3. " +
|
|
164
|
+
"For now, configure auth via the dashboard at https://codespar.dev/dashboard/auth-configs",
|
|
165
|
+
};
|
|
150
166
|
},
|
|
151
167
|
async connections() {
|
|
152
|
-
const r = await fetch(`${baseUrl}/v1/sessions/${data.id}/connections`, {
|
|
168
|
+
const r = await fetch(`${baseUrl}/v1/sessions/${data.id}/connections`, {
|
|
169
|
+
headers,
|
|
170
|
+
});
|
|
153
171
|
if (!r.ok)
|
|
154
|
-
return
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
cachedTools =
|
|
158
|
-
return
|
|
172
|
+
return cachedConnections ?? [];
|
|
173
|
+
const payload = (await r.json());
|
|
174
|
+
cachedConnections = payload.servers;
|
|
175
|
+
cachedTools = payload.tools;
|
|
176
|
+
return payload.servers;
|
|
159
177
|
},
|
|
160
178
|
async close() {
|
|
161
179
|
await fetch(`${baseUrl}/v1/sessions/${data.id}`, {
|
|
@@ -164,7 +182,6 @@ export async function createSession(userId, config, deps) {
|
|
|
164
182
|
});
|
|
165
183
|
},
|
|
166
184
|
};
|
|
167
|
-
// If waitForConnections, poll until ready
|
|
168
185
|
if (config.manageConnections?.waitForConnections) {
|
|
169
186
|
const timeout = config.manageConnections.timeout ?? 30000;
|
|
170
187
|
const start = Date.now();
|
|
@@ -177,4 +194,114 @@ export async function createSession(userId, config, deps) {
|
|
|
177
194
|
}
|
|
178
195
|
return session;
|
|
179
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Parse a Server-Sent Events stream into typed StreamEvent objects.
|
|
199
|
+
*
|
|
200
|
+
* The backend emits events shaped like:
|
|
201
|
+
* event: assistant_text
|
|
202
|
+
* data: {"content":"...","iteration":1}
|
|
203
|
+
*
|
|
204
|
+
* which we map to discriminated-union StreamEvent values that the SDK
|
|
205
|
+
* exports. We intentionally keep parsing tiny: split on double newlines,
|
|
206
|
+
* pick out `event:` and `data:` lines, JSON-parse the data.
|
|
207
|
+
*/
|
|
208
|
+
async function* parseSseStream(body) {
|
|
209
|
+
const reader = body.getReader();
|
|
210
|
+
const decoder = new TextDecoder();
|
|
211
|
+
let buffer = "";
|
|
212
|
+
try {
|
|
213
|
+
while (true) {
|
|
214
|
+
const { done, value } = await reader.read();
|
|
215
|
+
if (done)
|
|
216
|
+
break;
|
|
217
|
+
buffer += decoder.decode(value, { stream: true });
|
|
218
|
+
let sep;
|
|
219
|
+
while ((sep = buffer.indexOf("\n\n")) !== -1) {
|
|
220
|
+
const chunk = buffer.slice(0, sep);
|
|
221
|
+
buffer = buffer.slice(sep + 2);
|
|
222
|
+
const event = parseSseChunk(chunk);
|
|
223
|
+
if (event)
|
|
224
|
+
yield event;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (buffer.trim()) {
|
|
228
|
+
const event = parseSseChunk(buffer);
|
|
229
|
+
if (event)
|
|
230
|
+
yield event;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
reader.releaseLock();
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
function parseSseChunk(chunk) {
|
|
238
|
+
let eventName = "message";
|
|
239
|
+
let dataLine = "";
|
|
240
|
+
for (const line of chunk.split("\n")) {
|
|
241
|
+
if (line.startsWith("event:"))
|
|
242
|
+
eventName = line.slice(6).trim();
|
|
243
|
+
else if (line.startsWith("data:"))
|
|
244
|
+
dataLine += line.slice(5).trim();
|
|
245
|
+
}
|
|
246
|
+
if (!dataLine)
|
|
247
|
+
return null;
|
|
248
|
+
let data;
|
|
249
|
+
try {
|
|
250
|
+
data = JSON.parse(dataLine);
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
switch (eventName) {
|
|
256
|
+
case "user_message":
|
|
257
|
+
return { type: "user_message", content: data.content };
|
|
258
|
+
case "assistant_text":
|
|
259
|
+
return {
|
|
260
|
+
type: "assistant_text",
|
|
261
|
+
content: data.content,
|
|
262
|
+
iteration: data.iteration,
|
|
263
|
+
};
|
|
264
|
+
case "tool_use":
|
|
265
|
+
return {
|
|
266
|
+
type: "tool_use",
|
|
267
|
+
id: data.id,
|
|
268
|
+
name: data.name,
|
|
269
|
+
input: data.input,
|
|
270
|
+
};
|
|
271
|
+
case "tool_result":
|
|
272
|
+
return { type: "tool_result", toolCall: data };
|
|
273
|
+
case "done":
|
|
274
|
+
return { type: "done", result: data };
|
|
275
|
+
case "error":
|
|
276
|
+
return {
|
|
277
|
+
type: "error",
|
|
278
|
+
error: data.error,
|
|
279
|
+
message: data.message,
|
|
280
|
+
};
|
|
281
|
+
default:
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
const PRESET_SERVERS = {
|
|
286
|
+
brazilian: ["zoop", "nuvem-fiscal", "melhor-envio", "z-api", "omie"],
|
|
287
|
+
mexican: ["conekta", "facturapi", "skydropx"],
|
|
288
|
+
argentinian: ["afip", "andreani"],
|
|
289
|
+
colombian: ["wompi", "siigo", "coordinadora"],
|
|
290
|
+
all: [
|
|
291
|
+
"zoop",
|
|
292
|
+
"nuvem-fiscal",
|
|
293
|
+
"melhor-envio",
|
|
294
|
+
"z-api",
|
|
295
|
+
"omie",
|
|
296
|
+
"conekta",
|
|
297
|
+
"facturapi",
|
|
298
|
+
"afip",
|
|
299
|
+
"wompi",
|
|
300
|
+
],
|
|
301
|
+
};
|
|
302
|
+
function presetToServers(preset) {
|
|
303
|
+
if (!preset)
|
|
304
|
+
return ["zoop", "nuvem-fiscal"]; // sensible default for sandbox
|
|
305
|
+
return PRESET_SERVERS[preset];
|
|
306
|
+
}
|
|
180
307
|
//# sourceMappingURL=session.js.map
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,13 +4,11 @@ export interface CodeSparConfig {
|
|
|
4
4
|
apiKey?: string;
|
|
5
5
|
/** Base URL for CodeSpar API. Defaults to https://api.codespar.dev */
|
|
6
6
|
baseUrl?: string;
|
|
7
|
-
/** Enable managed mode (billing, logging, rate limiting via CodeSpar backend) */
|
|
8
|
-
managed?: boolean;
|
|
9
7
|
}
|
|
10
8
|
export interface SessionConfig {
|
|
11
|
-
/** MCP servers to connect
|
|
9
|
+
/** MCP servers to connect, by id (e.g. "zoop", "nuvem-fiscal") */
|
|
12
10
|
servers?: string[];
|
|
13
|
-
/** Preset configurations. "brazilian" enables
|
|
11
|
+
/** Preset configurations. "brazilian" enables BR commerce servers. */
|
|
14
12
|
preset?: "brazilian" | "mexican" | "argentinian" | "colombian" | "all";
|
|
15
13
|
/** Connection management options */
|
|
16
14
|
manageConnections?: {
|
|
@@ -23,62 +21,98 @@ export interface SessionConfig {
|
|
|
23
21
|
metadata?: Record<string, string>;
|
|
24
22
|
}
|
|
25
23
|
export interface Session {
|
|
26
|
-
/** Unique session ID */
|
|
24
|
+
/** Unique session ID (e.g. "ses_HZb4d5yxIAxLawb4") */
|
|
27
25
|
id: string;
|
|
28
26
|
/** User ID that owns this session */
|
|
29
27
|
userId: string;
|
|
30
|
-
/**
|
|
31
|
-
servers:
|
|
28
|
+
/** IDs of the servers attached to this session */
|
|
29
|
+
servers: string[];
|
|
32
30
|
/** Session creation timestamp */
|
|
33
31
|
createdAt: Date;
|
|
34
|
-
/**
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
/** Session status */
|
|
33
|
+
status: "active" | "closed" | "error";
|
|
34
|
+
/**
|
|
35
|
+
* MCP transport endpoint for this session. Pass to @codespar/mcp helpers
|
|
36
|
+
* (getClaudeDesktopConfig, getCursorConfig) to generate config files for
|
|
37
|
+
* MCP-compatible clients.
|
|
38
|
+
*
|
|
39
|
+
* Note: the runtime MCP endpoint is not yet implemented in the backend
|
|
40
|
+
* (planned for Marco 3). The URL is provided so config generators can
|
|
41
|
+
* produce the correct values today; runtime connection will work once
|
|
42
|
+
* the backend MCP transport ships.
|
|
43
|
+
*/
|
|
44
|
+
mcp: {
|
|
45
|
+
url: string;
|
|
46
|
+
headers: Record<string, string>;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Get tools available in this session. Loads from the backend on first
|
|
50
|
+
* call and caches. Call connections() to refresh.
|
|
51
|
+
*/
|
|
52
|
+
tools(): Promise<Tool[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Find tools by intent description. Loads tools first if not cached.
|
|
55
|
+
*/
|
|
56
|
+
findTools(intent: string): Promise<Tool[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Execute a specific tool by name. Tool calls are logged on the
|
|
59
|
+
* backend with input + output for billing and audit.
|
|
60
|
+
*/
|
|
39
61
|
execute(toolName: string, params: Record<string, unknown>): Promise<ToolResult>;
|
|
40
|
-
/** Run a Complete Loop workflow */
|
|
62
|
+
/** Run a Complete Loop workflow. */
|
|
41
63
|
loop(config: LoopConfig): Promise<LoopResult>;
|
|
42
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Send a natural-language message. Drives a Claude tool-use loop on
|
|
66
|
+
* the backend and returns the full transcript when done.
|
|
67
|
+
*/
|
|
43
68
|
send(message: string): Promise<SendResult>;
|
|
44
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Stream a natural-language message. Yields events as the agent
|
|
71
|
+
* runs (assistant text, tool_use, tool_result, done).
|
|
72
|
+
*/
|
|
73
|
+
sendStream(message: string): AsyncIterable<StreamEvent>;
|
|
74
|
+
/**
|
|
75
|
+
* Initiate OAuth flow for a server.
|
|
76
|
+
* @deprecated Not implemented in 0.2.0 — coming in Marco 3.
|
|
77
|
+
*/
|
|
45
78
|
authorize(serverId: string, config?: AuthConfig): Promise<AuthResult>;
|
|
46
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* List server connections + available tools. Refreshes the internal
|
|
81
|
+
* tools cache as a side effect.
|
|
82
|
+
*/
|
|
47
83
|
connections(): Promise<ServerConnection[]>;
|
|
48
|
-
/**
|
|
49
|
-
mcp: {
|
|
50
|
-
url: string;
|
|
51
|
-
headers: Record<string, string>;
|
|
52
|
-
};
|
|
53
|
-
/** Close session and clean up resources */
|
|
84
|
+
/** Close session and release resources. */
|
|
54
85
|
close(): Promise<void>;
|
|
55
86
|
}
|
|
56
87
|
export interface Tool {
|
|
57
|
-
/**
|
|
88
|
+
/** Tool name (e.g. "codespar_pay") */
|
|
58
89
|
name: string;
|
|
59
|
-
/**
|
|
60
|
-
slug: string;
|
|
61
|
-
/** Human-readable description */
|
|
90
|
+
/** Human-readable description shown to LLMs */
|
|
62
91
|
description: string;
|
|
63
|
-
/**
|
|
92
|
+
/** JSON Schema for tool inputs */
|
|
93
|
+
input_schema: Record<string, unknown>;
|
|
94
|
+
/** Server that provides this tool (for routing/billing). May be "codespar" for meta-tools. */
|
|
64
95
|
server: string;
|
|
65
|
-
/** Input schema (JSON Schema) */
|
|
66
|
-
inputSchema: Record<string, unknown>;
|
|
67
96
|
}
|
|
68
97
|
export interface ToolResult {
|
|
98
|
+
/** Whether the call succeeded */
|
|
69
99
|
success: boolean;
|
|
100
|
+
/** Tool output (varies by tool) */
|
|
70
101
|
data: unknown;
|
|
71
|
-
|
|
102
|
+
/** Error message if failed */
|
|
103
|
+
error: string | null;
|
|
72
104
|
/** Execution time in ms */
|
|
73
105
|
duration: number;
|
|
74
106
|
/** Server that executed the tool */
|
|
75
107
|
server: string;
|
|
76
108
|
/** Tool that was executed */
|
|
77
109
|
tool: string;
|
|
110
|
+
/** Backend tool-call id for cross-referencing logs */
|
|
111
|
+
tool_call_id?: string;
|
|
112
|
+
/** Timestamp the call was logged */
|
|
113
|
+
called_at?: string;
|
|
78
114
|
}
|
|
79
115
|
export interface LoopStep {
|
|
80
|
-
/** Server ID or package name */
|
|
81
|
-
server: string;
|
|
82
116
|
/** Tool name to execute */
|
|
83
117
|
tool: string;
|
|
84
118
|
/** Tool parameters */
|
|
@@ -129,27 +163,64 @@ export interface AuthResult {
|
|
|
129
163
|
error?: string;
|
|
130
164
|
}
|
|
131
165
|
export interface ServerConnection {
|
|
132
|
-
/** Server
|
|
166
|
+
/** Server id (e.g. "zoop") */
|
|
133
167
|
id: string;
|
|
134
|
-
/**
|
|
168
|
+
/** Display name */
|
|
135
169
|
name: string;
|
|
136
|
-
/**
|
|
137
|
-
|
|
138
|
-
/**
|
|
170
|
+
/** Category (payments, fiscal, ecommerce, etc.) */
|
|
171
|
+
category: string;
|
|
172
|
+
/** Country code (BR, MX, AR, CO, GLOBAL) */
|
|
173
|
+
country: string;
|
|
174
|
+
/** Auth method */
|
|
175
|
+
auth_type: "oauth" | "api_key" | "cert" | "none";
|
|
176
|
+
/** Whether the server is connected and tools are callable */
|
|
139
177
|
connected: boolean;
|
|
140
|
-
/** Auth method used */
|
|
141
|
-
auth: "oauth2" | "api_key" | "none";
|
|
142
|
-
/** Number of tools available */
|
|
143
|
-
toolCount: number;
|
|
144
178
|
}
|
|
145
179
|
export interface SendResult {
|
|
146
|
-
/**
|
|
147
|
-
|
|
148
|
-
/** Tools
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
|
|
180
|
+
/** Final agent message text */
|
|
181
|
+
message: string;
|
|
182
|
+
/** Tools called during the run, in order */
|
|
183
|
+
tool_calls: ToolCallRecord[];
|
|
184
|
+
/** How many model iterations the loop ran */
|
|
185
|
+
iterations: number;
|
|
152
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Single tool-call record returned by send / sendStream.
|
|
189
|
+
* Mirrors the backend's session_tool_calls row shape.
|
|
190
|
+
*/
|
|
191
|
+
export interface ToolCallRecord {
|
|
192
|
+
id: string;
|
|
193
|
+
tool_name: string;
|
|
194
|
+
server_id: string;
|
|
195
|
+
status: "success" | "error";
|
|
196
|
+
duration_ms: number;
|
|
197
|
+
input: unknown;
|
|
198
|
+
output: unknown;
|
|
199
|
+
error_code: string | null;
|
|
200
|
+
}
|
|
201
|
+
export type StreamEvent = {
|
|
202
|
+
type: "user_message";
|
|
203
|
+
content: string;
|
|
204
|
+
} | {
|
|
205
|
+
type: "assistant_text";
|
|
206
|
+
content: string;
|
|
207
|
+
iteration: number;
|
|
208
|
+
} | {
|
|
209
|
+
type: "tool_use";
|
|
210
|
+
id: string;
|
|
211
|
+
name: string;
|
|
212
|
+
input: Record<string, unknown>;
|
|
213
|
+
} | {
|
|
214
|
+
type: "tool_result";
|
|
215
|
+
toolCall: ToolCallRecord;
|
|
216
|
+
} | {
|
|
217
|
+
type: "done";
|
|
218
|
+
result: SendResult;
|
|
219
|
+
} | {
|
|
220
|
+
type: "error";
|
|
221
|
+
error: string;
|
|
222
|
+
message?: string;
|
|
223
|
+
};
|
|
153
224
|
export declare const SessionConfigSchema: z.ZodObject<{
|
|
154
225
|
servers: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
155
226
|
preset: z.ZodOptional<z.ZodEnum<["brazilian", "mexican", "argentinian", "colombian", "all"]>>;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,WAAW,cAAc;IAC7B,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
/* ── Validation schemas
|
|
2
|
+
/* ── Validation schemas ───────────────────────────────────────── */
|
|
3
3
|
export const SessionConfigSchema = z.object({
|
|
4
4
|
servers: z.array(z.string()).optional(),
|
|
5
5
|
preset: z.enum(["brazilian", "mexican", "argentinian", "colombian", "all"]).optional(),
|
|
6
|
-
manageConnections: z
|
|
6
|
+
manageConnections: z
|
|
7
|
+
.object({
|
|
7
8
|
waitForConnections: z.boolean().optional(),
|
|
8
9
|
timeout: z.number().optional(),
|
|
9
|
-
})
|
|
10
|
+
})
|
|
11
|
+
.optional(),
|
|
10
12
|
metadata: z.record(z.string()).optional(),
|
|
11
13
|
});
|
|
12
14
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqPxB,qEAAqE;AAErE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtF,iBAAiB,EAAE,CAAC;SACjB,MAAM,CAAC;QACN,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC;SACD,QAAQ,EAAE;IACb,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
|
package/package.json
CHANGED