@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,4 +1,4 @@
1
- export namespace AgenticaConstant {
2
- export const RETRY = 3;
3
- export const ELITICISM = true;
4
- }
1
+ export namespace AgenticaConstant {
2
+ export const RETRY = 3;
3
+ export const ELITICISM = true;
4
+ }
@@ -1,44 +1,44 @@
1
- import { is_node } from "tstl";
2
-
3
- import type { IAgenticaConfig } from "../structures/IAgenticaConfig";
4
- import type { IMicroAgenticaConfig } from "../structures/IMicroAgenticaConfig";
5
- import type { IMicroAgenticaSystemPrompt } from "../structures/IMicroAgenticaSystemPrompt";
6
-
7
- import { Singleton } from "../utils/Singleton";
8
-
9
- import { AgenticaSystemPrompt } from "./AgenticaSystemPrompt";
10
-
11
- /**
12
- * @TODO maybe replace `process` property for lint pass
13
- */
14
- const getLocale = new Singleton(() =>
15
- is_node()
16
- // eslint-disable-next-line node/prefer-global/process
17
- ? (process.env.LANG?.split(".")[0] ?? "en-US")
18
- : navigator.language,
19
- );
20
-
21
- const getTimezone = new Singleton(
22
- () => Intl.DateTimeFormat().resolvedOptions().timeZone,
23
- );
24
-
25
- export function write(config?: IAgenticaConfig | IMicroAgenticaConfig): string {
26
- if (config?.systemPrompt?.common !== undefined) {
27
- return (config.systemPrompt as IMicroAgenticaSystemPrompt).common!(config as unknown as IMicroAgenticaConfig);
28
- }
29
-
30
- const locale: string = config?.locale ?? getLocale.get();
31
- const timezone: string = config?.timezone ?? getTimezone.get();
32
-
33
- return AgenticaSystemPrompt.COMMON
34
- // intended code
35
-
36
- .replace("${locale}", locale)
37
-
38
- .replace("${timezone}", timezone)
39
-
40
- .replace("${datetime}", new Date().toISOString());
41
- }
42
- export const AgenticaDefaultPrompt = {
43
- write,
44
- };
1
+ import { is_node } from "tstl";
2
+
3
+ import type { IAgenticaConfig } from "../structures/IAgenticaConfig";
4
+ import type { IMicroAgenticaConfig } from "../structures/IMicroAgenticaConfig";
5
+ import type { IMicroAgenticaSystemPrompt } from "../structures/IMicroAgenticaSystemPrompt";
6
+
7
+ import { Singleton } from "../utils/Singleton";
8
+
9
+ import { AgenticaSystemPrompt } from "./AgenticaSystemPrompt";
10
+
11
+ /**
12
+ * @TODO maybe replace `process` property for lint pass
13
+ */
14
+ const getLocale = new Singleton(() =>
15
+ is_node()
16
+ // eslint-disable-next-line node/prefer-global/process
17
+ ? (process.env.LANG?.split(".")[0] ?? "en-US")
18
+ : navigator.language,
19
+ );
20
+
21
+ const getTimezone = new Singleton(
22
+ () => Intl.DateTimeFormat().resolvedOptions().timeZone,
23
+ );
24
+
25
+ export function write(config?: IAgenticaConfig | IMicroAgenticaConfig): string {
26
+ if (config?.systemPrompt?.common !== undefined) {
27
+ return (config.systemPrompt as IMicroAgenticaSystemPrompt).common!(config as unknown as IMicroAgenticaConfig);
28
+ }
29
+
30
+ const locale: string = config?.locale ?? getLocale.get();
31
+ const timezone: string = config?.timezone ?? getTimezone.get();
32
+
33
+ return AgenticaSystemPrompt.COMMON
34
+ // intended code
35
+
36
+ .replace("${locale}", locale)
37
+
38
+ .replace("${timezone}", timezone)
39
+
40
+ .replace("${datetime}", new Date().toISOString());
41
+ }
42
+ export const AgenticaDefaultPrompt = {
43
+ write,
44
+ };
@@ -11,7 +11,7 @@ export const AgenticaSystemPrompt = {
11
11
  INITIALIZE:
12
12
  "You are a helpful assistant.\n\nUse the supplied tools to assist the user.",
13
13
  JSON_PARSE_ERROR:
14
- "# JSON Parsing Error - Function Call Arguments Invalid\n\n## 🚨 Critical Error: Invalid JSON Format\n\nThe `arguments` field in your function call contains invalid JSON syntax and cannot be parsed.\n\n### Error Message\n\nHere is the `Error.message` occurred from the `JSON.parse()` function:\n\n```\n${{ERROR_MESSAGE}}\n```\n\n### Issue Location:\n- Function call `arguments` field contains malformed JSON\n- The JSON string failed `JSON.parse()` validation\n- Function execution cannot proceed\n\n### Required Action:\n- Review the error message above and determine whether the JSON is recoverable\n- If the syntax error is minor (e.g. trailing comma, missing quote), fix it and retry\n- If the JSON is severely malformed or structurally broken, **discard the previous output entirely** and reconstruct the `arguments` from scratch based on the function's parameter schema\n- Do not attempt to patch heavily corrupted JSON — rebuilding from zero is faster and more reliable\n\n### Common JSON Syntax Requirements:\n- Use double quotes for all keys and string values\n- Remove trailing commas\n- Use lowercase `true`/`false` for booleans\n- Use lowercase `null` for null values\n- Properly escape special characters in strings\n\n**Retry the function call immediately with valid JSON.**",
14
+ "# JSON Parse Failure in Function Call Arguments\n\n## Error Report\n\nThe `arguments` field in your function call contains invalid JSON that could not be fully parsed. Below is the `IJsonParseResult.IFailure` object describing what went wrong.\n\n### Failure Details\n\n- `success`: Always `false` indicates parsing did not fully succeed.\n- `data`: Partially recovered data from the malformed JSON. May be incomplete or `undefined` if nothing could be salvaged.\n- `input`: The original raw JSON string you produced, preserved for reference.\n- `errors`: List of specific issues found during parsing.\n - `path`: Dot-notation path from root (`$input`) to the error location (e.g. `$input.user.email`).\n - `expected`: What the parser expected at that position (e.g. `quoted string`, `\":\"`, `JSON value`).\n - `description`: Human-readable explanation of what was actually found and what went wrong.\n\n```json\n${{FAILURE}}\n```\n\n## Recovery Instructions\n\n- Review each error above and determine whether the JSON is recoverable.\n- If the syntax error is minor (e.g. trailing comma, missing quote), fix it and retry.\n- If the JSON is severely malformed or structurally broken, **discard the previous output entirely** and reconstruct the `arguments` from scratch based on the function's parameter schema.\n- Do not attempt to patch heavily corrupted JSON — rebuilding from zero is faster and more reliable.\n\n## Common JSON Syntax Requirements\n\n- Use double quotes for all keys and string values.\n- Remove trailing commas.\n- Use lowercase `true`/`false` for booleans and `null` for null values.\n- Properly escape special characters in strings.\n\n**Retry the function call immediately with valid JSON.**",
15
15
  SELECT:
16
16
  "You are a helpful assistant for selecting functions to call.\n\nUse the supplied tools to select some functions of `getApiFunctions()` returned.\n\nWhen selecting functions to call, pay attention to the relationship between functions. In particular, check the prerequisites between each function.\n\nIf you can't find any proper function to select, just type your own message. By the way, when typing your own message, please consider the user's language locale code. If your message is different with the user's language, please translate it to the user's.",
17
17
  VALIDATE:
@@ -1,2 +1,2 @@
1
- export * from "./AgenticaDefaultPrompt";
2
- export * from "./AgenticaSystemPrompt";
1
+ export * from "./AgenticaDefaultPrompt";
2
+ export * from "./AgenticaSystemPrompt";
@@ -1,136 +1,136 @@
1
- import type OpenAI from "openai";
2
-
3
- import type { AgenticaEvent } from "../events/AgenticaEvent";
4
- import type { AgenticaEventSource } from "../events/AgenticaEventSource";
5
- import type { AgenticaHistory } from "../histories/AgenticaHistory";
6
- import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
7
- import type { IAgenticaConfig } from "../structures/IAgenticaConfig";
8
-
9
- import type { AgenticaContextRequestResult } from "./AgenticaContextRequestResult";
10
- import type { AgenticaOperationCollection } from "./AgenticaOperationCollection";
11
- import type { AgenticaOperationSelection } from "./AgenticaOperationSelection";
12
-
13
- /**
14
- * Context of the Agentic AI agent.
15
- *
16
- * `AgenticaContext` is a structure defining the context of the
17
- * internal agents composing the {@link Agentica}, like function
18
- * selector, executor, and describer, and so on. For example, if an
19
- * agent has been configured to utilize the OpenAI, the context will
20
- * be delivered to the below components.
21
- *
22
- * - {@link orchestrate.execute}
23
- * - {@link orchestrate.initialize}
24
- * - {@link orchestrate.select}
25
- * - {@link orchestrate.call}
26
- * - {@link orchestrate.describe}
27
- * - {@link orchestrate.cancel}
28
- *
29
- * Also, as its name is context, it contains every information that
30
- * is required to interact with the AI vendor like OpenAI. It
31
- * contains every operations for LLM function calling, and
32
- * configuration used for the agent construction. And it contains
33
- * the prompt histories, and facade controller functions for
34
- * interacting with the {@link Agentica} like {@link dispatch}.
35
- *
36
- * In such reasons, if you're planning to customize some internal
37
- * agents, or add new agents with new process routine, you have to
38
- * understand this context structure. Otherwise you don't have any
39
- * plan to customize the internal agents, this context information is
40
- * not important for you.
41
- *
42
- * @author Samchon
43
- */
44
- export interface AgenticaContext {
45
- // ----
46
- // APPLICATION
47
- // ----
48
- /**
49
- * Collection of operations.
50
- *
51
- * Collection of operations from every controllers, and their
52
- * groups composed by the divide and conquer rule for the
53
- * efficient operation selection if configured.
54
- */
55
- operations: AgenticaOperationCollection;
56
-
57
- /**
58
- * Configuration of the agent.
59
- *
60
- * Configuration of the agent, that is used when constructing the
61
- * {@link Agentica} instance.
62
- *
63
- * @todo Write detaily after supporting the agent customization feature
64
- */
65
- config: IAgenticaConfig | undefined;
66
-
67
- // ----
68
- // STATES
69
- // ----
70
- /**
71
- * Prompt histories.
72
- */
73
- histories: AgenticaHistory[];
74
-
75
- /**
76
- * Stacked operations.
77
- *
78
- * In other words, list of candidate operations for the LLM function calling.
79
- */
80
- stack: AgenticaOperationSelection[];
81
-
82
- /**
83
- * The user input history.
84
- *
85
- * The user input history written by the user through the
86
- * {@link Agentica.conversate} function.
87
- */
88
- prompt: AgenticaUserMessageHistory;
89
-
90
- /**
91
- * Abort signal.
92
- */
93
- abortSignal?: AbortSignal;
94
-
95
- /**
96
- * Whether the agent is ready.
97
- *
98
- * Returns a boolean value indicates whether the agent is ready to
99
- * perform the function calling.
100
- *
101
- * If the agent has called the {@link AgenticaContext.initialize},
102
- * it returns `true`. Otherwise the {@link initialize} has never been
103
- * called, returns `false`.
104
- */
105
- ready: () => boolean;
106
-
107
- // ----
108
- // HANDLERS
109
- // ----
110
- /**
111
- * Dispatch event.
112
- *
113
- * Dispatch event so that the agent can be handle the event
114
- * through the {@link Agentica.on} function.
115
- *
116
- * @param event Event to deliver
117
- */
118
- dispatch: (event: AgenticaEvent) => Promise<void>;
119
-
120
- /**
121
- * Request to the OpenAI server.
122
- *
123
- * @param source The source agent of the agent
124
- * @param body The request body to the OpenAI server
125
- * @returns Response from the OpenAI server
126
- */
127
- request: (
128
- source: AgenticaEventSource,
129
- body: Omit<OpenAI.ChatCompletionCreateParamsStreaming, "model" | "stream">,
130
- ) => Promise<AgenticaContextRequestResult>;
131
-
132
- /**
133
- * Initialize the agent.
134
- */
135
- initialize: () => Promise<void>;
136
- }
1
+ import type OpenAI from "openai";
2
+
3
+ import type { AgenticaEvent } from "../events/AgenticaEvent";
4
+ import type { AgenticaEventSource } from "../events/AgenticaEventSource";
5
+ import type { AgenticaHistory } from "../histories/AgenticaHistory";
6
+ import type { AgenticaUserMessageHistory } from "../histories/AgenticaUserMessageHistory";
7
+ import type { IAgenticaConfig } from "../structures/IAgenticaConfig";
8
+
9
+ import type { AgenticaContextRequestResult } from "./AgenticaContextRequestResult";
10
+ import type { AgenticaOperationCollection } from "./AgenticaOperationCollection";
11
+ import type { AgenticaOperationSelection } from "./AgenticaOperationSelection";
12
+
13
+ /**
14
+ * Context of the Agentic AI agent.
15
+ *
16
+ * `AgenticaContext` is a structure defining the context of the
17
+ * internal agents composing the {@link Agentica}, like function
18
+ * selector, executor, and describer, and so on. For example, if an
19
+ * agent has been configured to utilize the OpenAI, the context will
20
+ * be delivered to the below components.
21
+ *
22
+ * - {@link orchestrate.execute}
23
+ * - {@link orchestrate.initialize}
24
+ * - {@link orchestrate.select}
25
+ * - {@link orchestrate.call}
26
+ * - {@link orchestrate.describe}
27
+ * - {@link orchestrate.cancel}
28
+ *
29
+ * Also, as its name is context, it contains every information that
30
+ * is required to interact with the AI vendor like OpenAI. It
31
+ * contains every operations for LLM function calling, and
32
+ * configuration used for the agent construction. And it contains
33
+ * the prompt histories, and facade controller functions for
34
+ * interacting with the {@link Agentica} like {@link dispatch}.
35
+ *
36
+ * In such reasons, if you're planning to customize some internal
37
+ * agents, or add new agents with new process routine, you have to
38
+ * understand this context structure. Otherwise you don't have any
39
+ * plan to customize the internal agents, this context information is
40
+ * not important for you.
41
+ *
42
+ * @author Samchon
43
+ */
44
+ export interface AgenticaContext {
45
+ // ----
46
+ // APPLICATION
47
+ // ----
48
+ /**
49
+ * Collection of operations.
50
+ *
51
+ * Collection of operations from every controllers, and their
52
+ * groups composed by the divide and conquer rule for the
53
+ * efficient operation selection if configured.
54
+ */
55
+ operations: AgenticaOperationCollection;
56
+
57
+ /**
58
+ * Configuration of the agent.
59
+ *
60
+ * Configuration of the agent, that is used when constructing the
61
+ * {@link Agentica} instance.
62
+ *
63
+ * @todo Write detaily after supporting the agent customization feature
64
+ */
65
+ config: IAgenticaConfig | undefined;
66
+
67
+ // ----
68
+ // STATES
69
+ // ----
70
+ /**
71
+ * Prompt histories.
72
+ */
73
+ histories: AgenticaHistory[];
74
+
75
+ /**
76
+ * Stacked operations.
77
+ *
78
+ * In other words, list of candidate operations for the LLM function calling.
79
+ */
80
+ stack: AgenticaOperationSelection[];
81
+
82
+ /**
83
+ * The user input history.
84
+ *
85
+ * The user input history written by the user through the
86
+ * {@link Agentica.conversate} function.
87
+ */
88
+ prompt: AgenticaUserMessageHistory;
89
+
90
+ /**
91
+ * Abort signal.
92
+ */
93
+ abortSignal?: AbortSignal;
94
+
95
+ /**
96
+ * Whether the agent is ready.
97
+ *
98
+ * Returns a boolean value indicates whether the agent is ready to
99
+ * perform the function calling.
100
+ *
101
+ * If the agent has called the {@link AgenticaContext.initialize},
102
+ * it returns `true`. Otherwise the {@link initialize} has never been
103
+ * called, returns `false`.
104
+ */
105
+ ready: () => boolean;
106
+
107
+ // ----
108
+ // HANDLERS
109
+ // ----
110
+ /**
111
+ * Dispatch event.
112
+ *
113
+ * Dispatch event so that the agent can be handle the event
114
+ * through the {@link Agentica.on} function.
115
+ *
116
+ * @param event Event to deliver
117
+ */
118
+ dispatch: (event: AgenticaEvent) => Promise<void>;
119
+
120
+ /**
121
+ * Request to the OpenAI server.
122
+ *
123
+ * @param source The source agent of the agent
124
+ * @param body The request body to the OpenAI server
125
+ * @returns Response from the OpenAI server
126
+ */
127
+ request: (
128
+ source: AgenticaEventSource,
129
+ body: Omit<OpenAI.ChatCompletionCreateParamsStreaming, "model" | "stream">,
130
+ ) => Promise<AgenticaContextRequestResult>;
131
+
132
+ /**
133
+ * Initialize the agent.
134
+ */
135
+ initialize: () => Promise<void>;
136
+ }
@@ -1,14 +1,14 @@
1
- import type OpenAI from "openai";
2
-
3
- export type AgenticaContextRequestResult = AgenticaContextRequestResult.Stream | AgenticaContextRequestResult.NoneStream;
4
-
5
- export namespace AgenticaContextRequestResult {
6
- export interface Stream {
7
- type: "stream";
8
- value: ReadableStream<OpenAI.Chat.Completions.ChatCompletionChunk>;
9
- }
10
- export interface NoneStream {
11
- type: "none-stream";
12
- value: OpenAI.ChatCompletion;
13
- }
14
- }
1
+ import type OpenAI from "openai";
2
+
3
+ export type AgenticaContextRequestResult = AgenticaContextRequestResult.Stream | AgenticaContextRequestResult.NoneStream;
4
+
5
+ export namespace AgenticaContextRequestResult {
6
+ export interface Stream {
7
+ type: "stream";
8
+ value: ReadableStream<OpenAI.Chat.Completions.ChatCompletionChunk>;
9
+ }
10
+ export interface NoneStream {
11
+ type: "none-stream";
12
+ value: OpenAI.ChatCompletion;
13
+ }
14
+ }
@@ -1,72 +1,73 @@
1
- import type { IHttpLlmFunction, ILlmFunction, IMcpLlmFunction } from "@samchon/openapi";
2
-
3
- import type { IAgenticaOperationJson } from "../json/IAgenticaOperationJson";
4
- import type { IAgenticaController } from "../structures/IAgenticaController";
5
-
6
- /**
7
- * Operation information in the Agentica Agent.
8
- *
9
- * `AgenticaOperation` is a type represents an operation that would
10
- * be selected by the A.I. chatbot of {@link Agentica} class to
11
- * perform the LLM (Large Language Model) function calling.
12
- *
13
- * Also, it is an union type that is discriminated by the {@link protocol}
14
- * property. If the protocol value is `http`, it means that the HTTP API
15
- * operation would be called by the A.I. chatbot. Otherwise, if the protocol
16
- * value is `class`, it means that the operation has come from a
17
- * TypeScript class.
18
- *
19
- * @author Samchon
20
- */
21
- export type AgenticaOperation =
22
- | AgenticaOperation.Class
23
- | AgenticaOperation.Http
24
- | AgenticaOperation.Mcp;
25
- export namespace AgenticaOperation {
26
- export type Class = Base<
27
- "class",
28
- IAgenticaController.IClass,
29
- ILlmFunction
30
- >;
31
- export type Http = Base<
32
- "http",
33
- IAgenticaController.IHttp,
34
- IHttpLlmFunction
35
- >;
36
- export type Mcp = Base<
37
- "mcp",
38
- IAgenticaController.IMcp,
39
- IMcpLlmFunction
40
- >;
41
-
42
- interface Base<
43
- Protocol extends "http" | "class" | "mcp",
44
- Controller extends object,
45
- Function extends object,
46
- > {
47
- /**
48
- * Protocol discriminator.
49
- */
50
- protocol: Protocol;
51
-
52
- /**
53
- * Belonged controller of the target function.
54
- */
55
- controller: Controller;
56
-
57
- /**
58
- * Target function to call.
59
- */
60
- function: Function;
61
-
62
- /**
63
- * Identifier name.
64
- */
65
- name: string;
66
-
67
- /**
68
- * Convert to primitive JSON object.
69
- */
70
- toJSON: () => IAgenticaOperationJson;
71
- }
72
- }
1
+ import type { IHttpLlmFunction } from "@typia/interface";
2
+ import type { ILlmFunction } from "typia";
3
+
4
+ import type { IAgenticaOperationJson } from "../json/IAgenticaOperationJson";
5
+ import type { IAgenticaController } from "../structures/IAgenticaController";
6
+
7
+ /**
8
+ * Operation information in the Agentica Agent.
9
+ *
10
+ * `AgenticaOperation` is a type represents an operation that would
11
+ * be selected by the A.I. chatbot of {@link Agentica} class to
12
+ * perform the LLM (Large Language Model) function calling.
13
+ *
14
+ * Also, it is an union type that is discriminated by the {@link protocol}
15
+ * property. If the protocol value is `http`, it means that the HTTP API
16
+ * operation would be called by the A.I. chatbot. Otherwise, if the protocol
17
+ * value is `class`, it means that the operation has come from a
18
+ * TypeScript class.
19
+ *
20
+ * @author Samchon
21
+ */
22
+ export type AgenticaOperation
23
+ = | AgenticaOperation.Class
24
+ | AgenticaOperation.Http
25
+ | AgenticaOperation.Mcp;
26
+ export namespace AgenticaOperation {
27
+ export type Class = Base<
28
+ "class",
29
+ IAgenticaController.IClass,
30
+ ILlmFunction
31
+ >;
32
+ export type Http = Base<
33
+ "http",
34
+ IAgenticaController.IHttp,
35
+ IHttpLlmFunction
36
+ >;
37
+ export type Mcp = Base<
38
+ "mcp",
39
+ IAgenticaController.IMcp,
40
+ ILlmFunction
41
+ >;
42
+
43
+ interface Base<
44
+ Protocol extends "http" | "class" | "mcp",
45
+ Controller extends object,
46
+ Function extends object,
47
+ > {
48
+ /**
49
+ * Protocol discriminator.
50
+ */
51
+ protocol: Protocol;
52
+
53
+ /**
54
+ * Belonged controller of the target function.
55
+ */
56
+ controller: Controller;
57
+
58
+ /**
59
+ * Target function to call.
60
+ */
61
+ function: Function;
62
+
63
+ /**
64
+ * Identifier name.
65
+ */
66
+ name: string;
67
+
68
+ /**
69
+ * Convert to primitive JSON object.
70
+ */
71
+ toJSON: () => IAgenticaOperationJson;
72
+ }
73
+ }