@agentica/core 0.44.0-dev.20260313-2 → 0.44.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 (150) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +218 -218
  3. package/lib/context/internal/__IChatInitialApplication.d.ts +1 -2
  4. package/lib/errors/AgenticaJsonParseError.js +6 -6
  5. package/lib/index.mjs +47 -1
  6. package/lib/index.mjs.map +1 -1
  7. package/lib/orchestrate/call.js +16 -16
  8. package/lib/orchestrate/initialize.js +43 -1
  9. package/lib/orchestrate/initialize.js.map +1 -1
  10. package/lib/structures/IAgenticaController.d.ts +143 -143
  11. package/lib/utils/ChatGptCompletionMessageUtil.js +6 -6
  12. package/package.json +6 -6
  13. package/prompts/cancel.md +5 -5
  14. package/prompts/common.md +3 -3
  15. package/prompts/describe.md +7 -7
  16. package/prompts/execute.md +122 -122
  17. package/prompts/initialize.md +3 -3
  18. package/prompts/json_parse_error.md +35 -35
  19. package/prompts/select.md +7 -7
  20. package/prompts/validate.md +123 -123
  21. package/prompts/validate_repeated.md +31 -31
  22. package/src/Agentica.ts +367 -367
  23. package/src/MicroAgentica.ts +357 -357
  24. package/src/constants/AgenticaConstant.ts +4 -4
  25. package/src/constants/AgenticaDefaultPrompt.ts +44 -44
  26. package/src/constants/index.ts +2 -2
  27. package/src/context/AgenticaContext.ts +136 -136
  28. package/src/context/AgenticaContextRequestResult.ts +14 -14
  29. package/src/context/AgenticaOperation.ts +73 -73
  30. package/src/context/AgenticaOperationCollection.ts +49 -49
  31. package/src/context/AgenticaOperationSelection.ts +9 -9
  32. package/src/context/AgenticaTokenUsage.ts +186 -186
  33. package/src/context/MicroAgenticaContext.ts +99 -99
  34. package/src/context/index.ts +5 -5
  35. package/src/context/internal/AgenticaOperationComposer.ts +177 -177
  36. package/src/context/internal/AgenticaTokenUsageAggregator.ts +66 -66
  37. package/src/context/internal/__IChatCancelFunctionsApplication.ts +23 -23
  38. package/src/context/internal/__IChatFunctionReference.ts +21 -21
  39. package/src/context/internal/__IChatInitialApplication.ts +13 -15
  40. package/src/context/internal/__IChatSelectFunctionsApplication.ts +24 -24
  41. package/src/context/internal/isAgenticaContext.ts +11 -11
  42. package/src/errors/AgenticaJsonParseError.ts +52 -52
  43. package/src/errors/AgenticaValidationError.ts +49 -49
  44. package/src/errors/index.ts +2 -2
  45. package/src/events/AgenticaAssistantMessageEvent.ts +12 -12
  46. package/src/events/AgenticaCallEvent.ts +27 -27
  47. package/src/events/AgenticaCancelEvent.ts +9 -9
  48. package/src/events/AgenticaDescribeEvent.ts +14 -14
  49. package/src/events/AgenticaEvent.ts +59 -59
  50. package/src/events/AgenticaEvent.type.ts +19 -19
  51. package/src/events/AgenticaEventBase.ts +18 -18
  52. package/src/events/AgenticaEventSource.ts +6 -6
  53. package/src/events/AgenticaExecuteEvent.ts +45 -45
  54. package/src/events/AgenticaInitializeEvent.ts +7 -7
  55. package/src/events/AgenticaJsonParseErrorEvent.ts +16 -16
  56. package/src/events/AgenticaRequestEvent.ts +27 -27
  57. package/src/events/AgenticaResponseEvent.ts +32 -32
  58. package/src/events/AgenticaSelectEvent.ts +11 -11
  59. package/src/events/AgenticaUserMessageEvent.ts +12 -12
  60. package/src/events/AgenticaValidateEvent.ts +32 -32
  61. package/src/events/MicroAgenticaEvent.ts +45 -45
  62. package/src/events/index.ts +15 -15
  63. package/src/factory/events.ts +357 -357
  64. package/src/factory/histories.ts +348 -348
  65. package/src/factory/index.ts +3 -3
  66. package/src/factory/operations.ts +16 -16
  67. package/src/functional/assertHttpController.ts +106 -106
  68. package/src/functional/assertHttpLlmApplication.ts +52 -52
  69. package/src/functional/assertMcpController.ts +47 -47
  70. package/src/functional/createMcpLlmApplication.ts +72 -72
  71. package/src/functional/index.ts +7 -7
  72. package/src/functional/validateHttpController.ts +113 -113
  73. package/src/functional/validateHttpLlmApplication.ts +65 -65
  74. package/src/functional/validateMcpController.ts +53 -53
  75. package/src/histories/AgenticaAssistantMessageHistory.ts +10 -10
  76. package/src/histories/AgenticaCancelHistory.ts +8 -8
  77. package/src/histories/AgenticaDescribeHistory.ts +18 -18
  78. package/src/histories/AgenticaExecuteHistory.ts +64 -64
  79. package/src/histories/AgenticaHistory.ts +28 -28
  80. package/src/histories/AgenticaHistoryBase.ts +35 -35
  81. package/src/histories/AgenticaSelectHistory.ts +8 -8
  82. package/src/histories/AgenticaSystemMessageHistory.ts +10 -10
  83. package/src/histories/AgenticaUserMessageHistory.ts +11 -11
  84. package/src/histories/MicroAgenticaHistory.ts +19 -19
  85. package/src/histories/contents/AgenticaUserMessageAudioContent.ts +21 -21
  86. package/src/histories/contents/AgenticaUserMessageContent.ts +19 -19
  87. package/src/histories/contents/AgenticaUserMessageContentBase.ts +6 -6
  88. package/src/histories/contents/AgenticaUserMessageFileContent.ts +25 -25
  89. package/src/histories/contents/AgenticaUserMessageImageContent.ts +33 -33
  90. package/src/histories/contents/AgenticaUserMessageTextContent.ts +15 -15
  91. package/src/histories/contents/index.ts +5 -5
  92. package/src/histories/index.ts +10 -10
  93. package/src/index.ts +15 -15
  94. package/src/json/IAgenticaEventJson.ts +265 -265
  95. package/src/json/IAgenticaEventJson.type.ts +19 -19
  96. package/src/json/IAgenticaHistoryJson.ts +165 -165
  97. package/src/json/IAgenticaHistoryJson.type.ts +19 -19
  98. package/src/json/IAgenticaOperationJson.ts +36 -36
  99. package/src/json/IAgenticaOperationSelectionJson.ts +26 -26
  100. package/src/json/IAgenticaTokenUsageJson.ts +107 -107
  101. package/src/json/IMicroAgenticaEventJson.ts +22 -22
  102. package/src/json/IMicroAgenticaHistoryJson.ts +25 -25
  103. package/src/json/index.ts +7 -7
  104. package/src/orchestrate/call.ts +542 -542
  105. package/src/orchestrate/cancel.ts +265 -265
  106. package/src/orchestrate/describe.ts +66 -66
  107. package/src/orchestrate/execute.ts +61 -61
  108. package/src/orchestrate/index.ts +6 -6
  109. package/src/orchestrate/initialize.ts +102 -102
  110. package/src/orchestrate/internal/cancelFunctionFromContext.ts +33 -33
  111. package/src/orchestrate/internal/selectFunctionFromContext.ts +34 -34
  112. package/src/orchestrate/select.ts +320 -320
  113. package/src/structures/IAgenticaConfig.ts +83 -83
  114. package/src/structures/IAgenticaConfigBase.ts +87 -87
  115. package/src/structures/IAgenticaController.ts +143 -143
  116. package/src/structures/IAgenticaExecutor.ts +167 -167
  117. package/src/structures/IAgenticaProps.ts +78 -78
  118. package/src/structures/IAgenticaSystemPrompt.ts +236 -236
  119. package/src/structures/IAgenticaVendor.ts +54 -54
  120. package/src/structures/IMcpTool.ts +60 -60
  121. package/src/structures/IMicroAgenticaConfig.ts +56 -56
  122. package/src/structures/IMicroAgenticaExecutor.ts +67 -67
  123. package/src/structures/IMicroAgenticaProps.ts +77 -77
  124. package/src/structures/IMicroAgenticaSystemPrompt.ts +169 -169
  125. package/src/structures/index.ts +10 -10
  126. package/src/transformers/transformHistory.ts +172 -172
  127. package/src/utils/AssistantMessageEmptyError.ts +20 -20
  128. package/src/utils/AsyncQueue.spec.ts +355 -355
  129. package/src/utils/AsyncQueue.ts +95 -95
  130. package/src/utils/ByteArrayUtil.ts +5 -5
  131. package/src/utils/ChatGptCompletionMessageUtil.spec.ts +314 -314
  132. package/src/utils/ChatGptCompletionMessageUtil.ts +210 -210
  133. package/src/utils/ChatGptCompletionStreamingUtil.spec.ts +909 -909
  134. package/src/utils/ChatGptCompletionStreamingUtil.ts +91 -91
  135. package/src/utils/ChatGptTokenUsageAggregator.spec.ts +226 -226
  136. package/src/utils/ChatGptTokenUsageAggregator.ts +57 -57
  137. package/src/utils/MPSC.spec.ts +276 -276
  138. package/src/utils/MPSC.ts +42 -42
  139. package/src/utils/Singleton.spec.ts +138 -138
  140. package/src/utils/Singleton.ts +42 -42
  141. package/src/utils/StreamUtil.spec.ts +512 -512
  142. package/src/utils/StreamUtil.ts +87 -87
  143. package/src/utils/__map_take.spec.ts +140 -140
  144. package/src/utils/__map_take.ts +13 -13
  145. package/src/utils/__retry.spec.ts +198 -198
  146. package/src/utils/__retry.ts +18 -18
  147. package/src/utils/assertExecuteFailure.ts +16 -16
  148. package/src/utils/index.ts +4 -4
  149. package/src/utils/request.ts +140 -140
  150. package/src/utils/types.ts +50 -50
@@ -1,236 +1,236 @@
1
- import type { AgenticaJsonParseErrorEvent } from "../events";
2
- import type { AgenticaValidateEvent } from "../events/AgenticaValidateEvent";
3
- import type { AgenticaExecuteHistory } from "../histories/AgenticaExecuteHistory";
4
- import type { AgenticaHistory } from "../histories/AgenticaHistory";
5
-
6
- import type { IAgenticaConfig } from "./IAgenticaConfig";
7
-
8
- /**
9
- * System prompt collection of the Agentic AI.
10
- *
11
- * `IAgenticaSystemPrompt` is a type represents a collection of system
12
- * prompts that would be used by the A.I. chatbot of {@link Agentica}.
13
- *
14
- * You can customize the system prompt by configuring the
15
- * {@link IAgenticaConfig.systemPrompt} property when creating a new
16
- * {@link Agentica} instance.
17
- *
18
- * If you don't configure any system prompts, the default system prompts
19
- * would be used which are written in the below directory as markdown
20
- * documents.
21
- *
22
- * - https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts
23
- *
24
- * @author Samchon
25
- */
26
- export interface IAgenticaSystemPrompt {
27
- /**
28
- * Common system prompt that would be used in every situation.
29
- *
30
- * This prompt establishes the foundational behavior and personality of
31
- * the AI agent across all interaction phases. It defines the agent's
32
- * core identity, communication style, and general operating principles
33
- * that remain consistent throughout the conversation flow.
34
- *
35
- * @param config Configuration of the agent
36
- * @returns The common system prompt
37
- * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/common.md
38
- */
39
- common?: (config?: IAgenticaConfig | undefined) => string;
40
-
41
- /**
42
- * Initialize system prompt.
43
- *
44
- * When the A.I. chatbot has not informed any functions to the agent
45
- * yet because the user has not implied any function calling request yet,
46
- * {@link Agentica} says that it is a circumstance that nothing has
47
- * been initialized yet.
48
- *
49
- * In that case, the `initialize` system prompt would be used. This is
50
- * the most basic prompt that simply establishes the AI as a helpful
51
- * assistant with access to supplied tools. It provides minimal guidance,
52
- * allowing the AI to respond naturally to user requests and automatically
53
- * identify when function calls are appropriate based on the available
54
- * tools and user context.
55
- *
56
- * The initialize prompt is intentionally simple and generic, serving as
57
- * a foundation for general conversation and tool usage without specific
58
- * constraints or specialized behaviors.
59
- *
60
- * @param histories Histories of the previous prompts
61
- * @returns initialize system prompt
62
- * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/initialize.md
63
- */
64
- initialize?: (histories: AgenticaHistory[]) => string;
65
-
66
- /**
67
- * Select system prompt.
68
- *
69
- * The {@link Agentica} has a process selecting some candidate
70
- * functions to call by asking to the A.I. agent with the previous
71
- * prompt histories.
72
- *
73
- * In that case, this `select` system prompt would be used. This prompt
74
- * specifically instructs the AI to use the `getApiFunctions()` tool to
75
- * select appropriate functions for the user's request. It emphasizes
76
- * the importance of analyzing function relationships and prerequisites
77
- * between functions to ensure proper execution order.
78
- *
79
- * The select prompt includes internationalization support, instructing
80
- * the AI to consider the user's language locale and translate responses
81
- * accordingly. If no suitable functions are found, the AI is allowed to
82
- * respond with its own message rather than forcing a function selection.
83
- *
84
- * Note that, the `"select"` means only the function selection. It does
85
- * not contain the filling argument or executing the function. It
86
- * literally contains only the selection process.
87
- *
88
- * @param histories Histories of the previous prompts
89
- * @returns select system prompt
90
- * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/select.md
91
- */
92
- select?: (histories: AgenticaHistory[]) => string;
93
-
94
- /**
95
- * Cancel system prompt.
96
- *
97
- * The {@link Agentica} has a process canceling some candidate
98
- * functions to call by asking to the A.I. agent with the previous
99
- * prompt histories.
100
- *
101
- * In that case, this `cancel` system prompt would be used. This prompt
102
- * provides very specific instructions for the AI to use the
103
- * `getApiFunctions()` tool to select functions that should be cancelled.
104
- *
105
- * The cancel prompt is notably strict - if the AI cannot find any
106
- * proper functions to cancel, it is explicitly instructed to remain
107
- * silent and take no action whatsoever ("don't talk, don't do anything").
108
- * This prevents unnecessary responses when cancellation is not applicable.
109
- *
110
- * @param histories Histories of the previous prompts
111
- * @returns cancel system prompt
112
- * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/cancel.md
113
- */
114
- cancel?: (histories: AgenticaHistory[]) => string;
115
-
116
- /**
117
- * Execute system prompt.
118
- *
119
- * The {@link Agentica} has a process filling the arguments of some
120
- * selected candidate functions by the LLM (Large Language Model)
121
- * function calling feature with the previous prompt histories, and
122
- * executing the arguments filled function with validation feedback.
123
- *
124
- * In that case, this `execute` system prompt would be used. This prompt
125
- * instructs the AI to use the supplied tools to assist the user, with
126
- * specific guidance on handling insufficient information scenarios.
127
- * When the AI lacks enough context to compose proper function arguments,
128
- * it is instructed to ask the user for additional information in a
129
- * concise and clear manner.
130
- *
131
- * The execute prompt also provides important context about the "tool"
132
- * role message structure, explaining that the `function` property
133
- * contains API operation metadata (schema, purpose, parameters, return
134
- * types) while the `data` property contains the actual return values
135
- * from function executions.
136
- *
137
- * @param histories Histories of the previous prompts
138
- * @returns execute system prompt
139
- * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/execute.md
140
- */
141
- execute?: (histories: AgenticaHistory[]) => string;
142
-
143
- /**
144
- * Validation feedback system prompt.
145
- *
146
- * When the AI generates function arguments that fail type validation
147
- * during the execution phase, this prompt provides the system instructions
148
- * for analyzing {@link IValidation.IFailure} results and generating
149
- * corrective feedback.
150
- *
151
- * This specialized prompt enables the AI to:
152
- * - Parse detailed validation error information from typia validation results
153
- * - Identify specific type mismatches, missing properties, and format violations
154
- * - Handle complex union type failures with discriminator property analysis
155
- * - Generate actionable correction guidance for parameter regeneration
156
- * - Distinguish between partial fixes and complete reconstruction scenarios
157
- *
158
- * The validation feedback agent acts as an intermediary between the main
159
- * AI agent and the function execution system, providing structured feedback
160
- * that helps improve function calling accuracy through iterative correction.
161
- * This is particularly valuable for complex function schemas where precise
162
- * type conformance is critical.
163
- *
164
- * Key capabilities include:
165
- * - Union type analysis with discriminator property detection
166
- * - Granular error path reporting (e.g., "input.user.profile.age")
167
- * - Format-specific guidance (UUID, email, numeric constraints)
168
- * - Complete reconstruction recommendations for incompatible values
169
- *
170
- * @props events The previous validation events containing the IValidation.IFailure
171
- * @returns validation feedback system prompt
172
- * @default Built-in validation feedback prompt optimized for typia IValidation.IFailure processing
173
- */
174
- validate?: (events: AgenticaValidateEvent[]) => string;
175
-
176
- /**
177
- * JSON parsing error system prompt.
178
- *
179
- * When the AI generates function arguments with invalid JSON syntax
180
- * that cannot be parsed by `JSON.parse()`, this prompt provides system
181
- * instructions for handling the parsing error and requesting corrected
182
- * function calls.
183
- *
184
- * This specialized prompt enables the AI to:
185
- * - Understand that the function call arguments contained malformed JSON
186
- * - Receive the specific error message from `JSON.parse()`
187
- * - Get guidance on common JSON syntax issues (trailing commas, quote problems, etc.)
188
- * - Retry the function call with properly formatted JSON arguments
189
- *
190
- * The JSON parse error prompt acts as an immediate correction mechanism
191
- * when function calling fails at the JSON parsing stage, before any
192
- * schema validation occurs. This ensures that basic JSON syntax compliance
193
- * is maintained for all function calls.
194
- *
195
- * Key features include:
196
- * - Direct error message reporting from `JSON.parse()`
197
- * - Clear identification of the problematic function call
198
- * - Specific guidance on JSON syntax requirements
199
- * - Immediate retry instruction without additional processing
200
- *
201
- * @param event The JSON parse error event containing the malformed arguments and error details
202
- * @returns JSON parse error system prompt
203
- * @default Built-in JSON parse error prompt optimized for syntax correction
204
- */
205
- jsonParseError?: (event: AgenticaJsonParseErrorEvent) => string;
206
-
207
- /**
208
- * Describe system prompt.
209
- *
210
- * The {@link Agentica} has a process describing the return values of
211
- * the executed functions by requesting to the A.I. agent with the
212
- * previous prompt histories.
213
- *
214
- * In that case, this `describe` system prompt would be used. This prompt
215
- * instructs the AI to provide detailed descriptions of function call
216
- * return values rather than brief summaries. It emphasizes comprehensive
217
- * reporting to ensure users receive thorough information about the
218
- * function execution results.
219
- *
220
- * The describe prompt specifies several formatting requirements:
221
- * - Content must be formatted in markdown
222
- * - Mermaid syntax should be utilized for diagrams when appropriate
223
- * - Images should be included using markdown image syntax
224
- * - Internationalization support with translation to user's language
225
- * locale when the description language differs from the user's language
226
- *
227
- * The prompt receives execution histories specifically, allowing the AI
228
- * to access both the function metadata and actual execution results
229
- * for comprehensive reporting.
230
- *
231
- * @param histories Histories of the previous prompts and their execution results
232
- * @returns describe system prompt
233
- * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/describe.md
234
- */
235
- describe?: (histories: AgenticaExecuteHistory[]) => string;
236
- }
1
+ import type { AgenticaJsonParseErrorEvent } from "../events";
2
+ import type { AgenticaValidateEvent } from "../events/AgenticaValidateEvent";
3
+ import type { AgenticaExecuteHistory } from "../histories/AgenticaExecuteHistory";
4
+ import type { AgenticaHistory } from "../histories/AgenticaHistory";
5
+
6
+ import type { IAgenticaConfig } from "./IAgenticaConfig";
7
+
8
+ /**
9
+ * System prompt collection of the Agentic AI.
10
+ *
11
+ * `IAgenticaSystemPrompt` is a type represents a collection of system
12
+ * prompts that would be used by the A.I. chatbot of {@link Agentica}.
13
+ *
14
+ * You can customize the system prompt by configuring the
15
+ * {@link IAgenticaConfig.systemPrompt} property when creating a new
16
+ * {@link Agentica} instance.
17
+ *
18
+ * If you don't configure any system prompts, the default system prompts
19
+ * would be used which are written in the below directory as markdown
20
+ * documents.
21
+ *
22
+ * - https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts
23
+ *
24
+ * @author Samchon
25
+ */
26
+ export interface IAgenticaSystemPrompt {
27
+ /**
28
+ * Common system prompt that would be used in every situation.
29
+ *
30
+ * This prompt establishes the foundational behavior and personality of
31
+ * the AI agent across all interaction phases. It defines the agent's
32
+ * core identity, communication style, and general operating principles
33
+ * that remain consistent throughout the conversation flow.
34
+ *
35
+ * @param config Configuration of the agent
36
+ * @returns The common system prompt
37
+ * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/common.md
38
+ */
39
+ common?: (config?: IAgenticaConfig | undefined) => string;
40
+
41
+ /**
42
+ * Initialize system prompt.
43
+ *
44
+ * When the A.I. chatbot has not informed any functions to the agent
45
+ * yet because the user has not implied any function calling request yet,
46
+ * {@link Agentica} says that it is a circumstance that nothing has
47
+ * been initialized yet.
48
+ *
49
+ * In that case, the `initialize` system prompt would be used. This is
50
+ * the most basic prompt that simply establishes the AI as a helpful
51
+ * assistant with access to supplied tools. It provides minimal guidance,
52
+ * allowing the AI to respond naturally to user requests and automatically
53
+ * identify when function calls are appropriate based on the available
54
+ * tools and user context.
55
+ *
56
+ * The initialize prompt is intentionally simple and generic, serving as
57
+ * a foundation for general conversation and tool usage without specific
58
+ * constraints or specialized behaviors.
59
+ *
60
+ * @param histories Histories of the previous prompts
61
+ * @returns initialize system prompt
62
+ * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/initialize.md
63
+ */
64
+ initialize?: (histories: AgenticaHistory[]) => string;
65
+
66
+ /**
67
+ * Select system prompt.
68
+ *
69
+ * The {@link Agentica} has a process selecting some candidate
70
+ * functions to call by asking to the A.I. agent with the previous
71
+ * prompt histories.
72
+ *
73
+ * In that case, this `select` system prompt would be used. This prompt
74
+ * specifically instructs the AI to use the `getApiFunctions()` tool to
75
+ * select appropriate functions for the user's request. It emphasizes
76
+ * the importance of analyzing function relationships and prerequisites
77
+ * between functions to ensure proper execution order.
78
+ *
79
+ * The select prompt includes internationalization support, instructing
80
+ * the AI to consider the user's language locale and translate responses
81
+ * accordingly. If no suitable functions are found, the AI is allowed to
82
+ * respond with its own message rather than forcing a function selection.
83
+ *
84
+ * Note that, the `"select"` means only the function selection. It does
85
+ * not contain the filling argument or executing the function. It
86
+ * literally contains only the selection process.
87
+ *
88
+ * @param histories Histories of the previous prompts
89
+ * @returns select system prompt
90
+ * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/select.md
91
+ */
92
+ select?: (histories: AgenticaHistory[]) => string;
93
+
94
+ /**
95
+ * Cancel system prompt.
96
+ *
97
+ * The {@link Agentica} has a process canceling some candidate
98
+ * functions to call by asking to the A.I. agent with the previous
99
+ * prompt histories.
100
+ *
101
+ * In that case, this `cancel` system prompt would be used. This prompt
102
+ * provides very specific instructions for the AI to use the
103
+ * `getApiFunctions()` tool to select functions that should be cancelled.
104
+ *
105
+ * The cancel prompt is notably strict - if the AI cannot find any
106
+ * proper functions to cancel, it is explicitly instructed to remain
107
+ * silent and take no action whatsoever ("don't talk, don't do anything").
108
+ * This prevents unnecessary responses when cancellation is not applicable.
109
+ *
110
+ * @param histories Histories of the previous prompts
111
+ * @returns cancel system prompt
112
+ * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/cancel.md
113
+ */
114
+ cancel?: (histories: AgenticaHistory[]) => string;
115
+
116
+ /**
117
+ * Execute system prompt.
118
+ *
119
+ * The {@link Agentica} has a process filling the arguments of some
120
+ * selected candidate functions by the LLM (Large Language Model)
121
+ * function calling feature with the previous prompt histories, and
122
+ * executing the arguments filled function with validation feedback.
123
+ *
124
+ * In that case, this `execute` system prompt would be used. This prompt
125
+ * instructs the AI to use the supplied tools to assist the user, with
126
+ * specific guidance on handling insufficient information scenarios.
127
+ * When the AI lacks enough context to compose proper function arguments,
128
+ * it is instructed to ask the user for additional information in a
129
+ * concise and clear manner.
130
+ *
131
+ * The execute prompt also provides important context about the "tool"
132
+ * role message structure, explaining that the `function` property
133
+ * contains API operation metadata (schema, purpose, parameters, return
134
+ * types) while the `data` property contains the actual return values
135
+ * from function executions.
136
+ *
137
+ * @param histories Histories of the previous prompts
138
+ * @returns execute system prompt
139
+ * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/execute.md
140
+ */
141
+ execute?: (histories: AgenticaHistory[]) => string;
142
+
143
+ /**
144
+ * Validation feedback system prompt.
145
+ *
146
+ * When the AI generates function arguments that fail type validation
147
+ * during the execution phase, this prompt provides the system instructions
148
+ * for analyzing {@link IValidation.IFailure} results and generating
149
+ * corrective feedback.
150
+ *
151
+ * This specialized prompt enables the AI to:
152
+ * - Parse detailed validation error information from typia validation results
153
+ * - Identify specific type mismatches, missing properties, and format violations
154
+ * - Handle complex union type failures with discriminator property analysis
155
+ * - Generate actionable correction guidance for parameter regeneration
156
+ * - Distinguish between partial fixes and complete reconstruction scenarios
157
+ *
158
+ * The validation feedback agent acts as an intermediary between the main
159
+ * AI agent and the function execution system, providing structured feedback
160
+ * that helps improve function calling accuracy through iterative correction.
161
+ * This is particularly valuable for complex function schemas where precise
162
+ * type conformance is critical.
163
+ *
164
+ * Key capabilities include:
165
+ * - Union type analysis with discriminator property detection
166
+ * - Granular error path reporting (e.g., "input.user.profile.age")
167
+ * - Format-specific guidance (UUID, email, numeric constraints)
168
+ * - Complete reconstruction recommendations for incompatible values
169
+ *
170
+ * @props events The previous validation events containing the IValidation.IFailure
171
+ * @returns validation feedback system prompt
172
+ * @default Built-in validation feedback prompt optimized for typia IValidation.IFailure processing
173
+ */
174
+ validate?: (events: AgenticaValidateEvent[]) => string;
175
+
176
+ /**
177
+ * JSON parsing error system prompt.
178
+ *
179
+ * When the AI generates function arguments with invalid JSON syntax
180
+ * that cannot be parsed by `JSON.parse()`, this prompt provides system
181
+ * instructions for handling the parsing error and requesting corrected
182
+ * function calls.
183
+ *
184
+ * This specialized prompt enables the AI to:
185
+ * - Understand that the function call arguments contained malformed JSON
186
+ * - Receive the specific error message from `JSON.parse()`
187
+ * - Get guidance on common JSON syntax issues (trailing commas, quote problems, etc.)
188
+ * - Retry the function call with properly formatted JSON arguments
189
+ *
190
+ * The JSON parse error prompt acts as an immediate correction mechanism
191
+ * when function calling fails at the JSON parsing stage, before any
192
+ * schema validation occurs. This ensures that basic JSON syntax compliance
193
+ * is maintained for all function calls.
194
+ *
195
+ * Key features include:
196
+ * - Direct error message reporting from `JSON.parse()`
197
+ * - Clear identification of the problematic function call
198
+ * - Specific guidance on JSON syntax requirements
199
+ * - Immediate retry instruction without additional processing
200
+ *
201
+ * @param event The JSON parse error event containing the malformed arguments and error details
202
+ * @returns JSON parse error system prompt
203
+ * @default Built-in JSON parse error prompt optimized for syntax correction
204
+ */
205
+ jsonParseError?: (event: AgenticaJsonParseErrorEvent) => string;
206
+
207
+ /**
208
+ * Describe system prompt.
209
+ *
210
+ * The {@link Agentica} has a process describing the return values of
211
+ * the executed functions by requesting to the A.I. agent with the
212
+ * previous prompt histories.
213
+ *
214
+ * In that case, this `describe` system prompt would be used. This prompt
215
+ * instructs the AI to provide detailed descriptions of function call
216
+ * return values rather than brief summaries. It emphasizes comprehensive
217
+ * reporting to ensure users receive thorough information about the
218
+ * function execution results.
219
+ *
220
+ * The describe prompt specifies several formatting requirements:
221
+ * - Content must be formatted in markdown
222
+ * - Mermaid syntax should be utilized for diagrams when appropriate
223
+ * - Images should be included using markdown image syntax
224
+ * - Internationalization support with translation to user's language
225
+ * locale when the description language differs from the user's language
226
+ *
227
+ * The prompt receives execution histories specifically, allowing the AI
228
+ * to access both the function metadata and actual execution results
229
+ * for comprehensive reporting.
230
+ *
231
+ * @param histories Histories of the previous prompts and their execution results
232
+ * @returns describe system prompt
233
+ * @default https://github.com/wrtnlabs/agentica/tree/main/packages/core/prompts/describe.md
234
+ */
235
+ describe?: (histories: AgenticaExecuteHistory[]) => string;
236
+ }
@@ -1,54 +1,54 @@
1
- import type OpenAI from "openai";
2
- import type { Semaphore } from "tstl";
3
-
4
- /**
5
- * LLM service vendor for Agentica Chat.
6
- *
7
- * `IAgenticaVendor` is a type represents an LLM
8
- * (Large Language Model) vendor of the {@link Agentica}.
9
- *
10
- * Currently, {@link Agentica} supports OpenAI SDK. However, it does
11
- * not mean that you can use only OpenAI's GPT model in the
12
- * {@link Agentica}. The OpenAI SDK is just a connection tool to the
13
- * LLM vendor's API, and you can use other LLM vendors by configuring
14
- * its `baseURL` and API key.
15
- *
16
- * Therefore, if you want to use another LLM vendor like Claude or
17
- * Gemini, please configure the `baseURL` to the {@link api}, and
18
- * set {@link IAgenticaController}'s schema model as "cluade" or
19
- * "gemini".
20
- *
21
- * @author Samchon
22
- */
23
- export interface IAgenticaVendor {
24
- /**
25
- * OpenAI API instance.
26
- */
27
- api: OpenAI;
28
-
29
- /**
30
- * Chat model to be used.
31
- *
32
- * `({}) & string` means to support third party hosting cloud(eg. openRouter, aws)
33
- */
34
- model: OpenAI.ChatModel | ({} & string);
35
-
36
- /**
37
- * Options for the request.
38
- */
39
- options?: OpenAI.RequestOptions | undefined;
40
-
41
- /**
42
- * Number of concurrent requests allowed.
43
- *
44
- * If you configure this property, {@link Agentica} will constrain the
45
- * number of concurrent requests to the LLM vendor. If you want to
46
- * share the semaphore instance with other agents, you can directly
47
- * assign the {@link Semaphore} instance to this property.
48
- *
49
- * Otherwise, it will not limit the number of concurrent
50
- * requests, and the {@link Agentica} will send requests
51
- * asynchronously without any limit.
52
- */
53
- semaphore?: Semaphore | number | undefined;
54
- }
1
+ import type OpenAI from "openai";
2
+ import type { Semaphore } from "tstl";
3
+
4
+ /**
5
+ * LLM service vendor for Agentica Chat.
6
+ *
7
+ * `IAgenticaVendor` is a type represents an LLM
8
+ * (Large Language Model) vendor of the {@link Agentica}.
9
+ *
10
+ * Currently, {@link Agentica} supports OpenAI SDK. However, it does
11
+ * not mean that you can use only OpenAI's GPT model in the
12
+ * {@link Agentica}. The OpenAI SDK is just a connection tool to the
13
+ * LLM vendor's API, and you can use other LLM vendors by configuring
14
+ * its `baseURL` and API key.
15
+ *
16
+ * Therefore, if you want to use another LLM vendor like Claude or
17
+ * Gemini, please configure the `baseURL` to the {@link api}, and
18
+ * set {@link IAgenticaController}'s schema model as "cluade" or
19
+ * "gemini".
20
+ *
21
+ * @author Samchon
22
+ */
23
+ export interface IAgenticaVendor {
24
+ /**
25
+ * OpenAI API instance.
26
+ */
27
+ api: OpenAI;
28
+
29
+ /**
30
+ * Chat model to be used.
31
+ *
32
+ * `({}) & string` means to support third party hosting cloud(eg. openRouter, aws)
33
+ */
34
+ model: OpenAI.ChatModel | ({} & string);
35
+
36
+ /**
37
+ * Options for the request.
38
+ */
39
+ options?: OpenAI.RequestOptions | undefined;
40
+
41
+ /**
42
+ * Number of concurrent requests allowed.
43
+ *
44
+ * If you configure this property, {@link Agentica} will constrain the
45
+ * number of concurrent requests to the LLM vendor. If you want to
46
+ * share the semaphore instance with other agents, you can directly
47
+ * assign the {@link Semaphore} instance to this property.
48
+ *
49
+ * Otherwise, it will not limit the number of concurrent
50
+ * requests, and the {@link Agentica} will send requests
51
+ * asynchronously without any limit.
52
+ */
53
+ semaphore?: Semaphore | number | undefined;
54
+ }