@codebolt/agent 1.1.0 → 2.2.2
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 +157 -66
- package/dist/builderpattern/agent.d.ts +86 -0
- package/dist/builderpattern/agent.js +324 -0
- package/dist/builderpattern/followupquestionbuilder.d.ts +75 -0
- package/dist/builderpattern/followupquestionbuilder.js +197 -0
- package/dist/builderpattern/index.d.ts +14 -0
- package/dist/builderpattern/index.js +23 -0
- package/dist/builderpattern/llmoutputhandler.d.ts +102 -0
- package/dist/builderpattern/llmoutputhandler.js +452 -0
- package/dist/builderpattern/promptbuilder.d.ts +382 -0
- package/dist/builderpattern/promptbuilder.js +805 -0
- package/dist/builderpattern/systemprompt.d.ts +20 -0
- package/dist/builderpattern/systemprompt.js +48 -0
- package/dist/builderpattern/taskInstruction.d.ts +37 -0
- package/dist/builderpattern/taskInstruction.js +57 -0
- package/dist/builderpattern/usermessage.d.ts +70 -0
- package/dist/builderpattern/usermessage.js +123 -0
- package/dist/composablepattern/agent.d.ts +169 -0
- package/dist/composablepattern/agent.js +598 -0
- package/dist/composablepattern/codebolt-storage.d.ts +67 -0
- package/dist/composablepattern/codebolt-storage.js +320 -0
- package/dist/composablepattern/document.d.ts +149 -0
- package/dist/composablepattern/document.js +405 -0
- package/dist/composablepattern/examples/codebolt-integration-example.d.ts +12 -0
- package/dist/composablepattern/examples/codebolt-integration-example.js +218 -0
- package/dist/composablepattern/examples/codebolt-storage-example.d.ts +40 -0
- package/dist/composablepattern/examples/codebolt-storage-example.js +223 -0
- package/dist/composablepattern/examples/custom-steps-example.d.ts +20 -0
- package/dist/composablepattern/examples/custom-steps-example.js +455 -0
- package/dist/composablepattern/examples/document-agent.d.ts +17 -0
- package/dist/composablepattern/examples/document-agent.js +107 -0
- package/dist/composablepattern/examples/simple-codebolt-integration.d.ts +8 -0
- package/dist/composablepattern/examples/simple-codebolt-integration.js +164 -0
- package/dist/composablepattern/examples/weather-agent.d.ts +18 -0
- package/dist/composablepattern/examples/weather-agent.js +86 -0
- package/dist/composablepattern/examples/workflow-example.d.ts +12 -0
- package/dist/composablepattern/examples/workflow-example.js +463 -0
- package/dist/composablepattern/index.d.ts +63 -0
- package/dist/composablepattern/index.js +115 -0
- package/dist/composablepattern/memory.d.ts +89 -0
- package/dist/composablepattern/memory.js +141 -0
- package/dist/composablepattern/tool.d.ts +84 -0
- package/dist/composablepattern/tool.js +260 -0
- package/dist/composablepattern/types.d.ts +194 -0
- package/dist/composablepattern/types.js +6 -0
- package/dist/composablepattern/user-context.d.ts +214 -0
- package/dist/composablepattern/user-context.js +275 -0
- package/dist/composablepattern/workflow.d.ts +388 -0
- package/dist/composablepattern/workflow.js +562 -0
- package/dist/processor/agent/agentStep.d.ts +49 -0
- package/dist/processor/agent/agentStep.js +241 -0
- package/dist/processor/agent/toolExecutor.d.ts +19 -0
- package/dist/processor/agent/toolExecutor.js +90 -0
- package/dist/processor/index.d.ts +7 -0
- package/dist/processor/index.js +36 -0
- package/dist/processor/messageModifiers/baseMessageModifier.d.ts +20 -0
- package/dist/processor/messageModifiers/baseMessageModifier.js +55 -0
- package/dist/processor/processors/baseProcessor.d.ts +14 -0
- package/dist/processor/processors/baseProcessor.js +29 -0
- package/dist/processor/tools/baseTool.d.ts +10 -0
- package/dist/processor/tools/baseTool.js +20 -0
- package/dist/processor/tools/toolList.d.ts +9 -0
- package/dist/processor/tools/toolList.js +22 -0
- package/dist/processor/types/interfaces.d.ts +94 -0
- package/dist/processor/types/interfaces.js +2 -0
- package/dist/processor-pieces/base/baseMessageModifier.d.ts +12 -0
- package/dist/processor-pieces/base/baseMessageModifier.js +15 -0
- package/dist/processor-pieces/base/basePostInferenceProcessor.d.ts +13 -0
- package/dist/processor-pieces/base/basePostInferenceProcessor.js +18 -0
- package/dist/processor-pieces/base/basePostToolCallProcessor.d.ts +15 -0
- package/dist/processor-pieces/base/basePostToolCallProcessor.js +25 -0
- package/dist/processor-pieces/base/basePreInferenceProcessor.d.ts +12 -0
- package/dist/processor-pieces/base/basePreInferenceProcessor.js +17 -0
- package/dist/processor-pieces/base/basePreToolCallProcessor.d.ts +18 -0
- package/dist/processor-pieces/base/basePreToolCallProcessor.js +66 -0
- package/dist/processor-pieces/base/index.d.ts +9 -0
- package/dist/processor-pieces/base/index.js +18 -0
- package/dist/processor-pieces/index.d.ts +1 -0
- package/dist/processor-pieces/index.js +59 -0
- package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.d.ts +22 -0
- package/dist/processor-pieces/messageModifiers/addToolsListMessageModifier.js +144 -0
- package/dist/processor-pieces/messageModifiers/argumentProcessorModifier.d.ts +13 -0
- package/dist/processor-pieces/messageModifiers/argumentProcessorModifier.js +68 -0
- package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.d.ts +25 -0
- package/dist/processor-pieces/messageModifiers/atFileProcessorModifier.js +453 -0
- package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.d.ts +15 -0
- package/dist/processor-pieces/messageModifiers/baseContextMessageModifier.js +75 -0
- package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.d.ts +11 -0
- package/dist/processor-pieces/messageModifiers/baseSystemInstructionMessageModifier.js +46 -0
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.d.ts +18 -0
- package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.js +104 -0
- package/dist/processor-pieces/messageModifiers/chatRecordingModifier.d.ts +23 -0
- package/dist/processor-pieces/messageModifiers/chatRecordingModifier.js +173 -0
- package/dist/processor-pieces/messageModifiers/coreSystemPromptModifier.d.ts +14 -0
- package/dist/processor-pieces/messageModifiers/coreSystemPromptModifier.js +130 -0
- package/dist/processor-pieces/messageModifiers/directoryContextModifier.d.ts +36 -0
- package/dist/processor-pieces/messageModifiers/directoryContextModifier.js +418 -0
- package/dist/processor-pieces/messageModifiers/environmentContextModifier.d.ts +26 -0
- package/dist/processor-pieces/messageModifiers/environmentContextModifier.js +260 -0
- package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.d.ts +12 -0
- package/dist/processor-pieces/messageModifiers/handleUrlMessageModifier.js +60 -0
- package/dist/processor-pieces/messageModifiers/ideContextModifier.d.ts +34 -0
- package/dist/processor-pieces/messageModifiers/ideContextModifier.js +157 -0
- package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.d.ts +18 -0
- package/dist/processor-pieces/messageModifiers/imageAttachmentMessageModifier.js +222 -0
- package/dist/processor-pieces/messageModifiers/index.d.ts +11 -0
- package/dist/processor-pieces/messageModifiers/index.js +26 -0
- package/dist/processor-pieces/messageModifiers/memoryImportModifier.d.ts +15 -0
- package/dist/processor-pieces/messageModifiers/memoryImportModifier.js +129 -0
- package/dist/processor-pieces/messageModifiers/toolInjectionModifier.d.ts +20 -0
- package/dist/processor-pieces/messageModifiers/toolInjectionModifier.js +152 -0
- package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.d.ts +22 -0
- package/dist/processor-pieces/messageModifiers/workingDirectoryMessageModifier.js +194 -0
- package/dist/processor-pieces/postInferenceProcessors/loopDetectionModifier.d.ts +29 -0
- package/dist/processor-pieces/postInferenceProcessors/loopDetectionModifier.js +174 -0
- package/dist/processor-pieces/postToolCallProcessors/index.d.ts +1 -0
- package/dist/processor-pieces/postToolCallProcessors/index.js +2 -0
- package/dist/processor-pieces/postToolCallProcessors/shellProcessorModifier.d.ts +25 -0
- package/dist/processor-pieces/postToolCallProcessors/shellProcessorModifier.js +225 -0
- package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.d.ts +35 -0
- package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.js +255 -0
- package/dist/processor-pieces/preInferenceProcessors/index.d.ts +1 -0
- package/dist/processor-pieces/preInferenceProcessors/index.js +2 -0
- package/dist/processor-pieces/pretoolCallProcessors/index.d.ts +1 -0
- package/dist/processor-pieces/pretoolCallProcessors/index.js +2 -0
- package/dist/processor-pieces/processors/advancedLoopDetectionProcessor.d.ts +41 -0
- package/dist/processor-pieces/processors/advancedLoopDetectionProcessor.js +197 -0
- package/dist/processor-pieces/processors/chatCompressionProcessor.d.ts +26 -0
- package/dist/processor-pieces/processors/chatCompressionProcessor.js +90 -0
- package/dist/processor-pieces/processors/chatRecordingProcessor.d.ts +81 -0
- package/dist/processor-pieces/processors/chatRecordingProcessor.js +329 -0
- package/dist/processor-pieces/processors/contextManagementProcessor.d.ts +40 -0
- package/dist/processor-pieces/processors/contextManagementProcessor.js +305 -0
- package/dist/processor-pieces/processors/loopDetectionProcessor.d.ts +30 -0
- package/dist/processor-pieces/processors/loopDetectionProcessor.js +137 -0
- package/dist/processor-pieces/processors/responseValidationProcessor.d.ts +30 -0
- package/dist/processor-pieces/processors/responseValidationProcessor.js +228 -0
- package/dist/processor-pieces/processors/telemetryProcessor.d.ts +99 -0
- package/dist/processor-pieces/processors/telemetryProcessor.js +311 -0
- package/dist/processor-pieces/processors/tokenManagementProcessor.d.ts +37 -0
- package/dist/processor-pieces/processors/tokenManagementProcessor.js +178 -0
- package/dist/processor-pieces/processors/toolExecutionProcessor.d.ts +43 -0
- package/dist/processor-pieces/processors/toolExecutionProcessor.js +207 -0
- package/dist/processor-pieces/tools/fileTools.d.ts +26 -0
- package/dist/processor-pieces/tools/fileTools.js +162 -0
- package/dist/processor-pieces/utils/messageModifierHelper.d.ts +4 -0
- package/dist/processor-pieces/utils/messageModifierHelper.js +58 -0
- package/dist/types/commonTypes.d.ts +4 -0
- package/dist/types/processorTypes.d.ts +67 -0
- package/dist/types/processorTypes.js +58 -0
- package/dist/unified/agent/agent.d.ts +17 -0
- package/dist/unified/agent/agent.js +79 -0
- package/dist/unified/agent/team.d.ts +2 -0
- package/dist/unified/agent/team.js +6 -0
- package/dist/unified/agent/tools.d.ts +44 -0
- package/dist/unified/agent/tools.js +487 -0
- package/dist/unified/agent/workflow.d.ts +24 -0
- package/dist/unified/agent/workflow.js +275 -0
- package/dist/unified/agent/workflowControls.d.ts +11 -0
- package/dist/unified/agent/workflowControls.js +20 -0
- package/dist/unified/agent/workflowSteps.d.ts +63 -0
- package/dist/unified/agent/workflowSteps.js +284 -0
- package/dist/unified/base/agentStep.d.ts +32 -0
- package/dist/unified/base/agentStep.js +96 -0
- package/dist/unified/base/create/createInitialPromptGenerators.d.ts +5 -0
- package/dist/unified/base/create/createInitialPromptGenerators.js +17 -0
- package/dist/unified/base/index.d.ts +5 -0
- package/dist/unified/base/index.js +13 -0
- package/dist/unified/base/initialPromptGenerator.d.ts +48 -0
- package/dist/unified/base/initialPromptGenerator.js +118 -0
- package/dist/unified/base/responseExecutor.d.ts +36 -0
- package/dist/unified/base/responseExecutor.js +283 -0
- package/dist/unified/index.d.ts +18 -0
- package/dist/unified/index.js +42 -0
- package/dist/unified/team/team.d.ts +1 -0
- package/dist/unified/team/team.js +2 -0
- package/dist/unified/types/libTypes.d.ts +378 -0
- package/dist/unified/types/libTypes.js +6 -0
- package/dist/unified/types/types.d.ts +212 -0
- package/dist/unified/types/types.js +43 -0
- package/dist/unified/utils/utils.d.ts +40 -0
- package/dist/unified/utils/utils.js +219 -0
- package/package.json +29 -7
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview CodeBolt Backend Storage Provider for Composable Agent Pattern
|
|
4
|
+
* @description Uses CodeBolt's state and memory functions instead of SQLite for storage
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.CodeBoltProjectStore = exports.CodeBoltMemoryStore = exports.CodeBoltAgentStore = void 0;
|
|
11
|
+
exports.createCodeBoltStore = createCodeBoltStore;
|
|
12
|
+
const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
|
|
13
|
+
/**
|
|
14
|
+
* Storage provider that uses CodeBolt's agent state backend
|
|
15
|
+
* Data is persisted in the CodeBolt application's agent state
|
|
16
|
+
*/
|
|
17
|
+
class CodeBoltAgentStore {
|
|
18
|
+
constructor(prefix = 'composable_agent') {
|
|
19
|
+
this.prefix = prefix;
|
|
20
|
+
}
|
|
21
|
+
getFullKey(key) {
|
|
22
|
+
return `${this.prefix}_${key}`;
|
|
23
|
+
}
|
|
24
|
+
async get(key) {
|
|
25
|
+
try {
|
|
26
|
+
const fullKey = this.getFullKey(key);
|
|
27
|
+
const response = await codeboltjs_1.default.cbstate.getAgentState();
|
|
28
|
+
if (response.success && response.data && response.data[fullKey]) {
|
|
29
|
+
const value = response.data[fullKey];
|
|
30
|
+
try {
|
|
31
|
+
return JSON.parse(value);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
console.error('CodeBoltAgentStore.get error:', error);
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async set(key, value) {
|
|
45
|
+
try {
|
|
46
|
+
const fullKey = this.getFullKey(key);
|
|
47
|
+
const serializedValue = typeof value === 'string'
|
|
48
|
+
? value
|
|
49
|
+
: JSON.stringify(value);
|
|
50
|
+
await codeboltjs_1.default.cbstate.addToAgentState(fullKey, serializedValue);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error('CodeBoltAgentStore.set error:', error);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async delete(key) {
|
|
58
|
+
try {
|
|
59
|
+
const fullKey = this.getFullKey(key);
|
|
60
|
+
// CodeBolt agent state doesn't have direct delete, so we set to null
|
|
61
|
+
await codeboltjs_1.default.cbstate.addToAgentState(fullKey, 'null');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.error('CodeBoltAgentStore.delete error:', error);
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async keys() {
|
|
69
|
+
try {
|
|
70
|
+
const response = await codeboltjs_1.default.cbstate.getAgentState();
|
|
71
|
+
if (response.success && response.data) {
|
|
72
|
+
const allKeys = Object.keys(response.data);
|
|
73
|
+
const prefixedKeys = allKeys.filter(key => key.startsWith(`${this.prefix}_`));
|
|
74
|
+
// Remove prefix and filter out null values
|
|
75
|
+
const result = [];
|
|
76
|
+
for (const prefixedKey of prefixedKeys) {
|
|
77
|
+
const value = response.data[prefixedKey];
|
|
78
|
+
if (value !== 'null') {
|
|
79
|
+
result.push(prefixedKey.replace(`${this.prefix}_`, ''));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
console.error('CodeBoltAgentStore.keys error:', error);
|
|
88
|
+
return [];
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async clear() {
|
|
92
|
+
try {
|
|
93
|
+
const keys = await this.keys();
|
|
94
|
+
// Delete all keys by setting them to null
|
|
95
|
+
for (const key of keys) {
|
|
96
|
+
await this.delete(key);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
console.error('CodeBoltAgentStore.clear error:', error);
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.CodeBoltAgentStore = CodeBoltAgentStore;
|
|
106
|
+
/**
|
|
107
|
+
* Storage provider that uses CodeBolt's in-memory database (dbmemory)
|
|
108
|
+
* Data is persisted in the CodeBolt application's memory database
|
|
109
|
+
*/
|
|
110
|
+
class CodeBoltMemoryStore {
|
|
111
|
+
constructor(prefix = 'composable_agent') {
|
|
112
|
+
this.prefix = prefix;
|
|
113
|
+
}
|
|
114
|
+
getFullKey(key) {
|
|
115
|
+
return `${this.prefix}_${key}`;
|
|
116
|
+
}
|
|
117
|
+
async get(key) {
|
|
118
|
+
try {
|
|
119
|
+
const fullKey = this.getFullKey(key);
|
|
120
|
+
const response = await codeboltjs_1.default.dbmemory.getKnowledge(fullKey);
|
|
121
|
+
if (response.success && response.data !== undefined) {
|
|
122
|
+
return response.data;
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
console.error('CodeBoltMemoryStore.get error:', error);
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async set(key, value) {
|
|
132
|
+
try {
|
|
133
|
+
const fullKey = this.getFullKey(key);
|
|
134
|
+
await codeboltjs_1.default.dbmemory.addKnowledge(fullKey, value);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
console.error('CodeBoltMemoryStore.set error:', error);
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async delete(key) {
|
|
142
|
+
try {
|
|
143
|
+
const fullKey = this.getFullKey(key);
|
|
144
|
+
// CodeBolt dbmemory doesn't have direct delete, so we set to null
|
|
145
|
+
await codeboltjs_1.default.dbmemory.addKnowledge(fullKey, null);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.error('CodeBoltMemoryStore.delete error:', error);
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
async keys() {
|
|
153
|
+
try {
|
|
154
|
+
// CodeBolt dbmemory doesn't have a keys() method
|
|
155
|
+
// We'll need to maintain a key index
|
|
156
|
+
const indexKey = `${this.prefix}_key_index`;
|
|
157
|
+
const response = await codeboltjs_1.default.dbmemory.getKnowledge(indexKey);
|
|
158
|
+
if (response.success && Array.isArray(response.data)) {
|
|
159
|
+
// Filter out deleted keys (those with null values)
|
|
160
|
+
const validKeys = [];
|
|
161
|
+
for (const key of response.data) {
|
|
162
|
+
const value = await this.get(key);
|
|
163
|
+
if (value !== null) {
|
|
164
|
+
validKeys.push(key);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return validKeys;
|
|
168
|
+
}
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
console.error('CodeBoltMemoryStore.keys error:', error);
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async clear() {
|
|
177
|
+
try {
|
|
178
|
+
const keys = await this.keys();
|
|
179
|
+
// Delete all keys
|
|
180
|
+
for (const key of keys) {
|
|
181
|
+
await this.delete(key);
|
|
182
|
+
}
|
|
183
|
+
// Clear the key index
|
|
184
|
+
const indexKey = `${this.prefix}_key_index`;
|
|
185
|
+
await codeboltjs_1.default.dbmemory.addKnowledge(indexKey, []);
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
console.error('CodeBoltMemoryStore.clear error:', error);
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Override set to maintain key index
|
|
194
|
+
*/
|
|
195
|
+
async setWithIndex(key, value) {
|
|
196
|
+
try {
|
|
197
|
+
// Update the key index
|
|
198
|
+
const indexKey = `${this.prefix}_key_index`;
|
|
199
|
+
const response = await codeboltjs_1.default.dbmemory.getKnowledge(indexKey);
|
|
200
|
+
let keyIndex = [];
|
|
201
|
+
if (response.success && Array.isArray(response.data)) {
|
|
202
|
+
keyIndex = response.data;
|
|
203
|
+
}
|
|
204
|
+
if (!keyIndex.includes(key)) {
|
|
205
|
+
keyIndex.push(key);
|
|
206
|
+
await codeboltjs_1.default.dbmemory.addKnowledge(indexKey, keyIndex);
|
|
207
|
+
}
|
|
208
|
+
// Set the actual value
|
|
209
|
+
await this.set(key, value);
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
console.error('CodeBoltMemoryStore.setWithIndex error:', error);
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
exports.CodeBoltMemoryStore = CodeBoltMemoryStore;
|
|
218
|
+
/**
|
|
219
|
+
* Storage provider that uses CodeBolt's project state backend
|
|
220
|
+
* Data is persisted in the CodeBolt application's project state
|
|
221
|
+
*/
|
|
222
|
+
class CodeBoltProjectStore {
|
|
223
|
+
constructor(prefix = 'composable_agent') {
|
|
224
|
+
this.prefix = prefix;
|
|
225
|
+
}
|
|
226
|
+
getFullKey(key) {
|
|
227
|
+
return `${this.prefix}_${key}`;
|
|
228
|
+
}
|
|
229
|
+
async get(key) {
|
|
230
|
+
try {
|
|
231
|
+
const fullKey = this.getFullKey(key);
|
|
232
|
+
const response = await codeboltjs_1.default.cbstate.getProjectState();
|
|
233
|
+
if (response.success && response.data && response.data[fullKey] !== undefined) {
|
|
234
|
+
return response.data[fullKey];
|
|
235
|
+
}
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
console.error('CodeBoltProjectStore.get error:', error);
|
|
240
|
+
return undefined;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
async set(key, value) {
|
|
244
|
+
try {
|
|
245
|
+
const fullKey = this.getFullKey(key);
|
|
246
|
+
await codeboltjs_1.default.cbstate.updateProjectState(fullKey, value);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
console.error('CodeBoltProjectStore.set error:', error);
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async delete(key) {
|
|
254
|
+
try {
|
|
255
|
+
const fullKey = this.getFullKey(key);
|
|
256
|
+
// Set to null to indicate deletion
|
|
257
|
+
await codeboltjs_1.default.cbstate.updateProjectState(fullKey, null);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error('CodeBoltProjectStore.delete error:', error);
|
|
261
|
+
throw error;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async keys() {
|
|
265
|
+
try {
|
|
266
|
+
const response = await codeboltjs_1.default.cbstate.getProjectState();
|
|
267
|
+
if (response.success && response.data) {
|
|
268
|
+
const allKeys = Object.keys(response.data);
|
|
269
|
+
const prefixedKeys = allKeys.filter(key => key.startsWith(`${this.prefix}_`));
|
|
270
|
+
// Remove prefix and filter out null values
|
|
271
|
+
const result = [];
|
|
272
|
+
for (const prefixedKey of prefixedKeys) {
|
|
273
|
+
const value = response.data[prefixedKey];
|
|
274
|
+
if (value !== null) {
|
|
275
|
+
result.push(prefixedKey.replace(`${this.prefix}_`, ''));
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return result;
|
|
279
|
+
}
|
|
280
|
+
return [];
|
|
281
|
+
}
|
|
282
|
+
catch (error) {
|
|
283
|
+
console.error('CodeBoltProjectStore.keys error:', error);
|
|
284
|
+
return [];
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
async clear() {
|
|
288
|
+
try {
|
|
289
|
+
const keys = await this.keys();
|
|
290
|
+
// Delete all keys by setting them to null
|
|
291
|
+
for (const key of keys) {
|
|
292
|
+
await this.delete(key);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
catch (error) {
|
|
296
|
+
console.error('CodeBoltProjectStore.clear error:', error);
|
|
297
|
+
throw error;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
exports.CodeBoltProjectStore = CodeBoltProjectStore;
|
|
302
|
+
/**
|
|
303
|
+
* Factory function to create appropriate CodeBolt storage provider
|
|
304
|
+
*
|
|
305
|
+
* @param config - Storage configuration
|
|
306
|
+
* @returns StorageProvider instance
|
|
307
|
+
*/
|
|
308
|
+
function createCodeBoltStore(config) {
|
|
309
|
+
const { type, prefix = 'composable_agent' } = config;
|
|
310
|
+
switch (type) {
|
|
311
|
+
case 'agent':
|
|
312
|
+
return new CodeBoltAgentStore(prefix);
|
|
313
|
+
case 'memory':
|
|
314
|
+
return new CodeBoltMemoryStore(prefix);
|
|
315
|
+
case 'project':
|
|
316
|
+
return new CodeBoltProjectStore(prefix);
|
|
317
|
+
default:
|
|
318
|
+
throw new Error(`Unknown CodeBolt storage type: ${type}`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Document handling for Composable Agent Pattern
|
|
3
|
+
* @description Provides document processing, chunking, and embedding capabilities
|
|
4
|
+
*/
|
|
5
|
+
import type { DocumentConfig, ProcessedDocument } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* Document processing and management class
|
|
8
|
+
*/
|
|
9
|
+
export declare class MDocument {
|
|
10
|
+
private content;
|
|
11
|
+
private type;
|
|
12
|
+
private metadata;
|
|
13
|
+
private chunks?;
|
|
14
|
+
private embeddings?;
|
|
15
|
+
constructor(content: string, type?: string, metadata?: Record<string, any>);
|
|
16
|
+
/**
|
|
17
|
+
* Create MDocument from plain text
|
|
18
|
+
*
|
|
19
|
+
* @param text - Plain text content
|
|
20
|
+
* @param metadata - Optional metadata
|
|
21
|
+
* @returns MDocument instance
|
|
22
|
+
*/
|
|
23
|
+
static fromText(text: string, metadata?: Record<string, any>): MDocument;
|
|
24
|
+
/**
|
|
25
|
+
* Create MDocument from markdown
|
|
26
|
+
*
|
|
27
|
+
* @param markdown - Markdown content
|
|
28
|
+
* @param metadata - Optional metadata
|
|
29
|
+
* @returns MDocument instance
|
|
30
|
+
*/
|
|
31
|
+
static fromMarkdown(markdown: string, metadata?: Record<string, any>): MDocument;
|
|
32
|
+
/**
|
|
33
|
+
* Create MDocument from JSON
|
|
34
|
+
*
|
|
35
|
+
* @param json - JSON object or string
|
|
36
|
+
* @param metadata - Optional metadata
|
|
37
|
+
* @returns MDocument instance
|
|
38
|
+
*/
|
|
39
|
+
static fromJSON(json: any, metadata?: Record<string, any>): MDocument;
|
|
40
|
+
/**
|
|
41
|
+
* Create MDocument from file path
|
|
42
|
+
*
|
|
43
|
+
* @param filePath - Path to the file
|
|
44
|
+
* @param metadata - Optional metadata
|
|
45
|
+
* @returns Promise<MDocument> instance
|
|
46
|
+
*/
|
|
47
|
+
static fromFile(filePath: string, metadata?: Record<string, any>): Promise<MDocument>;
|
|
48
|
+
/**
|
|
49
|
+
* Get document content
|
|
50
|
+
*/
|
|
51
|
+
getContent(): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get document type
|
|
54
|
+
*/
|
|
55
|
+
getType(): string;
|
|
56
|
+
/**
|
|
57
|
+
* Get document metadata
|
|
58
|
+
*/
|
|
59
|
+
getMetadata(): Record<string, any>;
|
|
60
|
+
/**
|
|
61
|
+
* Update document metadata
|
|
62
|
+
*
|
|
63
|
+
* @param metadata - Metadata to merge
|
|
64
|
+
*/
|
|
65
|
+
updateMetadata(metadata: Record<string, any>): void;
|
|
66
|
+
/**
|
|
67
|
+
* Chunk the document into smaller pieces
|
|
68
|
+
*
|
|
69
|
+
* @param options - Chunking options
|
|
70
|
+
* @returns Array of text chunks
|
|
71
|
+
*/
|
|
72
|
+
chunk(options?: {
|
|
73
|
+
size?: number;
|
|
74
|
+
overlap?: number;
|
|
75
|
+
strategy?: 'sentence' | 'paragraph' | 'fixed' | 'semantic';
|
|
76
|
+
}): string[];
|
|
77
|
+
/**
|
|
78
|
+
* Get existing chunks or create them if they don't exist
|
|
79
|
+
*/
|
|
80
|
+
getChunks(): string[];
|
|
81
|
+
/**
|
|
82
|
+
* Set embeddings for the document or its chunks
|
|
83
|
+
*
|
|
84
|
+
* @param embeddings - Array of embedding vectors
|
|
85
|
+
*/
|
|
86
|
+
setEmbeddings(embeddings: number[][]): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get embeddings
|
|
89
|
+
*/
|
|
90
|
+
getEmbeddings(): number[][] | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Convert to processed document format
|
|
93
|
+
*/
|
|
94
|
+
toProcessedDocument(): ProcessedDocument;
|
|
95
|
+
/**
|
|
96
|
+
* Convert to plain object
|
|
97
|
+
*/
|
|
98
|
+
toJSON(): DocumentConfig & {
|
|
99
|
+
chunks?: string[];
|
|
100
|
+
embeddings?: number[][];
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Create MDocument from processed document
|
|
104
|
+
*
|
|
105
|
+
* @param processed - Processed document data
|
|
106
|
+
* @returns MDocument instance
|
|
107
|
+
*/
|
|
108
|
+
static fromProcessedDocument(processed: ProcessedDocument): MDocument;
|
|
109
|
+
/**
|
|
110
|
+
* Extract text content based on document type
|
|
111
|
+
*/
|
|
112
|
+
extractText(): string;
|
|
113
|
+
/**
|
|
114
|
+
* Count words in content
|
|
115
|
+
*/
|
|
116
|
+
private countWords;
|
|
117
|
+
/**
|
|
118
|
+
* Fixed-size chunking with overlap
|
|
119
|
+
*/
|
|
120
|
+
private chunkFixed;
|
|
121
|
+
/**
|
|
122
|
+
* Sentence-based chunking
|
|
123
|
+
*/
|
|
124
|
+
private chunkBySentence;
|
|
125
|
+
/**
|
|
126
|
+
* Paragraph-based chunking
|
|
127
|
+
*/
|
|
128
|
+
private chunkByParagraph;
|
|
129
|
+
/**
|
|
130
|
+
* Semantic chunking (basic implementation)
|
|
131
|
+
*/
|
|
132
|
+
private chunkSemantic;
|
|
133
|
+
/**
|
|
134
|
+
* Extract text from markdown
|
|
135
|
+
*/
|
|
136
|
+
private extractMarkdownText;
|
|
137
|
+
/**
|
|
138
|
+
* Extract text from JSON
|
|
139
|
+
*/
|
|
140
|
+
private extractJSONText;
|
|
141
|
+
/**
|
|
142
|
+
* Extract text from XML
|
|
143
|
+
*/
|
|
144
|
+
private extractXMLText;
|
|
145
|
+
/**
|
|
146
|
+
* Recursively extract text from object
|
|
147
|
+
*/
|
|
148
|
+
private extractTextFromObject;
|
|
149
|
+
}
|