infinium-o2 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +550 -0
  3. package/dist/cjs/asyncClient.d.ts +119 -0
  4. package/dist/cjs/asyncClient.d.ts.map +1 -0
  5. package/dist/cjs/asyncClient.js +464 -0
  6. package/dist/cjs/asyncClient.js.map +1 -0
  7. package/dist/cjs/client.d.ts +92 -0
  8. package/dist/cjs/client.d.ts.map +1 -0
  9. package/dist/cjs/client.js +354 -0
  10. package/dist/cjs/client.js.map +1 -0
  11. package/dist/cjs/errors.d.ts +102 -0
  12. package/dist/cjs/errors.d.ts.map +1 -0
  13. package/dist/cjs/errors.js +218 -0
  14. package/dist/cjs/errors.js.map +1 -0
  15. package/dist/cjs/index.d.ts +12 -0
  16. package/dist/cjs/index.d.ts.map +1 -0
  17. package/dist/cjs/index.js +61 -0
  18. package/dist/cjs/index.js.map +1 -0
  19. package/dist/cjs/package.json +1 -0
  20. package/dist/cjs/types.d.ts +231 -0
  21. package/dist/cjs/types.d.ts.map +1 -0
  22. package/dist/cjs/types.js +23 -0
  23. package/dist/cjs/types.js.map +1 -0
  24. package/dist/cjs/utils.d.ts +130 -0
  25. package/dist/cjs/utils.d.ts.map +1 -0
  26. package/dist/cjs/utils.js +381 -0
  27. package/dist/cjs/utils.js.map +1 -0
  28. package/dist/esm/asyncClient.d.ts +119 -0
  29. package/dist/esm/asyncClient.d.ts.map +1 -0
  30. package/dist/esm/asyncClient.js +457 -0
  31. package/dist/esm/asyncClient.js.map +1 -0
  32. package/dist/esm/client.d.ts +92 -0
  33. package/dist/esm/client.d.ts.map +1 -0
  34. package/dist/esm/client.js +347 -0
  35. package/dist/esm/client.js.map +1 -0
  36. package/dist/esm/errors.d.ts +102 -0
  37. package/dist/esm/errors.d.ts.map +1 -0
  38. package/dist/esm/errors.js +200 -0
  39. package/dist/esm/errors.js.map +1 -0
  40. package/dist/esm/index.d.ts +12 -0
  41. package/dist/esm/index.d.ts.map +1 -0
  42. package/dist/esm/index.js +17 -0
  43. package/dist/esm/index.js.map +1 -0
  44. package/dist/esm/package.json +1 -0
  45. package/dist/esm/types.d.ts +231 -0
  46. package/dist/esm/types.d.ts.map +1 -0
  47. package/dist/esm/types.js +20 -0
  48. package/dist/esm/types.js.map +1 -0
  49. package/dist/esm/utils.d.ts +130 -0
  50. package/dist/esm/utils.d.ts.map +1 -0
  51. package/dist/esm/utils.js +355 -0
  52. package/dist/esm/utils.js.map +1 -0
  53. package/package.json +94 -0
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Utility functions for the Infinium SDK.
3
+ */
4
+ import { AgentType, RetryConfig, RateLimiterConfig } from './types';
5
+ /**
6
+ * Logger interface for SDK logging.
7
+ */
8
+ export interface Logger {
9
+ debug(message: string, meta?: Record<string, unknown>): void;
10
+ info(message: string, meta?: Record<string, unknown>): void;
11
+ warn(message: string, meta?: Record<string, unknown>): void;
12
+ error(message: string, meta?: Record<string, unknown>): void;
13
+ }
14
+ /**
15
+ * Default console logger implementation.
16
+ */
17
+ export declare class ConsoleLogger implements Logger {
18
+ private readonly level;
19
+ constructor(level?: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR');
20
+ private shouldLog;
21
+ private formatMessage;
22
+ debug(message: string, meta?: Record<string, unknown>): void;
23
+ info(message: string, meta?: Record<string, unknown>): void;
24
+ warn(message: string, meta?: Record<string, unknown>): void;
25
+ error(message: string, meta?: Record<string, unknown>): void;
26
+ }
27
+ /**
28
+ * Rate limiter implementation using token bucket algorithm.
29
+ */
30
+ export declare class RateLimiter {
31
+ private tokens;
32
+ private lastRefillTime;
33
+ private readonly maxTokens;
34
+ private readonly tokensPerSecond;
35
+ constructor(config: RateLimiterConfig);
36
+ /**
37
+ * Check if a request can be made.
38
+ */
39
+ canMakeRequest(): boolean;
40
+ /**
41
+ * Get time to wait before next request can be made.
42
+ */
43
+ getWaitTime(): number;
44
+ private refillTokens;
45
+ }
46
+ /**
47
+ * Validate agent credentials.
48
+ */
49
+ export declare function validateAgentCredentials(agentId?: string, agentSecret?: string): void;
50
+ /**
51
+ * Validate ISO 8601 datetime string.
52
+ */
53
+ export declare function validateIsoDatetime(datetimeStr: string): boolean;
54
+ /**
55
+ * Validate agent type.
56
+ */
57
+ export declare function validateAgentType(agentType: string): AgentType;
58
+ /**
59
+ * Validate duration value.
60
+ */
61
+ export declare function validateDuration(duration: number): void;
62
+ /**
63
+ * Validate required field.
64
+ */
65
+ export declare function validateRequiredField(value: unknown, fieldName: string, expectedType?: 'string' | 'number' | 'boolean'): void;
66
+ /**
67
+ * Get current ISO datetime string.
68
+ */
69
+ export declare function getCurrentIsoDatetime(): string;
70
+ /**
71
+ * Convert object to JSON safely.
72
+ */
73
+ export declare function safeJsonStringify(obj: unknown): string;
74
+ /**
75
+ * Parse JSON safely.
76
+ */
77
+ export declare function safeJsonParse<T = unknown>(str: string): T | null;
78
+ /**
79
+ * Deep merge two objects.
80
+ */
81
+ export declare function mergeObjects<T extends Record<string, unknown>>(target: T, source: Partial<T>): T;
82
+ /**
83
+ * Sleep for specified milliseconds.
84
+ */
85
+ export declare function sleep(ms: number): Promise<void>;
86
+ /**
87
+ * Exponential backoff calculation.
88
+ */
89
+ export declare function calculateBackoff(attempt: number, baseDelay: number, factor?: number, maxDelay?: number): number;
90
+ /**
91
+ * Retry function with exponential backoff.
92
+ */
93
+ export declare function retryWithBackoff<T>(fn: () => Promise<T>, config: RetryConfig): Promise<T>;
94
+ /**
95
+ * Check if error should be retried.
96
+ */
97
+ export declare function shouldRetryError(error: unknown): boolean;
98
+ /**
99
+ * Generate user agent string.
100
+ */
101
+ export declare function generateUserAgent(sdkVersion: string): string;
102
+ /**
103
+ * Validate URL format.
104
+ */
105
+ export declare function validateUrl(url: string): boolean;
106
+ /**
107
+ * Clean and normalize URL.
108
+ */
109
+ export declare function normalizeUrl(url: string): string;
110
+ /**
111
+ * Convert camelCase to snake_case.
112
+ */
113
+ export declare function camelToSnakeCase(str: string): string;
114
+ /**
115
+ * Convert snake_case to camelCase.
116
+ */
117
+ export declare function snakeToCamelCase(str: string): string;
118
+ /**
119
+ * Convert object keys from camelCase to snake_case.
120
+ */
121
+ export declare function objectToSnakeCase(obj: Record<string, unknown>): Record<string, unknown>;
122
+ /**
123
+ * Convert object keys from snake_case to camelCase.
124
+ */
125
+ export declare function objectToCamelCase(obj: Record<string, unknown>): Record<string, unknown>;
126
+ /**
127
+ * Setup logging for the SDK.
128
+ */
129
+ export declare function setupLogging(enabled?: boolean, level?: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR'): Logger;
130
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ /**
3
+ * Utility functions for the Infinium SDK.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RateLimiter = exports.ConsoleLogger = void 0;
7
+ exports.validateAgentCredentials = validateAgentCredentials;
8
+ exports.validateIsoDatetime = validateIsoDatetime;
9
+ exports.validateAgentType = validateAgentType;
10
+ exports.validateDuration = validateDuration;
11
+ exports.validateRequiredField = validateRequiredField;
12
+ exports.getCurrentIsoDatetime = getCurrentIsoDatetime;
13
+ exports.safeJsonStringify = safeJsonStringify;
14
+ exports.safeJsonParse = safeJsonParse;
15
+ exports.mergeObjects = mergeObjects;
16
+ exports.sleep = sleep;
17
+ exports.calculateBackoff = calculateBackoff;
18
+ exports.retryWithBackoff = retryWithBackoff;
19
+ exports.shouldRetryError = shouldRetryError;
20
+ exports.generateUserAgent = generateUserAgent;
21
+ exports.validateUrl = validateUrl;
22
+ exports.normalizeUrl = normalizeUrl;
23
+ exports.camelToSnakeCase = camelToSnakeCase;
24
+ exports.snakeToCamelCase = snakeToCamelCase;
25
+ exports.objectToSnakeCase = objectToSnakeCase;
26
+ exports.objectToCamelCase = objectToCamelCase;
27
+ exports.setupLogging = setupLogging;
28
+ const types_1 = require("./types");
29
+ const errors_1 = require("./errors");
30
+ /**
31
+ * Default console logger implementation.
32
+ */
33
+ class ConsoleLogger {
34
+ level;
35
+ constructor(level = 'INFO') {
36
+ this.level = level;
37
+ }
38
+ shouldLog(level) {
39
+ const levels = ['DEBUG', 'INFO', 'WARN', 'ERROR'];
40
+ return levels.indexOf(level) >= levels.indexOf(this.level);
41
+ }
42
+ formatMessage(level, message, meta) {
43
+ const timestamp = new Date().toISOString();
44
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : '';
45
+ return `[${timestamp}] ${level}: ${message}${metaStr}`;
46
+ }
47
+ debug(message, meta) {
48
+ if (this.shouldLog('DEBUG')) {
49
+ console.log(this.formatMessage('DEBUG', message, meta));
50
+ }
51
+ }
52
+ info(message, meta) {
53
+ if (this.shouldLog('INFO')) {
54
+ console.log(this.formatMessage('INFO', message, meta));
55
+ }
56
+ }
57
+ warn(message, meta) {
58
+ if (this.shouldLog('WARN')) {
59
+ console.warn(this.formatMessage('WARN', message, meta));
60
+ }
61
+ }
62
+ error(message, meta) {
63
+ if (this.shouldLog('ERROR')) {
64
+ console.error(this.formatMessage('ERROR', message, meta));
65
+ }
66
+ }
67
+ }
68
+ exports.ConsoleLogger = ConsoleLogger;
69
+ /**
70
+ * Rate limiter implementation using token bucket algorithm.
71
+ */
72
+ class RateLimiter {
73
+ tokens;
74
+ lastRefillTime;
75
+ maxTokens;
76
+ tokensPerSecond;
77
+ constructor(config) {
78
+ this.tokensPerSecond = config.requestsPerSecond;
79
+ this.maxTokens = config.burstSize || config.requestsPerSecond;
80
+ this.tokens = this.maxTokens;
81
+ this.lastRefillTime = Date.now();
82
+ }
83
+ /**
84
+ * Check if a request can be made.
85
+ */
86
+ canMakeRequest() {
87
+ this.refillTokens();
88
+ if (this.tokens >= 1) {
89
+ this.tokens -= 1;
90
+ return true;
91
+ }
92
+ return false;
93
+ }
94
+ /**
95
+ * Get time to wait before next request can be made.
96
+ */
97
+ getWaitTime() {
98
+ this.refillTokens();
99
+ if (this.tokens >= 1) {
100
+ return 0;
101
+ }
102
+ return Math.ceil((1 - this.tokens) * (1000 / this.tokensPerSecond));
103
+ }
104
+ refillTokens() {
105
+ const now = Date.now();
106
+ const timePassed = (now - this.lastRefillTime) / 1000;
107
+ const tokensToAdd = timePassed * this.tokensPerSecond;
108
+ this.tokens = Math.min(this.maxTokens, this.tokens + tokensToAdd);
109
+ this.lastRefillTime = now;
110
+ }
111
+ }
112
+ exports.RateLimiter = RateLimiter;
113
+ /**
114
+ * Validate agent credentials.
115
+ */
116
+ function validateAgentCredentials(agentId, agentSecret) {
117
+ if (!agentId || typeof agentId !== 'string' || !agentId.trim()) {
118
+ throw new errors_1.ValidationError('agent_id is required and must be a non-empty string', 'agentId');
119
+ }
120
+ if (!agentSecret || typeof agentSecret !== 'string' || !agentSecret.trim()) {
121
+ throw new errors_1.ValidationError('agent_secret is required and must be a non-empty string', 'agentSecret');
122
+ }
123
+ // Additional security validation
124
+ if (agentId.trim().length < 3) {
125
+ throw new errors_1.ValidationError('agent_id must be at least 3 characters long', 'agentId');
126
+ }
127
+ if (agentSecret.trim().length < 8) {
128
+ throw new errors_1.ValidationError('agent_secret must be at least 8 characters long', 'agentSecret');
129
+ }
130
+ }
131
+ /**
132
+ * Validate ISO 8601 datetime string.
133
+ */
134
+ function validateIsoDatetime(datetimeStr) {
135
+ try {
136
+ const date = new Date(datetimeStr);
137
+ return !Number.isNaN(date.getTime()) && datetimeStr.includes('T');
138
+ }
139
+ catch {
140
+ return false;
141
+ }
142
+ }
143
+ /**
144
+ * Validate agent type.
145
+ */
146
+ function validateAgentType(agentType) {
147
+ const upperType = agentType.toUpperCase();
148
+ if (Object.values(types_1.AgentType).includes(upperType)) {
149
+ return upperType;
150
+ }
151
+ throw new errors_1.ValidationError(`Invalid agent_type: ${agentType}. Valid options: ${Object.values(types_1.AgentType).join(', ')}`, 'agentType');
152
+ }
153
+ /**
154
+ * Validate duration value.
155
+ */
156
+ function validateDuration(duration) {
157
+ if (typeof duration !== 'number' ||
158
+ Number.isNaN(duration) ||
159
+ duration < 0 ||
160
+ !Number.isFinite(duration)) {
161
+ throw new errors_1.ValidationError('duration must be a finite non-negative number', 'duration');
162
+ }
163
+ }
164
+ /**
165
+ * Validate required field.
166
+ */
167
+ function validateRequiredField(value, fieldName, expectedType = 'string') {
168
+ if (value === undefined || value === null) {
169
+ throw new errors_1.ValidationError(`${fieldName} is required`, fieldName);
170
+ }
171
+ if (typeof value !== expectedType) {
172
+ throw new errors_1.ValidationError(`${fieldName} must be of type ${expectedType}`, fieldName);
173
+ }
174
+ if (expectedType === 'string' && !value.trim()) {
175
+ throw new errors_1.ValidationError(`${fieldName} cannot be empty`, fieldName);
176
+ }
177
+ }
178
+ /**
179
+ * Get current ISO datetime string.
180
+ */
181
+ function getCurrentIsoDatetime() {
182
+ return new Date().toISOString();
183
+ }
184
+ /**
185
+ * Convert object to JSON safely.
186
+ */
187
+ function safeJsonStringify(obj) {
188
+ try {
189
+ return JSON.stringify(obj);
190
+ }
191
+ catch {
192
+ return '{}';
193
+ }
194
+ }
195
+ /**
196
+ * Parse JSON safely.
197
+ */
198
+ function safeJsonParse(str) {
199
+ try {
200
+ return JSON.parse(str);
201
+ }
202
+ catch {
203
+ return null;
204
+ }
205
+ }
206
+ /**
207
+ * Deep merge two objects.
208
+ */
209
+ function mergeObjects(target, source) {
210
+ const result = { ...target };
211
+ for (const key in source) {
212
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
213
+ const sourceValue = source[key];
214
+ const targetValue = result[key];
215
+ if (sourceValue &&
216
+ typeof sourceValue === 'object' &&
217
+ !Array.isArray(sourceValue) &&
218
+ targetValue &&
219
+ typeof targetValue === 'object' &&
220
+ !Array.isArray(targetValue)) {
221
+ result[key] = mergeObjects(targetValue, sourceValue);
222
+ }
223
+ else if (sourceValue !== undefined) {
224
+ result[key] = sourceValue;
225
+ }
226
+ }
227
+ }
228
+ return result;
229
+ }
230
+ /**
231
+ * Sleep for specified milliseconds.
232
+ */
233
+ function sleep(ms) {
234
+ return new Promise(resolve => {
235
+ setTimeout(resolve, ms);
236
+ });
237
+ }
238
+ /**
239
+ * Exponential backoff calculation.
240
+ */
241
+ function calculateBackoff(attempt, baseDelay, factor = 2, maxDelay = 30000) {
242
+ const delay = baseDelay * factor ** (attempt - 1);
243
+ return Math.min(delay, maxDelay);
244
+ }
245
+ /**
246
+ * Retry function with exponential backoff.
247
+ */
248
+ async function retryWithBackoff(fn, config) {
249
+ let lastError;
250
+ for (let attempt = 1; attempt <= config.attempts; attempt++) {
251
+ try {
252
+ return await fn();
253
+ }
254
+ catch (error) {
255
+ lastError = error;
256
+ // Check if we should retry this error
257
+ if (config.retryCondition && !config.retryCondition(error)) {
258
+ throw error;
259
+ }
260
+ // If this is the last attempt, throw the error
261
+ if (attempt === config.attempts) {
262
+ throw error;
263
+ }
264
+ // Calculate delay and wait
265
+ const delay = calculateBackoff(attempt, config.delay, config.factor, config.maxDelay);
266
+ await sleep(delay);
267
+ }
268
+ }
269
+ throw lastError;
270
+ }
271
+ /**
272
+ * Check if error should be retried.
273
+ */
274
+ function shouldRetryError(error) {
275
+ if (error && typeof error === 'object' && 'response' in error) {
276
+ const { response } = error;
277
+ if (response) {
278
+ const { status } = response;
279
+ // Retry on server errors and rate limiting
280
+ return status >= 500 || status === 429;
281
+ }
282
+ }
283
+ // Retry on network errors
284
+ if (error && typeof error === 'object' && 'code' in error) {
285
+ const { code } = error;
286
+ return ['ECONNRESET', 'ENOTFOUND', 'ECONNREFUSED', 'ETIMEDOUT'].includes(code);
287
+ }
288
+ return false;
289
+ }
290
+ /**
291
+ * Generate user agent string.
292
+ */
293
+ function generateUserAgent(sdkVersion) {
294
+ const nodeVersion = process.version;
295
+ const { platform } = process;
296
+ const { arch } = process;
297
+ return `infinium-node/${sdkVersion} (${platform}; ${arch}) Node.js/${nodeVersion}`;
298
+ }
299
+ /**
300
+ * Validate URL format.
301
+ */
302
+ function validateUrl(url) {
303
+ try {
304
+ new URL(url);
305
+ return true;
306
+ }
307
+ catch {
308
+ return false;
309
+ }
310
+ }
311
+ /**
312
+ * Clean and normalize URL.
313
+ */
314
+ function normalizeUrl(url) {
315
+ try {
316
+ const parsed = new URL(url);
317
+ return parsed.origin + parsed.pathname.replace(/\/+$/, '');
318
+ }
319
+ catch {
320
+ throw new errors_1.ValidationError('Invalid URL format', 'baseUrl');
321
+ }
322
+ }
323
+ /**
324
+ * Convert camelCase to snake_case.
325
+ */
326
+ function camelToSnakeCase(str) {
327
+ return str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
328
+ }
329
+ /**
330
+ * Convert snake_case to camelCase.
331
+ */
332
+ function snakeToCamelCase(str) {
333
+ return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
334
+ }
335
+ /**
336
+ * Convert object keys from camelCase to snake_case.
337
+ */
338
+ function objectToSnakeCase(obj) {
339
+ const result = {};
340
+ for (const [key, value] of Object.entries(obj)) {
341
+ const snakeKey = camelToSnakeCase(key);
342
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
343
+ result[snakeKey] = objectToSnakeCase(value);
344
+ }
345
+ else {
346
+ result[snakeKey] = value;
347
+ }
348
+ }
349
+ return result;
350
+ }
351
+ /**
352
+ * Convert object keys from snake_case to camelCase.
353
+ */
354
+ function objectToCamelCase(obj) {
355
+ const result = {};
356
+ for (const [key, value] of Object.entries(obj)) {
357
+ const camelKey = snakeToCamelCase(key);
358
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
359
+ result[camelKey] = objectToCamelCase(value);
360
+ }
361
+ else {
362
+ result[camelKey] = value;
363
+ }
364
+ }
365
+ return result;
366
+ }
367
+ /**
368
+ * Setup logging for the SDK.
369
+ */
370
+ function setupLogging(enabled = false, level = 'INFO') {
371
+ if (!enabled) {
372
+ return {
373
+ debug: () => { },
374
+ info: () => { },
375
+ warn: () => { },
376
+ error: () => { },
377
+ };
378
+ }
379
+ return new ConsoleLogger(level);
380
+ }
381
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Asynchronous client for Infinium API.
3
+ */
4
+ import { TaskData, ApiResponse, HealthCheck, BatchResult, ClientConfig } from './types';
5
+ /**
6
+ * Asynchronous client for Infinium API.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { AsyncInfiniumClient, AgentType } from 'infinium';
11
+ *
12
+ * const client = new AsyncInfiniumClient({
13
+ * agentId: 'your-agent-id',
14
+ * agentSecret: 'your-agent-secret'
15
+ * });
16
+ *
17
+ * // Send a simple task
18
+ * const response = await client.sendTask({
19
+ * name: 'Process customer inquiry',
20
+ * description: 'Handled customer question about pricing',
21
+ * duration: 120.5
22
+ * });
23
+ *
24
+ * // Use with proper cleanup
25
+ * async function example() {
26
+ * const client = new AsyncInfiniumClient({
27
+ * agentId: 'your-agent-id',
28
+ * agentSecret: 'your-agent-secret'
29
+ * });
30
+ *
31
+ * try {
32
+ * const health = await client.testConnection();
33
+ * console.log('Connected:', health.agentName);
34
+ *
35
+ * const response = await client.sendTask({
36
+ * name: 'Marketing campaign analysis',
37
+ * description: 'Analyzed Q3 campaign performance',
38
+ * duration: 300.0,
39
+ * agentType: AgentType.MARKETING_ASSISTANT
40
+ * });
41
+ *
42
+ * console.log('Task sent:', response.success);
43
+ * } finally {
44
+ * await client.close();
45
+ * }
46
+ * }
47
+ * ```
48
+ */
49
+ export declare class AsyncInfiniumClient {
50
+ private readonly agentId;
51
+ private readonly agentSecret;
52
+ private readonly baseUrl;
53
+ private readonly timeout;
54
+ private readonly maxRetries;
55
+ private readonly userAgent;
56
+ private readonly logger;
57
+ private readonly rateLimiter;
58
+ private readonly httpClient;
59
+ private closed;
60
+ /**
61
+ * Initialize the async Infinium client.
62
+ */
63
+ constructor(config: ClientConfig);
64
+ /**
65
+ * Create and configure HTTP client.
66
+ */
67
+ private createHttpClient;
68
+ /**
69
+ * Make HTTP request with proper error handling.
70
+ */
71
+ private makeRequest;
72
+ /**
73
+ * Send task data to the API.
74
+ */
75
+ sendTask(task: Omit<TaskData, 'currentDatetime'> & {
76
+ currentDatetime?: string;
77
+ }): Promise<ApiResponse>;
78
+ /**
79
+ * Send pre-built TaskData object.
80
+ */
81
+ sendTaskData(taskData: TaskData): Promise<ApiResponse>;
82
+ /**
83
+ * Send multiple tasks in batch.
84
+ */
85
+ sendBatch(tasks: TaskData[]): Promise<BatchResult>;
86
+ /**
87
+ * Send tasks in sequential batch (for rate limiting).
88
+ */
89
+ sendBatchSequential(tasks: TaskData[]): Promise<BatchResult>;
90
+ /**
91
+ * Test connection to the API.
92
+ */
93
+ testConnection(): Promise<HealthCheck>;
94
+ /**
95
+ * Get interpreted task result.
96
+ */
97
+ getInterpretedTaskResult(taskId: string): Promise<ApiResponse>;
98
+ /**
99
+ * Get current ISO datetime string.
100
+ */
101
+ getCurrentIsoDatetime(): string;
102
+ /**
103
+ * Get client configuration.
104
+ */
105
+ getConfig(): Partial<ClientConfig>;
106
+ /**
107
+ * Check if client is closed.
108
+ */
109
+ isClosed(): boolean;
110
+ /**
111
+ * Close the client and cleanup resources.
112
+ */
113
+ close(): Promise<void>;
114
+ /**
115
+ * Clean payload by removing undefined values.
116
+ */
117
+ private cleanPayload;
118
+ }
119
+ //# sourceMappingURL=asyncClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asyncClient.d.ts","sourceRoot":"","sources":["../../src/asyncClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAEL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EAab,MAAM,SAAS,CAAC;AA+BjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAE3C,OAAO,CAAC,MAAM,CAAS;IAEvB;;OAEG;gBACS,MAAM,EAAE,YAAY;IAiChC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0FxB;;OAEG;YACW,WAAW;IA2BzB;;OAEG;IACG,QAAQ,CACZ,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACrE,OAAO,CAAC,WAAW,CAAC;IAmDvB;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAI5D;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAoExD;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAgElE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAkB5C;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWpE;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAWlC;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACH,OAAO,CAAC,YAAY;CAkBrB"}