@runtypelabs/sdk 1.7.1 → 1.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/index.cjs +7026 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +5147 -0
  4. package/dist/index.d.ts +5146 -27
  5. package/dist/index.js +6955 -77
  6. package/dist/index.js.map +1 -1
  7. package/package.json +14 -7
  8. package/dist/batch-builder.d.ts +0 -106
  9. package/dist/batch-builder.d.ts.map +0 -1
  10. package/dist/batch-builder.js +0 -124
  11. package/dist/batch-builder.js.map +0 -1
  12. package/dist/batches-namespace.d.ts +0 -132
  13. package/dist/batches-namespace.d.ts.map +0 -1
  14. package/dist/batches-namespace.js +0 -128
  15. package/dist/batches-namespace.js.map +0 -1
  16. package/dist/case-types.d.ts +0 -42
  17. package/dist/case-types.d.ts.map +0 -1
  18. package/dist/case-types.js +0 -16
  19. package/dist/case-types.js.map +0 -1
  20. package/dist/client-token-types.d.ts +0 -143
  21. package/dist/client-token-types.d.ts.map +0 -1
  22. package/dist/client-token-types.js +0 -11
  23. package/dist/client-token-types.js.map +0 -1
  24. package/dist/client.d.ts +0 -131
  25. package/dist/client.d.ts.map +0 -1
  26. package/dist/client.js +0 -501
  27. package/dist/client.js.map +0 -1
  28. package/dist/endpoints.d.ts +0 -1248
  29. package/dist/endpoints.d.ts.map +0 -1
  30. package/dist/endpoints.js +0 -1649
  31. package/dist/endpoints.js.map +0 -1
  32. package/dist/error-handling-types.d.ts +0 -71
  33. package/dist/error-handling-types.d.ts.map +0 -1
  34. package/dist/error-handling-types.js +0 -12
  35. package/dist/error-handling-types.js.map +0 -1
  36. package/dist/eval-builder.d.ts +0 -216
  37. package/dist/eval-builder.d.ts.map +0 -1
  38. package/dist/eval-builder.js +0 -225
  39. package/dist/eval-builder.js.map +0 -1
  40. package/dist/evals-namespace.d.ts +0 -205
  41. package/dist/evals-namespace.d.ts.map +0 -1
  42. package/dist/evals-namespace.js +0 -208
  43. package/dist/evals-namespace.js.map +0 -1
  44. package/dist/flow-builder.d.ts +0 -717
  45. package/dist/flow-builder.d.ts.map +0 -1
  46. package/dist/flow-builder.js +0 -592
  47. package/dist/flow-builder.js.map +0 -1
  48. package/dist/flow-result.d.ts +0 -117
  49. package/dist/flow-result.d.ts.map +0 -1
  50. package/dist/flow-result.js +0 -175
  51. package/dist/flow-result.js.map +0 -1
  52. package/dist/flows-namespace.d.ts +0 -442
  53. package/dist/flows-namespace.d.ts.map +0 -1
  54. package/dist/flows-namespace.js +0 -686
  55. package/dist/flows-namespace.js.map +0 -1
  56. package/dist/generated-tool-gate.d.ts +0 -75
  57. package/dist/generated-tool-gate.d.ts.map +0 -1
  58. package/dist/generated-tool-gate.js +0 -314
  59. package/dist/generated-tool-gate.js.map +0 -1
  60. package/dist/index.d.ts.map +0 -1
  61. package/dist/prompts-namespace.d.ts +0 -237
  62. package/dist/prompts-namespace.d.ts.map +0 -1
  63. package/dist/prompts-namespace.js +0 -222
  64. package/dist/prompts-namespace.js.map +0 -1
  65. package/dist/runtype.d.ts +0 -232
  66. package/dist/runtype.d.ts.map +0 -1
  67. package/dist/runtype.js +0 -367
  68. package/dist/runtype.js.map +0 -1
  69. package/dist/stream-utils.d.ts +0 -58
  70. package/dist/stream-utils.d.ts.map +0 -1
  71. package/dist/stream-utils.js +0 -373
  72. package/dist/stream-utils.js.map +0 -1
  73. package/dist/transform.d.ts +0 -30
  74. package/dist/transform.d.ts.map +0 -1
  75. package/dist/transform.js +0 -196
  76. package/dist/transform.js.map +0 -1
  77. package/dist/types.d.ts +0 -717
  78. package/dist/types.d.ts.map +0 -1
  79. package/dist/types.js +0 -7
  80. package/dist/types.js.map +0 -1
package/dist/client.js DELETED
@@ -1,501 +0,0 @@
1
- "use strict";
2
- /**
3
- * @layer sdk
4
- * @case camelCase (SDK and API both use native camelCase - no conversion needed)
5
- *
6
- * Main Runtype API Client.
7
- *
8
- * The SDK and API both use native camelCase for all request/response bodies.
9
- * No case transformation is performed.
10
- *
11
- * @see packages/client/src/transform.ts for pass-through utilities
12
- */
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- var desc = Object.getOwnPropertyDescriptor(m, k);
16
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
- desc = { enumerable: true, get: function() { return m[k]; } };
18
- }
19
- Object.defineProperty(o, k2, desc);
20
- }) : (function(o, m, k, k2) {
21
- if (k2 === undefined) k2 = k;
22
- o[k2] = m[k];
23
- }));
24
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
- Object.defineProperty(o, "default", { enumerable: true, value: v });
26
- }) : function(o, v) {
27
- o["default"] = v;
28
- });
29
- var __importStar = (this && this.__importStar) || (function () {
30
- var ownKeys = function(o) {
31
- ownKeys = Object.getOwnPropertyNames || function (o) {
32
- var ar = [];
33
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
- return ar;
35
- };
36
- return ownKeys(o);
37
- };
38
- return function (mod) {
39
- if (mod && mod.__esModule) return mod;
40
- var result = {};
41
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
- __setModuleDefault(result, mod);
43
- return result;
44
- };
45
- })();
46
- Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.RuntypeApiError = exports.RuntypeClient = void 0;
48
- exports.createClient = createClient;
49
- const transform_1 = require("./transform");
50
- const endpoints_1 = require("./endpoints");
51
- const flow_builder_1 = require("./flow-builder");
52
- const flow_result_1 = require("./flow-result");
53
- /**
54
- * RuntypeClient - The main entry point for interacting with the Runtype API
55
- *
56
- * Automatically transforms field names between camelCase (client) and snake_case (API)
57
- * to provide an idiomatic JavaScript/TypeScript experience while maintaining API consistency.
58
- */
59
- class RuntypeClient {
60
- constructor(config = {}) {
61
- const baseUrl = config.baseUrl || 'https://api.runtype.com';
62
- this.apiVersion = config.apiVersion || 'v1';
63
- // Construct versioned base URL (api.runtype.com/v1)
64
- this.baseUrl = this.apiVersion ? `${baseUrl}/${this.apiVersion}` : baseUrl;
65
- this.timeout = config.timeout || 30000;
66
- this.headers = {
67
- 'Content-Type': 'application/json',
68
- ...(config.headers || {}),
69
- };
70
- // Set API key if provided
71
- if (config.apiKey) {
72
- this.headers.Authorization = `Bearer ${config.apiKey}`;
73
- }
74
- // Initialize endpoint handlers
75
- this.flows = new endpoints_1.FlowsEndpoint(this);
76
- this.prompts = new endpoints_1.PromptsEndpoint(this);
77
- this.records = new endpoints_1.RecordsEndpoint(this);
78
- this.apiKeys = new endpoints_1.ApiKeysEndpoint(this);
79
- this.modelConfigs = new endpoints_1.ModelConfigsEndpoint(this);
80
- this.dispatch = new endpoints_1.DispatchEndpoint(this);
81
- this.chat = new endpoints_1.ChatEndpoint(this);
82
- this.users = new endpoints_1.UsersEndpoint(this);
83
- this.analytics = new endpoints_1.AnalyticsEndpoint(this);
84
- this.flowSteps = new endpoints_1.FlowStepsEndpoint(this);
85
- this.contextTemplates = new endpoints_1.ContextTemplatesEndpoint(this);
86
- this.tools = new endpoints_1.ToolsEndpoint(this);
87
- this.eval = new endpoints_1.EvalEndpoint(this);
88
- this.clientTokens = new endpoints_1.ClientTokensEndpoint(this);
89
- this.agents = new endpoints_1.AgentsEndpoint(this);
90
- }
91
- /**
92
- * Set the API key for authentication
93
- */
94
- setApiKey(apiKey) {
95
- this.headers.Authorization = `Bearer ${apiKey}`;
96
- }
97
- /**
98
- * Start building a flow with fluent API
99
- *
100
- * @example
101
- * ```typescript
102
- * const response = await runtype
103
- * .flow('My Flow')
104
- * .withRecord({ name: 'Test', type: 'data' })
105
- * .fetchUrl({ name: 'Fetch', url: '...', outputVariable: 'data' })
106
- * .prompt({ name: 'Process', model: 'gpt-4', userPrompt: '...' })
107
- * .run()
108
- * ```
109
- */
110
- flow(name) {
111
- return new flow_builder_1.ClientFlowBuilder({
112
- dispatch: (config) => this.dispatch.executeStream(config),
113
- runWithLocalTools: (config, tools) => this.runWithLocalTools(config, tools),
114
- }, name);
115
- }
116
- /**
117
- * Remove the API key
118
- */
119
- clearApiKey() {
120
- delete this.headers.Authorization;
121
- }
122
- /**
123
- * Run a flow with client-side tools (automatic pause/resume loop)
124
- *
125
- * @param request - The dispatch request configuration
126
- * @param clientTools - Map of tool names to async functions that execute the tool logic
127
- * @param callbacks - Optional callbacks for streaming events
128
- * @returns The final result of the flow execution or summary if streaming
129
- */
130
- async runWithLocalTools(request, localTools, callbacks) {
131
- // If callbacks are provided, use streaming mode
132
- // If not, force non-streaming for JSON state machine
133
- const isStreaming = !!callbacks;
134
- const modifiedRequest = {
135
- ...request,
136
- options: {
137
- ...(request.options || {}),
138
- streamResponse: isStreaming,
139
- },
140
- };
141
- // Helper to process a step result (either from stream or JSON)
142
- // Returns { done: boolean, result: any }
143
- const processStep = async (response) => {
144
- if (isStreaming) {
145
- // Stream processing
146
- let pausedState = null;
147
- // Wrap user callbacks to intercept paused event
148
- const wrappedCallbacks = {
149
- ...callbacks,
150
- onFlowStart: (event) => callbacks?.onFlowStart?.(event),
151
- onStepStart: (event) => callbacks?.onStepStart?.(event),
152
- onStepChunk: (chunk, event) => callbacks?.onStepChunk?.(chunk, event),
153
- onStepComplete: (result, event) => callbacks?.onStepComplete?.(result, event),
154
- onFlowComplete: (event) => callbacks?.onFlowComplete?.(event),
155
- onError: (error) => callbacks?.onError?.(error),
156
- };
157
- const { streamEvents } = await Promise.resolve().then(() => __importStar(require('./stream-utils')));
158
- const summary = {
159
- results: new Map(),
160
- success: true,
161
- };
162
- try {
163
- for await (const event of streamEvents(response)) {
164
- if (event.type === 'flow_await') {
165
- // API sends: executionId, flowId, toolId, toolName.
166
- // Parameters are sent in step_await event just before this
167
- pausedState = {
168
- ...pausedState,
169
- toolName: event.toolName,
170
- executionId: event.executionId,
171
- };
172
- }
173
- if (event.type === 'step_await') {
174
- // Capture parameters
175
- pausedState = {
176
- toolName: event.toolName,
177
- parameters: event.parameters,
178
- executionId: event.executionId,
179
- };
180
- }
181
- // Handle standard events via callbacks
182
- switch (event.type) {
183
- case 'flow_start':
184
- wrappedCallbacks.onFlowStart?.(event);
185
- break;
186
- case 'step_start':
187
- wrappedCallbacks.onStepStart?.(event);
188
- break;
189
- case 'step_delta': {
190
- // Normalize API's 'text' field to 'chunk' for consistency
191
- const chunkText = event.chunk || event.text || '';
192
- wrappedCallbacks.onStepChunk?.(chunkText, event);
193
- break;
194
- }
195
- case 'step_complete': {
196
- summary.results?.set(event.name, event.result);
197
- wrappedCallbacks.onStepComplete?.(event.result, event);
198
- break;
199
- }
200
- case 'flow_complete':
201
- wrappedCallbacks.onFlowComplete?.(event);
202
- break;
203
- case 'flow_error':
204
- wrappedCallbacks.onError?.(new Error(event.error));
205
- break;
206
- }
207
- }
208
- }
209
- catch (e) {
210
- wrappedCallbacks.onError?.(e instanceof Error ? e : new Error(String(e)));
211
- throw e;
212
- }
213
- if (pausedState) {
214
- return {
215
- done: false,
216
- result: { status: 'paused', pausedReason: { type: 'local_action', ...pausedState } },
217
- };
218
- }
219
- return { done: true, result: summary };
220
- }
221
- else {
222
- // Non-streaming (JSON)
223
- const data = await response.json();
224
- return {
225
- done: data.status !== 'paused',
226
- result: data,
227
- };
228
- }
229
- };
230
- // Initial dispatch
231
- let currentResponse;
232
- if (isStreaming) {
233
- currentResponse = await this.dispatch.executeStream(modifiedRequest);
234
- }
235
- else {
236
- const data = await this.dispatch.execute(modifiedRequest);
237
- currentResponse = new Response(JSON.stringify(data), {
238
- headers: { 'content-type': 'application/json' },
239
- });
240
- }
241
- // Loop
242
- while (true) {
243
- const { done, result } = await processStep(currentResponse);
244
- if (done) {
245
- if (isStreaming)
246
- return result;
247
- return new flow_result_1.FlowResult(new Response(JSON.stringify(result), { headers: { 'content-type': 'application/json' } }));
248
- }
249
- // Handle Pause
250
- if (result.status === 'paused' && result.pausedReason?.type === 'local_action') {
251
- const { toolName, parameters, executionId } = result.pausedReason;
252
- if (!localTools[toolName]) {
253
- throw new Error(`Local tool "${toolName}" required but not provided in localTools map`);
254
- }
255
- try {
256
- // Execute local tool logic
257
- const toolResult = await localTools[toolName](parameters);
258
- // Resume flow execution
259
- const resumeData = {
260
- executionId: executionId,
261
- toolOutputs: { [toolName]: toolResult },
262
- streamResponse: isStreaming,
263
- };
264
- if (isStreaming) {
265
- currentResponse = (await this.dispatch.resume(resumeData));
266
- }
267
- else {
268
- const data = await this.dispatch.resume(resumeData);
269
- currentResponse = new Response(JSON.stringify(data), {
270
- headers: { 'content-type': 'application/json' },
271
- });
272
- }
273
- }
274
- catch (error) {
275
- throw new Error(`Error executing local tool "${toolName}": ${error instanceof Error ? error.message : String(error)}`);
276
- }
277
- }
278
- else {
279
- // Should not happen if done=false
280
- break;
281
- }
282
- }
283
- throw new Error('Unexpected end of flow execution loop');
284
- }
285
- /**
286
- * Generic GET request
287
- */
288
- async get(path, params) {
289
- const url = this.buildUrl(path, params);
290
- const response = await this.makeRequest(url, {
291
- method: 'GET',
292
- headers: this.headers,
293
- });
294
- return (0, transform_1.transformResponse)(response);
295
- }
296
- /**
297
- * Generic POST request
298
- */
299
- async post(path, data) {
300
- const url = this.buildUrl(path);
301
- const response = await this.makeRequest(url, {
302
- method: 'POST',
303
- headers: this.headers,
304
- body: data ? JSON.stringify((0, transform_1.transformRequest)(data)) : undefined,
305
- });
306
- return (0, transform_1.transformResponse)(response);
307
- }
308
- /**
309
- * POST request with FormData support for file uploads
310
- */
311
- async postFormData(path, formData) {
312
- const url = this.buildUrl(path);
313
- const headers = { ...this.headers };
314
- // Remove Content-Type to let browser set multipart boundary
315
- delete headers['Content-Type'];
316
- const response = await this.makeRequest(url, {
317
- method: 'POST',
318
- headers,
319
- body: formData,
320
- });
321
- return (0, transform_1.transformResponse)(response);
322
- }
323
- /**
324
- * Generic request that returns raw Response for streaming
325
- */
326
- async requestStream(path, options = {}) {
327
- const url = this.buildUrl(path);
328
- const headers = {
329
- ...this.headers,
330
- ...options.headers,
331
- };
332
- // Transform request body if it's JSON
333
- let body = options.body;
334
- if (body && typeof body === 'string' && headers['Content-Type']?.includes('application/json')) {
335
- try {
336
- const parsed = JSON.parse(body);
337
- body = JSON.stringify((0, transform_1.transformRequest)(parsed));
338
- }
339
- catch {
340
- // If parsing fails, use original body
341
- }
342
- }
343
- return this.makeRawRequest(url, {
344
- ...options,
345
- headers,
346
- body,
347
- });
348
- }
349
- /**
350
- * Generic PUT request
351
- */
352
- async put(path, data) {
353
- const url = this.buildUrl(path);
354
- const response = await this.makeRequest(url, {
355
- method: 'PUT',
356
- headers: this.headers,
357
- body: data ? JSON.stringify((0, transform_1.transformRequest)(data)) : undefined,
358
- });
359
- return (0, transform_1.transformResponse)(response);
360
- }
361
- /**
362
- * Generic PATCH request
363
- */
364
- async patch(path, data) {
365
- const url = this.buildUrl(path);
366
- const response = await this.makeRequest(url, {
367
- method: 'PATCH',
368
- headers: this.headers,
369
- body: data ? JSON.stringify((0, transform_1.transformRequest)(data)) : undefined,
370
- });
371
- return (0, transform_1.transformResponse)(response);
372
- }
373
- /**
374
- * Generic DELETE request
375
- */
376
- async delete(path, data) {
377
- const url = this.buildUrl(path);
378
- const response = await this.makeRequest(url, {
379
- method: 'DELETE',
380
- headers: this.headers,
381
- body: data ? JSON.stringify((0, transform_1.transformRequest)(data)) : undefined,
382
- });
383
- return (0, transform_1.transformResponse)(response);
384
- }
385
- /**
386
- * Build full URL with query parameters
387
- */
388
- buildUrl(path, params) {
389
- // Ensure versioned base URL is treated as a directory by URL()
390
- const base = this.baseUrl.endsWith('/') ? this.baseUrl : `${this.baseUrl}/`;
391
- // Avoid leading slash in path which would reset to origin root
392
- const relPath = path.startsWith('/') ? path.slice(1) : path;
393
- const url = new URL(relPath, base);
394
- if (params) {
395
- const transformedParams = (0, transform_1.transformQueryParams)(params);
396
- Object.entries(transformedParams).forEach(([key, value]) => {
397
- url.searchParams.set(key, value);
398
- });
399
- }
400
- return url.toString();
401
- }
402
- /**
403
- * Make HTTP request with timeout and error handling
404
- */
405
- async makeRequest(url, options) {
406
- const controller = new AbortController();
407
- const timeoutId = setTimeout(() => controller.abort(), this.timeout);
408
- try {
409
- const response = await fetch(url, {
410
- ...options,
411
- signal: controller.signal,
412
- });
413
- clearTimeout(timeoutId);
414
- if (!response.ok) {
415
- await this.handleErrorResponse(response);
416
- }
417
- // Handle empty responses (like 204 No Content)
418
- if (response.status === 204) {
419
- return null;
420
- }
421
- const contentType = response.headers.get('content-type');
422
- if (contentType?.includes('application/json')) {
423
- return response.json();
424
- }
425
- return response.text();
426
- }
427
- catch (error) {
428
- clearTimeout(timeoutId);
429
- if (error instanceof Error && error.name === 'AbortError') {
430
- throw new Error(`Request timeout after ${this.timeout}ms`);
431
- }
432
- throw error;
433
- }
434
- }
435
- /**
436
- * Make HTTP request that returns raw Response (for streaming)
437
- */
438
- async makeRawRequest(url, options) {
439
- const controller = new AbortController();
440
- const timeoutId = setTimeout(() => controller.abort(), this.timeout);
441
- try {
442
- const response = await fetch(url, {
443
- ...options,
444
- signal: controller.signal,
445
- });
446
- clearTimeout(timeoutId);
447
- if (!response.ok) {
448
- const errorText = await response.text();
449
- throw new Error(`API request failed: ${response.status} ${response.statusText} - ${errorText}`);
450
- }
451
- return response;
452
- }
453
- catch (error) {
454
- clearTimeout(timeoutId);
455
- if (error instanceof Error && error.name === 'AbortError') {
456
- throw new Error(`Request timeout after ${this.timeout}ms`);
457
- }
458
- throw error;
459
- }
460
- }
461
- /**
462
- * Handle error responses
463
- */
464
- async handleErrorResponse(response) {
465
- let errorData;
466
- try {
467
- const contentType = response.headers.get('content-type');
468
- if (contentType?.includes('application/json')) {
469
- errorData = await response.json();
470
- }
471
- else {
472
- errorData = { error: await response.text() };
473
- }
474
- }
475
- catch {
476
- errorData = { error: 'Unknown error occurred' };
477
- }
478
- const error = new RuntypeApiError(errorData.error || errorData.message || 'Request failed', response.status, errorData);
479
- throw error;
480
- }
481
- }
482
- exports.RuntypeClient = RuntypeClient;
483
- /**
484
- * Custom error class for Runtype API errors
485
- */
486
- class RuntypeApiError extends Error {
487
- constructor(message, statusCode, data) {
488
- super(message);
489
- this.statusCode = statusCode;
490
- this.data = data;
491
- this.name = 'RuntypeApiError';
492
- }
493
- }
494
- exports.RuntypeApiError = RuntypeApiError;
495
- /**
496
- * Convenience function to create a new RuntypeClient instance
497
- */
498
- function createClient(config) {
499
- return new RuntypeClient(config);
500
- }
501
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}