claude-cognitive 0.3.4 → 0.4.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 (83) hide show
  1. package/README.md +52 -2
  2. package/dist/agents/context.d.ts.map +1 -1
  3. package/dist/agents/context.js +7 -7
  4. package/dist/agents/context.js.map +1 -1
  5. package/dist/cli/commands/feedback-stats.d.ts +10 -0
  6. package/dist/cli/commands/feedback-stats.d.ts.map +1 -0
  7. package/dist/cli/commands/feedback-stats.js +70 -0
  8. package/dist/cli/commands/feedback-stats.js.map +1 -0
  9. package/dist/cli/commands/feedback-sync.d.ts +10 -0
  10. package/dist/cli/commands/feedback-sync.d.ts.map +1 -0
  11. package/dist/cli/commands/feedback-sync.js +117 -0
  12. package/dist/cli/commands/feedback-sync.js.map +1 -0
  13. package/dist/cli/commands/index.d.ts +2 -0
  14. package/dist/cli/commands/index.d.ts.map +1 -1
  15. package/dist/cli/commands/index.js +2 -0
  16. package/dist/cli/commands/index.js.map +1 -1
  17. package/dist/cli/index.js +3 -1
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/client.d.ts +121 -22
  20. package/dist/client.d.ts.map +1 -1
  21. package/dist/client.js +203 -31
  22. package/dist/client.js.map +1 -1
  23. package/dist/events.d.ts +20 -0
  24. package/dist/events.d.ts.map +1 -1
  25. package/dist/events.js.map +1 -1
  26. package/dist/feedback/constants.d.ts +72 -0
  27. package/dist/feedback/constants.d.ts.map +1 -0
  28. package/dist/feedback/constants.js +145 -0
  29. package/dist/feedback/constants.js.map +1 -0
  30. package/dist/feedback/detector.d.ts +75 -0
  31. package/dist/feedback/detector.d.ts.map +1 -0
  32. package/dist/feedback/detector.js +393 -0
  33. package/dist/feedback/detector.js.map +1 -0
  34. package/dist/feedback/index.d.ts +85 -0
  35. package/dist/feedback/index.d.ts.map +1 -0
  36. package/dist/feedback/index.js +194 -0
  37. package/dist/feedback/index.js.map +1 -0
  38. package/dist/feedback/offline-queue.d.ts +110 -0
  39. package/dist/feedback/offline-queue.d.ts.map +1 -0
  40. package/dist/feedback/offline-queue.js +188 -0
  41. package/dist/feedback/offline-queue.js.map +1 -0
  42. package/dist/feedback/scorer.d.ts +81 -0
  43. package/dist/feedback/scorer.d.ts.map +1 -0
  44. package/dist/feedback/scorer.js +194 -0
  45. package/dist/feedback/scorer.js.map +1 -0
  46. package/dist/feedback/similarity.d.ts +19 -0
  47. package/dist/feedback/similarity.d.ts.map +1 -0
  48. package/dist/feedback/similarity.js +49 -0
  49. package/dist/feedback/similarity.js.map +1 -0
  50. package/dist/feedback/tracker.d.ts +104 -0
  51. package/dist/feedback/tracker.d.ts.map +1 -0
  52. package/dist/feedback/tracker.js +324 -0
  53. package/dist/feedback/tracker.js.map +1 -0
  54. package/dist/hooks/process-session.d.ts.map +1 -1
  55. package/dist/hooks/process-session.js +13 -1
  56. package/dist/hooks/process-session.js.map +1 -1
  57. package/dist/index.d.ts +7 -0
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +13 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/learn/index.d.ts.map +1 -1
  62. package/dist/learn/index.js +6 -2
  63. package/dist/learn/index.js.map +1 -1
  64. package/dist/mcp/handlers.d.ts +9 -1
  65. package/dist/mcp/handlers.d.ts.map +1 -1
  66. package/dist/mcp/handlers.js +66 -0
  67. package/dist/mcp/handlers.js.map +1 -1
  68. package/dist/mcp/server.d.ts.map +1 -1
  69. package/dist/mcp/server.js +42 -2
  70. package/dist/mcp/server.js.map +1 -1
  71. package/dist/mcp/tools.d.ts +77 -0
  72. package/dist/mcp/tools.d.ts.map +1 -1
  73. package/dist/mcp/tools.js +30 -0
  74. package/dist/mcp/tools.js.map +1 -1
  75. package/dist/mcp/types.d.ts +16 -0
  76. package/dist/mcp/types.d.ts.map +1 -1
  77. package/dist/mind.d.ts +25 -1
  78. package/dist/mind.d.ts.map +1 -1
  79. package/dist/mind.js +173 -6
  80. package/dist/mind.js.map +1 -1
  81. package/dist/types.d.ts +166 -1
  82. package/dist/types.d.ts.map +1 -1
  83. package/package.json +1 -1
package/README.md CHANGED
@@ -43,7 +43,7 @@ claude-cognitive uninstall --delete-bank
43
43
 
44
44
  ## How It Works
45
45
 
46
- ![Session Lifecycle](./docs/session-lifecycle.svg)
46
+ ![Session Lifecycle](./docs/session-lifecycle.png)
47
47
 
48
48
  ### Core Operations
49
49
 
@@ -67,7 +67,7 @@ claude-cognitive uninstall --delete-bank
67
67
 
68
68
  ## Architecture
69
69
 
70
- ![Architecture](./docs/architecture.svg)
70
+ ![Architecture](./docs/architecture.png)
71
71
 
72
72
  ### Memory Layers
73
73
 
@@ -116,6 +116,8 @@ claude-cognitive reflect "query" # Reason about knowledge
116
116
  claude-cognitive config # Show configuration
117
117
  claude-cognitive update # Update global configuration
118
118
  claude-cognitive update --check # Check what needs updating
119
+ claude-cognitive feedback-stats # Show feedback queue statistics
120
+ claude-cognitive feedback-sync # Sync pending feedback signals
119
121
  claude-cognitive uninstall # Remove from project
120
122
  ```
121
123
 
@@ -175,6 +177,53 @@ When Hindsight becomes available again, offline memories are automatically synce
175
177
 
176
178
  ---
177
179
 
180
+ ## Feedback Signals
181
+
182
+ claude-cognitive automatically tracks which recalled memories are useful and submits feedback to Hindsight. This enables **query-context aware scoring** - frequently used facts rank higher in future recalls.
183
+
184
+ ### How It Works
185
+
186
+ 1. **Track** - Recalls are tracked during sessions
187
+ 2. **Detect** - 4 detection strategies identify which facts Claude used
188
+ 3. **Score** - Signals are aggregated into used/ignored verdicts
189
+ 4. **Submit** - Feedback is sent to Hindsight (or queued offline)
190
+ 5. **Boost** - Future recalls prioritize frequently-used facts
191
+
192
+ ### Detection Strategies
193
+
194
+ | Strategy | Confidence | Description |
195
+ |----------|------------|-------------|
196
+ | Explicit Reference | 0.9 | "I remember...", "As mentioned before..." |
197
+ | Semantic Similarity | 0.7 | Word overlap between response and facts |
198
+ | File Access | 0.4 | Fact mentions files Claude accessed |
199
+ | Task Correlation | 0.5 | Fact topics match completed tasks |
200
+
201
+ ### Configuration
202
+
203
+ ```json
204
+ {
205
+ "feedback": {
206
+ "enabled": true,
207
+ "detection": {
208
+ "explicit": true,
209
+ "semantic": true,
210
+ "behavioral": true
211
+ }
212
+ }
213
+ }
214
+ ```
215
+
216
+ ### CLI Commands
217
+
218
+ ```bash
219
+ claude-cognitive feedback-stats # Show queue statistics
220
+ claude-cognitive feedback-sync # Sync pending signals
221
+ ```
222
+
223
+ See [Feedback Signals](./docs/feedback-signals.md) for full documentation.
224
+
225
+ ---
226
+
178
227
  ## API Usage
179
228
 
180
229
  ```typescript
@@ -220,6 +269,7 @@ Without Hindsight, claude-cognitive works in offline mode - memories are stored
220
269
  - **[Concepts](./docs/concepts.md)** - Memory networks, operations, architecture
221
270
  - **[Configuration](./docs/configuration.md)** - Full configuration reference
222
271
  - **[API Reference](./docs/api-reference.md)** - Complete API documentation
272
+ - **[Feedback Signals](./docs/feedback-signals.md)** - Automatic usage tracking
223
273
  - **[Performance](./docs/performance.md)** - Benchmarks and optimization
224
274
 
225
275
  ---
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,YAAY,CAAC,CA+BvB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA2D/D;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,GACX,MAAM,CAeR"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,YAAY,CAAC,CA8BvB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA2D/D;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,MAAM,GACX,MAAM,CAeR"}
@@ -17,15 +17,15 @@
17
17
  */
18
18
  export async function getAgentContext(client, bankId, template, task, options = {}) {
19
19
  const { budget = "mid", additionalContext, maxMemories = 10 } = options;
20
- // Recall memories relevant to the task
21
- const recallOptions = {
22
- budget,
23
- factType: "all", // Agent benefits from all memory types
24
- includeEntities: true,
25
- };
26
20
  let memories = [];
27
21
  try {
28
- memories = await client.recall(bankId, task, recallOptions);
22
+ memories = await client.recall({
23
+ bankId,
24
+ query: task,
25
+ budget,
26
+ factType: "all", // Agent benefits from all memory types
27
+ includeEntities: true,
28
+ });
29
29
  // Limit to maxMemories
30
30
  memories = memories.slice(0, maxMemories);
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,MAAc,EACd,QAAuB,EACvB,IAAY,EACZ,UAAkC,EAAE;IAEpC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,iBAAiB,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAExE,uCAAuC;IACvC,MAAM,aAAa,GAAkB;QACnC,MAAM;QACN,QAAQ,EAAE,KAAK,EAAE,uCAAuC;QACxD,eAAe,EAAE,IAAI;KACtB,CAAC;IAEF,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC5D,uBAAuB;QACvB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;QAC5C,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAiB;QAC3B,QAAQ;QACR,QAAQ;QACR,IAAI;KACL,CAAC;IAEF,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAqB;IACrD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IAEhE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,uBAAuB;IACvB,QAAQ,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,QAAQ;IACR,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9C,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,0DAA0D;IAC1D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CACX,gEAAgE,CACjE,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAElB,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,MAAM,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,uCAAuC;IACvC,IAAI,iBAAiB,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,WAAW;IACX,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,yBAAyB;IACzB,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,MAAc;IACrC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,YAAY;YACf,OAAO,iBAAiB,CAAC;QAC3B,KAAK,SAAS;YACZ,OAAO,YAAY,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;QAC7D,KAAK,aAAa;YAChB,OAAO,aAAa,CAAC;QACvB,KAAK,OAAO,CAAC;QACb;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAuB,EACvB,IAAY;IAEZ,OAAO,YAAY,QAAQ,CAAC,IAAI;;;EAGhC,QAAQ,CAAC,OAAO;;;EAGhB,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGpD,IAAI;;;EAGJ,QAAQ,CAAC,YAAY;CACtB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/agents/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI feedback-stats command - show feedback queue and processing statistics.
3
+ * @module cli/commands/feedback-stats
4
+ */
5
+ import type { CAC } from "cac";
6
+ /**
7
+ * Register the feedback-stats command.
8
+ */
9
+ export declare function registerFeedbackStatsCommand(cli: CAC): void;
10
+ //# sourceMappingURL=feedback-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-stats.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/feedback-stats.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAuD/B;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAqC3D"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * CLI feedback-stats command - show feedback queue and processing statistics.
3
+ * @module cli/commands/feedback-stats
4
+ */
5
+ import { Mind } from "../../mind.js";
6
+ import { output, info } from "../utils/index.js";
7
+ /**
8
+ * Format feedback stats for human-readable output.
9
+ */
10
+ function formatFeedbackStats(result) {
11
+ const lines = [];
12
+ lines.push("Feedback System Status");
13
+ lines.push("=".repeat(40));
14
+ lines.push(`Bank: ${result.bankId}`);
15
+ lines.push(`Feedback enabled: ${result.feedbackEnabled ? "Yes" : "No"}`);
16
+ lines.push(`Mode: ${result.degraded ? "Degraded (offline)" : "Online"}`);
17
+ if (result.queue) {
18
+ lines.push("");
19
+ lines.push("Offline Queue:");
20
+ lines.push(` Total signals: ${result.queue.total}`);
21
+ lines.push(` Pending sync: ${result.queue.pending}`);
22
+ lines.push(` Already synced: ${result.queue.synced}`);
23
+ if (result.queue.lastSyncAttempt) {
24
+ const date = new Date(result.queue.lastSyncAttempt).toLocaleString();
25
+ lines.push(` Last sync attempt: ${date}`);
26
+ }
27
+ if (result.queue.lastSyncSuccess) {
28
+ const date = new Date(result.queue.lastSyncSuccess).toLocaleString();
29
+ lines.push(` Last successful sync: ${date}`);
30
+ }
31
+ }
32
+ else if (result.feedbackEnabled) {
33
+ lines.push("");
34
+ lines.push("Offline Queue: No pending signals");
35
+ }
36
+ return lines.join("\n");
37
+ }
38
+ /**
39
+ * Register the feedback-stats command.
40
+ */
41
+ export function registerFeedbackStatsCommand(cli) {
42
+ cli
43
+ .command("feedback-stats", "Show feedback queue and processing statistics")
44
+ .option("--project <path>", "Project directory (default: current directory)")
45
+ .option("--json", "Output as JSON")
46
+ .option("--quiet", "Suppress output")
47
+ .action(async (options) => {
48
+ const projectPath = options.project ?? process.cwd();
49
+ const mind = new Mind({ projectPath });
50
+ await mind.init();
51
+ const queue = mind.getOfflineFeedbackQueue();
52
+ const feedbackEnabled = queue !== null;
53
+ const result = {
54
+ feedbackEnabled,
55
+ degraded: mind.isDegraded,
56
+ bankId: mind.getBankId(),
57
+ };
58
+ if (queue) {
59
+ const stats = await queue.getStats();
60
+ result.queue = stats;
61
+ }
62
+ if (!feedbackEnabled && !options.quiet && !options.json) {
63
+ info("Feedback system is not enabled. Enable it in .claudemindrc:", options);
64
+ info(' "feedback": { "enabled": true }', options);
65
+ info("", options);
66
+ }
67
+ output(result, formatFeedbackStats, options);
68
+ });
69
+ }
70
+ //# sourceMappingURL=feedback-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-stats.js","sourceRoot":"","sources":["../../../src/cli/commands/feedback-stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI feedback-sync command - sync pending offline feedback signals to Hindsight.
3
+ * @module cli/commands/feedback-sync
4
+ */
5
+ import type { CAC } from "cac";
6
+ /**
7
+ * Register the feedback-sync command.
8
+ */
9
+ export declare function registerFeedbackSyncCommand(cli: CAC): void;
10
+ //# sourceMappingURL=feedback-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-sync.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/feedback-sync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AA6C/B;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CA+F1D"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * CLI feedback-sync command - sync pending offline feedback signals to Hindsight.
3
+ * @module cli/commands/feedback-sync
4
+ */
5
+ import { Mind } from "../../mind.js";
6
+ import { output, info } from "../utils/index.js";
7
+ /**
8
+ * Format feedback sync result for human-readable output.
9
+ */
10
+ function formatFeedbackSyncResult(result) {
11
+ const lines = [];
12
+ if (result.success) {
13
+ if (result.signalsSynced > 0) {
14
+ lines.push(`Successfully synced ${result.signalsSynced} feedback signal(s) to Hindsight.`);
15
+ }
16
+ else {
17
+ lines.push("No pending feedback signals to sync.");
18
+ }
19
+ if (result.signalsCleared > 0) {
20
+ lines.push(`Cleared ${result.signalsCleared} synced signal(s) from queue.`);
21
+ }
22
+ }
23
+ else {
24
+ lines.push(`Failed to sync feedback signals: ${result.error ?? "Unknown error"}`);
25
+ if (result.degraded) {
26
+ lines.push("Hindsight is unavailable. Signals will be synced when connection is restored.");
27
+ }
28
+ }
29
+ return lines.join("\n");
30
+ }
31
+ /**
32
+ * Register the feedback-sync command.
33
+ */
34
+ export function registerFeedbackSyncCommand(cli) {
35
+ cli
36
+ .command("feedback-sync", "Sync pending offline feedback signals to Hindsight")
37
+ .option("--project <path>", "Project directory (default: current directory)")
38
+ .option("--json", "Output as JSON")
39
+ .option("--quiet", "Suppress output")
40
+ .option("--clear", "Clear synced signals after successful sync")
41
+ .action(async (options) => {
42
+ const projectPath = options.project ?? process.cwd();
43
+ const mind = new Mind({ projectPath });
44
+ await mind.init();
45
+ const queue = mind.getOfflineFeedbackQueue();
46
+ if (!queue) {
47
+ const result = {
48
+ success: false,
49
+ signalsSynced: 0,
50
+ signalsCleared: 0,
51
+ error: "Feedback system is not enabled",
52
+ degraded: mind.isDegraded,
53
+ };
54
+ output(result, formatFeedbackSyncResult, options);
55
+ return;
56
+ }
57
+ // Check if we're in degraded mode
58
+ if (mind.isDegraded) {
59
+ // Attempt recovery first
60
+ info("Hindsight unavailable, attempting recovery...", options);
61
+ const recovered = await mind.attemptRecovery();
62
+ if (!recovered) {
63
+ const result = {
64
+ success: false,
65
+ signalsSynced: 0,
66
+ signalsCleared: 0,
67
+ error: "Hindsight is unavailable",
68
+ degraded: true,
69
+ };
70
+ output(result, formatFeedbackSyncResult, options);
71
+ return;
72
+ }
73
+ info("Connection restored!", options);
74
+ }
75
+ // Get pending count before sync
76
+ const statsBefore = await queue.getStats();
77
+ if (statsBefore.pending === 0) {
78
+ const result = {
79
+ success: true,
80
+ signalsSynced: 0,
81
+ signalsCleared: 0,
82
+ degraded: false,
83
+ };
84
+ output(result, formatFeedbackSyncResult, options);
85
+ return;
86
+ }
87
+ info(`Found ${statsBefore.pending} pending signal(s) to sync...`, options);
88
+ // Sync signals
89
+ let signalsSynced = 0;
90
+ let signalsCleared = 0;
91
+ try {
92
+ signalsSynced = await mind.syncOfflineFeedback();
93
+ // Clear synced signals if requested
94
+ if (options.clear && signalsSynced > 0) {
95
+ signalsCleared = await queue.clearSynced();
96
+ }
97
+ const result = {
98
+ success: true,
99
+ signalsSynced,
100
+ signalsCleared,
101
+ degraded: false,
102
+ };
103
+ output(result, formatFeedbackSyncResult, options);
104
+ }
105
+ catch (error) {
106
+ const result = {
107
+ success: false,
108
+ signalsSynced: 0,
109
+ signalsCleared: 0,
110
+ error: error instanceof Error ? error.message : String(error),
111
+ degraded: mind.isDegraded,
112
+ };
113
+ output(result, formatFeedbackSyncResult, options);
114
+ }
115
+ });
116
+ }
117
+ //# sourceMappingURL=feedback-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback-sync.js","sourceRoot":"","sources":["../../../src/cli/commands/feedback-sync.ts"],"names":[],"mappings":"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"}
@@ -16,4 +16,6 @@ export { registerUninstallCommand } from "./uninstall.js";
16
16
  export { registerSyncCommand } from "./sync.js";
17
17
  export { registerSyncSessionCommand } from "./sync-session.js";
18
18
  export { registerUpdateCommand } from "./update.js";
19
+ export { registerFeedbackStatsCommand } from "./feedback-stats.js";
20
+ export { registerFeedbackSyncCommand } from "./feedback-sync.js";
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC"}
@@ -16,4 +16,6 @@ export { registerUninstallCommand } from "./uninstall.js";
16
16
  export { registerSyncCommand } from "./sync.js";
17
17
  export { registerSyncSessionCommand } from "./sync-session.js";
18
18
  export { registerUpdateCommand } from "./update.js";
19
+ export { registerFeedbackStatsCommand } from "./feedback-stats.js";
20
+ export { registerFeedbackSyncCommand } from "./feedback-sync.js";
19
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/cli/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { cac } from "cac";
6
6
  import { handleError } from "./utils/index.js";
7
- import { registerInitCommand, registerInstallCommand, registerUninstallCommand, registerServeCommand, registerStatusCommand, registerLearnCommand, registerRecallCommand, registerReflectCommand, registerSemanticCommand, registerConfigCommand, registerUpdateBankCommand, registerSyncCommand, registerSyncSessionCommand, registerUpdateCommand, } from "./commands/index.js";
7
+ import { registerInitCommand, registerInstallCommand, registerUninstallCommand, registerServeCommand, registerStatusCommand, registerLearnCommand, registerRecallCommand, registerReflectCommand, registerSemanticCommand, registerConfigCommand, registerUpdateBankCommand, registerSyncCommand, registerSyncSessionCommand, registerUpdateCommand, registerFeedbackStatsCommand, registerFeedbackSyncCommand, } from "./commands/index.js";
8
8
  import { registerInjectContextCommand } from "../hooks/inject-context.js";
9
9
  import { registerProcessSessionCommand } from "../hooks/process-session.js";
10
10
  import { registerBufferMessageCommand } from "../hooks/buffer-message.js";
@@ -30,6 +30,8 @@ function createCLI() {
30
30
  registerSyncCommand(cli);
31
31
  registerSyncSessionCommand(cli);
32
32
  registerUpdateCommand(cli);
33
+ registerFeedbackStatsCommand(cli);
34
+ registerFeedbackSyncCommand(cli);
33
35
  // Register hook commands
34
36
  registerInjectContextCommand(cli);
35
37
  registerProcessSessionCommand(cli);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAY,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E,gCAAgC;AAChC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEpC,oBAAoB;IACpB,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC9B,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC7B,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC/B,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAChC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE3B,yBAAyB;IACzB,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAClC,6BAA6B,CAAC,GAAG,CAAC,CAAC;IACnC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAElC,cAAc;IACd,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,UAAU;IACV,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,IAAI,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,iCAAiC;AACjC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,WAAW,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAY,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAE1E,gCAAgC;AAChC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEpC,oBAAoB;IACpB,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC9B,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1B,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5B,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC7B,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC/B,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzB,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAChC,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAC3B,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAClC,2BAA2B,CAAC,GAAG,CAAC,CAAC;IAEjC,yBAAyB;IACzB,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAClC,6BAA6B,CAAC,GAAG,CAAC,CAAC;IACnC,4BAA4B,CAAC,GAAG,CAAC,CAAC;IAElC,cAAc;IACd,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,UAAU;IACV,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,IAAI,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACxC,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,iCAAiC;AACjC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,WAAW,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC"}
package/dist/client.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * HindsightClient - TypeScript client for the Hindsight memory API.
3
3
  * @module client
4
4
  */
5
- import type { Bank, BankOptions, Disposition, HealthStatus, HindsightClientOptions, Memory, RecallOptions, TraitValue, ReflectResult } from "./types.js";
5
+ import type { Bank, BankOptions, Disposition, FactUsefulnessStats, FactStatsInput, HealthStatus, HindsightClientOptions, Memory, RecallInput, ReflectInput, ReflectResult, RetainInput, SignalInput, SignalResult, TraitValue } from "./types.js";
6
6
  /**
7
7
  * HindsightClient provides a TypeScript interface to the Hindsight memory API.
8
8
  *
@@ -27,17 +27,39 @@ import type { Bank, BankOptions, Disposition, HealthStatus, HindsightClientOptio
27
27
  * });
28
28
  *
29
29
  * // Store a memory
30
- * await client.retain(
31
- * 'my-project',
32
- * 'Fixed auth redirect by moving AuthProvider to root',
33
- * 'User was experiencing infinite redirects'
34
- * );
30
+ * await client.retain({
31
+ * bankId: 'my-project',
32
+ * content: 'Fixed auth redirect by moving AuthProvider to root',
33
+ * context: 'User was experiencing infinite redirects'
34
+ * });
35
35
  *
36
36
  * // Recall memories
37
- * const memories = await client.recall('my-project', 'authentication issues');
37
+ * const memories = await client.recall({
38
+ * bankId: 'my-project',
39
+ * query: 'authentication issues'
40
+ * });
41
+ *
42
+ * // Recall with usefulness boosting
43
+ * const boosted = await client.recall({
44
+ * bankId: 'my-project',
45
+ * query: 'authentication issues',
46
+ * boostByUsefulness: true,
47
+ * usefulnessWeight: 0.3
48
+ * });
38
49
  *
39
50
  * // Reflect and form opinions
40
- * const reflection = await client.reflect('my-project', 'What patterns have I noticed?');
51
+ * const reflection = await client.reflect({
52
+ * bankId: 'my-project',
53
+ * query: 'What patterns have I noticed?'
54
+ * });
55
+ *
56
+ * // Submit feedback signals
57
+ * await client.signal({
58
+ * bankId: 'my-project',
59
+ * signals: [
60
+ * { factId: memories[0].id, signalType: 'used', query: 'auth issues' }
61
+ * ]
62
+ * });
41
63
  * ```
42
64
  */
43
65
  export declare class HindsightClient {
@@ -99,16 +121,22 @@ export declare class HindsightClient {
99
121
  * Store content with automatic extraction.
100
122
  *
101
123
  * Hindsight automatically extracts entities, relationships, and metadata.
124
+ * You can optionally provide user-defined entities to combine with auto-extracted ones.
102
125
  *
103
- * @param bankId - Bank identifier
104
- * @param content - Content to store
105
- * @param context - Optional additional context
126
+ * @param input - Retain input with bankId, content, and optional context/entities
106
127
  * @returns Number of items processed
107
128
  * @throws {HindsightError} If bank doesn't exist
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * await client.retain({
133
+ * bankId: 'my-project',
134
+ * content: 'Fixed auth redirect by moving AuthProvider to root',
135
+ * context: 'User was experiencing infinite redirects'
136
+ * });
137
+ * ```
108
138
  */
109
- retain(bankId: string, content: string, context?: string, options?: {
110
- async?: boolean;
111
- }): Promise<number>;
139
+ retain(input: RetainInput): Promise<number>;
112
140
  /**
113
141
  * Search memories using 4-way parallel retrieval.
114
142
  *
@@ -121,13 +149,30 @@ export declare class HindsightClient {
121
149
  * Results are fused using Reciprocal Rank Fusion (RRF),
122
150
  * then reranked with a neural cross-encoder.
123
151
  *
124
- * @param bankId - Bank identifier
125
- * @param query - Search query
126
- * @param options - Search options
152
+ * Optionally boost results by usefulness score (based on feedback signals).
153
+ *
154
+ * @param input - Recall input with bankId, query, and optional search options
127
155
  * @returns Ranked list of matching memories
128
156
  * @throws {HindsightError} If bank doesn't exist
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * // Basic recall
161
+ * const memories = await client.recall({
162
+ * bankId: 'my-project',
163
+ * query: 'authentication issues'
164
+ * });
165
+ *
166
+ * // With usefulness boosting
167
+ * const boosted = await client.recall({
168
+ * bankId: 'my-project',
169
+ * query: 'authentication issues',
170
+ * boostByUsefulness: true,
171
+ * usefulnessWeight: 0.3
172
+ * });
173
+ * ```
129
174
  */
130
- recall(bankId: string, query: string, options?: RecallOptions): Promise<Memory[]>;
175
+ recall(input: RecallInput): Promise<Memory[]>;
131
176
  /**
132
177
  * Reason about accumulated knowledge through disposition lens.
133
178
  *
@@ -139,13 +184,19 @@ export declare class HindsightClient {
139
184
  * 5. Stores opinions asynchronously (influences future reflects)
140
185
  * 6. Returns reasoned response with citations
141
186
  *
142
- * @param bankId - Bank identifier
143
- * @param query - What to think about or reason through
144
- * @param context - Optional additional context
187
+ * @param input - Reflect input with bankId, query, and optional context
145
188
  * @returns Reflection result with text, opinions, and citations
146
189
  * @throws {HindsightError} If bank doesn't exist
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * const reflection = await client.reflect({
194
+ * bankId: 'my-project',
195
+ * query: 'What patterns have I noticed in the codebase?'
196
+ * });
197
+ * ```
147
198
  */
148
- reflect(bankId: string, query: string, context?: string): Promise<ReflectResult>;
199
+ reflect(input: ReflectInput): Promise<ReflectResult>;
149
200
  /**
150
201
  * Check Hindsight connection health.
151
202
  *
@@ -178,6 +229,54 @@ export declare class HindsightClient {
178
229
  * @deprecated Use forgetAll() instead - individual memory deletion not supported
179
230
  */
180
231
  forget(bankId: string, _memoryId?: string): Promise<void>;
232
+ /**
233
+ * Submit feedback signals for recalled facts.
234
+ *
235
+ * Signal types and their weights:
236
+ * - `used`: Fact was referenced in response (weight: +1.0)
237
+ * - `ignored`: Fact was recalled but not used (weight: -0.5)
238
+ * - `helpful`: Explicit positive feedback (weight: +1.5)
239
+ * - `not_helpful`: Explicit negative feedback (weight: -1.0)
240
+ *
241
+ * @param input - Signal input with bankId and array of signals
242
+ * @returns Result with number of signals processed
243
+ * @throws {HindsightError} If bank doesn't exist
244
+ *
245
+ * @example
246
+ * ```typescript
247
+ * await client.signal({
248
+ * bankId: 'my-project',
249
+ * signals: [
250
+ * { factId: 'fact-1', signalType: 'used', query: 'auth issues', confidence: 1.0 },
251
+ * { factId: 'fact-2', signalType: 'ignored', query: 'auth issues', confidence: 0.5 }
252
+ * ]
253
+ * });
254
+ * ```
255
+ */
256
+ signal(input: SignalInput): Promise<SignalResult>;
257
+ /**
258
+ * Get usefulness statistics for a specific fact.
259
+ *
260
+ * @param input - Input with bankId and factId
261
+ * @returns Usefulness statistics for the fact
262
+ * @throws {HindsightError} If bank or fact doesn't exist
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * const stats = await client.getFactStats({
267
+ * bankId: 'my-project',
268
+ * factId: 'fact-123'
269
+ * });
270
+ * console.log(`Usefulness: ${stats.usefulnessScore}`);
271
+ * ```
272
+ */
273
+ getFactStats(input: FactStatsInput): Promise<FactUsefulnessStats>;
274
+ /**
275
+ * List all memory banks.
276
+ *
277
+ * @returns Array of all banks
278
+ */
279
+ listBanks(): Promise<Bank[]>;
181
280
  /**
182
281
  * Make an HTTP request to the Hindsight API.
183
282
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,IAAI,EACJ,WAAW,EAEX,WAAW,EAEX,YAAY,EACZ,sBAAsB,EACtB,MAAM,EACN,aAAa,EACb,UAAU,EACV,aAAa,EAEd,MAAM,YAAY,CAAC;AAuBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC;;;;OAIG;gBACS,OAAO,GAAE,sBAA2B;IAehD;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C;;;;;;OAMG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC;IAUhB;;;;;;OAMG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE;YACZ,UAAU,CAAC,EAAE,UAAU,CAAC;YACxB,UAAU,CAAC,EAAE,UAAU,CAAC;YACxB,OAAO,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;KACH,GACA,OAAO,CAAC,IAAI,CAAC;IA+BhB;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C;;;;;;;;;;OAUG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5B,OAAO,CAAC,MAAM,CAAC;IAuBlB;;;;;;;;;;;;;;;;;OAiBG;IACG,MAAM,CACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAyCpB;;;;;;;;;;;;;;;;OAgBG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,aAAa,CAAC;IA+DzB;;;;;;;OAOG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAuBrC;;;;;;;OAOG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCnE;;;;;;;;OAQG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D;;;OAGG;YACW,OAAO;IA2DrB;;;OAGG;YACW,aAAa;IAQ3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAYxB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,IAAI,EACJ,WAAW,EAEX,WAAW,EAEX,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,MAAM,EACN,WAAW,EACX,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EAEZ,UAAU,EACX,MAAM,YAAY,CAAC;AAuBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC;;;;OAIG;gBACS,OAAO,GAAE,sBAA2B;IAehD;;;;;OAKG;IACG,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD;;;;;;OAMG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C;;;;;;OAMG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,IAAI,CAAC;IAUhB;;;;;;OAMG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE;YACZ,UAAU,CAAC,EAAE,UAAU,CAAC;YACxB,UAAU,CAAC,EAAE,UAAU,CAAC;YACxB,OAAO,CAAC,EAAE,UAAU,CAAC;SACtB,CAAC;KACH,GACA,OAAO,CAAC,IAAI,CAAC;IA+BhB;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C;;;;;;;;;;;;;;;;;;OAkBG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgEnD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IA+D1D;;;;;;;OAOG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAuBrC;;;;;;;OAOG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgCnE;;;;;;;;OAQG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BvD;;;;;;;;;;;;;;;OAeG;IACG,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiCvE;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAYlC;;;OAGG;YACW,OAAO;IA2DrB;;;OAGG;YACW,aAAa;IAQ3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAYxB"}