@cogitator-ai/self-modifying 0.1.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.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +714 -0
  3. package/dist/architecture-evolution/capability-analyzer.d.ts +32 -0
  4. package/dist/architecture-evolution/capability-analyzer.d.ts.map +1 -0
  5. package/dist/architecture-evolution/capability-analyzer.js +264 -0
  6. package/dist/architecture-evolution/capability-analyzer.js.map +1 -0
  7. package/dist/architecture-evolution/evolution-strategy.d.ts +29 -0
  8. package/dist/architecture-evolution/evolution-strategy.d.ts.map +1 -0
  9. package/dist/architecture-evolution/evolution-strategy.js +176 -0
  10. package/dist/architecture-evolution/evolution-strategy.js.map +1 -0
  11. package/dist/architecture-evolution/index.d.ts +5 -0
  12. package/dist/architecture-evolution/index.d.ts.map +1 -0
  13. package/dist/architecture-evolution/index.js +5 -0
  14. package/dist/architecture-evolution/index.js.map +1 -0
  15. package/dist/architecture-evolution/parameter-optimizer.d.ts +67 -0
  16. package/dist/architecture-evolution/parameter-optimizer.d.ts.map +1 -0
  17. package/dist/architecture-evolution/parameter-optimizer.js +341 -0
  18. package/dist/architecture-evolution/parameter-optimizer.js.map +1 -0
  19. package/dist/architecture-evolution/prompts.d.ts +33 -0
  20. package/dist/architecture-evolution/prompts.d.ts.map +1 -0
  21. package/dist/architecture-evolution/prompts.js +169 -0
  22. package/dist/architecture-evolution/prompts.js.map +1 -0
  23. package/dist/constraints/index.d.ts +4 -0
  24. package/dist/constraints/index.d.ts.map +1 -0
  25. package/dist/constraints/index.js +4 -0
  26. package/dist/constraints/index.js.map +1 -0
  27. package/dist/constraints/modification-validator.d.ts +26 -0
  28. package/dist/constraints/modification-validator.d.ts.map +1 -0
  29. package/dist/constraints/modification-validator.js +313 -0
  30. package/dist/constraints/modification-validator.js.map +1 -0
  31. package/dist/constraints/rollback-manager.d.ts +52 -0
  32. package/dist/constraints/rollback-manager.d.ts.map +1 -0
  33. package/dist/constraints/rollback-manager.js +113 -0
  34. package/dist/constraints/rollback-manager.js.map +1 -0
  35. package/dist/constraints/safety-constraints.d.ts +11 -0
  36. package/dist/constraints/safety-constraints.d.ts.map +1 -0
  37. package/dist/constraints/safety-constraints.js +78 -0
  38. package/dist/constraints/safety-constraints.js.map +1 -0
  39. package/dist/events/event-emitter.d.ts +12 -0
  40. package/dist/events/event-emitter.d.ts.map +1 -0
  41. package/dist/events/event-emitter.js +43 -0
  42. package/dist/events/event-emitter.js.map +1 -0
  43. package/dist/events/index.d.ts +2 -0
  44. package/dist/events/index.d.ts.map +1 -0
  45. package/dist/events/index.js +2 -0
  46. package/dist/events/index.js.map +1 -0
  47. package/dist/index.d.ts +8 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +7 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/meta-reasoning/index.d.ts +5 -0
  52. package/dist/meta-reasoning/index.d.ts.map +1 -0
  53. package/dist/meta-reasoning/index.js +5 -0
  54. package/dist/meta-reasoning/index.js.map +1 -0
  55. package/dist/meta-reasoning/meta-reasoner.d.ts +53 -0
  56. package/dist/meta-reasoning/meta-reasoner.d.ts.map +1 -0
  57. package/dist/meta-reasoning/meta-reasoner.js +261 -0
  58. package/dist/meta-reasoning/meta-reasoner.js.map +1 -0
  59. package/dist/meta-reasoning/observation-collector.d.ts +37 -0
  60. package/dist/meta-reasoning/observation-collector.d.ts.map +1 -0
  61. package/dist/meta-reasoning/observation-collector.js +123 -0
  62. package/dist/meta-reasoning/observation-collector.js.map +1 -0
  63. package/dist/meta-reasoning/prompts.d.ts +31 -0
  64. package/dist/meta-reasoning/prompts.d.ts.map +1 -0
  65. package/dist/meta-reasoning/prompts.js +96 -0
  66. package/dist/meta-reasoning/prompts.js.map +1 -0
  67. package/dist/meta-reasoning/strategy-selector.d.ts +27 -0
  68. package/dist/meta-reasoning/strategy-selector.d.ts.map +1 -0
  69. package/dist/meta-reasoning/strategy-selector.js +138 -0
  70. package/dist/meta-reasoning/strategy-selector.js.map +1 -0
  71. package/dist/self-modifying-agent.d.ts +61 -0
  72. package/dist/self-modifying-agent.d.ts.map +1 -0
  73. package/dist/self-modifying-agent.js +449 -0
  74. package/dist/self-modifying-agent.js.map +1 -0
  75. package/dist/tool-generation/gap-analyzer.d.ts +25 -0
  76. package/dist/tool-generation/gap-analyzer.d.ts.map +1 -0
  77. package/dist/tool-generation/gap-analyzer.js +153 -0
  78. package/dist/tool-generation/gap-analyzer.js.map +1 -0
  79. package/dist/tool-generation/generated-tool-store.d.ts +51 -0
  80. package/dist/tool-generation/generated-tool-store.d.ts.map +1 -0
  81. package/dist/tool-generation/generated-tool-store.js +195 -0
  82. package/dist/tool-generation/generated-tool-store.js.map +1 -0
  83. package/dist/tool-generation/index.d.ts +7 -0
  84. package/dist/tool-generation/index.d.ts.map +1 -0
  85. package/dist/tool-generation/index.js +7 -0
  86. package/dist/tool-generation/index.js.map +1 -0
  87. package/dist/tool-generation/prompts.d.ts +28 -0
  88. package/dist/tool-generation/prompts.d.ts.map +1 -0
  89. package/dist/tool-generation/prompts.js +269 -0
  90. package/dist/tool-generation/prompts.js.map +1 -0
  91. package/dist/tool-generation/tool-generator.d.ts +29 -0
  92. package/dist/tool-generation/tool-generator.d.ts.map +1 -0
  93. package/dist/tool-generation/tool-generator.js +169 -0
  94. package/dist/tool-generation/tool-generator.js.map +1 -0
  95. package/dist/tool-generation/tool-sandbox.d.ts +31 -0
  96. package/dist/tool-generation/tool-sandbox.d.ts.map +1 -0
  97. package/dist/tool-generation/tool-sandbox.js +240 -0
  98. package/dist/tool-generation/tool-sandbox.js.map +1 -0
  99. package/dist/tool-generation/tool-validator.d.ts +32 -0
  100. package/dist/tool-generation/tool-validator.d.ts.map +1 -0
  101. package/dist/tool-generation/tool-validator.js +304 -0
  102. package/dist/tool-generation/tool-validator.js.map +1 -0
  103. package/dist/utils/index.d.ts +2 -0
  104. package/dist/utils/index.d.ts.map +1 -0
  105. package/dist/utils/index.js +2 -0
  106. package/dist/utils/index.js.map +1 -0
  107. package/dist/utils/llm-helper.d.ts +6 -0
  108. package/dist/utils/llm-helper.d.ts.map +1 -0
  109. package/dist/utils/llm-helper.js +18 -0
  110. package/dist/utils/llm-helper.js.map +1 -0
  111. package/package.json +61 -0
  112. package/src/__tests__/architecture-evolution.test.ts +368 -0
  113. package/src/__tests__/constraints.test.ts +266 -0
  114. package/src/__tests__/index.test.ts +99 -0
  115. package/src/__tests__/meta-reasoning.test.ts +343 -0
  116. package/src/__tests__/tool-generation.test.ts +455 -0
  117. package/src/architecture-evolution/capability-analyzer.ts +337 -0
  118. package/src/architecture-evolution/evolution-strategy.ts +224 -0
  119. package/src/architecture-evolution/index.ts +26 -0
  120. package/src/architecture-evolution/parameter-optimizer.ts +489 -0
  121. package/src/architecture-evolution/prompts.ts +216 -0
  122. package/src/constraints/index.ts +23 -0
  123. package/src/constraints/modification-validator.ts +402 -0
  124. package/src/constraints/rollback-manager.ts +173 -0
  125. package/src/constraints/safety-constraints.ts +103 -0
  126. package/src/events/event-emitter.ts +62 -0
  127. package/src/events/index.ts +1 -0
  128. package/src/index.ts +112 -0
  129. package/src/meta-reasoning/index.ts +24 -0
  130. package/src/meta-reasoning/meta-reasoner.ts +381 -0
  131. package/src/meta-reasoning/observation-collector.ts +161 -0
  132. package/src/meta-reasoning/prompts.ts +131 -0
  133. package/src/meta-reasoning/strategy-selector.ts +179 -0
  134. package/src/self-modifying-agent.ts +585 -0
  135. package/src/tool-generation/gap-analyzer.ts +234 -0
  136. package/src/tool-generation/generated-tool-store.ts +268 -0
  137. package/src/tool-generation/index.ts +19 -0
  138. package/src/tool-generation/prompts.ts +308 -0
  139. package/src/tool-generation/tool-generator.ts +243 -0
  140. package/src/tool-generation/tool-sandbox.ts +332 -0
  141. package/src/tool-generation/tool-validator.ts +365 -0
  142. package/src/utils/index.ts +1 -0
  143. package/src/utils/llm-helper.ts +24 -0
@@ -0,0 +1,449 @@
1
+ import { SelfModifyingEventEmitter } from './events';
2
+ import { GapAnalyzer, ToolGenerator, InMemoryGeneratedToolStore } from './tool-generation';
3
+ import { MetaReasoner } from './meta-reasoning';
4
+ import { ParameterOptimizer, CapabilityAnalyzer } from './architecture-evolution';
5
+ import { ModificationValidator, RollbackManager, DEFAULT_SAFETY_CONSTRAINTS, DEFAULT_CAPABILITY_CONSTRAINTS, DEFAULT_RESOURCE_CONSTRAINTS, } from './constraints';
6
+ export class SelfModifyingAgent {
7
+ agent;
8
+ llm;
9
+ config;
10
+ emitter = new SelfModifyingEventEmitter();
11
+ gapAnalyzer;
12
+ toolGenerator;
13
+ toolStore;
14
+ metaReasoner;
15
+ parameterOptimizer;
16
+ _capabilityAnalyzer;
17
+ modificationValidator;
18
+ rollbackManager;
19
+ currentContext = null;
20
+ isInitialized = false;
21
+ constructor(options) {
22
+ this.agent = options.agent;
23
+ this.llm = options.llm;
24
+ this.config = this.mergeConfig(options.config);
25
+ const toolGenConfig = this.config.toolGeneration;
26
+ this.gapAnalyzer = new GapAnalyzer({ llm: this.llm, config: toolGenConfig });
27
+ this.toolGenerator = new ToolGenerator({ llm: this.llm, config: toolGenConfig });
28
+ this.toolStore = new InMemoryGeneratedToolStore();
29
+ this.metaReasoner = new MetaReasoner({
30
+ llm: this.llm,
31
+ model: 'default',
32
+ config: this.config.metaReasoning,
33
+ });
34
+ const baseArchConfig = {
35
+ model: 'default',
36
+ temperature: 0.7,
37
+ maxTokens: 4096,
38
+ toolStrategy: 'sequential',
39
+ reflectionDepth: 1,
40
+ };
41
+ this.parameterOptimizer = new ParameterOptimizer({
42
+ llm: this.llm,
43
+ config: this.config.architectureEvolution,
44
+ baseConfig: baseArchConfig,
45
+ });
46
+ this._capabilityAnalyzer = new CapabilityAnalyzer({
47
+ llm: this.llm,
48
+ enableLLMAnalysis: true,
49
+ });
50
+ this.modificationValidator = new ModificationValidator({
51
+ constraints: {
52
+ safety: DEFAULT_SAFETY_CONSTRAINTS,
53
+ capability: DEFAULT_CAPABILITY_CONSTRAINTS,
54
+ resource: DEFAULT_RESOURCE_CONSTRAINTS,
55
+ },
56
+ });
57
+ this.rollbackManager = new RollbackManager({
58
+ maxCheckpoints: 10,
59
+ });
60
+ }
61
+ on(event, handler) {
62
+ this.emitter.on(event, handler);
63
+ }
64
+ off(event, handler) {
65
+ this.emitter.off(event, handler);
66
+ }
67
+ async run(input) {
68
+ await this.ensureInitialized();
69
+ const runId = `run_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
70
+ const tools = this.getAvailableTools();
71
+ const baseConfig = {
72
+ model: 'default',
73
+ temperature: 0.7,
74
+ maxTokens: 4096,
75
+ toolStrategy: 'sequential',
76
+ reflectionDepth: 1,
77
+ };
78
+ this.currentContext = {
79
+ runId,
80
+ input,
81
+ startTime: Date.now(),
82
+ tools: [...tools],
83
+ currentConfig: baseConfig,
84
+ generatedTools: [],
85
+ observations: [],
86
+ adaptations: [],
87
+ checkpoints: [],
88
+ };
89
+ this.emitter.emit({
90
+ type: 'run_started',
91
+ runId,
92
+ timestamp: new Date(),
93
+ data: { input },
94
+ });
95
+ try {
96
+ if (this.config.architectureEvolution.enabled) {
97
+ await this.optimizeArchitecture(input);
98
+ }
99
+ if (this.config.toolGeneration.enabled && this.config.toolGeneration.autoGenerate) {
100
+ await this.analyzeAndGenerateTools(input);
101
+ }
102
+ const modeConfig = this.metaReasoner.initializeRun(runId);
103
+ this.emitter.emit({
104
+ type: 'strategy_changed',
105
+ runId,
106
+ timestamp: new Date(),
107
+ data: {
108
+ previousMode: 'analytical',
109
+ newMode: modeConfig.mode,
110
+ reason: 'Initial mode selection',
111
+ },
112
+ });
113
+ const output = await this.executeWithMetaReasoning(input, runId);
114
+ const result = {
115
+ output,
116
+ toolsGenerated: [...this.currentContext.generatedTools],
117
+ adaptationsMade: [...this.currentContext.adaptations],
118
+ finalConfig: { ...this.currentContext.currentConfig },
119
+ };
120
+ this.emitter.emit({
121
+ type: 'run_completed',
122
+ runId,
123
+ timestamp: new Date(),
124
+ data: {
125
+ success: true,
126
+ toolsGenerated: result.toolsGenerated.length,
127
+ adaptationsMade: result.adaptationsMade.length,
128
+ },
129
+ });
130
+ return result;
131
+ }
132
+ catch (error) {
133
+ this.emitter.emit({
134
+ type: 'run_completed',
135
+ runId,
136
+ timestamp: new Date(),
137
+ data: {
138
+ success: false,
139
+ error: error instanceof Error ? error.message : String(error),
140
+ },
141
+ });
142
+ throw error;
143
+ }
144
+ finally {
145
+ this.currentContext = null;
146
+ }
147
+ }
148
+ async generateTool(gap) {
149
+ if (!this.config.toolGeneration.enabled) {
150
+ return null;
151
+ }
152
+ const tools = this.getAvailableTools();
153
+ const result = await this.toolGenerator.generate(gap, tools);
154
+ if (result.success && result.tool) {
155
+ await this.toolStore.save(result.tool);
156
+ this.emitter.emit({
157
+ type: 'tool_generation_completed',
158
+ runId: this.currentContext?.runId || 'manual',
159
+ timestamp: new Date(),
160
+ data: {
161
+ toolId: result.tool.id,
162
+ name: result.tool.name,
163
+ success: true,
164
+ iterations: result.iterations,
165
+ },
166
+ });
167
+ return result.tool;
168
+ }
169
+ this.emitter.emit({
170
+ type: 'tool_generation_completed',
171
+ runId: this.currentContext?.runId || 'manual',
172
+ timestamp: new Date(),
173
+ data: {
174
+ toolId: '',
175
+ name: gap.suggestedToolName,
176
+ success: false,
177
+ error: result.error,
178
+ },
179
+ });
180
+ return null;
181
+ }
182
+ async recordToolUsage(toolId, success, executionTime) {
183
+ await this.toolStore.recordUsage({
184
+ toolId,
185
+ timestamp: new Date(),
186
+ success,
187
+ executionTime,
188
+ });
189
+ }
190
+ getGeneratedTools() {
191
+ return this.toolStore.list({ status: 'active' });
192
+ }
193
+ async createCheckpoint() {
194
+ if (!this.currentContext)
195
+ return null;
196
+ const agentConfig = {
197
+ name: this.agent.name || 'agent',
198
+ model: this.currentContext.currentConfig.model,
199
+ instructions: this.agent.instructions || '',
200
+ temperature: this.currentContext.currentConfig.temperature,
201
+ maxTokens: this.currentContext.currentConfig.maxTokens,
202
+ };
203
+ const checkpoint = await this.rollbackManager.createCheckpoint(this.agent.name || 'agent', agentConfig, this.currentContext.tools, []);
204
+ this.currentContext.checkpoints.push(checkpoint);
205
+ this.emitter.emit({
206
+ type: 'checkpoint_created',
207
+ runId: this.currentContext.runId,
208
+ timestamp: new Date(),
209
+ data: { checkpointId: checkpoint.id },
210
+ });
211
+ return checkpoint;
212
+ }
213
+ async rollbackToCheckpoint(checkpointId) {
214
+ const restored = await this.rollbackManager.rollbackTo(checkpointId);
215
+ if (!restored)
216
+ return false;
217
+ if (this.currentContext) {
218
+ this.currentContext.tools = restored.tools;
219
+ }
220
+ this.emitter.emit({
221
+ type: 'rollback_performed',
222
+ runId: this.currentContext?.runId || 'manual',
223
+ timestamp: new Date(),
224
+ data: {
225
+ checkpointId,
226
+ reason: 'Manual rollback',
227
+ },
228
+ });
229
+ return true;
230
+ }
231
+ async ensureInitialized() {
232
+ if (this.isInitialized)
233
+ return;
234
+ const activeToos = await this.toolStore.list({ status: 'active' });
235
+ for (const tool of activeToos) {
236
+ if (tool.validationScore && tool.validationScore > 0.8) {
237
+ }
238
+ }
239
+ this.isInitialized = true;
240
+ }
241
+ mergeConfig(partial) {
242
+ const defaults = {
243
+ enabled: true,
244
+ toolGeneration: {
245
+ enabled: true,
246
+ autoGenerate: true,
247
+ maxToolsPerSession: 3,
248
+ minConfidenceForGeneration: 0.7,
249
+ maxIterationsPerTool: 3,
250
+ requireLLMValidation: true,
251
+ sandboxConfig: {
252
+ enabled: true,
253
+ maxExecutionTime: 5000,
254
+ maxMemory: 50 * 1024 * 1024,
255
+ allowedModules: [],
256
+ isolationLevel: 'strict',
257
+ },
258
+ },
259
+ metaReasoning: {
260
+ enabled: true,
261
+ defaultMode: 'analytical',
262
+ allowedModes: ['analytical', 'creative', 'systematic', 'intuitive', 'reflective', 'exploratory'],
263
+ modeProfiles: {
264
+ analytical: { mode: 'analytical', temperature: 0.3, depth: 3 },
265
+ creative: { mode: 'creative', temperature: 0.9, depth: 2 },
266
+ systematic: { mode: 'systematic', temperature: 0.2, depth: 4 },
267
+ intuitive: { mode: 'intuitive', temperature: 0.6, depth: 1 },
268
+ reflective: { mode: 'reflective', temperature: 0.4, depth: 3 },
269
+ exploratory: { mode: 'exploratory', temperature: 0.7, depth: 2 },
270
+ },
271
+ maxAssessmentsPerRun: 5,
272
+ maxAdaptationsPerRun: 3,
273
+ maxMetaAssessments: 5,
274
+ maxAdaptations: 3,
275
+ assessmentCooldown: 10000,
276
+ metaAssessmentCooldown: 10000,
277
+ adaptationCooldown: 15000,
278
+ triggers: ['on_failure', 'on_low_confidence', 'periodic'],
279
+ triggerAfterIterations: 3,
280
+ triggerOnConfidenceDrop: 0.3,
281
+ triggerOnProgressStall: 2,
282
+ tokenBudget: 2000,
283
+ maxMetaTokens: 1000,
284
+ minConfidenceToAdapt: 0.6,
285
+ enableRollback: true,
286
+ rollbackWindow: 30000,
287
+ rollbackOnDecline: true,
288
+ },
289
+ architectureEvolution: {
290
+ enabled: true,
291
+ strategy: { type: 'ucb', explorationConstant: 2 },
292
+ maxCandidates: 10,
293
+ evaluationWindow: 10,
294
+ minEvaluationsBeforeEvolution: 3,
295
+ adaptationThreshold: 0.1,
296
+ },
297
+ constraints: {
298
+ enabled: true,
299
+ autoRollback: true,
300
+ rollbackWindow: 30000,
301
+ maxModificationsPerRun: 10,
302
+ },
303
+ };
304
+ if (!partial)
305
+ return defaults;
306
+ return {
307
+ enabled: partial.enabled ?? defaults.enabled,
308
+ toolGeneration: { ...defaults.toolGeneration, ...partial.toolGeneration },
309
+ metaReasoning: { ...defaults.metaReasoning, ...partial.metaReasoning },
310
+ architectureEvolution: { ...defaults.architectureEvolution, ...partial.architectureEvolution },
311
+ constraints: { ...defaults.constraints, ...partial.constraints },
312
+ };
313
+ }
314
+ getAvailableTools() {
315
+ return [];
316
+ }
317
+ async optimizeArchitecture(input) {
318
+ if (!this.currentContext)
319
+ return;
320
+ try {
321
+ const result = await this.parameterOptimizer.optimize(input);
322
+ if (result.shouldAdopt && result.confidence > 0.6) {
323
+ const validation = await this.modificationValidator.validate({
324
+ type: 'config_change',
325
+ target: 'architecture',
326
+ changes: result.recommendedConfig,
327
+ reason: result.reasoning,
328
+ });
329
+ if (validation.valid) {
330
+ this.currentContext.currentConfig = result.recommendedConfig;
331
+ this.emitter.emit({
332
+ type: 'architecture_evolved',
333
+ runId: this.currentContext.runId,
334
+ timestamp: new Date(),
335
+ data: {
336
+ candidateId: result.candidate?.id,
337
+ changes: result.recommendedConfig,
338
+ metrics: result.metrics,
339
+ },
340
+ });
341
+ }
342
+ }
343
+ }
344
+ catch {
345
+ }
346
+ }
347
+ async analyzeAndGenerateTools(input) {
348
+ if (!this.currentContext)
349
+ return;
350
+ try {
351
+ const analysis = await this.gapAnalyzer.analyze(input, this.currentContext.tools);
352
+ for (const gap of analysis.gaps) {
353
+ if (gap.confidence >= this.config.toolGeneration.minConfidenceForGeneration) {
354
+ this.emitter.emit({
355
+ type: 'tool_generation_started',
356
+ runId: this.currentContext.runId,
357
+ timestamp: new Date(),
358
+ data: { gap },
359
+ });
360
+ const tool = await this.generateTool(gap);
361
+ if (tool) {
362
+ this.currentContext.generatedTools.push(tool);
363
+ const executableTool = this.toolGenerator.createExecutableTool(tool);
364
+ this.currentContext.tools.push(executableTool);
365
+ }
366
+ }
367
+ }
368
+ }
369
+ catch {
370
+ }
371
+ }
372
+ async executeWithMetaReasoning(input, runId) {
373
+ if (!this.currentContext) {
374
+ throw new Error('No active run context');
375
+ }
376
+ let output = '';
377
+ let iteration = 0;
378
+ const maxIterations = 10;
379
+ while (iteration < maxIterations) {
380
+ iteration++;
381
+ const currentMode = this.metaReasoner.getCurrentMode(runId);
382
+ const observation = this.metaReasoner.observe({
383
+ runId,
384
+ iteration,
385
+ goal: input,
386
+ currentMode,
387
+ tokensUsed: Math.round(output.length * 1.3),
388
+ timeElapsed: Date.now() - this.currentContext.startTime,
389
+ iterationsRemaining: maxIterations - iteration,
390
+ budgetRemaining: 10000 - Math.round(output.length * 1.3),
391
+ }, []);
392
+ this.currentContext.observations.push(observation);
393
+ if (this.metaReasoner.shouldTrigger(runId, 'periodic', {
394
+ iteration,
395
+ confidence: this.estimateConfidence(output),
396
+ progressDelta: output.length > 0 ? 0.1 : 0,
397
+ stagnationCount: 0,
398
+ })) {
399
+ const assessment = await this.metaReasoner.assess(observation);
400
+ this.emitter.emit({
401
+ type: 'meta_assessment',
402
+ runId,
403
+ timestamp: new Date(),
404
+ data: {
405
+ observation,
406
+ assessment,
407
+ },
408
+ });
409
+ if (assessment.requiresAdaptation) {
410
+ const adaptation = await this.metaReasoner.adapt(runId, assessment);
411
+ if (adaptation) {
412
+ this.currentContext.adaptations.push(adaptation);
413
+ this.emitter.emit({
414
+ type: 'strategy_changed',
415
+ runId,
416
+ timestamp: new Date(),
417
+ data: {
418
+ previousMode: adaptation.before?.mode || 'analytical',
419
+ newMode: adaptation.after?.mode || 'analytical',
420
+ reason: adaptation.type,
421
+ },
422
+ });
423
+ }
424
+ }
425
+ }
426
+ output = await this.executeAgentStep(input);
427
+ if (this.isTaskComplete(output)) {
428
+ break;
429
+ }
430
+ }
431
+ return output;
432
+ }
433
+ async executeAgentStep(input) {
434
+ return `Processed: ${input}`;
435
+ }
436
+ estimateConfidence(output) {
437
+ if (!output)
438
+ return 0.3;
439
+ if (output.length < 50)
440
+ return 0.4;
441
+ if (output.length < 200)
442
+ return 0.6;
443
+ return 0.8;
444
+ }
445
+ isTaskComplete(output) {
446
+ return output.length > 0;
447
+ }
448
+ }
449
+ //# sourceMappingURL=self-modifying-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-modifying-agent.js","sourceRoot":"","sources":["../src/self-modifying-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Tool, LLMBackend, CapabilityGap, GapAnalysisResult, ToolSelfGenerationConfig } from '@cogitator-ai/types';
2
+ export interface GapAnalyzerOptions {
3
+ llm: LLMBackend;
4
+ config: ToolSelfGenerationConfig;
5
+ }
6
+ export declare class GapAnalyzer {
7
+ private readonly llm;
8
+ private readonly config;
9
+ private readonly analysisCache;
10
+ constructor(options: GapAnalyzerOptions);
11
+ analyze(userIntent: string, availableTools: Tool[], context?: {
12
+ failedAttempts?: string[];
13
+ previousGaps?: CapabilityGap[];
14
+ }): Promise<GapAnalysisResult>;
15
+ private filterAndPrioritizeGaps;
16
+ private isComplexityAllowed;
17
+ private calculatePriority;
18
+ private calculateCoverage;
19
+ private suggestCompositions;
20
+ private generateReasoning;
21
+ private buildCacheKey;
22
+ clearCache(): void;
23
+ private callLLM;
24
+ }
25
+ //# sourceMappingURL=gap-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-analyzer.d.ts","sourceRoot":"","sources":["../../src/tool-generation/gap-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,wBAAwB,CAAC;CAClC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;gBAE1D,OAAO,EAAE,kBAAkB;IAKjC,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,IAAI,EAAE,EACtB,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,YAAY,CAAC,EAAE,aAAa,EAAE,CAAC;KAChC,GACA,OAAO,CAAC,iBAAiB,CAAC;IA2D7B,OAAO,CAAC,uBAAuB;IAiC/B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,aAAa;IAKrB,UAAU,IAAI,IAAI;YAIJ,OAAO;CAStB"}
@@ -0,0 +1,153 @@
1
+ import { buildGapAnalysisPrompt, parseGapAnalysisResponse } from './prompts';
2
+ export class GapAnalyzer {
3
+ llm;
4
+ config;
5
+ analysisCache = new Map();
6
+ constructor(options) {
7
+ this.llm = options.llm;
8
+ this.config = options.config;
9
+ }
10
+ async analyze(userIntent, availableTools, context) {
11
+ const cacheKey = this.buildCacheKey(userIntent, availableTools);
12
+ const cached = this.analysisCache.get(cacheKey);
13
+ if (cached && Date.now() - cached.timestamp.getTime() < 60000) {
14
+ return cached;
15
+ }
16
+ const toolSummaries = availableTools.map((t) => ({
17
+ name: t.name,
18
+ description: t.description,
19
+ }));
20
+ const prompt = buildGapAnalysisPrompt(userIntent, toolSummaries, context?.failedAttempts);
21
+ const response = await this.callLLM([
22
+ {
23
+ role: 'system',
24
+ content: `You are a capability analyzer for AI agents.
25
+ Identify gaps between user intent and available tools.
26
+ Be conservative - only report gaps when truly necessary.
27
+ Consider tool composition before suggesting new tools.`,
28
+ },
29
+ { role: 'user', content: prompt },
30
+ ], 0.3);
31
+ const parsed = parseGapAnalysisResponse(response.content);
32
+ const filteredGaps = this.filterAndPrioritizeGaps(parsed.gaps, availableTools, context?.previousGaps);
33
+ const result = {
34
+ gaps: filteredGaps,
35
+ analysis: {
36
+ intentCoverage: this.calculateCoverage(userIntent, availableTools, filteredGaps),
37
+ suggestedCompositions: this.suggestCompositions(userIntent, availableTools),
38
+ canProceedWithExisting: parsed.canProceed && filteredGaps.length === 0,
39
+ reasoning: parsed.alternativeApproach || this.generateReasoning(filteredGaps),
40
+ },
41
+ timestamp: new Date(),
42
+ };
43
+ this.analysisCache.set(cacheKey, result);
44
+ if (this.analysisCache.size > 100) {
45
+ const oldest = Array.from(this.analysisCache.entries())
46
+ .sort((a, b) => a[1].timestamp.getTime() - b[1].timestamp.getTime())
47
+ .slice(0, 20);
48
+ oldest.forEach(([key]) => this.analysisCache.delete(key));
49
+ }
50
+ return result;
51
+ }
52
+ filterAndPrioritizeGaps(gaps, availableTools, previousGaps) {
53
+ const toolNames = new Set(availableTools.map((t) => t.name.toLowerCase()));
54
+ const previousGapIds = new Set(previousGaps?.map((g) => g.id) || []);
55
+ return gaps
56
+ .filter((gap) => {
57
+ if (toolNames.has(gap.suggestedToolName.toLowerCase())) {
58
+ return false;
59
+ }
60
+ if (gap.confidence < this.config.minConfidenceForGeneration) {
61
+ return false;
62
+ }
63
+ const complexityAllowed = this.isComplexityAllowed(gap.complexity);
64
+ if (!complexityAllowed) {
65
+ return false;
66
+ }
67
+ return true;
68
+ })
69
+ .map((gap) => ({
70
+ ...gap,
71
+ priority: this.calculatePriority(gap, previousGapIds.has(gap.id)),
72
+ }))
73
+ .sort((a, b) => (b.priority || 0) - (a.priority || 0))
74
+ .slice(0, this.config.maxToolsPerSession);
75
+ }
76
+ isComplexityAllowed(complexity) {
77
+ const maxComplexity = this.config.maxComplexity || 'moderate';
78
+ const levels = { simple: 1, moderate: 2, complex: 3 };
79
+ return levels[complexity] <= levels[maxComplexity];
80
+ }
81
+ calculatePriority(gap, isPreviouslyIdentified) {
82
+ let priority = gap.confidence;
83
+ if (isPreviouslyIdentified) {
84
+ priority += 0.2;
85
+ }
86
+ const complexityBonus = { simple: 0.1, moderate: 0, complex: -0.1 };
87
+ priority += complexityBonus[gap.complexity];
88
+ return Math.min(1, Math.max(0, priority));
89
+ }
90
+ calculateCoverage(userIntent, availableTools, gaps) {
91
+ if (gaps.length === 0) {
92
+ return 1.0;
93
+ }
94
+ const intentWords = userIntent.toLowerCase().split(/\s+/).length;
95
+ const toolDescriptionWords = availableTools
96
+ .map((t) => t.description.toLowerCase().split(/\s+/))
97
+ .flat();
98
+ const intentTokens = new Set(userIntent.toLowerCase().split(/\s+/));
99
+ let matchedTokens = 0;
100
+ intentTokens.forEach((token) => {
101
+ if (token.length > 3 && toolDescriptionWords.includes(token)) {
102
+ matchedTokens++;
103
+ }
104
+ });
105
+ const baseCoverage = matchedTokens / Math.max(1, intentTokens.size);
106
+ const gapPenalty = gaps.reduce((sum, g) => sum + g.confidence * 0.2, 0);
107
+ return Math.max(0, Math.min(1, baseCoverage - gapPenalty));
108
+ }
109
+ suggestCompositions(userIntent, availableTools) {
110
+ const compositions = [];
111
+ const intentLower = userIntent.toLowerCase();
112
+ const keywords = {
113
+ transform: ['parse', 'format', 'convert'],
114
+ analyze: ['calculate', 'validate', 'check'],
115
+ combine: ['merge', 'join', 'aggregate'],
116
+ };
117
+ for (const [action, related] of Object.entries(keywords)) {
118
+ if (intentLower.includes(action)) {
119
+ const relatedTools = availableTools.filter((t) => related.some((r) => t.name.toLowerCase().includes(r) || t.description.toLowerCase().includes(r)));
120
+ if (relatedTools.length >= 2) {
121
+ compositions.push({
122
+ tools: relatedTools.slice(0, 3).map((t) => t.name),
123
+ description: `Combine ${relatedTools.map((t) => t.name).join(' + ')} for ${action}`,
124
+ });
125
+ }
126
+ }
127
+ }
128
+ return compositions.slice(0, 3);
129
+ }
130
+ generateReasoning(gaps) {
131
+ if (gaps.length === 0) {
132
+ return 'All required capabilities are available with existing tools.';
133
+ }
134
+ const gapDescriptions = gaps
135
+ .map((g) => `- ${g.description} (confidence: ${(g.confidence * 100).toFixed(0)}%)`)
136
+ .join('\n');
137
+ return `Identified ${gaps.length} capability gap(s):\n${gapDescriptions}`;
138
+ }
139
+ buildCacheKey(userIntent, tools) {
140
+ const toolSignature = tools.map((t) => t.name).sort().join(',');
141
+ return `${userIntent.slice(0, 100)}|${toolSignature}`;
142
+ }
143
+ clearCache() {
144
+ this.analysisCache.clear();
145
+ }
146
+ async callLLM(messages, temperature) {
147
+ if (this.llm.complete) {
148
+ return this.llm.complete({ messages, temperature });
149
+ }
150
+ return this.llm.chat({ model: 'default', messages, temperature });
151
+ }
152
+ }
153
+ //# sourceMappingURL=gap-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gap-analyzer.js","sourceRoot":"","sources":["../../src/tool-generation/gap-analyzer.ts"],"names":[],"mappings":"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"}