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/client.js
ADDED
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HindsightClient - TypeScript client for the Hindsight memory API.
|
|
3
|
+
* @module client
|
|
4
|
+
*/
|
|
5
|
+
import { HindsightError, createErrorFromResponse, createErrorFromNetworkFailure, } from "./errors.js";
|
|
6
|
+
/**
|
|
7
|
+
* Default timeout configuration (milliseconds).
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_TIMEOUTS = {
|
|
10
|
+
default: 10_000, // 10 seconds
|
|
11
|
+
health: 3_000, // 3 seconds - quick check
|
|
12
|
+
recall: 15_000, // 15 seconds - 4-way search
|
|
13
|
+
reflect: 30_000, // 30 seconds - involves LLM
|
|
14
|
+
retain: 10_000, // 10 seconds - write operation
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* HindsightClient provides a TypeScript interface to the Hindsight memory API.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const client = new HindsightClient({
|
|
22
|
+
* host: 'localhost',
|
|
23
|
+
* port: 8888,
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Check health
|
|
27
|
+
* const health = await client.health();
|
|
28
|
+
* if (!health.healthy) {
|
|
29
|
+
* console.error('Hindsight unavailable');
|
|
30
|
+
* }
|
|
31
|
+
*
|
|
32
|
+
* // Create a bank
|
|
33
|
+
* await client.createBank({
|
|
34
|
+
* bankId: 'my-project',
|
|
35
|
+
* disposition: { skepticism: 4, literalism: 4, empathy: 2 },
|
|
36
|
+
* background: 'Developer assistant for a React app',
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* // Store a memory
|
|
40
|
+
* await client.retain(
|
|
41
|
+
* 'my-project',
|
|
42
|
+
* 'Fixed auth redirect by moving AuthProvider to root',
|
|
43
|
+
* 'User was experiencing infinite redirects'
|
|
44
|
+
* );
|
|
45
|
+
*
|
|
46
|
+
* // Recall memories
|
|
47
|
+
* const memories = await client.recall('my-project', 'authentication issues');
|
|
48
|
+
*
|
|
49
|
+
* // Reflect and form opinions
|
|
50
|
+
* const reflection = await client.reflect('my-project', 'What patterns have I noticed?');
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export class HindsightClient {
|
|
54
|
+
baseUrl;
|
|
55
|
+
apiKey;
|
|
56
|
+
timeouts;
|
|
57
|
+
/**
|
|
58
|
+
* Create a new HindsightClient.
|
|
59
|
+
*
|
|
60
|
+
* @param options - Client configuration options
|
|
61
|
+
*/
|
|
62
|
+
constructor(options = {}) {
|
|
63
|
+
const host = options.host ?? "localhost";
|
|
64
|
+
const port = options.port ?? 8888;
|
|
65
|
+
this.baseUrl = `http://${host}:${port}`;
|
|
66
|
+
if (options.apiKey !== undefined) {
|
|
67
|
+
this.apiKey = options.apiKey;
|
|
68
|
+
}
|
|
69
|
+
this.timeouts = { ...DEFAULT_TIMEOUTS, ...options.timeouts };
|
|
70
|
+
}
|
|
71
|
+
// ============================================
|
|
72
|
+
// Bank Management
|
|
73
|
+
// ============================================
|
|
74
|
+
/**
|
|
75
|
+
* Create a new memory bank with disposition.
|
|
76
|
+
*
|
|
77
|
+
* @param options - Bank creation options
|
|
78
|
+
* @throws {HindsightError} If bank already exists or disposition is invalid
|
|
79
|
+
*/
|
|
80
|
+
async createBank(options) {
|
|
81
|
+
this.validateDisposition(options.disposition);
|
|
82
|
+
await this.request("PUT", `/v1/default/banks/${encodeURIComponent(options.bankId)}`, {
|
|
83
|
+
body: {
|
|
84
|
+
name: options.bankId,
|
|
85
|
+
disposition: options.disposition,
|
|
86
|
+
background: options.background ?? "",
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get bank information.
|
|
92
|
+
*
|
|
93
|
+
* @param bankId - Bank identifier
|
|
94
|
+
* @returns Bank information
|
|
95
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
96
|
+
*/
|
|
97
|
+
async getBank(bankId) {
|
|
98
|
+
// List all banks and find the one we want
|
|
99
|
+
const response = await this.request("GET", "/v1/default/banks");
|
|
100
|
+
const bank = response.banks.find((b) => b.bank_id === bankId);
|
|
101
|
+
if (!bank) {
|
|
102
|
+
throw new HindsightError(`Bank not found: ${bankId}`, "BANK_NOT_FOUND", {
|
|
103
|
+
isRetryable: false,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return this.mapBankResponse(bank);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Update bank disposition traits.
|
|
110
|
+
*
|
|
111
|
+
* @param bankId - Bank identifier
|
|
112
|
+
* @param disposition - New disposition values
|
|
113
|
+
* @throws {HindsightError} If bank doesn't exist or disposition is invalid
|
|
114
|
+
*/
|
|
115
|
+
async updateDisposition(bankId, disposition) {
|
|
116
|
+
this.validateDisposition(disposition);
|
|
117
|
+
await this.request("PUT", `/v1/default/banks/${encodeURIComponent(bankId)}/profile`, { body: { disposition } });
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Update bank settings (background and/or disposition).
|
|
121
|
+
*
|
|
122
|
+
* @param bankId - Bank identifier
|
|
123
|
+
* @param updates - Fields to update
|
|
124
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
125
|
+
*/
|
|
126
|
+
async updateBank(bankId, updates) {
|
|
127
|
+
const body = {};
|
|
128
|
+
if (updates.background !== undefined) {
|
|
129
|
+
body.background = updates.background;
|
|
130
|
+
}
|
|
131
|
+
if (updates.disposition) {
|
|
132
|
+
body.disposition = updates.disposition;
|
|
133
|
+
}
|
|
134
|
+
// Use PUT to update bank (Hindsight doesn't support PATCH)
|
|
135
|
+
// First get current bank to merge with updates
|
|
136
|
+
const current = await this.getBank(bankId);
|
|
137
|
+
const mergedBody = {
|
|
138
|
+
name: bankId,
|
|
139
|
+
disposition: {
|
|
140
|
+
...current.disposition,
|
|
141
|
+
...(updates.disposition ?? {}),
|
|
142
|
+
},
|
|
143
|
+
background: updates.background ?? current.background ?? "",
|
|
144
|
+
};
|
|
145
|
+
await this.request("PUT", `/v1/default/banks/${encodeURIComponent(bankId)}`, { body: mergedBody });
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Delete a memory bank and all its memories.
|
|
149
|
+
*
|
|
150
|
+
* @param bankId - Bank identifier
|
|
151
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
152
|
+
*/
|
|
153
|
+
async deleteBank(bankId) {
|
|
154
|
+
await this.request("DELETE", `/v1/default/banks/${encodeURIComponent(bankId)}`);
|
|
155
|
+
}
|
|
156
|
+
// ============================================
|
|
157
|
+
// Core Operations
|
|
158
|
+
// ============================================
|
|
159
|
+
/**
|
|
160
|
+
* Store content with automatic extraction.
|
|
161
|
+
*
|
|
162
|
+
* Hindsight automatically extracts entities, relationships, and metadata.
|
|
163
|
+
*
|
|
164
|
+
* @param bankId - Bank identifier
|
|
165
|
+
* @param content - Content to store
|
|
166
|
+
* @param context - Optional additional context
|
|
167
|
+
* @returns Number of items processed
|
|
168
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
169
|
+
*/
|
|
170
|
+
async retain(bankId, content, context) {
|
|
171
|
+
const response = await this.request("POST", `/v1/default/banks/${encodeURIComponent(bankId)}/memories`, {
|
|
172
|
+
body: {
|
|
173
|
+
items: [{ content, context }],
|
|
174
|
+
async: false,
|
|
175
|
+
},
|
|
176
|
+
timeout: this.timeouts.retain,
|
|
177
|
+
});
|
|
178
|
+
return response.items_count;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Search memories using 4-way parallel retrieval.
|
|
182
|
+
*
|
|
183
|
+
* Uses four search strategies in parallel:
|
|
184
|
+
* - Semantic: Vector similarity for conceptual matches
|
|
185
|
+
* - BM25: Full-text keyword search for exact terms
|
|
186
|
+
* - Graph: Entity traversal for indirect relationships
|
|
187
|
+
* - Temporal: Time-range + semantic for historical queries
|
|
188
|
+
*
|
|
189
|
+
* Results are fused using Reciprocal Rank Fusion (RRF),
|
|
190
|
+
* then reranked with a neural cross-encoder.
|
|
191
|
+
*
|
|
192
|
+
* @param bankId - Bank identifier
|
|
193
|
+
* @param query - Search query
|
|
194
|
+
* @param options - Search options
|
|
195
|
+
* @returns Ranked list of matching memories
|
|
196
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
197
|
+
*/
|
|
198
|
+
async recall(bankId, query, options = {}) {
|
|
199
|
+
const response = await this.request("POST", `/v1/default/banks/${encodeURIComponent(bankId)}/memories/recall`, {
|
|
200
|
+
body: {
|
|
201
|
+
query,
|
|
202
|
+
budget: options.budget ?? "mid",
|
|
203
|
+
type: options.factType !== "all" ? options.factType : undefined,
|
|
204
|
+
max_tokens: options.maxTokens,
|
|
205
|
+
},
|
|
206
|
+
timeout: this.timeouts.recall,
|
|
207
|
+
});
|
|
208
|
+
return response.results.map((r) => {
|
|
209
|
+
const mem = {
|
|
210
|
+
id: r.id,
|
|
211
|
+
text: r.text,
|
|
212
|
+
factType: r.type ?? "world",
|
|
213
|
+
createdAt: r.mentioned_at ?? new Date().toISOString(),
|
|
214
|
+
};
|
|
215
|
+
if (r.context)
|
|
216
|
+
mem.context = r.context;
|
|
217
|
+
if (r.occurred_start)
|
|
218
|
+
mem.occurredStart = r.occurred_start;
|
|
219
|
+
if (r.occurred_end)
|
|
220
|
+
mem.occurredEnd = r.occurred_end;
|
|
221
|
+
return mem;
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Reason about accumulated knowledge through disposition lens.
|
|
226
|
+
*
|
|
227
|
+
* Process:
|
|
228
|
+
* 1. Recalls relevant memories (world, experience, opinion)
|
|
229
|
+
* 2. Loads bank disposition (skepticism, literalism, empathy)
|
|
230
|
+
* 3. LLM reasons through disposition lens
|
|
231
|
+
* 4. Extracts new opinions with confidence scores
|
|
232
|
+
* 5. Stores opinions asynchronously (influences future reflects)
|
|
233
|
+
* 6. Returns reasoned response with citations
|
|
234
|
+
*
|
|
235
|
+
* @param bankId - Bank identifier
|
|
236
|
+
* @param query - What to think about or reason through
|
|
237
|
+
* @param context - Optional additional context
|
|
238
|
+
* @returns Reflection result with text, opinions, and citations
|
|
239
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
240
|
+
*/
|
|
241
|
+
async reflect(bankId, query, context) {
|
|
242
|
+
const response = await this.request("POST", `/v1/default/banks/${encodeURIComponent(bankId)}/reflect`, {
|
|
243
|
+
body: { query, context },
|
|
244
|
+
timeout: this.timeouts.reflect,
|
|
245
|
+
});
|
|
246
|
+
// Map the simpler API response to our ReflectResult structure
|
|
247
|
+
const basedOn = response.based_on ?? [];
|
|
248
|
+
return {
|
|
249
|
+
text: response.text,
|
|
250
|
+
opinions: [], // API doesn't return opinions separately
|
|
251
|
+
basedOn: {
|
|
252
|
+
world: basedOn
|
|
253
|
+
.filter((f) => f.type === "world")
|
|
254
|
+
.map((f) => ({
|
|
255
|
+
id: f.id,
|
|
256
|
+
text: f.text,
|
|
257
|
+
factType: "world",
|
|
258
|
+
createdAt: new Date().toISOString(),
|
|
259
|
+
})),
|
|
260
|
+
experience: basedOn
|
|
261
|
+
.filter((f) => f.type === "experience")
|
|
262
|
+
.map((f) => ({
|
|
263
|
+
id: f.id,
|
|
264
|
+
text: f.text,
|
|
265
|
+
factType: "experience",
|
|
266
|
+
createdAt: new Date().toISOString(),
|
|
267
|
+
})),
|
|
268
|
+
opinion: basedOn
|
|
269
|
+
.filter((f) => f.type === "opinion")
|
|
270
|
+
.map((f) => ({
|
|
271
|
+
id: f.id,
|
|
272
|
+
text: f.text,
|
|
273
|
+
factType: "opinion",
|
|
274
|
+
createdAt: new Date().toISOString(),
|
|
275
|
+
})),
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
// ============================================
|
|
280
|
+
// Utilities
|
|
281
|
+
// ============================================
|
|
282
|
+
/**
|
|
283
|
+
* Check Hindsight connection health.
|
|
284
|
+
*
|
|
285
|
+
* Unlike other methods, this returns a status object instead of
|
|
286
|
+
* throwing on failure. This makes it safe to use for health checks.
|
|
287
|
+
*
|
|
288
|
+
* @returns Health status
|
|
289
|
+
*/
|
|
290
|
+
async health() {
|
|
291
|
+
try {
|
|
292
|
+
const response = await this.request("GET", "/health", {
|
|
293
|
+
timeout: this.timeouts.health,
|
|
294
|
+
});
|
|
295
|
+
return {
|
|
296
|
+
healthy: response.status === "healthy",
|
|
297
|
+
database: response.database,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
const message = error instanceof Error ? error.message : "Unknown error";
|
|
302
|
+
return {
|
|
303
|
+
healthy: false,
|
|
304
|
+
error: message,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Get recent memories from a bank.
|
|
310
|
+
*
|
|
311
|
+
* @param bankId - Bank identifier
|
|
312
|
+
* @param limit - Maximum number of memories to return (default: 50)
|
|
313
|
+
* @returns Recent memories sorted by creation time (newest first)
|
|
314
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
315
|
+
*/
|
|
316
|
+
async recent(bankId, limit = 50) {
|
|
317
|
+
const response = await this.request("GET", `/v1/default/banks/${encodeURIComponent(bankId)}/memories/list`, { params: { limit: limit.toString() } });
|
|
318
|
+
return response.items.map((item) => {
|
|
319
|
+
const mem = {
|
|
320
|
+
id: item.id,
|
|
321
|
+
text: item.text,
|
|
322
|
+
factType: item.type ?? "world",
|
|
323
|
+
createdAt: item.date ?? new Date().toISOString(),
|
|
324
|
+
};
|
|
325
|
+
if (item.context)
|
|
326
|
+
mem.context = item.context;
|
|
327
|
+
return mem;
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Clear all memories from a bank.
|
|
332
|
+
*
|
|
333
|
+
* Note: The Hindsight API only supports clearing all memories at once,
|
|
334
|
+
* not removing individual memories.
|
|
335
|
+
*
|
|
336
|
+
* @param bankId - Bank identifier
|
|
337
|
+
* @throws {HindsightError} If bank doesn't exist
|
|
338
|
+
*/
|
|
339
|
+
async forgetAll(bankId) {
|
|
340
|
+
await this.request("DELETE", `/v1/default/banks/${encodeURIComponent(bankId)}/memories`);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* @deprecated Use forgetAll() instead - individual memory deletion not supported
|
|
344
|
+
*/
|
|
345
|
+
async forget(bankId, _memoryId) {
|
|
346
|
+
await this.forgetAll(bankId);
|
|
347
|
+
}
|
|
348
|
+
// ============================================
|
|
349
|
+
// Private Methods
|
|
350
|
+
// ============================================
|
|
351
|
+
/**
|
|
352
|
+
* Make an HTTP request to the Hindsight API.
|
|
353
|
+
* @internal
|
|
354
|
+
*/
|
|
355
|
+
async request(method, path, options = {}) {
|
|
356
|
+
const timeout = options.timeout ?? this.timeouts.default;
|
|
357
|
+
let url = `${this.baseUrl}${path}`;
|
|
358
|
+
// Add query parameters if present
|
|
359
|
+
if (options.params) {
|
|
360
|
+
const searchParams = new URLSearchParams();
|
|
361
|
+
for (const [key, value] of Object.entries(options.params)) {
|
|
362
|
+
searchParams.set(key, String(value));
|
|
363
|
+
}
|
|
364
|
+
url += `?${searchParams.toString()}`;
|
|
365
|
+
}
|
|
366
|
+
const headers = {
|
|
367
|
+
"Content-Type": "application/json",
|
|
368
|
+
Accept: "application/json",
|
|
369
|
+
};
|
|
370
|
+
if (this.apiKey) {
|
|
371
|
+
headers["Authorization"] = `Bearer ${this.apiKey}`;
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const fetchOptions = {
|
|
375
|
+
method,
|
|
376
|
+
headers,
|
|
377
|
+
signal: AbortSignal.timeout(timeout),
|
|
378
|
+
};
|
|
379
|
+
if (options.body !== undefined) {
|
|
380
|
+
fetchOptions.body = JSON.stringify(options.body);
|
|
381
|
+
}
|
|
382
|
+
const response = await fetch(url, fetchOptions);
|
|
383
|
+
if (!response.ok) {
|
|
384
|
+
const body = await this.safeParseJson(response);
|
|
385
|
+
throw createErrorFromResponse(response, body, path);
|
|
386
|
+
}
|
|
387
|
+
// Handle 204 No Content
|
|
388
|
+
if (response.status === 204) {
|
|
389
|
+
return undefined;
|
|
390
|
+
}
|
|
391
|
+
return (await response.json());
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
// Re-throw HindsightErrors as-is
|
|
395
|
+
if (HindsightError.isHindsightError(error)) {
|
|
396
|
+
throw error;
|
|
397
|
+
}
|
|
398
|
+
// Convert network errors to HindsightError
|
|
399
|
+
throw createErrorFromNetworkFailure(error);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Safely parse JSON from response, returning undefined on failure.
|
|
404
|
+
* @internal
|
|
405
|
+
*/
|
|
406
|
+
async safeParseJson(response) {
|
|
407
|
+
try {
|
|
408
|
+
return await response.json();
|
|
409
|
+
}
|
|
410
|
+
catch {
|
|
411
|
+
return undefined;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Validate disposition values are in the valid range (1-5).
|
|
416
|
+
* @internal
|
|
417
|
+
*/
|
|
418
|
+
validateDisposition(disposition) {
|
|
419
|
+
const traits = ["skepticism", "literalism", "empathy"];
|
|
420
|
+
for (const trait of traits) {
|
|
421
|
+
const value = disposition[trait];
|
|
422
|
+
if (typeof value !== "number" ||
|
|
423
|
+
!Number.isInteger(value) ||
|
|
424
|
+
value < 1 ||
|
|
425
|
+
value > 5) {
|
|
426
|
+
throw new HindsightError(`Invalid ${trait}: must be an integer between 1 and 5, got: ${value}`, "INVALID_DISPOSITION", { isRetryable: false });
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Map bank response DTO to public Bank interface.
|
|
432
|
+
* @internal
|
|
433
|
+
*/
|
|
434
|
+
mapBankResponse(raw) {
|
|
435
|
+
const result = {
|
|
436
|
+
bankId: raw.bank_id,
|
|
437
|
+
disposition: raw.disposition,
|
|
438
|
+
createdAt: raw.created_at,
|
|
439
|
+
memoryCount: raw.memory_count,
|
|
440
|
+
};
|
|
441
|
+
if (raw.background !== undefined) {
|
|
442
|
+
result.background = raw.background;
|
|
443
|
+
}
|
|
444
|
+
return result;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration loading for claude-cognitive.
|
|
3
|
+
* @module config
|
|
4
|
+
*/
|
|
5
|
+
import type { ClaudeMindConfig } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Partial configuration for merging.
|
|
8
|
+
*/
|
|
9
|
+
type DeepPartial<T> = {
|
|
10
|
+
[P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
|
|
11
|
+
};
|
|
12
|
+
export type PartialConfig = DeepPartial<ClaudeMindConfig>;
|
|
13
|
+
/**
|
|
14
|
+
* Load configuration from multiple sources with priority order:
|
|
15
|
+
*
|
|
16
|
+
* 1. Constructor overrides (highest priority)
|
|
17
|
+
* 2. Environment variables
|
|
18
|
+
* 3. .claudemindrc file
|
|
19
|
+
* 4. package.json "claudemind" key
|
|
20
|
+
* 5. Default values (lowest priority)
|
|
21
|
+
*
|
|
22
|
+
* @param projectPath - Root directory of the project (default: process.cwd())
|
|
23
|
+
* @param overrides - Explicit configuration overrides
|
|
24
|
+
* @returns Merged configuration
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Load from current directory with defaults
|
|
29
|
+
* const config = await loadConfig();
|
|
30
|
+
*
|
|
31
|
+
* // Load from specific directory with overrides
|
|
32
|
+
* const config = await loadConfig('/path/to/project', {
|
|
33
|
+
* hindsight: { host: 'hindsight.example.com' }
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadConfig(projectPath?: string, overrides?: PartialConfig): Promise<ClaudeMindConfig>;
|
|
38
|
+
/**
|
|
39
|
+
* Get default configuration without loading from files.
|
|
40
|
+
* Useful for testing or when you want explicit control.
|
|
41
|
+
*/
|
|
42
|
+
export declare function getDefaultConfig(): ClaudeMindConfig;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAgBhE;;GAEG;AACH,KAAK,WAAW,CAAC,CAAC,IAAI;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAiO1D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,UAAU,CAC9B,WAAW,GAAE,MAAsB,EACnC,SAAS,CAAC,EAAE,aAAa,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAgC3B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAEnD"}
|