@agentica/core 0.23.0 → 0.25.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 (191) hide show
  1. package/README.md +1 -1
  2. package/lib/Agentica.d.ts +7 -2
  3. package/lib/Agentica.js +12 -7
  4. package/lib/Agentica.js.map +1 -1
  5. package/lib/MicroAgentica.d.ts +2 -2
  6. package/lib/MicroAgentica.js +4 -4
  7. package/lib/MicroAgentica.js.map +1 -1
  8. package/lib/context/AgenticaContext.d.ts +6 -2
  9. package/lib/context/MicroAgenticaContext.d.ts +2 -2
  10. package/lib/context/index.d.ts +5 -0
  11. package/lib/{structures/mcp → context}/index.js +5 -1
  12. package/lib/context/index.js.map +1 -0
  13. package/lib/events/AgenticaAssistantMessageEvent.d.ts +9 -0
  14. package/lib/{histories/AgenticaUserInputHistory.js → events/AgenticaAssistantMessageEvent.js} +1 -1
  15. package/lib/events/AgenticaAssistantMessageEvent.js.map +1 -0
  16. package/lib/events/AgenticaEvent.d.ts +9 -9
  17. package/lib/events/AgenticaUserMessageEvent.d.ts +9 -0
  18. package/lib/events/{AgenticaUserInputEvent.js → AgenticaUserMessageEvent.js} +1 -1
  19. package/lib/events/AgenticaUserMessageEvent.js.map +1 -0
  20. package/lib/events/MicroAgenticaEvent.d.ts +6 -6
  21. package/lib/events/index.d.ts +14 -0
  22. package/lib/events/index.js +31 -0
  23. package/lib/events/index.js.map +1 -0
  24. package/lib/factory/events.d.ts +8 -8
  25. package/lib/factory/events.js +23 -38
  26. package/lib/factory/events.js.map +1 -1
  27. package/lib/factory/histories.d.ts +1 -36
  28. package/lib/factory/histories.js +77 -24
  29. package/lib/factory/histories.js.map +1 -1
  30. package/lib/functional/assertHttpController.js +6 -6
  31. package/lib/functional/assertHttpLlmApplication.js +6 -6
  32. package/lib/functional/assertMcpController.d.ts +1 -2
  33. package/lib/functional/assertMcpController.js +6 -6
  34. package/lib/functional/assertMcpController.js.map +1 -1
  35. package/lib/functional/index.d.ts +6 -0
  36. package/lib/functional/index.js +23 -0
  37. package/lib/functional/index.js.map +1 -0
  38. package/lib/functional/validateHttpController.js +5 -5
  39. package/lib/functional/validateHttpLlmApplication.js +5 -5
  40. package/lib/functional/validateMcpController.d.ts +1 -2
  41. package/lib/functional/validateMcpController.js +11 -11
  42. package/lib/functional/validateMcpController.js.map +1 -1
  43. package/lib/histories/{AgenticaTextHistory.d.ts → AgenticaAssistantMessageHistory.d.ts} +1 -2
  44. package/lib/histories/AgenticaAssistantMessageHistory.js +3 -0
  45. package/lib/histories/AgenticaAssistantMessageHistory.js.map +1 -0
  46. package/lib/histories/AgenticaHistory.d.ts +7 -7
  47. package/lib/histories/AgenticaUserMessageHistory.d.ts +6 -0
  48. package/lib/{events/AgenticaTextEvent.js → histories/AgenticaUserMessageHistory.js} +1 -1
  49. package/lib/histories/AgenticaUserMessageHistory.js.map +1 -0
  50. package/lib/histories/MicroAgenticaHistory.d.ts +5 -4
  51. package/lib/histories/contents/AgenticaUserMessageAudioContent.d.ts +19 -0
  52. package/lib/histories/contents/AgenticaUserMessageAudioContent.js +3 -0
  53. package/lib/histories/contents/AgenticaUserMessageAudioContent.js.map +1 -0
  54. package/lib/histories/contents/AgenticaUserMessageContent.d.ts +14 -0
  55. package/lib/histories/{AgenticaTextHistory.js → contents/AgenticaUserMessageContent.js} +1 -1
  56. package/lib/histories/contents/AgenticaUserMessageContent.js.map +1 -0
  57. package/lib/histories/contents/AgenticaUserMessageContentBase.d.ts +6 -0
  58. package/lib/histories/contents/AgenticaUserMessageContentBase.js +3 -0
  59. package/lib/histories/contents/AgenticaUserMessageContentBase.js.map +1 -0
  60. package/lib/histories/contents/AgenticaUserMessageFileContent.d.ts +26 -0
  61. package/lib/histories/contents/AgenticaUserMessageFileContent.js +3 -0
  62. package/lib/histories/contents/AgenticaUserMessageFileContent.js.map +1 -0
  63. package/lib/histories/contents/AgenticaUserMessageImageContent.d.ts +20 -0
  64. package/lib/histories/contents/AgenticaUserMessageImageContent.js +3 -0
  65. package/lib/histories/contents/AgenticaUserMessageImageContent.js.map +1 -0
  66. package/lib/histories/contents/AgenticaUserMessageTextContent.d.ts +14 -0
  67. package/lib/histories/contents/AgenticaUserMessageTextContent.js +3 -0
  68. package/lib/histories/contents/AgenticaUserMessageTextContent.js.map +1 -0
  69. package/lib/histories/contents/index.d.ts +5 -0
  70. package/lib/histories/contents/index.js +22 -0
  71. package/lib/histories/contents/index.js.map +1 -0
  72. package/lib/histories/index.d.ts +9 -0
  73. package/lib/histories/index.js +26 -0
  74. package/lib/histories/index.js.map +1 -0
  75. package/lib/index.d.ts +6 -45
  76. package/lib/index.js +6 -46
  77. package/lib/index.js.map +1 -1
  78. package/lib/index.mjs +155 -135
  79. package/lib/index.mjs.map +1 -1
  80. package/lib/json/IAgenticaEventJson.d.ts +29 -23
  81. package/lib/json/IAgenticaHistoryJson.d.ts +24 -19
  82. package/lib/json/IMicroAgenticaEventJson.d.ts +1 -1
  83. package/lib/json/IMicroAgenticaHistoryJson.d.ts +1 -1
  84. package/lib/json/index.d.ts +7 -0
  85. package/lib/json/index.js +24 -0
  86. package/lib/json/index.js.map +1 -0
  87. package/lib/orchestrate/call.js +4 -4
  88. package/lib/orchestrate/call.js.map +1 -1
  89. package/lib/orchestrate/cancel.js +1 -1
  90. package/lib/orchestrate/cancel.js.map +1 -1
  91. package/lib/orchestrate/initialize.js +4 -4
  92. package/lib/orchestrate/initialize.js.map +1 -1
  93. package/lib/orchestrate/select.js +3 -3
  94. package/lib/orchestrate/select.js.map +1 -1
  95. package/lib/structures/IAgenticaController.d.ts +1 -2
  96. package/lib/structures/index.d.ts +10 -0
  97. package/lib/structures/index.js +27 -0
  98. package/lib/structures/index.js.map +1 -0
  99. package/lib/transformers/transformEvent.d.ts +1 -0
  100. package/lib/transformers/{AgenticaEventTransformer.js → transformEvent.js} +74 -31
  101. package/lib/transformers/transformEvent.js.map +1 -0
  102. package/lib/transformers/transformHistory.d.ts +1 -0
  103. package/lib/transformers/{AgenticaHistoryTransformer.js → transformHistory.js} +24 -23
  104. package/lib/transformers/transformHistory.js.map +1 -0
  105. package/lib/utils/ChatGptCompletionMessageUtil.js +2 -2
  106. package/lib/utils/ChatGptCompletionMessageUtil.spec.d.ts +1 -0
  107. package/lib/utils/ChatGptCompletionMessageUtil.spec.js +288 -0
  108. package/lib/utils/ChatGptCompletionMessageUtil.spec.js.map +1 -0
  109. package/lib/utils/ChatGptTokenUsageAggregator.spec.d.ts +1 -0
  110. package/lib/utils/ChatGptTokenUsageAggregator.spec.js +199 -0
  111. package/lib/utils/ChatGptTokenUsageAggregator.spec.js.map +1 -0
  112. package/lib/utils/Singleton.js +18 -0
  113. package/lib/utils/Singleton.js.map +1 -1
  114. package/lib/utils/Singleton.spec.d.ts +1 -0
  115. package/lib/utils/Singleton.spec.js +106 -0
  116. package/lib/utils/Singleton.spec.js.map +1 -0
  117. package/lib/utils/__map_take.spec.d.ts +1 -0
  118. package/lib/utils/__map_take.spec.js +108 -0
  119. package/lib/utils/__map_take.spec.js.map +1 -0
  120. package/package.json +5 -6
  121. package/src/Agentica.ts +25 -10
  122. package/src/MicroAgentica.ts +12 -9
  123. package/src/context/AgenticaContext.ts +7 -2
  124. package/src/context/MicroAgenticaContext.ts +2 -2
  125. package/src/context/index.ts +5 -0
  126. package/src/events/AgenticaAssistantMessageEvent.ts +12 -0
  127. package/src/events/AgenticaEvent.ts +15 -15
  128. package/src/events/AgenticaUserMessageEvent.ts +12 -0
  129. package/src/events/MicroAgenticaEvent.ts +9 -9
  130. package/src/events/index.ts +14 -0
  131. package/src/factory/events.ts +29 -34
  132. package/src/factory/histories.ts +81 -32
  133. package/src/functional/assertMcpController.ts +4 -2
  134. package/src/functional/index.ts +7 -0
  135. package/src/functional/validateMcpController.ts +4 -2
  136. package/src/histories/{AgenticaTextHistory.ts → AgenticaAssistantMessageHistory.ts} +4 -2
  137. package/src/histories/AgenticaHistory.ts +8 -8
  138. package/src/histories/AgenticaUserMessageHistory.ts +11 -0
  139. package/src/histories/MicroAgenticaHistory.ts +6 -5
  140. package/src/histories/contents/AgenticaUserMessageAudioContent.ts +21 -0
  141. package/src/histories/contents/AgenticaUserMessageContent.ts +19 -0
  142. package/src/histories/contents/AgenticaUserMessageContentBase.ts +6 -0
  143. package/src/histories/contents/AgenticaUserMessageFileContent.ts +27 -0
  144. package/src/histories/contents/AgenticaUserMessageImageContent.ts +23 -0
  145. package/src/histories/contents/AgenticaUserMessageTextContent.ts +15 -0
  146. package/src/histories/contents/index.ts +5 -0
  147. package/src/histories/index.ts +9 -0
  148. package/src/index.ts +6 -54
  149. package/src/json/IAgenticaEventJson.ts +36 -28
  150. package/src/json/IAgenticaHistoryJson.ts +28 -22
  151. package/src/json/IMicroAgenticaEventJson.ts +2 -1
  152. package/src/json/IMicroAgenticaHistoryJson.ts +2 -1
  153. package/src/json/index.ts +7 -0
  154. package/src/orchestrate/call.ts +8 -8
  155. package/src/orchestrate/cancel.ts +2 -2
  156. package/src/orchestrate/initialize.ts +5 -5
  157. package/src/orchestrate/select.ts +5 -5
  158. package/src/structures/IAgenticaController.ts +4 -2
  159. package/src/structures/index.ts +10 -0
  160. package/src/transformers/{AgenticaEventTransformer.ts → transformEvent.ts} +94 -42
  161. package/src/transformers/{AgenticaHistoryTransformer.ts → transformHistory.ts} +30 -26
  162. package/src/utils/ChatGptCompletionMessageUtil.spec.ts +320 -0
  163. package/src/utils/ChatGptTokenUsageAggregator.spec.ts +226 -0
  164. package/src/utils/Singleton.spec.ts +138 -0
  165. package/src/utils/Singleton.ts +18 -0
  166. package/src/utils/__map_take.spec.ts +140 -0
  167. package/lib/events/AgenticaTextEvent.d.ts +0 -10
  168. package/lib/events/AgenticaTextEvent.js.map +0 -1
  169. package/lib/events/AgenticaUserInputEvent.d.ts +0 -10
  170. package/lib/events/AgenticaUserInputEvent.js.map +0 -1
  171. package/lib/histories/AgenticaTextHistory.js.map +0 -1
  172. package/lib/histories/AgenticaUserInputHistory.d.ts +0 -80
  173. package/lib/histories/AgenticaUserInputHistory.js.map +0 -1
  174. package/lib/structures/mcp/IMcpLlmTransportProps.d.ts +0 -11
  175. package/lib/structures/mcp/IMcpLlmTransportProps.js +0 -3
  176. package/lib/structures/mcp/IMcpLlmTransportProps.js.map +0 -1
  177. package/lib/structures/mcp/index.d.ts +0 -1
  178. package/lib/structures/mcp/index.js.map +0 -1
  179. package/lib/transformers/AgenticaEventTransformer.d.ts +0 -63
  180. package/lib/transformers/AgenticaEventTransformer.js.map +0 -1
  181. package/lib/transformers/AgenticaHistoryTransformer.d.ts +0 -41
  182. package/lib/transformers/AgenticaHistoryTransformer.js.map +0 -1
  183. package/lib/utils/MathUtil.d.ts +0 -3
  184. package/lib/utils/MathUtil.js +0 -8
  185. package/lib/utils/MathUtil.js.map +0 -1
  186. package/src/events/AgenticaTextEvent.ts +0 -12
  187. package/src/events/AgenticaUserInputEvent.ts +0 -12
  188. package/src/histories/AgenticaUserInputHistory.ts +0 -88
  189. package/src/structures/mcp/IMcpLlmTransportProps.ts +0 -13
  190. package/src/structures/mcp/index.ts +0 -1
  191. package/src/utils/MathUtil.ts +0 -3
@@ -5,8 +5,9 @@ import type { AgenticaOperationCollection } from "./context/AgenticaOperationCol
5
5
  import type { MicroAgenticaContext } from "./context/MicroAgenticaContext";
6
6
  import type { AgenticaRequestEvent } from "./events/AgenticaRequestEvent";
7
7
  import type { MicroAgenticaEvent } from "./events/MicroAgenticaEvent";
8
+ import type { AgenticaUserMessageContent } from "./histories";
8
9
  import type { AgenticaExecuteHistory } from "./histories/AgenticaExecuteHistory";
9
- import type { AgenticaUserInputHistory } from "./histories/AgenticaUserInputHistory";
10
+ import type { AgenticaUserMessageHistory } from "./histories/AgenticaUserMessageHistory";
10
11
  import type { MicroAgenticaHistory } from "./histories/MicroAgenticaHistory";
11
12
  import type { IAgenticaController } from "./structures/IAgenticaController";
12
13
  import type { IAgenticaVendor } from "./structures/IAgenticaVendor";
@@ -16,10 +17,10 @@ import type { IMicroAgenticaProps } from "./structures/IMicroAgenticaProps";
16
17
  import { AgenticaTokenUsage } from "./context/AgenticaTokenUsage";
17
18
  import { AgenticaOperationComposer } from "./context/internal/AgenticaOperationComposer";
18
19
  import { AgenticaTokenUsageAggregator } from "./context/internal/AgenticaTokenUsageAggregator";
19
- import { createUserInputHistory } from "./factory";
20
- import { createRequestEvent, createUserInputEvent } from "./factory/events";
20
+ import { createUserMessageHistory } from "./factory";
21
+ import { createRequestEvent, createUserMessageEvent } from "./factory/events";
21
22
  import { call, describe } from "./orchestrate";
22
- import { AgenticaHistoryTransformer } from "./transformers/AgenticaHistoryTransformer";
23
+ import { transformHistory } from "./transformers/transformHistory";
23
24
  import { __map_take } from "./utils/__map_take";
24
25
  import { ChatGptCompletionMessageUtil } from "./utils/ChatGptCompletionMessageUtil";
25
26
  import { streamDefaultReaderToAsyncGenerator, StreamUtil } from "./utils/StreamUtil";
@@ -74,7 +75,7 @@ export class MicroAgentica<Model extends ILlmSchema.Model> {
74
75
  config: props.config,
75
76
  });
76
77
  this.histories_ = (props.histories ?? []).map(input =>
77
- AgenticaHistoryTransformer.transform({
78
+ transformHistory({
78
79
  operations: this.operations_.group,
79
80
  history: input,
80
81
  }),
@@ -108,8 +109,10 @@ export class MicroAgentica<Model extends ILlmSchema.Model> {
108
109
  * @param content The content to talk
109
110
  * @returns List of newly created histories
110
111
  */
111
- public async conversate(content: string | AgenticaUserInputHistory.Contents | Array<AgenticaUserInputHistory.Contents>): Promise<MicroAgenticaHistory<Model>[]> {
112
- const talk = createUserInputHistory({
112
+ public async conversate(
113
+ content: string | AgenticaUserMessageContent | Array<AgenticaUserMessageContent>,
114
+ ): Promise<MicroAgenticaHistory<Model>[]> {
115
+ const talk = createUserMessageHistory({
113
116
  contents: Array.isArray(content)
114
117
  ? content
115
118
  : typeof content === "string"
@@ -120,7 +123,7 @@ export class MicroAgentica<Model extends ILlmSchema.Model> {
120
123
  : [content],
121
124
  });
122
125
  this.dispatch(
123
- createUserInputEvent({
126
+ createUserMessageEvent({
124
127
  contents: talk.contents,
125
128
  }),
126
129
  ).catch(() => {});
@@ -207,7 +210,7 @@ export class MicroAgentica<Model extends ILlmSchema.Model> {
207
210
  * @internal
208
211
  */
209
212
  public getContext(props: {
210
- prompt: AgenticaUserInputHistory;
213
+ prompt: AgenticaUserMessageHistory;
211
214
  usage: AgenticaTokenUsage;
212
215
  }): MicroAgenticaContext<Model> {
213
216
  const dispatch = this.dispatch.bind(this);
@@ -4,7 +4,7 @@ import type OpenAI from "openai";
4
4
  import type { AgenticaEvent } from "../events/AgenticaEvent";
5
5
  import type { AgenticaEventSource } from "../events/AgenticaEventSource";
6
6
  import type { AgenticaHistory } from "../histories/AgenticaHistory";
7
- import type { AgenticaUserInputHistory } from "../histories/AgenticaUserInputHistory";
7
+ import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
8
8
  import type { IAgenticaConfig } from "../structures/IAgenticaConfig";
9
9
 
10
10
  import type { AgenticaOperationCollection } from "./AgenticaOperationCollection";
@@ -85,7 +85,12 @@ export interface AgenticaContext<Model extends ILlmSchema.Model> {
85
85
  * The user input history written by the user through the
86
86
  * {@link Agentica.conversate} function.
87
87
  */
88
- prompt: AgenticaUserInputHistory;
88
+ prompt: AgenticaUserMessageHistory;
89
+
90
+ /**
91
+ * Abort signal.
92
+ */
93
+ abortSignal?: AbortSignal;
89
94
 
90
95
  /**
91
96
  * Whether the agent is ready.
@@ -2,7 +2,7 @@ import type { ILlmSchema } from "@samchon/openapi";
2
2
  import type OpenAI from "openai";
3
3
 
4
4
  import type { MicroAgenticaEvent } from "../events/MicroAgenticaEvent";
5
- import type { AgenticaUserInputHistory } from "../histories/AgenticaUserInputHistory";
5
+ import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
6
6
  import type { MicroAgenticaHistory } from "../histories/MicroAgenticaHistory";
7
7
  import type { IMicroAgenticaConfig } from "../structures/IMicroAgenticaConfig";
8
8
 
@@ -66,7 +66,7 @@ export interface MicroAgenticaContext<Model extends ILlmSchema.Model> {
66
66
  * Text conversation written the by user through the
67
67
  * {@link Agentica.conversate} function.
68
68
  */
69
- prompt: AgenticaUserInputHistory;
69
+ prompt: AgenticaUserMessageHistory;
70
70
 
71
71
  // ----
72
72
  // HANDLERS
@@ -0,0 +1,5 @@
1
+ export * from "./AgenticaContext";
2
+ export * from "./AgenticaOperation";
3
+ export * from "./AgenticaOperationCollection";
4
+ export * from "./AgenticaOperationSelection";
5
+ export * from "./AgenticaTokenUsage";
@@ -0,0 +1,12 @@
1
+ import type { AgenticaAssistantMessageHistory } from "../histories/AgenticaAssistantMessageHistory";
2
+ import type { IAgenticaEventJson } from "../json/IAgenticaEventJson";
3
+
4
+ import type { AgenticaEventBase } from "./AgenticaEventBase";
5
+
6
+ export interface AgenticaAssistantMessageEvent
7
+ extends AgenticaEventBase<"assistantMessage"> {
8
+ stream: AsyncGenerator<string, undefined, undefined>;
9
+ join: () => Promise<string>;
10
+ toJSON: () => IAgenticaEventJson.IAssistantMessage;
11
+ toHistory: () => AgenticaAssistantMessageHistory;
12
+ }
@@ -1,5 +1,6 @@
1
1
  import type { ILlmSchema } from "@samchon/openapi";
2
2
 
3
+ import type { AgenticaAssistantMessageEvent } from "./AgenticaAssistantMessageEvent";
3
4
  import type { AgenticaCallEvent } from "./AgenticaCallEvent";
4
5
  import type { AgenticaCancelEvent } from "./AgenticaCancelEvent";
5
6
  import type { AgenticaDescribeEvent } from "./AgenticaDescribeEvent";
@@ -8,8 +9,7 @@ import type { AgenticaInitializeEvent } from "./AgenticaInitializeEvent";
8
9
  import type { AgenticaRequestEvent } from "./AgenticaRequestEvent";
9
10
  import type { AgenticaResponseEvent } from "./AgenticaResponseEvent";
10
11
  import type { AgenticaSelectEvent } from "./AgenticaSelectEvent";
11
- import type { AgenticaTextEvent } from "./AgenticaTextEvent";
12
- import type { AgenticaUserInputEvent } from "./AgenticaUserInputEvent";
12
+ import type { AgenticaUserMessageEvent } from "./AgenticaUserMessageEvent";
13
13
  import type { AgenticaValidateEvent } from "./AgenticaValidateEvent";
14
14
 
15
15
  /**
@@ -23,31 +23,31 @@ import type { AgenticaValidateEvent } from "./AgenticaValidateEvent";
23
23
  * @author Samchon
24
24
  */
25
25
  export type AgenticaEvent<Model extends ILlmSchema.Model> =
26
+ | AgenticaUserMessageEvent
27
+ | AgenticaAssistantMessageEvent
28
+ | AgenticaInitializeEvent
29
+ | AgenticaSelectEvent<Model>
26
30
  | AgenticaCallEvent<Model>
27
31
  | AgenticaCancelEvent<Model>
28
- | AgenticaDescribeEvent<Model>
29
32
  | AgenticaExecuteEvent<Model>
30
- | AgenticaInitializeEvent
31
- | AgenticaRequestEvent
32
- | AgenticaResponseEvent
33
- | AgenticaSelectEvent<Model>
34
- | AgenticaTextEvent
33
+ | AgenticaDescribeEvent<Model>
35
34
  | AgenticaValidateEvent<Model>
36
- | AgenticaUserInputEvent;
35
+ | AgenticaRequestEvent
36
+ | AgenticaResponseEvent;
37
37
  export namespace AgenticaEvent {
38
38
  export type Type = AgenticaEvent<any>["type"];
39
39
  export interface Mapper<Model extends ILlmSchema.Model> {
40
+ userMessage: AgenticaUserMessageEvent;
41
+ assistantMessage: AgenticaAssistantMessageEvent;
42
+ select: AgenticaSelectEvent<Model>;
43
+ initialize: AgenticaInitializeEvent;
40
44
  call: AgenticaCallEvent<Model>;
41
45
  cancel: AgenticaCancelEvent<Model>;
42
- describe: AgenticaDescribeEvent<Model>;
43
46
  execute: AgenticaExecuteEvent<Model>;
44
- initialize: AgenticaInitializeEvent;
47
+ describe: AgenticaDescribeEvent<Model>;
48
+ validate: AgenticaValidateEvent<Model>;
45
49
  request: AgenticaRequestEvent;
46
50
  response: AgenticaResponseEvent;
47
- select: AgenticaSelectEvent<Model>;
48
- text: AgenticaTextEvent;
49
- validate: AgenticaValidateEvent<Model>;
50
- user_input: AgenticaUserInputEvent;
51
51
  }
52
52
  export type Source =
53
53
  | "initialize"
@@ -0,0 +1,12 @@
1
+ import type { AgenticaUserMessageContent } from "../histories";
2
+ import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
3
+ import type { IAgenticaEventJson } from "../json/IAgenticaEventJson";
4
+
5
+ import type { AgenticaEventBase } from "./AgenticaEventBase";
6
+
7
+ export interface AgenticaUserMessageEvent
8
+ extends AgenticaEventBase<"userMessage"> {
9
+ contents: Array<AgenticaUserMessageContent>;
10
+ toJSON: () => IAgenticaEventJson.IUserMessage;
11
+ toHistory: () => AgenticaUserMessageHistory;
12
+ }
@@ -1,12 +1,12 @@
1
1
  import type { ILlmSchema } from "@samchon/openapi";
2
2
 
3
+ import type { AgenticaAssistantMessageEvent } from "./AgenticaAssistantMessageEvent";
3
4
  import type { AgenticaCallEvent } from "./AgenticaCallEvent";
4
5
  import type { AgenticaDescribeEvent } from "./AgenticaDescribeEvent";
5
6
  import type { AgenticaExecuteEvent } from "./AgenticaExecuteEvent";
6
7
  import type { AgenticaRequestEvent } from "./AgenticaRequestEvent";
7
8
  import type { AgenticaResponseEvent } from "./AgenticaResponseEvent";
8
- import type { AgenticaTextEvent } from "./AgenticaTextEvent";
9
- import type { AgenticaUserInputEvent } from "./AgenticaUserInputEvent";
9
+ import type { AgenticaUserMessageEvent } from "./AgenticaUserMessageEvent";
10
10
  import type { AgenticaValidateEvent } from "./AgenticaValidateEvent";
11
11
 
12
12
  /**
@@ -20,25 +20,25 @@ import type { AgenticaValidateEvent } from "./AgenticaValidateEvent";
20
20
  * @author Samchon
21
21
  */
22
22
  export type MicroAgenticaEvent<Model extends ILlmSchema.Model> =
23
+ | AgenticaUserMessageEvent
24
+ | AgenticaAssistantMessageEvent
23
25
  | AgenticaCallEvent<Model>
24
- | AgenticaDescribeEvent<Model>
25
26
  | AgenticaExecuteEvent<Model>
27
+ | AgenticaDescribeEvent<Model>
26
28
  | AgenticaRequestEvent
27
29
  | AgenticaResponseEvent
28
- | AgenticaTextEvent
29
- | AgenticaValidateEvent<Model>
30
- | AgenticaUserInputEvent;
30
+ | AgenticaValidateEvent<Model>;
31
31
  export namespace MicroAgenticaEvent {
32
32
  export type Type = MicroAgenticaEvent<any>["type"];
33
33
  export interface Mapper<Model extends ILlmSchema.Model> {
34
+ userMessage: AgenticaUserMessageEvent;
35
+ assistantMessage: AgenticaAssistantMessageEvent;
34
36
  call: AgenticaCallEvent<Model>;
35
- describe: AgenticaDescribeEvent<Model>;
36
37
  execute: AgenticaExecuteEvent<Model>;
38
+ describe: AgenticaDescribeEvent<Model>;
37
39
  request: AgenticaRequestEvent;
38
40
  response: AgenticaResponseEvent;
39
- text: AgenticaTextEvent;
40
41
  validate: AgenticaValidateEvent<Model>;
41
- user_input: AgenticaUserInputEvent;
42
42
  }
43
43
  export type Source = "call" | "describe";
44
44
  }
@@ -0,0 +1,14 @@
1
+ export * from "./AgenticaAssistantMessageEvent";
2
+ export * from "./AgenticaCallEvent";
3
+ export * from "./AgenticaCancelEvent";
4
+ export * from "./AgenticaDescribeEvent";
5
+ export * from "./AgenticaEvent";
6
+ export * from "./AgenticaEventSource";
7
+ export * from "./AgenticaExecuteEvent";
8
+ export * from "./AgenticaInitializeEvent";
9
+ export * from "./AgenticaRequestEvent";
10
+ export * from "./AgenticaResponseEvent";
11
+ export * from "./AgenticaSelectEvent";
12
+ export * from "./AgenticaUserMessageEvent";
13
+ export * from "./AgenticaValidateEvent";
14
+ export * from "./MicroAgenticaEvent";
@@ -5,6 +5,7 @@ import { v4 } from "uuid";
5
5
 
6
6
  import type { AgenticaOperation } from "../context/AgenticaOperation";
7
7
  import type { AgenticaOperationSelection } from "../context/AgenticaOperationSelection";
8
+ import type { AgenticaAssistantMessageEvent } from "../events/AgenticaAssistantMessageEvent";
8
9
  import type { AgenticaCallEvent } from "../events/AgenticaCallEvent";
9
10
  import type { AgenticaCancelEvent } from "../events/AgenticaCancelEvent";
10
11
  import type { AgenticaDescribeEvent } from "../events/AgenticaDescribeEvent";
@@ -14,14 +15,13 @@ import type { AgenticaInitializeEvent } from "../events/AgenticaInitializeEvent"
14
15
  import type { AgenticaRequestEvent } from "../events/AgenticaRequestEvent";
15
16
  import type { AgenticaResponseEvent } from "../events/AgenticaResponseEvent";
16
17
  import type { AgenticaSelectEvent } from "../events/AgenticaSelectEvent";
17
- import type { AgenticaTextEvent } from "../events/AgenticaTextEvent";
18
- import type { AgenticaUserInputEvent } from "../events/AgenticaUserInputEvent";
18
+ import type { AgenticaUserMessageEvent } from "../events/AgenticaUserMessageEvent";
19
19
  import type { AgenticaValidateEvent } from "../events/AgenticaValidateEvent";
20
+ import type { AgenticaUserMessageContent } from "../histories";
20
21
  import type { AgenticaExecuteHistory } from "../histories/AgenticaExecuteHistory";
21
- import type { AgenticaUserInputHistory } from "../histories/AgenticaUserInputHistory";
22
22
  import type { IAgenticaEventJson } from "../json/IAgenticaEventJson";
23
23
 
24
- import { createExecuteHistory, createSelectHistory, createUserInputHistory } from "./histories";
24
+ import { createExecuteHistory, createSelectHistory, createUserMessageHistory } from "./histories";
25
25
 
26
26
  /* -----------------------------------------------------------
27
27
  FUNCTION SELECTS
@@ -36,23 +36,6 @@ export function createInitializeEvent(): AgenticaInitializeEvent {
36
36
  };
37
37
  }
38
38
 
39
- export function createUserInputEvent(props: {
40
- contents: Array<AgenticaUserInputHistory.Contents>;
41
- }): AgenticaUserInputEvent {
42
- return {
43
- type: "user_input",
44
- role: "user",
45
- contents: props.contents,
46
- join: async () => props.contents,
47
- toJSON: () => ({
48
- type: "user_input",
49
- contents: props.contents,
50
- }),
51
- toHistory: () => createUserInputHistory({
52
- contents: props.contents,
53
- }),
54
- };
55
- }
56
39
  export function createSelectEvent<Model extends ILlmSchema.Model>(props: {
57
40
  selection: AgenticaOperationSelection<Model>;
58
41
  }): AgenticaSelectEvent<Model> {
@@ -151,32 +134,44 @@ export function createExecuteEvent<Model extends ILlmSchema.Model>(props: {
151
134
  }
152
135
 
153
136
  /* -----------------------------------------------------------
154
- TEXT STEAMING
137
+ CONTENTS
155
138
  ----------------------------------------------------------- */
156
- export function createTextEvent(props: {
139
+ export function createUserMessageEvent(props: {
140
+ contents: Array<AgenticaUserMessageContent>;
141
+ }): AgenticaUserMessageEvent {
142
+ return {
143
+ type: "userMessage",
144
+ contents: props.contents,
145
+ toJSON: () => ({
146
+ type: "userMessage",
147
+ contents: props.contents,
148
+ }),
149
+ toHistory: () => createUserMessageHistory({
150
+ contents: props.contents,
151
+ }),
152
+ };
153
+ }
154
+
155
+ export function creatAssistantEvent(props: {
157
156
  stream: AsyncGenerator<string, undefined, undefined>;
158
157
  done: () => boolean;
159
158
  get: () => string;
160
159
  join: () => Promise<string>;
161
- }): AgenticaTextEvent {
160
+ }): AgenticaAssistantMessageEvent {
162
161
  return {
163
- type: "text",
164
- role: "assistant",
162
+ type: "assistantMessage",
165
163
  stream: props.stream,
166
164
  join: props.join,
167
165
  toJSON: () => ({
168
- type: "text",
169
- role: "assistant",
166
+ type: "assistantMessage",
170
167
  done: props.done(),
171
168
  text: props.get(),
172
169
  }),
173
170
  toHistory: () => ({
174
- type: "text",
175
- role: "assistant",
171
+ type: "assistantMessage",
176
172
  text: props.get(),
177
173
  toJSON: () => ({
178
- type: "text",
179
- role: "assistant",
174
+ type: "assistantMessage",
180
175
  text: props.get(),
181
176
  }),
182
177
  }),
@@ -215,8 +210,8 @@ export function createDescribeEvent<Model extends ILlmSchema.Model>(props: {
215
210
  }
216
211
 
217
212
  /* -----------------------------------------------------------
218
- API REQUESTS
219
- ----------------------------------------------------------- */
213
+ API REQUESTS
214
+ ----------------------------------------------------------- */
220
215
  export function createRequestEvent(props: {
221
216
  source: AgenticaEventSource;
222
217
  body: OpenAI.ChatCompletionCreateParamsStreaming;
@@ -3,31 +3,25 @@ import type OpenAI from "openai";
3
3
 
4
4
  import type { AgenticaOperation } from "../context/AgenticaOperation";
5
5
  import type { AgenticaOperationSelection } from "../context/AgenticaOperationSelection";
6
+ import type { AgenticaUserMessageContent } from "../histories";
7
+ import type { AgenticaAssistantMessageHistory } from "../histories/AgenticaAssistantMessageHistory";
6
8
  import type { AgenticaCancelHistory } from "../histories/AgenticaCancelHistory";
7
9
  import type { AgenticaDescribeHistory } from "../histories/AgenticaDescribeHistory";
8
10
  import type { AgenticaExecuteHistory } from "../histories/AgenticaExecuteHistory";
9
11
  import type { AgenticaHistory } from "../histories/AgenticaHistory";
10
12
  import type { AgenticaSelectHistory } from "../histories/AgenticaSelectHistory";
11
- import type { AgenticaTextHistory } from "../histories/AgenticaTextHistory";
12
- import type { AgenticaUserInputHistory } from "../histories/AgenticaUserInputHistory";
13
+ import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
13
14
  import type { IAgenticaHistoryJson } from "../json/IAgenticaHistoryJson";
14
15
 
16
+ /**
17
+ * @internal
18
+ */
15
19
  export function decodeHistory<Model extends ILlmSchema.Model>(history: AgenticaHistory<Model>): OpenAI.ChatCompletionMessageParam[] {
16
20
  // NO NEED TO DECODE DESCRIBE
17
21
  if (history.type === "describe") {
18
22
  return [];
19
23
  }
20
-
21
- if (history.type === "text") {
22
- return [
23
- {
24
- role: history.role,
25
- content: history.text,
26
- },
27
- ];
28
- }
29
-
30
- if (history.type === "select" || history.type === "cancel") {
24
+ else if (history.type === "select" || history.type === "cancel") {
31
25
  return [
32
26
  {
33
27
  role: "assistant",
@@ -54,8 +48,7 @@ export function decodeHistory<Model extends ILlmSchema.Model>(history: AgenticaH
54
48
  },
55
49
  ];
56
50
  }
57
-
58
- if (history.type === "execute") {
51
+ else if (history.type === "execute") {
59
52
  return [
60
53
  {
61
54
  role: "assistant",
@@ -98,32 +91,74 @@ export function decodeHistory<Model extends ILlmSchema.Model>(history: AgenticaH
98
91
  },
99
92
  ];
100
93
  }
101
-
102
- if (history.type === "user_input") {
94
+ else if (history.type === "assistantMessage") {
103
95
  return [
104
96
  {
105
- role: "user",
106
- content: history.contents,
97
+ role: "assistant",
98
+ content: history.text,
107
99
  },
108
100
  ];
109
101
  }
102
+ return [
103
+ {
104
+ role: "user",
105
+ content: history.contents.map(decodeUserMessageContent),
106
+ },
107
+ ];
108
+ }
110
109
 
111
- history satisfies never;
112
- throw new Error("Invalid history type");
110
+ /**
111
+ * @internal
112
+ */
113
+ export function decodeUserMessageContent(content: AgenticaUserMessageContent): OpenAI.ChatCompletionContentPart {
114
+ if (content.type === "audio") {
115
+ return {
116
+ type: "input_audio",
117
+ input_audio: {
118
+ data: content.data,
119
+ format: content.format,
120
+ },
121
+ };
122
+ }
123
+ else if (content.type === "file") {
124
+ return {
125
+ type: "file",
126
+ file: content.file.type === "data"
127
+ ? {
128
+ file_data: content.file.data,
129
+ filename: content.file.name,
130
+ }
131
+ : {
132
+ file_id: content.file.id,
133
+ },
134
+ };
135
+ }
136
+ else if (content.type === "image") {
137
+ return {
138
+ type: "image_url",
139
+ image_url: {
140
+ url: content.url,
141
+ detail: content.detail,
142
+ },
143
+ };
144
+ }
145
+ return content;
113
146
  }
114
147
 
115
148
  /* -----------------------------------------------------------
116
149
  USER INPUT PROMPTS
117
150
  ----------------------------------------------------------- */
118
- export function createUserInputHistory(props: {
119
- contents: Array<AgenticaUserInputHistory.Contents>;
120
- }): AgenticaUserInputHistory {
151
+ /**
152
+ * @internal
153
+ */
154
+ export function createUserMessageHistory(props: {
155
+ contents: Array<AgenticaUserMessageContent>;
156
+ }): AgenticaUserMessageHistory {
121
157
  return {
122
- type: "user_input",
123
- role: "user",
158
+ type: "userMessage",
124
159
  contents: props.contents,
125
160
  toJSON: () => ({
126
- type: "user_input",
161
+ type: "userMessage",
127
162
  contents: props.contents,
128
163
  }),
129
164
  };
@@ -132,12 +167,14 @@ export function createUserInputHistory(props: {
132
167
  /* -----------------------------------------------------------
133
168
  TEXT PROMPTS
134
169
  ----------------------------------------------------------- */
135
- export function createTextHistory(props: {
170
+ /**
171
+ * @internal
172
+ */
173
+ export function createAssistantMessageHistory(props: {
136
174
  text: string;
137
- }): AgenticaTextHistory {
138
- const prompt: IAgenticaHistoryJson.IText = {
139
- type: "text",
140
- role: "assistant",
175
+ }): AgenticaAssistantMessageHistory {
176
+ const prompt: IAgenticaHistoryJson.IAssistantMessage = {
177
+ type: "assistantMessage",
141
178
  text: props.text,
142
179
  };
143
180
  return {
@@ -146,6 +183,9 @@ export function createTextHistory(props: {
146
183
  };
147
184
  }
148
185
 
186
+ /**
187
+ * @internal
188
+ */
149
189
  export function createDescribeHistory<Model extends ILlmSchema.Model>(props: {
150
190
  executes: AgenticaExecuteHistory<Model>[];
151
191
  text: string;
@@ -165,6 +205,9 @@ export function createDescribeHistory<Model extends ILlmSchema.Model>(props: {
165
205
  /* -----------------------------------------------------------
166
206
  FUNCTION CALLING PROMPTS
167
207
  ----------------------------------------------------------- */
208
+ /**
209
+ * @internal
210
+ */
168
211
  export function createSelectHistory<Model extends ILlmSchema.Model>(props: {
169
212
  id: string;
170
213
  selections: AgenticaOperationSelection<Model>[];
@@ -181,6 +224,9 @@ export function createSelectHistory<Model extends ILlmSchema.Model>(props: {
181
224
  };
182
225
  }
183
226
 
227
+ /**
228
+ * @internal
229
+ */
184
230
  export function createCancelHistory<Model extends ILlmSchema.Model>(props: {
185
231
  id: string;
186
232
  selections: AgenticaOperationSelection<Model>[];
@@ -197,6 +243,9 @@ export function createCancelHistory<Model extends ILlmSchema.Model>(props: {
197
243
  };
198
244
  }
199
245
 
246
+ /**
247
+ * @internal
248
+ */
200
249
  export function createExecuteHistory<
201
250
  Model extends ILlmSchema.Model,
202
251
  >(props: {
@@ -1,4 +1,3 @@
1
- import type { Client } from "@modelcontextprotocol/sdk/client/index.d.ts";
2
1
  import type { ILlmSchema, IMcpLlmApplication, IMcpTool } from "@samchon/openapi";
3
2
 
4
3
  import { McpLlm } from "@samchon/openapi";
@@ -23,8 +22,11 @@ import type { IAgenticaController } from "../structures/IAgenticaController";
23
22
  */
24
23
  export async function assertMcpController<Model extends ILlmSchema.Model>(props: {
25
24
  name: string;
26
- client: Client;
27
25
  model: Model;
26
+ // @ts-ignore Type checking only when `@modelcontextprotocol/sdk` is installed.
27
+ // This strategy is useful for someone who does not need MCP,
28
+ // for someone who has not installed `@modelcontextprotocol/sdk`.
29
+ client: import("@modelcontextprotocol/sdk/client/index.d.ts").Client;
28
30
  options?: Partial<IMcpLlmApplication.IOptions<Model>>;
29
31
  }): Promise<IAgenticaController.IMcp<Model>> {
30
32
  // for peerDependencies
@@ -0,0 +1,7 @@
1
+ export * from "./assertHttpController";
2
+ export * from "./assertHttpLlmApplication"; // deprecated
3
+ export * from "./assertMcpController";
4
+ export * from "./validateHttpController"; // deprecated
5
+
6
+ export * from "./validateHttpLlmApplication";
7
+ export * from "./validateMcpController";
@@ -1,4 +1,3 @@
1
- import type { Client } from "@modelcontextprotocol/sdk/client/index.d.ts";
2
1
  import type { ILlmSchema, IMcpLlmApplication, IMcpTool, IValidation } from "@samchon/openapi";
3
2
 
4
3
  import { McpLlm } from "@samchon/openapi";
@@ -25,7 +24,10 @@ export async function validateMcpController<
25
24
  Model extends ILlmSchema.Model,
26
25
  >(props: {
27
26
  name: string;
28
- client: Client;
27
+ // @ts-ignore Type checking only when `@modelcontextprotocol/sdk` is installed.
28
+ // This strategy is useful for someone who does not need MCP,
29
+ // for someone who has not installed `@modelcontextprotocol/sdk`.
30
+ client: import("@modelcontextprotocol/sdk/client/index.d.ts").Client;
29
31
  model: Model;
30
32
  options?: Partial<IMcpLlmApplication.IOptions<Model>>;
31
33
  }): Promise<IValidation<IAgenticaController.IMcp<Model>>> {
@@ -2,7 +2,9 @@ import type { IAgenticaHistoryJson } from "../json/IAgenticaHistoryJson";
2
2
 
3
3
  import type { AgenticaHistoryBase } from "./AgenticaHistoryBase";
4
4
 
5
- export interface AgenticaTextHistory extends AgenticaHistoryBase<"text", IAgenticaHistoryJson.IText> {
6
- role: "assistant";
5
+ export interface AgenticaAssistantMessageHistory extends AgenticaHistoryBase<
6
+ "assistantMessage",
7
+ IAgenticaHistoryJson.IAssistantMessage
8
+ > {
7
9
  text: string;
8
10
  }