@illalabs/sdk 0.4.0-canary.361ed2fa → 0.4.0-canary.3f75ecce

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 (72) hide show
  1. package/README.md +53 -0
  2. package/dist/src/chat/Chat.d.ts +31 -2
  3. package/dist/src/chat/Chat.d.ts.map +1 -1
  4. package/dist/src/chat/Chat.js +81 -3
  5. package/dist/src/chat/Chat.js.map +1 -1
  6. package/dist/src/context/ContextManager.js +1 -1
  7. package/dist/src/context/ContextManager.js.map +1 -1
  8. package/dist/src/interfaces/chat.interface.d.ts +52 -1
  9. package/dist/src/interfaces/chat.interface.d.ts.map +1 -1
  10. package/dist/src/interfaces/coreApiProvider.interface.d.ts +13 -1
  11. package/dist/src/interfaces/coreApiProvider.interface.d.ts.map +1 -1
  12. package/dist/src/interfaces/index.d.ts +1 -1
  13. package/dist/src/interfaces/index.d.ts.map +1 -1
  14. package/dist/src/internal.d.ts +1 -0
  15. package/dist/src/internal.d.ts.map +1 -1
  16. package/dist/src/internal.js +1 -0
  17. package/dist/src/internal.js.map +1 -1
  18. package/dist/src/prompt/index.d.ts +1 -1
  19. package/dist/src/prompt/index.d.ts.map +1 -1
  20. package/dist/src/providers/coreApiProvider/CoreApiProvider.d.ts +40 -1
  21. package/dist/src/providers/coreApiProvider/CoreApiProvider.d.ts.map +1 -1
  22. package/dist/src/providers/coreApiProvider/CoreApiProvider.js +124 -2
  23. package/dist/src/providers/coreApiProvider/CoreApiProvider.js.map +1 -1
  24. package/dist/src/providers/coreApiProvider/index.d.ts +1 -1
  25. package/dist/src/providers/coreApiProvider/index.d.ts.map +1 -1
  26. package/dist/src/providers/coreApiProvider/types.d.ts +44 -0
  27. package/dist/src/providers/coreApiProvider/types.d.ts.map +1 -1
  28. package/dist/src/sdk.d.ts +65 -4
  29. package/dist/src/sdk.d.ts.map +1 -1
  30. package/dist/src/sdk.js +58 -4
  31. package/dist/src/sdk.js.map +1 -1
  32. package/dist/src/streaming/errors/SSEParse.d.ts +15 -0
  33. package/dist/src/streaming/errors/SSEParse.d.ts.map +1 -0
  34. package/dist/src/streaming/errors/SSEParse.js +23 -0
  35. package/dist/src/streaming/errors/SSEParse.js.map +1 -0
  36. package/dist/src/streaming/errors/StreamingHttpError.d.ts +18 -0
  37. package/dist/src/streaming/errors/StreamingHttpError.d.ts.map +1 -0
  38. package/dist/src/streaming/errors/StreamingHttpError.js +27 -0
  39. package/dist/src/streaming/errors/StreamingHttpError.js.map +1 -0
  40. package/dist/src/streaming/errors/StreamingResponseBodyNull.d.ts +13 -0
  41. package/dist/src/streaming/errors/StreamingResponseBodyNull.d.ts.map +1 -0
  42. package/dist/src/streaming/errors/StreamingResponseBodyNull.js +21 -0
  43. package/dist/src/streaming/errors/StreamingResponseBodyNull.js.map +1 -0
  44. package/dist/src/streaming/errors/StreamingServerError.d.ts +23 -0
  45. package/dist/src/streaming/errors/StreamingServerError.d.ts.map +1 -0
  46. package/dist/src/streaming/errors/StreamingServerError.js +33 -0
  47. package/dist/src/streaming/errors/StreamingServerError.js.map +1 -0
  48. package/dist/src/streaming/errors/index.d.ts +5 -0
  49. package/dist/src/streaming/errors/index.d.ts.map +1 -0
  50. package/dist/src/streaming/errors/index.js +5 -0
  51. package/dist/src/streaming/errors/index.js.map +1 -0
  52. package/dist/src/streaming/index.d.ts +4 -0
  53. package/dist/src/streaming/index.d.ts.map +1 -0
  54. package/dist/src/streaming/index.js +3 -0
  55. package/dist/src/streaming/index.js.map +1 -0
  56. package/dist/src/streaming/parseSSE.d.ts +23 -0
  57. package/dist/src/streaming/parseSSE.d.ts.map +1 -0
  58. package/dist/src/streaming/parseSSE.js +152 -0
  59. package/dist/src/streaming/parseSSE.js.map +1 -0
  60. package/dist/src/streaming/types.d.ts +6 -0
  61. package/dist/src/streaming/types.d.ts.map +1 -0
  62. package/dist/src/streaming/types.js +6 -0
  63. package/dist/src/streaming/types.js.map +1 -0
  64. package/dist/src/telemetry/TelemetryClient.d.ts +140 -0
  65. package/dist/src/telemetry/TelemetryClient.d.ts.map +1 -0
  66. package/dist/src/telemetry/TelemetryClient.js +225 -0
  67. package/dist/src/telemetry/TelemetryClient.js.map +1 -0
  68. package/dist/src/telemetry/index.d.ts +2 -0
  69. package/dist/src/telemetry/index.d.ts.map +1 -0
  70. package/dist/src/telemetry/index.js +2 -0
  71. package/dist/src/telemetry/index.js.map +1 -0
  72. package/package.json +3 -5
@@ -0,0 +1,225 @@
1
+ /**
2
+ * Error thrown when the telemetry stream fails to connect or encounters an error
3
+ */
4
+ export class TelemetryStreamFailed extends Error {
5
+ /** The request ID that was being streamed */
6
+ requestId;
7
+ /**
8
+ * Creates a new TelemetryStreamFailed error
9
+ * @param message - Description of what went wrong
10
+ * @param requestId - The request ID that was being streamed
11
+ */
12
+ constructor(message, requestId) {
13
+ super(`Telemetry stream failed: ${message}`);
14
+ this.name = "TelemetryStreamFailed";
15
+ this.requestId = requestId;
16
+ }
17
+ }
18
+ /**
19
+ * Browser-only client for consuming telemetry SSE streams.
20
+ * This client connects to the telemetry endpoint and emits events as they arrive.
21
+ *
22
+ * **Note**: This client requires the native `EventSource` API, which is only available
23
+ * in browser environments. For Node.js usage, you must provide a polyfill such as
24
+ * the `eventsource` package before instantiating this client.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const client = new TelemetryClient({
29
+ * baseUrl: 'https://api.example.com/v1/chat',
30
+ * onEvent: (event) => console.log('Event:', event.type),
31
+ * onComplete: () => console.log('Stream complete'),
32
+ * onError: (error) => console.error('Error:', error),
33
+ * });
34
+ *
35
+ * client.connect('request-uuid');
36
+ *
37
+ * // Later, disconnect
38
+ * client.disconnect();
39
+ * ```
40
+ *
41
+ * @example Node.js usage with polyfill
42
+ * ```typescript
43
+ * // Install: pnpm add eventsource
44
+ * // At the top of your entry file:
45
+ * import EventSource from 'eventsource';
46
+ * globalThis.EventSource = EventSource as unknown as typeof globalThis.EventSource;
47
+ *
48
+ * // Then use TelemetryClient normally
49
+ * const client = new TelemetryClient({ ... });
50
+ * ```
51
+ */
52
+ export class TelemetryClient {
53
+ eventSource = null;
54
+ config;
55
+ currentRequestId = null;
56
+ _isConnected = false;
57
+ _isComplete = false;
58
+ /**
59
+ * Creates a new TelemetryClient instance
60
+ * @param config - Configuration including base URL and event callbacks
61
+ */
62
+ constructor(config) {
63
+ this.config = config;
64
+ }
65
+ /**
66
+ * Whether the client is currently connected to a stream
67
+ */
68
+ get isConnected() {
69
+ return this._isConnected;
70
+ }
71
+ /**
72
+ * Whether the current stream has completed
73
+ */
74
+ get isComplete() {
75
+ return this._isComplete;
76
+ }
77
+ /**
78
+ * Connect to a telemetry stream for a specific request
79
+ * @param requestId - The request ID to subscribe to
80
+ * @throws {TelemetryStreamFailed} If EventSource is not available in the environment
81
+ */
82
+ connect(requestId) {
83
+ // Avoid reconnecting to the same request
84
+ if (this.currentRequestId === requestId && this._isConnected) {
85
+ return;
86
+ }
87
+ // Runtime check for EventSource availability
88
+ if (typeof EventSource === "undefined") {
89
+ const error = new TelemetryStreamFailed("EventSource is not available. This client requires a browser environment or an EventSource polyfill (e.g., 'eventsource' package for Node.js).", requestId);
90
+ this.config.onError?.(error);
91
+ return;
92
+ }
93
+ this.disconnect();
94
+ const url = `${this.config.baseUrl}/telemetry/${requestId}`;
95
+ this.currentRequestId = requestId;
96
+ this._isComplete = false;
97
+ try {
98
+ const eventSource = new EventSource(url);
99
+ this.eventSource = eventSource;
100
+ eventSource.onopen = () => {
101
+ this._isConnected = true;
102
+ };
103
+ eventSource.onmessage = (event) => {
104
+ try {
105
+ const data = JSON.parse(event.data);
106
+ this.config.onEvent?.(data);
107
+ if (TelemetryClient.isTerminalEvent(data.type)) {
108
+ this._isComplete = true;
109
+ this.config.onComplete?.();
110
+ this.closeEventSource();
111
+ }
112
+ }
113
+ catch {
114
+ // Ignore malformed JSON - SSE can send comments or other data
115
+ }
116
+ };
117
+ eventSource.onerror = () => {
118
+ // Check if this is a normal close after stream_end
119
+ if (this.eventSource === null) {
120
+ return;
121
+ }
122
+ const error = new TelemetryStreamFailed("Connection error", requestId);
123
+ this._isConnected = false;
124
+ this.config.onError?.(error);
125
+ this.closeEventSource();
126
+ };
127
+ }
128
+ catch (error) {
129
+ const err = new TelemetryStreamFailed(error instanceof Error ? error.message : String(error), requestId);
130
+ this.config.onError?.(err);
131
+ }
132
+ }
133
+ /**
134
+ * Disconnect from the current stream
135
+ */
136
+ disconnect() {
137
+ this.closeEventSource();
138
+ this.currentRequestId = null;
139
+ }
140
+ /**
141
+ * Close the EventSource without clearing the requestId
142
+ * (used when stream ends normally)
143
+ */
144
+ closeEventSource() {
145
+ if (this.eventSource) {
146
+ this.eventSource.close();
147
+ this.eventSource = null;
148
+ }
149
+ this._isConnected = false;
150
+ }
151
+ /**
152
+ * Derive orchestrator phase from a telemetry event.
153
+ * This static method provides a consistent mapping from events to phases.
154
+ *
155
+ * @param event - The telemetry event to derive phase from
156
+ * @returns The current orchestrator phase
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const phase = TelemetryClient.getPhaseFromEvent(event);
161
+ * console.log('Current phase:', phase); // e.g., "thinking", "executing_tools"
162
+ * ```
163
+ */
164
+ static getPhaseFromEvent(event) {
165
+ if (!event)
166
+ return "idle";
167
+ switch (event.type) {
168
+ case "connected":
169
+ case "iteration_start":
170
+ case "llm_start":
171
+ return "thinking";
172
+ case "llm_end":
173
+ case "tool_call_batch":
174
+ return "calling_tools";
175
+ case "tool_result":
176
+ return "executing_tools";
177
+ case "iteration_end":
178
+ case "scratchpad_reset":
179
+ return "processing_results";
180
+ case "finish":
181
+ case "stream_end":
182
+ return "complete";
183
+ case "error":
184
+ return "error";
185
+ default:
186
+ return "thinking";
187
+ }
188
+ }
189
+ /**
190
+ * Get a human-readable label for an orchestrator phase
191
+ * @param phase - The phase to get label for
192
+ * @returns Human-readable label
193
+ */
194
+ static getPhaseLabel(phase) {
195
+ switch (phase) {
196
+ case "idle":
197
+ return "Idle";
198
+ case "thinking":
199
+ return "Thinking...";
200
+ case "calling_tools":
201
+ return "Calling tools...";
202
+ case "executing_tools":
203
+ return "Executing tools...";
204
+ case "processing_results":
205
+ return "Processing results...";
206
+ case "complete":
207
+ return "Complete";
208
+ case "error":
209
+ return "Error";
210
+ case "streaming":
211
+ return "Streaming...";
212
+ default:
213
+ return "Unknown";
214
+ }
215
+ }
216
+ /**
217
+ * Check if an event type indicates the stream should end
218
+ * @param type - The event type to check
219
+ * @returns True if the event indicates stream completion
220
+ */
221
+ static isTerminalEvent(type) {
222
+ return type === "stream_end" || type === "finish" || type === "error";
223
+ }
224
+ }
225
+ //# sourceMappingURL=TelemetryClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryClient.js","sourceRoot":"","sources":["../../../src/telemetry/TelemetryClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { TelemetryClient, TelemetryStreamFailed, type TelemetryClientConfig, type TelemetryStreamState, } from "./TelemetryClient.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC5B,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { TelemetryClient, TelemetryStreamFailed, } from "./TelemetryClient.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,eAAe,EACf,qBAAqB,GAGxB,MAAM,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@illalabs/sdk",
3
- "version": "0.4.0-canary.361ed2fa",
3
+ "version": "0.4.0-canary.3f75ecce",
4
4
  "private": false,
5
5
  "description": "TypeScript SDK for interacting with Illa's Core API",
6
6
  "license": "MIT",
@@ -23,10 +23,8 @@
23
23
  "axios": "1.12.2",
24
24
  "uuid": "13.0.0",
25
25
  "viem": "2.37.13",
26
- "@illalabs/interfaces": "0.3.0-canary.361ed2fa"
27
- },
28
- "devDependencies": {
29
- "zod": "4.1.12"
26
+ "zod": "3.25.76",
27
+ "@illalabs/interfaces": "0.3.0-canary.3f75ecce"
30
28
  },
31
29
  "publishConfig": {
32
30
  "access": "public"