@illalabs/sdk 0.4.0-canary.56299752 → 0.4.0-canary.e77570c1

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 (94) hide show
  1. package/README.md +68 -9
  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 +87 -28
  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/Prompt.d.ts +2 -10
  19. package/dist/src/prompt/Prompt.d.ts.map +1 -1
  20. package/dist/src/prompt/Prompt.js +9 -22
  21. package/dist/src/prompt/Prompt.js.map +1 -1
  22. package/dist/src/prompt/index.d.ts +1 -1
  23. package/dist/src/prompt/index.d.ts.map +1 -1
  24. package/dist/src/prompt/types.d.ts +7 -9
  25. package/dist/src/prompt/types.d.ts.map +1 -1
  26. package/dist/src/prompt/utils/cloneToolResult.d.ts +6 -6
  27. package/dist/src/prompt/utils/cloneToolResult.d.ts.map +1 -1
  28. package/dist/src/prompt/utils/cloneToolResult.js +11 -16
  29. package/dist/src/prompt/utils/cloneToolResult.js.map +1 -1
  30. package/dist/src/prompt/utils/index.d.ts +1 -3
  31. package/dist/src/prompt/utils/index.d.ts.map +1 -1
  32. package/dist/src/prompt/utils/index.js +1 -3
  33. package/dist/src/prompt/utils/index.js.map +1 -1
  34. package/dist/src/providers/coreApiProvider/CoreApiProvider.d.ts +40 -1
  35. package/dist/src/providers/coreApiProvider/CoreApiProvider.d.ts.map +1 -1
  36. package/dist/src/providers/coreApiProvider/CoreApiProvider.js +124 -2
  37. package/dist/src/providers/coreApiProvider/CoreApiProvider.js.map +1 -1
  38. package/dist/src/providers/coreApiProvider/index.d.ts +1 -1
  39. package/dist/src/providers/coreApiProvider/index.d.ts.map +1 -1
  40. package/dist/src/providers/coreApiProvider/types.d.ts +44 -0
  41. package/dist/src/providers/coreApiProvider/types.d.ts.map +1 -1
  42. package/dist/src/sdk.d.ts +102 -28
  43. package/dist/src/sdk.d.ts.map +1 -1
  44. package/dist/src/sdk.js +90 -23
  45. package/dist/src/sdk.js.map +1 -1
  46. package/dist/src/streaming/errors/SSEParse.d.ts +15 -0
  47. package/dist/src/streaming/errors/SSEParse.d.ts.map +1 -0
  48. package/dist/src/streaming/errors/SSEParse.js +23 -0
  49. package/dist/src/streaming/errors/SSEParse.js.map +1 -0
  50. package/dist/src/streaming/errors/StreamingHttpError.d.ts +18 -0
  51. package/dist/src/streaming/errors/StreamingHttpError.d.ts.map +1 -0
  52. package/dist/src/streaming/errors/StreamingHttpError.js +27 -0
  53. package/dist/src/streaming/errors/StreamingHttpError.js.map +1 -0
  54. package/dist/src/streaming/errors/StreamingResponseBodyNull.d.ts +13 -0
  55. package/dist/src/streaming/errors/StreamingResponseBodyNull.d.ts.map +1 -0
  56. package/dist/src/streaming/errors/StreamingResponseBodyNull.js +21 -0
  57. package/dist/src/streaming/errors/StreamingResponseBodyNull.js.map +1 -0
  58. package/dist/src/streaming/errors/StreamingServerError.d.ts +23 -0
  59. package/dist/src/streaming/errors/StreamingServerError.d.ts.map +1 -0
  60. package/dist/src/streaming/errors/StreamingServerError.js +33 -0
  61. package/dist/src/streaming/errors/StreamingServerError.js.map +1 -0
  62. package/dist/src/streaming/errors/index.d.ts +5 -0
  63. package/dist/src/streaming/errors/index.d.ts.map +1 -0
  64. package/dist/src/streaming/errors/index.js +5 -0
  65. package/dist/src/streaming/errors/index.js.map +1 -0
  66. package/dist/src/streaming/index.d.ts +4 -0
  67. package/dist/src/streaming/index.d.ts.map +1 -0
  68. package/dist/src/streaming/index.js +3 -0
  69. package/dist/src/streaming/index.js.map +1 -0
  70. package/dist/src/streaming/parseSSE.d.ts +23 -0
  71. package/dist/src/streaming/parseSSE.d.ts.map +1 -0
  72. package/dist/src/streaming/parseSSE.js +152 -0
  73. package/dist/src/streaming/parseSSE.js.map +1 -0
  74. package/dist/src/streaming/types.d.ts +6 -0
  75. package/dist/src/streaming/types.d.ts.map +1 -0
  76. package/dist/src/streaming/types.js +6 -0
  77. package/dist/src/streaming/types.js.map +1 -0
  78. package/dist/src/telemetry/TelemetryClient.d.ts +140 -0
  79. package/dist/src/telemetry/TelemetryClient.d.ts.map +1 -0
  80. package/dist/src/telemetry/TelemetryClient.js +225 -0
  81. package/dist/src/telemetry/TelemetryClient.js.map +1 -0
  82. package/dist/src/telemetry/index.d.ts +2 -0
  83. package/dist/src/telemetry/index.d.ts.map +1 -0
  84. package/dist/src/telemetry/index.js +2 -0
  85. package/dist/src/telemetry/index.js.map +1 -0
  86. package/package.json +3 -5
  87. package/dist/src/prompt/utils/normalizeTextPrompt.d.ts +0 -14
  88. package/dist/src/prompt/utils/normalizeTextPrompt.d.ts.map +0 -1
  89. package/dist/src/prompt/utils/normalizeTextPrompt.js +0 -22
  90. package/dist/src/prompt/utils/normalizeTextPrompt.js.map +0 -1
  91. package/dist/src/prompt/utils/normalizeToolResult.d.ts +0 -14
  92. package/dist/src/prompt/utils/normalizeToolResult.d.ts.map +0 -1
  93. package/dist/src/prompt/utils/normalizeToolResult.js +0 -27
  94. package/dist/src/prompt/utils/normalizeToolResult.js.map +0 -1
package/README.md CHANGED
@@ -52,6 +52,8 @@ const result2 = await sdk.sendMessage("I want to swap 1 ETH for USDC on Base", {
52
52
  When the AI needs to execute blockchain operations, it will return pending tools:
53
53
 
54
54
  ```typescript
55
+ import { IllaToolError, IllaToolOutcome } from "@illalabs/interfaces";
56
+
55
57
  const result = await sdk.sendMessage("Swap 1 ETH for USDC on Base", {
56
58
  userContext: { address: "0x..." },
57
59
  });
@@ -60,17 +62,21 @@ const result = await sdk.sendMessage("Swap 1 ETH for USDC on Base", {
60
62
  if (result.response.pendingTools && result.response.pendingTools.length > 0) {
61
63
  const tool = result.response.pendingTools[0];
62
64
 
63
- // Execute the tool (e.g., send a transaction)
64
- const executionResult = await executeTool(tool);
65
+ // Execute the tool and create the outcome
66
+ let toolResult: IllaToolOutcome;
67
+ try {
68
+ const executionResult = await executeTool(tool);
69
+ toolResult = IllaToolOutcome.success(tool.toolCallId, tool.toolName, executionResult);
70
+ } catch (error) {
71
+ toolResult = IllaToolOutcome.error(
72
+ tool.toolCallId,
73
+ tool.toolName,
74
+ IllaToolError.execution(tool.toolCallId, tool.toolName, error.message),
75
+ );
76
+ }
65
77
 
66
78
  // Send the result back to the AI
67
- const toolResult = {
68
- toolCallId: tool.toolCallId,
69
- toolName: tool.toolName,
70
- result: executionResult,
71
- };
72
-
73
- const followUp = await sdk.sendToolResult(result.chatId, toolResult);
79
+ const followUp = await sdk.sendToolResult(result.chatId, toolResult.toJSON());
74
80
  console.log(followUp.response.text);
75
81
  }
76
82
  ```
@@ -225,9 +231,62 @@ E2E_API_KEY=your-api-key E2E_FORK_BASE_RPC_URL="https://mainnet.base.org" pnpm t
225
231
  - **Multi-turn Conversations**: Seamless context preservation across messages
226
232
  - **Session Persistence**: Resume conversations across different instances
227
233
  - **Async Tool Monitoring**: Built-in support for long-running blockchain operations
234
+ - **Streaming Responses**: Real-time telemetry and text streaming via SSE
228
235
  - **TypeScript-first**: Full type safety with comprehensive type definitions
229
236
  - **Flexible Caching**: Pluggable cache implementations (in-memory, Redis, etc.)
230
237
 
238
+ ## Streaming
239
+
240
+ The SDK supports streaming responses via Server-Sent Events (SSE). This allows you to receive telemetry events and text in real-time as the AI processes your request.
241
+
242
+ ### Required Header
243
+
244
+ To enable streaming, the request must include the `Accept: text/event-stream` header. The SDK handles this automatically when using the streaming methods.
245
+
246
+ ### Usage
247
+
248
+ ```typescript
249
+ import { IllaSDK, Prompt } from "@illalabs/sdk";
250
+
251
+ const sdk = new IllaSDK({ apiKey: "your-api-key" });
252
+ const chat = sdk.createChat({ userContext: { address: "0x..." } });
253
+
254
+ await chat.sendMessageStreaming(new Prompt({ text: "What is my balance?" }), {
255
+ // Called for each telemetry event (including text_delta for streaming text)
256
+ onEvent: (event) => {
257
+ console.log("Event:", event.type);
258
+ },
259
+ // Called specifically for text chunks as they arrive
260
+ onTextDelta: (delta) => {
261
+ process.stdout.write(delta);
262
+ },
263
+ // Called when the complete response is ready
264
+ onComplete: (result) => {
265
+ console.log("\nComplete:", result.text);
266
+ },
267
+ // Called if an error occurs during streaming
268
+ onError: (error) => {
269
+ console.error("Error:", error.message);
270
+ },
271
+ });
272
+ ```
273
+
274
+ ### Direct Provider Usage
275
+
276
+ When using `CoreApiProvider` directly with fetch, include the header manually:
277
+
278
+ ```typescript
279
+ const response = await fetch(url, {
280
+ method: "POST",
281
+ headers: {
282
+ "Content-Type": "application/json",
283
+ Accept: "text/event-stream", // Required for streaming
284
+ "x-api-key": "your-api-key",
285
+ },
286
+ body: stringify(requestBody),
287
+ });
288
+ ```
289
+
231
290
  ## 📦 Project Structure
232
291
 
233
292
  ```plaintext
@@ -1,6 +1,6 @@
1
1
  import type { MessageHistoryType } from "@illalabs/interfaces";
2
2
  import type { AwaitableActionDescriptor, AwaitActionResult } from "../asyncToolChecker/index.js";
3
- import type { ChatContextSnapshot, ChatOptions, SendMessageResult } from "../interfaces/index.js";
3
+ import type { ChatContextSnapshot, ChatOptions, SendMessageOptions, SendMessageResult, SendMessageStreamingOptions } from "../interfaces/index.js";
4
4
  import type { Prompt } from "../prompt/index.js";
5
5
  /**
6
6
  * Represents a conversational session with the Illa Core API.
@@ -33,13 +33,42 @@ export declare class Chat {
33
33
  * Sends a prompt or array of prompts to the Core API and returns the processed result.
34
34
  *
35
35
  * @param prompt Either a single Prompt instance (must be kind "text") or an array of Prompts (all must be kind "tool-result").
36
+ * @param options Optional request options including abort signal and telemetry callback.
36
37
  *
37
38
  * @throws {ChatInvalidSinglePromptKind} When a single prompt is provided but is not of kind "text".
38
39
  * @throws {ChatInvalidMultiplePromptsKind} When an array of prompts is provided but not all are of kind "tool-result".
39
40
  *
40
41
  * @returns Structured chat result containing the processed response.
41
42
  */
42
- sendMessage(prompt: Prompt | Prompt[]): Promise<SendMessageResult>;
43
+ sendMessage(prompt: Prompt | Prompt[], options?: SendMessageOptions): Promise<SendMessageResult>;
44
+ /**
45
+ * Sends a message with streaming response via SSE.
46
+ *
47
+ * Instead of waiting for the full response, this method streams telemetry events
48
+ * in real-time as they occur during orchestration. The final result is delivered
49
+ * through the `onComplete` callback.
50
+ *
51
+ * This eliminates the need for a separate telemetry subscription - events and
52
+ * the result are delivered through a single HTTP connection.
53
+ *
54
+ * @param prompt A single Prompt instance of kind "text".
55
+ * @param options Streaming options with event callbacks.
56
+ *
57
+ * @throws {ChatInvalidSinglePromptKind} When the prompt is not of kind "text".
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * await chat.sendMessageStreaming(
62
+ * new Prompt({ text: "Show me my balance" }),
63
+ * {
64
+ * onEvent: (event) => console.log('Event:', event.type),
65
+ * onComplete: (result) => console.log('Done:', result.text),
66
+ * onError: (error) => console.error('Error:', error),
67
+ * }
68
+ * );
69
+ * ```
70
+ */
71
+ sendMessageStreaming(prompt: Prompt, options?: SendMessageStreamingOptions): Promise<void>;
43
72
  private buildRequest;
44
73
  private static isSuccessResponse;
45
74
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/chat/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIR,kBAAkB,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAER,yBAAyB,EACzB,iBAAiB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACR,mBAAmB,EACnB,WAAW,EAGX,iBAAiB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAA4B,MAAM,EAAc,MAAM,oBAAoB,CAAC;AAOvF;;GAEG;AACH,qBAAa,IAAI;IACb,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IAEnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IAEjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAmB;IAErD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C;;;;;;OAMG;gBACgB,OAAO,EAAE,WAAW;IAcvC;;;;OAIG;IACI,KAAK,IAAI,MAAM;IAItB,IAAW,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEjD;IAED;;;;;;;;;OASG;IACU,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA4E/E,OAAO,CAAC,YAAY;IAmDpB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC;;;;;;;;;;;;OAYG;IACU,WAAW,CAAC,UAAU,EAAE,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAe3F;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIvD;;;;OAIG;IACU,UAAU,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAIxE"}
1
+ {"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/chat/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIR,kBAAkB,EAKrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAER,yBAAyB,EACzB,iBAAiB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACR,mBAAmB,EACnB,WAAW,EAGX,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,EAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAA4B,MAAM,EAAc,MAAM,oBAAoB,CAAC;AAOvF;;GAEG;AACH,qBAAa,IAAI;IACb,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IAEnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkB;IAEjD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAmB;IAErD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IAEzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IAExD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C;;;;;;OAMG;gBACgB,OAAO,EAAE,WAAW;IAcvC;;;;OAIG;IACI,KAAK,IAAI,MAAM;IAItB,IAAW,QAAQ,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEjD;IAED;;;;;;;;;;OAUG;IACU,WAAW,CACpB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,iBAAiB,CAAC;IAwF7B;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACU,oBAAoB,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,2BAAgC,GAC1C,OAAO,CAAC,IAAI,CAAC;IAoChB,OAAO,CAAC,YAAY;IAwCpB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC;;;;;;;;;;;;OAYG;IACU,WAAW,CAAC,UAAU,EAAE,yBAAyB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAe3F;;;OAGG;IACU,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIvD;;;;OAIG;IACU,UAAU,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAIxE"}
@@ -50,13 +50,14 @@ export class Chat {
50
50
  * Sends a prompt or array of prompts to the Core API and returns the processed result.
51
51
  *
52
52
  * @param prompt Either a single Prompt instance (must be kind "text") or an array of Prompts (all must be kind "tool-result").
53
+ * @param options Optional request options including abort signal and telemetry callback.
53
54
  *
54
55
  * @throws {ChatInvalidSinglePromptKind} When a single prompt is provided but is not of kind "text".
55
56
  * @throws {ChatInvalidMultiplePromptsKind} When an array of prompts is provided but not all are of kind "tool-result".
56
57
  *
57
58
  * @returns Structured chat result containing the processed response.
58
59
  */
59
- async sendMessage(prompt) {
60
+ async sendMessage(prompt, options) {
60
61
  // Validate prompt kinds based on single vs array
61
62
  const isMulti = Array.isArray(prompt);
62
63
  const prompts = isMulti ? prompt : [prompt];
@@ -78,21 +79,32 @@ export class Chat {
78
79
  });
79
80
  }
80
81
  }
81
- const normalizedPromptsArray = prompts.map((p) => p.getNormalizedSnapshot(this.defaultRole));
82
+ const normalizedPromptsArray = prompts.map((p) => p.getNormalizedSnapshot());
82
83
  const promptSnapshot = isMulti ? snapshots : snapshots[0];
83
- const normalizedPrompts = isMulti ? normalizedPromptsArray : normalizedPromptsArray[0];
84
- if (!promptSnapshot || !normalizedPrompts) {
84
+ if (!promptSnapshot || normalizedPromptsArray.length === 0) {
85
85
  throw new ChatInvalidPromptSnapshot({
86
86
  chatId: this.id,
87
- snapshot: promptSnapshot,
87
+ snapshot: promptSnapshot ?? [],
88
88
  });
89
89
  }
90
90
  const originalContext = await this.contextManager.getContext(this.id);
91
- const { body, messages: stagedMessages } = this.buildRequest(originalContext, normalizedPrompts);
92
- const response = await this.coreApiProvider.sendMessage(body);
91
+ const { body, messages: stagedMessages } = this.buildRequest(originalContext, normalizedPromptsArray);
92
+ // Track requestId for the result
93
+ let capturedRequestId;
94
+ const requestOptions = options
95
+ ? {
96
+ signal: options.signal,
97
+ onRequestId: (id) => {
98
+ capturedRequestId = id;
99
+ options.onRequestId?.(id);
100
+ },
101
+ }
102
+ : undefined;
103
+ const response = await this.coreApiProvider.sendMessage(body, requestOptions);
93
104
  if (!Chat.isSuccessResponse(response)) {
94
105
  return {
95
106
  chatId: this.id,
107
+ requestId: capturedRequestId,
96
108
  prompt: body.prompt,
97
109
  promptSnapshot,
98
110
  messages: stagedMessages,
@@ -107,6 +119,7 @@ export class Chat {
107
119
  await this.contextManager.setToolsConfig(this.id, originalContext.toolsConfig);
108
120
  return {
109
121
  chatId: this.id,
122
+ requestId: response.requestId ?? capturedRequestId,
110
123
  prompt: body.prompt,
111
124
  promptSnapshot,
112
125
  messages: response.messages,
@@ -117,6 +130,64 @@ export class Chat {
117
130
  },
118
131
  };
119
132
  }
133
+ /**
134
+ * Sends a message with streaming response via SSE.
135
+ *
136
+ * Instead of waiting for the full response, this method streams telemetry events
137
+ * in real-time as they occur during orchestration. The final result is delivered
138
+ * through the `onComplete` callback.
139
+ *
140
+ * This eliminates the need for a separate telemetry subscription - events and
141
+ * the result are delivered through a single HTTP connection.
142
+ *
143
+ * @param prompt A single Prompt instance of kind "text".
144
+ * @param options Streaming options with event callbacks.
145
+ *
146
+ * @throws {ChatInvalidSinglePromptKind} When the prompt is not of kind "text".
147
+ *
148
+ * @example
149
+ * ```typescript
150
+ * await chat.sendMessageStreaming(
151
+ * new Prompt({ text: "Show me my balance" }),
152
+ * {
153
+ * onEvent: (event) => console.log('Event:', event.type),
154
+ * onComplete: (result) => console.log('Done:', result.text),
155
+ * onError: (error) => console.error('Error:', error),
156
+ * }
157
+ * );
158
+ * ```
159
+ */
160
+ async sendMessageStreaming(prompt, options = {}) {
161
+ const snapshot = prompt.getSnapshot();
162
+ if (snapshot.kind !== "text") {
163
+ throw new ChatInvalidSinglePromptKind({
164
+ chatId: this.id,
165
+ kind: snapshot.kind,
166
+ });
167
+ }
168
+ const normalizedPrompt = [prompt.getNormalizedSnapshot()];
169
+ const context = await this.contextManager.getContext(this.id);
170
+ const { body } = this.buildRequest(context, normalizedPrompt);
171
+ await this.coreApiProvider.sendMessageStreaming(body, {
172
+ signal: options.signal,
173
+ onEvent: options.onEvent,
174
+ onTextDelta: options.onTextDelta,
175
+ onComplete: (result) => {
176
+ void (async () => {
177
+ try {
178
+ await this.contextManager.setMessages(this.id, result.messages);
179
+ await this.contextManager.setToolsConfig(this.id, context.toolsConfig);
180
+ }
181
+ catch (error) {
182
+ options.onError?.(error instanceof Error ? error : new Error(String(error)));
183
+ return;
184
+ }
185
+ options.onComplete?.(result);
186
+ })();
187
+ },
188
+ onError: options.onError,
189
+ });
190
+ }
120
191
  buildRequest(context, normalizedPrompt) {
121
192
  const baseBodyRequest = {
122
193
  body: {
@@ -129,32 +200,20 @@ export class Chat {
129
200
  messages: context.messages,
130
201
  toolsConfig: context.toolsConfig,
131
202
  };
132
- // Handle single prompt
133
- if (!Array.isArray(normalizedPrompt)) {
134
- return {
135
- ...baseBodyRequest,
136
- body: {
137
- ...baseBodyRequest.body,
138
- prompt: normalizedPrompt.kind === "text" ? normalizedPrompt.message : undefined,
139
- },
140
- };
141
- }
142
- // Handle array of prompts (all tool-results)
143
- const toolResults = normalizedPrompt.map((p) => {
144
- if (p.kind === "tool-result") {
145
- return p.prompt;
203
+ const textPrompt = normalizedPrompt.find((p) => p.type === "text");
204
+ const toolResultPrompts = normalizedPrompt.filter((p) => p.type === "tool-result");
205
+ const promptValue = textPrompt
206
+ ? {
207
+ role: "user",
208
+ content: [{ type: "text", text: textPrompt.text }],
146
209
  }
147
- // This should never happen due to validation, but TypeScript needs this
148
- throw new ChatInvalidMultiplePromptsKind({
149
- chatId: this.id,
150
- kind: p.kind,
151
- });
152
- });
210
+ : undefined;
153
211
  return {
154
212
  ...baseBodyRequest,
155
213
  body: {
156
214
  ...baseBodyRequest.body,
157
- toolResults,
215
+ toolResults: toolResultPrompts.flatMap((p) => p.toolResults),
216
+ prompt: promptValue,
158
217
  },
159
218
  };
160
219
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../../src/chat/Chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chat.js","sourceRoot":"","sources":["../../../src/chat/Chat.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ const cloneMessageContent = (content) => {
4
4
  if (typeof content === "string") {
5
5
  return content;
6
6
  }
7
- return content.map((part) => ({ ...part }));
7
+ return structuredClone(content);
8
8
  };
9
9
  const cloneMessages = (messages) => messages.map((message) => ({
10
10
  ...message,
@@ -1 +1 @@
1
- {"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../../../src/context/ContextManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContextManager.js","sourceRoot":"","sources":["../../../src/context/ContextManager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CoreApiChatBodyRequest, CoreApiChatErrorResponse, CoreApiChatSuccessResponse, MessageHistoryType, ModelContext, PersonalityContext, ToolAutorouterRequest, UserContext } from "@illalabs/interfaces";
1
+ import type { CoreApiChatBodyRequest, CoreApiChatErrorResponse, CoreApiChatSuccessResponse, MessageHistoryType, ModelContext, PersonalityContext, TelemetryEvent, ToolAutorouterRequest, UserContext, ValidatedResultEventData } from "@illalabs/interfaces";
2
2
  import type { AsyncToolChecker } from "../asyncToolChecker/index.js";
3
3
  import type { PromptRole, PromptSnapshot } from "../prompt/index.js";
4
4
  import type { IContextManager } from "./contextManager.interface.js";
@@ -43,6 +43,52 @@ export interface ChatOptions {
43
43
  */
44
44
  readonly personalityContext?: PersonalityContext;
45
45
  }
46
+ /**
47
+ * Options for sending a message through the chat instance.
48
+ */
49
+ export interface SendMessageOptions {
50
+ /**
51
+ * Abort signal used to cancel the request.
52
+ */
53
+ readonly signal?: AbortSignal;
54
+ /**
55
+ * Callback invoked with the requestId after the request is initiated.
56
+ * This enables connecting to telemetry streams for real-time event updates.
57
+ */
58
+ readonly onRequestId?: (requestId: string) => void;
59
+ }
60
+ /**
61
+ * Options for streaming message responses.
62
+ * Streaming delivers telemetry events in real-time followed by the final result,
63
+ * eliminating the need for a separate telemetry subscription.
64
+ */
65
+ export interface SendMessageStreamingOptions {
66
+ /**
67
+ * Abort signal used to cancel the request.
68
+ */
69
+ readonly signal?: AbortSignal;
70
+ /**
71
+ * Called when a telemetry event is received during orchestration.
72
+ * Events are emitted in real-time as they occur on the server.
73
+ */
74
+ readonly onEvent?: (event: TelemetryEvent) => void;
75
+ /**
76
+ * Called when a text delta is received from the LLM.
77
+ * This enables real-time display of LLM-generated text as it streams in.
78
+ * @param delta - The text chunk received from the LLM
79
+ */
80
+ readonly onTextDelta?: (delta: string) => void;
81
+ /**
82
+ * Called when the orchestration completes successfully.
83
+ * The result contains the final chat response with messages, text, and pending tools.
84
+ * Type is inferred from resultEventDataSchema for compile-time safety.
85
+ */
86
+ readonly onComplete?: (result: ValidatedResultEventData) => void;
87
+ /**
88
+ * Called when an error occurs during streaming or orchestration.
89
+ */
90
+ readonly onError?: (error: Error) => void;
91
+ }
46
92
  /**
47
93
  * Result returned when sending a message through the chat instance.
48
94
  */
@@ -51,6 +97,11 @@ export interface SendMessageResult {
51
97
  * Identifier of the chat instance that processed the message.
52
98
  */
53
99
  readonly chatId: string;
100
+ /**
101
+ * Request ID used for telemetry subscription.
102
+ * This ID can be used to connect to the telemetry stream for real-time events.
103
+ */
104
+ readonly requestId?: string;
54
105
  /**
55
106
  * The prompt that was sent to the Core API.
56
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chat.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/chat.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAErC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAE7C;;OAEG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACpD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAElD;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,EACX;QACI,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;QAC1C,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;KAC3B,GACD;QACI,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;KAC5C,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAE5C;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACrC"}
1
+ {"version":3,"file":"chat.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/chat.interface.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { CoreApiChatRequest, CoreApiChatResponse, LongPollingActionRequest, LongPollingActionResponse } from "@illalabs/interfaces";
2
- import type { CoreApiProviderRoutes, RequestOptions } from "../providers/coreApiProvider/index.js";
2
+ import type { CoreApiProviderRoutes, RequestOptions, StreamingRequestOptions } from "../providers/coreApiProvider/index.js";
3
3
  /**
4
4
  * Contract for the Core API provider
5
5
  */
@@ -13,6 +13,18 @@ export interface ICoreApiProvider {
13
13
  * @returns Core API chat response
14
14
  */
15
15
  sendMessage(request: CoreApiChatRequest["body"], options?: RequestOptions): Promise<CoreApiChatResponse>;
16
+ /**
17
+ * Sends a chat request with streaming response via SSE.
18
+ *
19
+ * Instead of waiting for the full response, this method streams telemetry events
20
+ * in real-time as they occur during orchestration. The final result is delivered
21
+ * through the `onComplete` callback.
22
+ *
23
+ * @param request Chat request payload
24
+ * @param options Streaming options with event callbacks
25
+ * @returns A promise that resolves when the stream ends
26
+ */
27
+ sendMessageStreaming(request: CoreApiChatRequest["body"], options?: StreamingRequestOptions): Promise<void>;
16
28
  /**
17
29
  * Checks the status of a long running action
18
30
  *
@@ -1 +1 @@
1
- {"version":3,"file":"coreApiProvider.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/coreApiProvider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAEnG;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;OAOG;IACH,WAAW,CACP,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;OAOG;IACH,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EAC3C,OAAO,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEtC;;;;OAIG;IACH,SAAS,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CAChD"}
1
+ {"version":3,"file":"coreApiProvider.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/coreApiProvider.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACR,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EAC1B,MAAM,uCAAuC,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;;;;;OAOG;IACH,WAAW,CACP,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC;;;;;;;;;;OAUG;IACH,oBAAoB,CAChB,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACnC,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;OAOG;IACH,gBAAgB,CACZ,OAAO,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EAC3C,OAAO,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEtC;;;;OAIG;IACH,SAAS,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAAC;CAChD"}
@@ -3,5 +3,5 @@ export type { CacheEntryOptions, ICache } from "./cache.interface.js";
3
3
  export type { ChatContextSnapshot, ContextManagerOptions, IContextManager, } from "./contextManager.interface.js";
4
4
  export type { AsyncCheckerEvents, AsyncToolCheckerCheckParams, AsyncToolCheckerOptions, EventSubscription, PollingConfig, StatusChangedEvent, } from "./asyncToolChecker.interface.js";
5
5
  export type { AsyncToolChecker, AwaitActionResult, AwaitableActionDescriptor, } from "../asyncToolChecker/index.js";
6
- export type { ChatOptions, ChatRequestPayload, SendMessageResult } from "./chat.interface.js";
6
+ export type { ChatOptions, ChatRequestPayload, SendMessageOptions, SendMessageResult, SendMessageStreamingOptions, } from "./chat.interface.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EACR,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAClB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACR,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACrB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACR,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,GAC5B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EACR,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAClB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACR,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,GACrB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACR,gBAAgB,EAChB,iBAAiB,EACjB,yBAAyB,GAC5B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACR,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,2BAA2B,GAC9B,MAAM,qBAAqB,CAAC"}
@@ -12,4 +12,5 @@ export * from "./prompt/index.js";
12
12
  export * from "./asyncToolChecker/index.js";
13
13
  export * from "./providers/index.js";
14
14
  export * from "./interfaces/index.js";
15
+ export * from "./telemetry/index.js";
15
16
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
@@ -12,4 +12,5 @@ export * from "./prompt/index.js";
12
12
  export * from "./asyncToolChecker/index.js";
13
13
  export * from "./providers/index.js";
14
14
  export * from "./interfaces/index.js";
15
+ export * from "./telemetry/index.js";
15
16
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC"}
@@ -1,5 +1,4 @@
1
- import type { MessageType } from "@illalabs/interfaces";
2
- import type { NormalizedPromptSnapshot, PromptOptions, PromptRole, PromptSnapshot } from "./types.js";
1
+ import type { NormalizedPromptSnapshot, PromptOptions, PromptSnapshot } from "./types.js";
3
2
  /**
4
3
  * Represents a message payload that can be sent to the Core API.
5
4
  *
@@ -28,14 +27,7 @@ export declare class Prompt {
28
27
  * @param role The role to assign to the message (e.g., "user", "assistant", "tool").
29
28
  * @returns A normalized snapshot containing both the prompt payload and message format.
30
29
  */
31
- getNormalizedSnapshot(role: PromptRole): NormalizedPromptSnapshot;
32
- /**
33
- * Converts the prompt into a message history entry with the specified role.
34
- *
35
- * @param role The role to assign to the message (e.g., "user", "assistant", "tool").
36
- * @returns A message object compatible with the message history format.
37
- */
38
- toMessage(role: PromptRole): MessageType;
30
+ getNormalizedSnapshot(): NormalizedPromptSnapshot;
39
31
  /**
40
32
  * Converts the prompt to a string representation.
41
33
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/prompt/Prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,sBAAsB,CAAC;AAIxE,OAAO,KAAK,EACR,wBAAwB,EACxB,aAAa,EACb,UAAU,EACV,cAAc,EACjB,MAAM,YAAY,CAAC;AAIpB;;;;;;GAMG;AACH,qBAAa,MAAM;IACf,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C;;;;;OAKG;gBACgB,OAAO,EAAE,aAAa;IAIzC;;;;OAIG;IACI,WAAW,IAAI,cAAc;IAIpC;;;;;OAKG;IACI,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,wBAAwB;IAoBxE;;;;;OAKG;IACI,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW;IAI/C;;;;OAIG;IACI,QAAQ,IAAI,MAAM;IAQzB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAyB7B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;CAa/B"}
1
+ {"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/prompt/Prompt.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAI1F;;;;;;GAMG;AACH,qBAAa,MAAM;IACf,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C;;;;;OAKG;gBACgB,OAAO,EAAE,aAAa;IAIzC;;;;OAIG;IACI,WAAW,IAAI,cAAc;IAIpC;;;;;OAKG;IACI,qBAAqB,IAAI,wBAAwB;IAcxD;;;;OAIG;IACI,QAAQ,IAAI,MAAM;IAQzB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAyB7B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;CAa/B"}