@illalabs/sdk 0.0.0 → 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 (205) hide show
  1. package/LICENSE +17 -2
  2. package/dist/src/asyncToolChecker/AsyncToolChecker.d.ts +39 -0
  3. package/dist/src/asyncToolChecker/AsyncToolChecker.d.ts.map +1 -0
  4. package/dist/src/asyncToolChecker/AsyncToolChecker.js +209 -0
  5. package/dist/src/asyncToolChecker/AsyncToolChecker.js.map +1 -0
  6. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMaxRetriesExceeded.d.ts +23 -0
  7. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMaxRetriesExceeded.d.ts.map +1 -0
  8. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMaxRetriesExceeded.js +30 -0
  9. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMaxRetriesExceeded.js.map +1 -0
  10. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMethodNotImplemented.d.ts +17 -0
  11. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMethodNotImplemented.d.ts.map +1 -0
  12. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMethodNotImplemented.js +26 -0
  13. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerMethodNotImplemented.js.map +1 -0
  14. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerTimeout.d.ts +17 -0
  15. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerTimeout.d.ts.map +1 -0
  16. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerTimeout.js +21 -0
  17. package/dist/src/asyncToolChecker/errors/AsyncToolCheckerTimeout.js.map +1 -0
  18. package/dist/src/asyncToolChecker/errors/index.d.ts +4 -0
  19. package/dist/src/asyncToolChecker/errors/index.d.ts.map +1 -0
  20. package/dist/src/asyncToolChecker/errors/index.js +4 -0
  21. package/dist/src/asyncToolChecker/errors/index.js.map +1 -0
  22. package/dist/src/asyncToolChecker/index.d.ts +6 -0
  23. package/dist/src/asyncToolChecker/index.d.ts.map +1 -0
  24. package/dist/src/asyncToolChecker/index.js +5 -0
  25. package/dist/src/asyncToolChecker/index.js.map +1 -0
  26. package/dist/src/asyncToolChecker/types.d.ts +24 -0
  27. package/dist/src/asyncToolChecker/types.d.ts.map +1 -0
  28. package/dist/src/asyncToolChecker/types.js +2 -0
  29. package/dist/src/asyncToolChecker/types.js.map +1 -0
  30. package/dist/src/asyncToolChecker/utils/index.d.ts +3 -0
  31. package/dist/src/asyncToolChecker/utils/index.d.ts.map +1 -0
  32. package/dist/src/asyncToolChecker/utils/index.js +3 -0
  33. package/dist/src/asyncToolChecker/utils/index.js.map +1 -0
  34. package/dist/src/asyncToolChecker/utils/isErrorResponse.d.ts +11 -0
  35. package/dist/src/asyncToolChecker/utils/isErrorResponse.d.ts.map +1 -0
  36. package/dist/src/asyncToolChecker/utils/isErrorResponse.js +12 -0
  37. package/dist/src/asyncToolChecker/utils/isErrorResponse.js.map +1 -0
  38. package/dist/src/asyncToolChecker/utils/normalizeTimeout.d.ts +9 -0
  39. package/dist/src/asyncToolChecker/utils/normalizeTimeout.d.ts.map +1 -0
  40. package/dist/src/asyncToolChecker/utils/normalizeTimeout.js +14 -0
  41. package/dist/src/asyncToolChecker/utils/normalizeTimeout.js.map +1 -0
  42. package/dist/src/caching/InMemoryCache.d.ts +14 -0
  43. package/dist/src/caching/InMemoryCache.d.ts.map +1 -0
  44. package/dist/src/caching/InMemoryCache.js +31 -0
  45. package/dist/src/caching/InMemoryCache.js.map +1 -0
  46. package/dist/src/caching/index.d.ts +3 -0
  47. package/dist/src/caching/index.d.ts.map +1 -0
  48. package/dist/src/caching/index.js +2 -0
  49. package/dist/src/caching/index.js.map +1 -0
  50. package/dist/src/chat/Chat.d.ts +62 -0
  51. package/dist/src/chat/Chat.d.ts.map +1 -0
  52. package/dist/src/chat/Chat.js +126 -0
  53. package/dist/src/chat/Chat.js.map +1 -0
  54. package/dist/src/chat/errors/ChatAsyncToolCheckerUnavailable.d.ts +19 -0
  55. package/dist/src/chat/errors/ChatAsyncToolCheckerUnavailable.d.ts.map +1 -0
  56. package/dist/src/chat/errors/ChatAsyncToolCheckerUnavailable.js +28 -0
  57. package/dist/src/chat/errors/ChatAsyncToolCheckerUnavailable.js.map +1 -0
  58. package/dist/src/chat/errors/index.d.ts +2 -0
  59. package/dist/src/chat/errors/index.d.ts.map +1 -0
  60. package/dist/src/chat/errors/index.js +2 -0
  61. package/dist/src/chat/errors/index.js.map +1 -0
  62. package/dist/src/chat/index.d.ts +5 -0
  63. package/dist/src/chat/index.d.ts.map +1 -0
  64. package/dist/src/chat/index.js +3 -0
  65. package/dist/src/chat/index.js.map +1 -0
  66. package/dist/src/chat/types.d.ts +9 -0
  67. package/dist/src/chat/types.d.ts.map +1 -0
  68. package/dist/src/chat/types.js +2 -0
  69. package/dist/src/chat/types.js.map +1 -0
  70. package/dist/src/chat/utils/index.d.ts +2 -0
  71. package/dist/src/chat/utils/index.d.ts.map +1 -0
  72. package/dist/src/chat/utils/index.js +2 -0
  73. package/dist/src/chat/utils/index.js.map +1 -0
  74. package/dist/src/chat/utils/uuid.d.ts +12 -0
  75. package/dist/src/chat/utils/uuid.d.ts.map +1 -0
  76. package/dist/src/chat/utils/uuid.js +19 -0
  77. package/dist/src/chat/utils/uuid.js.map +1 -0
  78. package/dist/src/context/ContextManager.d.ts +26 -0
  79. package/dist/src/context/ContextManager.d.ts.map +1 -0
  80. package/dist/src/context/ContextManager.js +93 -0
  81. package/dist/src/context/ContextManager.js.map +1 -0
  82. package/dist/src/context/index.d.ts +2 -0
  83. package/dist/src/context/index.d.ts.map +1 -0
  84. package/dist/src/context/index.js +2 -0
  85. package/dist/src/context/index.js.map +1 -0
  86. package/dist/src/context/types.d.ts +17 -0
  87. package/dist/src/context/types.d.ts.map +1 -0
  88. package/dist/src/context/types.js +2 -0
  89. package/dist/src/context/types.js.map +1 -0
  90. package/dist/src/external.d.ts +14 -0
  91. package/dist/src/external.d.ts.map +1 -0
  92. package/dist/src/external.js +13 -0
  93. package/dist/src/external.js.map +1 -0
  94. package/dist/src/index.d.ts +8 -0
  95. package/dist/src/index.d.ts.map +1 -0
  96. package/dist/src/index.js +8 -0
  97. package/dist/src/index.js.map +1 -0
  98. package/dist/src/interfaces/asyncToolChecker.interface.d.ts +85 -0
  99. package/dist/src/interfaces/asyncToolChecker.interface.d.ts.map +1 -0
  100. package/dist/src/interfaces/asyncToolChecker.interface.js +2 -0
  101. package/dist/src/interfaces/asyncToolChecker.interface.js.map +1 -0
  102. package/dist/src/interfaces/cache.interface.d.ts +35 -0
  103. package/dist/src/interfaces/cache.interface.d.ts.map +1 -0
  104. package/dist/src/interfaces/cache.interface.js +2 -0
  105. package/dist/src/interfaces/cache.interface.js.map +1 -0
  106. package/dist/src/interfaces/chat.interface.d.ts +84 -0
  107. package/dist/src/interfaces/chat.interface.d.ts.map +1 -0
  108. package/dist/src/interfaces/chat.interface.js +2 -0
  109. package/dist/src/interfaces/chat.interface.js.map +1 -0
  110. package/dist/src/interfaces/contextManager.interface.d.ts +86 -0
  111. package/dist/src/interfaces/contextManager.interface.d.ts.map +1 -0
  112. package/dist/src/interfaces/contextManager.interface.js +2 -0
  113. package/dist/src/interfaces/contextManager.interface.js.map +1 -0
  114. package/dist/src/interfaces/coreApiProvider.interface.d.ts +26 -0
  115. package/dist/src/interfaces/coreApiProvider.interface.d.ts.map +1 -0
  116. package/dist/src/interfaces/coreApiProvider.interface.js +2 -0
  117. package/dist/src/interfaces/coreApiProvider.interface.js.map +1 -0
  118. package/dist/src/interfaces/index.d.ts +7 -0
  119. package/dist/src/interfaces/index.d.ts.map +1 -0
  120. package/dist/src/interfaces/index.js +2 -0
  121. package/dist/src/interfaces/index.js.map +1 -0
  122. package/dist/src/internal.d.ts +14 -0
  123. package/dist/src/internal.d.ts.map +1 -0
  124. package/dist/src/internal.js +14 -0
  125. package/dist/src/internal.js.map +1 -0
  126. package/dist/src/prompt/Prompt.d.ts +61 -0
  127. package/dist/src/prompt/Prompt.d.ts.map +1 -0
  128. package/dist/src/prompt/Prompt.js +118 -0
  129. package/dist/src/prompt/Prompt.js.map +1 -0
  130. package/dist/src/prompt/errors/PromptConfigurationConflict.d.ts +10 -0
  131. package/dist/src/prompt/errors/PromptConfigurationConflict.d.ts.map +1 -0
  132. package/dist/src/prompt/errors/PromptConfigurationConflict.js +13 -0
  133. package/dist/src/prompt/errors/PromptConfigurationConflict.js.map +1 -0
  134. package/dist/src/prompt/errors/index.d.ts +2 -0
  135. package/dist/src/prompt/errors/index.d.ts.map +1 -0
  136. package/dist/src/prompt/errors/index.js +2 -0
  137. package/dist/src/prompt/errors/index.js.map +1 -0
  138. package/dist/src/prompt/index.d.ts +4 -0
  139. package/dist/src/prompt/index.d.ts.map +1 -0
  140. package/dist/src/prompt/index.js +3 -0
  141. package/dist/src/prompt/index.js.map +1 -0
  142. package/dist/src/prompt/types.d.ts +57 -0
  143. package/dist/src/prompt/types.d.ts.map +1 -0
  144. package/dist/src/prompt/types.js +2 -0
  145. package/dist/src/prompt/types.js.map +1 -0
  146. package/dist/src/prompt/utils/cloneToolResult.d.ts +12 -0
  147. package/dist/src/prompt/utils/cloneToolResult.d.ts.map +1 -0
  148. package/dist/src/prompt/utils/cloneToolResult.js +28 -0
  149. package/dist/src/prompt/utils/cloneToolResult.js.map +1 -0
  150. package/dist/src/prompt/utils/deepClone.d.ts +9 -0
  151. package/dist/src/prompt/utils/deepClone.d.ts.map +1 -0
  152. package/dist/src/prompt/utils/deepClone.js +15 -0
  153. package/dist/src/prompt/utils/deepClone.js.map +1 -0
  154. package/dist/src/prompt/utils/index.d.ts +5 -0
  155. package/dist/src/prompt/utils/index.d.ts.map +1 -0
  156. package/dist/src/prompt/utils/index.js +5 -0
  157. package/dist/src/prompt/utils/index.js.map +1 -0
  158. package/dist/src/prompt/utils/normalizeTextPrompt.d.ts +14 -0
  159. package/dist/src/prompt/utils/normalizeTextPrompt.d.ts.map +1 -0
  160. package/dist/src/prompt/utils/normalizeTextPrompt.js +22 -0
  161. package/dist/src/prompt/utils/normalizeTextPrompt.js.map +1 -0
  162. package/dist/src/prompt/utils/normalizeToolResult.d.ts +14 -0
  163. package/dist/src/prompt/utils/normalizeToolResult.d.ts.map +1 -0
  164. package/dist/src/prompt/utils/normalizeToolResult.js +27 -0
  165. package/dist/src/prompt/utils/normalizeToolResult.js.map +1 -0
  166. package/dist/src/providers/coreApiProvider/CoreApiProvider.d.ts +35 -0
  167. package/dist/src/providers/coreApiProvider/CoreApiProvider.d.ts.map +1 -0
  168. package/dist/src/providers/coreApiProvider/CoreApiProvider.js +93 -0
  169. package/dist/src/providers/coreApiProvider/CoreApiProvider.js.map +1 -0
  170. package/dist/src/providers/coreApiProvider/CoreApiProviderConfig.d.ts +24 -0
  171. package/dist/src/providers/coreApiProvider/CoreApiProviderConfig.d.ts.map +1 -0
  172. package/dist/src/providers/coreApiProvider/CoreApiProviderConfig.js +2 -0
  173. package/dist/src/providers/coreApiProvider/CoreApiProviderConfig.js.map +1 -0
  174. package/dist/src/providers/coreApiProvider/RequestOptions.d.ts +10 -0
  175. package/dist/src/providers/coreApiProvider/RequestOptions.d.ts.map +1 -0
  176. package/dist/src/providers/coreApiProvider/RequestOptions.js +2 -0
  177. package/dist/src/providers/coreApiProvider/RequestOptions.js.map +1 -0
  178. package/dist/src/providers/coreApiProvider/errors/CoreApiAuthenticationMissing.d.ts +10 -0
  179. package/dist/src/providers/coreApiProvider/errors/CoreApiAuthenticationMissing.d.ts.map +1 -0
  180. package/dist/src/providers/coreApiProvider/errors/CoreApiAuthenticationMissing.js +14 -0
  181. package/dist/src/providers/coreApiProvider/errors/CoreApiAuthenticationMissing.js.map +1 -0
  182. package/dist/src/providers/coreApiProvider/errors/CoreApiMethodNotImplemented.d.ts +9 -0
  183. package/dist/src/providers/coreApiProvider/errors/CoreApiMethodNotImplemented.d.ts.map +1 -0
  184. package/dist/src/providers/coreApiProvider/errors/CoreApiMethodNotImplemented.js +19 -0
  185. package/dist/src/providers/coreApiProvider/errors/CoreApiMethodNotImplemented.js.map +1 -0
  186. package/dist/src/providers/coreApiProvider/errors/index.d.ts +3 -0
  187. package/dist/src/providers/coreApiProvider/errors/index.d.ts.map +1 -0
  188. package/dist/src/providers/coreApiProvider/errors/index.js +3 -0
  189. package/dist/src/providers/coreApiProvider/errors/index.js.map +1 -0
  190. package/dist/src/providers/coreApiProvider/index.d.ts +7 -0
  191. package/dist/src/providers/coreApiProvider/index.d.ts.map +1 -0
  192. package/dist/src/providers/coreApiProvider/index.js +3 -0
  193. package/dist/src/providers/coreApiProvider/index.js.map +1 -0
  194. package/dist/src/providers/coreApiProvider/types.d.ts +7 -0
  195. package/dist/src/providers/coreApiProvider/types.d.ts.map +1 -0
  196. package/dist/src/providers/coreApiProvider/types.js +2 -0
  197. package/dist/src/providers/coreApiProvider/types.js.map +1 -0
  198. package/dist/src/providers/index.d.ts +2 -0
  199. package/dist/src/providers/index.d.ts.map +1 -0
  200. package/dist/src/providers/index.js +2 -0
  201. package/dist/src/providers/index.js.map +1 -0
  202. package/package.json +36 -5
  203. package/README.md +0 -3
  204. package/index.d.ts +0 -1
  205. package/index.js +0 -1
@@ -0,0 +1,118 @@
1
+ import { ToolResultSchema } from "@illalabs/interfaces";
2
+ import { stringify } from "viem";
3
+ import { PromptConfigurationConflict } from "./errors/index.js";
4
+ import { cloneToolResult, normalizeTextPrompt, normalizeToolResult } from "./utils/index.js";
5
+ /**
6
+ * Represents a message payload that can be sent to the Core API.
7
+ *
8
+ * The {@link Prompt} class abstracts the differences between plain text
9
+ * messages and tool execution results while guaranteeing runtime validation
10
+ * for tool responses.
11
+ */
12
+ export class Prompt {
13
+ snapshot;
14
+ /**
15
+ * Creates a new {@link Prompt} instance from the provided options.
16
+ *
17
+ * @param options Configuration options containing either text or tool result data.
18
+ * @throws {PromptConfigurationConflict} When both text and toolResult are provided, or neither is provided.
19
+ */
20
+ constructor(options) {
21
+ this.snapshot = Prompt.createSnapshot(options);
22
+ }
23
+ /**
24
+ * Retrieves a deep copy of the prompt's internal snapshot.
25
+ *
26
+ * @returns A cloned snapshot containing the prompt's current state.
27
+ */
28
+ getSnapshot() {
29
+ return Prompt.cloneSnapshot(this.snapshot);
30
+ }
31
+ /**
32
+ * Converts the prompt snapshot into a normalized format suitable for API transmission.
33
+ *
34
+ * @param role The role to assign to the message (e.g., "user", "assistant", "tool").
35
+ * @returns A normalized snapshot containing both the prompt payload and message format.
36
+ */
37
+ getNormalizedSnapshot(role) {
38
+ if (this.snapshot.kind === "text") {
39
+ const normalized = normalizeTextPrompt(this.snapshot.text, role);
40
+ return {
41
+ kind: "text",
42
+ prompt: normalized.prompt,
43
+ message: normalized.message,
44
+ };
45
+ }
46
+ const normalized = normalizeToolResult(this.snapshot.toolResult, role);
47
+ return {
48
+ kind: "tool-result",
49
+ prompt: normalized.prompt,
50
+ message: normalized.message,
51
+ };
52
+ }
53
+ /**
54
+ * Converts the prompt into a message history entry with the specified role.
55
+ *
56
+ * @param role The role to assign to the message (e.g., "user", "assistant", "tool").
57
+ * @returns A message object compatible with the message history format.
58
+ */
59
+ toMessage(role) {
60
+ return this.getNormalizedSnapshot(role).message;
61
+ }
62
+ /**
63
+ * Converts the prompt to a string representation.
64
+ *
65
+ * @returns For text prompts, returns the text content. For tool results, returns a JSON string representation.
66
+ */
67
+ toString() {
68
+ if (this.snapshot.kind === "text") {
69
+ return this.snapshot.text ?? "";
70
+ }
71
+ return stringify(this.snapshot.toolResult);
72
+ }
73
+ /**
74
+ * Creates a prompt snapshot from the provided options, ensuring exactly one input type is specified.
75
+ *
76
+ * @param options Configuration options containing either text or tool result data.
77
+ * @returns A validated prompt snapshot.
78
+ * @throws {PromptConfigurationConflict} When both text and toolResult are provided, or neither is provided.
79
+ */
80
+ static createSnapshot(options) {
81
+ const { text, toolResult } = options;
82
+ const hasText = text !== undefined;
83
+ const hasToolResult = toolResult !== undefined;
84
+ if (hasText === hasToolResult) {
85
+ throw new PromptConfigurationConflict();
86
+ }
87
+ if (hasText) {
88
+ return {
89
+ kind: "text",
90
+ text,
91
+ };
92
+ }
93
+ const validated = ToolResultSchema.parse(toolResult);
94
+ return {
95
+ kind: "tool-result",
96
+ toolResult: validated,
97
+ };
98
+ }
99
+ /**
100
+ * Creates a deep copy of a prompt snapshot to prevent external mutation.
101
+ *
102
+ * @param snapshot The snapshot to clone.
103
+ * @returns A new snapshot with the same values as the input.
104
+ */
105
+ static cloneSnapshot(snapshot) {
106
+ if (snapshot.kind === "text") {
107
+ return {
108
+ kind: "text",
109
+ text: snapshot.text,
110
+ };
111
+ }
112
+ return {
113
+ kind: "tool-result",
114
+ toolResult: cloneToolResult(snapshot.toolResult),
115
+ };
116
+ }
117
+ }
118
+ //# sourceMappingURL=Prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prompt.js","sourceRoot":"","sources":["../../../src/prompt/Prompt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAQjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE7F;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IACE,QAAQ,CAAiB;IAE1C;;;;;OAKG;IACH,YAAmB,OAAsB;QACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACI,WAAW;QACd,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACI,qBAAqB,CAAC,IAAgB;QACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAEjE,OAAO;gBACH,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU,CAAC,OAAO;aAC9B,CAAC;QACN,CAAC;QAED,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAEvE,OAAO;YACH,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,OAAO,EAAE,UAAU,CAAC,OAAO;SAC9B,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACI,SAAS,CAAC,IAAgB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACI,QAAQ;QACX,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,cAAc,CAAC,OAAsB;QAChD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC;QACnC,MAAM,aAAa,GAAG,UAAU,KAAK,SAAS,CAAC;QAE/C,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC5B,MAAM,IAAI,2BAA2B,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,OAAO;gBACH,IAAI,EAAE,MAAM;gBACZ,IAAI;aACP,CAAC;QACN,CAAC;QAED,MAAM,SAAS,GAAmB,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAErE,OAAO;YACH,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,SAAS;SACxB,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,aAAa,CAAC,QAAwB;QACjD,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO;gBACH,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ,CAAC,IAAI;aACtB,CAAC;QACN,CAAC;QAED,OAAO;YACH,IAAI,EAAE,aAAa;YACnB,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;SACnD,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Raised when a prompt receives an invalid configuration.
3
+ *
4
+ * This error occurs when both text and toolResult are provided,
5
+ * or when neither option is defined.
6
+ */
7
+ export declare class PromptConfigurationConflict extends Error {
8
+ constructor();
9
+ }
10
+ //# sourceMappingURL=PromptConfigurationConflict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptConfigurationConflict.d.ts","sourceRoot":"","sources":["../../../../src/prompt/errors/PromptConfigurationConflict.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;;CAKrD"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Raised when a prompt receives an invalid configuration.
3
+ *
4
+ * This error occurs when both text and toolResult are provided,
5
+ * or when neither option is defined.
6
+ */
7
+ export class PromptConfigurationConflict extends Error {
8
+ constructor() {
9
+ super("Prompt requires either text or toolResult, but not both");
10
+ this.name = "PromptConfigurationConflict";
11
+ }
12
+ }
13
+ //# sourceMappingURL=PromptConfigurationConflict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptConfigurationConflict.js","sourceRoot":"","sources":["../../../../src/prompt/errors/PromptConfigurationConflict.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAClD;QACI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC9C,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export { PromptConfigurationConflict } from "./PromptConfigurationConflict.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/prompt/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { PromptConfigurationConflict } from "./PromptConfigurationConflict.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/prompt/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { Prompt } from "./Prompt.js";
2
+ export { PromptConfigurationConflict } from "./errors/index.js";
3
+ export type { PromptKind, PromptOptions, PromptSnapshot, PromptRole, NormalizedPromptSnapshot, } from "./types.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/prompt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EACR,UAAU,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,wBAAwB,GAC3B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Prompt } from "./Prompt.js";
2
+ export { PromptConfigurationConflict } from "./errors/index.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/prompt/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import type { MessageType, ToolResultType } from "@illalabs/interfaces";
2
+ /**
3
+ * Enumerates the supported prompt payload variants.
4
+ */
5
+ export type PromptKind = "text" | "tool-result";
6
+ /**
7
+ * Enumerates the possible roles that can be assigned to a prompt message.
8
+ *
9
+ * - `"user"`: End-user messages
10
+ * - `"assistant"`: AI/system responses
11
+ * - `"tool"`: Tool execution results returned to the conversation flow
12
+ */
13
+ export type PromptRole = "user" | "assistant" | "tool";
14
+ /**
15
+ * Helper type that excludes properties from TSource that exist in TExcluded.
16
+ */
17
+ type Without<TSource, TExcluded> = {
18
+ [Key in Exclude<keyof TSource, keyof TExcluded>]?: never;
19
+ };
20
+ /**
21
+ * XOR of two object types: one or the other, but not both.
22
+ */
23
+ type XOR<TLeft, TRight> = (Without<TLeft, TRight> & TRight) | (Without<TRight, TLeft> & TLeft);
24
+ /**
25
+ * Configuration used to instantiate a {@link Prompt} instance.
26
+ * Either `text` or `toolResult` must be provided, but not both.
27
+ */
28
+ export type PromptOptions = XOR<{
29
+ readonly text: string;
30
+ }, {
31
+ readonly toolResult: ToolResultType;
32
+ }>;
33
+ /**
34
+ * Resulting payload snapshot produced by a {@link Prompt} instance.
35
+ */
36
+ export type PromptSnapshot = {
37
+ readonly kind: "text";
38
+ readonly text: string;
39
+ } | {
40
+ readonly kind: "tool-result";
41
+ readonly toolResult: ToolResultType;
42
+ };
43
+ /**
44
+ * Normalized prompt snapshot containing both the prompt payload and corresponding message format.
45
+ * This structure is suitable for transmission to the Core API.
46
+ */
47
+ export type NormalizedPromptSnapshot = {
48
+ readonly kind: "text";
49
+ readonly prompt: string;
50
+ readonly message: MessageType;
51
+ } | {
52
+ readonly kind: "tool-result";
53
+ readonly prompt: ToolResultType;
54
+ readonly message: MessageType;
55
+ };
56
+ export {};
57
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/prompt/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAEvD;;GAEG;AACH,KAAK,OAAO,CAAC,OAAO,EAAE,SAAS,IAAI;KAC9B,GAAG,IAAI,OAAO,CAAC,MAAM,OAAO,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK;CAC3D,CAAC;AAEF;;GAEG;AACH,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;AAE/F;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC;AAEpG;;GAEG;AACH,MAAM,MAAM,cAAc,GACpB;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB,GACD;IACI,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;CACvC,CAAC;AAER;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAC9B;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CACjC,GACD;IACI,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/prompt/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { ToolResultType } from "@illalabs/interfaces";
2
+ /**
3
+ * Creates a deep clone of a tool result object to prevent external mutation.
4
+ *
5
+ * This function clones all potentially complex fields (result and error) while
6
+ * preserving primitive identifiers (toolCallId and toolName).
7
+ *
8
+ * @param toolResult The tool result to clone.
9
+ * @returns A deep copy of the tool result with all complex fields cloned.
10
+ */
11
+ export declare function cloneToolResult(toolResult: ToolResultType): ToolResultType;
12
+ //# sourceMappingURL=cloneToolResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneToolResult.d.ts","sourceRoot":"","sources":["../../../../src/prompt/utils/cloneToolResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,cAAc,GAAG,cAAc,CAiB1E"}
@@ -0,0 +1,28 @@
1
+ import { deepClone } from "./deepClone.js";
2
+ /**
3
+ * Creates a deep clone of a tool result object to prevent external mutation.
4
+ *
5
+ * This function clones all potentially complex fields (result and error) while
6
+ * preserving primitive identifiers (toolCallId and toolName).
7
+ *
8
+ * @param toolResult The tool result to clone.
9
+ * @returns A deep copy of the tool result with all complex fields cloned.
10
+ */
11
+ export function cloneToolResult(toolResult) {
12
+ const cloned = {
13
+ toolCallId: toolResult.toolCallId,
14
+ toolName: toolResult.toolName,
15
+ result: toolResult.result !== undefined ? deepClone(toolResult.result) : undefined,
16
+ };
17
+ // Deep clone error only if it's a non-null object
18
+ if (toolResult.error !== undefined) {
19
+ if (typeof toolResult.error === "object" && toolResult.error !== null) {
20
+ cloned.error = deepClone(toolResult.error);
21
+ }
22
+ else {
23
+ cloned.error = toolResult.error;
24
+ }
25
+ }
26
+ return cloned;
27
+ }
28
+ //# sourceMappingURL=cloneToolResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneToolResult.js","sourceRoot":"","sources":["../../../../src/prompt/utils/cloneToolResult.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,UAA0B;IACtD,MAAM,MAAM,GAAmB;QAC3B,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,MAAM,EAAE,UAAU,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KACrF,CAAC;IAEF,kDAAkD;IAClD,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,IAAI,UAAU,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACpE,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACpC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Creates a deep clone of a value to prevent external mutation.
3
+ * Uses structuredClone if available, otherwise falls back to viem's stringify for serialization.
4
+ *
5
+ * @param value The value to clone.
6
+ * @returns A deep copy of the input value.
7
+ */
8
+ export declare function deepClone<T>(value: T): T;
9
+ //# sourceMappingURL=deepClone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepClone.d.ts","sourceRoot":"","sources":["../../../../src/prompt/utils/deepClone.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAKxC"}
@@ -0,0 +1,15 @@
1
+ import { stringify } from "viem";
2
+ /**
3
+ * Creates a deep clone of a value to prevent external mutation.
4
+ * Uses structuredClone if available, otherwise falls back to viem's stringify for serialization.
5
+ *
6
+ * @param value The value to clone.
7
+ * @returns A deep copy of the input value.
8
+ */
9
+ export function deepClone(value) {
10
+ if (typeof structuredClone !== "undefined") {
11
+ return structuredClone(value);
12
+ }
13
+ return JSON.parse(stringify(value));
14
+ }
15
+ //# sourceMappingURL=deepClone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../../../src/prompt/utils/deepClone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAI,KAAQ;IACjC,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;QACzC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAM,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { cloneToolResult } from "./cloneToolResult.js";
2
+ export { deepClone } from "./deepClone.js";
3
+ export { normalizeTextPrompt } from "./normalizeTextPrompt.js";
4
+ export { normalizeToolResult } from "./normalizeToolResult.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/prompt/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { cloneToolResult } from "./cloneToolResult.js";
2
+ export { deepClone } from "./deepClone.js";
3
+ export { normalizeTextPrompt } from "./normalizeTextPrompt.js";
4
+ export { normalizeToolResult } from "./normalizeToolResult.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/prompt/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { MessageType } from "@illalabs/interfaces";
2
+ import type { PromptRole } from "../types.js";
3
+ /**
4
+ * Transforms a text prompt into both prompt and message formats for API communication.
5
+ *
6
+ * @param text The text prompt to normalize.
7
+ * @param role The role to assign to the generated message.
8
+ * @returns An object containing the prompt payload and formatted message.
9
+ */
10
+ export declare function normalizeTextPrompt(text: string, role: PromptRole): {
11
+ readonly prompt: string;
12
+ readonly message: MessageType;
13
+ };
14
+ //# sourceMappingURL=normalizeTextPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeTextPrompt.d.ts","sourceRoot":"","sources":["../../../../src/prompt/utils/normalizeTextPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,GACjB;IACC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CACjC,CAaA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Transforms a text prompt into both prompt and message formats for API communication.
3
+ *
4
+ * @param text The text prompt to normalize.
5
+ * @param role The role to assign to the generated message.
6
+ * @returns An object containing the prompt payload and formatted message.
7
+ */
8
+ export function normalizeTextPrompt(text, role) {
9
+ return {
10
+ prompt: text,
11
+ message: {
12
+ role,
13
+ content: [
14
+ {
15
+ type: "text",
16
+ text,
17
+ },
18
+ ],
19
+ },
20
+ };
21
+ }
22
+ //# sourceMappingURL=normalizeTextPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeTextPrompt.js","sourceRoot":"","sources":["../../../../src/prompt/utils/normalizeTextPrompt.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAC/B,IAAY,EACZ,IAAgB;IAKhB,OAAO;QACH,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE;YACL,IAAI;YACJ,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACP;aACJ;SACJ;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { MessageType, ToolResultType } from "@illalabs/interfaces";
2
+ import type { PromptRole } from "../types.js";
3
+ /**
4
+ * Transforms a tool result into both prompt and message formats for API communication.
5
+ *
6
+ * @param toolResult The tool result to normalize.
7
+ * @param role The role to assign to the generated message.
8
+ * @returns An object containing the prompt payload and formatted message.
9
+ */
10
+ export declare function normalizeToolResult(toolResult: ToolResultType, role: PromptRole): {
11
+ readonly prompt: ToolResultType;
12
+ readonly message: MessageType;
13
+ };
14
+ //# sourceMappingURL=normalizeToolResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeToolResult.d.ts","sourceRoot":"","sources":["../../../../src/prompt/utils/normalizeToolResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,UAAU,GACjB;IACC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CACjC,CAkBA"}
@@ -0,0 +1,27 @@
1
+ import { cloneToolResult } from "./cloneToolResult.js";
2
+ /**
3
+ * Transforms a tool result into both prompt and message formats for API communication.
4
+ *
5
+ * @param toolResult The tool result to normalize.
6
+ * @param role The role to assign to the generated message.
7
+ * @returns An object containing the prompt payload and formatted message.
8
+ */
9
+ export function normalizeToolResult(toolResult, role) {
10
+ const promptPayload = cloneToolResult(toolResult);
11
+ return {
12
+ prompt: promptPayload,
13
+ message: {
14
+ role,
15
+ content: [
16
+ {
17
+ type: "tool-result",
18
+ toolCallId: promptPayload.toolCallId,
19
+ toolName: promptPayload.toolName,
20
+ result: promptPayload.result,
21
+ ...(promptPayload.error !== undefined && { error: promptPayload.error }),
22
+ },
23
+ ],
24
+ },
25
+ };
26
+ }
27
+ //# sourceMappingURL=normalizeToolResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeToolResult.js","sourceRoot":"","sources":["../../../../src/prompt/utils/normalizeToolResult.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAC/B,UAA0B,EAC1B,IAAgB;IAKhB,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAElD,OAAO;QACH,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACL,IAAI;YACJ,OAAO,EAAE;gBACL;oBACI,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,aAAa,CAAC,UAAU;oBACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ;oBAChC,MAAM,EAAE,aAAa,CAAC,MAAM;oBAC5B,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;iBAC3E;aACJ;SACJ;KACJ,CAAC;AACN,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { CoreApiChatRequest, CoreApiChatResponse, LongPollingActionRequest, LongPollingActionResponse } from "@illalabs/interfaces";
2
+ import type { AxiosInstance } from "axios";
3
+ import type { ICoreApiProvider } from "../../interfaces/index.js";
4
+ import type { CoreApiProviderConfig, RequestOptions } from "./index.js";
5
+ /**
6
+ * Axios based Core API provider implementation
7
+ */
8
+ export declare class CoreApiProvider implements ICoreApiProvider {
9
+ /**
10
+ * Axios instance configured for the Core API
11
+ */
12
+ protected readonly client: AxiosInstance;
13
+ /**
14
+ * @param config Core API provider configuration
15
+ */
16
+ constructor({ baseURL, timeout, headers, httpClientFactory }: CoreApiProviderConfig);
17
+ /**
18
+ * Sends a chat message to the Core API
19
+ */
20
+ sendMessage(body: CoreApiChatRequest["body"], options?: RequestOptions): Promise<CoreApiChatResponse>;
21
+ /**
22
+ * Polls the Core API for transaction status
23
+ */
24
+ awaitTransaction(params: LongPollingActionRequest["params"], options?: RequestOptions): Promise<LongPollingActionResponse>;
25
+ /**
26
+ * Builds request configuration shared across endpoints
27
+ */
28
+ protected buildRequestConfig(options: RequestOptions): {
29
+ signal?: AbortSignal;
30
+ };
31
+ private resolveBaseUrl;
32
+ private buildDefaultHeaders;
33
+ private ensureAuthHeaders;
34
+ }
35
+ //# sourceMappingURL=CoreApiProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreApiProvider.d.ts","sourceRoot":"","sources":["../../../../src/providers/coreApiProvider/CoreApiProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAER,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,OAAO,CAAC;AAG/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIxE;;GAEG;AACH,qBAAa,eAAgB,YAAW,gBAAgB;IACpD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAEzC;;OAEG;gBACS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,qBAAqB;IAcnF;;OAEG;IACU,WAAW,CACpB,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAChC,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAsB/B;;OAEG;IACU,gBAAgB,CACzB,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,EAC1C,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,yBAAyB,CAAC;IA0BrC;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAM/E,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,iBAAiB;CAO5B"}
@@ -0,0 +1,93 @@
1
+ import axios from "axios";
2
+ import { CoreApiAuthenticationMissing } from "./errors/index.js";
3
+ /**
4
+ * Axios based Core API provider implementation
5
+ */
6
+ export class CoreApiProvider {
7
+ /**
8
+ * Axios instance configured for the Core API
9
+ */
10
+ client;
11
+ /**
12
+ * @param config Core API provider configuration
13
+ */
14
+ constructor({ baseURL, timeout, headers, httpClientFactory }) {
15
+ const authHeaders = this.ensureAuthHeaders(headers);
16
+ const resolveClientFactory = httpClientFactory ??
17
+ ((configuration) => axios.create(configuration));
18
+ this.client = resolveClientFactory({
19
+ baseURL: this.resolveBaseUrl(baseURL),
20
+ timeout,
21
+ headers: this.buildDefaultHeaders(authHeaders),
22
+ });
23
+ }
24
+ /**
25
+ * Sends a chat message to the Core API
26
+ */
27
+ async sendMessage(body, options = {}) {
28
+ const requestConfig = this.buildRequestConfig(options);
29
+ const response = await this.client.post("/api/v1/chat", body, requestConfig);
30
+ return response.data;
31
+ //TODO: Handle errors
32
+ // try{
33
+ // this.client.post<CoreApiChatSuccessResponse>(...);
34
+ // return response.data;
35
+ // }
36
+ // catch(error){
37
+ // All errors will end up here because Axios throws for 4XX and 5XX status codes
38
+ // if (error instanceof AxiosError) {
39
+ // const errorResponse: CoreApiChatErrorResponse = ChatErrorHandler.handle(error);
40
+ // return errorResponse;
41
+ // }
42
+ }
43
+ /**
44
+ * Polls the Core API for transaction status
45
+ */
46
+ async awaitTransaction(params, options = {}) {
47
+ const requestConfig = this.buildRequestConfig(options);
48
+ const response = await this.client.get("/api/v1/actions/check", {
49
+ ...requestConfig,
50
+ params: {
51
+ toolName: params.toolName,
52
+ protocol: params.protocol,
53
+ args: params.args,
54
+ },
55
+ });
56
+ return response.data;
57
+ //TODO: Handle errors
58
+ // try{
59
+ // this.client.get<LongPollingActionSuccessResponse>(...);
60
+ // return response.data;
61
+ // }
62
+ // catch(error){
63
+ // All errors will end up here because Axios throws for 4XX and 5XX status codes
64
+ // if (error instanceof AxiosError) {
65
+ // const errorResponse: LongPollingActionErrorResponse = ExecutionCheckerErrorHandler.handle(error);
66
+ // return errorResponse;
67
+ // }
68
+ }
69
+ /**
70
+ * Builds request configuration shared across endpoints
71
+ */
72
+ buildRequestConfig(options) {
73
+ return {
74
+ signal: options.signal,
75
+ };
76
+ }
77
+ resolveBaseUrl(baseURL) {
78
+ return baseURL ?? "https://app.illa.network";
79
+ }
80
+ buildDefaultHeaders(headers) {
81
+ return {
82
+ "Content-Type": "application/json",
83
+ ...headers,
84
+ };
85
+ }
86
+ ensureAuthHeaders(headers) {
87
+ if (headers?.["x-auth-token"] === undefined) {
88
+ throw new CoreApiAuthenticationMissing();
89
+ }
90
+ return headers;
91
+ }
92
+ }
93
+ //# sourceMappingURL=CoreApiProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreApiProvider.js","sourceRoot":"","sources":["../../../../src/providers/coreApiProvider/CoreApiProvider.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;GAEG;AACH,MAAM,OAAO,eAAe;IACxB;;OAEG;IACgB,MAAM,CAAgB;IAEzC;;OAEG;IACH,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAyB;QAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEpD,MAAM,oBAAoB,GACtB,iBAAiB;YACjB,CAAC,CAAC,aAAkC,EAAiB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAEzF,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YACrC,OAAO;YACP,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;SACjD,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CACpB,IAAgC,EAChC,UAA0B,EAAE;QAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,cAAc,EACd,IAAI,EACJ,aAAa,CAChB,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;QACrB,qBAAqB;QACrB,OAAO;QACP,wDAAwD;QACxD,2BAA2B;QAC3B,IAAI;QACJ,gBAAgB;QAChB,gFAAgF;QAChF,qCAAqC;QACrC,qFAAqF;QACrF,2BAA2B;QAC3B,IAAI;IACR,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CACzB,MAA0C,EAC1C,UAA0B,EAAE;QAE5B,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAA4B,uBAAuB,EAAE;YACvF,GAAG,aAAa;YAChB,MAAM,EAAE;gBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;aACpB;SACJ,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACrB,qBAAqB;QACrB,OAAO;QACP,6DAA6D;QAC7D,2BAA2B;QAC3B,IAAI;QACJ,gBAAgB;QAChB,gFAAgF;QAChF,qCAAqC;QACrC,uGAAuG;QACvG,2BAA2B;QAC3B,IAAI;IACR,CAAC;IAED;;OAEG;IACO,kBAAkB,CAAC,OAAuB;QAChD,OAAO;YACH,MAAM,EAAE,OAAO,CAAC,MAAM;SACzB,CAAC;IACN,CAAC;IAEO,cAAc,CAAC,OAAyC;QAC5D,OAAO,OAAO,IAAI,0BAA0B,CAAC;IACjD,CAAC;IAEO,mBAAmB,CAAC,OAA2B;QACnD,OAAO;YACH,cAAc,EAAE,kBAAkB;YAClC,GAAG,OAAO;SACb,CAAC;IACN,CAAC;IAEO,iBAAiB,CAAC,OAA4B;QAClD,IAAI,OAAO,EAAE,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,4BAA4B,EAAE,CAAC;QAC7C,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
@@ -0,0 +1,24 @@
1
+ import type { CoreApiAuthHeaders } from "@illalabs/interfaces";
2
+ import type { HttpClientFactory } from "./types.js";
3
+ /**
4
+ * Core API provider configuration
5
+ */
6
+ export interface CoreApiProviderConfig {
7
+ /**
8
+ * Base URL of the Core API
9
+ */
10
+ readonly baseURL?: string;
11
+ /**
12
+ * Request timeout in milliseconds
13
+ */
14
+ readonly timeout?: number;
15
+ /**
16
+ * Authentication headers
17
+ */
18
+ readonly headers?: CoreApiAuthHeaders;
19
+ /**
20
+ * Optional factory used to create a configured axios instance. Primarily used for testing.
21
+ */
22
+ readonly httpClientFactory?: HttpClientFactory;
23
+ }
24
+ //# sourceMappingURL=CoreApiProviderConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreApiProviderConfig.d.ts","sourceRoot":"","sources":["../../../../src/providers/coreApiProvider/CoreApiProviderConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IAClC;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CAClD"}