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.
- package/README.md +52 -2
- package/dist/agents/context.d.ts.map +1 -1
- package/dist/agents/context.js +7 -7
- package/dist/agents/context.js.map +1 -1
- package/dist/cli/commands/feedback-stats.d.ts +10 -0
- package/dist/cli/commands/feedback-stats.d.ts.map +1 -0
- package/dist/cli/commands/feedback-stats.js +70 -0
- package/dist/cli/commands/feedback-stats.js.map +1 -0
- package/dist/cli/commands/feedback-sync.d.ts +10 -0
- package/dist/cli/commands/feedback-sync.d.ts.map +1 -0
- package/dist/cli/commands/feedback-sync.js +117 -0
- package/dist/cli/commands/feedback-sync.js.map +1 -0
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/index.js +3 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/client.d.ts +121 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +203 -31
- package/dist/client.js.map +1 -1
- package/dist/events.d.ts +20 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js.map +1 -1
- package/dist/feedback/constants.d.ts +72 -0
- package/dist/feedback/constants.d.ts.map +1 -0
- package/dist/feedback/constants.js +145 -0
- package/dist/feedback/constants.js.map +1 -0
- package/dist/feedback/detector.d.ts +75 -0
- package/dist/feedback/detector.d.ts.map +1 -0
- package/dist/feedback/detector.js +393 -0
- package/dist/feedback/detector.js.map +1 -0
- package/dist/feedback/index.d.ts +85 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +194 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/feedback/offline-queue.d.ts +110 -0
- package/dist/feedback/offline-queue.d.ts.map +1 -0
- package/dist/feedback/offline-queue.js +188 -0
- package/dist/feedback/offline-queue.js.map +1 -0
- package/dist/feedback/scorer.d.ts +81 -0
- package/dist/feedback/scorer.d.ts.map +1 -0
- package/dist/feedback/scorer.js +194 -0
- package/dist/feedback/scorer.js.map +1 -0
- package/dist/feedback/similarity.d.ts +19 -0
- package/dist/feedback/similarity.d.ts.map +1 -0
- package/dist/feedback/similarity.js +49 -0
- package/dist/feedback/similarity.js.map +1 -0
- package/dist/feedback/tracker.d.ts +104 -0
- package/dist/feedback/tracker.d.ts.map +1 -0
- package/dist/feedback/tracker.js +324 -0
- package/dist/feedback/tracker.js.map +1 -0
- package/dist/hooks/process-session.d.ts.map +1 -1
- package/dist/hooks/process-session.js +13 -1
- package/dist/hooks/process-session.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/learn/index.d.ts.map +1 -1
- package/dist/learn/index.js +6 -2
- package/dist/learn/index.js.map +1 -1
- package/dist/mcp/handlers.d.ts +9 -1
- package/dist/mcp/handlers.d.ts.map +1 -1
- package/dist/mcp/handlers.js +66 -0
- package/dist/mcp/handlers.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +42 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +77 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +30 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp/types.d.ts +16 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mind.d.ts +25 -1
- package/dist/mind.d.ts.map +1 -1
- package/dist/mind.js +173 -6
- package/dist/mind.js.map +1 -1
- package/dist/types.d.ts +166 -1
- package/dist/types.d.ts.map +1 -1
- 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
|
-

|
|
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
|
-

|
|
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,
|
|
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"}
|
package/dist/agents/context.js
CHANGED
|
@@ -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(
|
|
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,
|
|
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);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -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,
|
|
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,
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* @param
|
|
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(
|
|
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
|
|
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(
|
|
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
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|