@agentica/core 0.23.0 → 0.25.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/README.md +1 -1
- package/lib/Agentica.d.ts +7 -2
- package/lib/Agentica.js +12 -7
- package/lib/Agentica.js.map +1 -1
- package/lib/MicroAgentica.d.ts +2 -2
- package/lib/MicroAgentica.js +4 -4
- package/lib/MicroAgentica.js.map +1 -1
- package/lib/context/AgenticaContext.d.ts +6 -2
- package/lib/context/MicroAgenticaContext.d.ts +2 -2
- package/lib/context/index.d.ts +5 -0
- package/lib/{structures/mcp → context}/index.js +5 -1
- package/lib/context/index.js.map +1 -0
- package/lib/events/AgenticaAssistantMessageEvent.d.ts +9 -0
- package/lib/{histories/AgenticaUserInputHistory.js → events/AgenticaAssistantMessageEvent.js} +1 -1
- package/lib/events/AgenticaAssistantMessageEvent.js.map +1 -0
- package/lib/events/AgenticaEvent.d.ts +9 -9
- package/lib/events/AgenticaUserMessageEvent.d.ts +9 -0
- package/lib/events/{AgenticaUserInputEvent.js → AgenticaUserMessageEvent.js} +1 -1
- package/lib/events/AgenticaUserMessageEvent.js.map +1 -0
- package/lib/events/MicroAgenticaEvent.d.ts +6 -6
- package/lib/events/index.d.ts +14 -0
- package/lib/events/index.js +31 -0
- package/lib/events/index.js.map +1 -0
- package/lib/factory/events.d.ts +8 -8
- package/lib/factory/events.js +23 -38
- package/lib/factory/events.js.map +1 -1
- package/lib/factory/histories.d.ts +1 -36
- package/lib/factory/histories.js +77 -24
- package/lib/factory/histories.js.map +1 -1
- package/lib/functional/assertHttpController.js +6 -6
- package/lib/functional/assertHttpLlmApplication.js +6 -6
- package/lib/functional/assertMcpController.d.ts +1 -2
- package/lib/functional/assertMcpController.js +6 -6
- package/lib/functional/assertMcpController.js.map +1 -1
- package/lib/functional/index.d.ts +6 -0
- package/lib/functional/index.js +23 -0
- package/lib/functional/index.js.map +1 -0
- package/lib/functional/validateHttpController.js +5 -5
- package/lib/functional/validateHttpLlmApplication.js +5 -5
- package/lib/functional/validateMcpController.d.ts +1 -2
- package/lib/functional/validateMcpController.js +11 -11
- package/lib/functional/validateMcpController.js.map +1 -1
- package/lib/histories/{AgenticaTextHistory.d.ts → AgenticaAssistantMessageHistory.d.ts} +1 -2
- package/lib/histories/AgenticaAssistantMessageHistory.js +3 -0
- package/lib/histories/AgenticaAssistantMessageHistory.js.map +1 -0
- package/lib/histories/AgenticaHistory.d.ts +7 -7
- package/lib/histories/AgenticaUserMessageHistory.d.ts +6 -0
- package/lib/{events/AgenticaTextEvent.js → histories/AgenticaUserMessageHistory.js} +1 -1
- package/lib/histories/AgenticaUserMessageHistory.js.map +1 -0
- package/lib/histories/MicroAgenticaHistory.d.ts +5 -4
- package/lib/histories/contents/AgenticaUserMessageAudioContent.d.ts +19 -0
- package/lib/histories/contents/AgenticaUserMessageAudioContent.js +3 -0
- package/lib/histories/contents/AgenticaUserMessageAudioContent.js.map +1 -0
- package/lib/histories/contents/AgenticaUserMessageContent.d.ts +14 -0
- package/lib/histories/{AgenticaTextHistory.js → contents/AgenticaUserMessageContent.js} +1 -1
- package/lib/histories/contents/AgenticaUserMessageContent.js.map +1 -0
- package/lib/histories/contents/AgenticaUserMessageContentBase.d.ts +6 -0
- package/lib/histories/contents/AgenticaUserMessageContentBase.js +3 -0
- package/lib/histories/contents/AgenticaUserMessageContentBase.js.map +1 -0
- package/lib/histories/contents/AgenticaUserMessageFileContent.d.ts +26 -0
- package/lib/histories/contents/AgenticaUserMessageFileContent.js +3 -0
- package/lib/histories/contents/AgenticaUserMessageFileContent.js.map +1 -0
- package/lib/histories/contents/AgenticaUserMessageImageContent.d.ts +20 -0
- package/lib/histories/contents/AgenticaUserMessageImageContent.js +3 -0
- package/lib/histories/contents/AgenticaUserMessageImageContent.js.map +1 -0
- package/lib/histories/contents/AgenticaUserMessageTextContent.d.ts +14 -0
- package/lib/histories/contents/AgenticaUserMessageTextContent.js +3 -0
- package/lib/histories/contents/AgenticaUserMessageTextContent.js.map +1 -0
- package/lib/histories/contents/index.d.ts +5 -0
- package/lib/histories/contents/index.js +22 -0
- package/lib/histories/contents/index.js.map +1 -0
- package/lib/histories/index.d.ts +9 -0
- package/lib/histories/index.js +26 -0
- package/lib/histories/index.js.map +1 -0
- package/lib/index.d.ts +6 -45
- package/lib/index.js +6 -46
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +155 -135
- package/lib/index.mjs.map +1 -1
- package/lib/json/IAgenticaEventJson.d.ts +29 -23
- package/lib/json/IAgenticaHistoryJson.d.ts +24 -19
- package/lib/json/IMicroAgenticaEventJson.d.ts +1 -1
- package/lib/json/IMicroAgenticaHistoryJson.d.ts +1 -1
- package/lib/json/index.d.ts +7 -0
- package/lib/json/index.js +24 -0
- package/lib/json/index.js.map +1 -0
- package/lib/orchestrate/call.js +4 -4
- package/lib/orchestrate/call.js.map +1 -1
- package/lib/orchestrate/cancel.js +1 -1
- package/lib/orchestrate/cancel.js.map +1 -1
- package/lib/orchestrate/initialize.js +4 -4
- package/lib/orchestrate/initialize.js.map +1 -1
- package/lib/orchestrate/select.js +3 -3
- package/lib/orchestrate/select.js.map +1 -1
- package/lib/structures/IAgenticaController.d.ts +1 -2
- package/lib/structures/index.d.ts +10 -0
- package/lib/structures/index.js +27 -0
- package/lib/structures/index.js.map +1 -0
- package/lib/transformers/transformEvent.d.ts +1 -0
- package/lib/transformers/{AgenticaEventTransformer.js → transformEvent.js} +74 -31
- package/lib/transformers/transformEvent.js.map +1 -0
- package/lib/transformers/transformHistory.d.ts +1 -0
- package/lib/transformers/{AgenticaHistoryTransformer.js → transformHistory.js} +24 -23
- package/lib/transformers/transformHistory.js.map +1 -0
- package/lib/utils/ChatGptCompletionMessageUtil.js +2 -2
- package/lib/utils/ChatGptCompletionMessageUtil.spec.d.ts +1 -0
- package/lib/utils/ChatGptCompletionMessageUtil.spec.js +288 -0
- package/lib/utils/ChatGptCompletionMessageUtil.spec.js.map +1 -0
- package/lib/utils/ChatGptTokenUsageAggregator.spec.d.ts +1 -0
- package/lib/utils/ChatGptTokenUsageAggregator.spec.js +199 -0
- package/lib/utils/ChatGptTokenUsageAggregator.spec.js.map +1 -0
- package/lib/utils/Singleton.js +18 -0
- package/lib/utils/Singleton.js.map +1 -1
- package/lib/utils/Singleton.spec.d.ts +1 -0
- package/lib/utils/Singleton.spec.js +106 -0
- package/lib/utils/Singleton.spec.js.map +1 -0
- package/lib/utils/__map_take.spec.d.ts +1 -0
- package/lib/utils/__map_take.spec.js +108 -0
- package/lib/utils/__map_take.spec.js.map +1 -0
- package/package.json +5 -6
- package/src/Agentica.ts +25 -10
- package/src/MicroAgentica.ts +12 -9
- package/src/context/AgenticaContext.ts +7 -2
- package/src/context/MicroAgenticaContext.ts +2 -2
- package/src/context/index.ts +5 -0
- package/src/events/AgenticaAssistantMessageEvent.ts +12 -0
- package/src/events/AgenticaEvent.ts +15 -15
- package/src/events/AgenticaUserMessageEvent.ts +12 -0
- package/src/events/MicroAgenticaEvent.ts +9 -9
- package/src/events/index.ts +14 -0
- package/src/factory/events.ts +29 -34
- package/src/factory/histories.ts +81 -32
- package/src/functional/assertMcpController.ts +4 -2
- package/src/functional/index.ts +7 -0
- package/src/functional/validateMcpController.ts +4 -2
- package/src/histories/{AgenticaTextHistory.ts → AgenticaAssistantMessageHistory.ts} +4 -2
- package/src/histories/AgenticaHistory.ts +8 -8
- package/src/histories/AgenticaUserMessageHistory.ts +11 -0
- package/src/histories/MicroAgenticaHistory.ts +6 -5
- package/src/histories/contents/AgenticaUserMessageAudioContent.ts +21 -0
- package/src/histories/contents/AgenticaUserMessageContent.ts +19 -0
- package/src/histories/contents/AgenticaUserMessageContentBase.ts +6 -0
- package/src/histories/contents/AgenticaUserMessageFileContent.ts +27 -0
- package/src/histories/contents/AgenticaUserMessageImageContent.ts +23 -0
- package/src/histories/contents/AgenticaUserMessageTextContent.ts +15 -0
- package/src/histories/contents/index.ts +5 -0
- package/src/histories/index.ts +9 -0
- package/src/index.ts +6 -54
- package/src/json/IAgenticaEventJson.ts +36 -28
- package/src/json/IAgenticaHistoryJson.ts +28 -22
- package/src/json/IMicroAgenticaEventJson.ts +2 -1
- package/src/json/IMicroAgenticaHistoryJson.ts +2 -1
- package/src/json/index.ts +7 -0
- package/src/orchestrate/call.ts +8 -8
- package/src/orchestrate/cancel.ts +2 -2
- package/src/orchestrate/initialize.ts +5 -5
- package/src/orchestrate/select.ts +5 -5
- package/src/structures/IAgenticaController.ts +4 -2
- package/src/structures/index.ts +10 -0
- package/src/transformers/{AgenticaEventTransformer.ts → transformEvent.ts} +94 -42
- package/src/transformers/{AgenticaHistoryTransformer.ts → transformHistory.ts} +30 -26
- package/src/utils/ChatGptCompletionMessageUtil.spec.ts +320 -0
- package/src/utils/ChatGptTokenUsageAggregator.spec.ts +226 -0
- package/src/utils/Singleton.spec.ts +138 -0
- package/src/utils/Singleton.ts +18 -0
- package/src/utils/__map_take.spec.ts +140 -0
- package/lib/events/AgenticaTextEvent.d.ts +0 -10
- package/lib/events/AgenticaTextEvent.js.map +0 -1
- package/lib/events/AgenticaUserInputEvent.d.ts +0 -10
- package/lib/events/AgenticaUserInputEvent.js.map +0 -1
- package/lib/histories/AgenticaTextHistory.js.map +0 -1
- package/lib/histories/AgenticaUserInputHistory.d.ts +0 -80
- package/lib/histories/AgenticaUserInputHistory.js.map +0 -1
- package/lib/structures/mcp/IMcpLlmTransportProps.d.ts +0 -11
- package/lib/structures/mcp/IMcpLlmTransportProps.js +0 -3
- package/lib/structures/mcp/IMcpLlmTransportProps.js.map +0 -1
- package/lib/structures/mcp/index.d.ts +0 -1
- package/lib/structures/mcp/index.js.map +0 -1
- package/lib/transformers/AgenticaEventTransformer.d.ts +0 -63
- package/lib/transformers/AgenticaEventTransformer.js.map +0 -1
- package/lib/transformers/AgenticaHistoryTransformer.d.ts +0 -41
- package/lib/transformers/AgenticaHistoryTransformer.js.map +0 -1
- package/lib/utils/MathUtil.d.ts +0 -3
- package/lib/utils/MathUtil.js +0 -8
- package/lib/utils/MathUtil.js.map +0 -1
- package/src/events/AgenticaTextEvent.ts +0 -12
- package/src/events/AgenticaUserInputEvent.ts +0 -12
- package/src/histories/AgenticaUserInputHistory.ts +0 -88
- package/src/structures/mcp/IMcpLlmTransportProps.ts +0 -13
- package/src/structures/mcp/index.ts +0 -1
- package/src/utils/MathUtil.ts +0 -3
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ChatGptTokenUsageAggregator_1 = require("./ChatGptTokenUsageAggregator");
|
|
4
|
+
describe("chatGptTokenUsageAggregator", () => {
|
|
5
|
+
describe("sum", () => {
|
|
6
|
+
it("should sum basic token usage", () => {
|
|
7
|
+
const usage1 = {
|
|
8
|
+
prompt_tokens: 10,
|
|
9
|
+
completion_tokens: 5,
|
|
10
|
+
total_tokens: 15,
|
|
11
|
+
};
|
|
12
|
+
const usage2 = {
|
|
13
|
+
prompt_tokens: 20,
|
|
14
|
+
completion_tokens: 10,
|
|
15
|
+
total_tokens: 30,
|
|
16
|
+
};
|
|
17
|
+
const result = ChatGptTokenUsageAggregator_1.ChatGptTokenUsageAggregator.sum(usage1, usage2);
|
|
18
|
+
expect(result).toEqual({
|
|
19
|
+
prompt_tokens: 30,
|
|
20
|
+
completion_tokens: 15,
|
|
21
|
+
total_tokens: 45,
|
|
22
|
+
completion_tokens_details: {
|
|
23
|
+
accepted_prediction_tokens: 0,
|
|
24
|
+
reasoning_tokens: 0,
|
|
25
|
+
rejected_prediction_tokens: 0,
|
|
26
|
+
},
|
|
27
|
+
prompt_tokens_details: {
|
|
28
|
+
audio_tokens: 0,
|
|
29
|
+
cached_tokens: 0,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
it("should handle undefined values", () => {
|
|
34
|
+
const usage1 = {
|
|
35
|
+
prompt_tokens: 10,
|
|
36
|
+
completion_tokens: 5,
|
|
37
|
+
total_tokens: 15,
|
|
38
|
+
};
|
|
39
|
+
const usage2 = {
|
|
40
|
+
// @ts-expect-error - intended to be undefined
|
|
41
|
+
prompt_tokens: undefined,
|
|
42
|
+
// @ts-expect-error - intended to be undefined
|
|
43
|
+
completion_tokens: undefined,
|
|
44
|
+
// @ts-expect-error - intended to be undefined
|
|
45
|
+
total_tokens: undefined,
|
|
46
|
+
};
|
|
47
|
+
const result = ChatGptTokenUsageAggregator_1.ChatGptTokenUsageAggregator.sum(usage1, usage2);
|
|
48
|
+
expect(result).toEqual({
|
|
49
|
+
prompt_tokens: 10,
|
|
50
|
+
completion_tokens: 5,
|
|
51
|
+
total_tokens: 15,
|
|
52
|
+
completion_tokens_details: {
|
|
53
|
+
accepted_prediction_tokens: 0,
|
|
54
|
+
reasoning_tokens: 0,
|
|
55
|
+
rejected_prediction_tokens: 0,
|
|
56
|
+
},
|
|
57
|
+
prompt_tokens_details: {
|
|
58
|
+
audio_tokens: 0,
|
|
59
|
+
cached_tokens: 0,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
it("should sum completion token details", () => {
|
|
64
|
+
const usage1 = {
|
|
65
|
+
prompt_tokens: 10,
|
|
66
|
+
completion_tokens: 5,
|
|
67
|
+
total_tokens: 15,
|
|
68
|
+
completion_tokens_details: {
|
|
69
|
+
accepted_prediction_tokens: 3,
|
|
70
|
+
reasoning_tokens: 1,
|
|
71
|
+
rejected_prediction_tokens: 1,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
const usage2 = {
|
|
75
|
+
prompt_tokens: 20,
|
|
76
|
+
completion_tokens: 10,
|
|
77
|
+
total_tokens: 30,
|
|
78
|
+
completion_tokens_details: {
|
|
79
|
+
accepted_prediction_tokens: 7,
|
|
80
|
+
reasoning_tokens: 2,
|
|
81
|
+
rejected_prediction_tokens: 1,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
const result = ChatGptTokenUsageAggregator_1.ChatGptTokenUsageAggregator.sum(usage1, usage2);
|
|
85
|
+
expect(result.completion_tokens_details).toEqual({
|
|
86
|
+
accepted_prediction_tokens: 10,
|
|
87
|
+
reasoning_tokens: 3,
|
|
88
|
+
rejected_prediction_tokens: 2,
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
it("should handle undefined completion token details", () => {
|
|
92
|
+
const usage1 = {
|
|
93
|
+
prompt_tokens: 10,
|
|
94
|
+
completion_tokens: 5,
|
|
95
|
+
total_tokens: 15,
|
|
96
|
+
completion_tokens_details: {
|
|
97
|
+
accepted_prediction_tokens: 3,
|
|
98
|
+
reasoning_tokens: 1,
|
|
99
|
+
rejected_prediction_tokens: 1,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
const usage2 = {
|
|
103
|
+
prompt_tokens: 20,
|
|
104
|
+
completion_tokens: 10,
|
|
105
|
+
total_tokens: 30,
|
|
106
|
+
};
|
|
107
|
+
const result = ChatGptTokenUsageAggregator_1.ChatGptTokenUsageAggregator.sum(usage1, usage2);
|
|
108
|
+
expect(result.completion_tokens_details).toEqual({
|
|
109
|
+
accepted_prediction_tokens: 3,
|
|
110
|
+
reasoning_tokens: 1,
|
|
111
|
+
rejected_prediction_tokens: 1,
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
it("should sum prompt token details", () => {
|
|
115
|
+
const usage1 = {
|
|
116
|
+
prompt_tokens: 10,
|
|
117
|
+
completion_tokens: 5,
|
|
118
|
+
total_tokens: 15,
|
|
119
|
+
prompt_tokens_details: {
|
|
120
|
+
audio_tokens: 3,
|
|
121
|
+
cached_tokens: 2,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
const usage2 = {
|
|
125
|
+
prompt_tokens: 20,
|
|
126
|
+
completion_tokens: 10,
|
|
127
|
+
total_tokens: 30,
|
|
128
|
+
prompt_tokens_details: {
|
|
129
|
+
audio_tokens: 7,
|
|
130
|
+
cached_tokens: 3,
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
const result = ChatGptTokenUsageAggregator_1.ChatGptTokenUsageAggregator.sum(usage1, usage2);
|
|
134
|
+
expect(result.prompt_tokens_details).toEqual({
|
|
135
|
+
audio_tokens: 10,
|
|
136
|
+
cached_tokens: 5,
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
it("should handle undefined prompt token details", () => {
|
|
140
|
+
const usage1 = {
|
|
141
|
+
prompt_tokens: 10,
|
|
142
|
+
completion_tokens: 5,
|
|
143
|
+
total_tokens: 15,
|
|
144
|
+
prompt_tokens_details: {
|
|
145
|
+
audio_tokens: 3,
|
|
146
|
+
cached_tokens: 2,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
const usage2 = {
|
|
150
|
+
prompt_tokens: 20,
|
|
151
|
+
completion_tokens: 10,
|
|
152
|
+
total_tokens: 30,
|
|
153
|
+
};
|
|
154
|
+
const result = ChatGptTokenUsageAggregator_1.ChatGptTokenUsageAggregator.sum(usage1, usage2);
|
|
155
|
+
expect(result.prompt_tokens_details).toEqual({
|
|
156
|
+
audio_tokens: 3,
|
|
157
|
+
cached_tokens: 2,
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
it("should handle all undefined values", () => {
|
|
161
|
+
const usage1 = {
|
|
162
|
+
// @ts-expect-error - intended to be undefined
|
|
163
|
+
prompt_tokens: undefined,
|
|
164
|
+
// @ts-expect-error - intended to be undefined
|
|
165
|
+
completion_tokens: undefined,
|
|
166
|
+
// @ts-expect-error - intended to be undefined
|
|
167
|
+
total_tokens: undefined,
|
|
168
|
+
completion_tokens_details: undefined,
|
|
169
|
+
prompt_tokens_details: undefined,
|
|
170
|
+
};
|
|
171
|
+
const usage2 = {
|
|
172
|
+
// @ts-expect-error - intended to be undefined
|
|
173
|
+
prompt_tokens: undefined,
|
|
174
|
+
// @ts-expect-error - intended to be undefined
|
|
175
|
+
completion_tokens: undefined,
|
|
176
|
+
// @ts-expect-error - intended to be undefined
|
|
177
|
+
total_tokens: undefined,
|
|
178
|
+
completion_tokens_details: undefined,
|
|
179
|
+
prompt_tokens_details: undefined,
|
|
180
|
+
};
|
|
181
|
+
const result = ChatGptTokenUsageAggregator_1.ChatGptTokenUsageAggregator.sum(usage1, usage2);
|
|
182
|
+
expect(result).toEqual({
|
|
183
|
+
prompt_tokens: 0,
|
|
184
|
+
completion_tokens: 0,
|
|
185
|
+
total_tokens: 0,
|
|
186
|
+
completion_tokens_details: {
|
|
187
|
+
accepted_prediction_tokens: 0,
|
|
188
|
+
reasoning_tokens: 0,
|
|
189
|
+
rejected_prediction_tokens: 0,
|
|
190
|
+
},
|
|
191
|
+
prompt_tokens_details: {
|
|
192
|
+
audio_tokens: 0,
|
|
193
|
+
cached_tokens: 0,
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=ChatGptTokenUsageAggregator.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatGptTokenUsageAggregator.spec.js","sourceRoot":"","sources":["../../src/utils/ChatGptTokenUsageAggregator.spec.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/Singleton.js
CHANGED
|
@@ -7,6 +7,24 @@ exports.Singleton = void 0;
|
|
|
7
7
|
const NOT_MOUNTED_YET = {};
|
|
8
8
|
/**
|
|
9
9
|
* @internal
|
|
10
|
+
*
|
|
11
|
+
* @description
|
|
12
|
+
* A singleton class that creates a single instance of a class.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const singleton = new Singleton((name: string) => new SomeClass(name));
|
|
17
|
+
* const instance = singleton.get("test");
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* but next case is not work
|
|
21
|
+
* ```ts
|
|
22
|
+
* const singleton = new Singleton((name: string) => new SomeClass(name));
|
|
23
|
+
* const instance = singleton.get("test");
|
|
24
|
+
* const instance2 = singleton.get("test2");
|
|
25
|
+
*
|
|
26
|
+
* expect(instance).toBe(instance2); // true
|
|
27
|
+
* ```
|
|
10
28
|
*/
|
|
11
29
|
class Singleton {
|
|
12
30
|
constructor(closure) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Singleton.js","sourceRoot":"","sources":["../../src/utils/Singleton.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B
|
|
1
|
+
{"version":3,"file":"Singleton.js","sourceRoot":"","sources":["../../src/utils/Singleton.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,SAAS;IAIpB,YAAmB,OAA6B;QAC9C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;IAChC,CAAC;IAEM,GAAG,CAAC,GAAG,IAAU;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,MAAW,CAAC;IAC1B,CAAC;CACF;AAfD,8BAeC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Singleton_1 = require("./Singleton");
|
|
4
|
+
describe("singleton", () => {
|
|
5
|
+
describe("basic functionality", () => {
|
|
6
|
+
it("should create instance only once", () => {
|
|
7
|
+
const factory = () => ({ value: 42 });
|
|
8
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
9
|
+
const instance1 = singleton.get();
|
|
10
|
+
const instance2 = singleton.get();
|
|
11
|
+
expect(instance1).toBe(instance2);
|
|
12
|
+
expect(instance1.value).toBe(42);
|
|
13
|
+
});
|
|
14
|
+
it("should create different instances for different singletons", () => {
|
|
15
|
+
const factory1 = () => ({ value: 42 });
|
|
16
|
+
const factory2 = () => ({ value: 24 });
|
|
17
|
+
const singleton1 = new Singleton_1.Singleton(factory1);
|
|
18
|
+
const singleton2 = new Singleton_1.Singleton(factory2);
|
|
19
|
+
const instance1 = singleton1.get();
|
|
20
|
+
const instance2 = singleton2.get();
|
|
21
|
+
expect(instance1).not.toBe(instance2);
|
|
22
|
+
expect(instance1.value).toBe(42);
|
|
23
|
+
expect(instance2.value).toBe(24);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe("constructor arguments", () => {
|
|
27
|
+
it("should pass constructor arguments to factory", () => {
|
|
28
|
+
const factory = (value) => ({ value });
|
|
29
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
30
|
+
const instance = singleton.get(42);
|
|
31
|
+
expect(instance.value).toBe(42);
|
|
32
|
+
});
|
|
33
|
+
it("should use same instance with same constructor arguments", () => {
|
|
34
|
+
const factory = (value) => ({ value });
|
|
35
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
36
|
+
const instance1 = singleton.get(42);
|
|
37
|
+
const instance2 = singleton.get(42);
|
|
38
|
+
expect(instance1).toBe(instance2);
|
|
39
|
+
expect(instance1.value).toBe(42);
|
|
40
|
+
});
|
|
41
|
+
it("should return same instance even with different constructor arguments", () => {
|
|
42
|
+
const factory = (value) => ({ value });
|
|
43
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
44
|
+
const instance1 = singleton.get(42);
|
|
45
|
+
const instance2 = singleton.get(24);
|
|
46
|
+
expect(instance1).toBe(instance2);
|
|
47
|
+
expect(instance1.value).toBe(42);
|
|
48
|
+
expect(instance2.value).toBe(42);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("complex object types", () => {
|
|
52
|
+
it("should handle complex objects", () => {
|
|
53
|
+
const factory = (id, name, value) => ({
|
|
54
|
+
id,
|
|
55
|
+
data: { name, value },
|
|
56
|
+
timestamp: new Date(),
|
|
57
|
+
});
|
|
58
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
59
|
+
const instance = singleton.get(1, "test", 42);
|
|
60
|
+
expect(instance.id).toBe(1);
|
|
61
|
+
expect(instance.data.name).toBe("test");
|
|
62
|
+
expect(instance.data.value).toBe(42);
|
|
63
|
+
expect(instance.timestamp).toBeInstanceOf(Date);
|
|
64
|
+
});
|
|
65
|
+
it("should maintain same complex object instance", () => {
|
|
66
|
+
const factory = () => ({
|
|
67
|
+
data: new Map([["key", 42]]),
|
|
68
|
+
array: [1, 2, 3],
|
|
69
|
+
});
|
|
70
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
71
|
+
const instance1 = singleton.get();
|
|
72
|
+
const instance2 = singleton.get();
|
|
73
|
+
expect(instance1).toBe(instance2);
|
|
74
|
+
expect(instance1.data).toBe(instance2.data);
|
|
75
|
+
expect(instance1.array).toBe(instance2.array);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("edge cases", () => {
|
|
79
|
+
it("should handle null factory return", () => {
|
|
80
|
+
const factory = () => null;
|
|
81
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
82
|
+
const instance = singleton.get();
|
|
83
|
+
expect(instance).toBeNull();
|
|
84
|
+
});
|
|
85
|
+
it("should handle undefined factory return", () => {
|
|
86
|
+
const factory = () => undefined;
|
|
87
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
88
|
+
const instance = singleton.get();
|
|
89
|
+
expect(instance).toBeUndefined();
|
|
90
|
+
});
|
|
91
|
+
it("should handle primitive values", () => {
|
|
92
|
+
const factory = () => 42;
|
|
93
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
94
|
+
const instance = singleton.get();
|
|
95
|
+
expect(instance).toBe(42);
|
|
96
|
+
});
|
|
97
|
+
it("should handle factory throwing error", () => {
|
|
98
|
+
const factory = () => {
|
|
99
|
+
throw new Error("Factory error");
|
|
100
|
+
};
|
|
101
|
+
const singleton = new Singleton_1.Singleton(factory);
|
|
102
|
+
expect(() => singleton.get()).toThrow("Factory error");
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=Singleton.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Singleton.spec.js","sourceRoot":"","sources":["../../src/utils/Singleton.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const __map_take_1 = require("./__map_take");
|
|
4
|
+
describe("__map_take", () => {
|
|
5
|
+
describe("basic functionality", () => {
|
|
6
|
+
it("should generate value for new key", () => {
|
|
7
|
+
const map = new Map();
|
|
8
|
+
const generator = () => 42;
|
|
9
|
+
const result = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
10
|
+
expect(result).toBe(42);
|
|
11
|
+
expect(map.get("test")).toBe(42);
|
|
12
|
+
});
|
|
13
|
+
it("should return existing value for existing key", () => {
|
|
14
|
+
const map = new Map();
|
|
15
|
+
map.set("test", 100);
|
|
16
|
+
const generator = () => 42;
|
|
17
|
+
const result = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
18
|
+
expect(result).toBe(100);
|
|
19
|
+
expect(map.get("test")).toBe(100);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
describe("various type tests", () => {
|
|
23
|
+
it("should handle object type", () => {
|
|
24
|
+
const map = new Map();
|
|
25
|
+
const generator = () => ({ value: 42 });
|
|
26
|
+
const result = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
27
|
+
expect(result).toEqual({ value: 42 });
|
|
28
|
+
expect(map.get("test")).toEqual({ value: 42 });
|
|
29
|
+
});
|
|
30
|
+
it("should handle array type", () => {
|
|
31
|
+
const map = new Map();
|
|
32
|
+
const generator = () => [1, 2, 3];
|
|
33
|
+
const result = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
34
|
+
expect(result).toEqual([1, 2, 3]);
|
|
35
|
+
expect(map.get("test")).toEqual([1, 2, 3]);
|
|
36
|
+
});
|
|
37
|
+
it("should handle function type", () => {
|
|
38
|
+
var _a;
|
|
39
|
+
const map = new Map();
|
|
40
|
+
const generator = () => () => 42;
|
|
41
|
+
const result = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
42
|
+
expect(result()).toBe(42);
|
|
43
|
+
expect((_a = map.get("test")) === null || _a === void 0 ? void 0 : _a()).toBe(42);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe("edge cases", () => {
|
|
47
|
+
it("should handle null key", () => {
|
|
48
|
+
const map = new Map();
|
|
49
|
+
const generator = () => "test";
|
|
50
|
+
const result = (0, __map_take_1.__map_take)(map, null, generator);
|
|
51
|
+
expect(result).toBe("test");
|
|
52
|
+
expect(map.get(null)).toBe("test");
|
|
53
|
+
});
|
|
54
|
+
it("should handle undefined key", () => {
|
|
55
|
+
const map = new Map();
|
|
56
|
+
const generator = () => "test";
|
|
57
|
+
const result = (0, __map_take_1.__map_take)(map, undefined, generator);
|
|
58
|
+
expect(result).toBe("test");
|
|
59
|
+
expect(map.get(undefined)).toBe("test");
|
|
60
|
+
});
|
|
61
|
+
it("should handle empty string key", () => {
|
|
62
|
+
const map = new Map();
|
|
63
|
+
const generator = () => "test";
|
|
64
|
+
const result = (0, __map_take_1.__map_take)(map, "", generator);
|
|
65
|
+
expect(result).toBe("test");
|
|
66
|
+
expect(map.get("")).toBe("test");
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe("generator function tests", () => {
|
|
70
|
+
it("should not call generator multiple times", () => {
|
|
71
|
+
const map = new Map();
|
|
72
|
+
let callCount = 0;
|
|
73
|
+
const generator = () => {
|
|
74
|
+
callCount++;
|
|
75
|
+
return 42;
|
|
76
|
+
};
|
|
77
|
+
(0, __map_take_1.__map_take)(map, "test", generator);
|
|
78
|
+
(0, __map_take_1.__map_take)(map, "test", generator);
|
|
79
|
+
expect(callCount).toBe(1);
|
|
80
|
+
});
|
|
81
|
+
it("should handle generator throwing error", () => {
|
|
82
|
+
const map = new Map();
|
|
83
|
+
const generator = () => {
|
|
84
|
+
throw new Error("Generator error");
|
|
85
|
+
};
|
|
86
|
+
expect(() => (0, __map_take_1.__map_take)(map, "test", generator)).toThrow("Generator error");
|
|
87
|
+
});
|
|
88
|
+
it("should handle generator returning undefined", () => {
|
|
89
|
+
const map = new Map();
|
|
90
|
+
const generator = () => undefined;
|
|
91
|
+
const result = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
92
|
+
expect(result).toBeUndefined();
|
|
93
|
+
expect(map.get("test")).toBeUndefined();
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe("concurrency tests", () => {
|
|
97
|
+
it("should handle concurrent access to same key", () => {
|
|
98
|
+
const map = new Map();
|
|
99
|
+
const generator = () => 42;
|
|
100
|
+
const result1 = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
101
|
+
const result2 = (0, __map_take_1.__map_take)(map, "test", generator);
|
|
102
|
+
expect(result1).toBe(42);
|
|
103
|
+
expect(result2).toBe(42);
|
|
104
|
+
expect(map.get("test")).toBe(42);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=__map_take.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"__map_take.spec.js","sourceRoot":"","sources":["../../src/utils/__map_take.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentica/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.0",
|
|
4
4
|
"description": "Agentic AI Library specialized in LLM Function Calling",
|
|
5
5
|
"author": "Wrtn Technologies",
|
|
6
6
|
"license": "MIT",
|
|
@@ -36,14 +36,13 @@
|
|
|
36
36
|
"access": "public"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"@
|
|
40
|
-
"@samchon/openapi": "^4.2.0",
|
|
39
|
+
"@samchon/openapi": "^4.3.0",
|
|
41
40
|
"openai": "^4.80.0",
|
|
42
|
-
"typia": "^9.0
|
|
41
|
+
"typia": "^9.3.0"
|
|
43
42
|
},
|
|
44
43
|
"dependencies": {
|
|
45
|
-
"@samchon/openapi": "^4.
|
|
46
|
-
"typia": "^9.0
|
|
44
|
+
"@samchon/openapi": "^4.3.0",
|
|
45
|
+
"typia": "^9.3.0",
|
|
47
46
|
"uuid": "^11.0.4"
|
|
48
47
|
},
|
|
49
48
|
"devDependencies": {
|
package/src/Agentica.ts
CHANGED
|
@@ -6,8 +6,9 @@ import type { AgenticaOperationCollection } from "./context/AgenticaOperationCol
|
|
|
6
6
|
import type { AgenticaOperationSelection } from "./context/AgenticaOperationSelection";
|
|
7
7
|
import type { AgenticaEvent } from "./events/AgenticaEvent";
|
|
8
8
|
import type { AgenticaRequestEvent } from "./events/AgenticaRequestEvent";
|
|
9
|
+
import type { AgenticaUserMessageContent } from "./histories";
|
|
9
10
|
import type { AgenticaHistory } from "./histories/AgenticaHistory";
|
|
10
|
-
import type {
|
|
11
|
+
import type { AgenticaUserMessageHistory } from "./histories/AgenticaUserMessageHistory";
|
|
11
12
|
import type { IAgenticaConfig } from "./structures/IAgenticaConfig";
|
|
12
13
|
import type { IAgenticaController } from "./structures/IAgenticaController";
|
|
13
14
|
import type { IAgenticaProps } from "./structures/IAgenticaProps";
|
|
@@ -16,10 +17,10 @@ import type { IAgenticaVendor } from "./structures/IAgenticaVendor";
|
|
|
16
17
|
import { AgenticaTokenUsage } from "./context/AgenticaTokenUsage";
|
|
17
18
|
import { AgenticaOperationComposer } from "./context/internal/AgenticaOperationComposer";
|
|
18
19
|
import { AgenticaTokenUsageAggregator } from "./context/internal/AgenticaTokenUsageAggregator";
|
|
19
|
-
import {
|
|
20
|
-
import { createInitializeEvent, createRequestEvent,
|
|
20
|
+
import { createUserMessageHistory } from "./factory";
|
|
21
|
+
import { createInitializeEvent, createRequestEvent, createUserMessageEvent } from "./factory/events";
|
|
21
22
|
import { execute } from "./orchestrate/execute";
|
|
22
|
-
import {
|
|
23
|
+
import { transformHistory } from "./transformers/transformHistory";
|
|
23
24
|
import { __map_take } from "./utils/__map_take";
|
|
24
25
|
import { ChatGptCompletionMessageUtil } from "./utils/ChatGptCompletionMessageUtil";
|
|
25
26
|
import { streamDefaultReaderToAsyncGenerator, StreamUtil } from "./utils/StreamUtil";
|
|
@@ -86,7 +87,7 @@ export class Agentica<Model extends ILlmSchema.Model> {
|
|
|
86
87
|
this.stack_ = [];
|
|
87
88
|
this.listeners_ = new Map();
|
|
88
89
|
this.histories_ = (props.histories ?? []).map(input =>
|
|
89
|
-
|
|
90
|
+
transformHistory({
|
|
90
91
|
operations: this.operations_.group,
|
|
91
92
|
history: input,
|
|
92
93
|
}),
|
|
@@ -124,10 +125,18 @@ export class Agentica<Model extends ILlmSchema.Model> {
|
|
|
124
125
|
* function calling information like {@link AgenticaExecuteHistory}.
|
|
125
126
|
*
|
|
126
127
|
* @param content The content to talk
|
|
128
|
+
* @param options Options
|
|
129
|
+
* @param options.abortSignal Abort signal
|
|
130
|
+
* @throws AbortError
|
|
127
131
|
* @returns List of newly created chat prompts
|
|
128
132
|
*/
|
|
129
|
-
public async conversate(
|
|
130
|
-
|
|
133
|
+
public async conversate(
|
|
134
|
+
content: string | AgenticaUserMessageContent | Array<AgenticaUserMessageContent>,
|
|
135
|
+
options: {
|
|
136
|
+
abortSignal?: AbortSignal;
|
|
137
|
+
} = {},
|
|
138
|
+
): Promise<AgenticaHistory<Model>[]> {
|
|
139
|
+
const prompt: AgenticaUserMessageHistory = createUserMessageHistory({
|
|
131
140
|
contents: Array.isArray(content)
|
|
132
141
|
? content
|
|
133
142
|
: typeof content === "string"
|
|
@@ -139,7 +148,7 @@ export class Agentica<Model extends ILlmSchema.Model> {
|
|
|
139
148
|
});
|
|
140
149
|
|
|
141
150
|
this.dispatch(
|
|
142
|
-
|
|
151
|
+
createUserMessageEvent({
|
|
143
152
|
contents: prompt.contents,
|
|
144
153
|
}),
|
|
145
154
|
).catch(() => {});
|
|
@@ -147,6 +156,7 @@ export class Agentica<Model extends ILlmSchema.Model> {
|
|
|
147
156
|
const newbie: AgenticaHistory<Model>[] = await this.executor_(
|
|
148
157
|
this.getContext({
|
|
149
158
|
prompt,
|
|
159
|
+
abortSignal: options.abortSignal,
|
|
150
160
|
usage: this.token_usage_,
|
|
151
161
|
}),
|
|
152
162
|
);
|
|
@@ -217,8 +227,9 @@ export class Agentica<Model extends ILlmSchema.Model> {
|
|
|
217
227
|
* @internal
|
|
218
228
|
*/
|
|
219
229
|
public getContext(props: {
|
|
220
|
-
prompt:
|
|
230
|
+
prompt: AgenticaUserMessageHistory;
|
|
221
231
|
usage: AgenticaTokenUsage;
|
|
232
|
+
abortSignal?: AbortSignal;
|
|
222
233
|
}): AgenticaContext<Model> {
|
|
223
234
|
const dispatch = async (event: AgenticaEvent<Model>) => this.dispatch(event);
|
|
224
235
|
return {
|
|
@@ -231,6 +242,7 @@ export class Agentica<Model extends ILlmSchema.Model> {
|
|
|
231
242
|
stack: this.stack_,
|
|
232
243
|
ready: () => this.ready_,
|
|
233
244
|
prompt: props.prompt,
|
|
245
|
+
abortSignal: props.abortSignal,
|
|
234
246
|
|
|
235
247
|
// HANDLERS
|
|
236
248
|
dispatch: async event => this.dispatch(event),
|
|
@@ -246,7 +258,10 @@ export class Agentica<Model extends ILlmSchema.Model> {
|
|
|
246
258
|
include_usage: true,
|
|
247
259
|
},
|
|
248
260
|
},
|
|
249
|
-
options:
|
|
261
|
+
options: {
|
|
262
|
+
...this.props.vendor.options,
|
|
263
|
+
signal: props.abortSignal,
|
|
264
|
+
},
|
|
250
265
|
});
|
|
251
266
|
await dispatch(event);
|
|
252
267
|
|