cognitive-core 0.0.2 → 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.
- package/README.md +302 -116
- package/SKILL.md +193 -0
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +5 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/mock-provider.d.ts +23 -0
- package/dist/agents/mock-provider.d.ts.map +1 -0
- package/dist/agents/mock-provider.js +71 -0
- package/dist/agents/mock-provider.js.map +1 -0
- package/dist/agents/types.d.ts +98 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +44 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/atlas.d.ts +196 -0
- package/dist/atlas.d.ts.map +1 -0
- package/dist/atlas.js +373 -0
- package/dist/atlas.js.map +1 -0
- package/dist/bin/cognitive-core.d.ts +18 -0
- package/dist/bin/cognitive-core.d.ts.map +1 -0
- package/dist/bin/cognitive-core.js +419 -0
- package/dist/bin/cognitive-core.js.map +1 -0
- package/dist/embeddings/bm25.d.ts +104 -0
- package/dist/embeddings/bm25.d.ts.map +1 -0
- package/dist/embeddings/bm25.js +264 -0
- package/dist/embeddings/bm25.js.map +1 -0
- package/dist/embeddings/index.d.ts +12 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/index.js +16 -0
- package/dist/embeddings/index.js.map +1 -0
- package/dist/embeddings/manager.d.ts +112 -0
- package/dist/embeddings/manager.d.ts.map +1 -0
- package/dist/embeddings/manager.js +215 -0
- package/dist/embeddings/manager.js.map +1 -0
- package/dist/embeddings/provider.d.ts +101 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +232 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/embeddings/vector-store.d.ts +101 -0
- package/dist/embeddings/vector-store.d.ts.map +1 -0
- package/dist/embeddings/vector-store.js +256 -0
- package/dist/embeddings/vector-store.js.map +1 -0
- package/dist/factory.d.ts +193 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +109 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +30 -453
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -509
- package/dist/index.js.map +1 -0
- package/dist/learning/analyzer.d.ts +110 -0
- package/dist/learning/analyzer.d.ts.map +1 -0
- package/dist/learning/analyzer.js +213 -0
- package/dist/learning/analyzer.js.map +1 -0
- package/dist/learning/effectiveness.d.ts +158 -0
- package/dist/learning/effectiveness.d.ts.map +1 -0
- package/dist/learning/effectiveness.js +251 -0
- package/dist/learning/effectiveness.js.map +1 -0
- package/dist/learning/index.d.ts +8 -0
- package/dist/learning/index.d.ts.map +1 -0
- package/dist/learning/index.js +11 -0
- package/dist/learning/index.js.map +1 -0
- package/dist/learning/llm-extractor.d.ts +88 -0
- package/dist/learning/llm-extractor.d.ts.map +1 -0
- package/dist/learning/llm-extractor.js +372 -0
- package/dist/learning/llm-extractor.js.map +1 -0
- package/dist/learning/meta-learner.d.ts +80 -0
- package/dist/learning/meta-learner.d.ts.map +1 -0
- package/dist/learning/meta-learner.js +355 -0
- package/dist/learning/meta-learner.js.map +1 -0
- package/dist/learning/pipeline.d.ts +65 -0
- package/dist/learning/pipeline.d.ts.map +1 -0
- package/dist/learning/pipeline.js +170 -0
- package/dist/learning/pipeline.js.map +1 -0
- package/dist/learning/playbook-extractor.d.ts +113 -0
- package/dist/learning/playbook-extractor.d.ts.map +1 -0
- package/dist/learning/playbook-extractor.js +523 -0
- package/dist/learning/playbook-extractor.js.map +1 -0
- package/dist/learning/usage-inference.d.ts +82 -0
- package/dist/learning/usage-inference.d.ts.map +1 -0
- package/dist/learning/usage-inference.js +261 -0
- package/dist/learning/usage-inference.js.map +1 -0
- package/dist/mcp/index.d.ts +6 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +6 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/playbook-server.d.ts +120 -0
- package/dist/mcp/playbook-server.d.ts.map +1 -0
- package/dist/mcp/playbook-server.js +427 -0
- package/dist/mcp/playbook-server.js.map +1 -0
- package/dist/memory/curated-loader.d.ts +62 -0
- package/dist/memory/curated-loader.d.ts.map +1 -0
- package/dist/memory/curated-loader.js +106 -0
- package/dist/memory/curated-loader.js.map +1 -0
- package/dist/memory/experience.d.ts +122 -0
- package/dist/memory/experience.d.ts.map +1 -0
- package/dist/memory/experience.js +392 -0
- package/dist/memory/experience.js.map +1 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +9 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/meta.d.ts +90 -0
- package/dist/memory/meta.d.ts.map +1 -0
- package/dist/memory/meta.js +362 -0
- package/dist/memory/meta.js.map +1 -0
- package/dist/memory/playbook.d.ts +133 -0
- package/dist/memory/playbook.d.ts.map +1 -0
- package/dist/memory/playbook.js +357 -0
- package/dist/memory/playbook.js.map +1 -0
- package/dist/memory/system.d.ts +167 -0
- package/dist/memory/system.d.ts.map +1 -0
- package/dist/memory/system.js +383 -0
- package/dist/memory/system.js.map +1 -0
- package/dist/runtime/backends/acp.d.ts +67 -0
- package/dist/runtime/backends/acp.d.ts.map +1 -0
- package/dist/runtime/backends/acp.js +290 -0
- package/dist/runtime/backends/acp.js.map +1 -0
- package/dist/runtime/backends/index.d.ts +5 -0
- package/dist/runtime/backends/index.d.ts.map +1 -0
- package/dist/runtime/backends/index.js +6 -0
- package/dist/runtime/backends/index.js.map +1 -0
- package/dist/runtime/backends/mock.d.ts +67 -0
- package/dist/runtime/backends/mock.d.ts.map +1 -0
- package/dist/runtime/backends/mock.js +153 -0
- package/dist/runtime/backends/mock.js.map +1 -0
- package/dist/runtime/backends/subprocess.d.ts +56 -0
- package/dist/runtime/backends/subprocess.d.ts.map +1 -0
- package/dist/runtime/backends/subprocess.js +260 -0
- package/dist/runtime/backends/subprocess.js.map +1 -0
- package/dist/runtime/flows/learning.d.ts +73 -0
- package/dist/runtime/flows/learning.d.ts.map +1 -0
- package/dist/runtime/flows/learning.js +116 -0
- package/dist/runtime/flows/learning.js.map +1 -0
- package/dist/runtime/flows/validation.d.ts +122 -0
- package/dist/runtime/flows/validation.d.ts.map +1 -0
- package/dist/runtime/flows/validation.js +223 -0
- package/dist/runtime/flows/validation.js.map +1 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/manager.d.ts +116 -0
- package/dist/runtime/manager.d.ts.map +1 -0
- package/dist/runtime/manager.js +416 -0
- package/dist/runtime/manager.js.map +1 -0
- package/dist/runtime/types.d.ts +138 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/search/evaluator.d.ts +102 -0
- package/dist/search/evaluator.d.ts.map +1 -0
- package/dist/search/evaluator.js +352 -0
- package/dist/search/evaluator.js.map +1 -0
- package/dist/search/index.d.ts +7 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +11 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/refinement-loop.d.ts +73 -0
- package/dist/search/refinement-loop.d.ts.map +1 -0
- package/dist/search/refinement-loop.js +245 -0
- package/dist/search/refinement-loop.js.map +1 -0
- package/dist/search/refinement-types.d.ts +154 -0
- package/dist/search/refinement-types.d.ts.map +1 -0
- package/dist/search/refinement-types.js +99 -0
- package/dist/search/refinement-types.js.map +1 -0
- package/dist/search/router.d.ts +61 -0
- package/dist/search/router.d.ts.map +1 -0
- package/dist/search/router.js +197 -0
- package/dist/search/router.js.map +1 -0
- package/dist/search/solver.d.ts +75 -0
- package/dist/search/solver.d.ts.map +1 -0
- package/dist/search/solver.js +216 -0
- package/dist/search/solver.js.map +1 -0
- package/dist/search/verification-runner.d.ts +125 -0
- package/dist/search/verification-runner.d.ts.map +1 -0
- package/dist/search/verification-runner.js +440 -0
- package/dist/search/verification-runner.js.map +1 -0
- package/dist/surfacing/index.d.ts +2 -0
- package/dist/surfacing/index.d.ts.map +1 -0
- package/dist/surfacing/index.js +2 -0
- package/dist/surfacing/index.js.map +1 -0
- package/dist/surfacing/skill-library.d.ts +158 -0
- package/dist/surfacing/skill-library.d.ts.map +1 -0
- package/dist/surfacing/skill-library.js +429 -0
- package/dist/surfacing/skill-library.js.map +1 -0
- package/dist/types/config.d.ts +1113 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +274 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +14 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memory.d.ts +339 -0
- package/dist/types/memory.d.ts.map +1 -0
- package/dist/types/memory.js +207 -0
- package/dist/types/memory.js.map +1 -0
- package/dist/types/meta.d.ts +146 -0
- package/dist/types/meta.d.ts.map +1 -0
- package/dist/types/meta.js +51 -0
- package/dist/types/meta.js.map +1 -0
- package/dist/types/outcome.d.ts +42 -0
- package/dist/types/outcome.d.ts.map +1 -0
- package/dist/types/outcome.js +50 -0
- package/dist/types/outcome.js.map +1 -0
- package/dist/types/playbook.d.ts +119 -0
- package/dist/types/playbook.d.ts.map +1 -0
- package/dist/types/playbook.js +71 -0
- package/dist/types/playbook.js.map +1 -0
- package/dist/types/step.d.ts +44 -0
- package/dist/types/step.d.ts.map +1 -0
- package/dist/types/step.js +32 -0
- package/dist/types/step.js.map +1 -0
- package/dist/types/task.d.ts +91 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +39 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/trajectory.d.ts +221 -0
- package/dist/types/trajectory.d.ts.map +1 -0
- package/dist/types/trajectory.js +60 -0
- package/dist/types/trajectory.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/similarity.d.ts +31 -0
- package/dist/utils/similarity.d.ts.map +1 -0
- package/dist/utils/similarity.js +107 -0
- package/dist/utils/similarity.js.map +1 -0
- package/dist/utils/storage.d.ts +106 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +203 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/validation.d.ts +129 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +171 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +50 -34
- package/scripts/migrate-to-playbooks.ts +307 -0
- package/src/agents/index.ts +14 -0
- package/src/agents/mock-provider.ts +93 -0
- package/src/agents/types.ts +137 -0
- package/src/atlas.ts +560 -0
- package/src/bin/cognitive-core.ts +470 -0
- package/src/embeddings/bm25.ts +337 -0
- package/src/embeddings/index.ts +39 -0
- package/src/embeddings/manager.ts +288 -0
- package/src/embeddings/provider.ts +311 -0
- package/src/embeddings/vector-store.ts +353 -0
- package/src/factory.ts +263 -0
- package/src/index.ts +246 -0
- package/src/learning/analyzer.ts +335 -0
- package/src/learning/effectiveness.ts +428 -0
- package/src/learning/index.ts +58 -0
- package/src/learning/llm-extractor.ts +542 -0
- package/src/learning/meta-learner.ts +516 -0
- package/src/learning/pipeline.ts +244 -0
- package/src/learning/playbook-extractor.ts +702 -0
- package/src/learning/usage-inference.ts +372 -0
- package/src/mcp/index.ts +12 -0
- package/src/mcp/playbook-server.ts +565 -0
- package/src/memory/curated-loader.ts +160 -0
- package/src/memory/experience.ts +515 -0
- package/src/memory/index.ts +27 -0
- package/src/memory/meta.ts +506 -0
- package/src/memory/playbook.ts +493 -0
- package/src/memory/system.ts +551 -0
- package/src/runtime/backends/acp.ts +378 -0
- package/src/runtime/backends/index.ts +24 -0
- package/src/runtime/backends/mock.ts +218 -0
- package/src/runtime/backends/subprocess.ts +356 -0
- package/src/runtime/flows/learning.ts +183 -0
- package/src/runtime/flows/validation.ts +381 -0
- package/src/runtime/index.ts +53 -0
- package/src/runtime/manager.ts +541 -0
- package/src/runtime/types.ts +157 -0
- package/src/search/evaluator.ts +474 -0
- package/src/search/index.ts +59 -0
- package/src/search/refinement-loop.ts +363 -0
- package/src/search/refinement-types.ts +159 -0
- package/src/search/router.ts +261 -0
- package/src/search/solver.ts +303 -0
- package/src/search/verification-runner.ts +570 -0
- package/src/surfacing/index.ts +6 -0
- package/src/surfacing/skill-library.ts +594 -0
- package/src/types/config.ts +333 -0
- package/src/types/index.ts +130 -0
- package/src/types/memory.ts +270 -0
- package/src/types/meta.ts +218 -0
- package/src/types/outcome.ts +66 -0
- package/src/types/playbook.ts +196 -0
- package/src/types/step.ts +40 -0
- package/src/types/task.ts +52 -0
- package/src/types/trajectory.ts +80 -0
- package/src/utils/index.ts +38 -0
- package/src/utils/similarity.ts +139 -0
- package/src/utils/storage.ts +249 -0
- package/src/utils/validation.ts +286 -0
- package/tests/embeddings/bm25.test.ts +130 -0
- package/tests/embeddings/manager.test.ts +205 -0
- package/tests/integration/atlas.test.ts +266 -0
- package/tests/integration/e2e.test.ts +929 -0
- package/tests/learning/analyzer.test.ts +426 -0
- package/tests/learning/effectiveness.test.ts +542 -0
- package/tests/learning/pipeline.test.ts +176 -0
- package/tests/learning/playbook-extractor-provenance.test.ts +114 -0
- package/tests/learning/usage-inference.test.ts +254 -0
- package/tests/mcp/playbook-server.test.ts +252 -0
- package/tests/memory/experience.test.ts +198 -0
- package/tests/memory/playbook.test.ts +338 -0
- package/tests/memory/provenance.test.ts +639 -0
- package/tests/memory/system.test.ts +325 -0
- package/tests/runtime/agent-manager.test.ts +512 -0
- package/tests/runtime/mock-backend.test.ts +248 -0
- package/tests/search/refinement-loop.test.ts +468 -0
- package/tests/search/refinement.test.ts +267 -0
- package/tests/search/router.test.ts +427 -0
- package/tests/surfacing/skill-library.test.ts +292 -0
- package/tests/types/outcome.test.ts +147 -0
- package/tests/types/step.test.ts +133 -0
- package/tests/types/task.test.ts +158 -0
- package/tests/types/trajectory.test.ts +253 -0
- package/tests/utils/similarity.test.ts +188 -0
- package/tests/utils/validation.test.ts +252 -0
- package/tsconfig.json +25 -0
- package/vitest.config.ts +22 -0
- package/dist/index.d.mts +0 -466
- package/dist/index.mjs +0 -478
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { spawn } from 'child_process';
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
/**
|
|
4
|
+
* Subprocess-based agent backend
|
|
5
|
+
* Spawns agents as child processes (e.g., Claude Code CLI, custom scripts)
|
|
6
|
+
*/
|
|
7
|
+
export class SubprocessBackend {
|
|
8
|
+
name = 'subprocess';
|
|
9
|
+
supportedTypes;
|
|
10
|
+
configs = new Map();
|
|
11
|
+
sessions = new Map();
|
|
12
|
+
constructor(configs) {
|
|
13
|
+
this.supportedTypes = Object.keys(configs);
|
|
14
|
+
for (const [type, config] of Object.entries(configs)) {
|
|
15
|
+
this.configs.set(type, config);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async isAvailable() {
|
|
19
|
+
// Check if at least one configured command exists
|
|
20
|
+
// For now, just return true
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
async spawn(config) {
|
|
24
|
+
const agentConfig = this.configs.get(config.agentType);
|
|
25
|
+
if (!agentConfig) {
|
|
26
|
+
const error = new Error(`Unknown agent type: ${config.agentType}`);
|
|
27
|
+
console.error('[SubprocessBackend] Spawn failed:', error.message);
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
const sessionId = crypto.randomUUID();
|
|
31
|
+
const session = {
|
|
32
|
+
id: sessionId,
|
|
33
|
+
agentType: config.agentType,
|
|
34
|
+
task: config.task,
|
|
35
|
+
state: 'running',
|
|
36
|
+
messages: [],
|
|
37
|
+
toolCalls: [],
|
|
38
|
+
startTime: new Date(),
|
|
39
|
+
metadata: {},
|
|
40
|
+
};
|
|
41
|
+
// Build environment (filter out undefined values from process.env)
|
|
42
|
+
const env = Object.fromEntries(Object.entries({ ...process.env, ...config.env }).filter((entry) => entry[1] !== undefined));
|
|
43
|
+
// Pass task via env if configured
|
|
44
|
+
if (agentConfig.taskPassingMode === 'env' && agentConfig.taskEnvVar) {
|
|
45
|
+
env[agentConfig.taskEnvVar] = config.task.description;
|
|
46
|
+
}
|
|
47
|
+
// Pass knowledge via env if configured
|
|
48
|
+
if (agentConfig.knowledgePassingMode === 'env' &&
|
|
49
|
+
agentConfig.knowledgeEnvVar &&
|
|
50
|
+
config.systemPromptAdditions) {
|
|
51
|
+
env[agentConfig.knowledgeEnvVar] = config.systemPromptAdditions;
|
|
52
|
+
}
|
|
53
|
+
// Build arguments
|
|
54
|
+
const args = [...(agentConfig.args ?? [])];
|
|
55
|
+
if (agentConfig.taskPassingMode === 'arg') {
|
|
56
|
+
args.push(config.task.description);
|
|
57
|
+
}
|
|
58
|
+
// Spawn the process
|
|
59
|
+
const childProcess = spawn(agentConfig.command, args, {
|
|
60
|
+
cwd: config.cwd,
|
|
61
|
+
env,
|
|
62
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
63
|
+
});
|
|
64
|
+
const emitter = new EventEmitter();
|
|
65
|
+
const subSession = {
|
|
66
|
+
session,
|
|
67
|
+
process: childProcess,
|
|
68
|
+
outputBuffer: '',
|
|
69
|
+
emitter,
|
|
70
|
+
};
|
|
71
|
+
this.sessions.set(sessionId, subSession);
|
|
72
|
+
// Pass task via stdin if configured
|
|
73
|
+
if (agentConfig.taskPassingMode === 'stdin') {
|
|
74
|
+
let input = config.task.description;
|
|
75
|
+
if (config.systemPromptAdditions) {
|
|
76
|
+
input = `${config.systemPromptAdditions}\n\n${input}`;
|
|
77
|
+
}
|
|
78
|
+
childProcess.stdin?.write(input);
|
|
79
|
+
childProcess.stdin?.end();
|
|
80
|
+
}
|
|
81
|
+
// Handle output
|
|
82
|
+
const parser = agentConfig.outputParser ?? this.defaultParser;
|
|
83
|
+
childProcess.stdout?.on('data', (data) => {
|
|
84
|
+
const output = data.toString();
|
|
85
|
+
subSession.outputBuffer += output;
|
|
86
|
+
// Parse and emit events
|
|
87
|
+
const parsed = parser(subSession.outputBuffer);
|
|
88
|
+
// Add new messages
|
|
89
|
+
for (const msg of parsed.messages) {
|
|
90
|
+
if (!session.messages.some((m) => m.timestamp === msg.timestamp)) {
|
|
91
|
+
session.messages.push(msg);
|
|
92
|
+
config.onMessage?.(msg);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Add new tool calls
|
|
96
|
+
for (const tc of parsed.toolCalls) {
|
|
97
|
+
if (!session.toolCalls.some((t) => t.id === tc.id)) {
|
|
98
|
+
session.toolCalls.push(tc);
|
|
99
|
+
config.onToolCall?.(tc);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (parsed.isComplete) {
|
|
103
|
+
session.result = parsed.result;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
childProcess.stderr?.on('data', (data) => {
|
|
107
|
+
const error = data.toString();
|
|
108
|
+
session.messages.push({
|
|
109
|
+
role: 'system',
|
|
110
|
+
content: `[stderr] ${error}`,
|
|
111
|
+
timestamp: new Date(),
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
// Handle exit
|
|
115
|
+
childProcess.on('close', (code) => {
|
|
116
|
+
session.endTime = new Date();
|
|
117
|
+
session.state = code === 0 ? 'completed' : 'failed';
|
|
118
|
+
if (code !== 0) {
|
|
119
|
+
session.error = `Process exited with code ${code}`;
|
|
120
|
+
console.error(`[SubprocessBackend] Session ${sessionId} failed: exit code ${code}`);
|
|
121
|
+
}
|
|
122
|
+
emitter.emit('complete', session);
|
|
123
|
+
});
|
|
124
|
+
childProcess.on('error', (error) => {
|
|
125
|
+
session.endTime = new Date();
|
|
126
|
+
session.state = 'failed';
|
|
127
|
+
session.error = error.message;
|
|
128
|
+
console.error(`[SubprocessBackend] Session ${sessionId} process error:`, error.message);
|
|
129
|
+
emitter.emit('complete', session);
|
|
130
|
+
});
|
|
131
|
+
// Set up timeout
|
|
132
|
+
if (config.timeout) {
|
|
133
|
+
setTimeout(() => {
|
|
134
|
+
if (session.state === 'running') {
|
|
135
|
+
console.error(`[SubprocessBackend] Session ${sessionId} timed out after ${config.timeout}ms`);
|
|
136
|
+
childProcess.kill('SIGTERM');
|
|
137
|
+
session.state = 'failed';
|
|
138
|
+
session.error = 'Timeout';
|
|
139
|
+
session.endTime = new Date();
|
|
140
|
+
}
|
|
141
|
+
}, config.timeout);
|
|
142
|
+
}
|
|
143
|
+
return session;
|
|
144
|
+
}
|
|
145
|
+
async getSession(sessionId) {
|
|
146
|
+
return this.sessions.get(sessionId)?.session;
|
|
147
|
+
}
|
|
148
|
+
async sendMessage(sessionId, message) {
|
|
149
|
+
const subSession = this.sessions.get(sessionId);
|
|
150
|
+
if (!subSession || subSession.session.state !== 'running') {
|
|
151
|
+
throw new Error('Session not found or not running');
|
|
152
|
+
}
|
|
153
|
+
subSession.process.stdin?.write(message + '\n');
|
|
154
|
+
}
|
|
155
|
+
async terminate(sessionId) {
|
|
156
|
+
const subSession = this.sessions.get(sessionId);
|
|
157
|
+
if (!subSession)
|
|
158
|
+
return;
|
|
159
|
+
subSession.process.kill('SIGTERM');
|
|
160
|
+
subSession.session.state = 'failed';
|
|
161
|
+
subSession.session.error = 'Terminated';
|
|
162
|
+
subSession.session.endTime = new Date();
|
|
163
|
+
}
|
|
164
|
+
async listSessions() {
|
|
165
|
+
return Array.from(this.sessions.values()).map((s) => s.session);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Default parser for agent output
|
|
169
|
+
* Override with custom parser for specific agent formats
|
|
170
|
+
*/
|
|
171
|
+
defaultParser(output) {
|
|
172
|
+
const messages = [];
|
|
173
|
+
const toolCalls = [];
|
|
174
|
+
let result;
|
|
175
|
+
let isComplete = false;
|
|
176
|
+
// Simple line-based parsing
|
|
177
|
+
const lines = output.split('\n');
|
|
178
|
+
for (const line of lines) {
|
|
179
|
+
if (line.trim()) {
|
|
180
|
+
messages.push({
|
|
181
|
+
role: 'assistant',
|
|
182
|
+
content: line,
|
|
183
|
+
timestamp: new Date(),
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
// Look for completion markers
|
|
187
|
+
if (line.includes('DONE:') || line.includes('COMPLETE:')) {
|
|
188
|
+
isComplete = true;
|
|
189
|
+
result = line.split(':').slice(1).join(':').trim();
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return { messages, toolCalls, result, isComplete };
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Create a subprocess backend with common agent configurations
|
|
197
|
+
*/
|
|
198
|
+
export function createSubprocessBackend(configs) {
|
|
199
|
+
return new SubprocessBackend(configs);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Pre-configured Claude Code agent
|
|
203
|
+
*/
|
|
204
|
+
export const claudeCodeConfig = {
|
|
205
|
+
command: 'claude',
|
|
206
|
+
args: ['--print', '--output-format', 'json'],
|
|
207
|
+
taskPassingMode: 'arg',
|
|
208
|
+
knowledgePassingMode: 'system-prompt',
|
|
209
|
+
outputParser: (output) => {
|
|
210
|
+
const messages = [];
|
|
211
|
+
const toolCalls = [];
|
|
212
|
+
let result;
|
|
213
|
+
let isComplete = false;
|
|
214
|
+
// Try to parse JSON lines (Claude Code output format)
|
|
215
|
+
const lines = output.split('\n');
|
|
216
|
+
for (const line of lines) {
|
|
217
|
+
if (!line.trim())
|
|
218
|
+
continue;
|
|
219
|
+
try {
|
|
220
|
+
const parsed = JSON.parse(line);
|
|
221
|
+
if (parsed.type === 'assistant') {
|
|
222
|
+
messages.push({
|
|
223
|
+
role: 'assistant',
|
|
224
|
+
content: parsed.content ?? '',
|
|
225
|
+
timestamp: new Date(parsed.timestamp ?? Date.now()),
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
else if (parsed.type === 'tool_use') {
|
|
229
|
+
toolCalls.push({
|
|
230
|
+
id: parsed.id ?? crypto.randomUUID(),
|
|
231
|
+
name: parsed.name,
|
|
232
|
+
input: parsed.input,
|
|
233
|
+
startTime: new Date(parsed.timestamp ?? Date.now()),
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
else if (parsed.type === 'tool_result') {
|
|
237
|
+
const tc = toolCalls.find((t) => t.id === parsed.tool_use_id);
|
|
238
|
+
if (tc) {
|
|
239
|
+
tc.output = parsed.content;
|
|
240
|
+
tc.endTime = new Date(parsed.timestamp ?? Date.now());
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else if (parsed.type === 'result') {
|
|
244
|
+
isComplete = true;
|
|
245
|
+
result = parsed.result;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// Not JSON, treat as plain text
|
|
250
|
+
messages.push({
|
|
251
|
+
role: 'assistant',
|
|
252
|
+
content: line,
|
|
253
|
+
timestamp: new Date(),
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return { messages, toolCalls, result, isComplete };
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
//# sourceMappingURL=subprocess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subprocess.js","sourceRoot":"","sources":["../../../src/runtime/backends/subprocess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Task } from '../../types/index.js';
|
|
2
|
+
import type { MemorySystem } from '../../memory/system.js';
|
|
3
|
+
import type { LearningPipeline, ProcessResult, BatchResult } from '../../learning/index.js';
|
|
4
|
+
import type { AgentManager } from '../manager.js';
|
|
5
|
+
import type { AgentResult, AgentSession, AgentObserverCallbacks } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Configuration for the learning flow
|
|
8
|
+
*/
|
|
9
|
+
export interface LearningFlowConfig {
|
|
10
|
+
/** Agent type to use for execution */
|
|
11
|
+
agentType: string;
|
|
12
|
+
/** Minimum trajectories before running batch learning */
|
|
13
|
+
batchThreshold?: number;
|
|
14
|
+
/** Whether to auto-run batch learning when threshold is reached */
|
|
15
|
+
autoBatch?: boolean;
|
|
16
|
+
/** Observer callbacks for real-time monitoring */
|
|
17
|
+
observer?: AgentObserverCallbacks;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Result of a learning flow execution
|
|
21
|
+
*/
|
|
22
|
+
export interface LearningFlowResult {
|
|
23
|
+
/** The agent result */
|
|
24
|
+
agentResult: AgentResult;
|
|
25
|
+
/** Processing result from learning pipeline */
|
|
26
|
+
processResult: ProcessResult;
|
|
27
|
+
/** Batch result if batch learning was triggered */
|
|
28
|
+
batchResult?: BatchResult;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Learning Flow
|
|
32
|
+
* Orchestrates: Agent execution → Trajectory capture → Playbook extraction → Memory storage
|
|
33
|
+
*
|
|
34
|
+
* This flow is for the "observation" direction:
|
|
35
|
+
* - Watch agents solve tasks
|
|
36
|
+
* - Extract learning signals from their trajectories
|
|
37
|
+
* - Store playbooks for future guidance
|
|
38
|
+
*/
|
|
39
|
+
export declare class LearningFlow {
|
|
40
|
+
private manager;
|
|
41
|
+
private pipeline;
|
|
42
|
+
private config;
|
|
43
|
+
constructor(manager: AgentManager, pipeline: LearningPipeline, _memory: MemorySystem, config: LearningFlowConfig);
|
|
44
|
+
/**
|
|
45
|
+
* Run a single task through the learning flow
|
|
46
|
+
*/
|
|
47
|
+
run(task: Task): Promise<LearningFlowResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Run multiple tasks through the learning flow
|
|
50
|
+
*/
|
|
51
|
+
runBatch(tasks: Task[]): Promise<LearningFlowResult[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Observe an external session and learn from it
|
|
54
|
+
* Use this when another system provides the session
|
|
55
|
+
*/
|
|
56
|
+
observeExternal(session: AgentSession, task: Task): Promise<LearningFlowResult>;
|
|
57
|
+
/**
|
|
58
|
+
* Force batch learning
|
|
59
|
+
*/
|
|
60
|
+
runBatchLearning(): Promise<BatchResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Get learning statistics
|
|
63
|
+
*/
|
|
64
|
+
getStats(): {
|
|
65
|
+
pendingTrajectories: number;
|
|
66
|
+
batchThreshold: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a learning flow
|
|
71
|
+
*/
|
|
72
|
+
export declare function createLearningFlow(manager: AgentManager, pipeline: LearningPipeline, memory: MemorySystem, config: LearningFlowConfig): LearningFlow;
|
|
73
|
+
//# sourceMappingURL=learning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../../src/runtime/flows/learning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC5F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,+CAA+C;IAC/C,aAAa,EAAE,aAAa,CAAC;IAC7B,mDAAmD;IACnD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAqB;gBAGjC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,kBAAkB;IAgB5B;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BlD;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAS5D;;;OAGG;IACG,eAAe,CACnB,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,kBAAkB,CAAC;IAkC9B;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAI9C;;OAEG;IACH,QAAQ,IAAI;QACV,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC;KACxB;CAMF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,gBAAgB,EAC1B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,kBAAkB,GACzB,YAAY,CAEd"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learning Flow
|
|
3
|
+
* Orchestrates: Agent execution → Trajectory capture → Playbook extraction → Memory storage
|
|
4
|
+
*
|
|
5
|
+
* This flow is for the "observation" direction:
|
|
6
|
+
* - Watch agents solve tasks
|
|
7
|
+
* - Extract learning signals from their trajectories
|
|
8
|
+
* - Store playbooks for future guidance
|
|
9
|
+
*/
|
|
10
|
+
export class LearningFlow {
|
|
11
|
+
manager;
|
|
12
|
+
pipeline;
|
|
13
|
+
config;
|
|
14
|
+
constructor(manager, pipeline, _memory, config) {
|
|
15
|
+
this.manager = manager;
|
|
16
|
+
this.pipeline = pipeline;
|
|
17
|
+
this.config = {
|
|
18
|
+
batchThreshold: 10,
|
|
19
|
+
autoBatch: true,
|
|
20
|
+
...config,
|
|
21
|
+
};
|
|
22
|
+
// Register observer if provided
|
|
23
|
+
if (config.observer) {
|
|
24
|
+
this.manager.addObserver(config.observer);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Run a single task through the learning flow
|
|
29
|
+
*/
|
|
30
|
+
async run(task) {
|
|
31
|
+
// 1. Spawn agent and get result (WITHOUT knowledge injection for pure learning)
|
|
32
|
+
const agentResult = await this.manager.spawnBaseline({
|
|
33
|
+
agentType: this.config.agentType,
|
|
34
|
+
task,
|
|
35
|
+
captureToolCalls: true,
|
|
36
|
+
});
|
|
37
|
+
// 2. Process trajectory through learning pipeline
|
|
38
|
+
const processResult = await this.pipeline.processTrajectory(agentResult.trajectory);
|
|
39
|
+
// 3. Run batch learning if threshold reached
|
|
40
|
+
let batchResult;
|
|
41
|
+
if (this.config.autoBatch &&
|
|
42
|
+
this.pipeline.getAccumulatedCount() >= (this.config.batchThreshold ?? 10)) {
|
|
43
|
+
batchResult = await this.pipeline.runBatchLearning();
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
agentResult,
|
|
47
|
+
processResult,
|
|
48
|
+
batchResult,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Run multiple tasks through the learning flow
|
|
53
|
+
*/
|
|
54
|
+
async runBatch(tasks) {
|
|
55
|
+
const results = [];
|
|
56
|
+
for (const task of tasks) {
|
|
57
|
+
const result = await this.run(task);
|
|
58
|
+
results.push(result);
|
|
59
|
+
}
|
|
60
|
+
return results;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Observe an external session and learn from it
|
|
64
|
+
* Use this when another system provides the session
|
|
65
|
+
*/
|
|
66
|
+
async observeExternal(session, task) {
|
|
67
|
+
// Extract trajectory from session
|
|
68
|
+
const trajectory = await this.manager.observeAndLearn(session, task);
|
|
69
|
+
// Process through learning pipeline
|
|
70
|
+
const processResult = await this.pipeline.processTrajectory(trajectory);
|
|
71
|
+
// Check for batch learning
|
|
72
|
+
let batchResult;
|
|
73
|
+
if (this.config.autoBatch &&
|
|
74
|
+
this.pipeline.getAccumulatedCount() >= (this.config.batchThreshold ?? 10)) {
|
|
75
|
+
batchResult = await this.pipeline.runBatchLearning();
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
agentResult: {
|
|
79
|
+
session,
|
|
80
|
+
trajectory,
|
|
81
|
+
success: session.state === 'completed',
|
|
82
|
+
metrics: {
|
|
83
|
+
totalTime: session.endTime
|
|
84
|
+
? session.endTime.getTime() - session.startTime.getTime()
|
|
85
|
+
: 0,
|
|
86
|
+
toolCallCount: session.toolCalls.length,
|
|
87
|
+
messageCount: session.messages.length,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
processResult,
|
|
91
|
+
batchResult,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Force batch learning
|
|
96
|
+
*/
|
|
97
|
+
async runBatchLearning() {
|
|
98
|
+
return this.pipeline.runBatchLearning();
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get learning statistics
|
|
102
|
+
*/
|
|
103
|
+
getStats() {
|
|
104
|
+
return {
|
|
105
|
+
pendingTrajectories: this.pipeline.getAccumulatedCount(),
|
|
106
|
+
batchThreshold: this.config.batchThreshold ?? 10,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Create a learning flow
|
|
112
|
+
*/
|
|
113
|
+
export function createLearningFlow(manager, pipeline, memory, config) {
|
|
114
|
+
return new LearningFlow(manager, pipeline, memory, config);
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=learning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../../src/runtime/flows/learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { Task } from '../../types/index.js';
|
|
2
|
+
import type { MemorySystem } from '../../memory/system.js';
|
|
3
|
+
import type { AgentManager } from '../manager.js';
|
|
4
|
+
import type { AgentResult } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for the validation flow
|
|
7
|
+
*/
|
|
8
|
+
export interface ValidationFlowConfig {
|
|
9
|
+
/** Agent type to use for execution */
|
|
10
|
+
agentType: string;
|
|
11
|
+
/** Number of runs per task for statistical significance */
|
|
12
|
+
runsPerTask?: number;
|
|
13
|
+
/** Whether to run comparison (with vs without knowledge) */
|
|
14
|
+
runComparison?: boolean;
|
|
15
|
+
/** Timeout per task in ms */
|
|
16
|
+
taskTimeout?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Metrics for measuring improvement
|
|
20
|
+
*/
|
|
21
|
+
export interface ValidationMetrics {
|
|
22
|
+
/** Success rate (0-1) */
|
|
23
|
+
successRate: number;
|
|
24
|
+
/** Average execution time in ms */
|
|
25
|
+
avgTime: number;
|
|
26
|
+
/** Average tool calls per task */
|
|
27
|
+
avgToolCalls: number;
|
|
28
|
+
/** Standard deviation of time */
|
|
29
|
+
timeStdDev: number;
|
|
30
|
+
/** Total tasks run */
|
|
31
|
+
totalRuns: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Comparison result between with/without knowledge
|
|
35
|
+
*/
|
|
36
|
+
export interface ComparisonResult {
|
|
37
|
+
/** Metrics with knowledge injection */
|
|
38
|
+
withKnowledge: ValidationMetrics;
|
|
39
|
+
/** Metrics without knowledge (baseline) */
|
|
40
|
+
baseline: ValidationMetrics;
|
|
41
|
+
/** Improvement metrics */
|
|
42
|
+
improvement: {
|
|
43
|
+
successRateDelta: number;
|
|
44
|
+
timeDeltaPercent: number;
|
|
45
|
+
toolCallDeltaPercent: number;
|
|
46
|
+
/** Statistical significance (p-value approximation) */
|
|
47
|
+
isSignificant: boolean;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Result of validation flow
|
|
52
|
+
*/
|
|
53
|
+
export interface ValidationFlowResult {
|
|
54
|
+
/** Results for each task */
|
|
55
|
+
taskResults: Array<{
|
|
56
|
+
task: Task;
|
|
57
|
+
results: AgentResult[];
|
|
58
|
+
metrics: ValidationMetrics;
|
|
59
|
+
}>;
|
|
60
|
+
/** Aggregate metrics */
|
|
61
|
+
aggregateMetrics: ValidationMetrics;
|
|
62
|
+
/** Comparison if runComparison was true */
|
|
63
|
+
comparison?: ComparisonResult;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Validation Flow
|
|
67
|
+
* Orchestrates: Knowledge injection → Agent execution → Performance measurement
|
|
68
|
+
*
|
|
69
|
+
* This flow is for the "injection" direction:
|
|
70
|
+
* - Test how well learning is working
|
|
71
|
+
* - Compare performance with vs without knowledge
|
|
72
|
+
* - Measure improvement over time
|
|
73
|
+
*/
|
|
74
|
+
export declare class ValidationFlow {
|
|
75
|
+
private manager;
|
|
76
|
+
private config;
|
|
77
|
+
constructor(manager: AgentManager, _memory: MemorySystem, // Reserved for future memory state tracking
|
|
78
|
+
config: ValidationFlowConfig);
|
|
79
|
+
/**
|
|
80
|
+
* Validate on a single task
|
|
81
|
+
*/
|
|
82
|
+
validateTask(task: Task): Promise<{
|
|
83
|
+
task: Task;
|
|
84
|
+
results: AgentResult[];
|
|
85
|
+
metrics: ValidationMetrics;
|
|
86
|
+
comparison?: ComparisonResult;
|
|
87
|
+
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Validate on multiple tasks
|
|
90
|
+
*/
|
|
91
|
+
validate(tasks: Task[]): Promise<ValidationFlowResult>;
|
|
92
|
+
/**
|
|
93
|
+
* Quick validation - single run per task, with comparison
|
|
94
|
+
*/
|
|
95
|
+
quickValidate(tasks: Task[]): Promise<{
|
|
96
|
+
successRateWithKnowledge: number;
|
|
97
|
+
successRateBaseline: number;
|
|
98
|
+
improvement: number;
|
|
99
|
+
details: Array<{
|
|
100
|
+
task: Task;
|
|
101
|
+
withKnowledge: boolean;
|
|
102
|
+
baseline: boolean;
|
|
103
|
+
}>;
|
|
104
|
+
}>;
|
|
105
|
+
/**
|
|
106
|
+
* Calculate metrics from results
|
|
107
|
+
*/
|
|
108
|
+
private calculateMetrics;
|
|
109
|
+
/**
|
|
110
|
+
* Calculate comparison between two sets of metrics
|
|
111
|
+
*/
|
|
112
|
+
private calculateComparison;
|
|
113
|
+
/**
|
|
114
|
+
* Generate a validation report
|
|
115
|
+
*/
|
|
116
|
+
generateReport(result: ValidationFlowResult): string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a validation flow
|
|
120
|
+
*/
|
|
121
|
+
export declare function createValidationFlow(manager: AgentManager, memory: MemorySystem, config: ValidationFlowConfig): ValidationFlow;
|
|
122
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/runtime/flows/validation.ts"],"names":[],"mappings":"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"}
|