cognitive-core 0.0.1 → 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 +363 -2
- 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 +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- 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 +61 -9
- 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/index.d.ts +0 -4
- package/index.js +0 -4
|
@@ -0,0 +1,470 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Cognitive Core CLI
|
|
4
|
+
*
|
|
5
|
+
* Command-line interface for interacting with the cognitive-core learning system.
|
|
6
|
+
* This replaces the MCP server approach, providing a simpler interface for agents
|
|
7
|
+
* to query playbooks and store trajectories.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* cognitive-core search <query> [--domain <domain>] [--limit <n>]
|
|
11
|
+
* cognitive-core get <playbook-id>
|
|
12
|
+
* cognitive-core domains
|
|
13
|
+
* cognitive-core stats
|
|
14
|
+
* cognitive-core store <trajectory-file>
|
|
15
|
+
* cognitive-core init [--dir <directory>]
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import * as fs from 'node:fs/promises';
|
|
19
|
+
import * as path from 'node:path';
|
|
20
|
+
import {
|
|
21
|
+
createMemorySystem,
|
|
22
|
+
createLearningPipeline,
|
|
23
|
+
type MemorySystem,
|
|
24
|
+
type Playbook,
|
|
25
|
+
type Trajectory,
|
|
26
|
+
} from '../index.js';
|
|
27
|
+
|
|
28
|
+
// Default storage directory
|
|
29
|
+
const DEFAULT_STORAGE_DIR = path.join(process.cwd(), '.cognitive-core');
|
|
30
|
+
|
|
31
|
+
interface CLIOptions {
|
|
32
|
+
dir?: string;
|
|
33
|
+
domain?: string;
|
|
34
|
+
limit?: number;
|
|
35
|
+
format?: 'json' | 'text';
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Parse command line arguments
|
|
40
|
+
*/
|
|
41
|
+
function parseArgs(args: string[]): { command: string; positional: string[]; options: CLIOptions } {
|
|
42
|
+
const options: CLIOptions = {};
|
|
43
|
+
const positional: string[] = [];
|
|
44
|
+
let command = '';
|
|
45
|
+
|
|
46
|
+
for (let i = 0; i < args.length; i++) {
|
|
47
|
+
const arg = args[i];
|
|
48
|
+
|
|
49
|
+
if (arg === '--dir' && args[i + 1]) {
|
|
50
|
+
options.dir = args[++i];
|
|
51
|
+
} else if (arg === '--domain' && args[i + 1]) {
|
|
52
|
+
options.domain = args[++i];
|
|
53
|
+
} else if (arg === '--limit' && args[i + 1]) {
|
|
54
|
+
options.limit = parseInt(args[++i], 10);
|
|
55
|
+
} else if (arg === '--format' && args[i + 1]) {
|
|
56
|
+
options.format = args[++i] as 'json' | 'text';
|
|
57
|
+
} else if (arg === '--json') {
|
|
58
|
+
options.format = 'json';
|
|
59
|
+
} else if (!arg.startsWith('-')) {
|
|
60
|
+
if (!command) {
|
|
61
|
+
command = arg;
|
|
62
|
+
} else {
|
|
63
|
+
positional.push(arg);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return { command, positional, options };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Initialize and get memory system
|
|
73
|
+
*/
|
|
74
|
+
async function getMemorySystem(options: CLIOptions): Promise<MemorySystem> {
|
|
75
|
+
const dir = options.dir || DEFAULT_STORAGE_DIR;
|
|
76
|
+
const memory = createMemorySystem(dir);
|
|
77
|
+
await memory.init();
|
|
78
|
+
return memory;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Format playbook for display
|
|
83
|
+
*/
|
|
84
|
+
function formatPlaybook(playbook: Playbook, verbose = false): string {
|
|
85
|
+
const lines: string[] = [];
|
|
86
|
+
const { successCount, failureCount } = playbook.evolution;
|
|
87
|
+
const totalUses = successCount + failureCount;
|
|
88
|
+
const successRate = totalUses > 0 ? Math.round((successCount / totalUses) * 100) : 0;
|
|
89
|
+
|
|
90
|
+
lines.push(`## ${playbook.name}`);
|
|
91
|
+
lines.push(`ID: ${playbook.id}`);
|
|
92
|
+
lines.push(`Confidence: ${Math.round(playbook.confidence * 100)}%`);
|
|
93
|
+
lines.push(`Success Rate: ${successRate}% (${totalUses} uses)`);
|
|
94
|
+
lines.push(`Domains: ${playbook.applicability.domains.join(', ')}`);
|
|
95
|
+
lines.push('');
|
|
96
|
+
lines.push(`**Strategy**: ${playbook.guidance.strategy}`);
|
|
97
|
+
|
|
98
|
+
if (playbook.guidance.tactics.length > 0) {
|
|
99
|
+
lines.push('**Tactics**:');
|
|
100
|
+
for (const tactic of playbook.guidance.tactics) {
|
|
101
|
+
lines.push(` - ${tactic}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (verbose) {
|
|
106
|
+
if (playbook.guidance.steps && playbook.guidance.steps.length > 0) {
|
|
107
|
+
lines.push('**Steps**:');
|
|
108
|
+
for (let i = 0; i < playbook.guidance.steps.length; i++) {
|
|
109
|
+
lines.push(` ${i + 1}. ${playbook.guidance.steps[i]}`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (playbook.applicability.situations.length > 0) {
|
|
114
|
+
lines.push('**When to use**:');
|
|
115
|
+
for (const sit of playbook.applicability.situations) {
|
|
116
|
+
lines.push(` - ${sit}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (playbook.applicability.antiPatterns.length > 0) {
|
|
121
|
+
lines.push('**Avoid when**:');
|
|
122
|
+
for (const anti of playbook.applicability.antiPatterns) {
|
|
123
|
+
lines.push(` - ${anti}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (playbook.verification.successIndicators.length > 0) {
|
|
128
|
+
lines.push('**Success indicators**:');
|
|
129
|
+
for (const ind of playbook.verification.successIndicators) {
|
|
130
|
+
lines.push(` - ${ind}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return lines.join('\n');
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Search playbooks command
|
|
140
|
+
*/
|
|
141
|
+
async function searchCommand(
|
|
142
|
+
query: string,
|
|
143
|
+
options: CLIOptions
|
|
144
|
+
): Promise<void> {
|
|
145
|
+
const memory = await getMemorySystem(options);
|
|
146
|
+
|
|
147
|
+
try {
|
|
148
|
+
const matches = await memory.playbooks.findMatching(query, {
|
|
149
|
+
k: options.limit || 5,
|
|
150
|
+
domains: options.domain ? [options.domain] : undefined,
|
|
151
|
+
minConfidence: 0.3,
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
if (matches.length === 0) {
|
|
155
|
+
if (options.format === 'json') {
|
|
156
|
+
console.log(JSON.stringify({ results: [], message: 'No playbooks found' }));
|
|
157
|
+
} else {
|
|
158
|
+
console.log('No playbooks found matching your query.');
|
|
159
|
+
console.log('Try different search terms or check available domains with: cognitive-core domains');
|
|
160
|
+
}
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (options.format === 'json') {
|
|
165
|
+
const results = matches.map((m) => ({
|
|
166
|
+
id: m.playbook.id,
|
|
167
|
+
name: m.playbook.name,
|
|
168
|
+
score: m.score,
|
|
169
|
+
matchType: m.matchType,
|
|
170
|
+
confidence: m.playbook.confidence,
|
|
171
|
+
strategy: m.playbook.guidance.strategy,
|
|
172
|
+
tactics: m.playbook.guidance.tactics,
|
|
173
|
+
domains: m.playbook.applicability.domains,
|
|
174
|
+
}));
|
|
175
|
+
console.log(JSON.stringify({ results }, null, 2));
|
|
176
|
+
} else {
|
|
177
|
+
console.log(`Found ${matches.length} playbook(s) matching "${query}":\n`);
|
|
178
|
+
for (const match of matches) {
|
|
179
|
+
console.log(`Match: ${Math.round(match.score * 100)}% (${match.matchType})`);
|
|
180
|
+
console.log(formatPlaybook(match.playbook));
|
|
181
|
+
console.log('\n---\n');
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
} finally {
|
|
185
|
+
await memory.close();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Get playbook details command
|
|
191
|
+
*/
|
|
192
|
+
async function getCommand(
|
|
193
|
+
playbookId: string,
|
|
194
|
+
options: CLIOptions
|
|
195
|
+
): Promise<void> {
|
|
196
|
+
const memory = await getMemorySystem(options);
|
|
197
|
+
|
|
198
|
+
try {
|
|
199
|
+
const playbook = await memory.playbooks.get(playbookId);
|
|
200
|
+
|
|
201
|
+
if (!playbook) {
|
|
202
|
+
if (options.format === 'json') {
|
|
203
|
+
console.log(JSON.stringify({ error: `Playbook not found: ${playbookId}` }));
|
|
204
|
+
} else {
|
|
205
|
+
console.error(`Playbook not found: ${playbookId}`);
|
|
206
|
+
}
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (options.format === 'json') {
|
|
211
|
+
console.log(JSON.stringify(playbook, null, 2));
|
|
212
|
+
} else {
|
|
213
|
+
console.log(formatPlaybook(playbook, true));
|
|
214
|
+
}
|
|
215
|
+
} finally {
|
|
216
|
+
await memory.close();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* List domains command
|
|
222
|
+
*/
|
|
223
|
+
async function domainsCommand(options: CLIOptions): Promise<void> {
|
|
224
|
+
const memory = await getMemorySystem(options);
|
|
225
|
+
|
|
226
|
+
try {
|
|
227
|
+
const allPlaybooks = await memory.playbooks.getAll();
|
|
228
|
+
const domains = new Map<string, number>();
|
|
229
|
+
|
|
230
|
+
for (const playbook of allPlaybooks) {
|
|
231
|
+
for (const domain of playbook.applicability.domains) {
|
|
232
|
+
domains.set(domain, (domains.get(domain) || 0) + 1);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const sortedDomains = Array.from(domains.entries())
|
|
237
|
+
.sort((a, b) => b[1] - a[1]);
|
|
238
|
+
|
|
239
|
+
if (sortedDomains.length === 0) {
|
|
240
|
+
if (options.format === 'json') {
|
|
241
|
+
console.log(JSON.stringify({ domains: [] }));
|
|
242
|
+
} else {
|
|
243
|
+
console.log('No domains found. Add playbooks first.');
|
|
244
|
+
}
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
if (options.format === 'json') {
|
|
249
|
+
console.log(JSON.stringify({
|
|
250
|
+
domains: sortedDomains.map(([name, count]) => ({ name, playbookCount: count })),
|
|
251
|
+
}, null, 2));
|
|
252
|
+
} else {
|
|
253
|
+
console.log('Available domains:\n');
|
|
254
|
+
for (const [domain, count] of sortedDomains) {
|
|
255
|
+
console.log(` ${domain}: ${count} playbook(s)`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
} finally {
|
|
259
|
+
await memory.close();
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
/**
|
|
264
|
+
* Show stats command
|
|
265
|
+
*/
|
|
266
|
+
async function statsCommand(options: CLIOptions): Promise<void> {
|
|
267
|
+
const memory = await getMemorySystem(options);
|
|
268
|
+
|
|
269
|
+
try {
|
|
270
|
+
const stats = await memory.getStats();
|
|
271
|
+
const capacity = await memory.getCapacityStatus();
|
|
272
|
+
|
|
273
|
+
if (options.format === 'json') {
|
|
274
|
+
console.log(JSON.stringify({ stats, capacity }, null, 2));
|
|
275
|
+
} else {
|
|
276
|
+
console.log('Cognitive Core Statistics\n');
|
|
277
|
+
console.log(`Experiences: ${stats.experienceCount}`);
|
|
278
|
+
console.log(`Playbooks: ${stats.playbookCount}`);
|
|
279
|
+
console.log(`Meta-observations: ${stats.metaObservationCount}`);
|
|
280
|
+
console.log('');
|
|
281
|
+
console.log('Capacity:');
|
|
282
|
+
console.log(` Experiences: ${capacity.experiences.current}/${capacity.experiences.limit}`);
|
|
283
|
+
console.log(` Playbooks: ${capacity.playbooks.current}/${capacity.playbooks.limit}`);
|
|
284
|
+
console.log(` Pruning enabled: ${capacity.pruningEnabled}`);
|
|
285
|
+
}
|
|
286
|
+
} finally {
|
|
287
|
+
await memory.close();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Store trajectory command
|
|
293
|
+
*/
|
|
294
|
+
async function storeCommand(
|
|
295
|
+
trajectoryFile: string,
|
|
296
|
+
options: CLIOptions
|
|
297
|
+
): Promise<void> {
|
|
298
|
+
const memory = await getMemorySystem(options);
|
|
299
|
+
const pipeline = createLearningPipeline(memory);
|
|
300
|
+
|
|
301
|
+
try {
|
|
302
|
+
// Read and parse trajectory file
|
|
303
|
+
const content = await fs.readFile(trajectoryFile, 'utf-8');
|
|
304
|
+
const trajectory: Trajectory = JSON.parse(content);
|
|
305
|
+
|
|
306
|
+
// Process the trajectory
|
|
307
|
+
const result = await pipeline.processTrajectory(trajectory);
|
|
308
|
+
|
|
309
|
+
if (options.format === 'json') {
|
|
310
|
+
console.log(JSON.stringify({
|
|
311
|
+
stored: result.stored,
|
|
312
|
+
trajectoryId: result.trajectoryId,
|
|
313
|
+
analysis: {
|
|
314
|
+
success: result.analysis.success,
|
|
315
|
+
keySteps: result.analysis.keySteps.length,
|
|
316
|
+
errorPatterns: result.analysis.errorPatterns.length,
|
|
317
|
+
abstractable: result.analysis.abstractable,
|
|
318
|
+
},
|
|
319
|
+
}, null, 2));
|
|
320
|
+
} else {
|
|
321
|
+
console.log(`Trajectory stored: ${result.trajectoryId}`);
|
|
322
|
+
console.log(`Success: ${result.analysis.success}`);
|
|
323
|
+
console.log(`Key steps: ${result.analysis.keySteps.length}`);
|
|
324
|
+
console.log(`Abstractable: ${result.analysis.abstractable}`);
|
|
325
|
+
|
|
326
|
+
if (result.analysis.errorPatterns.length > 0) {
|
|
327
|
+
console.log(`Error patterns detected: ${result.analysis.errorPatterns.map((p) => p.type).join(', ')}`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
} finally {
|
|
331
|
+
await memory.close();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Initialize command
|
|
337
|
+
*/
|
|
338
|
+
async function initCommand(options: CLIOptions): Promise<void> {
|
|
339
|
+
const dir = options.dir || DEFAULT_STORAGE_DIR;
|
|
340
|
+
|
|
341
|
+
// Create directory if it doesn't exist
|
|
342
|
+
await fs.mkdir(dir, { recursive: true });
|
|
343
|
+
|
|
344
|
+
// Initialize memory system
|
|
345
|
+
const memory = createMemorySystem(dir);
|
|
346
|
+
await memory.init();
|
|
347
|
+
await memory.close();
|
|
348
|
+
|
|
349
|
+
if (options.format === 'json') {
|
|
350
|
+
console.log(JSON.stringify({ initialized: true, directory: dir }));
|
|
351
|
+
} else {
|
|
352
|
+
console.log(`Cognitive Core initialized at: ${dir}`);
|
|
353
|
+
console.log('');
|
|
354
|
+
console.log('Next steps:');
|
|
355
|
+
console.log(' 1. Store trajectories: cognitive-core store <trajectory.json>');
|
|
356
|
+
console.log(' 2. Search playbooks: cognitive-core search "your query"');
|
|
357
|
+
console.log(' 3. View stats: cognitive-core stats');
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Show help
|
|
363
|
+
*/
|
|
364
|
+
function showHelp(): void {
|
|
365
|
+
console.log(`
|
|
366
|
+
Cognitive Core CLI - Learning system for AI agents
|
|
367
|
+
|
|
368
|
+
Usage:
|
|
369
|
+
cognitive-core <command> [options]
|
|
370
|
+
|
|
371
|
+
Commands:
|
|
372
|
+
search <query> Search for playbooks matching a query
|
|
373
|
+
get <playbook-id> Get detailed information about a specific playbook
|
|
374
|
+
domains List all available domains
|
|
375
|
+
stats Show memory statistics
|
|
376
|
+
store <file> Store a trajectory from a JSON file
|
|
377
|
+
init Initialize the storage directory
|
|
378
|
+
|
|
379
|
+
Options:
|
|
380
|
+
--dir <directory> Storage directory (default: .cognitive-core)
|
|
381
|
+
--domain <domain> Filter search by domain
|
|
382
|
+
--limit <n> Maximum results for search (default: 5)
|
|
383
|
+
--format json Output in JSON format
|
|
384
|
+
--json Shorthand for --format json
|
|
385
|
+
|
|
386
|
+
Examples:
|
|
387
|
+
cognitive-core search "fix typescript errors"
|
|
388
|
+
cognitive-core search "write tests" --domain testing --limit 3
|
|
389
|
+
cognitive-core get playbook-abc123
|
|
390
|
+
cognitive-core domains
|
|
391
|
+
cognitive-core stats --json
|
|
392
|
+
cognitive-core store ./trajectory.json
|
|
393
|
+
cognitive-core init --dir ./my-memory
|
|
394
|
+
`);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Main entry point
|
|
399
|
+
*/
|
|
400
|
+
async function main(): Promise<void> {
|
|
401
|
+
const args = process.argv.slice(2);
|
|
402
|
+
const { command, positional, options } = parseArgs(args);
|
|
403
|
+
|
|
404
|
+
try {
|
|
405
|
+
switch (command) {
|
|
406
|
+
case 'search':
|
|
407
|
+
if (!positional[0]) {
|
|
408
|
+
console.error('Error: search requires a query');
|
|
409
|
+
console.error('Usage: cognitive-core search <query>');
|
|
410
|
+
process.exit(1);
|
|
411
|
+
}
|
|
412
|
+
await searchCommand(positional[0], options);
|
|
413
|
+
break;
|
|
414
|
+
|
|
415
|
+
case 'get':
|
|
416
|
+
if (!positional[0]) {
|
|
417
|
+
console.error('Error: get requires a playbook ID');
|
|
418
|
+
console.error('Usage: cognitive-core get <playbook-id>');
|
|
419
|
+
process.exit(1);
|
|
420
|
+
}
|
|
421
|
+
await getCommand(positional[0], options);
|
|
422
|
+
break;
|
|
423
|
+
|
|
424
|
+
case 'domains':
|
|
425
|
+
await domainsCommand(options);
|
|
426
|
+
break;
|
|
427
|
+
|
|
428
|
+
case 'stats':
|
|
429
|
+
await statsCommand(options);
|
|
430
|
+
break;
|
|
431
|
+
|
|
432
|
+
case 'store':
|
|
433
|
+
if (!positional[0]) {
|
|
434
|
+
console.error('Error: store requires a trajectory file');
|
|
435
|
+
console.error('Usage: cognitive-core store <trajectory.json>');
|
|
436
|
+
process.exit(1);
|
|
437
|
+
}
|
|
438
|
+
await storeCommand(positional[0], options);
|
|
439
|
+
break;
|
|
440
|
+
|
|
441
|
+
case 'init':
|
|
442
|
+
await initCommand(options);
|
|
443
|
+
break;
|
|
444
|
+
|
|
445
|
+
case 'help':
|
|
446
|
+
case '--help':
|
|
447
|
+
case '-h':
|
|
448
|
+
showHelp();
|
|
449
|
+
break;
|
|
450
|
+
|
|
451
|
+
default:
|
|
452
|
+
if (command) {
|
|
453
|
+
console.error(`Unknown command: ${command}`);
|
|
454
|
+
}
|
|
455
|
+
showHelp();
|
|
456
|
+
process.exit(command ? 1 : 0);
|
|
457
|
+
}
|
|
458
|
+
} catch (error) {
|
|
459
|
+
if (options.format === 'json') {
|
|
460
|
+
console.log(JSON.stringify({
|
|
461
|
+
error: error instanceof Error ? error.message : String(error),
|
|
462
|
+
}));
|
|
463
|
+
} else {
|
|
464
|
+
console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
465
|
+
}
|
|
466
|
+
process.exit(1);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
main();
|