@patternzones/koine-sdk 1.0.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/client.d.ts +39 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +286 -0
- package/dist/client.js.map +1 -0
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { KoineConfig, KoineStreamResult, KoineUsage } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Generates plain text response from Koine gateway service.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateText(config: KoineConfig, options: {
|
|
7
|
+
system?: string;
|
|
8
|
+
prompt: string;
|
|
9
|
+
sessionId?: string;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
text: string;
|
|
12
|
+
usage: KoineUsage;
|
|
13
|
+
sessionId: string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Streams text response from Koine gateway service.
|
|
17
|
+
* Returns a ReadableStream of text chunks that can be consumed as they arrive.
|
|
18
|
+
*/
|
|
19
|
+
export declare function streamText(config: KoineConfig, options: {
|
|
20
|
+
system?: string;
|
|
21
|
+
prompt: string;
|
|
22
|
+
sessionId?: string;
|
|
23
|
+
}): Promise<KoineStreamResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Generates structured JSON response from Koine gateway service.
|
|
26
|
+
* Converts Zod schema to JSON Schema for the gateway service.
|
|
27
|
+
*/
|
|
28
|
+
export declare function generateObject<T>(config: KoineConfig, options: {
|
|
29
|
+
system?: string;
|
|
30
|
+
prompt: string;
|
|
31
|
+
schema: z.ZodSchema<T>;
|
|
32
|
+
sessionId?: string;
|
|
33
|
+
}): Promise<{
|
|
34
|
+
object: T;
|
|
35
|
+
rawText: string;
|
|
36
|
+
usage: KoineUsage;
|
|
37
|
+
sessionId: string;
|
|
38
|
+
}>;
|
|
39
|
+
//# 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,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EAIX,WAAW,EACX,iBAAiB,EACjB,UAAU,EAIV,MAAM,YAAY,CAAC;AAcpB;;GAEG;AACH,wBAAsB,YAAY,CACjC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,GACC,OAAO,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC,CAsCD;AAkED;;;GAGG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,GACC,OAAO,CAAC,iBAAiB,CAAC,CAiK5B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACrC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,GACC,OAAO,CAAC;IACV,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC,CAwDD"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateText = generateText;
|
|
4
|
+
exports.streamText = streamText;
|
|
5
|
+
exports.generateObject = generateObject;
|
|
6
|
+
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
7
|
+
const errors_js_1 = require("./errors.js");
|
|
8
|
+
/**
|
|
9
|
+
* Safely parses JSON from a response, handling non-JSON bodies gracefully.
|
|
10
|
+
*/
|
|
11
|
+
async function safeJsonParse(response) {
|
|
12
|
+
const text = await response.text();
|
|
13
|
+
try {
|
|
14
|
+
return JSON.parse(text);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Generates plain text response from Koine gateway service.
|
|
22
|
+
*/
|
|
23
|
+
async function generateText(config, options) {
|
|
24
|
+
const response = await fetch(`${config.baseUrl}/generate-text`, {
|
|
25
|
+
method: "POST",
|
|
26
|
+
headers: {
|
|
27
|
+
"Content-Type": "application/json",
|
|
28
|
+
Authorization: `Bearer ${config.authKey}`,
|
|
29
|
+
},
|
|
30
|
+
body: JSON.stringify({
|
|
31
|
+
system: options.system,
|
|
32
|
+
prompt: options.prompt,
|
|
33
|
+
sessionId: options.sessionId,
|
|
34
|
+
model: config.model,
|
|
35
|
+
}),
|
|
36
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
37
|
+
});
|
|
38
|
+
if (!response.ok) {
|
|
39
|
+
const errorBody = await safeJsonParse(response);
|
|
40
|
+
throw new errors_js_1.KoineError(errorBody?.error || `HTTP ${response.status} ${response.statusText}`, errorBody?.code || "HTTP_ERROR", errorBody?.rawText);
|
|
41
|
+
}
|
|
42
|
+
const result = await safeJsonParse(response);
|
|
43
|
+
if (!result) {
|
|
44
|
+
throw new errors_js_1.KoineError("Invalid response from Koine gateway: expected JSON", "INVALID_RESPONSE");
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
text: result.text,
|
|
48
|
+
usage: result.usage,
|
|
49
|
+
sessionId: result.sessionId,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Parses SSE events from a ReadableStream.
|
|
54
|
+
* SSE format: "event: name\ndata: {...}\n\n"
|
|
55
|
+
*/
|
|
56
|
+
function createSSEParser() {
|
|
57
|
+
let buffer = "";
|
|
58
|
+
// Reuse decoder with stream mode to correctly handle multi-byte UTF-8 chars spanning chunks
|
|
59
|
+
const decoder = new TextDecoder();
|
|
60
|
+
return new TransformStream({
|
|
61
|
+
transform(chunk, controller) {
|
|
62
|
+
buffer += decoder.decode(chunk, { stream: true });
|
|
63
|
+
// SSE events are separated by double newlines
|
|
64
|
+
const events = buffer.split("\n\n");
|
|
65
|
+
// Keep the last potentially incomplete event in the buffer
|
|
66
|
+
buffer = events.pop() || "";
|
|
67
|
+
for (const eventStr of events) {
|
|
68
|
+
if (!eventStr.trim())
|
|
69
|
+
continue;
|
|
70
|
+
const lines = eventStr.split("\n");
|
|
71
|
+
let eventType = "";
|
|
72
|
+
let data = "";
|
|
73
|
+
for (const line of lines) {
|
|
74
|
+
if (line.startsWith("event: ")) {
|
|
75
|
+
eventType = line.slice(7);
|
|
76
|
+
}
|
|
77
|
+
else if (line.startsWith("data: ")) {
|
|
78
|
+
data = line.slice(6);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (eventType && data) {
|
|
82
|
+
controller.enqueue({ event: eventType, data });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
flush(controller) {
|
|
87
|
+
// Process any remaining data in buffer
|
|
88
|
+
if (buffer.trim()) {
|
|
89
|
+
const lines = buffer.split("\n");
|
|
90
|
+
let eventType = "";
|
|
91
|
+
let data = "";
|
|
92
|
+
for (const line of lines) {
|
|
93
|
+
if (line.startsWith("event: ")) {
|
|
94
|
+
eventType = line.slice(7);
|
|
95
|
+
}
|
|
96
|
+
else if (line.startsWith("data: ")) {
|
|
97
|
+
data = line.slice(6);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (eventType && data) {
|
|
101
|
+
controller.enqueue({ event: eventType, data });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Streams text response from Koine gateway service.
|
|
109
|
+
* Returns a ReadableStream of text chunks that can be consumed as they arrive.
|
|
110
|
+
*/
|
|
111
|
+
async function streamText(config, options) {
|
|
112
|
+
const response = await fetch(`${config.baseUrl}/stream`, {
|
|
113
|
+
method: "POST",
|
|
114
|
+
headers: {
|
|
115
|
+
"Content-Type": "application/json",
|
|
116
|
+
Authorization: `Bearer ${config.authKey}`,
|
|
117
|
+
},
|
|
118
|
+
body: JSON.stringify({
|
|
119
|
+
system: options.system,
|
|
120
|
+
prompt: options.prompt,
|
|
121
|
+
sessionId: options.sessionId,
|
|
122
|
+
model: config.model,
|
|
123
|
+
}),
|
|
124
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
125
|
+
});
|
|
126
|
+
if (!response.ok) {
|
|
127
|
+
const errorBody = await safeJsonParse(response);
|
|
128
|
+
throw new errors_js_1.KoineError(errorBody?.error || `HTTP ${response.status} ${response.statusText}`, errorBody?.code || "HTTP_ERROR", errorBody?.rawText);
|
|
129
|
+
}
|
|
130
|
+
if (!response.body) {
|
|
131
|
+
throw new errors_js_1.KoineError("No response body from Koine gateway", "NO_RESPONSE_BODY");
|
|
132
|
+
}
|
|
133
|
+
// Set up promises for session, usage, and accumulated text
|
|
134
|
+
let resolveSessionId;
|
|
135
|
+
let rejectSessionId;
|
|
136
|
+
const sessionIdPromise = new Promise((resolve, reject) => {
|
|
137
|
+
resolveSessionId = resolve;
|
|
138
|
+
rejectSessionId = reject;
|
|
139
|
+
});
|
|
140
|
+
let resolveUsage;
|
|
141
|
+
let rejectUsage;
|
|
142
|
+
const usagePromise = new Promise((resolve, reject) => {
|
|
143
|
+
resolveUsage = resolve;
|
|
144
|
+
rejectUsage = reject;
|
|
145
|
+
});
|
|
146
|
+
let resolveText;
|
|
147
|
+
let rejectText;
|
|
148
|
+
const textPromise = new Promise((resolve, reject) => {
|
|
149
|
+
resolveText = resolve;
|
|
150
|
+
rejectText = reject;
|
|
151
|
+
});
|
|
152
|
+
let accumulatedText = "";
|
|
153
|
+
let sessionIdReceived = false;
|
|
154
|
+
let usageReceived = false;
|
|
155
|
+
// Transform SSE events into text chunks
|
|
156
|
+
const textStream = response.body.pipeThrough(createSSEParser()).pipeThrough(new TransformStream({
|
|
157
|
+
transform(sseEvent, controller) {
|
|
158
|
+
// Critical events (session, result, error, done) must propagate parse errors
|
|
159
|
+
// Text events can log and continue - degraded content is better than total failure
|
|
160
|
+
const isCriticalEvent = ["session", "result", "error", "done"].includes(sseEvent.event);
|
|
161
|
+
try {
|
|
162
|
+
switch (sseEvent.event) {
|
|
163
|
+
case "session": {
|
|
164
|
+
const parsed = JSON.parse(sseEvent.data);
|
|
165
|
+
if (!sessionIdReceived) {
|
|
166
|
+
sessionIdReceived = true;
|
|
167
|
+
resolveSessionId(parsed.sessionId);
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case "text": {
|
|
172
|
+
const parsed = JSON.parse(sseEvent.data);
|
|
173
|
+
accumulatedText += parsed.text;
|
|
174
|
+
controller.enqueue(parsed.text);
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
case "result": {
|
|
178
|
+
const parsed = JSON.parse(sseEvent.data);
|
|
179
|
+
usageReceived = true;
|
|
180
|
+
resolveUsage(parsed.usage);
|
|
181
|
+
if (!sessionIdReceived) {
|
|
182
|
+
sessionIdReceived = true;
|
|
183
|
+
resolveSessionId(parsed.sessionId);
|
|
184
|
+
}
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case "error": {
|
|
188
|
+
const parsed = JSON.parse(sseEvent.data);
|
|
189
|
+
const error = new errors_js_1.KoineError(parsed.error, parsed.code || "STREAM_ERROR");
|
|
190
|
+
usageReceived = true; // Prevent double rejection in flush
|
|
191
|
+
rejectUsage(error);
|
|
192
|
+
rejectText(error);
|
|
193
|
+
if (!sessionIdReceived) {
|
|
194
|
+
rejectSessionId(error);
|
|
195
|
+
}
|
|
196
|
+
controller.error(error);
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
case "done": {
|
|
200
|
+
// Stream complete, resolve the text promise
|
|
201
|
+
resolveText(accumulatedText);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (parseError) {
|
|
207
|
+
if (isCriticalEvent) {
|
|
208
|
+
// Critical event parse failure - propagate error
|
|
209
|
+
const error = new errors_js_1.KoineError(`Failed to parse critical SSE event: ${sseEvent.event}`, "SSE_PARSE_ERROR");
|
|
210
|
+
if (!usageReceived) {
|
|
211
|
+
usageReceived = true;
|
|
212
|
+
rejectUsage(error);
|
|
213
|
+
}
|
|
214
|
+
rejectText(error);
|
|
215
|
+
if (!sessionIdReceived) {
|
|
216
|
+
rejectSessionId(error);
|
|
217
|
+
}
|
|
218
|
+
controller.error(error);
|
|
219
|
+
}
|
|
220
|
+
// Non-critical event (text) - continue stream silently
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
flush() {
|
|
224
|
+
// Handle promises that were never resolved/rejected during stream
|
|
225
|
+
if (!sessionIdReceived) {
|
|
226
|
+
rejectSessionId(new errors_js_1.KoineError("Stream ended without session ID", "NO_SESSION"));
|
|
227
|
+
}
|
|
228
|
+
if (!usageReceived) {
|
|
229
|
+
rejectUsage(new errors_js_1.KoineError("Stream ended without usage information", "NO_USAGE"));
|
|
230
|
+
}
|
|
231
|
+
resolveText(accumulatedText);
|
|
232
|
+
},
|
|
233
|
+
}));
|
|
234
|
+
return {
|
|
235
|
+
textStream,
|
|
236
|
+
sessionId: sessionIdPromise,
|
|
237
|
+
usage: usagePromise,
|
|
238
|
+
text: textPromise,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Generates structured JSON response from Koine gateway service.
|
|
243
|
+
* Converts Zod schema to JSON Schema for the gateway service.
|
|
244
|
+
*/
|
|
245
|
+
async function generateObject(config, options) {
|
|
246
|
+
// Convert Zod schema to JSON Schema for the gateway service
|
|
247
|
+
const jsonSchema = (0, zod_to_json_schema_1.zodToJsonSchema)(options.schema, {
|
|
248
|
+
$refStrategy: "none",
|
|
249
|
+
target: "jsonSchema7",
|
|
250
|
+
});
|
|
251
|
+
const response = await fetch(`${config.baseUrl}/generate-object`, {
|
|
252
|
+
method: "POST",
|
|
253
|
+
headers: {
|
|
254
|
+
"Content-Type": "application/json",
|
|
255
|
+
Authorization: `Bearer ${config.authKey}`,
|
|
256
|
+
},
|
|
257
|
+
body: JSON.stringify({
|
|
258
|
+
system: options.system,
|
|
259
|
+
prompt: options.prompt,
|
|
260
|
+
schema: jsonSchema,
|
|
261
|
+
sessionId: options.sessionId,
|
|
262
|
+
model: config.model,
|
|
263
|
+
}),
|
|
264
|
+
signal: AbortSignal.timeout(config.timeout),
|
|
265
|
+
});
|
|
266
|
+
if (!response.ok) {
|
|
267
|
+
const errorBody = await safeJsonParse(response);
|
|
268
|
+
throw new errors_js_1.KoineError(errorBody?.error || `HTTP ${response.status} ${response.statusText}`, errorBody?.code || "HTTP_ERROR", errorBody?.rawText);
|
|
269
|
+
}
|
|
270
|
+
const result = await safeJsonParse(response);
|
|
271
|
+
if (!result) {
|
|
272
|
+
throw new errors_js_1.KoineError("Invalid response from Koine gateway: expected JSON", "INVALID_RESPONSE");
|
|
273
|
+
}
|
|
274
|
+
// Validate the response against the Zod schema
|
|
275
|
+
const parseResult = options.schema.safeParse(result.object);
|
|
276
|
+
if (!parseResult.success) {
|
|
277
|
+
throw new errors_js_1.KoineError(`Response validation failed: ${parseResult.error.message}`, "VALIDATION_ERROR", result.rawText);
|
|
278
|
+
}
|
|
279
|
+
return {
|
|
280
|
+
object: parseResult.data,
|
|
281
|
+
rawText: result.rawText,
|
|
282
|
+
usage: result.usage,
|
|
283
|
+
sessionId: result.sessionId,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEL,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAM3D"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KoineError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Custom error class for Koine client errors.
|
|
6
|
+
*/
|
|
7
|
+
class KoineError extends Error {
|
|
8
|
+
code;
|
|
9
|
+
rawText;
|
|
10
|
+
constructor(message, code, rawText) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "KoineError";
|
|
13
|
+
this.code = code;
|
|
14
|
+
this.rawText = rawText;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.KoineError = KoineError;
|
|
18
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,UAAW,SAAQ,KAAK;IACpC,IAAI,CAAS;IACb,OAAO,CAAU;IAEjB,YAAY,OAAe,EAAE,IAAY,EAAE,OAAgB;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD;AAVD,gCAUC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Koine SDK
|
|
3
|
+
*
|
|
4
|
+
* A TypeScript client for interacting with Koine gateway services.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { generateText, KoineConfig } from '@patternzones/koine-sdk';
|
|
9
|
+
*
|
|
10
|
+
* const config: KoineConfig = {
|
|
11
|
+
* baseUrl: 'http://localhost:3100',
|
|
12
|
+
* timeout: 300000,
|
|
13
|
+
* authKey: 'your-api-key',
|
|
14
|
+
* model: 'sonnet',
|
|
15
|
+
* };
|
|
16
|
+
*
|
|
17
|
+
* const result = await generateText(config, {
|
|
18
|
+
* prompt: 'Hello, how are you?',
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* console.log(result.text);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export type { KoineConfig, KoineUsage, KoineStreamResult, GenerateTextResponse, GenerateObjectResponse, ErrorResponse, SSETextEvent, SSEResultEvent, SSEErrorEvent, } from "./types.js";
|
|
25
|
+
export { KoineError } from "./errors.js";
|
|
26
|
+
export { generateText, streamText, generateObject } from "./client.js";
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,YAAY,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Koine SDK
|
|
4
|
+
*
|
|
5
|
+
* A TypeScript client for interacting with Koine gateway services.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { generateText, KoineConfig } from '@patternzones/koine-sdk';
|
|
10
|
+
*
|
|
11
|
+
* const config: KoineConfig = {
|
|
12
|
+
* baseUrl: 'http://localhost:3100',
|
|
13
|
+
* timeout: 300000,
|
|
14
|
+
* authKey: 'your-api-key',
|
|
15
|
+
* model: 'sonnet',
|
|
16
|
+
* };
|
|
17
|
+
*
|
|
18
|
+
* const result = await generateText(config, {
|
|
19
|
+
* prompt: 'Hello, how are you?',
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* console.log(result.text);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.generateObject = exports.streamText = exports.generateText = exports.KoineError = void 0;
|
|
27
|
+
// Errors
|
|
28
|
+
var errors_js_1 = require("./errors.js");
|
|
29
|
+
Object.defineProperty(exports, "KoineError", { enumerable: true, get: function () { return errors_js_1.KoineError; } });
|
|
30
|
+
// Client functions
|
|
31
|
+
var client_js_1 = require("./client.js");
|
|
32
|
+
Object.defineProperty(exports, "generateText", { enumerable: true, get: function () { return client_js_1.generateText; } });
|
|
33
|
+
Object.defineProperty(exports, "streamText", { enumerable: true, get: function () { return client_js_1.streamText; } });
|
|
34
|
+
Object.defineProperty(exports, "generateObject", { enumerable: true, get: function () { return client_js_1.generateObject; } });
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAeH,SAAS;AACT,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AAEnB,mBAAmB;AACnB,yCAAuE;AAA9D,yGAAA,YAAY,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,2GAAA,cAAc,OAAA"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration for connecting to a Koine gateway service.
|
|
3
|
+
*/
|
|
4
|
+
export interface KoineConfig {
|
|
5
|
+
/** Base URL of the gateway service (e.g., "http://localhost:3100") */
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
/** Request timeout in milliseconds */
|
|
8
|
+
timeout: number;
|
|
9
|
+
/** Authentication key for the gateway service (required) */
|
|
10
|
+
authKey: string;
|
|
11
|
+
/** Model alias (e.g., 'sonnet', 'haiku') or full model name */
|
|
12
|
+
model?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Usage information from Koine gateway service.
|
|
16
|
+
*/
|
|
17
|
+
export interface KoineUsage {
|
|
18
|
+
inputTokens: number;
|
|
19
|
+
outputTokens: number;
|
|
20
|
+
totalTokens: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Response from generate-text endpoint.
|
|
24
|
+
*/
|
|
25
|
+
export interface GenerateTextResponse {
|
|
26
|
+
text: string;
|
|
27
|
+
usage: KoineUsage;
|
|
28
|
+
sessionId: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Response from generate-object endpoint.
|
|
32
|
+
*/
|
|
33
|
+
export interface GenerateObjectResponse {
|
|
34
|
+
object: unknown;
|
|
35
|
+
rawText: string;
|
|
36
|
+
usage: KoineUsage;
|
|
37
|
+
sessionId: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Error response from Koine gateway service.
|
|
41
|
+
*/
|
|
42
|
+
export interface ErrorResponse {
|
|
43
|
+
error: string;
|
|
44
|
+
code: string;
|
|
45
|
+
rawText?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Result from streaming text generation.
|
|
49
|
+
*/
|
|
50
|
+
export interface KoineStreamResult {
|
|
51
|
+
/** ReadableStream of text chunks as they arrive */
|
|
52
|
+
textStream: ReadableStream<string>;
|
|
53
|
+
/** Session ID for conversation continuity (resolves early in stream, after session event) */
|
|
54
|
+
sessionId: Promise<string>;
|
|
55
|
+
/** Usage stats (resolves when stream completes via result event) */
|
|
56
|
+
usage: Promise<KoineUsage>;
|
|
57
|
+
/** Full accumulated text (resolves when stream completes) */
|
|
58
|
+
text: Promise<string>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* SSE event types from Koine gateway /stream endpoint.
|
|
62
|
+
*/
|
|
63
|
+
export interface SSETextEvent {
|
|
64
|
+
text: string;
|
|
65
|
+
}
|
|
66
|
+
export interface SSEResultEvent {
|
|
67
|
+
sessionId: string;
|
|
68
|
+
usage: KoineUsage;
|
|
69
|
+
}
|
|
70
|
+
export interface SSEErrorEvent {
|
|
71
|
+
error: string;
|
|
72
|
+
code?: string;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,mDAAmD;IACnD,UAAU,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACnC,6FAA6F;IAC7F,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,6DAA6D;IAC7D,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACd"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@patternzones/koine-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "TypeScript SDK for Koine gateway",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/pattern-zones-co/koine.git",
|
|
8
|
+
"directory": "packages/sdks/typescript"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/pattern-zones-co/koine",
|
|
11
|
+
"bugs": "https://github.com/pattern-zones-co/koine/issues",
|
|
12
|
+
"author": "Pattern Zones Co",
|
|
13
|
+
"main": "dist/index.js",
|
|
14
|
+
"types": "dist/index.d.ts",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"types": "./dist/index.d.ts"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"test": "vitest",
|
|
24
|
+
"test:run": "vitest run",
|
|
25
|
+
"test:coverage": "vitest run --coverage",
|
|
26
|
+
"lint": "biome check ."
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"zod": "3.25.76",
|
|
30
|
+
"zod-to-json-schema": "3.24.5"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/node": "25.0.2",
|
|
34
|
+
"@vitest/coverage-v8": "3.2.4",
|
|
35
|
+
"typescript": "5.9.3",
|
|
36
|
+
"vitest": "3.2.4"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"zod": ">=3.0.0"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": "22.21.1",
|
|
43
|
+
"bun": "1.3.3"
|
|
44
|
+
},
|
|
45
|
+
"keywords": ["claude", "claude-code", "anthropic", "ai", "sdk", "gateway"],
|
|
46
|
+
"license": "AGPL-3.0",
|
|
47
|
+
"files": ["dist", "README.md"]
|
|
48
|
+
}
|