@agentica/core 0.43.2 → 0.44.0-dev.20260313

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 -18948
  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 -350
  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 -462
@@ -1,167 +1,167 @@
1
- import type { AgenticaContext } from "../context/AgenticaContext";
2
- import type { AgenticaOperation } from "../context/AgenticaOperation";
3
- import type { AgenticaExecuteEvent } from "../events/AgenticaExecuteEvent";
4
-
5
- /**
6
- * Executor of the Agentic AI.
7
- *
8
- * `IAgenticaExecutor` represents an executor of the {@link Agentica},
9
- * composing its internal agents to accomplish the Agentic AI through
10
- * the LLM (Large Language Model) function calling.
11
- *
12
- * You can customize one of these internal agents by configuring
13
- * properties of the `IAgenticaExecutor` type, and assigning it to the
14
- * {@link IAgenticaConfig.executor} property. If you set the
15
- * {@link initialize} as `null` value, the {@link Agentica} will skip
16
- * the initialize process and directly go to the {@link select} process.
17
- *
18
- * By the way, when customizing the executor member, it would better to
19
- * reference the guide documents of `@agentica/core`, and internal
20
- * agents' implementation code. It's because if you take some mistake on
21
- * the executor logic, it can entirely break the {@link Agentica}'s
22
- * operation.
23
- *
24
- * @reference https://wrtnlabs.io/agentica/docs/concepts/function-calling/#orchestration-strategy
25
- * @reference https://github.com/wrtnlabs/agentica/blob/main/packages/core/src/orchestrate/execute.ts
26
- * @author Samchon
27
- */
28
- export interface IAgenticaExecutor {
29
- /**
30
- * Initializer agent listing up functions.
31
- *
32
- * `initialize` agent is the first agent that {@link Agentica}
33
- * would meet which judges whether the user's conversation implies
34
- * to call some function or not.
35
- *
36
- * And if the `initialize` agent judges the user's conversation
37
- * implies to call some function, the `initialize` agent will
38
- * call the {@link AgenticaContext.initialize} function, and
39
- * inform every functions enrolled in the {@link IAgenticaController}
40
- * to the AI agent. And then, the `initialize` agent will not never
41
- * be called again, and let {@link Agentica} to go to the next
42
- * {@link select} agent.
43
- *
44
- * Otherwise the user's conversation does not imply the request of
45
- * function calling, it would just work like plain chatbot, and just
46
- * conversate with the user.
47
- *
48
- * By the way, if you wanna skip the `initialize` agent, you can
49
- * do it by configuring the {@link IAgenticaExecutor.initialize} as
50
- * `undefined`, `false` or `null` value. In that case, the `initialize`
51
- * agent will never be called, and {@link Agentica} just starts from the
52
- * {@link select} agent.
53
- *
54
- * @param ctx Context of the agent
55
- * @returns List of prompts generated by the initializer
56
- * @default false
57
- */
58
- initialize:
59
- | boolean
60
- | null
61
- | ((ctx: AgenticaContext) => Promise<void>);
62
-
63
- /**
64
- * Function selector agent.
65
- *
66
- * `Select` agent finds candidate functions to call from the
67
- * conversation context with the user. And the candidate functions
68
- * would be enrolled to the {@link AgenticaContext.stack}, and the
69
- * next {@link call} agent will perform the LLM (Large Language Model)
70
- * function calling.
71
- *
72
- * Note that, the `select` agent does not perform the LLM function
73
- * calling. It ends with just finding the candidate functions to call.
74
- *
75
- * By the way, if the `select` agent can't specify a certain function
76
- * to call due to lack of conversation context or homogeneity between
77
- * heterogeneous functions, how `select` agent works? In that case,
78
- * `select` agent it will just enroll every candidate functions to
79
- * the stack, and let the next {@link call} agent to determine the
80
- * proper function to call. And then let {@link cancel} agent to erase
81
- * the other candidate functions from the stack.
82
- *
83
- * Additionally, if `select` agent could not find any candidate
84
- * function from the conversation context with user, it would just
85
- * act like plain chatbot conversating with the user.
86
- *
87
- * @param ctx Context of the agent
88
- * @returns List of prompts generated by the selector
89
- */
90
- select: (ctx: AgenticaContext) => Promise<void>;
91
-
92
- /**
93
- * Function caller agent.
94
- *
95
- * `Call` agent performs the LLM (Large Language Model) function
96
- * calling from the candidate functions enrolled in the
97
- * {@link AgenticaContext.stack}. And the scope of function calling
98
- * is, not only just arguments filling, but also actual executing
99
- * the function and returning the result.
100
- *
101
- * By the way, conversation context with user can be not enough to
102
- * filling the arguments of the candidate functions. In that case,
103
- * the `call` agent will ask the user to fill the missing arguments.
104
- *
105
- * Otherwise the cpnversation context is enough, so that succeeded
106
- * to call some candidate functions, the `call` agent will step to
107
- * the {@link describe} agent to explain the result of the function
108
- * calling to the user as markdown content.
109
- *
110
- * @param ctx Context of the agent
111
- * @param operation Lit of candidate operations to call
112
- * @returns List of prompts generated by the caller
113
- * @warning Recommend not to customize, due to its validation
114
- * feedback strategy is working very well, and the `call`
115
- * agent is the most general topic which can be universally
116
- * applied to all domain fields.
117
- */
118
- call: (
119
- ctx: AgenticaContext,
120
- operations: AgenticaOperation[],
121
- ) => Promise<AgenticaExecuteEvent[]>;
122
-
123
- /**
124
- * Describer agent of the function calling result.
125
- *
126
- * `Describe` agent explains the results of the function callings
127
- * to the user as markdown content.
128
- *
129
- * If you configure this property as `false` or `null`, the describer
130
- * agent will never be used.
131
- *
132
- * @param ctx Context of the agent
133
- * @param executes List of function calling results
134
- * @returns List of prompts generated by the describer
135
- */
136
- describe:
137
- | boolean
138
- | null
139
- | ((
140
- ctx: AgenticaContext,
141
- executes: AgenticaExecuteEvent[],
142
- ) => Promise<void>);
143
-
144
- /**
145
- * Function canceler agent.
146
- *
147
- * `Cancel` agent erases the candidate functions from the
148
- * {@link AgenticaContext.stack} by analyzing the conversation
149
- * context with the user.
150
- *
151
- * For reference, the first reason of the cancelation is explicit
152
- * order from user to the previous requested function. For example,
153
- * user had requested to send an email to the agent, but suddenly
154
- * user says to cancel the email sending.
155
- *
156
- * The seconod reason n of the cancelation is the multiple candidate
157
- * functions had been selected at once by the {@link select} agent
158
- * due to lack of conversation context or homogeneity between the
159
- * heterogeneous functions. And in the multiple candidate functions,
160
- * one thing is clearly determined by the {@link call} agent, so that
161
- * drop the other candidate functions.
162
- *
163
- * @param ctx Context of the agent
164
- * @returns List of prompts generated by the canceler
165
- */
166
- cancel: (ctx: AgenticaContext) => Promise<void>;
167
- }
1
+ import type { AgenticaContext } from "../context/AgenticaContext";
2
+ import type { AgenticaOperation } from "../context/AgenticaOperation";
3
+ import type { AgenticaExecuteEvent } from "../events/AgenticaExecuteEvent";
4
+
5
+ /**
6
+ * Executor of the Agentic AI.
7
+ *
8
+ * `IAgenticaExecutor` represents an executor of the {@link Agentica},
9
+ * composing its internal agents to accomplish the Agentic AI through
10
+ * the LLM (Large Language Model) function calling.
11
+ *
12
+ * You can customize one of these internal agents by configuring
13
+ * properties of the `IAgenticaExecutor` type, and assigning it to the
14
+ * {@link IAgenticaConfig.executor} property. If you set the
15
+ * {@link initialize} as `null` value, the {@link Agentica} will skip
16
+ * the initialize process and directly go to the {@link select} process.
17
+ *
18
+ * By the way, when customizing the executor member, it would better to
19
+ * reference the guide documents of `@agentica/core`, and internal
20
+ * agents' implementation code. It's because if you take some mistake on
21
+ * the executor logic, it can entirely break the {@link Agentica}'s
22
+ * operation.
23
+ *
24
+ * @reference https://wrtnlabs.io/agentica/docs/concepts/function-calling/#orchestration-strategy
25
+ * @reference https://github.com/wrtnlabs/agentica/blob/main/packages/core/src/orchestrate/execute.ts
26
+ * @author Samchon
27
+ */
28
+ export interface IAgenticaExecutor {
29
+ /**
30
+ * Initializer agent listing up functions.
31
+ *
32
+ * `initialize` agent is the first agent that {@link Agentica}
33
+ * would meet which judges whether the user's conversation implies
34
+ * to call some function or not.
35
+ *
36
+ * And if the `initialize` agent judges the user's conversation
37
+ * implies to call some function, the `initialize` agent will
38
+ * call the {@link AgenticaContext.initialize} function, and
39
+ * inform every functions enrolled in the {@link IAgenticaController}
40
+ * to the AI agent. And then, the `initialize` agent will not never
41
+ * be called again, and let {@link Agentica} to go to the next
42
+ * {@link select} agent.
43
+ *
44
+ * Otherwise the user's conversation does not imply the request of
45
+ * function calling, it would just work like plain chatbot, and just
46
+ * conversate with the user.
47
+ *
48
+ * By the way, if you wanna skip the `initialize` agent, you can
49
+ * do it by configuring the {@link IAgenticaExecutor.initialize} as
50
+ * `undefined`, `false` or `null` value. In that case, the `initialize`
51
+ * agent will never be called, and {@link Agentica} just starts from the
52
+ * {@link select} agent.
53
+ *
54
+ * @param ctx Context of the agent
55
+ * @returns List of prompts generated by the initializer
56
+ * @default false
57
+ */
58
+ initialize:
59
+ | boolean
60
+ | null
61
+ | ((ctx: AgenticaContext) => Promise<void>);
62
+
63
+ /**
64
+ * Function selector agent.
65
+ *
66
+ * `Select` agent finds candidate functions to call from the
67
+ * conversation context with the user. And the candidate functions
68
+ * would be enrolled to the {@link AgenticaContext.stack}, and the
69
+ * next {@link call} agent will perform the LLM (Large Language Model)
70
+ * function calling.
71
+ *
72
+ * Note that, the `select` agent does not perform the LLM function
73
+ * calling. It ends with just finding the candidate functions to call.
74
+ *
75
+ * By the way, if the `select` agent can't specify a certain function
76
+ * to call due to lack of conversation context or homogeneity between
77
+ * heterogeneous functions, how `select` agent works? In that case,
78
+ * `select` agent it will just enroll every candidate functions to
79
+ * the stack, and let the next {@link call} agent to determine the
80
+ * proper function to call. And then let {@link cancel} agent to erase
81
+ * the other candidate functions from the stack.
82
+ *
83
+ * Additionally, if `select` agent could not find any candidate
84
+ * function from the conversation context with user, it would just
85
+ * act like plain chatbot conversating with the user.
86
+ *
87
+ * @param ctx Context of the agent
88
+ * @returns List of prompts generated by the selector
89
+ */
90
+ select: (ctx: AgenticaContext) => Promise<void>;
91
+
92
+ /**
93
+ * Function caller agent.
94
+ *
95
+ * `Call` agent performs the LLM (Large Language Model) function
96
+ * calling from the candidate functions enrolled in the
97
+ * {@link AgenticaContext.stack}. And the scope of function calling
98
+ * is, not only just arguments filling, but also actual executing
99
+ * the function and returning the result.
100
+ *
101
+ * By the way, conversation context with user can be not enough to
102
+ * filling the arguments of the candidate functions. In that case,
103
+ * the `call` agent will ask the user to fill the missing arguments.
104
+ *
105
+ * Otherwise the cpnversation context is enough, so that succeeded
106
+ * to call some candidate functions, the `call` agent will step to
107
+ * the {@link describe} agent to explain the result of the function
108
+ * calling to the user as markdown content.
109
+ *
110
+ * @param ctx Context of the agent
111
+ * @param operation Lit of candidate operations to call
112
+ * @returns List of prompts generated by the caller
113
+ * @warning Recommend not to customize, due to its validation
114
+ * feedback strategy is working very well, and the `call`
115
+ * agent is the most general topic which can be universally
116
+ * applied to all domain fields.
117
+ */
118
+ call: (
119
+ ctx: AgenticaContext,
120
+ operations: AgenticaOperation[],
121
+ ) => Promise<AgenticaExecuteEvent[]>;
122
+
123
+ /**
124
+ * Describer agent of the function calling result.
125
+ *
126
+ * `Describe` agent explains the results of the function callings
127
+ * to the user as markdown content.
128
+ *
129
+ * If you configure this property as `false` or `null`, the describer
130
+ * agent will never be used.
131
+ *
132
+ * @param ctx Context of the agent
133
+ * @param executes List of function calling results
134
+ * @returns List of prompts generated by the describer
135
+ */
136
+ describe:
137
+ | boolean
138
+ | null
139
+ | ((
140
+ ctx: AgenticaContext,
141
+ executes: AgenticaExecuteEvent[],
142
+ ) => Promise<void>);
143
+
144
+ /**
145
+ * Function canceler agent.
146
+ *
147
+ * `Cancel` agent erases the candidate functions from the
148
+ * {@link AgenticaContext.stack} by analyzing the conversation
149
+ * context with the user.
150
+ *
151
+ * For reference, the first reason of the cancelation is explicit
152
+ * order from user to the previous requested function. For example,
153
+ * user had requested to send an email to the agent, but suddenly
154
+ * user says to cancel the email sending.
155
+ *
156
+ * The seconod reason n of the cancelation is the multiple candidate
157
+ * functions had been selected at once by the {@link select} agent
158
+ * due to lack of conversation context or homogeneity between the
159
+ * heterogeneous functions. And in the multiple candidate functions,
160
+ * one thing is clearly determined by the {@link call} agent, so that
161
+ * drop the other candidate functions.
162
+ *
163
+ * @param ctx Context of the agent
164
+ * @returns List of prompts generated by the canceler
165
+ */
166
+ cancel: (ctx: AgenticaContext) => Promise<void>;
167
+ }
@@ -1,78 +1,78 @@
1
- import type { AgenticaTokenUsage } from "../context/AgenticaTokenUsage";
2
- import type { IAgenticaHistoryJson } from "../json/IAgenticaHistoryJson";
3
- import type { IAgenticaTokenUsageJson } from "../json/IAgenticaTokenUsageJson";
4
-
5
- import type { IAgenticaConfig } from "./IAgenticaConfig";
6
- import type { IAgenticaController } from "./IAgenticaController";
7
- import type { IAgenticaVendor } from "./IAgenticaVendor";
8
-
9
- /**
10
- * Properties of the Agentica Agent.
11
- *
12
- * `IAgenticaProps` is an interface that defines the properties
13
- * of the {@link Agentica.constructor}. In the `IAgenticaProps`,
14
- * there're everything to prepare to create a Super A.I. chatbot
15
- * performing the LLM (Large Language Model) function calling.
16
- *
17
- * At first, you have to specify the LLM service {@link vendor} like
18
- * OpenAI with its API key and client API. And then, you have to define
19
- * the {@link controllers} serving the functions to call. The controllers
20
- * are separated by two protocols; HTTP API and TypeScript class. At last,
21
- * you can {@link config configure} the agent by setting the locale, timezone,
22
- * and some of system prompts.
23
- *
24
- * Additionally, if you want to start from the previous A.I. chatbot
25
- * session, you can accomplish it by assigning the previous prompt
26
- * histories to the {@link histories} property.
27
- *
28
- * @author Samchon
29
- */
30
- export interface IAgenticaProps {
31
- /**
32
- * LLM service vendor.
33
- */
34
- vendor: IAgenticaVendor;
35
-
36
- /**
37
- * Controllers serving functions to call.
38
- */
39
- controllers: IAgenticaController[];
40
-
41
- /**
42
- * Configuration of agent.
43
- *
44
- * Configuration of A.I. chatbot agent including the user's locale,
45
- * timezone, and some of system prompts. Also, you can affect to the
46
- * LLM function selecting/calling logic by configuring additional
47
- * properties.
48
- *
49
- * If you don't configure this property, these values would be default.
50
- *
51
- * - `locale`: your system's locale and timezone
52
- * - `timezone`: your system's timezone
53
- * - `systemPrompt`: default prompts written in markdown
54
- * - https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts
55
- */
56
- config?: IAgenticaConfig;
57
-
58
- /**
59
- * Prompt histories.
60
- *
61
- * If you're starting the conversation from an existing session,
62
- * assign the previouis prompt histories to this property.
63
- */
64
- histories?: IAgenticaHistoryJson[];
65
-
66
- /**
67
- * Token usage information.
68
- *
69
- * You can start token usage tracing by assigning this property.
70
- *
71
- * If you assign {@link IAgenticaTokenUsageJson} value, the
72
- * token usage tracing would be from the value. Otherwise you
73
- * assign the {@link AgenticaTokenUsage} typed instance, the
74
- * tracing would be binded to the instance.
75
- */
76
- tokenUsage?: IAgenticaTokenUsageJson | AgenticaTokenUsage | undefined;
77
-
78
- }
1
+ import type { AgenticaTokenUsage } from "../context/AgenticaTokenUsage";
2
+ import type { IAgenticaHistoryJson } from "../json/IAgenticaHistoryJson";
3
+ import type { IAgenticaTokenUsageJson } from "../json/IAgenticaTokenUsageJson";
4
+
5
+ import type { IAgenticaConfig } from "./IAgenticaConfig";
6
+ import type { IAgenticaController } from "./IAgenticaController";
7
+ import type { IAgenticaVendor } from "./IAgenticaVendor";
8
+
9
+ /**
10
+ * Properties of the Agentica Agent.
11
+ *
12
+ * `IAgenticaProps` is an interface that defines the properties
13
+ * of the {@link Agentica.constructor}. In the `IAgenticaProps`,
14
+ * there're everything to prepare to create a Super A.I. chatbot
15
+ * performing the LLM (Large Language Model) function calling.
16
+ *
17
+ * At first, you have to specify the LLM service {@link vendor} like
18
+ * OpenAI with its API key and client API. And then, you have to define
19
+ * the {@link controllers} serving the functions to call. The controllers
20
+ * are separated by two protocols; HTTP API and TypeScript class. At last,
21
+ * you can {@link config configure} the agent by setting the locale, timezone,
22
+ * and some of system prompts.
23
+ *
24
+ * Additionally, if you want to start from the previous A.I. chatbot
25
+ * session, you can accomplish it by assigning the previous prompt
26
+ * histories to the {@link histories} property.
27
+ *
28
+ * @author Samchon
29
+ */
30
+ export interface IAgenticaProps {
31
+ /**
32
+ * LLM service vendor.
33
+ */
34
+ vendor: IAgenticaVendor;
35
+
36
+ /**
37
+ * Controllers serving functions to call.
38
+ */
39
+ controllers: IAgenticaController[];
40
+
41
+ /**
42
+ * Configuration of agent.
43
+ *
44
+ * Configuration of A.I. chatbot agent including the user's locale,
45
+ * timezone, and some of system prompts. Also, you can affect to the
46
+ * LLM function selecting/calling logic by configuring additional
47
+ * properties.
48
+ *
49
+ * If you don't configure this property, these values would be default.
50
+ *
51
+ * - `locale`: your system's locale and timezone
52
+ * - `timezone`: your system's timezone
53
+ * - `systemPrompt`: default prompts written in markdown
54
+ * - https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts
55
+ */
56
+ config?: IAgenticaConfig;
57
+
58
+ /**
59
+ * Prompt histories.
60
+ *
61
+ * If you're starting the conversation from an existing session,
62
+ * assign the previouis prompt histories to this property.
63
+ */
64
+ histories?: IAgenticaHistoryJson[];
65
+
66
+ /**
67
+ * Token usage information.
68
+ *
69
+ * You can start token usage tracing by assigning this property.
70
+ *
71
+ * If you assign {@link IAgenticaTokenUsageJson} value, the
72
+ * token usage tracing would be from the value. Otherwise you
73
+ * assign the {@link AgenticaTokenUsage} typed instance, the
74
+ * tracing would be binded to the instance.
75
+ */
76
+ tokenUsage?: IAgenticaTokenUsageJson | AgenticaTokenUsage | undefined;
77
+
78
+ }