claude-cognitive 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/LICENSE +21 -0
- package/README.md +256 -0
- package/bin/claude-cognitive.js +9 -0
- package/dist/agents/context.d.ts +40 -0
- package/dist/agents/context.d.ts.map +1 -0
- package/dist/agents/context.js +144 -0
- package/dist/agents/context.js.map +1 -0
- package/dist/agents/index.d.ts +9 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +11 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/loader.d.ts +48 -0
- package/dist/agents/loader.d.ts.map +1 -0
- package/dist/agents/loader.js +157 -0
- package/dist/agents/loader.js.map +1 -0
- package/dist/agents/templates.d.ts +51 -0
- package/dist/agents/templates.d.ts.map +1 -0
- package/dist/agents/templates.js +186 -0
- package/dist/agents/templates.js.map +1 -0
- package/dist/agents/types.d.ts +52 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +6 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/cli/commands/config.d.ts +10 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +22 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/index.d.ts +17 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +17 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +10 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +109 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +10 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +440 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/learn.d.ts +10 -0
- package/dist/cli/commands/learn.d.ts.map +1 -0
- package/dist/cli/commands/learn.js +33 -0
- package/dist/cli/commands/learn.js.map +1 -0
- package/dist/cli/commands/recall.d.ts +10 -0
- package/dist/cli/commands/recall.d.ts.map +1 -0
- package/dist/cli/commands/recall.js +52 -0
- package/dist/cli/commands/recall.js.map +1 -0
- package/dist/cli/commands/reflect.d.ts +10 -0
- package/dist/cli/commands/reflect.d.ts.map +1 -0
- package/dist/cli/commands/reflect.js +48 -0
- package/dist/cli/commands/reflect.js.map +1 -0
- package/dist/cli/commands/semantic.d.ts +10 -0
- package/dist/cli/commands/semantic.d.ts.map +1 -0
- package/dist/cli/commands/semantic.js +67 -0
- package/dist/cli/commands/semantic.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +10 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +61 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/status.d.ts +10 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +44 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +10 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +260 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +10 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.js +205 -0
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/commands/update-bank.d.ts +10 -0
- package/dist/cli/commands/update-bank.d.ts.map +1 -0
- package/dist/cli/commands/update-bank.js +129 -0
- package/dist/cli/commands/update-bank.js.map +1 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +56 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/errors.d.ts +42 -0
- package/dist/cli/utils/errors.d.ts.map +1 -0
- package/dist/cli/utils/errors.js +78 -0
- package/dist/cli/utils/errors.js.map +1 -0
- package/dist/cli/utils/index.d.ts +9 -0
- package/dist/cli/utils/index.d.ts.map +1 -0
- package/dist/cli/utils/index.js +7 -0
- package/dist/cli/utils/index.js.map +1 -0
- package/dist/cli/utils/output.d.ts +90 -0
- package/dist/cli/utils/output.d.ts.map +1 -0
- package/dist/cli/utils/output.js +164 -0
- package/dist/cli/utils/output.js.map +1 -0
- package/dist/client.d.ts +200 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +447 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +264 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +72 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +188 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.d.ts +148 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +115 -0
- package/dist/events.js.map +1 -0
- package/dist/hooks/index.d.ts +7 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/inject-context.d.ts +18 -0
- package/dist/hooks/inject-context.d.ts.map +1 -0
- package/dist/hooks/inject-context.js +57 -0
- package/dist/hooks/inject-context.js.map +1 -0
- package/dist/hooks/process-session.d.ts +18 -0
- package/dist/hooks/process-session.d.ts.map +1 -0
- package/dist/hooks/process-session.js +119 -0
- package/dist/hooks/process-session.js.map +1 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/learn/analyzers/git.d.ts +62 -0
- package/dist/learn/analyzers/git.d.ts.map +1 -0
- package/dist/learn/analyzers/git.js +183 -0
- package/dist/learn/analyzers/git.js.map +1 -0
- package/dist/learn/analyzers/index.d.ts +15 -0
- package/dist/learn/analyzers/index.d.ts.map +1 -0
- package/dist/learn/analyzers/index.js +10 -0
- package/dist/learn/analyzers/index.js.map +1 -0
- package/dist/learn/analyzers/package.d.ts +57 -0
- package/dist/learn/analyzers/package.d.ts.map +1 -0
- package/dist/learn/analyzers/package.js +245 -0
- package/dist/learn/analyzers/package.js.map +1 -0
- package/dist/learn/analyzers/readme.d.ts +27 -0
- package/dist/learn/analyzers/readme.d.ts.map +1 -0
- package/dist/learn/analyzers/readme.js +163 -0
- package/dist/learn/analyzers/readme.js.map +1 -0
- package/dist/learn/analyzers/source.d.ts +70 -0
- package/dist/learn/analyzers/source.d.ts.map +1 -0
- package/dist/learn/analyzers/source.js +231 -0
- package/dist/learn/analyzers/source.js.map +1 -0
- package/dist/learn/analyzers/structure.d.ts +39 -0
- package/dist/learn/analyzers/structure.d.ts.map +1 -0
- package/dist/learn/analyzers/structure.js +172 -0
- package/dist/learn/analyzers/structure.js.map +1 -0
- package/dist/learn/extractor.d.ts +76 -0
- package/dist/learn/extractor.d.ts.map +1 -0
- package/dist/learn/extractor.js +302 -0
- package/dist/learn/extractor.js.map +1 -0
- package/dist/learn/index.d.ts +31 -0
- package/dist/learn/index.d.ts.map +1 -0
- package/dist/learn/index.js +165 -0
- package/dist/learn/index.js.map +1 -0
- package/dist/mcp/handlers.d.ts +23 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +124 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/index.d.ts +32 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +40 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +79 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +277 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +59 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +43 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +65 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +6 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/mind.d.ts +250 -0
- package/dist/mind.d.ts.map +1 -0
- package/dist/mind.js +637 -0
- package/dist/mind.js.map +1 -0
- package/dist/promotion.d.ts +112 -0
- package/dist/promotion.d.ts.map +1 -0
- package/dist/promotion.js +196 -0
- package/dist/promotion.js.map +1 -0
- package/dist/retry.d.ts +70 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +122 -0
- package/dist/retry.js.map +1 -0
- package/dist/semantic.d.ts +202 -0
- package/dist/semantic.d.ts.map +1 -0
- package/dist/semantic.js +424 -0
- package/dist/semantic.js.map +1 -0
- package/dist/types.d.ts +363 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +30 -0
- package/dist/types.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Learn operation - bootstrap memory from existing codebase.
|
|
3
|
+
* @module learn
|
|
4
|
+
*/
|
|
5
|
+
import { analyzeReadme, analyzePackage, analyzeStructure, analyzeGitHistory, analyzeSource, } from "./analyzers/index.js";
|
|
6
|
+
import { createFactExtractor } from "./extractor.js";
|
|
7
|
+
/**
|
|
8
|
+
* Default options for learn().
|
|
9
|
+
*/
|
|
10
|
+
const DEFAULT_OPTIONS = {
|
|
11
|
+
depth: "standard",
|
|
12
|
+
includeGitHistory: true,
|
|
13
|
+
maxCommits: 100,
|
|
14
|
+
includeDependencies: true,
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Bootstrap memory from an existing codebase.
|
|
18
|
+
*
|
|
19
|
+
* This operation analyzes the project and stores facts in Hindsight,
|
|
20
|
+
* solving the cold start problem when adopting claude-cognitive.
|
|
21
|
+
*
|
|
22
|
+
* @param client - HindsightClient instance
|
|
23
|
+
* @param bankId - Memory bank ID
|
|
24
|
+
* @param projectPath - Project root directory
|
|
25
|
+
* @param options - Learn options
|
|
26
|
+
* @returns Learn result with summary and stats
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const result = await learn(client, 'my-project', '/path/to/project', {
|
|
31
|
+
* depth: 'full',
|
|
32
|
+
* includeGitHistory: true
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* console.log(result.summary);
|
|
36
|
+
* // "Learned 47 world facts from 123 files, formed 5 opinions"
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export async function learn(client, bankId, projectPath, options = {}) {
|
|
40
|
+
const startTime = Date.now();
|
|
41
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
42
|
+
// Phase 1: Run analysis based on depth
|
|
43
|
+
const analysis = await runAnalysis(projectPath, opts);
|
|
44
|
+
// Phase 2: Extract facts
|
|
45
|
+
const extractor = createFactExtractor();
|
|
46
|
+
const facts = extractor.extractFacts(analysis.results);
|
|
47
|
+
// Phase 3: Store facts via retain()
|
|
48
|
+
let worldFacts = 0;
|
|
49
|
+
const failedFacts = [];
|
|
50
|
+
for (const fact of facts) {
|
|
51
|
+
try {
|
|
52
|
+
await client.retain(bankId, fact.content, fact.context);
|
|
53
|
+
worldFacts++;
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
// Log but continue - don't fail entire learn on single fact
|
|
57
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
58
|
+
failedFacts.push(`${fact.content.substring(0, 50)}...: ${msg}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Phase 4: Form initial opinions via reflect()
|
|
62
|
+
const opinions = [];
|
|
63
|
+
const entities = [];
|
|
64
|
+
const entitySet = new Set();
|
|
65
|
+
const reflectionQueries = getReflectionQueries(opts.depth);
|
|
66
|
+
for (const query of reflectionQueries) {
|
|
67
|
+
try {
|
|
68
|
+
const result = await client.reflect(bankId, query);
|
|
69
|
+
opinions.push(...result.opinions);
|
|
70
|
+
// Collect entities from basedOn memories
|
|
71
|
+
const allMemories = [
|
|
72
|
+
...result.basedOn.world,
|
|
73
|
+
...result.basedOn.experience,
|
|
74
|
+
...result.basedOn.opinion,
|
|
75
|
+
];
|
|
76
|
+
for (const memory of allMemories) {
|
|
77
|
+
for (const entity of memory.entities ?? []) {
|
|
78
|
+
if (!entitySet.has(entity.id)) {
|
|
79
|
+
entitySet.add(entity.id);
|
|
80
|
+
entities.push(entity);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
// Reflection failed, continue without opinions for this query
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const duration = Date.now() - startTime;
|
|
90
|
+
return {
|
|
91
|
+
summary: generateSummary(worldFacts, opinions, analysis.filesAnalyzed, duration, failedFacts),
|
|
92
|
+
worldFacts,
|
|
93
|
+
opinions,
|
|
94
|
+
entities,
|
|
95
|
+
filesAnalyzed: analysis.filesAnalyzed,
|
|
96
|
+
duration,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Run analysis based on depth.
|
|
101
|
+
* @internal
|
|
102
|
+
*/
|
|
103
|
+
async function runAnalysis(projectPath, opts) {
|
|
104
|
+
const results = {};
|
|
105
|
+
let filesAnalyzed = 0;
|
|
106
|
+
// Quick depth: README, package.json, structure (shallow)
|
|
107
|
+
results.readme = await analyzeReadme(projectPath);
|
|
108
|
+
results.package = await analyzePackage(projectPath);
|
|
109
|
+
results.structure = await analyzeStructure(projectPath, opts.depth === "quick" ? 2 : opts.depth === "standard" ? 4 : 10);
|
|
110
|
+
filesAnalyzed += results.structure?.totalFiles ?? 0;
|
|
111
|
+
// Standard and full depth: add git history
|
|
112
|
+
if (opts.depth !== "quick" && opts.includeGitHistory) {
|
|
113
|
+
const maxCommits = opts.depth === "standard" ? 50 : opts.maxCommits;
|
|
114
|
+
results.git = await analyzeGitHistory(projectPath, maxCommits);
|
|
115
|
+
}
|
|
116
|
+
// Full depth: add source code analysis
|
|
117
|
+
if (opts.depth === "full") {
|
|
118
|
+
// Get all source files from entry points and source directories
|
|
119
|
+
const sourceFiles = [];
|
|
120
|
+
if (results.structure?.entryPoints) {
|
|
121
|
+
sourceFiles.push(...results.structure.entryPoints);
|
|
122
|
+
}
|
|
123
|
+
// Add files from source directories (if available from structure scan)
|
|
124
|
+
// For now, we use entry points; a more complete implementation would
|
|
125
|
+
// recursively collect all source files
|
|
126
|
+
if (sourceFiles.length > 0) {
|
|
127
|
+
results.source = await analyzeSource(projectPath, sourceFiles);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return { results, filesAnalyzed };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get reflection queries based on depth.
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
function getReflectionQueries(depth) {
|
|
137
|
+
const queries = [
|
|
138
|
+
"What are the main technologies and patterns used in this codebase?",
|
|
139
|
+
];
|
|
140
|
+
if (depth === "standard" || depth === "full") {
|
|
141
|
+
queries.push("What architectural decisions seem important in this project?", "What areas of the codebase might need attention based on its structure?");
|
|
142
|
+
}
|
|
143
|
+
if (depth === "full") {
|
|
144
|
+
queries.push("What coding conventions and patterns should be followed when making changes?", "What are the most critical files and components in this codebase?");
|
|
145
|
+
}
|
|
146
|
+
return queries;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Generate human-readable summary.
|
|
150
|
+
* @internal
|
|
151
|
+
*/
|
|
152
|
+
function generateSummary(worldFacts, opinions, filesAnalyzed, duration, failedFacts) {
|
|
153
|
+
const parts = [];
|
|
154
|
+
parts.push(`Learned ${worldFacts} world facts from ${filesAnalyzed} files`);
|
|
155
|
+
if (opinions.length > 0) {
|
|
156
|
+
const avgConfidence = opinions.reduce((sum, o) => sum + o.confidence, 0) / opinions.length;
|
|
157
|
+
parts.push(`formed ${opinions.length} opinions with avg confidence ${avgConfidence.toFixed(2)}`);
|
|
158
|
+
}
|
|
159
|
+
parts.push(`Duration: ${(duration / 1000).toFixed(1)}s`);
|
|
160
|
+
if (failedFacts.length > 0) {
|
|
161
|
+
parts.push(`(${failedFacts.length} facts failed to store)`);
|
|
162
|
+
}
|
|
163
|
+
return parts.join("; ");
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/learn/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool execution handlers.
|
|
3
|
+
* @module mcp/handlers
|
|
4
|
+
*/
|
|
5
|
+
import type { Mind } from "../mind.js";
|
|
6
|
+
import type { RecallToolInput, ReflectToolInput, ToolResult } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Handle memory_recall tool invocation.
|
|
9
|
+
*
|
|
10
|
+
* @param mind - Mind instance to use for recall
|
|
11
|
+
* @param input - Tool input with query and optional type filter
|
|
12
|
+
* @returns Tool result with formatted memories
|
|
13
|
+
*/
|
|
14
|
+
export declare function handleRecall(mind: Mind, input: RecallToolInput): Promise<ToolResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Handle memory_reflect tool invocation.
|
|
17
|
+
*
|
|
18
|
+
* @param mind - Mind instance to use for reflection
|
|
19
|
+
* @param input - Tool input with query
|
|
20
|
+
* @returns Tool result with formatted reflection
|
|
21
|
+
*/
|
|
22
|
+
export declare function handleReflect(mind: Mind, input: ReflectToolInput): Promise<ToolResult>;
|
|
23
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA8EhF;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,UAAU,CAAC,CAqBrB;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP tool execution handlers.
|
|
3
|
+
* @module mcp/handlers
|
|
4
|
+
*/
|
|
5
|
+
// ============================================
|
|
6
|
+
// Formatters
|
|
7
|
+
// ============================================
|
|
8
|
+
/**
|
|
9
|
+
* Format memories as readable text for Claude.
|
|
10
|
+
*/
|
|
11
|
+
function formatMemories(memories) {
|
|
12
|
+
if (memories.length === 0) {
|
|
13
|
+
return "No relevant memories found.";
|
|
14
|
+
}
|
|
15
|
+
const lines = [`Found ${memories.length} relevant memories:\n`];
|
|
16
|
+
for (const memory of memories) {
|
|
17
|
+
const date = new Date(memory.createdAt).toLocaleDateString();
|
|
18
|
+
const type = memory.factType;
|
|
19
|
+
lines.push(`[${type}] ${date}`);
|
|
20
|
+
lines.push(memory.text);
|
|
21
|
+
// Include confidence for opinions
|
|
22
|
+
if (memory.factType === "opinion" && memory.confidence !== undefined) {
|
|
23
|
+
lines.push(` Confidence: ${(memory.confidence * 100).toFixed(0)}%`);
|
|
24
|
+
}
|
|
25
|
+
// Include context if available
|
|
26
|
+
if (memory.context) {
|
|
27
|
+
lines.push(` Context: ${memory.context}`);
|
|
28
|
+
}
|
|
29
|
+
lines.push(""); // Blank line between memories
|
|
30
|
+
}
|
|
31
|
+
return lines.join("\n").trim();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Format reflect result as readable text for Claude.
|
|
35
|
+
*/
|
|
36
|
+
function formatReflection(result) {
|
|
37
|
+
const lines = [];
|
|
38
|
+
// Main reflection text
|
|
39
|
+
lines.push(result.text);
|
|
40
|
+
lines.push("");
|
|
41
|
+
// List opinions formed
|
|
42
|
+
if (result.opinions.length > 0) {
|
|
43
|
+
lines.push("Opinions formed:");
|
|
44
|
+
for (const opinion of result.opinions) {
|
|
45
|
+
const confidence = (opinion.confidence * 100).toFixed(0);
|
|
46
|
+
lines.push(`- ${opinion.opinion} (${confidence}% confidence)`);
|
|
47
|
+
}
|
|
48
|
+
lines.push("");
|
|
49
|
+
}
|
|
50
|
+
// Summarize what the reflection was based on
|
|
51
|
+
const worldCount = result.basedOn.world.length;
|
|
52
|
+
const expCount = result.basedOn.experience.length;
|
|
53
|
+
const opinionCount = result.basedOn.opinion.length;
|
|
54
|
+
const total = worldCount + expCount + opinionCount;
|
|
55
|
+
if (total > 0) {
|
|
56
|
+
lines.push(`Based on ${total} memories: ${worldCount} world facts, ${expCount} experiences, ${opinionCount} prior opinions.`);
|
|
57
|
+
}
|
|
58
|
+
return lines.join("\n").trim();
|
|
59
|
+
}
|
|
60
|
+
// ============================================
|
|
61
|
+
// Handlers
|
|
62
|
+
// ============================================
|
|
63
|
+
/**
|
|
64
|
+
* Handle memory_recall tool invocation.
|
|
65
|
+
*
|
|
66
|
+
* @param mind - Mind instance to use for recall
|
|
67
|
+
* @param input - Tool input with query and optional type filter
|
|
68
|
+
* @returns Tool result with formatted memories
|
|
69
|
+
*/
|
|
70
|
+
export async function handleRecall(mind, input) {
|
|
71
|
+
try {
|
|
72
|
+
const options = input.type && input.type !== "all" ? { factType: input.type } : undefined;
|
|
73
|
+
const memories = await mind.recall(input.query, options);
|
|
74
|
+
const text = formatMemories(memories);
|
|
75
|
+
return {
|
|
76
|
+
content: [{ type: "text", text }],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const message = error instanceof Error ? error.message : "Unknown error occurred";
|
|
81
|
+
return {
|
|
82
|
+
content: [
|
|
83
|
+
{ type: "text", text: `Error searching memories: ${message}` },
|
|
84
|
+
],
|
|
85
|
+
isError: true,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Handle memory_reflect tool invocation.
|
|
91
|
+
*
|
|
92
|
+
* @param mind - Mind instance to use for reflection
|
|
93
|
+
* @param input - Tool input with query
|
|
94
|
+
* @returns Tool result with formatted reflection
|
|
95
|
+
*/
|
|
96
|
+
export async function handleReflect(mind, input) {
|
|
97
|
+
try {
|
|
98
|
+
const result = await mind.reflect(input.query);
|
|
99
|
+
const text = formatReflection(result);
|
|
100
|
+
return {
|
|
101
|
+
content: [{ type: "text", text }],
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const message = error instanceof Error ? error.message : "Unknown error occurred";
|
|
106
|
+
// Check if this is a degraded mode error
|
|
107
|
+
if (message.includes("requires Hindsight connection")) {
|
|
108
|
+
return {
|
|
109
|
+
content: [
|
|
110
|
+
{
|
|
111
|
+
type: "text",
|
|
112
|
+
text: "Cannot reflect: Hindsight server is unavailable. Memory operations are in degraded mode.",
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
isError: true,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
content: [{ type: "text", text: `Error reflecting: ${message}` }],
|
|
120
|
+
isError: true,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/mcp/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) server for claude-cognitive.
|
|
3
|
+
* @module mcp
|
|
4
|
+
*/
|
|
5
|
+
export { ClaudeMindMcpServer } from "./server.js";
|
|
6
|
+
export { TOOL_DEFINITIONS, recallInputSchema, reflectInputSchema, } from "./tools.js";
|
|
7
|
+
export { handleRecall, handleReflect } from "./handlers.js";
|
|
8
|
+
export type { HttpTransportConfig, McpServerOptions, McpTransportType, RecallToolInput, ReflectToolInput, ToolResult, ToolResultContent, } from "./types.js";
|
|
9
|
+
import { ClaudeMindMcpServer } from "./server.js";
|
|
10
|
+
import type { McpServerOptions } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Factory function to create and start an MCP server.
|
|
13
|
+
*
|
|
14
|
+
* @param options - Server configuration options
|
|
15
|
+
* @returns Started MCP server instance
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { createMcpServer } from 'claude-cognitive/mcp';
|
|
20
|
+
* import { Mind } from 'claude-cognitive';
|
|
21
|
+
*
|
|
22
|
+
* const mind = new Mind({ projectPath: process.cwd() });
|
|
23
|
+
* await mind.init();
|
|
24
|
+
*
|
|
25
|
+
* const server = await createMcpServer({
|
|
26
|
+
* mind,
|
|
27
|
+
* transport: 'stdio',
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function createMcpServer(options: McpServerOptions): Promise<ClaudeMindMcpServer>;
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5D,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CAI9B"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) server for claude-cognitive.
|
|
3
|
+
* @module mcp
|
|
4
|
+
*/
|
|
5
|
+
// Server
|
|
6
|
+
export { ClaudeMindMcpServer } from "./server.js";
|
|
7
|
+
// Tools
|
|
8
|
+
export { TOOL_DEFINITIONS, recallInputSchema, reflectInputSchema, } from "./tools.js";
|
|
9
|
+
// Handlers
|
|
10
|
+
export { handleRecall, handleReflect } from "./handlers.js";
|
|
11
|
+
// ============================================
|
|
12
|
+
// Factory Function
|
|
13
|
+
// ============================================
|
|
14
|
+
import { ClaudeMindMcpServer } from "./server.js";
|
|
15
|
+
/**
|
|
16
|
+
* Factory function to create and start an MCP server.
|
|
17
|
+
*
|
|
18
|
+
* @param options - Server configuration options
|
|
19
|
+
* @returns Started MCP server instance
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { createMcpServer } from 'claude-cognitive/mcp';
|
|
24
|
+
* import { Mind } from 'claude-cognitive';
|
|
25
|
+
*
|
|
26
|
+
* const mind = new Mind({ projectPath: process.cwd() });
|
|
27
|
+
* await mind.init();
|
|
28
|
+
*
|
|
29
|
+
* const server = await createMcpServer({
|
|
30
|
+
* mind,
|
|
31
|
+
* transport: 'stdio',
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export async function createMcpServer(options) {
|
|
36
|
+
const server = new ClaudeMindMcpServer(options);
|
|
37
|
+
await server.start();
|
|
38
|
+
return server;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,SAAS;AACT,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,QAAQ;AACR,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa5D,+CAA+C;AAC/C,mBAAmB;AACnB,+CAA+C;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server implementation for claude-cognitive.
|
|
3
|
+
* @module mcp/server
|
|
4
|
+
*/
|
|
5
|
+
import type { McpServerOptions, McpTransportType } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* ClaudeMindMcpServer wraps the MCP SDK and provides memory tools.
|
|
8
|
+
*
|
|
9
|
+
* Supports both STDIO and HTTP transports for flexible deployment:
|
|
10
|
+
* - STDIO: For local CLI integration with Claude Code
|
|
11
|
+
* - HTTP: For remote/networked deployments and testing
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const mind = new Mind({ projectPath: '/path/to/project' });
|
|
16
|
+
* await mind.init();
|
|
17
|
+
*
|
|
18
|
+
* const server = new ClaudeMindMcpServer({
|
|
19
|
+
* mind,
|
|
20
|
+
* transport: 'stdio',
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* await server.start();
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class ClaudeMindMcpServer {
|
|
27
|
+
private readonly mind;
|
|
28
|
+
private readonly transportType;
|
|
29
|
+
private readonly serverName;
|
|
30
|
+
private readonly serverVersion;
|
|
31
|
+
private readonly httpConfig;
|
|
32
|
+
private mcpServer;
|
|
33
|
+
private httpServer;
|
|
34
|
+
private expressApp;
|
|
35
|
+
private running;
|
|
36
|
+
constructor(options: McpServerOptions);
|
|
37
|
+
/**
|
|
38
|
+
* Start the MCP server.
|
|
39
|
+
*
|
|
40
|
+
* @throws {Error} If server is already running
|
|
41
|
+
*/
|
|
42
|
+
start(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Stop the MCP server.
|
|
45
|
+
*/
|
|
46
|
+
stop(): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Check if the server is running.
|
|
49
|
+
*/
|
|
50
|
+
isRunning(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Get the transport type.
|
|
53
|
+
*/
|
|
54
|
+
getTransportType(): McpTransportType;
|
|
55
|
+
/**
|
|
56
|
+
* Get the HTTP port (only relevant for HTTP transport).
|
|
57
|
+
*/
|
|
58
|
+
getHttpPort(): number;
|
|
59
|
+
/**
|
|
60
|
+
* Get the HTTP host (only relevant for HTTP transport).
|
|
61
|
+
*/
|
|
62
|
+
getHttpHost(): string;
|
|
63
|
+
/**
|
|
64
|
+
* Register memory tools with the MCP server.
|
|
65
|
+
*/
|
|
66
|
+
private registerTools;
|
|
67
|
+
/**
|
|
68
|
+
* Start STDIO transport.
|
|
69
|
+
*/
|
|
70
|
+
private startStdioTransport;
|
|
71
|
+
/**
|
|
72
|
+
* Start HTTP transport with Express.
|
|
73
|
+
*
|
|
74
|
+
* Note: The MCP SDK's StreamableHTTPServerTransport is still experimental.
|
|
75
|
+
* For now, we implement a simple JSON-RPC endpoint.
|
|
76
|
+
*/
|
|
77
|
+
private startHttpTransport;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAmBpB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgC;IAE3D,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,gBAAgB;IAarC;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,gBAAgB,IAAI,gBAAgB;IAIpC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,OAAO,CAAC,aAAa;IA2CrB;;OAEG;YACW,mBAAmB;IAUjC;;;;;OAKG;YACW,kBAAkB;CA0GjC"}
|