@agenticc/core 1.0.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 -0
- package/README.md +370 -0
- package/README.zh-CN.md +372 -0
- package/dist/audit/index.d.ts +9 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +9 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/logger.d.ts +211 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +268 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/audit/query.d.ts +164 -0
- package/dist/audit/query.d.ts.map +1 -0
- package/dist/audit/query.js +250 -0
- package/dist/audit/query.js.map +1 -0
- package/dist/conversation/context-builder.d.ts +119 -0
- package/dist/conversation/context-builder.d.ts.map +1 -0
- package/dist/conversation/context-builder.js +252 -0
- package/dist/conversation/context-builder.js.map +1 -0
- package/dist/conversation/index.d.ts +10 -0
- package/dist/conversation/index.d.ts.map +1 -0
- package/dist/conversation/index.js +10 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/message-store.d.ts +231 -0
- package/dist/conversation/message-store.d.ts.map +1 -0
- package/dist/conversation/message-store.js +404 -0
- package/dist/conversation/message-store.js.map +1 -0
- package/dist/conversation/session.d.ts +201 -0
- package/dist/conversation/session.d.ts.map +1 -0
- package/dist/conversation/session.js +285 -0
- package/dist/conversation/session.js.map +1 -0
- package/dist/core/agent.d.ts +277 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +674 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/agentic-loop.d.ts +98 -0
- package/dist/core/agentic-loop.d.ts.map +1 -0
- package/dist/core/agentic-loop.js +496 -0
- package/dist/core/agentic-loop.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/intent-parser.d.ts +101 -0
- package/dist/core/intent-parser.d.ts.map +1 -0
- package/dist/core/intent-parser.js +221 -0
- package/dist/core/intent-parser.js.map +1 -0
- package/dist/core/plan-generator.d.ts +133 -0
- package/dist/core/plan-generator.d.ts.map +1 -0
- package/dist/core/plan-generator.js +294 -0
- package/dist/core/plan-generator.js.map +1 -0
- package/dist/core/plugin-manager.d.ts +120 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-manager.js +369 -0
- package/dist/core/plugin-manager.js.map +1 -0
- package/dist/core/response-handler.d.ts +141 -0
- package/dist/core/response-handler.d.ts.map +1 -0
- package/dist/core/response-handler.js +384 -0
- package/dist/core/response-handler.js.map +1 -0
- package/dist/core/tool-executor.d.ts +143 -0
- package/dist/core/tool-executor.d.ts.map +1 -0
- package/dist/core/tool-executor.js +354 -0
- package/dist/core/tool-executor.js.map +1 -0
- package/dist/core/tool-registry.d.ts +133 -0
- package/dist/core/tool-registry.d.ts.map +1 -0
- package/dist/core/tool-registry.js +252 -0
- package/dist/core/tool-registry.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/chunker.d.ts +78 -0
- package/dist/knowledge/chunker.d.ts.map +1 -0
- package/dist/knowledge/chunker.js +233 -0
- package/dist/knowledge/chunker.js.map +1 -0
- package/dist/knowledge/embedder.d.ts +93 -0
- package/dist/knowledge/embedder.d.ts.map +1 -0
- package/dist/knowledge/embedder.js +205 -0
- package/dist/knowledge/embedder.js.map +1 -0
- package/dist/knowledge/index.d.ts +10 -0
- package/dist/knowledge/index.d.ts.map +1 -0
- package/dist/knowledge/index.js +11 -0
- package/dist/knowledge/index.js.map +1 -0
- package/dist/knowledge/loaders/index.d.ts +10 -0
- package/dist/knowledge/loaders/index.d.ts.map +1 -0
- package/dist/knowledge/loaders/index.js +10 -0
- package/dist/knowledge/loaders/index.js.map +1 -0
- package/dist/knowledge/loaders/markdown.d.ts +88 -0
- package/dist/knowledge/loaders/markdown.d.ts.map +1 -0
- package/dist/knowledge/loaders/markdown.js +205 -0
- package/dist/knowledge/loaders/markdown.js.map +1 -0
- package/dist/knowledge/loaders/yaml.d.ts +112 -0
- package/dist/knowledge/loaders/yaml.d.ts.map +1 -0
- package/dist/knowledge/loaders/yaml.js +368 -0
- package/dist/knowledge/loaders/yaml.js.map +1 -0
- package/dist/knowledge/retriever.d.ts +144 -0
- package/dist/knowledge/retriever.d.ts.map +1 -0
- package/dist/knowledge/retriever.js +399 -0
- package/dist/knowledge/retriever.js.map +1 -0
- package/dist/knowledge/store.d.ts +146 -0
- package/dist/knowledge/store.d.ts.map +1 -0
- package/dist/knowledge/store.js +420 -0
- package/dist/knowledge/store.js.map +1 -0
- package/dist/llm/adapter.d.ts +194 -0
- package/dist/llm/adapter.d.ts.map +1 -0
- package/dist/llm/adapter.js +42 -0
- package/dist/llm/adapter.js.map +1 -0
- package/dist/llm/adapters/anyrouter.d.ts +84 -0
- package/dist/llm/adapters/anyrouter.d.ts.map +1 -0
- package/dist/llm/adapters/anyrouter.js +372 -0
- package/dist/llm/adapters/anyrouter.js.map +1 -0
- package/dist/llm/adapters/claude.d.ts +66 -0
- package/dist/llm/adapters/claude.d.ts.map +1 -0
- package/dist/llm/adapters/claude.js +323 -0
- package/dist/llm/adapters/claude.js.map +1 -0
- package/dist/llm/adapters/index.d.ts +12 -0
- package/dist/llm/adapters/index.d.ts.map +1 -0
- package/dist/llm/adapters/index.js +12 -0
- package/dist/llm/adapters/index.js.map +1 -0
- package/dist/llm/adapters/mimo.d.ts +85 -0
- package/dist/llm/adapters/mimo.d.ts.map +1 -0
- package/dist/llm/adapters/mimo.js +316 -0
- package/dist/llm/adapters/mimo.js.map +1 -0
- package/dist/llm/adapters/openai.d.ts +53 -0
- package/dist/llm/adapters/openai.d.ts.map +1 -0
- package/dist/llm/adapters/openai.js +293 -0
- package/dist/llm/adapters/openai.js.map +1 -0
- package/dist/llm/adapters/qwen.d.ts +53 -0
- package/dist/llm/adapters/qwen.d.ts.map +1 -0
- package/dist/llm/adapters/qwen.js +299 -0
- package/dist/llm/adapters/qwen.js.map +1 -0
- package/dist/llm/adapters/siliconflow.d.ts +69 -0
- package/dist/llm/adapters/siliconflow.d.ts.map +1 -0
- package/dist/llm/adapters/siliconflow.js +331 -0
- package/dist/llm/adapters/siliconflow.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +12 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/manager.d.ts +97 -0
- package/dist/llm/manager.d.ts.map +1 -0
- package/dist/llm/manager.js +337 -0
- package/dist/llm/manager.js.map +1 -0
- package/dist/test-utils/arbitraries.d.ts +230 -0
- package/dist/test-utils/arbitraries.d.ts.map +1 -0
- package/dist/test-utils/arbitraries.js +280 -0
- package/dist/test-utils/arbitraries.js.map +1 -0
- package/dist/test-utils/cleanup.d.ts +184 -0
- package/dist/test-utils/cleanup.d.ts.map +1 -0
- package/dist/test-utils/cleanup.js +282 -0
- package/dist/test-utils/cleanup.js.map +1 -0
- package/dist/test-utils/config.d.ts +80 -0
- package/dist/test-utils/config.d.ts.map +1 -0
- package/dist/test-utils/config.js +94 -0
- package/dist/test-utils/config.js.map +1 -0
- package/dist/test-utils/index.d.ts +10 -0
- package/dist/test-utils/index.d.ts.map +1 -0
- package/dist/test-utils/index.js +36 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/mocks.d.ts +170 -0
- package/dist/test-utils/mocks.d.ts.map +1 -0
- package/dist/test-utils/mocks.js +281 -0
- package/dist/test-utils/mocks.js.map +1 -0
- package/dist/types/config.d.ts +170 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +120 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/knowledge.d.ts +95 -0
- package/dist/types/knowledge.d.ts.map +1 -0
- package/dist/types/knowledge.js +7 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/loop.d.ts +148 -0
- package/dist/types/loop.d.ts.map +1 -0
- package/dist/types/loop.js +16 -0
- package/dist/types/loop.js.map +1 -0
- package/dist/types/plugin.d.ts +137 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +15 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/types/response.d.ts +186 -0
- package/dist/types/response.d.ts.map +1 -0
- package/dist/types/response.js +99 -0
- package/dist/types/response.js.map +1 -0
- package/dist/types/streaming.d.ts +478 -0
- package/dist/types/streaming.d.ts.map +1 -0
- package/dist/types/streaming.js +483 -0
- package/dist/types/streaming.js.map +1 -0
- package/dist/types/tool.d.ts +118 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +42 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/error.d.ts +22 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +36 -0
- package/dist/utils/error.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML Document Loader
|
|
3
|
+
*
|
|
4
|
+
* Parses YAML configuration files and converts them to searchable text
|
|
5
|
+
* for the knowledge base. Supports MythicMobs and other game configuration formats.
|
|
6
|
+
*
|
|
7
|
+
* _Requirements: 3.1_
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Simple YAML parser for common configuration formats
|
|
11
|
+
* Handles basic YAML structures without external dependencies
|
|
12
|
+
*/
|
|
13
|
+
export function parseYaml(content) {
|
|
14
|
+
const result = {};
|
|
15
|
+
const lines = content.split(/\r?\n/);
|
|
16
|
+
// Root item has special handling
|
|
17
|
+
const stack = [];
|
|
18
|
+
let currentObj = result;
|
|
19
|
+
let lastKey = null;
|
|
20
|
+
let lastKeyIndent = -1;
|
|
21
|
+
let lastKeyParent = result;
|
|
22
|
+
let multilineValue = [];
|
|
23
|
+
let isMultiline = false;
|
|
24
|
+
let multilineIndent = 0;
|
|
25
|
+
let multilineKey = null;
|
|
26
|
+
let multilineParent = null;
|
|
27
|
+
for (let i = 0; i < lines.length; i++) {
|
|
28
|
+
const line = lines[i];
|
|
29
|
+
// Skip empty lines and comments
|
|
30
|
+
if (line.trim() === '' || line.trim().startsWith('#')) {
|
|
31
|
+
if (isMultiline) {
|
|
32
|
+
multilineValue.push('');
|
|
33
|
+
}
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// Calculate indentation
|
|
37
|
+
const indent = line.search(/\S/);
|
|
38
|
+
const trimmedLine = line.trim();
|
|
39
|
+
// Handle multiline strings
|
|
40
|
+
if (isMultiline) {
|
|
41
|
+
if (indent > multilineIndent) {
|
|
42
|
+
multilineValue.push(line.slice(multilineIndent + 2));
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// End of multiline - save to the correct parent
|
|
47
|
+
if (multilineKey && multilineParent) {
|
|
48
|
+
multilineParent[multilineKey] = multilineValue.join('\n').trim();
|
|
49
|
+
}
|
|
50
|
+
isMultiline = false;
|
|
51
|
+
multilineValue = [];
|
|
52
|
+
multilineKey = null;
|
|
53
|
+
multilineParent = null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Pop stack to correct level based on indentation
|
|
57
|
+
while (stack.length > 0 && stack[stack.length - 1].indent >= indent) {
|
|
58
|
+
stack.pop();
|
|
59
|
+
}
|
|
60
|
+
// Update currentObj based on stack
|
|
61
|
+
currentObj = stack.length > 0 ? stack[stack.length - 1].obj : result;
|
|
62
|
+
// Handle list items
|
|
63
|
+
if (trimmedLine.startsWith('- ')) {
|
|
64
|
+
const listValue = trimmedLine.slice(2).trim();
|
|
65
|
+
// Find the key for this list
|
|
66
|
+
// If we have a stack item at a lower indent, use its key
|
|
67
|
+
// Otherwise use lastKey
|
|
68
|
+
let listKey = null;
|
|
69
|
+
let listParent = result;
|
|
70
|
+
// Check if there's a stack item that should contain this list
|
|
71
|
+
for (let j = stack.length - 1; j >= 0; j--) {
|
|
72
|
+
if (stack[j].indent < indent) {
|
|
73
|
+
listKey = stack[j].key;
|
|
74
|
+
listParent = stack[j].parentObj;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// If no stack item found, use lastKey if it's at a lower indent
|
|
79
|
+
if (!listKey && lastKey && lastKeyIndent < indent) {
|
|
80
|
+
listKey = lastKey;
|
|
81
|
+
listParent = lastKeyParent;
|
|
82
|
+
}
|
|
83
|
+
if (listKey && listParent[listKey] !== undefined) {
|
|
84
|
+
// Convert empty object to array if needed
|
|
85
|
+
if (typeof listParent[listKey] === 'object' &&
|
|
86
|
+
!Array.isArray(listParent[listKey]) &&
|
|
87
|
+
Object.keys(listParent[listKey]).length === 0) {
|
|
88
|
+
listParent[listKey] = [];
|
|
89
|
+
}
|
|
90
|
+
if (Array.isArray(listParent[listKey])) {
|
|
91
|
+
// Check if it's a key-value pair in the list item
|
|
92
|
+
const colonIndex = listValue.indexOf(':');
|
|
93
|
+
if (colonIndex > 0 && !listValue.startsWith('"') && !listValue.startsWith("'")) {
|
|
94
|
+
const itemKey = listValue.slice(0, colonIndex).trim();
|
|
95
|
+
const itemValue = listValue.slice(colonIndex + 1).trim();
|
|
96
|
+
const item = {};
|
|
97
|
+
item[itemKey] = parseValue(itemValue);
|
|
98
|
+
listParent[listKey].push(item);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
listParent[listKey].push(parseValue(listValue));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
// Handle key-value pairs
|
|
108
|
+
const colonIndex = trimmedLine.indexOf(':');
|
|
109
|
+
if (colonIndex > 0) {
|
|
110
|
+
const key = trimmedLine.slice(0, colonIndex).trim();
|
|
111
|
+
const valueStr = trimmedLine.slice(colonIndex + 1).trim();
|
|
112
|
+
if (valueStr === '' || valueStr === '|' || valueStr === '>') {
|
|
113
|
+
// Nested object, array, or multiline string
|
|
114
|
+
if (valueStr === '|' || valueStr === '>') {
|
|
115
|
+
isMultiline = true;
|
|
116
|
+
multilineIndent = indent;
|
|
117
|
+
multilineValue = [];
|
|
118
|
+
multilineKey = key;
|
|
119
|
+
multilineParent = currentObj;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// Could be object or array - create empty object for now
|
|
123
|
+
currentObj[key] = {};
|
|
124
|
+
stack.push({
|
|
125
|
+
obj: currentObj[key],
|
|
126
|
+
indent,
|
|
127
|
+
key,
|
|
128
|
+
parentObj: currentObj,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
lastKey = key;
|
|
132
|
+
lastKeyIndent = indent;
|
|
133
|
+
lastKeyParent = currentObj;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Simple value
|
|
137
|
+
currentObj[key] = parseValue(valueStr);
|
|
138
|
+
lastKey = key;
|
|
139
|
+
lastKeyIndent = indent;
|
|
140
|
+
lastKeyParent = currentObj;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Handle any remaining multiline content
|
|
145
|
+
if (isMultiline && multilineKey && multilineParent) {
|
|
146
|
+
multilineParent[multilineKey] = multilineValue.join('\n').trim();
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Parse a YAML value string to appropriate type
|
|
152
|
+
*/
|
|
153
|
+
function parseValue(value) {
|
|
154
|
+
// Remove quotes
|
|
155
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
156
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
157
|
+
return value.slice(1, -1);
|
|
158
|
+
}
|
|
159
|
+
// Boolean
|
|
160
|
+
if (value === 'true' || value === 'yes' || value === 'on')
|
|
161
|
+
return true;
|
|
162
|
+
if (value === 'false' || value === 'no' || value === 'off')
|
|
163
|
+
return false;
|
|
164
|
+
// Null
|
|
165
|
+
if (value === 'null' || value === '~' || value === '')
|
|
166
|
+
return null;
|
|
167
|
+
// Number
|
|
168
|
+
if (!isNaN(Number(value)) && value !== '') {
|
|
169
|
+
return Number(value);
|
|
170
|
+
}
|
|
171
|
+
// String
|
|
172
|
+
return value;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Flatten a YAML object into nodes with paths
|
|
176
|
+
*/
|
|
177
|
+
export function flattenYaml(data, options) {
|
|
178
|
+
const nodes = [];
|
|
179
|
+
const maxDepth = options?.maxDepth ?? 10;
|
|
180
|
+
const includeArrayIndices = options?.includeArrayIndices ?? true;
|
|
181
|
+
function traverse(obj, path, depth) {
|
|
182
|
+
// Stop if we've exceeded max depth
|
|
183
|
+
if (depth >= maxDepth)
|
|
184
|
+
return;
|
|
185
|
+
if (obj === null || obj === undefined) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (Array.isArray(obj)) {
|
|
189
|
+
obj.forEach((item, index) => {
|
|
190
|
+
const itemPath = includeArrayIndices ? `${path}[${index}]` : path;
|
|
191
|
+
if (typeof item === 'object' && item !== null) {
|
|
192
|
+
traverse(item, itemPath, depth + 1);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
nodes.push({
|
|
196
|
+
path: itemPath,
|
|
197
|
+
key: `[${index}]`,
|
|
198
|
+
value: item,
|
|
199
|
+
depth,
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
else if (typeof obj === 'object') {
|
|
205
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
206
|
+
const newPath = path ? `${path}.${key}` : key;
|
|
207
|
+
nodes.push({
|
|
208
|
+
path: newPath,
|
|
209
|
+
key,
|
|
210
|
+
value,
|
|
211
|
+
depth,
|
|
212
|
+
});
|
|
213
|
+
if (typeof value === 'object' && value !== null) {
|
|
214
|
+
traverse(value, newPath, depth + 1);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
traverse(data, '', 0);
|
|
220
|
+
return nodes;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Convert YAML data to human-readable text
|
|
224
|
+
*/
|
|
225
|
+
export function yamlToText(data, indent = 0) {
|
|
226
|
+
const lines = [];
|
|
227
|
+
const prefix = ' '.repeat(indent);
|
|
228
|
+
for (const [key, value] of Object.entries(data)) {
|
|
229
|
+
if (value === null || value === undefined) {
|
|
230
|
+
lines.push(`${prefix}${key}: (empty)`);
|
|
231
|
+
}
|
|
232
|
+
else if (Array.isArray(value)) {
|
|
233
|
+
lines.push(`${prefix}${key}:`);
|
|
234
|
+
value.forEach((item, index) => {
|
|
235
|
+
if (typeof item === 'object' && item !== null) {
|
|
236
|
+
lines.push(`${prefix} - Item ${index + 1}:`);
|
|
237
|
+
lines.push(yamlToText(item, indent + 2));
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
lines.push(`${prefix} - ${item}`);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
else if (typeof value === 'object') {
|
|
245
|
+
lines.push(`${prefix}${key}:`);
|
|
246
|
+
lines.push(yamlToText(value, indent + 1));
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
lines.push(`${prefix}${key}: ${value}`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return lines.join('\n');
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Parse a YAML document and extract structured information
|
|
256
|
+
*/
|
|
257
|
+
export function parseYamlDocument(content, options) {
|
|
258
|
+
const data = parseYaml(content);
|
|
259
|
+
const nodes = flattenYaml(data, { maxDepth: options?.maxDepth });
|
|
260
|
+
const rootKeys = Object.keys(data);
|
|
261
|
+
const textContent = yamlToText(data);
|
|
262
|
+
return {
|
|
263
|
+
data,
|
|
264
|
+
nodes,
|
|
265
|
+
rootKeys,
|
|
266
|
+
textContent,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Load a YAML document as a single DocumentInput
|
|
271
|
+
*/
|
|
272
|
+
export function loadYamlDocument(content, options) {
|
|
273
|
+
const parsed = parseYamlDocument(content, { maxDepth: options.maxDepth });
|
|
274
|
+
// Use custom formatter or default text representation
|
|
275
|
+
const textContent = options.textFormatter
|
|
276
|
+
? options.textFormatter(parsed.data)
|
|
277
|
+
: parsed.textContent;
|
|
278
|
+
return {
|
|
279
|
+
category: options.category,
|
|
280
|
+
title: options.title ?? `YAML Configuration (${parsed.rootKeys.join(', ')})`,
|
|
281
|
+
content: textContent,
|
|
282
|
+
metadata: {
|
|
283
|
+
...options.metadata,
|
|
284
|
+
sourceType: 'yaml',
|
|
285
|
+
rootKeys: parsed.rootKeys,
|
|
286
|
+
nodeCount: parsed.nodes.length,
|
|
287
|
+
rawData: parsed.data,
|
|
288
|
+
},
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Load a YAML document and split by root keys
|
|
293
|
+
*/
|
|
294
|
+
export function loadYamlByRootKeys(content, options) {
|
|
295
|
+
const parsed = parseYamlDocument(content, { maxDepth: options.maxDepth });
|
|
296
|
+
// If only one root key, return as single document
|
|
297
|
+
if (parsed.rootKeys.length <= 1) {
|
|
298
|
+
return [loadYamlDocument(content, options)];
|
|
299
|
+
}
|
|
300
|
+
// Create a document for each root key
|
|
301
|
+
return parsed.rootKeys.map((key) => {
|
|
302
|
+
const keyData = { [key]: parsed.data[key] };
|
|
303
|
+
const textContent = options.textFormatter
|
|
304
|
+
? options.textFormatter(keyData)
|
|
305
|
+
: yamlToText(keyData);
|
|
306
|
+
return {
|
|
307
|
+
category: options.category,
|
|
308
|
+
title: options.title ? `${options.title} - ${key}` : key,
|
|
309
|
+
content: textContent,
|
|
310
|
+
metadata: {
|
|
311
|
+
...options.metadata,
|
|
312
|
+
sourceType: 'yaml',
|
|
313
|
+
rootKey: key,
|
|
314
|
+
rawData: keyData,
|
|
315
|
+
},
|
|
316
|
+
};
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* YAML Loader class for loading documents into the knowledge base
|
|
321
|
+
*/
|
|
322
|
+
export class YamlLoader {
|
|
323
|
+
defaultCategory;
|
|
324
|
+
defaultMetadata;
|
|
325
|
+
maxDepth;
|
|
326
|
+
constructor(options) {
|
|
327
|
+
this.defaultCategory = options?.defaultCategory ?? 'config';
|
|
328
|
+
this.defaultMetadata = options?.defaultMetadata ?? {};
|
|
329
|
+
this.maxDepth = options?.maxDepth ?? 10;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Load a YAML string as a document
|
|
333
|
+
*/
|
|
334
|
+
load(content, options) {
|
|
335
|
+
return loadYamlDocument(content, {
|
|
336
|
+
category: options?.category ?? this.defaultCategory,
|
|
337
|
+
title: options?.title,
|
|
338
|
+
metadata: { ...this.defaultMetadata, ...options?.metadata },
|
|
339
|
+
maxDepth: options?.maxDepth ?? this.maxDepth,
|
|
340
|
+
textFormatter: options?.textFormatter,
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Load a YAML string and split by root keys
|
|
345
|
+
*/
|
|
346
|
+
loadByRootKeys(content, options) {
|
|
347
|
+
return loadYamlByRootKeys(content, {
|
|
348
|
+
category: options?.category ?? this.defaultCategory,
|
|
349
|
+
title: options?.title,
|
|
350
|
+
metadata: { ...this.defaultMetadata, ...options?.metadata },
|
|
351
|
+
maxDepth: options?.maxDepth ?? this.maxDepth,
|
|
352
|
+
textFormatter: options?.textFormatter,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Parse YAML content without creating DocumentInput
|
|
357
|
+
*/
|
|
358
|
+
parse(content) {
|
|
359
|
+
return parseYamlDocument(content, { maxDepth: this.maxDepth });
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Parse raw YAML to object
|
|
363
|
+
*/
|
|
364
|
+
parseRaw(content) {
|
|
365
|
+
return parseYaml(content);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=yaml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml.js","sourceRoot":"","sources":["../../../src/knowledge/loaders/yaml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Retriever
|
|
3
|
+
*
|
|
4
|
+
* Provides advanced retrieval capabilities including keyword search,
|
|
5
|
+
* semantic search, and hybrid search with knowledge sufficiency assessment.
|
|
6
|
+
*
|
|
7
|
+
* _Requirements: 3.2, 3.3, 3.4, 5.1, 5.2_
|
|
8
|
+
*/
|
|
9
|
+
import type { SearchOptions, SearchResult, KnowledgeAssessment } from '../types/knowledge.js';
|
|
10
|
+
import type { KnowledgeStore } from './store.js';
|
|
11
|
+
import type { Embedder } from './embedder.js';
|
|
12
|
+
/**
|
|
13
|
+
* Retriever configuration
|
|
14
|
+
*/
|
|
15
|
+
export interface RetrieverConfig {
|
|
16
|
+
/** Default number of results to return */
|
|
17
|
+
defaultTopK?: number;
|
|
18
|
+
/** Default minimum score threshold */
|
|
19
|
+
defaultMinScore?: number;
|
|
20
|
+
/** Weight for keyword search in hybrid mode (0-1) */
|
|
21
|
+
keywordWeight?: number;
|
|
22
|
+
/** Weight for semantic search in hybrid mode (0-1) */
|
|
23
|
+
semanticWeight?: number;
|
|
24
|
+
/** Minimum confidence threshold for sufficient knowledge */
|
|
25
|
+
sufficientThreshold?: number;
|
|
26
|
+
/** Minimum confidence threshold for ambiguous knowledge */
|
|
27
|
+
ambiguousThreshold?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Intent information for knowledge assessment
|
|
31
|
+
*/
|
|
32
|
+
export interface Intent {
|
|
33
|
+
/** The main action or query type */
|
|
34
|
+
action: string;
|
|
35
|
+
/** Key entities mentioned */
|
|
36
|
+
entities: string[];
|
|
37
|
+
/** Required knowledge topics */
|
|
38
|
+
requiredTopics?: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Knowledge Retriever class
|
|
42
|
+
*
|
|
43
|
+
* Provides keyword, semantic, and hybrid search capabilities
|
|
44
|
+
* with knowledge sufficiency assessment.
|
|
45
|
+
*/
|
|
46
|
+
export declare class Retriever {
|
|
47
|
+
private store;
|
|
48
|
+
private embedder?;
|
|
49
|
+
private config;
|
|
50
|
+
constructor(store: KnowledgeStore, embedder?: Embedder, config?: RetrieverConfig);
|
|
51
|
+
/**
|
|
52
|
+
* Search the knowledge base
|
|
53
|
+
*
|
|
54
|
+
* @param query - Search query string
|
|
55
|
+
* @param options - Search options
|
|
56
|
+
* @returns Array of search results sorted by relevance
|
|
57
|
+
*/
|
|
58
|
+
search(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
59
|
+
/**
|
|
60
|
+
* Keyword-based search using text matching
|
|
61
|
+
*
|
|
62
|
+
* Implements simple keyword matching with term frequency scoring.
|
|
63
|
+
* Supports category filtering.
|
|
64
|
+
*
|
|
65
|
+
* _Requirements: 3.4_
|
|
66
|
+
*
|
|
67
|
+
* @param query - Search query
|
|
68
|
+
* @param category - Optional category filter
|
|
69
|
+
* @returns Search results sorted by score descending
|
|
70
|
+
*/
|
|
71
|
+
keywordSearch(query: string, category?: string): Promise<SearchResult[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Perform keyword matching on documents
|
|
74
|
+
*/
|
|
75
|
+
private performKeywordMatch;
|
|
76
|
+
/**
|
|
77
|
+
* Semantic search using embedding similarity
|
|
78
|
+
*
|
|
79
|
+
* Uses vector similarity to find semantically related documents.
|
|
80
|
+
* Falls back to keyword search if embedder is not available.
|
|
81
|
+
*
|
|
82
|
+
* _Requirements: 3.3_
|
|
83
|
+
*
|
|
84
|
+
* @param query - Search query
|
|
85
|
+
* @param category - Optional category filter
|
|
86
|
+
* @returns Search results sorted by score descending
|
|
87
|
+
*/
|
|
88
|
+
semanticSearch(query: string, category?: string): Promise<SearchResult[]>;
|
|
89
|
+
/**
|
|
90
|
+
* Perform semantic matching on documents
|
|
91
|
+
*/
|
|
92
|
+
private performSemanticMatch;
|
|
93
|
+
/**
|
|
94
|
+
* Hybrid search combining keyword and semantic results
|
|
95
|
+
*
|
|
96
|
+
* Merges results from both methods with configurable weights.
|
|
97
|
+
* Deduplicates and re-ranks results.
|
|
98
|
+
*
|
|
99
|
+
* _Requirements: 3.2_
|
|
100
|
+
*
|
|
101
|
+
* @param query - Search query
|
|
102
|
+
* @param category - Optional category filter
|
|
103
|
+
* @returns Search results sorted by combined score descending
|
|
104
|
+
*/
|
|
105
|
+
hybridSearch(query: string, category?: string): Promise<SearchResult[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Assess knowledge sufficiency for a given intent
|
|
108
|
+
*
|
|
109
|
+
* Evaluates whether the retrieved knowledge is sufficient
|
|
110
|
+
* to answer the user's query.
|
|
111
|
+
*
|
|
112
|
+
* _Requirements: 5.1, 5.2_
|
|
113
|
+
*
|
|
114
|
+
* @param results - Search results to assess
|
|
115
|
+
* @param intent - User intent information
|
|
116
|
+
* @returns Knowledge assessment with status and confidence
|
|
117
|
+
*/
|
|
118
|
+
assessKnowledge(results: SearchResult[], intent: Intent): KnowledgeAssessment;
|
|
119
|
+
/**
|
|
120
|
+
* Find topics covered by search results
|
|
121
|
+
*/
|
|
122
|
+
private findCoveredTopics;
|
|
123
|
+
/**
|
|
124
|
+
* Tokenize text into search terms
|
|
125
|
+
*/
|
|
126
|
+
private tokenize;
|
|
127
|
+
/**
|
|
128
|
+
* Escape special regex characters
|
|
129
|
+
*/
|
|
130
|
+
private escapeRegex;
|
|
131
|
+
/**
|
|
132
|
+
* Convert score to confidence level
|
|
133
|
+
*/
|
|
134
|
+
private scoreToConfidence;
|
|
135
|
+
/**
|
|
136
|
+
* Get retriever configuration
|
|
137
|
+
*/
|
|
138
|
+
getConfig(): Required<RetrieverConfig>;
|
|
139
|
+
/**
|
|
140
|
+
* Update retriever configuration
|
|
141
|
+
*/
|
|
142
|
+
updateConfig(config: Partial<RetrieverConfig>): void;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=retriever.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retriever.d.ts","sourceRoot":"","sources":["../../src/knowledge/retriever.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,aAAa,EACb,YAAY,EACZ,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qDAAqD;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAWD;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAoBD;;;;;GAKG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAC,CAAW;IAC5B,OAAO,CAAC,MAAM,CAA4B;gBAE9B,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,eAAe;IAMhF;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA0B7E;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAc9E;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmE3B;;;;;;;;;;;OAWG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA6B/E;;OAEG;YACW,oBAAoB;IAyClC;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA+C7E;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB;IA0E7E;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAOhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;IAItC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;CAGrD"}
|