@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.
- package/LICENSE +21 -21
- package/README.md +218 -218
- package/lib/context/internal/__IChatInitialApplication.d.ts +1 -2
- package/lib/errors/AgenticaJsonParseError.js +6 -6
- package/lib/index.mjs +47 -1
- package/lib/index.mjs.map +1 -1
- package/lib/orchestrate/call.js +16 -16
- package/lib/orchestrate/initialize.js +43 -1
- package/lib/orchestrate/initialize.js.map +1 -1
- package/lib/structures/IAgenticaController.d.ts +143 -143
- package/lib/utils/ChatGptCompletionMessageUtil.js +6 -6
- package/package.json +6 -6
- 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 -35
- 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/index.ts +2 -2
- package/src/context/AgenticaContext.ts +136 -136
- package/src/context/AgenticaContextRequestResult.ts +14 -14
- package/src/context/AgenticaOperation.ts +73 -73
- 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 +13 -15
- package/src/context/internal/__IChatSelectFunctionsApplication.ts +24 -24
- package/src/context/internal/isAgenticaContext.ts +11 -11
- package/src/errors/AgenticaJsonParseError.ts +52 -52
- 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 -16
- 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 -357
- 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 -106
- package/src/functional/assertHttpLlmApplication.ts +52 -52
- package/src/functional/assertMcpController.ts +47 -47
- package/src/functional/createMcpLlmApplication.ts +72 -72
- package/src/functional/index.ts +7 -7
- package/src/functional/validateHttpController.ts +113 -113
- package/src/functional/validateHttpLlmApplication.ts +65 -65
- package/src/functional/validateMcpController.ts +53 -53
- 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 -542
- package/src/orchestrate/cancel.ts +265 -265
- 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 -320
- package/src/structures/IAgenticaConfig.ts +83 -83
- package/src/structures/IAgenticaConfigBase.ts +87 -87
- package/src/structures/IAgenticaController.ts +143 -143
- 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 -60
- 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 -314
- package/src/utils/ChatGptCompletionMessageUtil.ts +210 -210
- 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
|
@@ -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
|
+
};
|
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,73 +1,73 @@
|
|
|
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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import type { AgenticaOperation } from "./AgenticaOperation";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Collection of operations used in the Agentica Agent.
|
|
5
|
-
*
|
|
6
|
-
* `IAgenticaOperationCollection` is an interface type representing
|
|
7
|
-
* a collection of operations for several purposes used in the
|
|
8
|
-
* {@link Agentica} internally.
|
|
9
|
-
*
|
|
10
|
-
* @author Samchon
|
|
11
|
-
*/
|
|
12
|
-
export interface AgenticaOperationCollection {
|
|
13
|
-
/**
|
|
14
|
-
* List of every operations.
|
|
15
|
-
*/
|
|
16
|
-
array: AgenticaOperation[];
|
|
17
|
-
/**
|
|
18
|
-
* Divided operations.
|
|
19
|
-
*
|
|
20
|
-
* If you've configured the {@link IAgenticaConfig.capacity} property,
|
|
21
|
-
* the A.I. chatbot ({@link Agentica}) will separate the operations
|
|
22
|
-
* into the several groups to divide and conquer and LLM function selecting
|
|
23
|
-
* for accuracy.
|
|
24
|
-
*
|
|
25
|
-
* In that case, this property `divided`'s length would be dtermined by
|
|
26
|
-
* dividing the number of operations ({@link array}'s length) by the
|
|
27
|
-
* {@link IAgenticaConfig.capacity}.
|
|
28
|
-
*
|
|
29
|
-
* Otherwise, if the {@link IAgenticaConfig.capacity} has not been
|
|
30
|
-
* configured, this `divided` property would be the `undefined` value.
|
|
31
|
-
*/
|
|
32
|
-
divided?: AgenticaOperation[][] | undefined;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Flat dictionary of operations.
|
|
36
|
-
*
|
|
37
|
-
* Dictionary of operations with their {@link IAgenticaOperation.name}.
|
|
38
|
-
*/
|
|
39
|
-
flat: Map<string, AgenticaOperation>;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Group dictionary of operations.
|
|
43
|
-
*
|
|
44
|
-
* Dictionary of operations with their
|
|
45
|
-
* {@link IAgenticaOperation.controller.name} and
|
|
46
|
-
* {@link IAgenticaOperation.function.name}.
|
|
47
|
-
*/
|
|
48
|
-
group: Map<string, Map<string, AgenticaOperation>>;
|
|
49
|
-
}
|
|
1
|
+
import type { AgenticaOperation } from "./AgenticaOperation";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Collection of operations used in the Agentica Agent.
|
|
5
|
+
*
|
|
6
|
+
* `IAgenticaOperationCollection` is an interface type representing
|
|
7
|
+
* a collection of operations for several purposes used in the
|
|
8
|
+
* {@link Agentica} internally.
|
|
9
|
+
*
|
|
10
|
+
* @author Samchon
|
|
11
|
+
*/
|
|
12
|
+
export interface AgenticaOperationCollection {
|
|
13
|
+
/**
|
|
14
|
+
* List of every operations.
|
|
15
|
+
*/
|
|
16
|
+
array: AgenticaOperation[];
|
|
17
|
+
/**
|
|
18
|
+
* Divided operations.
|
|
19
|
+
*
|
|
20
|
+
* If you've configured the {@link IAgenticaConfig.capacity} property,
|
|
21
|
+
* the A.I. chatbot ({@link Agentica}) will separate the operations
|
|
22
|
+
* into the several groups to divide and conquer and LLM function selecting
|
|
23
|
+
* for accuracy.
|
|
24
|
+
*
|
|
25
|
+
* In that case, this property `divided`'s length would be dtermined by
|
|
26
|
+
* dividing the number of operations ({@link array}'s length) by the
|
|
27
|
+
* {@link IAgenticaConfig.capacity}.
|
|
28
|
+
*
|
|
29
|
+
* Otherwise, if the {@link IAgenticaConfig.capacity} has not been
|
|
30
|
+
* configured, this `divided` property would be the `undefined` value.
|
|
31
|
+
*/
|
|
32
|
+
divided?: AgenticaOperation[][] | undefined;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Flat dictionary of operations.
|
|
36
|
+
*
|
|
37
|
+
* Dictionary of operations with their {@link IAgenticaOperation.name}.
|
|
38
|
+
*/
|
|
39
|
+
flat: Map<string, AgenticaOperation>;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Group dictionary of operations.
|
|
43
|
+
*
|
|
44
|
+
* Dictionary of operations with their
|
|
45
|
+
* {@link IAgenticaOperation.controller.name} and
|
|
46
|
+
* {@link IAgenticaOperation.function.name}.
|
|
47
|
+
*/
|
|
48
|
+
group: Map<string, Map<string, AgenticaOperation>>;
|
|
49
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { IAgenticaOperationSelectionJson } from "../json/IAgenticaOperationSelectionJson";
|
|
2
|
-
|
|
3
|
-
import type { AgenticaOperation } from "./AgenticaOperation";
|
|
4
|
-
|
|
5
|
-
export interface AgenticaOperationSelection {
|
|
6
|
-
operation: AgenticaOperation;
|
|
7
|
-
reason: string;
|
|
8
|
-
toJSON: () => IAgenticaOperationSelectionJson;
|
|
9
|
-
}
|
|
1
|
+
import type { IAgenticaOperationSelectionJson } from "../json/IAgenticaOperationSelectionJson";
|
|
2
|
+
|
|
3
|
+
import type { AgenticaOperation } from "./AgenticaOperation";
|
|
4
|
+
|
|
5
|
+
export interface AgenticaOperationSelection {
|
|
6
|
+
operation: AgenticaOperation;
|
|
7
|
+
reason: string;
|
|
8
|
+
toJSON: () => IAgenticaOperationSelectionJson;
|
|
9
|
+
}
|