@agentica/core 0.43.3 → 0.44.0-dev.20260313-2

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 +21 -21
  2. package/README.md +218 -218
  3. package/lib/constants/AgenticaSystemPrompt.js +1 -1
  4. package/lib/constants/AgenticaSystemPrompt.js.map +1 -1
  5. package/lib/context/AgenticaOperation.d.ts +3 -2
  6. package/lib/context/internal/AgenticaOperationComposer.js.map +1 -1
  7. package/lib/context/internal/AgenticaTokenUsageAggregator.js.map +1 -1
  8. package/lib/context/internal/__IChatInitialApplication.d.ts +1 -1
  9. package/lib/errors/AgenticaJsonParseError.d.ts +5 -8
  10. package/lib/errors/AgenticaJsonParseError.js +11 -6
  11. package/lib/errors/AgenticaJsonParseError.js.map +1 -1
  12. package/lib/errors/AgenticaValidationError.d.ts +1 -1
  13. package/lib/events/AgenticaExecuteEvent.d.ts +1 -1
  14. package/lib/events/AgenticaJsonParseErrorEvent.d.ts +2 -2
  15. package/lib/factory/events.d.ts +2 -3
  16. package/lib/factory/events.js +1 -2
  17. package/lib/factory/events.js.map +1 -1
  18. package/lib/functional/assertHttpController.d.ts +2 -3
  19. package/lib/functional/assertHttpController.js +3939 -2656
  20. package/lib/functional/assertHttpController.js.map +1 -1
  21. package/lib/functional/assertHttpLlmApplication.d.ts +3 -3
  22. package/lib/functional/assertHttpLlmApplication.js +3939 -2656
  23. package/lib/functional/assertHttpLlmApplication.js.map +1 -1
  24. package/lib/functional/assertMcpController.d.ts +2 -2
  25. package/lib/functional/assertMcpController.js +202 -629
  26. package/lib/functional/assertMcpController.js.map +1 -1
  27. package/lib/functional/createMcpLlmApplication.d.ts +6 -0
  28. package/lib/functional/createMcpLlmApplication.js +56 -0
  29. package/lib/functional/createMcpLlmApplication.js.map +1 -0
  30. package/lib/functional/validateHttpController.d.ts +3 -3
  31. package/lib/functional/validateHttpController.js +3367 -2268
  32. package/lib/functional/validateHttpController.js.map +1 -1
  33. package/lib/functional/validateHttpLlmApplication.d.ts +3 -4
  34. package/lib/functional/validateHttpLlmApplication.js +3367 -2268
  35. package/lib/functional/validateHttpLlmApplication.js.map +1 -1
  36. package/lib/functional/validateMcpController.d.ts +2 -2
  37. package/lib/functional/validateMcpController.js +388 -1161
  38. package/lib/functional/validateMcpController.js.map +1 -1
  39. package/lib/histories/AgenticaExecuteHistory.d.ts +1 -1
  40. package/lib/index.mjs +21256 -18946
  41. package/lib/index.mjs.map +1 -1
  42. package/lib/orchestrate/call.js +43 -56
  43. package/lib/orchestrate/call.js.map +1 -1
  44. package/lib/orchestrate/cancel.js +9 -66
  45. package/lib/orchestrate/cancel.js.map +1 -1
  46. package/lib/orchestrate/initialize.js +4 -947
  47. package/lib/orchestrate/initialize.js.map +1 -1
  48. package/lib/orchestrate/select.js +11 -68
  49. package/lib/orchestrate/select.js.map +1 -1
  50. package/lib/structures/IAgenticaController.d.ts +143 -151
  51. package/lib/structures/IMcpTool.d.ts +52 -0
  52. package/lib/structures/IMcpTool.js +3 -0
  53. package/lib/structures/IMcpTool.js.map +1 -0
  54. package/lib/utils/ChatGptCompletionMessageUtil.js +16 -5
  55. package/lib/utils/ChatGptCompletionMessageUtil.js.map +1 -1
  56. package/lib/utils/ChatGptCompletionMessageUtil.spec.js +0 -5
  57. package/lib/utils/ChatGptCompletionMessageUtil.spec.js.map +1 -1
  58. package/package.json +7 -9
  59. package/prompts/cancel.md +5 -5
  60. package/prompts/common.md +3 -3
  61. package/prompts/describe.md +7 -7
  62. package/prompts/execute.md +122 -122
  63. package/prompts/initialize.md +3 -3
  64. package/prompts/json_parse_error.md +35 -33
  65. package/prompts/select.md +7 -7
  66. package/prompts/validate.md +123 -123
  67. package/prompts/validate_repeated.md +31 -31
  68. package/src/Agentica.ts +367 -367
  69. package/src/MicroAgentica.ts +357 -357
  70. package/src/constants/AgenticaConstant.ts +4 -4
  71. package/src/constants/AgenticaDefaultPrompt.ts +44 -44
  72. package/src/constants/AgenticaSystemPrompt.ts +1 -1
  73. package/src/constants/index.ts +2 -2
  74. package/src/context/AgenticaContext.ts +136 -136
  75. package/src/context/AgenticaContextRequestResult.ts +14 -14
  76. package/src/context/AgenticaOperation.ts +73 -72
  77. package/src/context/AgenticaOperationCollection.ts +49 -49
  78. package/src/context/AgenticaOperationSelection.ts +9 -9
  79. package/src/context/AgenticaTokenUsage.ts +186 -186
  80. package/src/context/MicroAgenticaContext.ts +99 -99
  81. package/src/context/index.ts +5 -5
  82. package/src/context/internal/AgenticaOperationComposer.ts +177 -177
  83. package/src/context/internal/AgenticaTokenUsageAggregator.ts +66 -66
  84. package/src/context/internal/__IChatCancelFunctionsApplication.ts +23 -23
  85. package/src/context/internal/__IChatFunctionReference.ts +21 -21
  86. package/src/context/internal/__IChatInitialApplication.ts +15 -15
  87. package/src/context/internal/__IChatSelectFunctionsApplication.ts +24 -24
  88. package/src/context/internal/isAgenticaContext.ts +11 -11
  89. package/src/errors/AgenticaJsonParseError.ts +52 -47
  90. package/src/errors/AgenticaValidationError.ts +49 -49
  91. package/src/errors/index.ts +2 -2
  92. package/src/events/AgenticaAssistantMessageEvent.ts +12 -12
  93. package/src/events/AgenticaCallEvent.ts +27 -27
  94. package/src/events/AgenticaCancelEvent.ts +9 -9
  95. package/src/events/AgenticaDescribeEvent.ts +14 -14
  96. package/src/events/AgenticaEvent.ts +59 -59
  97. package/src/events/AgenticaEvent.type.ts +19 -19
  98. package/src/events/AgenticaEventBase.ts +18 -18
  99. package/src/events/AgenticaEventSource.ts +6 -6
  100. package/src/events/AgenticaExecuteEvent.ts +45 -45
  101. package/src/events/AgenticaInitializeEvent.ts +7 -7
  102. package/src/events/AgenticaJsonParseErrorEvent.ts +16 -15
  103. package/src/events/AgenticaRequestEvent.ts +27 -27
  104. package/src/events/AgenticaResponseEvent.ts +32 -32
  105. package/src/events/AgenticaSelectEvent.ts +11 -11
  106. package/src/events/AgenticaUserMessageEvent.ts +12 -12
  107. package/src/events/AgenticaValidateEvent.ts +32 -32
  108. package/src/events/MicroAgenticaEvent.ts +45 -45
  109. package/src/events/index.ts +15 -15
  110. package/src/factory/events.ts +357 -359
  111. package/src/factory/histories.ts +348 -348
  112. package/src/factory/index.ts +3 -3
  113. package/src/factory/operations.ts +16 -16
  114. package/src/functional/assertHttpController.ts +106 -104
  115. package/src/functional/assertHttpLlmApplication.ts +52 -57
  116. package/src/functional/assertMcpController.ts +47 -44
  117. package/src/functional/createMcpLlmApplication.ts +72 -0
  118. package/src/functional/index.ts +7 -7
  119. package/src/functional/validateHttpController.ts +113 -110
  120. package/src/functional/validateHttpLlmApplication.ts +65 -70
  121. package/src/functional/validateMcpController.ts +53 -50
  122. package/src/histories/AgenticaAssistantMessageHistory.ts +10 -10
  123. package/src/histories/AgenticaCancelHistory.ts +8 -8
  124. package/src/histories/AgenticaDescribeHistory.ts +18 -18
  125. package/src/histories/AgenticaExecuteHistory.ts +64 -64
  126. package/src/histories/AgenticaHistory.ts +28 -28
  127. package/src/histories/AgenticaHistoryBase.ts +35 -35
  128. package/src/histories/AgenticaSelectHistory.ts +8 -8
  129. package/src/histories/AgenticaSystemMessageHistory.ts +10 -10
  130. package/src/histories/AgenticaUserMessageHistory.ts +11 -11
  131. package/src/histories/MicroAgenticaHistory.ts +19 -19
  132. package/src/histories/contents/AgenticaUserMessageAudioContent.ts +21 -21
  133. package/src/histories/contents/AgenticaUserMessageContent.ts +19 -19
  134. package/src/histories/contents/AgenticaUserMessageContentBase.ts +6 -6
  135. package/src/histories/contents/AgenticaUserMessageFileContent.ts +25 -25
  136. package/src/histories/contents/AgenticaUserMessageImageContent.ts +33 -33
  137. package/src/histories/contents/AgenticaUserMessageTextContent.ts +15 -15
  138. package/src/histories/contents/index.ts +5 -5
  139. package/src/histories/index.ts +10 -10
  140. package/src/index.ts +15 -15
  141. package/src/json/IAgenticaEventJson.ts +265 -265
  142. package/src/json/IAgenticaEventJson.type.ts +19 -19
  143. package/src/json/IAgenticaHistoryJson.ts +165 -165
  144. package/src/json/IAgenticaHistoryJson.type.ts +19 -19
  145. package/src/json/IAgenticaOperationJson.ts +36 -36
  146. package/src/json/IAgenticaOperationSelectionJson.ts +26 -26
  147. package/src/json/IAgenticaTokenUsageJson.ts +107 -107
  148. package/src/json/IMicroAgenticaEventJson.ts +22 -22
  149. package/src/json/IMicroAgenticaHistoryJson.ts +25 -25
  150. package/src/json/index.ts +7 -7
  151. package/src/orchestrate/call.ts +542 -558
  152. package/src/orchestrate/cancel.ts +265 -269
  153. package/src/orchestrate/describe.ts +66 -66
  154. package/src/orchestrate/execute.ts +61 -61
  155. package/src/orchestrate/index.ts +6 -6
  156. package/src/orchestrate/initialize.ts +102 -102
  157. package/src/orchestrate/internal/cancelFunctionFromContext.ts +33 -33
  158. package/src/orchestrate/internal/selectFunctionFromContext.ts +34 -34
  159. package/src/orchestrate/select.ts +320 -322
  160. package/src/structures/IAgenticaConfig.ts +83 -83
  161. package/src/structures/IAgenticaConfigBase.ts +87 -87
  162. package/src/structures/IAgenticaController.ts +143 -151
  163. package/src/structures/IAgenticaExecutor.ts +167 -167
  164. package/src/structures/IAgenticaProps.ts +78 -78
  165. package/src/structures/IAgenticaSystemPrompt.ts +236 -236
  166. package/src/structures/IAgenticaVendor.ts +54 -54
  167. package/src/structures/IMcpTool.ts +60 -0
  168. package/src/structures/IMicroAgenticaConfig.ts +56 -56
  169. package/src/structures/IMicroAgenticaExecutor.ts +67 -67
  170. package/src/structures/IMicroAgenticaProps.ts +77 -77
  171. package/src/structures/IMicroAgenticaSystemPrompt.ts +169 -169
  172. package/src/structures/index.ts +10 -10
  173. package/src/transformers/transformHistory.ts +172 -172
  174. package/src/utils/AssistantMessageEmptyError.ts +20 -20
  175. package/src/utils/AsyncQueue.spec.ts +355 -355
  176. package/src/utils/AsyncQueue.ts +95 -95
  177. package/src/utils/ByteArrayUtil.ts +5 -5
  178. package/src/utils/ChatGptCompletionMessageUtil.spec.ts +314 -320
  179. package/src/utils/ChatGptCompletionMessageUtil.ts +210 -195
  180. package/src/utils/ChatGptCompletionStreamingUtil.spec.ts +909 -909
  181. package/src/utils/ChatGptCompletionStreamingUtil.ts +91 -91
  182. package/src/utils/ChatGptTokenUsageAggregator.spec.ts +226 -226
  183. package/src/utils/ChatGptTokenUsageAggregator.ts +57 -57
  184. package/src/utils/MPSC.spec.ts +276 -276
  185. package/src/utils/MPSC.ts +42 -42
  186. package/src/utils/Singleton.spec.ts +138 -138
  187. package/src/utils/Singleton.ts +42 -42
  188. package/src/utils/StreamUtil.spec.ts +512 -512
  189. package/src/utils/StreamUtil.ts +87 -87
  190. package/src/utils/__map_take.spec.ts +140 -140
  191. package/src/utils/__map_take.ts +13 -13
  192. package/src/utils/__retry.spec.ts +198 -198
  193. package/src/utils/__retry.ts +18 -18
  194. package/src/utils/assertExecuteFailure.ts +16 -16
  195. package/src/utils/index.ts +4 -4
  196. package/src/utils/request.ts +140 -140
  197. package/src/utils/types.ts +50 -50
  198. package/lib/context/internal/AgenticaOperationComposer.spec.d.ts +0 -1
  199. package/lib/context/internal/AgenticaOperationComposer.spec.js +0 -353
  200. package/lib/context/internal/AgenticaOperationComposer.spec.js.map +0 -1
  201. package/lib/utils/JsonUtil.d.ts +0 -8
  202. package/lib/utils/JsonUtil.js +0 -349
  203. package/lib/utils/JsonUtil.js.map +0 -1
  204. package/src/context/internal/AgenticaOperationComposer.spec.ts +0 -401
  205. package/src/utils/JsonUtil.ts +0 -460
@@ -1,348 +1,348 @@
1
- import type { IHttpResponse } from "@samchon/openapi";
2
- import type OpenAI from "openai";
3
- import type { tags } from "typia";
4
-
5
- import type { AgenticaOperation } from "../context/AgenticaOperation";
6
- import type { AgenticaOperationSelection } from "../context/AgenticaOperationSelection";
7
- import type { AgenticaUserMessageContent } from "../histories";
8
- import type { AgenticaAssistantMessageHistory } from "../histories/AgenticaAssistantMessageHistory";
9
- import type { AgenticaCancelHistory } from "../histories/AgenticaCancelHistory";
10
- import type { AgenticaDescribeHistory } from "../histories/AgenticaDescribeHistory";
11
- import type { AgenticaExecuteHistory } from "../histories/AgenticaExecuteHistory";
12
- import type { AgenticaHistory } from "../histories/AgenticaHistory";
13
- import type { AgenticaSelectHistory } from "../histories/AgenticaSelectHistory";
14
- import type { AgenticaSystemMessageHistory } from "../histories/AgenticaSystemMessageHistory";
15
- import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
16
- import type { IAgenticaHistoryJson } from "../json/IAgenticaHistoryJson";
17
-
18
- /**
19
- * @internal
20
- */
21
- export function decodeHistory(history: AgenticaHistory): OpenAI.ChatCompletionMessageParam[] {
22
- // NO NEED TO DECODE DESCRIBE
23
- if (history.type === "describe") {
24
- return [];
25
- }
26
- else if (history.type === "select" || history.type === "cancel") {
27
- return [
28
- {
29
- role: "assistant",
30
- tool_calls: [
31
- {
32
- type: "function",
33
- id: history.id,
34
- function: {
35
- name: `${history.type}Functions`,
36
- arguments: JSON.stringify({
37
- function: {
38
- name: history.selection.operation.name,
39
- reason: history.selection.reason,
40
- },
41
- }),
42
- },
43
- },
44
- ],
45
- },
46
- {
47
- role: "tool",
48
- tool_call_id: history.id,
49
- content: "",
50
- },
51
- ];
52
- }
53
- else if (history.type === "execute") {
54
- return [
55
- {
56
- role: "assistant",
57
- tool_calls: [
58
- {
59
- type: "function",
60
- id: history.id,
61
- function: {
62
- name: history.operation.name,
63
- arguments: JSON.stringify(history.arguments),
64
- },
65
- },
66
- ],
67
- },
68
- {
69
- role: "tool",
70
- tool_call_id: history.id,
71
- content: JSON.stringify({
72
- function: {
73
- protocol: history.operation.protocol,
74
- description: history.operation.function.description,
75
- parameters: history.operation.function.parameters,
76
- output: history.operation.function.output,
77
- ...(history.operation.protocol === "http"
78
- ? {
79
- method: history.operation.function.method,
80
- path: history.operation.function.path,
81
- }
82
- : {}),
83
- },
84
- ...(history.operation.protocol === "http"
85
- ? {
86
- status: (history.value as IHttpResponse).status,
87
- data: (history.value as IHttpResponse).body,
88
- }
89
- : {
90
- value: history.value,
91
- }),
92
- }),
93
- },
94
- ];
95
- }
96
-
97
- if (history.type === "assistantMessage") {
98
- return [
99
- {
100
- role: "assistant",
101
- content: history.text,
102
- },
103
- ];
104
- }
105
-
106
- if (history.type === "systemMessage") {
107
- return [
108
- {
109
- role: "system",
110
- content: history.text,
111
- },
112
- ];
113
- }
114
-
115
- if (history.type === "userMessage") {
116
- const contents = history.contents;
117
- return [
118
- {
119
- role: "user",
120
- content: contents.map(decodeUserMessageContent),
121
- },
122
- ];
123
- }
124
-
125
- history satisfies never;
126
- throw new Error(`Unsupported history type, value: ${JSON.stringify(history)}`);
127
- }
128
-
129
- /**
130
- * @internal
131
- */
132
- export function decodeUserMessageContent(content: AgenticaUserMessageContent): OpenAI.ChatCompletionContentPart {
133
- if (content.type === "text") {
134
- return content;
135
- }
136
-
137
- if (content.type === "audio") {
138
- return {
139
- type: "input_audio",
140
- input_audio: {
141
- data: content.data,
142
- format: content.format,
143
- },
144
- };
145
- }
146
-
147
- if (content.type === "file") {
148
- return {
149
- type: "file",
150
- file: content.file.type === "base64"
151
- ? {
152
- file_data: content.file.data,
153
- filename: content.file.name,
154
- }
155
- : {
156
- file_id: content.file.id,
157
- },
158
- };
159
- }
160
-
161
- if (content.type === "image") {
162
- return {
163
- type: "image_url",
164
- image_url: {
165
- url: content.image.type === "base64"
166
- ? content.image.data
167
- : content.image.url,
168
- detail: content.detail,
169
- },
170
- };
171
- }
172
-
173
- content satisfies never;
174
- throw new Error(`Unsupported user message content type, value: ${JSON.stringify(content)}`);
175
- }
176
-
177
- /* -----------------------------------------------------------
178
- USER INPUT PROMPTS
179
- ----------------------------------------------------------- */
180
- /**
181
- * @internal
182
- */
183
- export function createUserMessageHistory(props: {
184
- id: string;
185
- created_at: string & tags.Format<"date-time">;
186
- contents: Array<AgenticaUserMessageContent>;
187
- }): AgenticaUserMessageHistory {
188
- return {
189
- type: "userMessage",
190
- id: props.id,
191
- created_at: props.created_at,
192
- contents: props.contents,
193
- toJSON: () => ({
194
- type: "userMessage",
195
- id: props.id,
196
- created_at: props.created_at,
197
- contents: props.contents,
198
- }),
199
- };
200
- }
201
-
202
- /* -----------------------------------------------------------
203
- TEXT PROMPTS
204
- ----------------------------------------------------------- */
205
- /**
206
- * @internal
207
- */
208
- export function createAssistantMessageHistory(props: {
209
- id: string;
210
- created_at: string & tags.Format<"date-time">;
211
- text: string;
212
- }): AgenticaAssistantMessageHistory {
213
- const prompt: IAgenticaHistoryJson.IAssistantMessage = {
214
- type: "assistantMessage",
215
- id: props.id,
216
- created_at: props.created_at,
217
- text: props.text,
218
- };
219
- return {
220
- ...prompt,
221
- toJSON: () => prompt,
222
- };
223
- }
224
-
225
- /**
226
- * @internal
227
- */
228
- export function createSystemMessageHistory(props: {
229
- id: string;
230
- created_at: string & tags.Format<"date-time">;
231
- text: string;
232
- }): AgenticaSystemMessageHistory {
233
- const prompt: IAgenticaHistoryJson.ISystemMessage = {
234
- type: "systemMessage",
235
- id: props.id,
236
- created_at: props.created_at,
237
- text: props.text,
238
- };
239
- return {
240
- ...prompt,
241
- toJSON: () => prompt,
242
- };
243
- }
244
-
245
- /**
246
- * @internal
247
- */
248
- export function createDescribeHistory(props: {
249
- id: string;
250
- created_at: string & tags.Format<"date-time">;
251
- executes: AgenticaExecuteHistory[];
252
- text: string;
253
- }): AgenticaDescribeHistory {
254
- return {
255
- type: "describe",
256
- id: props.id,
257
- created_at: props.created_at,
258
- text: props.text,
259
- executes: props.executes,
260
- toJSON: () => ({
261
- type: "describe",
262
- id: props.id,
263
- created_at: props.created_at,
264
- text: props.text,
265
- executes: props.executes.map(execute => execute.toJSON()),
266
- }),
267
- };
268
- }
269
-
270
- /* -----------------------------------------------------------
271
- FUNCTION CALLING PROMPTS
272
- ----------------------------------------------------------- */
273
- /**
274
- * @internal
275
- */
276
- export function createSelectHistory(props: {
277
- id: string;
278
- created_at: string & tags.Format<"date-time">;
279
- selection: AgenticaOperationSelection;
280
- }): AgenticaSelectHistory {
281
- return {
282
- type: "select",
283
- id: props.id,
284
- selection: props.selection,
285
- created_at: props.created_at,
286
- toJSON: () => ({
287
- type: "select",
288
- id: props.id,
289
- created_at: props.created_at,
290
- selection: props.selection.toJSON(),
291
- }),
292
- };
293
- }
294
-
295
- /**
296
- * @internal
297
- */
298
- export function createCancelHistory(props: {
299
- id: string;
300
- created_at: string & tags.Format<"date-time">;
301
- selection: AgenticaOperationSelection;
302
- }): AgenticaCancelHistory {
303
- return {
304
- type: "cancel",
305
- id: props.id,
306
- created_at: props.created_at,
307
- selection: props.selection,
308
- toJSON: () => ({
309
- type: "cancel",
310
- id: props.id,
311
- created_at: props.created_at,
312
- selection: props.selection.toJSON(),
313
- }),
314
- };
315
- }
316
-
317
- /**
318
- * @internal
319
- */
320
- export function createExecuteHistory(props: {
321
- id: string;
322
- created_at: string & tags.Format<"date-time">;
323
- operation: AgenticaOperation;
324
- arguments: Record<string, any>;
325
- value: unknown;
326
- success: boolean;
327
- }): AgenticaExecuteHistory {
328
- return {
329
- type: "execute",
330
- protocol: props.operation.protocol as "class",
331
- id: props.id,
332
- created_at: props.created_at,
333
- operation: props.operation as AgenticaOperation.Class,
334
- arguments: props.arguments,
335
- value: props.value,
336
- success: props.success,
337
- toJSON: () => ({
338
- type: "execute",
339
- id: props.id,
340
- created_at: props.created_at,
341
- protocol: props.operation.protocol,
342
- operation: props.operation.toJSON(),
343
- arguments: props.arguments,
344
- value: props.value,
345
- success: props.success,
346
- }),
347
- };
348
- }
1
+ import type { IHttpResponse } from "@typia/interface";
2
+ import type OpenAI from "openai";
3
+ import type { tags } from "typia";
4
+
5
+ import type { AgenticaOperation } from "../context/AgenticaOperation";
6
+ import type { AgenticaOperationSelection } from "../context/AgenticaOperationSelection";
7
+ import type { AgenticaUserMessageContent } from "../histories";
8
+ import type { AgenticaAssistantMessageHistory } from "../histories/AgenticaAssistantMessageHistory";
9
+ import type { AgenticaCancelHistory } from "../histories/AgenticaCancelHistory";
10
+ import type { AgenticaDescribeHistory } from "../histories/AgenticaDescribeHistory";
11
+ import type { AgenticaExecuteHistory } from "../histories/AgenticaExecuteHistory";
12
+ import type { AgenticaHistory } from "../histories/AgenticaHistory";
13
+ import type { AgenticaSelectHistory } from "../histories/AgenticaSelectHistory";
14
+ import type { AgenticaSystemMessageHistory } from "../histories/AgenticaSystemMessageHistory";
15
+ import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
16
+ import type { IAgenticaHistoryJson } from "../json/IAgenticaHistoryJson";
17
+
18
+ /**
19
+ * @internal
20
+ */
21
+ export function decodeHistory(history: AgenticaHistory): OpenAI.ChatCompletionMessageParam[] {
22
+ // NO NEED TO DECODE DESCRIBE
23
+ if (history.type === "describe") {
24
+ return [];
25
+ }
26
+ else if (history.type === "select" || history.type === "cancel") {
27
+ return [
28
+ {
29
+ role: "assistant",
30
+ tool_calls: [
31
+ {
32
+ type: "function",
33
+ id: history.id,
34
+ function: {
35
+ name: `${history.type}Functions`,
36
+ arguments: JSON.stringify({
37
+ function: {
38
+ name: history.selection.operation.name,
39
+ reason: history.selection.reason,
40
+ },
41
+ }),
42
+ },
43
+ },
44
+ ],
45
+ },
46
+ {
47
+ role: "tool",
48
+ tool_call_id: history.id,
49
+ content: "",
50
+ },
51
+ ];
52
+ }
53
+ else if (history.type === "execute") {
54
+ return [
55
+ {
56
+ role: "assistant",
57
+ tool_calls: [
58
+ {
59
+ type: "function",
60
+ id: history.id,
61
+ function: {
62
+ name: history.operation.name,
63
+ arguments: JSON.stringify(history.arguments),
64
+ },
65
+ },
66
+ ],
67
+ },
68
+ {
69
+ role: "tool",
70
+ tool_call_id: history.id,
71
+ content: JSON.stringify({
72
+ function: {
73
+ protocol: history.operation.protocol,
74
+ description: history.operation.function.description,
75
+ parameters: history.operation.function.parameters,
76
+ output: history.operation.function.output,
77
+ ...(history.operation.protocol === "http"
78
+ ? {
79
+ method: history.operation.function.method,
80
+ path: history.operation.function.path,
81
+ }
82
+ : {}),
83
+ },
84
+ ...(history.operation.protocol === "http"
85
+ ? {
86
+ status: (history.value as IHttpResponse).status,
87
+ data: (history.value as IHttpResponse).body,
88
+ }
89
+ : {
90
+ value: history.value,
91
+ }),
92
+ }),
93
+ },
94
+ ];
95
+ }
96
+
97
+ if (history.type === "assistantMessage") {
98
+ return [
99
+ {
100
+ role: "assistant",
101
+ content: history.text,
102
+ },
103
+ ];
104
+ }
105
+
106
+ if (history.type === "systemMessage") {
107
+ return [
108
+ {
109
+ role: "system",
110
+ content: history.text,
111
+ },
112
+ ];
113
+ }
114
+
115
+ if (history.type === "userMessage") {
116
+ const contents = history.contents;
117
+ return [
118
+ {
119
+ role: "user",
120
+ content: contents.map(decodeUserMessageContent),
121
+ },
122
+ ];
123
+ }
124
+
125
+ history satisfies never;
126
+ throw new Error(`Unsupported history type, value: ${JSON.stringify(history)}`);
127
+ }
128
+
129
+ /**
130
+ * @internal
131
+ */
132
+ export function decodeUserMessageContent(content: AgenticaUserMessageContent): OpenAI.ChatCompletionContentPart {
133
+ if (content.type === "text") {
134
+ return content;
135
+ }
136
+
137
+ if (content.type === "audio") {
138
+ return {
139
+ type: "input_audio",
140
+ input_audio: {
141
+ data: content.data,
142
+ format: content.format,
143
+ },
144
+ };
145
+ }
146
+
147
+ if (content.type === "file") {
148
+ return {
149
+ type: "file",
150
+ file: content.file.type === "base64"
151
+ ? {
152
+ file_data: content.file.data,
153
+ filename: content.file.name,
154
+ }
155
+ : {
156
+ file_id: content.file.id,
157
+ },
158
+ };
159
+ }
160
+
161
+ if (content.type === "image") {
162
+ return {
163
+ type: "image_url",
164
+ image_url: {
165
+ url: content.image.type === "base64"
166
+ ? content.image.data
167
+ : content.image.url,
168
+ detail: content.detail,
169
+ },
170
+ };
171
+ }
172
+
173
+ content satisfies never;
174
+ throw new Error(`Unsupported user message content type, value: ${JSON.stringify(content)}`);
175
+ }
176
+
177
+ /* -----------------------------------------------------------
178
+ USER INPUT PROMPTS
179
+ ----------------------------------------------------------- */
180
+ /**
181
+ * @internal
182
+ */
183
+ export function createUserMessageHistory(props: {
184
+ id: string;
185
+ created_at: string & tags.Format<"date-time">;
186
+ contents: Array<AgenticaUserMessageContent>;
187
+ }): AgenticaUserMessageHistory {
188
+ return {
189
+ type: "userMessage",
190
+ id: props.id,
191
+ created_at: props.created_at,
192
+ contents: props.contents,
193
+ toJSON: () => ({
194
+ type: "userMessage",
195
+ id: props.id,
196
+ created_at: props.created_at,
197
+ contents: props.contents,
198
+ }),
199
+ };
200
+ }
201
+
202
+ /* -----------------------------------------------------------
203
+ TEXT PROMPTS
204
+ ----------------------------------------------------------- */
205
+ /**
206
+ * @internal
207
+ */
208
+ export function createAssistantMessageHistory(props: {
209
+ id: string;
210
+ created_at: string & tags.Format<"date-time">;
211
+ text: string;
212
+ }): AgenticaAssistantMessageHistory {
213
+ const prompt: IAgenticaHistoryJson.IAssistantMessage = {
214
+ type: "assistantMessage",
215
+ id: props.id,
216
+ created_at: props.created_at,
217
+ text: props.text,
218
+ };
219
+ return {
220
+ ...prompt,
221
+ toJSON: () => prompt,
222
+ };
223
+ }
224
+
225
+ /**
226
+ * @internal
227
+ */
228
+ export function createSystemMessageHistory(props: {
229
+ id: string;
230
+ created_at: string & tags.Format<"date-time">;
231
+ text: string;
232
+ }): AgenticaSystemMessageHistory {
233
+ const prompt: IAgenticaHistoryJson.ISystemMessage = {
234
+ type: "systemMessage",
235
+ id: props.id,
236
+ created_at: props.created_at,
237
+ text: props.text,
238
+ };
239
+ return {
240
+ ...prompt,
241
+ toJSON: () => prompt,
242
+ };
243
+ }
244
+
245
+ /**
246
+ * @internal
247
+ */
248
+ export function createDescribeHistory(props: {
249
+ id: string;
250
+ created_at: string & tags.Format<"date-time">;
251
+ executes: AgenticaExecuteHistory[];
252
+ text: string;
253
+ }): AgenticaDescribeHistory {
254
+ return {
255
+ type: "describe",
256
+ id: props.id,
257
+ created_at: props.created_at,
258
+ text: props.text,
259
+ executes: props.executes,
260
+ toJSON: () => ({
261
+ type: "describe",
262
+ id: props.id,
263
+ created_at: props.created_at,
264
+ text: props.text,
265
+ executes: props.executes.map(execute => execute.toJSON()),
266
+ }),
267
+ };
268
+ }
269
+
270
+ /* -----------------------------------------------------------
271
+ FUNCTION CALLING PROMPTS
272
+ ----------------------------------------------------------- */
273
+ /**
274
+ * @internal
275
+ */
276
+ export function createSelectHistory(props: {
277
+ id: string;
278
+ created_at: string & tags.Format<"date-time">;
279
+ selection: AgenticaOperationSelection;
280
+ }): AgenticaSelectHistory {
281
+ return {
282
+ type: "select",
283
+ id: props.id,
284
+ selection: props.selection,
285
+ created_at: props.created_at,
286
+ toJSON: () => ({
287
+ type: "select",
288
+ id: props.id,
289
+ created_at: props.created_at,
290
+ selection: props.selection.toJSON(),
291
+ }),
292
+ };
293
+ }
294
+
295
+ /**
296
+ * @internal
297
+ */
298
+ export function createCancelHistory(props: {
299
+ id: string;
300
+ created_at: string & tags.Format<"date-time">;
301
+ selection: AgenticaOperationSelection;
302
+ }): AgenticaCancelHistory {
303
+ return {
304
+ type: "cancel",
305
+ id: props.id,
306
+ created_at: props.created_at,
307
+ selection: props.selection,
308
+ toJSON: () => ({
309
+ type: "cancel",
310
+ id: props.id,
311
+ created_at: props.created_at,
312
+ selection: props.selection.toJSON(),
313
+ }),
314
+ };
315
+ }
316
+
317
+ /**
318
+ * @internal
319
+ */
320
+ export function createExecuteHistory(props: {
321
+ id: string;
322
+ created_at: string & tags.Format<"date-time">;
323
+ operation: AgenticaOperation;
324
+ arguments: Record<string, any>;
325
+ value: unknown;
326
+ success: boolean;
327
+ }): AgenticaExecuteHistory {
328
+ return {
329
+ type: "execute",
330
+ protocol: props.operation.protocol as "class",
331
+ id: props.id,
332
+ created_at: props.created_at,
333
+ operation: props.operation as AgenticaOperation.Class,
334
+ arguments: props.arguments,
335
+ value: props.value,
336
+ success: props.success,
337
+ toJSON: () => ({
338
+ type: "execute",
339
+ id: props.id,
340
+ created_at: props.created_at,
341
+ protocol: props.operation.protocol,
342
+ operation: props.operation.toJSON(),
343
+ arguments: props.arguments,
344
+ value: props.value,
345
+ success: props.success,
346
+ }),
347
+ };
348
+ }