@agentica/core 0.43.3 → 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.
- package/LICENSE +21 -21
- package/README.md +218 -218
- package/lib/constants/AgenticaSystemPrompt.js +1 -1
- package/lib/constants/AgenticaSystemPrompt.js.map +1 -1
- package/lib/context/AgenticaOperation.d.ts +3 -2
- package/lib/context/internal/AgenticaOperationComposer.js.map +1 -1
- package/lib/context/internal/AgenticaTokenUsageAggregator.js.map +1 -1
- package/lib/context/internal/__IChatInitialApplication.d.ts +1 -1
- package/lib/errors/AgenticaJsonParseError.d.ts +5 -8
- package/lib/errors/AgenticaJsonParseError.js +11 -6
- package/lib/errors/AgenticaJsonParseError.js.map +1 -1
- package/lib/errors/AgenticaValidationError.d.ts +1 -1
- package/lib/events/AgenticaExecuteEvent.d.ts +1 -1
- package/lib/events/AgenticaJsonParseErrorEvent.d.ts +2 -2
- package/lib/factory/events.d.ts +2 -3
- package/lib/factory/events.js +1 -2
- package/lib/factory/events.js.map +1 -1
- package/lib/functional/assertHttpController.d.ts +2 -3
- package/lib/functional/assertHttpController.js +3939 -2656
- package/lib/functional/assertHttpController.js.map +1 -1
- package/lib/functional/assertHttpLlmApplication.d.ts +3 -3
- package/lib/functional/assertHttpLlmApplication.js +3939 -2656
- package/lib/functional/assertHttpLlmApplication.js.map +1 -1
- package/lib/functional/assertMcpController.d.ts +2 -2
- package/lib/functional/assertMcpController.js +202 -629
- package/lib/functional/assertMcpController.js.map +1 -1
- package/lib/functional/createMcpLlmApplication.d.ts +6 -0
- package/lib/functional/createMcpLlmApplication.js +56 -0
- package/lib/functional/createMcpLlmApplication.js.map +1 -0
- package/lib/functional/validateHttpController.d.ts +3 -3
- package/lib/functional/validateHttpController.js +3367 -2268
- package/lib/functional/validateHttpController.js.map +1 -1
- package/lib/functional/validateHttpLlmApplication.d.ts +3 -4
- package/lib/functional/validateHttpLlmApplication.js +3367 -2268
- package/lib/functional/validateHttpLlmApplication.js.map +1 -1
- package/lib/functional/validateMcpController.d.ts +2 -2
- package/lib/functional/validateMcpController.js +388 -1161
- package/lib/functional/validateMcpController.js.map +1 -1
- package/lib/histories/AgenticaExecuteHistory.d.ts +1 -1
- package/lib/index.mjs +21256 -18946
- package/lib/index.mjs.map +1 -1
- package/lib/orchestrate/call.js +43 -56
- package/lib/orchestrate/call.js.map +1 -1
- package/lib/orchestrate/cancel.js +9 -66
- package/lib/orchestrate/cancel.js.map +1 -1
- package/lib/orchestrate/initialize.js +4 -947
- package/lib/orchestrate/initialize.js.map +1 -1
- package/lib/orchestrate/select.js +11 -68
- package/lib/orchestrate/select.js.map +1 -1
- package/lib/structures/IAgenticaController.d.ts +143 -151
- package/lib/structures/IMcpTool.d.ts +52 -0
- package/lib/structures/IMcpTool.js +3 -0
- package/lib/structures/IMcpTool.js.map +1 -0
- package/lib/utils/ChatGptCompletionMessageUtil.js +16 -5
- package/lib/utils/ChatGptCompletionMessageUtil.js.map +1 -1
- package/lib/utils/ChatGptCompletionMessageUtil.spec.js +0 -5
- package/lib/utils/ChatGptCompletionMessageUtil.spec.js.map +1 -1
- package/package.json +7 -9
- package/prompts/cancel.md +5 -5
- package/prompts/common.md +3 -3
- package/prompts/describe.md +7 -7
- package/prompts/execute.md +122 -122
- package/prompts/initialize.md +3 -3
- package/prompts/json_parse_error.md +35 -33
- package/prompts/select.md +7 -7
- package/prompts/validate.md +123 -123
- package/prompts/validate_repeated.md +31 -31
- package/src/Agentica.ts +367 -367
- package/src/MicroAgentica.ts +357 -357
- package/src/constants/AgenticaConstant.ts +4 -4
- package/src/constants/AgenticaDefaultPrompt.ts +44 -44
- package/src/constants/AgenticaSystemPrompt.ts +1 -1
- package/src/constants/index.ts +2 -2
- package/src/context/AgenticaContext.ts +136 -136
- package/src/context/AgenticaContextRequestResult.ts +14 -14
- package/src/context/AgenticaOperation.ts +73 -72
- package/src/context/AgenticaOperationCollection.ts +49 -49
- package/src/context/AgenticaOperationSelection.ts +9 -9
- package/src/context/AgenticaTokenUsage.ts +186 -186
- package/src/context/MicroAgenticaContext.ts +99 -99
- package/src/context/index.ts +5 -5
- package/src/context/internal/AgenticaOperationComposer.ts +177 -177
- package/src/context/internal/AgenticaTokenUsageAggregator.ts +66 -66
- package/src/context/internal/__IChatCancelFunctionsApplication.ts +23 -23
- package/src/context/internal/__IChatFunctionReference.ts +21 -21
- package/src/context/internal/__IChatInitialApplication.ts +15 -15
- package/src/context/internal/__IChatSelectFunctionsApplication.ts +24 -24
- package/src/context/internal/isAgenticaContext.ts +11 -11
- package/src/errors/AgenticaJsonParseError.ts +52 -47
- package/src/errors/AgenticaValidationError.ts +49 -49
- package/src/errors/index.ts +2 -2
- package/src/events/AgenticaAssistantMessageEvent.ts +12 -12
- package/src/events/AgenticaCallEvent.ts +27 -27
- package/src/events/AgenticaCancelEvent.ts +9 -9
- package/src/events/AgenticaDescribeEvent.ts +14 -14
- package/src/events/AgenticaEvent.ts +59 -59
- package/src/events/AgenticaEvent.type.ts +19 -19
- package/src/events/AgenticaEventBase.ts +18 -18
- package/src/events/AgenticaEventSource.ts +6 -6
- package/src/events/AgenticaExecuteEvent.ts +45 -45
- package/src/events/AgenticaInitializeEvent.ts +7 -7
- package/src/events/AgenticaJsonParseErrorEvent.ts +16 -15
- package/src/events/AgenticaRequestEvent.ts +27 -27
- package/src/events/AgenticaResponseEvent.ts +32 -32
- package/src/events/AgenticaSelectEvent.ts +11 -11
- package/src/events/AgenticaUserMessageEvent.ts +12 -12
- package/src/events/AgenticaValidateEvent.ts +32 -32
- package/src/events/MicroAgenticaEvent.ts +45 -45
- package/src/events/index.ts +15 -15
- package/src/factory/events.ts +357 -359
- package/src/factory/histories.ts +348 -348
- package/src/factory/index.ts +3 -3
- package/src/factory/operations.ts +16 -16
- package/src/functional/assertHttpController.ts +106 -104
- package/src/functional/assertHttpLlmApplication.ts +52 -57
- package/src/functional/assertMcpController.ts +47 -44
- package/src/functional/createMcpLlmApplication.ts +72 -0
- package/src/functional/index.ts +7 -7
- package/src/functional/validateHttpController.ts +113 -110
- package/src/functional/validateHttpLlmApplication.ts +65 -70
- package/src/functional/validateMcpController.ts +53 -50
- package/src/histories/AgenticaAssistantMessageHistory.ts +10 -10
- package/src/histories/AgenticaCancelHistory.ts +8 -8
- package/src/histories/AgenticaDescribeHistory.ts +18 -18
- package/src/histories/AgenticaExecuteHistory.ts +64 -64
- package/src/histories/AgenticaHistory.ts +28 -28
- package/src/histories/AgenticaHistoryBase.ts +35 -35
- package/src/histories/AgenticaSelectHistory.ts +8 -8
- package/src/histories/AgenticaSystemMessageHistory.ts +10 -10
- package/src/histories/AgenticaUserMessageHistory.ts +11 -11
- package/src/histories/MicroAgenticaHistory.ts +19 -19
- package/src/histories/contents/AgenticaUserMessageAudioContent.ts +21 -21
- package/src/histories/contents/AgenticaUserMessageContent.ts +19 -19
- package/src/histories/contents/AgenticaUserMessageContentBase.ts +6 -6
- package/src/histories/contents/AgenticaUserMessageFileContent.ts +25 -25
- package/src/histories/contents/AgenticaUserMessageImageContent.ts +33 -33
- package/src/histories/contents/AgenticaUserMessageTextContent.ts +15 -15
- package/src/histories/contents/index.ts +5 -5
- package/src/histories/index.ts +10 -10
- package/src/index.ts +15 -15
- package/src/json/IAgenticaEventJson.ts +265 -265
- package/src/json/IAgenticaEventJson.type.ts +19 -19
- package/src/json/IAgenticaHistoryJson.ts +165 -165
- package/src/json/IAgenticaHistoryJson.type.ts +19 -19
- package/src/json/IAgenticaOperationJson.ts +36 -36
- package/src/json/IAgenticaOperationSelectionJson.ts +26 -26
- package/src/json/IAgenticaTokenUsageJson.ts +107 -107
- package/src/json/IMicroAgenticaEventJson.ts +22 -22
- package/src/json/IMicroAgenticaHistoryJson.ts +25 -25
- package/src/json/index.ts +7 -7
- package/src/orchestrate/call.ts +542 -558
- package/src/orchestrate/cancel.ts +265 -269
- package/src/orchestrate/describe.ts +66 -66
- package/src/orchestrate/execute.ts +61 -61
- package/src/orchestrate/index.ts +6 -6
- package/src/orchestrate/initialize.ts +102 -102
- package/src/orchestrate/internal/cancelFunctionFromContext.ts +33 -33
- package/src/orchestrate/internal/selectFunctionFromContext.ts +34 -34
- package/src/orchestrate/select.ts +320 -322
- package/src/structures/IAgenticaConfig.ts +83 -83
- package/src/structures/IAgenticaConfigBase.ts +87 -87
- package/src/structures/IAgenticaController.ts +143 -151
- package/src/structures/IAgenticaExecutor.ts +167 -167
- package/src/structures/IAgenticaProps.ts +78 -78
- package/src/structures/IAgenticaSystemPrompt.ts +236 -236
- package/src/structures/IAgenticaVendor.ts +54 -54
- package/src/structures/IMcpTool.ts +60 -0
- package/src/structures/IMicroAgenticaConfig.ts +56 -56
- package/src/structures/IMicroAgenticaExecutor.ts +67 -67
- package/src/structures/IMicroAgenticaProps.ts +77 -77
- package/src/structures/IMicroAgenticaSystemPrompt.ts +169 -169
- package/src/structures/index.ts +10 -10
- package/src/transformers/transformHistory.ts +172 -172
- package/src/utils/AssistantMessageEmptyError.ts +20 -20
- package/src/utils/AsyncQueue.spec.ts +355 -355
- package/src/utils/AsyncQueue.ts +95 -95
- package/src/utils/ByteArrayUtil.ts +5 -5
- package/src/utils/ChatGptCompletionMessageUtil.spec.ts +314 -320
- package/src/utils/ChatGptCompletionMessageUtil.ts +210 -195
- package/src/utils/ChatGptCompletionStreamingUtil.spec.ts +909 -909
- package/src/utils/ChatGptCompletionStreamingUtil.ts +91 -91
- package/src/utils/ChatGptTokenUsageAggregator.spec.ts +226 -226
- package/src/utils/ChatGptTokenUsageAggregator.ts +57 -57
- package/src/utils/MPSC.spec.ts +276 -276
- package/src/utils/MPSC.ts +42 -42
- package/src/utils/Singleton.spec.ts +138 -138
- package/src/utils/Singleton.ts +42 -42
- package/src/utils/StreamUtil.spec.ts +512 -512
- package/src/utils/StreamUtil.ts +87 -87
- package/src/utils/__map_take.spec.ts +140 -140
- package/src/utils/__map_take.ts +13 -13
- package/src/utils/__retry.spec.ts +198 -198
- package/src/utils/__retry.ts +18 -18
- package/src/utils/assertExecuteFailure.ts +16 -16
- package/src/utils/index.ts +4 -4
- package/src/utils/request.ts +140 -140
- package/src/utils/types.ts +50 -50
- package/lib/context/internal/AgenticaOperationComposer.spec.d.ts +0 -1
- package/lib/context/internal/AgenticaOperationComposer.spec.js +0 -353
- package/lib/context/internal/AgenticaOperationComposer.spec.js.map +0 -1
- package/lib/utils/JsonUtil.d.ts +0 -8
- package/lib/utils/JsonUtil.js +0 -349
- package/lib/utils/JsonUtil.js.map +0 -1
- package/src/context/internal/AgenticaOperationComposer.spec.ts +0 -401
- 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
|
|
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:
|
package/src/constants/index.ts
CHANGED
|
@@ -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
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import type {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
| AgenticaOperation.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
+
}
|