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
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event system for claude-cognitive Mind class.
|
|
3
|
+
* @module events
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from "node:events";
|
|
6
|
+
import type { Memory, Opinion } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Observation that may be promoted to semantic memory.
|
|
9
|
+
*/
|
|
10
|
+
export interface Observation {
|
|
11
|
+
/** The observation text */
|
|
12
|
+
text: string;
|
|
13
|
+
/** Confidence score from 0.0 to 1.0 */
|
|
14
|
+
confidence: number;
|
|
15
|
+
/** Source identifier (e.g., session ID, reflect query) */
|
|
16
|
+
source: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Event map defining all Mind events and their payload types.
|
|
20
|
+
*
|
|
21
|
+
* Each event is defined as a tuple of arguments that will be passed
|
|
22
|
+
* to listeners when the event is emitted.
|
|
23
|
+
*/
|
|
24
|
+
export interface MindEventMap {
|
|
25
|
+
/** Emitted when Mind is initialized and ready */
|
|
26
|
+
ready: [];
|
|
27
|
+
/** Emitted when memories are recalled */
|
|
28
|
+
"memory:recalled": [memories: Memory[]];
|
|
29
|
+
/** Emitted when content is retained */
|
|
30
|
+
"memory:retained": [content: string];
|
|
31
|
+
/** Emitted when an opinion is formed via reflect() */
|
|
32
|
+
"opinion:formed": [opinion: Opinion];
|
|
33
|
+
/** Emitted when an observation is promoted to semantic memory */
|
|
34
|
+
"observation:promoted": [observation: Observation];
|
|
35
|
+
/** Emitted when degraded mode is entered or exited */
|
|
36
|
+
"degraded:change": [degraded: boolean];
|
|
37
|
+
/** Emitted when learn() operation starts */
|
|
38
|
+
"learn:start": [options: {
|
|
39
|
+
depth: string;
|
|
40
|
+
}];
|
|
41
|
+
/** Emitted when learn() operation completes */
|
|
42
|
+
"learn:complete": [result: {
|
|
43
|
+
summary: string;
|
|
44
|
+
worldFacts: number;
|
|
45
|
+
}];
|
|
46
|
+
/** Emitted when agent context is prepared for delegation */
|
|
47
|
+
"agent:context-prepared": [info: {
|
|
48
|
+
agent: string;
|
|
49
|
+
task: string;
|
|
50
|
+
}];
|
|
51
|
+
/** Emitted on errors (non-fatal, allows continued operation) */
|
|
52
|
+
error: [error: Error];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Event names as a union type.
|
|
56
|
+
*/
|
|
57
|
+
export type MindEventName = keyof MindEventMap;
|
|
58
|
+
/**
|
|
59
|
+
* Type-safe EventEmitter for Mind class.
|
|
60
|
+
*
|
|
61
|
+
* Provides compile-time checking for event names and listener signatures.
|
|
62
|
+
* Extends the native Node.js EventEmitter with typed methods.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* const emitter = new TypedEventEmitter();
|
|
67
|
+
*
|
|
68
|
+
* // Type-safe listener - compiler knows memories is Memory[]
|
|
69
|
+
* emitter.on('memory:recalled', (memories) => {
|
|
70
|
+
* console.log(`Recalled ${memories.length} memories`);
|
|
71
|
+
* });
|
|
72
|
+
*
|
|
73
|
+
* // Type-safe emit - compiler checks argument types
|
|
74
|
+
* emitter.emit('memory:recalled', [{ id: '1', text: 'test', factType: 'world' }]);
|
|
75
|
+
*
|
|
76
|
+
* // Compile error: wrong event name
|
|
77
|
+
* emitter.on('invalid-event', () => {}); // Error!
|
|
78
|
+
*
|
|
79
|
+
* // Compile error: wrong argument type
|
|
80
|
+
* emitter.emit('memory:recalled', 'not an array'); // Error!
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare class TypedEventEmitter extends EventEmitter {
|
|
84
|
+
/**
|
|
85
|
+
* Add a listener for the specified event.
|
|
86
|
+
*
|
|
87
|
+
* @param event - Event name
|
|
88
|
+
* @param listener - Event handler function
|
|
89
|
+
* @returns This emitter for chaining
|
|
90
|
+
*/
|
|
91
|
+
on<K extends MindEventName>(event: K, listener: (...args: MindEventMap[K]) => void): this;
|
|
92
|
+
/**
|
|
93
|
+
* Add a one-time listener for the specified event.
|
|
94
|
+
* The listener is removed after the first invocation.
|
|
95
|
+
*
|
|
96
|
+
* @param event - Event name
|
|
97
|
+
* @param listener - Event handler function
|
|
98
|
+
* @returns This emitter for chaining
|
|
99
|
+
*/
|
|
100
|
+
once<K extends MindEventName>(event: K, listener: (...args: MindEventMap[K]) => void): this;
|
|
101
|
+
/**
|
|
102
|
+
* Remove a listener for the specified event.
|
|
103
|
+
*
|
|
104
|
+
* @param event - Event name
|
|
105
|
+
* @param listener - Event handler function to remove
|
|
106
|
+
* @returns This emitter for chaining
|
|
107
|
+
*/
|
|
108
|
+
off<K extends MindEventName>(event: K, listener: (...args: MindEventMap[K]) => void): this;
|
|
109
|
+
/**
|
|
110
|
+
* Emit an event with type-safe arguments.
|
|
111
|
+
*
|
|
112
|
+
* @param event - Event name
|
|
113
|
+
* @param args - Event arguments (type-checked against MindEventMap)
|
|
114
|
+
* @returns True if the event had listeners, false otherwise
|
|
115
|
+
*/
|
|
116
|
+
emit<K extends MindEventName>(event: K, ...args: MindEventMap[K]): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Add a listener to the beginning of the listeners array.
|
|
119
|
+
*
|
|
120
|
+
* @param event - Event name
|
|
121
|
+
* @param listener - Event handler function
|
|
122
|
+
* @returns This emitter for chaining
|
|
123
|
+
*/
|
|
124
|
+
prependListener<K extends MindEventName>(event: K, listener: (...args: MindEventMap[K]) => void): this;
|
|
125
|
+
/**
|
|
126
|
+
* Add a one-time listener to the beginning of the listeners array.
|
|
127
|
+
*
|
|
128
|
+
* @param event - Event name
|
|
129
|
+
* @param listener - Event handler function
|
|
130
|
+
* @returns This emitter for chaining
|
|
131
|
+
*/
|
|
132
|
+
prependOnceListener<K extends MindEventName>(event: K, listener: (...args: MindEventMap[K]) => void): this;
|
|
133
|
+
/**
|
|
134
|
+
* Remove all listeners for the specified event, or all events if none specified.
|
|
135
|
+
*
|
|
136
|
+
* @param event - Optional event name
|
|
137
|
+
* @returns This emitter for chaining
|
|
138
|
+
*/
|
|
139
|
+
removeAllListeners(event?: MindEventName): this;
|
|
140
|
+
/**
|
|
141
|
+
* Get the number of listeners for the specified event.
|
|
142
|
+
*
|
|
143
|
+
* @param event - Event name
|
|
144
|
+
* @returns Number of listeners
|
|
145
|
+
*/
|
|
146
|
+
listenerCount(event: MindEventName): number;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event system for claude-cognitive Mind class.
|
|
3
|
+
* @module events
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from "node:events";
|
|
6
|
+
// ============================================
|
|
7
|
+
// Typed EventEmitter
|
|
8
|
+
// ============================================
|
|
9
|
+
/**
|
|
10
|
+
* Type-safe EventEmitter for Mind class.
|
|
11
|
+
*
|
|
12
|
+
* Provides compile-time checking for event names and listener signatures.
|
|
13
|
+
* Extends the native Node.js EventEmitter with typed methods.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const emitter = new TypedEventEmitter();
|
|
18
|
+
*
|
|
19
|
+
* // Type-safe listener - compiler knows memories is Memory[]
|
|
20
|
+
* emitter.on('memory:recalled', (memories) => {
|
|
21
|
+
* console.log(`Recalled ${memories.length} memories`);
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Type-safe emit - compiler checks argument types
|
|
25
|
+
* emitter.emit('memory:recalled', [{ id: '1', text: 'test', factType: 'world' }]);
|
|
26
|
+
*
|
|
27
|
+
* // Compile error: wrong event name
|
|
28
|
+
* emitter.on('invalid-event', () => {}); // Error!
|
|
29
|
+
*
|
|
30
|
+
* // Compile error: wrong argument type
|
|
31
|
+
* emitter.emit('memory:recalled', 'not an array'); // Error!
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export class TypedEventEmitter extends EventEmitter {
|
|
35
|
+
/**
|
|
36
|
+
* Add a listener for the specified event.
|
|
37
|
+
*
|
|
38
|
+
* @param event - Event name
|
|
39
|
+
* @param listener - Event handler function
|
|
40
|
+
* @returns This emitter for chaining
|
|
41
|
+
*/
|
|
42
|
+
on(event, listener) {
|
|
43
|
+
return super.on(event, listener);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Add a one-time listener for the specified event.
|
|
47
|
+
* The listener is removed after the first invocation.
|
|
48
|
+
*
|
|
49
|
+
* @param event - Event name
|
|
50
|
+
* @param listener - Event handler function
|
|
51
|
+
* @returns This emitter for chaining
|
|
52
|
+
*/
|
|
53
|
+
once(event, listener) {
|
|
54
|
+
return super.once(event, listener);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Remove a listener for the specified event.
|
|
58
|
+
*
|
|
59
|
+
* @param event - Event name
|
|
60
|
+
* @param listener - Event handler function to remove
|
|
61
|
+
* @returns This emitter for chaining
|
|
62
|
+
*/
|
|
63
|
+
off(event, listener) {
|
|
64
|
+
return super.off(event, listener);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Emit an event with type-safe arguments.
|
|
68
|
+
*
|
|
69
|
+
* @param event - Event name
|
|
70
|
+
* @param args - Event arguments (type-checked against MindEventMap)
|
|
71
|
+
* @returns True if the event had listeners, false otherwise
|
|
72
|
+
*/
|
|
73
|
+
emit(event, ...args) {
|
|
74
|
+
return super.emit(event, ...args);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Add a listener to the beginning of the listeners array.
|
|
78
|
+
*
|
|
79
|
+
* @param event - Event name
|
|
80
|
+
* @param listener - Event handler function
|
|
81
|
+
* @returns This emitter for chaining
|
|
82
|
+
*/
|
|
83
|
+
prependListener(event, listener) {
|
|
84
|
+
return super.prependListener(event, listener);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Add a one-time listener to the beginning of the listeners array.
|
|
88
|
+
*
|
|
89
|
+
* @param event - Event name
|
|
90
|
+
* @param listener - Event handler function
|
|
91
|
+
* @returns This emitter for chaining
|
|
92
|
+
*/
|
|
93
|
+
prependOnceListener(event, listener) {
|
|
94
|
+
return super.prependOnceListener(event, listener);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Remove all listeners for the specified event, or all events if none specified.
|
|
98
|
+
*
|
|
99
|
+
* @param event - Optional event name
|
|
100
|
+
* @returns This emitter for chaining
|
|
101
|
+
*/
|
|
102
|
+
removeAllListeners(event) {
|
|
103
|
+
return super.removeAllListeners(event);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get the number of listeners for the specified event.
|
|
107
|
+
*
|
|
108
|
+
* @param event - Event name
|
|
109
|
+
* @returns Number of listeners
|
|
110
|
+
*/
|
|
111
|
+
listenerCount(event) {
|
|
112
|
+
return super.listenerCount(event);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA8D3C,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD;;;;;;OAMG;IACH,EAAE,CACA,KAAQ,EACR,QAA4C;QAE5C,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CACF,KAAQ,EACR,QAA4C;QAE5C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACH,GAAG,CACD,KAAQ,EACR,QAA4C;QAE5C,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAA0B,KAAQ,EAAE,GAAG,IAAqB;QAC9D,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CACb,KAAQ,EACR,QAA4C;QAE5C,OAAO,KAAK,CAAC,eAAe,CAC1B,KAAK,EACL,QAAwC,CACzC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CACjB,KAAQ,EACR,QAA4C;QAE5C,OAAO,KAAK,CAAC,mBAAmB,CAC9B,KAAK,EACL,QAAwC,CACzC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,KAAqB;QACtC,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,KAAoB;QAChC,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session start hook - inject context into Claude Code session.
|
|
3
|
+
* @module hooks/inject-context
|
|
4
|
+
*/
|
|
5
|
+
import type { CAC } from "cac";
|
|
6
|
+
/**
|
|
7
|
+
* Register the inject-context hook command.
|
|
8
|
+
*
|
|
9
|
+
* This command is called by Claude Code at session start.
|
|
10
|
+
* It outputs context to stdout for injection into the session.
|
|
11
|
+
*
|
|
12
|
+
* IMPORTANT: This command must:
|
|
13
|
+
* - Execute quickly (<500ms budget)
|
|
14
|
+
* - Output context to stdout
|
|
15
|
+
* - NEVER fail (always exit 0)
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerInjectContextCommand(cli: CAC): void;
|
|
18
|
+
//# sourceMappingURL=inject-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-context.d.ts","sourceRoot":"","sources":["../../src/hooks/inject-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA+B/B;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAkC3D"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session start hook - inject context into Claude Code session.
|
|
3
|
+
* @module hooks/inject-context
|
|
4
|
+
*/
|
|
5
|
+
import { Mind } from "../mind.js";
|
|
6
|
+
/** Default initialization timeout in milliseconds */
|
|
7
|
+
const DEFAULT_TIMEOUT = 3000;
|
|
8
|
+
/**
|
|
9
|
+
* Initialize Mind with a timeout to ensure fast execution.
|
|
10
|
+
*/
|
|
11
|
+
async function initWithTimeout(projectPath, timeout) {
|
|
12
|
+
const mind = new Mind({ projectPath });
|
|
13
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
14
|
+
setTimeout(() => reject(new Error("Mind initialization timed out")), timeout);
|
|
15
|
+
});
|
|
16
|
+
await Promise.race([mind.init(), timeoutPromise]);
|
|
17
|
+
return mind;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Register the inject-context hook command.
|
|
21
|
+
*
|
|
22
|
+
* This command is called by Claude Code at session start.
|
|
23
|
+
* It outputs context to stdout for injection into the session.
|
|
24
|
+
*
|
|
25
|
+
* IMPORTANT: This command must:
|
|
26
|
+
* - Execute quickly (<500ms budget)
|
|
27
|
+
* - Output context to stdout
|
|
28
|
+
* - NEVER fail (always exit 0)
|
|
29
|
+
*/
|
|
30
|
+
export function registerInjectContextCommand(cli) {
|
|
31
|
+
cli
|
|
32
|
+
.command("inject-context", "Inject context at session start (hook)")
|
|
33
|
+
.option("--project <path>", "Project directory (default: current directory)")
|
|
34
|
+
.option("--timeout <ms>", "Initialization timeout in ms (default: 3000)")
|
|
35
|
+
.action(async (options) => {
|
|
36
|
+
const projectPath = options.project ?? process.cwd();
|
|
37
|
+
const timeout = options.timeout ?? DEFAULT_TIMEOUT;
|
|
38
|
+
try {
|
|
39
|
+
// Initialize Mind with timeout
|
|
40
|
+
const mind = await initWithTimeout(projectPath, timeout);
|
|
41
|
+
// Get session context
|
|
42
|
+
const context = await mind.onSessionStart();
|
|
43
|
+
// Output context to stdout
|
|
44
|
+
if (context.trim().length > 0) {
|
|
45
|
+
console.log(context);
|
|
46
|
+
}
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
// Log error to stderr but exit successfully
|
|
51
|
+
console.error(`inject-context warning: ${error instanceof Error ? error.message : error}`);
|
|
52
|
+
// Output empty string (session continues without context)
|
|
53
|
+
process.exit(0);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=inject-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inject-context.js","sourceRoot":"","sources":["../../src/hooks/inject-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOlC,qDAAqD;AACrD,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,WAAmB,EACnB,OAAe;IAEf,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,UAAU,CACR,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,EACxD,OAAO,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,GAAQ;IACnD,GAAG;SACA,OAAO,CAAC,gBAAgB,EAAE,wCAAwC,CAAC;SACnE,MAAM,CACL,kBAAkB,EAClB,gDAAgD,CACjD;SACA,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;SACxE,MAAM,CAAC,KAAK,EAAE,OAA6B,EAAE,EAAE;QAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC;QAEnD,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEzD,sBAAsB;YACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE5C,2BAA2B;YAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4CAA4C;YAC5C,OAAO,CAAC,KAAK,CACX,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAC5E,CAAC;YACF,0DAA0D;YAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session end hook - process transcript and extract memories.
|
|
3
|
+
* @module hooks/process-session
|
|
4
|
+
*/
|
|
5
|
+
import type { CAC } from "cac";
|
|
6
|
+
/**
|
|
7
|
+
* Register the process-session hook command.
|
|
8
|
+
*
|
|
9
|
+
* This command is called by Claude Code at session end.
|
|
10
|
+
* It processes the session transcript and extracts memories.
|
|
11
|
+
*
|
|
12
|
+
* IMPORTANT: This command must:
|
|
13
|
+
* - Accept transcript from file or stdin
|
|
14
|
+
* - Log to stderr only
|
|
15
|
+
* - NEVER fail (always exit 0)
|
|
16
|
+
*/
|
|
17
|
+
export declare function registerProcessSessionCommand(cli: CAC): void;
|
|
18
|
+
//# sourceMappingURL=process-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-session.d.ts","sourceRoot":"","sources":["../../src/hooks/process-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA8D/B;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAyD5D"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session end hook - process transcript and extract memories.
|
|
3
|
+
* @module hooks/process-session
|
|
4
|
+
*/
|
|
5
|
+
import { readFile } from "node:fs/promises";
|
|
6
|
+
import { createInterface } from "node:readline";
|
|
7
|
+
import { Mind } from "../mind.js";
|
|
8
|
+
/**
|
|
9
|
+
* Read transcript from file or stdin.
|
|
10
|
+
*/
|
|
11
|
+
async function readTranscript(filePath) {
|
|
12
|
+
// If file path provided, read from file
|
|
13
|
+
if (filePath) {
|
|
14
|
+
try {
|
|
15
|
+
return await readFile(filePath, "utf-8");
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error(`Warning: Could not read transcript file: ${error instanceof Error ? error.message : error}`);
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Otherwise, try to read from stdin if it's not a TTY
|
|
23
|
+
if (process.stdin.isTTY) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return new Promise((resolve) => {
|
|
27
|
+
const chunks = [];
|
|
28
|
+
const rl = createInterface({
|
|
29
|
+
input: process.stdin,
|
|
30
|
+
terminal: false,
|
|
31
|
+
});
|
|
32
|
+
rl.on("line", (line) => {
|
|
33
|
+
chunks.push(line);
|
|
34
|
+
});
|
|
35
|
+
rl.on("close", () => {
|
|
36
|
+
resolve(chunks.join("\n"));
|
|
37
|
+
});
|
|
38
|
+
// Timeout after 5 seconds if no input
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
rl.close();
|
|
41
|
+
resolve(chunks.join("\n"));
|
|
42
|
+
}, 5000);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Register the process-session hook command.
|
|
47
|
+
*
|
|
48
|
+
* This command is called by Claude Code at session end.
|
|
49
|
+
* It processes the session transcript and extracts memories.
|
|
50
|
+
*
|
|
51
|
+
* IMPORTANT: This command must:
|
|
52
|
+
* - Accept transcript from file or stdin
|
|
53
|
+
* - Log to stderr only
|
|
54
|
+
* - NEVER fail (always exit 0)
|
|
55
|
+
*/
|
|
56
|
+
export function registerProcessSessionCommand(cli) {
|
|
57
|
+
cli
|
|
58
|
+
.command("process-session", "Process session transcript (hook)")
|
|
59
|
+
.option("--project <path>", "Project directory (default: current directory)")
|
|
60
|
+
.option("--transcript <path>", "Path to transcript file")
|
|
61
|
+
.option("--json", "Output result as JSON")
|
|
62
|
+
.action(async (options) => {
|
|
63
|
+
const projectPath = options.project ?? process.cwd();
|
|
64
|
+
const result = {
|
|
65
|
+
processed: false,
|
|
66
|
+
transcriptLength: 0,
|
|
67
|
+
opinionsFormed: 0,
|
|
68
|
+
};
|
|
69
|
+
try {
|
|
70
|
+
// Read transcript
|
|
71
|
+
const transcript = await readTranscript(options.transcript);
|
|
72
|
+
if (!transcript || transcript.trim().length === 0) {
|
|
73
|
+
result.error = "No transcript provided";
|
|
74
|
+
outputResult(result, options.json);
|
|
75
|
+
process.exit(0);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
result.transcriptLength = transcript.length;
|
|
79
|
+
// Initialize Mind
|
|
80
|
+
const mind = new Mind({ projectPath });
|
|
81
|
+
await mind.init();
|
|
82
|
+
if (mind.isDegraded) {
|
|
83
|
+
result.error = "Hindsight unavailable (degraded mode)";
|
|
84
|
+
outputResult(result, options.json);
|
|
85
|
+
process.exit(0);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// Process session end
|
|
89
|
+
const reflectResult = await mind.onSessionEnd(transcript);
|
|
90
|
+
result.processed = true;
|
|
91
|
+
result.opinionsFormed = reflectResult?.opinions.length ?? 0;
|
|
92
|
+
outputResult(result, options.json);
|
|
93
|
+
process.exit(0);
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
result.error = error instanceof Error ? error.message : String(error);
|
|
97
|
+
outputResult(result, options.json);
|
|
98
|
+
// Always exit 0 to not break Claude Code
|
|
99
|
+
process.exit(0);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Output result to stderr (or stdout for JSON mode).
|
|
105
|
+
*/
|
|
106
|
+
function outputResult(result, json) {
|
|
107
|
+
if (json) {
|
|
108
|
+
console.log(JSON.stringify(result, null, 2));
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
if (result.error) {
|
|
112
|
+
console.error(`process-session: ${result.error}`);
|
|
113
|
+
}
|
|
114
|
+
else if (result.processed) {
|
|
115
|
+
console.error(`process-session: Processed ${result.transcriptLength} chars, formed ${result.opinionsFormed} opinions`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=process-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-session.js","sourceRoot":"","sources":["../../src/hooks/process-session.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* claude-cognitive - Memory integration layer for Claude Code with Hindsight.
|
|
3
|
+
*
|
|
4
|
+
* LLM thinks. Hindsight remembers. Together = mind.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { HindsightClient, loadConfig } from 'claude-cognitive';
|
|
9
|
+
*
|
|
10
|
+
* // Load configuration from .claudemindrc or defaults
|
|
11
|
+
* const config = await loadConfig();
|
|
12
|
+
*
|
|
13
|
+
* // Create client
|
|
14
|
+
* const client = new HindsightClient({
|
|
15
|
+
* host: config.hindsight.host,
|
|
16
|
+
* port: config.hindsight.port,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // Check health
|
|
20
|
+
* const health = await client.health();
|
|
21
|
+
* if (health.healthy) {
|
|
22
|
+
* // Store a memory
|
|
23
|
+
* await client.retain('my-project', 'Fixed the auth bug');
|
|
24
|
+
*
|
|
25
|
+
* // Search memories
|
|
26
|
+
* const memories = await client.recall('my-project', 'authentication');
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @packageDocumentation
|
|
31
|
+
*/
|
|
32
|
+
export { HindsightClient } from "./client.js";
|
|
33
|
+
export { Mind } from "./mind.js";
|
|
34
|
+
export { TypedEventEmitter } from "./events.js";
|
|
35
|
+
export type { MindEventMap, MindEventName, Observation } from "./events.js";
|
|
36
|
+
export { SemanticMemory, DEFAULT_TEMPLATE } from "./semantic.js";
|
|
37
|
+
export type { SemanticMemoryOptions, ParseResult } from "./semantic.js";
|
|
38
|
+
export { PromotionManager, DEFAULT_PROMOTION_THRESHOLD, opinionToObservation, shouldPromote, } from "./promotion.js";
|
|
39
|
+
export type { PromotionOptions, PromotionResult } from "./promotion.js";
|
|
40
|
+
export { learn } from "./learn/index.js";
|
|
41
|
+
export { BUILT_IN_TEMPLATES, getBuiltInTemplate, getAllBuiltInTemplates, isBuiltInAgent, } from "./agents/index.js";
|
|
42
|
+
export { loadCustomAgents, parseAgentMarkdown } from "./agents/index.js";
|
|
43
|
+
export { getAgentContext, formatAgentPrompt } from "./agents/index.js";
|
|
44
|
+
export { loadConfig, getDefaultConfig } from "./config.js";
|
|
45
|
+
export { HindsightError } from "./errors.js";
|
|
46
|
+
export { withRetry, createRetryable } from "./retry.js";
|
|
47
|
+
export type { RetryOptions } from "./retry.js";
|
|
48
|
+
export type { HindsightClientOptions, TimeoutConfig, ClaudeMindConfig, } from "./types.js";
|
|
49
|
+
export type { Disposition, TraitValue } from "./types.js";
|
|
50
|
+
export type { BankOptions, Bank } from "./types.js";
|
|
51
|
+
export type { Memory, FactType, Entity, EntityType, CoOccurrence, } from "./types.js";
|
|
52
|
+
export type { RecallOptions, RecallBudget } from "./types.js";
|
|
53
|
+
export type { ReflectResult, Opinion } from "./types.js";
|
|
54
|
+
export type { HealthStatus } from "./types.js";
|
|
55
|
+
export { HindsightErrorCode } from "./types.js";
|
|
56
|
+
export type { HindsightErrorCode as HindsightErrorCodeType } from "./types.js";
|
|
57
|
+
export type { MindOptions } from "./types.js";
|
|
58
|
+
export type { LearnOptions, LearnResult, LearnDepth, ExtractedFact } from "./types.js";
|
|
59
|
+
export type { AgentTemplate, AgentContext, BuiltInAgentType, GetAgentContextOptions, } from "./agents/index.js";
|
|
60
|
+
export { ClaudeMindMcpServer, createMcpServer } from "./mcp/index.js";
|
|
61
|
+
export { TOOL_DEFINITIONS } from "./mcp/index.js";
|
|
62
|
+
export type { McpServerOptions, McpTransportType, HttpTransportConfig, ToolResult, } from "./mcp/index.js";
|
|
63
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGxE,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGzC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1D,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGpD,YAAY,EACV,MAAM,EACN,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG9D,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGzD,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAG/E,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGvF,YAAY,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* claude-cognitive - Memory integration layer for Claude Code with Hindsight.
|
|
3
|
+
*
|
|
4
|
+
* LLM thinks. Hindsight remembers. Together = mind.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { HindsightClient, loadConfig } from 'claude-cognitive';
|
|
9
|
+
*
|
|
10
|
+
* // Load configuration from .claudemindrc or defaults
|
|
11
|
+
* const config = await loadConfig();
|
|
12
|
+
*
|
|
13
|
+
* // Create client
|
|
14
|
+
* const client = new HindsightClient({
|
|
15
|
+
* host: config.hindsight.host,
|
|
16
|
+
* port: config.hindsight.port,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // Check health
|
|
20
|
+
* const health = await client.health();
|
|
21
|
+
* if (health.healthy) {
|
|
22
|
+
* // Store a memory
|
|
23
|
+
* await client.retain('my-project', 'Fixed the auth bug');
|
|
24
|
+
*
|
|
25
|
+
* // Search memories
|
|
26
|
+
* const memories = await client.recall('my-project', 'authentication');
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @packageDocumentation
|
|
31
|
+
*/
|
|
32
|
+
// Main client
|
|
33
|
+
export { HindsightClient } from "./client.js";
|
|
34
|
+
// Mind orchestrator
|
|
35
|
+
export { Mind } from "./mind.js";
|
|
36
|
+
// Event system
|
|
37
|
+
export { TypedEventEmitter } from "./events.js";
|
|
38
|
+
// Semantic memory
|
|
39
|
+
export { SemanticMemory, DEFAULT_TEMPLATE } from "./semantic.js";
|
|
40
|
+
// Promotion
|
|
41
|
+
export { PromotionManager, DEFAULT_PROMOTION_THRESHOLD, opinionToObservation, shouldPromote, } from "./promotion.js";
|
|
42
|
+
// Learn operation
|
|
43
|
+
export { learn } from "./learn/index.js";
|
|
44
|
+
// Agent templates
|
|
45
|
+
export { BUILT_IN_TEMPLATES, getBuiltInTemplate, getAllBuiltInTemplates, isBuiltInAgent, } from "./agents/index.js";
|
|
46
|
+
export { loadCustomAgents, parseAgentMarkdown } from "./agents/index.js";
|
|
47
|
+
export { getAgentContext, formatAgentPrompt } from "./agents/index.js";
|
|
48
|
+
// Configuration
|
|
49
|
+
export { loadConfig, getDefaultConfig } from "./config.js";
|
|
50
|
+
// Error handling
|
|
51
|
+
export { HindsightError } from "./errors.js";
|
|
52
|
+
// Retry utilities
|
|
53
|
+
export { withRetry, createRetryable } from "./retry.js";
|
|
54
|
+
// Types - Error codes
|
|
55
|
+
export { HindsightErrorCode } from "./types.js";
|
|
56
|
+
// MCP Server
|
|
57
|
+
export { ClaudeMindMcpServer, createMcpServer } from "./mcp/index.js";
|
|
58
|
+
export { TOOL_DEFINITIONS } from "./mcp/index.js";
|
|
59
|
+
//# sourceMappingURL=index.js.map
|