@codebolt/agent 6.0.0 → 6.0.1

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.
Files changed (47) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +41 -0
  3. package/dist/processor-pieces/messageModifiers/chatHistoryMessageModifier.js +2 -4
  4. package/dist/processor-pieces/messageModifiers/contextAssemblyModifier.d.ts +81 -0
  5. package/dist/processor-pieces/messageModifiers/contextAssemblyModifier.js +316 -0
  6. package/dist/processor-pieces/messageModifiers/coreSystemPromptModifier.js +2 -19
  7. package/dist/processor-pieces/messageModifiers/directoryContextModifier.js +2 -6
  8. package/dist/processor-pieces/messageModifiers/environmentContextModifier.js +2 -7
  9. package/dist/processor-pieces/messageModifiers/ideContextModifier.js +2 -21
  10. package/dist/processor-pieces/messageModifiers/index.d.ts +3 -0
  11. package/dist/processor-pieces/messageModifiers/index.js +7 -1
  12. package/dist/processor-pieces/messageModifiers/toolInjectionModifier.js +2 -1
  13. package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.d.ts +34 -5
  14. package/dist/processor-pieces/postToolCallProcessors/conversationCompactorModifier.js +374 -89
  15. package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.d.ts +3 -0
  16. package/dist/processor-pieces/preInferenceProcessors/chatCompressionModifier.js +50 -27
  17. package/dist/unified/agent/agent.d.ts +10 -0
  18. package/dist/unified/agent/agent.js +198 -10
  19. package/dist/unified/agent/codeboltAgent.d.ts +19 -100
  20. package/dist/unified/agent/codeboltAgent.js +209 -109
  21. package/dist/unified/base/agentStep.js +17 -17
  22. package/dist/unified/base/initialPromptGenerator.js +13 -31
  23. package/dist/unified/base/promptContext.d.ts +13 -0
  24. package/dist/unified/base/promptContext.js +213 -0
  25. package/dist/unified/base/responseExecutor.d.ts +7 -19
  26. package/dist/unified/base/responseExecutor.js +351 -258
  27. package/dist/unified/index.d.ts +9 -0
  28. package/dist/unified/index.js +20 -13
  29. package/dist/unified/services/CompressionCoordinator.d.ts +67 -0
  30. package/dist/unified/services/CompressionCoordinator.js +214 -0
  31. package/dist/unified/services/compaction/autoCompact.d.ts +52 -0
  32. package/dist/unified/services/compaction/autoCompact.js +294 -0
  33. package/dist/unified/services/compaction/compactionOrchestrator.d.ts +78 -0
  34. package/dist/unified/services/compaction/compactionOrchestrator.js +230 -0
  35. package/dist/unified/services/compaction/contextCollapse.d.ts +63 -0
  36. package/dist/unified/services/compaction/contextCollapse.js +291 -0
  37. package/dist/unified/services/compaction/microCompact.d.ts +34 -0
  38. package/dist/unified/services/compaction/microCompact.js +195 -0
  39. package/dist/unified/services/compaction/postCompactCleanup.d.ts +15 -0
  40. package/dist/unified/services/compaction/postCompactCleanup.js +37 -0
  41. package/dist/unified/services/compaction/reactiveCompact.d.ts +65 -0
  42. package/dist/unified/services/compaction/reactiveCompact.js +301 -0
  43. package/dist/unified/services/compaction/snipCompact.d.ts +31 -0
  44. package/dist/unified/services/compaction/snipCompact.js +124 -0
  45. package/dist/unified/services/compaction/types.d.ts +66 -0
  46. package/dist/unified/services/compaction/types.js +39 -0
  47. package/package.json +22 -30
@@ -0,0 +1,2 @@
1
+ export * as ProcessorPieces from './processor-pieces';
2
+ export * from './unified';
package/dist/index.js ADDED
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ProcessorPieces = void 0;
40
+ exports.ProcessorPieces = __importStar(require("./processor-pieces"));
41
+ __exportStar(require("./unified"), exports);
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ChatHistoryMessageModifier = void 0;
7
7
  const base_1 = require("../base");
8
8
  const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
9
+ const promptContext_1 = require("../../unified/base/promptContext");
9
10
  // Using MessageObject from SDK types for chat history messages
10
11
  class ChatHistoryMessageModifier extends base_1.BaseMessageModifier {
11
12
  constructor(options = {}) {
@@ -26,10 +27,7 @@ class ChatHistoryMessageModifier extends base_1.BaseMessageModifier {
26
27
  }
27
28
  // Directly use the chat history messages - they're already in MessageObject format
28
29
  return {
29
- message: {
30
- ...createdMessage.message,
31
- messages: [...chatHistory, ...createdMessage.message.messages]
32
- },
30
+ ...(0, promptContext_1.prependTranscriptMessages)(createdMessage, chatHistory),
33
31
  metadata: {
34
32
  ...createdMessage.metadata,
35
33
  chatHistoryAdded: true,
@@ -0,0 +1,81 @@
1
+ import { ProcessedMessage } from "@codebolt/types/agent";
2
+ import { BaseMessageModifier } from "../base";
3
+ import { FlatUserMessage } from "@codebolt/types/sdk";
4
+ import type { ContextConstraints, MemoryContribution } from "@codebolt/types/lib";
5
+ export interface ContextAssemblyModifierOptions {
6
+ /** Scope variables to pass to the context assembly engine */
7
+ scopeVariables?: Record<string, any>;
8
+ /** Additional variables for memory resolution */
9
+ additionalVariables?: Record<string, any> | undefined;
10
+ /** Explicit memory IDs to include */
11
+ explicitMemory?: string[] | undefined;
12
+ /** Rule engine IDs to use for filtering */
13
+ ruleEngineIds?: string[] | undefined;
14
+ /** Constraints for context assembly */
15
+ constraints?: ContextConstraints | undefined;
16
+ /** Whether to include the user's input in the context request */
17
+ includeUserInput?: boolean;
18
+ /** Whether to inject context as system or user message */
19
+ messageRole?: 'system' | 'user';
20
+ /** Whether to validate the request before assembling */
21
+ validateBeforeAssembly?: boolean;
22
+ /** Custom formatter for memory contributions */
23
+ formatContribution?: ((contribution: MemoryContribution) => string) | undefined;
24
+ }
25
+ export declare class ContextAssemblyModifier extends BaseMessageModifier {
26
+ private readonly options;
27
+ constructor(options?: ContextAssemblyModifierOptions);
28
+ modify(_originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
29
+ private buildRequest;
30
+ private formatContext;
31
+ private defaultFormatContribution;
32
+ /** Update scope variables at runtime */
33
+ setScopeVariables(variables: Record<string, any>): void;
34
+ /** Update additional variables at runtime */
35
+ setAdditionalVariables(variables: Record<string, any>): void;
36
+ /** Set explicit memory IDs to include */
37
+ setExplicitMemory(memoryIds: string[]): void;
38
+ /** Set constraints for context assembly */
39
+ setConstraints(constraints: ContextConstraints): void;
40
+ }
41
+ export interface RuleBasedContextModifierOptions {
42
+ /** Scope variables for rule evaluation */
43
+ scopeVariables?: Record<string, any>;
44
+ /** Specific rule engine IDs to evaluate */
45
+ ruleEngineIds?: string[] | undefined;
46
+ /** Whether to inject context as system or user message */
47
+ messageRole?: 'system' | 'user';
48
+ /** Constraints for the final context assembly */
49
+ constraints?: ContextConstraints | undefined;
50
+ }
51
+ export declare class RuleBasedContextModifier extends BaseMessageModifier {
52
+ private readonly options;
53
+ constructor(options?: RuleBasedContextModifierOptions);
54
+ modify(_originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
55
+ /** Update scope variables at runtime */
56
+ setScopeVariables(variables: Record<string, any>): void;
57
+ /** Set specific rule engine IDs to evaluate */
58
+ setRuleEngineIds(ruleEngineIds: string[]): void;
59
+ }
60
+ export interface MemoryTypeContextModifierOptions {
61
+ /** Specific memory type names to fetch */
62
+ memoryNames: string[];
63
+ /** Scope variables for context assembly */
64
+ scopeVariables?: Record<string, any>;
65
+ /** Whether to auto-resolve required variables from the message */
66
+ autoResolveVariables?: boolean;
67
+ /** Whether to inject context as system or user message */
68
+ messageRole?: 'system' | 'user';
69
+ /** Constraints for context assembly */
70
+ constraints?: ContextConstraints | undefined;
71
+ }
72
+ export declare class MemoryTypeContextModifier extends BaseMessageModifier {
73
+ private readonly options;
74
+ constructor(options: MemoryTypeContextModifierOptions);
75
+ modify(_originalRequest: FlatUserMessage, createdMessage: ProcessedMessage): Promise<ProcessedMessage>;
76
+ private resolveVariables;
77
+ /** Update memory names to fetch */
78
+ setMemoryNames(memoryNames: string[]): void;
79
+ /** Update scope variables at runtime */
80
+ setScopeVariables(variables: Record<string, any>): void;
81
+ }
@@ -0,0 +1,316 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MemoryTypeContextModifier = exports.RuleBasedContextModifier = exports.ContextAssemblyModifier = void 0;
7
+ const base_1 = require("../base");
8
+ const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
9
+ const promptContext_1 = require("../../unified/base/promptContext");
10
+ class ContextAssemblyModifier extends base_1.BaseMessageModifier {
11
+ constructor(options = {}) {
12
+ super();
13
+ this.options = {
14
+ scopeVariables: options.scopeVariables || {},
15
+ additionalVariables: options.additionalVariables,
16
+ explicitMemory: options.explicitMemory,
17
+ ruleEngineIds: options.ruleEngineIds,
18
+ constraints: options.constraints,
19
+ includeUserInput: options.includeUserInput !== false,
20
+ messageRole: options.messageRole || 'system',
21
+ validateBeforeAssembly: options.validateBeforeAssembly || false,
22
+ formatContribution: options.formatContribution,
23
+ };
24
+ }
25
+ async modify(_originalRequest, createdMessage) {
26
+ var _a, _b, _c, _d;
27
+ try {
28
+ const request = this.buildRequest(createdMessage);
29
+ // Optionally validate first
30
+ if (this.options.validateBeforeAssembly) {
31
+ const validation = await codeboltjs_1.default.contextAssembly.validate(request);
32
+ if (!validation.success || (((_a = validation.data) === null || _a === void 0 ? void 0 : _a.validation) && !validation.data.validation.valid)) {
33
+ console.warn('Context assembly validation failed:', (_c = (_b = validation.data) === null || _b === void 0 ? void 0 : _b.validation) === null || _c === void 0 ? void 0 : _c.errors);
34
+ return createdMessage;
35
+ }
36
+ }
37
+ const response = await codeboltjs_1.default.contextAssembly.getContext(request);
38
+ if (!response.success || !((_d = response.data) === null || _d === void 0 ? void 0 : _d.context)) {
39
+ console.warn('Context assembly failed:', response.error || response.message);
40
+ return createdMessage;
41
+ }
42
+ const { context } = response.data;
43
+ const contextContent = this.formatContext(context.contributions);
44
+ if (!contextContent.trim()) {
45
+ return createdMessage;
46
+ }
47
+ const contextMessage = {
48
+ role: this.options.messageRole,
49
+ content: contextContent,
50
+ };
51
+ const updatedMessage = this.options.messageRole === 'user'
52
+ ? (0, promptContext_1.appendUserContextMessage)(createdMessage, contextMessage)
53
+ : (0, promptContext_1.appendSystemContextMessage)(createdMessage, contextMessage);
54
+ return {
55
+ ...updatedMessage,
56
+ metadata: {
57
+ ...createdMessage.metadata,
58
+ contextAssemblyAdded: true,
59
+ contextAssemblyStats: {
60
+ totalTokens: context.total_tokens,
61
+ assemblyTimeMs: context.assembly_time_ms,
62
+ contributionCount: context.contributions.length,
63
+ appliedRules: context.applied_rules,
64
+ warnings: context.warnings,
65
+ },
66
+ },
67
+ };
68
+ }
69
+ catch (error) {
70
+ console.error('Error in ContextAssemblyModifier:', error);
71
+ return createdMessage;
72
+ }
73
+ }
74
+ buildRequest(createdMessage) {
75
+ const request = {
76
+ scope_variables: { ...this.options.scopeVariables },
77
+ };
78
+ if (this.options.includeUserInput) {
79
+ const userMessage = createdMessage.message.messages.find(msg => msg.role === 'user');
80
+ if (userMessage && typeof userMessage.content === 'string') {
81
+ request.input = userMessage.content;
82
+ }
83
+ }
84
+ if (this.options.additionalVariables) {
85
+ request.additional_variables = this.options.additionalVariables;
86
+ }
87
+ if (this.options.explicitMemory) {
88
+ request.explicit_memory = this.options.explicitMemory;
89
+ }
90
+ if (this.options.constraints) {
91
+ request.constraints = this.options.constraints;
92
+ }
93
+ if (this.options.ruleEngineIds) {
94
+ request.rule_engine_ids = this.options.ruleEngineIds;
95
+ }
96
+ return request;
97
+ }
98
+ formatContext(contributions) {
99
+ if (contributions.length === 0)
100
+ return '';
101
+ const formatter = this.options.formatContribution || this.defaultFormatContribution;
102
+ const parts = contributions.map(formatter);
103
+ return `## Assembled Context\n\n${parts.join('\n\n')}`;
104
+ }
105
+ defaultFormatContribution(contribution) {
106
+ return `### ${contribution.memory_label}\n${contribution.content}`;
107
+ }
108
+ /** Update scope variables at runtime */
109
+ setScopeVariables(variables) {
110
+ this.options.scopeVariables = { ...this.options.scopeVariables, ...variables };
111
+ }
112
+ /** Update additional variables at runtime */
113
+ setAdditionalVariables(variables) {
114
+ this.options.additionalVariables = { ...this.options.additionalVariables, ...variables };
115
+ }
116
+ /** Set explicit memory IDs to include */
117
+ setExplicitMemory(memoryIds) {
118
+ this.options.explicitMemory = memoryIds;
119
+ }
120
+ /** Set constraints for context assembly */
121
+ setConstraints(constraints) {
122
+ this.options.constraints = constraints;
123
+ }
124
+ }
125
+ exports.ContextAssemblyModifier = ContextAssemblyModifier;
126
+ class RuleBasedContextModifier extends base_1.BaseMessageModifier {
127
+ constructor(options = {}) {
128
+ super();
129
+ this.options = {
130
+ scopeVariables: options.scopeVariables || {},
131
+ ruleEngineIds: options.ruleEngineIds,
132
+ messageRole: options.messageRole || 'system',
133
+ constraints: options.constraints,
134
+ };
135
+ }
136
+ async modify(_originalRequest, createdMessage) {
137
+ var _a;
138
+ try {
139
+ // First evaluate rules to determine which memories to include
140
+ const userMessage = createdMessage.message.messages.find(msg => msg.role === 'user');
141
+ const input = userMessage && typeof userMessage.content === 'string' ? userMessage.content : undefined;
142
+ const request = {
143
+ scope_variables: { ...this.options.scopeVariables },
144
+ };
145
+ if (input) {
146
+ request.input = input;
147
+ }
148
+ const ruleResult = await codeboltjs_1.default.contextAssembly.evaluateRules(request, this.options.ruleEngineIds);
149
+ if (!ruleResult.success || !ruleResult.data) {
150
+ console.warn('Rule evaluation failed:', ruleResult.error || ruleResult.message);
151
+ return createdMessage;
152
+ }
153
+ const { included_memories, forced_memories } = ruleResult.data;
154
+ const memoriesToFetch = [...new Set([...included_memories, ...forced_memories])];
155
+ if (memoriesToFetch.length === 0) {
156
+ return createdMessage;
157
+ }
158
+ // Now assemble context with only the rule-determined memories
159
+ const assemblyRequest = {
160
+ scope_variables: { ...this.options.scopeVariables },
161
+ explicit_memory: memoriesToFetch,
162
+ };
163
+ if (input) {
164
+ assemblyRequest.input = input;
165
+ }
166
+ if (this.options.constraints) {
167
+ assemblyRequest.constraints = this.options.constraints;
168
+ }
169
+ const response = await codeboltjs_1.default.contextAssembly.getContext(assemblyRequest);
170
+ if (!response.success || !((_a = response.data) === null || _a === void 0 ? void 0 : _a.context)) {
171
+ console.warn('Context assembly failed after rule evaluation:', response.error);
172
+ return createdMessage;
173
+ }
174
+ const { context } = response.data;
175
+ const parts = context.contributions.map((c) => `### ${c.memory_label}\n${c.content}`);
176
+ const contextContent = `## Rule-Based Context\n\n${parts.join('\n\n')}`;
177
+ if (!contextContent.trim()) {
178
+ return createdMessage;
179
+ }
180
+ const contextMessage = {
181
+ role: this.options.messageRole,
182
+ content: contextContent,
183
+ };
184
+ const messages = [...createdMessage.message.messages, contextMessage];
185
+ return {
186
+ message: {
187
+ ...createdMessage.message,
188
+ messages,
189
+ },
190
+ metadata: {
191
+ ...createdMessage.metadata,
192
+ ruleBasedContextAdded: true,
193
+ ruleEvaluation: {
194
+ matchedRules: ruleResult.data.matched_rules,
195
+ includedMemories: included_memories,
196
+ excludedMemories: ruleResult.data.excluded_memories,
197
+ forcedMemories: forced_memories,
198
+ },
199
+ contextAssemblyStats: {
200
+ totalTokens: context.total_tokens,
201
+ assemblyTimeMs: context.assembly_time_ms,
202
+ contributionCount: context.contributions.length,
203
+ },
204
+ },
205
+ };
206
+ }
207
+ catch (error) {
208
+ console.error('Error in RuleBasedContextModifier:', error);
209
+ return createdMessage;
210
+ }
211
+ }
212
+ /** Update scope variables at runtime */
213
+ setScopeVariables(variables) {
214
+ this.options.scopeVariables = { ...this.options.scopeVariables, ...variables };
215
+ }
216
+ /** Set specific rule engine IDs to evaluate */
217
+ setRuleEngineIds(ruleEngineIds) {
218
+ this.options.ruleEngineIds = ruleEngineIds;
219
+ }
220
+ }
221
+ exports.RuleBasedContextModifier = RuleBasedContextModifier;
222
+ class MemoryTypeContextModifier extends base_1.BaseMessageModifier {
223
+ constructor(options) {
224
+ super();
225
+ this.options = {
226
+ memoryNames: options.memoryNames,
227
+ scopeVariables: options.scopeVariables || {},
228
+ autoResolveVariables: options.autoResolveVariables || false,
229
+ messageRole: options.messageRole || 'system',
230
+ constraints: options.constraints,
231
+ };
232
+ }
233
+ async modify(_originalRequest, createdMessage) {
234
+ var _a;
235
+ try {
236
+ let additionalVariables;
237
+ // Auto-resolve required variables if enabled
238
+ if (this.options.autoResolveVariables) {
239
+ const requiredVarsResponse = await codeboltjs_1.default.contextAssembly.getRequiredVariables(this.options.memoryNames);
240
+ if (requiredVarsResponse.success && requiredVarsResponse.data) {
241
+ additionalVariables = this.resolveVariables(requiredVarsResponse.data, createdMessage);
242
+ }
243
+ }
244
+ const userMessage = createdMessage.message.messages.find(msg => msg.role === 'user');
245
+ const input = userMessage && typeof userMessage.content === 'string' ? userMessage.content : undefined;
246
+ const request = {
247
+ scope_variables: { ...this.options.scopeVariables },
248
+ explicit_memory: this.options.memoryNames,
249
+ };
250
+ if (input) {
251
+ request.input = input;
252
+ }
253
+ if (additionalVariables) {
254
+ request.additional_variables = additionalVariables;
255
+ }
256
+ if (this.options.constraints) {
257
+ request.constraints = this.options.constraints;
258
+ }
259
+ const response = await codeboltjs_1.default.contextAssembly.getContext(request);
260
+ if (!response.success || !((_a = response.data) === null || _a === void 0 ? void 0 : _a.context)) {
261
+ console.warn('Memory type context assembly failed:', response.error || response.message);
262
+ return createdMessage;
263
+ }
264
+ const { context } = response.data;
265
+ const parts = context.contributions.map((c) => `### ${c.memory_label}\n${c.content}`);
266
+ const contextContent = parts.join('\n\n');
267
+ if (!contextContent.trim()) {
268
+ return createdMessage;
269
+ }
270
+ const contextMessage = {
271
+ role: this.options.messageRole,
272
+ content: contextContent,
273
+ };
274
+ const messages = [...createdMessage.message.messages, contextMessage];
275
+ return {
276
+ message: {
277
+ ...createdMessage.message,
278
+ messages,
279
+ },
280
+ metadata: {
281
+ ...createdMessage.metadata,
282
+ memoryTypeContextAdded: true,
283
+ memoryNames: this.options.memoryNames,
284
+ contextAssemblyStats: {
285
+ totalTokens: context.total_tokens,
286
+ assemblyTimeMs: context.assembly_time_ms,
287
+ contributionCount: context.contributions.length,
288
+ },
289
+ },
290
+ };
291
+ }
292
+ catch (error) {
293
+ console.error('Error in MemoryTypeContextModifier:', error);
294
+ return createdMessage;
295
+ }
296
+ }
297
+ resolveVariables(requiredVars, createdMessage) {
298
+ const resolved = {};
299
+ for (const [key, _spec] of Object.entries(requiredVars.additional_variables)) {
300
+ // Try to resolve from existing metadata
301
+ if (createdMessage.metadata && key in createdMessage.metadata) {
302
+ resolved[key] = createdMessage.metadata[key];
303
+ }
304
+ }
305
+ return resolved;
306
+ }
307
+ /** Update memory names to fetch */
308
+ setMemoryNames(memoryNames) {
309
+ this.options.memoryNames = memoryNames;
310
+ }
311
+ /** Update scope variables at runtime */
312
+ setScopeVariables(variables) {
313
+ this.options.scopeVariables = { ...this.options.scopeVariables, ...variables };
314
+ }
315
+ }
316
+ exports.MemoryTypeContextModifier = MemoryTypeContextModifier;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CoreSystemPromptModifier = void 0;
4
4
  const base_1 = require("../base");
5
+ const promptContext_1 = require("../../unified/base/promptContext");
5
6
  class CoreSystemPromptModifier extends base_1.BaseMessageModifier {
6
7
  constructor(options = {}) {
7
8
  super();
@@ -12,26 +13,8 @@ class CoreSystemPromptModifier extends base_1.BaseMessageModifier {
12
13
  // Get user memory from metadata or options
13
14
  const userMemory = ((_a = createdMessage.metadata) === null || _a === void 0 ? void 0 : _a['userMemory']) || this.options.userMemory;
14
15
  const systemPrompt = this.options.customSystemPrompt || this.getCoreSystemPrompt(userMemory);
15
- const systemMessage = {
16
- role: 'system',
17
- content: systemPrompt
18
- };
19
- // Find existing system message or add new one
20
- const messages = [...createdMessage.message.messages];
21
- const systemMessageIndex = messages.findIndex(msg => msg.role === 'system');
22
- if (systemMessageIndex !== -1) {
23
- // Replace existing system message
24
- messages[systemMessageIndex] = systemMessage;
25
- }
26
- else {
27
- // Add new system message at the beginning
28
- messages.unshift(systemMessage);
29
- }
30
16
  return Promise.resolve({
31
- message: {
32
- ...createdMessage.message,
33
- messages
34
- },
17
+ ...(0, promptContext_1.setSystemPrompt)(createdMessage, systemPrompt),
35
18
  metadata: {
36
19
  ...createdMessage.metadata,
37
20
  coreSystemPromptAdded: true,
@@ -41,6 +41,7 @@ const base_1 = require("../base");
41
41
  const fs = __importStar(require("node:fs/promises"));
42
42
  const path = __importStar(require("node:path"));
43
43
  const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
44
+ const promptContext_1 = require("../../unified/base/promptContext");
44
45
  const MAX_ITEMS = 200;
45
46
  const TRUNCATION_INDICATOR = '...';
46
47
  const DEFAULT_IGNORED_FOLDERS = new Set(['node_modules', '.git', 'dist', 'build', '.next', '.cache', '.tmp', 'tmp']);
@@ -100,13 +101,8 @@ ${folderStructure}`;
100
101
  role: 'user', // Note: gemini-cli adds this as user message, not system
101
102
  content: directoryContext
102
103
  };
103
- // Add as user message (like gemini-cli does)
104
- const messages = [...createdMessage.message.messages, contextMessage];
105
104
  return Promise.resolve({
106
- message: {
107
- ...createdMessage.message,
108
- messages
109
- },
105
+ ...(0, promptContext_1.appendUserContextMessage)(createdMessage, contextMessage),
110
106
  metadata: {
111
107
  ...createdMessage.metadata,
112
108
  directoryContextAdded: true,
@@ -41,6 +41,7 @@ const base_1 = require("../base");
41
41
  const path = __importStar(require("path"));
42
42
  const fs = __importStar(require("fs"));
43
43
  const codeboltjs_1 = __importDefault(require("@codebolt/codeboltjs"));
44
+ const promptContext_1 = require("../../unified/base/promptContext");
44
45
  class EnvironmentContextModifier extends base_1.BaseMessageModifier {
45
46
  constructor(options = {}) {
46
47
  super();
@@ -119,14 +120,8 @@ ${directoryListing}
119
120
  role: 'user',
120
121
  content: finalContent
121
122
  };
122
- // Push the context message to the messages array
123
- const messages = [...createdMessage.message.messages];
124
- messages.push(contextMessage);
125
123
  return Promise.resolve({
126
- message: {
127
- ...createdMessage.message,
128
- messages
129
- },
124
+ ...(0, promptContext_1.appendUserContextMessage)(createdMessage, contextMessage),
130
125
  metadata: {
131
126
  ...createdMessage.metadata,
132
127
  environmentContextAdded: true,
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IdeContextModifier = void 0;
4
4
  const base_1 = require("../base");
5
+ const promptContext_1 = require("../../unified/base/promptContext");
5
6
  class IdeContextModifier extends base_1.BaseMessageModifier {
6
7
  constructor(options = {}) {
7
8
  super();
@@ -29,32 +30,12 @@ class IdeContextModifier extends base_1.BaseMessageModifier {
29
30
  role: 'system',
30
31
  content: contextParts.join('\n')
31
32
  };
32
- // Find existing system message or add new one
33
- const messages = [...createdMessage.message.messages];
34
- const systemMessageIndex = messages.findIndex(msg => msg.role === 'system');
35
- if (systemMessageIndex !== -1) {
36
- // Append to existing system message
37
- const existingMessage = messages[systemMessageIndex];
38
- if (existingMessage) {
39
- messages[systemMessageIndex] = {
40
- role: existingMessage.role,
41
- content: `${existingMessage.content}\n\n${ideContextMessage.content}`
42
- };
43
- }
44
- }
45
- else {
46
- // Add new system message
47
- messages.unshift(ideContextMessage);
48
- }
49
33
  if (newIdeContext) {
50
34
  this.lastSentIdeContext = newIdeContext;
51
35
  }
52
36
  this.forceFullContext = false;
53
37
  return Promise.resolve({
54
- message: {
55
- ...createdMessage.message,
56
- messages
57
- },
38
+ ...(0, promptContext_1.appendSystemContextMessage)(createdMessage, ideContextMessage),
58
39
  metadata: {
59
40
  ...createdMessage.metadata,
60
41
  ideContextAdded: true,
@@ -9,3 +9,6 @@ export { LoopDetectionModifier, type LoopDetectionOptions } from '../postInferen
9
9
  export { ToolInjectionModifier, type ToolInjectionOptions } from './toolInjectionModifier';
10
10
  export { ChatRecordingModifier, type ChatRecordingOptions } from './chatRecordingModifier';
11
11
  export { ChatHistoryMessageModifier, type ChatHistoryMessageModifierOptions } from './chatHistoryMessageModifier';
12
+ export { ContextAssemblyModifier, type ContextAssemblyModifierOptions } from './contextAssemblyModifier';
13
+ export { RuleBasedContextModifier, type RuleBasedContextModifierOptions } from './contextAssemblyModifier';
14
+ export { MemoryTypeContextModifier, type MemoryTypeContextModifierOptions } from './contextAssemblyModifier';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ChatHistoryMessageModifier = exports.ChatRecordingModifier = exports.ToolInjectionModifier = exports.LoopDetectionModifier = exports.MemoryImportModifier = exports.ArgumentProcessorModifier = exports.AtFileProcessorModifier = exports.IdeContextModifier = exports.DirectoryContextModifier = exports.CoreSystemPromptModifier = exports.EnvironmentContextModifier = void 0;
3
+ exports.MemoryTypeContextModifier = exports.RuleBasedContextModifier = exports.ContextAssemblyModifier = exports.ChatHistoryMessageModifier = exports.ChatRecordingModifier = exports.ToolInjectionModifier = exports.LoopDetectionModifier = exports.MemoryImportModifier = exports.ArgumentProcessorModifier = exports.AtFileProcessorModifier = exports.IdeContextModifier = exports.DirectoryContextModifier = exports.CoreSystemPromptModifier = exports.EnvironmentContextModifier = void 0;
4
4
  // Gemini-CLI equivalent modifiers
5
5
  var environmentContextModifier_1 = require("./environmentContextModifier");
6
6
  Object.defineProperty(exports, "EnvironmentContextModifier", { enumerable: true, get: function () { return environmentContextModifier_1.EnvironmentContextModifier; } });
@@ -24,3 +24,9 @@ var chatRecordingModifier_1 = require("./chatRecordingModifier");
24
24
  Object.defineProperty(exports, "ChatRecordingModifier", { enumerable: true, get: function () { return chatRecordingModifier_1.ChatRecordingModifier; } });
25
25
  var chatHistoryMessageModifier_1 = require("./chatHistoryMessageModifier");
26
26
  Object.defineProperty(exports, "ChatHistoryMessageModifier", { enumerable: true, get: function () { return chatHistoryMessageModifier_1.ChatHistoryMessageModifier; } });
27
+ var contextAssemblyModifier_1 = require("./contextAssemblyModifier");
28
+ Object.defineProperty(exports, "ContextAssemblyModifier", { enumerable: true, get: function () { return contextAssemblyModifier_1.ContextAssemblyModifier; } });
29
+ var contextAssemblyModifier_2 = require("./contextAssemblyModifier");
30
+ Object.defineProperty(exports, "RuleBasedContextModifier", { enumerable: true, get: function () { return contextAssemblyModifier_2.RuleBasedContextModifier; } });
31
+ var contextAssemblyModifier_3 = require("./contextAssemblyModifier");
32
+ Object.defineProperty(exports, "MemoryTypeContextModifier", { enumerable: true, get: function () { return contextAssemblyModifier_3.MemoryTypeContextModifier; } });
@@ -107,7 +107,8 @@ class ToolInjectionModifier extends base_1.BaseMessageModifier {
107
107
  ...createdMessage.metadata,
108
108
  toolsInjected: true,
109
109
  toolsLocation: 'Tool',
110
- toolsCount: tools.length
110
+ toolsCount: tools.length,
111
+ allowedTools: this.options.allowedTools
111
112
  }
112
113
  };
113
114
  }