@agentica/core 0.43.2 → 0.44.0-dev.20260313
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -18948
- 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 -350
- package/lib/utils/JsonUtil.js.map +0 -1
- package/src/context/internal/AgenticaOperationComposer.spec.ts +0 -401
- package/src/utils/JsonUtil.ts +0 -462
package/src/factory/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from "./events";
|
|
2
|
-
export * from "./histories";
|
|
3
|
-
export * from "./operations";
|
|
1
|
+
export * from "./events";
|
|
2
|
+
export * from "./histories";
|
|
3
|
+
export * from "./operations";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import type { AgenticaOperation } from "../context/AgenticaOperation";
|
|
2
|
-
import type { AgenticaOperationSelection } from "../context/AgenticaOperationSelection";
|
|
3
|
-
|
|
4
|
-
export function createOperationSelection(props: {
|
|
5
|
-
operation: AgenticaOperation;
|
|
6
|
-
reason: string;
|
|
7
|
-
}): AgenticaOperationSelection {
|
|
8
|
-
return {
|
|
9
|
-
operation: props.operation,
|
|
10
|
-
reason: props.reason,
|
|
11
|
-
toJSON: () => ({
|
|
12
|
-
operation: props.operation.toJSON(),
|
|
13
|
-
reason: props.reason,
|
|
14
|
-
}),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
1
|
+
import type { AgenticaOperation } from "../context/AgenticaOperation";
|
|
2
|
+
import type { AgenticaOperationSelection } from "../context/AgenticaOperationSelection";
|
|
3
|
+
|
|
4
|
+
export function createOperationSelection(props: {
|
|
5
|
+
operation: AgenticaOperation;
|
|
6
|
+
reason: string;
|
|
7
|
+
}): AgenticaOperationSelection {
|
|
8
|
+
return {
|
|
9
|
+
operation: props.operation,
|
|
10
|
+
reason: props.reason,
|
|
11
|
+
toJSON: () => ({
|
|
12
|
+
operation: props.operation.toJSON(),
|
|
13
|
+
reason: props.reason,
|
|
14
|
+
}),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -1,104 +1,106 @@
|
|
|
1
|
-
import type { IHttpConnection, IHttpLlmApplication, IHttpLlmFunction, IHttpResponse, OpenApiV3, OpenApiV3_1, SwaggerV2 } from "@
|
|
2
|
-
|
|
3
|
-
import { HttpLlm,
|
|
4
|
-
import typia from "typia";
|
|
5
|
-
|
|
6
|
-
import type { IAgenticaController } from "../structures/IAgenticaController";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Create an HTTP controller with type assertion.
|
|
10
|
-
*
|
|
11
|
-
* Create an {@link IAgenticaController.IHttp} instance which represents
|
|
12
|
-
* the HTTP controller from the given Swagger/OpenAPI document and the
|
|
13
|
-
* target LLM model with connection information.
|
|
14
|
-
*
|
|
15
|
-
* By the way, even though this `assertHttpController` function
|
|
16
|
-
* supports every version of Swagger/OpenAPI specification, there can
|
|
17
|
-
* be a type error in the given document. In that case, the function
|
|
18
|
-
* will throw an error with detailed type error tracing information.
|
|
19
|
-
*
|
|
20
|
-
* @param props Properties to create the HTTP controller instance
|
|
21
|
-
* @returns HTTP controller instance
|
|
22
|
-
* @throws {@link TypeGuardError} when the given document is invalid
|
|
23
|
-
* @author Samchon
|
|
24
|
-
*/
|
|
25
|
-
export function assertHttpController(props: {
|
|
26
|
-
/**
|
|
27
|
-
* Name of the controller.
|
|
28
|
-
*/
|
|
29
|
-
name: string;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Swagger/OpenAPI document.
|
|
33
|
-
*/
|
|
34
|
-
document:
|
|
35
|
-
| SwaggerV2.IDocument
|
|
36
|
-
| OpenApiV3.IDocument
|
|
37
|
-
| OpenApiV3_1.IDocument
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* -
|
|
83
|
-
* -
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
1
|
+
import type { IHttpConnection, IHttpLlmApplication, IHttpLlmFunction, IHttpResponse, OpenApi, OpenApiV3, OpenApiV3_1, OpenApiV3_2, SwaggerV2 } from "@typia/interface";
|
|
2
|
+
|
|
3
|
+
import { HttpLlm, OpenApiConverter } from "@typia/utils";
|
|
4
|
+
import typia from "typia";
|
|
5
|
+
|
|
6
|
+
import type { IAgenticaController } from "../structures/IAgenticaController";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Create an HTTP controller with type assertion.
|
|
10
|
+
*
|
|
11
|
+
* Create an {@link IAgenticaController.IHttp} instance which represents
|
|
12
|
+
* the HTTP controller from the given Swagger/OpenAPI document and the
|
|
13
|
+
* target LLM model with connection information.
|
|
14
|
+
*
|
|
15
|
+
* By the way, even though this `assertHttpController` function
|
|
16
|
+
* supports every version of Swagger/OpenAPI specification, there can
|
|
17
|
+
* be a type error in the given document. In that case, the function
|
|
18
|
+
* will throw an error with detailed type error tracing information.
|
|
19
|
+
*
|
|
20
|
+
* @param props Properties to create the HTTP controller instance
|
|
21
|
+
* @returns HTTP controller instance
|
|
22
|
+
* @throws {@link TypeGuardError} when the given document is invalid
|
|
23
|
+
* @author Samchon
|
|
24
|
+
*/
|
|
25
|
+
export function assertHttpController(props: {
|
|
26
|
+
/**
|
|
27
|
+
* Name of the controller.
|
|
28
|
+
*/
|
|
29
|
+
name: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Swagger/OpenAPI document.
|
|
33
|
+
*/
|
|
34
|
+
document:
|
|
35
|
+
| SwaggerV2.IDocument
|
|
36
|
+
| OpenApiV3.IDocument
|
|
37
|
+
| OpenApiV3_1.IDocument
|
|
38
|
+
| OpenApiV3_2.IDocument
|
|
39
|
+
| OpenApi.IDocument
|
|
40
|
+
| unknown;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Connection to the server.
|
|
44
|
+
*
|
|
45
|
+
* Connection to the API server including the URL and headers.
|
|
46
|
+
*/
|
|
47
|
+
connection: IHttpConnection;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Options for the LLM function calling schema composition.
|
|
51
|
+
*/
|
|
52
|
+
config?: Partial<IHttpLlmApplication.IConfig>;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Executor of the API function.
|
|
56
|
+
*
|
|
57
|
+
* @param props Properties of the API function call
|
|
58
|
+
* @returns HTTP response of the API function call
|
|
59
|
+
*/
|
|
60
|
+
execute?: (props: {
|
|
61
|
+
/**
|
|
62
|
+
* Connection to the server.
|
|
63
|
+
*/
|
|
64
|
+
connection: IHttpConnection;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Application schema.
|
|
68
|
+
*/
|
|
69
|
+
application: IHttpLlmApplication;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Function schema.
|
|
73
|
+
*/
|
|
74
|
+
function: IHttpLlmFunction;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Arguments of the function calling.
|
|
78
|
+
*
|
|
79
|
+
* It is an object of key-value pairs of the API function's parameters.
|
|
80
|
+
* The property keys are composed by below rules:
|
|
81
|
+
*
|
|
82
|
+
* - parameter names
|
|
83
|
+
* - query parameter as an object type if exists
|
|
84
|
+
* - body parameter if exists
|
|
85
|
+
*/
|
|
86
|
+
arguments: object;
|
|
87
|
+
}) => Promise<IHttpResponse>;
|
|
88
|
+
}): IAgenticaController.IHttp {
|
|
89
|
+
const document = OpenApiConverter.upgradeDocument(typia.assert<
|
|
90
|
+
| SwaggerV2.IDocument
|
|
91
|
+
| OpenApiV3.IDocument
|
|
92
|
+
| OpenApiV3_1.IDocument
|
|
93
|
+
| OpenApiV3_2.IDocument
|
|
94
|
+
| OpenApi.IDocument
|
|
95
|
+
>(props.document));
|
|
96
|
+
return {
|
|
97
|
+
protocol: "http",
|
|
98
|
+
name: props.name,
|
|
99
|
+
application: HttpLlm.application({
|
|
100
|
+
document,
|
|
101
|
+
config: props.config,
|
|
102
|
+
}),
|
|
103
|
+
execute: props.execute,
|
|
104
|
+
connection: props.connection,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -1,57 +1,52 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
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
|
-
| OpenApi.IDocument
|
|
54
|
-
>(props.document)),
|
|
55
|
-
config: props.config,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
1
|
+
import type { IHttpLlmApplication, OpenApiV3, OpenApiV3_1, OpenApiV3_2, SwaggerV2 } from "@typia/interface";
|
|
2
|
+
import type { OpenApi } from "typia";
|
|
3
|
+
|
|
4
|
+
import { HttpLlm, OpenApiConverter } from "@typia/utils";
|
|
5
|
+
import typia from "typia";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Create an HTTP LLM application instance with type assertion.
|
|
9
|
+
*
|
|
10
|
+
* Create an {@link IHttpLlmApplication} instance which represents
|
|
11
|
+
* the LLM (Large Language Model) function calling application schema
|
|
12
|
+
* from the given Swagger/OpenAPI document and the target LLM model.
|
|
13
|
+
*
|
|
14
|
+
* By the way, even though this `assertHttpLlmApplication` function
|
|
15
|
+
* supports every version of Swagger/OpenAPI specification, there can
|
|
16
|
+
* be a type error in the given document. In that case, the function
|
|
17
|
+
* will throw an error with detailed type error tracing information.
|
|
18
|
+
*
|
|
19
|
+
* @param props Properties to create the HTTP LLM application instance
|
|
20
|
+
* @returns HTTP LLM application instance
|
|
21
|
+
* @throws {@link TypeGuardError} when the given document is invalid
|
|
22
|
+
* @author Samchon
|
|
23
|
+
* @deprecated Use {@link assertHttpController} instead.
|
|
24
|
+
*/
|
|
25
|
+
export function assertHttpLlmApplication(props: {
|
|
26
|
+
/**
|
|
27
|
+
* Swagger/OpenAPI document.
|
|
28
|
+
*/
|
|
29
|
+
document:
|
|
30
|
+
| SwaggerV2.IDocument
|
|
31
|
+
| OpenApiV3.IDocument
|
|
32
|
+
| OpenApiV3_1.IDocument
|
|
33
|
+
| OpenApiV3_2.IDocument
|
|
34
|
+
| OpenApi.IDocument
|
|
35
|
+
| unknown;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Options for the LLM function calling schema composition.
|
|
39
|
+
*/
|
|
40
|
+
config?: Partial<IHttpLlmApplication.IConfig>;
|
|
41
|
+
}): IHttpLlmApplication {
|
|
42
|
+
return HttpLlm.application({
|
|
43
|
+
document: OpenApiConverter.upgradeDocument(typia.assert<
|
|
44
|
+
| SwaggerV2.IDocument
|
|
45
|
+
| OpenApiV3.IDocument
|
|
46
|
+
| OpenApiV3_1.IDocument
|
|
47
|
+
| OpenApiV3_2.IDocument
|
|
48
|
+
| OpenApi.IDocument
|
|
49
|
+
>(props.document)),
|
|
50
|
+
config: props.config,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
@@ -1,44 +1,47 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import type {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* Create an
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @param props
|
|
18
|
-
* @param props.
|
|
19
|
-
* @param props.
|
|
20
|
-
* @
|
|
21
|
-
* @
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
1
|
+
import type { ILlmApplication } from "typia";
|
|
2
|
+
|
|
3
|
+
import typia from "typia";
|
|
4
|
+
|
|
5
|
+
import type { IAgenticaController } from "../structures/IAgenticaController";
|
|
6
|
+
import type { IMcpTool } from "../structures/IMcpTool";
|
|
7
|
+
|
|
8
|
+
import { createMcpLlmApplication } from "./createMcpLlmApplication";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Create an MCP controller with type assertion.
|
|
12
|
+
*
|
|
13
|
+
* Create an {@link IAgenticaController.IMcp} instance which represents
|
|
14
|
+
* an MCP (Model Context Protocol) controller with LLM function calling
|
|
15
|
+
* schemas and client connection.
|
|
16
|
+
*
|
|
17
|
+
* @param props Properties to create the MCP controller
|
|
18
|
+
* @param props.name Name of the MCP implementation.
|
|
19
|
+
* @param props.client Client connection to the MCP implementation.
|
|
20
|
+
* @param props.model Model schema of the LLM function calling.
|
|
21
|
+
* @param props.options Options to create the MCP controller.
|
|
22
|
+
* @returns MCP LLM application instance
|
|
23
|
+
* @author sunrabbit123
|
|
24
|
+
*/
|
|
25
|
+
export async function assertMcpController(props: {
|
|
26
|
+
name: string;
|
|
27
|
+
client: IAgenticaController.IMcp["client"];
|
|
28
|
+
config?: Partial<ILlmApplication.IConfig>;
|
|
29
|
+
}): Promise<IAgenticaController.IMcp> {
|
|
30
|
+
// for peerDependencies
|
|
31
|
+
const { ListToolsResultSchema } = await import("@modelcontextprotocol/sdk/types.js");
|
|
32
|
+
|
|
33
|
+
// get list of tools
|
|
34
|
+
const { tools } = await props.client.request({ method: "tools/list" }, ListToolsResultSchema);
|
|
35
|
+
|
|
36
|
+
const application: ILlmApplication
|
|
37
|
+
= createMcpLlmApplication({
|
|
38
|
+
tools: typia.assert<Array<IMcpTool>>(tools),
|
|
39
|
+
config: props.config,
|
|
40
|
+
});
|
|
41
|
+
return {
|
|
42
|
+
protocol: "mcp",
|
|
43
|
+
name: props.name,
|
|
44
|
+
client: props.client,
|
|
45
|
+
application,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { IJsonSchemaTransformError, IResult } from "@typia/interface";
|
|
2
|
+
import type { ILlmApplication, ILlmFunction, ILlmSchema, OpenApi } from "typia";
|
|
3
|
+
|
|
4
|
+
import { LlmJson, LlmSchemaConverter, OpenApiConverter, OpenApiTypeChecker } from "@typia/utils";
|
|
5
|
+
|
|
6
|
+
import type { IMcpTool } from "../structures/IMcpTool";
|
|
7
|
+
|
|
8
|
+
export function createMcpLlmApplication(props: {
|
|
9
|
+
tools: Array<IMcpTool>;
|
|
10
|
+
config?: Partial<ILlmApplication.IConfig> | undefined;
|
|
11
|
+
}): ILlmApplication {
|
|
12
|
+
const config: ILlmSchema.IConfig = LlmSchemaConverter.getConfig(props.config);
|
|
13
|
+
const functions: ILlmFunction[] = [];
|
|
14
|
+
|
|
15
|
+
props.tools.forEach((tool, i) => {
|
|
16
|
+
// CONVERT TO EMENDED OPENAPI V3.1 SPECIFICATION
|
|
17
|
+
const components: OpenApi.IComponents
|
|
18
|
+
= OpenApiConverter.upgradeComponents({
|
|
19
|
+
schemas: tool.inputSchema.$defs,
|
|
20
|
+
});
|
|
21
|
+
const schema: OpenApi.IJsonSchema = OpenApiConverter.upgradeSchema({
|
|
22
|
+
components: {
|
|
23
|
+
schemas: tool.inputSchema.$defs,
|
|
24
|
+
},
|
|
25
|
+
schema: tool.inputSchema,
|
|
26
|
+
});
|
|
27
|
+
if (components.schemas !== undefined) {
|
|
28
|
+
const visited: Set<string> = new Set<string>();
|
|
29
|
+
OpenApiTypeChecker.visit({
|
|
30
|
+
closure: (schema: OpenApi.IJsonSchema) => {
|
|
31
|
+
if (OpenApiTypeChecker.isReference(schema)) {
|
|
32
|
+
visited.add(schema.$ref.split("/").pop()!);
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
components,
|
|
36
|
+
schema,
|
|
37
|
+
});
|
|
38
|
+
components.schemas = Object.fromEntries(
|
|
39
|
+
Object.entries(components.schemas).filter(([key]) =>
|
|
40
|
+
visited.has(key),
|
|
41
|
+
),
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// CONVERT TO LLM PARAMETERS
|
|
46
|
+
const parameters: IResult<ILlmSchema.IParameters, IJsonSchemaTransformError>
|
|
47
|
+
= LlmSchemaConverter.parameters({
|
|
48
|
+
config,
|
|
49
|
+
components,
|
|
50
|
+
schema: schema as
|
|
51
|
+
| OpenApi.IJsonSchema.IObject
|
|
52
|
+
| OpenApi.IJsonSchema.IReference,
|
|
53
|
+
accessor: `$input.tools[${i}].inputSchema`,
|
|
54
|
+
});
|
|
55
|
+
if (parameters.success === false) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
functions.push({
|
|
60
|
+
name: tool.name,
|
|
61
|
+
parameters: parameters.value,
|
|
62
|
+
description: tool.description,
|
|
63
|
+
validate: LlmJson.validate(parameters.value),
|
|
64
|
+
parse: str => LlmJson.parse(str, parameters.value),
|
|
65
|
+
coerce: input => LlmJson.coerce(input, parameters.value),
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
functions,
|
|
70
|
+
config: config as ILlmApplication.IConfig,
|
|
71
|
+
};
|
|
72
|
+
}
|
package/src/functional/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from "./assertHttpController";
|
|
2
|
-
export * from "./assertHttpLlmApplication"; // deprecated
|
|
3
|
-
export * from "./assertMcpController";
|
|
4
|
-
export * from "./validateHttpController"; // deprecated
|
|
5
|
-
|
|
6
|
-
export * from "./validateHttpLlmApplication";
|
|
7
|
-
export * from "./validateMcpController";
|
|
1
|
+
export * from "./assertHttpController";
|
|
2
|
+
export * from "./assertHttpLlmApplication"; // deprecated
|
|
3
|
+
export * from "./assertMcpController";
|
|
4
|
+
export * from "./validateHttpController"; // deprecated
|
|
5
|
+
|
|
6
|
+
export * from "./validateHttpLlmApplication";
|
|
7
|
+
export * from "./validateMcpController";
|