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.
Files changed (196) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +256 -0
  3. package/bin/claude-cognitive.js +9 -0
  4. package/dist/agents/context.d.ts +40 -0
  5. package/dist/agents/context.d.ts.map +1 -0
  6. package/dist/agents/context.js +144 -0
  7. package/dist/agents/context.js.map +1 -0
  8. package/dist/agents/index.d.ts +9 -0
  9. package/dist/agents/index.d.ts.map +1 -0
  10. package/dist/agents/index.js +11 -0
  11. package/dist/agents/index.js.map +1 -0
  12. package/dist/agents/loader.d.ts +48 -0
  13. package/dist/agents/loader.d.ts.map +1 -0
  14. package/dist/agents/loader.js +157 -0
  15. package/dist/agents/loader.js.map +1 -0
  16. package/dist/agents/templates.d.ts +51 -0
  17. package/dist/agents/templates.d.ts.map +1 -0
  18. package/dist/agents/templates.js +186 -0
  19. package/dist/agents/templates.js.map +1 -0
  20. package/dist/agents/types.d.ts +52 -0
  21. package/dist/agents/types.d.ts.map +1 -0
  22. package/dist/agents/types.js +6 -0
  23. package/dist/agents/types.js.map +1 -0
  24. package/dist/cli/commands/config.d.ts +10 -0
  25. package/dist/cli/commands/config.d.ts.map +1 -0
  26. package/dist/cli/commands/config.js +22 -0
  27. package/dist/cli/commands/config.js.map +1 -0
  28. package/dist/cli/commands/index.d.ts +17 -0
  29. package/dist/cli/commands/index.d.ts.map +1 -0
  30. package/dist/cli/commands/index.js +17 -0
  31. package/dist/cli/commands/index.js.map +1 -0
  32. package/dist/cli/commands/init.d.ts +10 -0
  33. package/dist/cli/commands/init.d.ts.map +1 -0
  34. package/dist/cli/commands/init.js +109 -0
  35. package/dist/cli/commands/init.js.map +1 -0
  36. package/dist/cli/commands/install.d.ts +10 -0
  37. package/dist/cli/commands/install.d.ts.map +1 -0
  38. package/dist/cli/commands/install.js +440 -0
  39. package/dist/cli/commands/install.js.map +1 -0
  40. package/dist/cli/commands/learn.d.ts +10 -0
  41. package/dist/cli/commands/learn.d.ts.map +1 -0
  42. package/dist/cli/commands/learn.js +33 -0
  43. package/dist/cli/commands/learn.js.map +1 -0
  44. package/dist/cli/commands/recall.d.ts +10 -0
  45. package/dist/cli/commands/recall.d.ts.map +1 -0
  46. package/dist/cli/commands/recall.js +52 -0
  47. package/dist/cli/commands/recall.js.map +1 -0
  48. package/dist/cli/commands/reflect.d.ts +10 -0
  49. package/dist/cli/commands/reflect.d.ts.map +1 -0
  50. package/dist/cli/commands/reflect.js +48 -0
  51. package/dist/cli/commands/reflect.js.map +1 -0
  52. package/dist/cli/commands/semantic.d.ts +10 -0
  53. package/dist/cli/commands/semantic.d.ts.map +1 -0
  54. package/dist/cli/commands/semantic.js +67 -0
  55. package/dist/cli/commands/semantic.js.map +1 -0
  56. package/dist/cli/commands/serve.d.ts +10 -0
  57. package/dist/cli/commands/serve.d.ts.map +1 -0
  58. package/dist/cli/commands/serve.js +61 -0
  59. package/dist/cli/commands/serve.js.map +1 -0
  60. package/dist/cli/commands/status.d.ts +10 -0
  61. package/dist/cli/commands/status.d.ts.map +1 -0
  62. package/dist/cli/commands/status.js +44 -0
  63. package/dist/cli/commands/status.js.map +1 -0
  64. package/dist/cli/commands/sync.d.ts +10 -0
  65. package/dist/cli/commands/sync.d.ts.map +1 -0
  66. package/dist/cli/commands/sync.js +260 -0
  67. package/dist/cli/commands/sync.js.map +1 -0
  68. package/dist/cli/commands/uninstall.d.ts +10 -0
  69. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  70. package/dist/cli/commands/uninstall.js +205 -0
  71. package/dist/cli/commands/uninstall.js.map +1 -0
  72. package/dist/cli/commands/update-bank.d.ts +10 -0
  73. package/dist/cli/commands/update-bank.d.ts.map +1 -0
  74. package/dist/cli/commands/update-bank.js +129 -0
  75. package/dist/cli/commands/update-bank.js.map +1 -0
  76. package/dist/cli/index.d.ts +6 -0
  77. package/dist/cli/index.d.ts.map +1 -0
  78. package/dist/cli/index.js +56 -0
  79. package/dist/cli/index.js.map +1 -0
  80. package/dist/cli/utils/errors.d.ts +42 -0
  81. package/dist/cli/utils/errors.d.ts.map +1 -0
  82. package/dist/cli/utils/errors.js +78 -0
  83. package/dist/cli/utils/errors.js.map +1 -0
  84. package/dist/cli/utils/index.d.ts +9 -0
  85. package/dist/cli/utils/index.d.ts.map +1 -0
  86. package/dist/cli/utils/index.js +7 -0
  87. package/dist/cli/utils/index.js.map +1 -0
  88. package/dist/cli/utils/output.d.ts +90 -0
  89. package/dist/cli/utils/output.d.ts.map +1 -0
  90. package/dist/cli/utils/output.js +164 -0
  91. package/dist/cli/utils/output.js.map +1 -0
  92. package/dist/client.d.ts +200 -0
  93. package/dist/client.d.ts.map +1 -0
  94. package/dist/client.js +447 -0
  95. package/dist/client.js.map +1 -0
  96. package/dist/config.d.ts +44 -0
  97. package/dist/config.d.ts.map +1 -0
  98. package/dist/config.js +264 -0
  99. package/dist/config.js.map +1 -0
  100. package/dist/errors.d.ts +72 -0
  101. package/dist/errors.d.ts.map +1 -0
  102. package/dist/errors.js +188 -0
  103. package/dist/errors.js.map +1 -0
  104. package/dist/events.d.ts +148 -0
  105. package/dist/events.d.ts.map +1 -0
  106. package/dist/events.js +115 -0
  107. package/dist/events.js.map +1 -0
  108. package/dist/hooks/index.d.ts +7 -0
  109. package/dist/hooks/index.d.ts.map +1 -0
  110. package/dist/hooks/index.js +7 -0
  111. package/dist/hooks/index.js.map +1 -0
  112. package/dist/hooks/inject-context.d.ts +18 -0
  113. package/dist/hooks/inject-context.d.ts.map +1 -0
  114. package/dist/hooks/inject-context.js +57 -0
  115. package/dist/hooks/inject-context.js.map +1 -0
  116. package/dist/hooks/process-session.d.ts +18 -0
  117. package/dist/hooks/process-session.d.ts.map +1 -0
  118. package/dist/hooks/process-session.js +119 -0
  119. package/dist/hooks/process-session.js.map +1 -0
  120. package/dist/index.d.ts +63 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +59 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/learn/analyzers/git.d.ts +62 -0
  125. package/dist/learn/analyzers/git.d.ts.map +1 -0
  126. package/dist/learn/analyzers/git.js +183 -0
  127. package/dist/learn/analyzers/git.js.map +1 -0
  128. package/dist/learn/analyzers/index.d.ts +15 -0
  129. package/dist/learn/analyzers/index.d.ts.map +1 -0
  130. package/dist/learn/analyzers/index.js +10 -0
  131. package/dist/learn/analyzers/index.js.map +1 -0
  132. package/dist/learn/analyzers/package.d.ts +57 -0
  133. package/dist/learn/analyzers/package.d.ts.map +1 -0
  134. package/dist/learn/analyzers/package.js +245 -0
  135. package/dist/learn/analyzers/package.js.map +1 -0
  136. package/dist/learn/analyzers/readme.d.ts +27 -0
  137. package/dist/learn/analyzers/readme.d.ts.map +1 -0
  138. package/dist/learn/analyzers/readme.js +163 -0
  139. package/dist/learn/analyzers/readme.js.map +1 -0
  140. package/dist/learn/analyzers/source.d.ts +70 -0
  141. package/dist/learn/analyzers/source.d.ts.map +1 -0
  142. package/dist/learn/analyzers/source.js +231 -0
  143. package/dist/learn/analyzers/source.js.map +1 -0
  144. package/dist/learn/analyzers/structure.d.ts +39 -0
  145. package/dist/learn/analyzers/structure.d.ts.map +1 -0
  146. package/dist/learn/analyzers/structure.js +172 -0
  147. package/dist/learn/analyzers/structure.js.map +1 -0
  148. package/dist/learn/extractor.d.ts +76 -0
  149. package/dist/learn/extractor.d.ts.map +1 -0
  150. package/dist/learn/extractor.js +302 -0
  151. package/dist/learn/extractor.js.map +1 -0
  152. package/dist/learn/index.d.ts +31 -0
  153. package/dist/learn/index.d.ts.map +1 -0
  154. package/dist/learn/index.js +165 -0
  155. package/dist/learn/index.js.map +1 -0
  156. package/dist/mcp/handlers.d.ts +23 -0
  157. package/dist/mcp/handlers.d.ts.map +1 -0
  158. package/dist/mcp/handlers.js +124 -0
  159. package/dist/mcp/handlers.js.map +1 -0
  160. package/dist/mcp/index.d.ts +32 -0
  161. package/dist/mcp/index.d.ts.map +1 -0
  162. package/dist/mcp/index.js +40 -0
  163. package/dist/mcp/index.js.map +1 -0
  164. package/dist/mcp/server.d.ts +79 -0
  165. package/dist/mcp/server.d.ts.map +1 -0
  166. package/dist/mcp/server.js +277 -0
  167. package/dist/mcp/server.js.map +1 -0
  168. package/dist/mcp/tools.d.ts +59 -0
  169. package/dist/mcp/tools.d.ts.map +1 -0
  170. package/dist/mcp/tools.js +43 -0
  171. package/dist/mcp/tools.js.map +1 -0
  172. package/dist/mcp/types.d.ts +65 -0
  173. package/dist/mcp/types.d.ts.map +1 -0
  174. package/dist/mcp/types.js +6 -0
  175. package/dist/mcp/types.js.map +1 -0
  176. package/dist/mind.d.ts +250 -0
  177. package/dist/mind.d.ts.map +1 -0
  178. package/dist/mind.js +637 -0
  179. package/dist/mind.js.map +1 -0
  180. package/dist/promotion.d.ts +112 -0
  181. package/dist/promotion.d.ts.map +1 -0
  182. package/dist/promotion.js +196 -0
  183. package/dist/promotion.js.map +1 -0
  184. package/dist/retry.d.ts +70 -0
  185. package/dist/retry.d.ts.map +1 -0
  186. package/dist/retry.js +122 -0
  187. package/dist/retry.js.map +1 -0
  188. package/dist/semantic.d.ts +202 -0
  189. package/dist/semantic.d.ts.map +1 -0
  190. package/dist/semantic.js +424 -0
  191. package/dist/semantic.js.map +1 -0
  192. package/dist/types.d.ts +363 -0
  193. package/dist/types.d.ts.map +1 -0
  194. package/dist/types.js +30 -0
  195. package/dist/types.js.map +1 -0
  196. 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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"}
@@ -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"}