nlm-memory 0.5.21 → 0.5.22
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 +26 -8
- package/dist/core/actions/overlay.d.ts +22 -0
- package/dist/core/actions/overlay.js +56 -0
- package/dist/core/actions/overlay.js.map +1 -1
- package/dist/core/dataset/build-dataset.d.ts +14 -1
- package/dist/core/dataset/build-dataset.js +68 -11
- package/dist/core/dataset/build-dataset.js.map +1 -1
- package/dist/core/hook/miss-detect.d.ts +32 -0
- package/dist/core/hook/miss-detect.js +67 -0
- package/dist/core/hook/miss-detect.js.map +1 -0
- package/dist/core/recall/miss-log.d.ts +47 -0
- package/dist/core/recall/miss-log.js +112 -0
- package/dist/core/recall/miss-log.js.map +1 -0
- package/dist/core/recall/query-log.d.ts +3 -0
- package/dist/core/recall/query-log.js +1 -0
- package/dist/core/recall/query-log.js.map +1 -1
- package/dist/core/recall/recency.d.ts +52 -0
- package/dist/core/recall/recency.js +98 -0
- package/dist/core/recall/recency.js.map +1 -0
- package/dist/core/recall/recent-log.d.ts +1 -0
- package/dist/core/recall/recent-log.js +1 -0
- package/dist/core/recall/recent-log.js.map +1 -1
- package/dist/core/recall/related-facts.d.ts +30 -0
- package/dist/core/recall/related-facts.js +134 -0
- package/dist/core/recall/related-facts.js.map +1 -0
- package/dist/core/recall/rewrite-cache.d.ts +25 -0
- package/dist/core/recall/rewrite-cache.js +60 -0
- package/dist/core/recall/rewrite-cache.js.map +1 -0
- package/dist/core/recall/rewrite-prompt.d.ts +23 -0
- package/dist/core/recall/rewrite-prompt.js +81 -0
- package/dist/core/recall/rewrite-prompt.js.map +1 -0
- package/dist/core/storage/pg-session-store.js +16 -1
- package/dist/core/storage/pg-session-store.js.map +1 -1
- package/dist/core/storage/sqlite-session-store.d.ts +3 -0
- package/dist/core/storage/sqlite-session-store.js +21 -1
- package/dist/core/storage/sqlite-session-store.js.map +1 -1
- package/dist/hook/pi-extension.d.ts +3 -1
- package/dist/hook/pi-extension.js +4 -2
- package/dist/hook/pi-extension.js.map +1 -1
- package/dist/hook/prompt-recall-hook.js +1 -1
- package/dist/hook/prompt-recall-hook.js.map +1 -1
- package/dist/hook/recall-over-http.d.ts +1 -1
- package/dist/hook/recall-over-http.js +5 -2
- package/dist/hook/recall-over-http.js.map +1 -1
- package/dist/hook/session-start-hook.js +4 -1
- package/dist/hook/session-start-hook.js.map +1 -1
- package/dist/http/app.js +2 -0
- package/dist/http/app.js.map +1 -1
- package/dist/install/rules-content.d.ts +51 -0
- package/dist/install/rules-content.js +140 -0
- package/dist/install/rules-content.js.map +1 -0
- package/dist/install/rules-install.d.ts +35 -0
- package/dist/install/rules-install.js +79 -0
- package/dist/install/rules-install.js.map +1 -0
- package/dist/mcp/server.js +1 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/ui/assets/index-BR1BHwew.js +69 -0
- package/dist/ui/assets/index-CgHq6xeZ.css +1 -0
- package/dist/ui/index.html +2 -2
- package/nlm/index.js +6 -4
- package/package.json +2 -1
- package/plugin/scripts/prompt-recall-hook.mjs +5 -3
- package/plugin-hermes-agent/README.md +49 -0
- package/plugin-hermes-agent/__init__.py +75 -0
- package/plugin-hermes-agent/plugin.yaml +15 -0
- package/dist/ui/assets/index-B7j5U42U.css +0 -1
- package/dist/ui/assets/index-BO0dvNHn.js +0 -69
package/README.md
CHANGED
|
@@ -79,15 +79,15 @@ One corpus across every adapter. MCP works against all nine. **Automatic context
|
|
|
79
79
|
|
|
80
80
|
| Runtime | Connect | Sessions read from | Hooks |
|
|
81
81
|
|---|---|---|---|
|
|
82
|
-
| **Claude Code** | `nlm connect claude-code` | `~/.claude/projects/**/*.jsonl` |
|
|
83
|
-
| **Codex CLI** | `nlm connect codex` | `~/.codex/sessions/` | Marketplace plugin |
|
|
84
|
-
| **Hermes** | `nlm connect hermes` |
|
|
85
|
-
| **Hermes Agent** | `nlm connect hermes-agent` |
|
|
82
|
+
| **Claude Code** | `nlm connect claude-code` | `~/.claude/projects/**/*.jsonl` | 6 hooks: UserPromptSubmit, SessionStart, SessionEnd, Stop, PreCompact, SubagentStart |
|
|
83
|
+
| **Codex CLI** | `nlm connect codex` | `~/.codex/sessions/` | Marketplace plugin (UserPromptSubmit + Stop) |
|
|
84
|
+
| **Hermes** | `nlm connect hermes` | `~/.hermes/sessions/` | MCP only |
|
|
85
|
+
| **Hermes Agent** | `nlm connect hermes-agent` | `~/.hermes/state.db` | 6 hooks: pre_llm_call, post_llm_call, on_session_start/end/finalize/reset |
|
|
86
86
|
| **Cursor** | `nlm connect cursor` | Cursor IDE chat DB | MCP only |
|
|
87
87
|
| **Windsurf** | `nlm connect windsurf` | Windsurf user dir | MCP only |
|
|
88
88
|
| **OpenCode** | adapter active | `~/.local/share/opencode/` | MCP only |
|
|
89
89
|
| **Aider** | adapter active | `AIDER_CHAT_HISTORY_FILE` | MCP only |
|
|
90
|
-
| **pi.dev** | `nlm setup` (auto) or `nlm connect pi` | `~/.pi/agent/sessions/**/*.jsonl` | input (
|
|
90
|
+
| **pi.dev** | `nlm setup` (auto) or `nlm connect pi` | `~/.pi/agent/sessions/**/*.jsonl` | 1 hook: input (prepend via transform) |
|
|
91
91
|
|
|
92
92
|
`nlm disconnect <runtime>` reverses any of the above.
|
|
93
93
|
|
|
@@ -99,19 +99,37 @@ Two delivery paths. They share the same index.
|
|
|
99
99
|
|
|
100
100
|
### 1. Hooks — automatic context injection
|
|
101
101
|
|
|
102
|
-
Hooks fire on user input and prepend a pointer block of likely-relevant prior sessions to the model's context. Three runtimes ship
|
|
102
|
+
Hooks fire on user input and prepend a pointer block of likely-relevant prior sessions to the model's context. Three runtimes ship hooks today: Claude Code (six-hook lifecycle), Hermes Agent (six parallel hooks), and pi.dev (one `input` hook via [nlm/](nlm/README.md)). On all other runtimes the agent calls `recall_sessions` explicitly via MCP. Full lifecycle, modes, logging surface, and the daily liveness canary documented in [docs/hooks.md](docs/hooks.md).
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
**Claude Code** — six hooks written to `~/.claude/settings.json` via `nlm connect claude-code`:
|
|
105
105
|
|
|
106
106
|
| Event | What NLM does | Mode |
|
|
107
107
|
|---|---|---|
|
|
108
108
|
| **UserPromptSubmit** | Score the prompt, silently prepend pointer block listing 0–3 most likely-relevant prior sessions | live by default |
|
|
109
109
|
| **SessionStart** | Cold-start agents (cron, background) hit this; same pointer-block delivery without a user prompt | live by default |
|
|
110
|
+
| **SessionEnd** | Delete the per-conversation memo on session close so state files don't accumulate | always on |
|
|
110
111
|
| **Stop** | Scan the model's response for citations of surfaced session IDs → updates `useful_hit_rate` and builds the reranker training substrate | always on |
|
|
111
112
|
| **PreCompact** | Flush the per-conversation surfaced-IDs memo so post-compaction recalls aren't gated | always on |
|
|
112
113
|
| **SubagentStart** | Record parent→subagent links so threads stay coherent across dispatches | always on |
|
|
113
114
|
|
|
114
|
-
|
|
115
|
+
**Hermes Agent** — six hooks installed to `~/.hermes/plugins/nlm-memory/` via `nlm connect hermes-agent`. All calls are fire-and-forget except `pre_llm_call`, which returns a context string for injection:
|
|
116
|
+
|
|
117
|
+
| Hook | What NLM does | Blocks turn? |
|
|
118
|
+
|---|---|---|
|
|
119
|
+
| **pre_llm_call** | POST prompt to daemon → inject pointer block of relevant prior sessions into context | yes (returns context string) |
|
|
120
|
+
| **post_llm_call** | POST assistant response to daemon → citation scan, `useful_hit_rate` update | no |
|
|
121
|
+
| **on_session_start** | Signal session open → daemon initialises per-session memo | no |
|
|
122
|
+
| **on_session_end** | Signal session close → daemon flushes memo | no |
|
|
123
|
+
| **on_session_finalize** | Signal transcript finalised → triggers async classifier run | no |
|
|
124
|
+
| **on_session_reset** | Signal session reset → daemon clears per-session state | no |
|
|
125
|
+
|
|
126
|
+
**pi.dev** — one `input` hook registered via `nlm connect pi`. Pi's extension API only exposes `input`, so transcript ingestion is handled separately by the passive adapter scanning `~/.pi/agent/sessions/`:
|
|
127
|
+
|
|
128
|
+
| Hook | What NLM does | Blocks turn? |
|
|
129
|
+
|---|---|---|
|
|
130
|
+
| **input** | Score user message → if relevant sessions found, prepend pointer block to the prompt text via `{ action: "transform" }` | yes (returns transformed text) |
|
|
131
|
+
|
|
132
|
+
All three fail-open: any daemon error yields a clean exit and never blocks the model. Switch Claude Code hooks to **shadow** mode (log-only, no injection) with `NLM_HOOK_MODE=shadow`.
|
|
115
133
|
|
|
116
134
|
### 2. MCP — explicit tools any agent can call
|
|
117
135
|
|
|
@@ -15,10 +15,25 @@ export interface ActionOverlay {
|
|
|
15
15
|
readonly retiredEntities: Set<string>;
|
|
16
16
|
readonly snoozedEntities: Map<string, string>;
|
|
17
17
|
readonly labeledEntities: Map<string, string>;
|
|
18
|
+
/** entity canonical → new display label. Storage canonical is untouched;
|
|
19
|
+
* legacy-name recall still resolves because sessions stay tagged with
|
|
20
|
+
* the original canonical. Last non-reverted rename per subject wins. */
|
|
21
|
+
readonly renamedEntities: Map<string, string>;
|
|
18
22
|
/** open-question ids resolved without becoming decisions */
|
|
19
23
|
readonly resolvedOpens: Set<string>;
|
|
20
24
|
/** open-question id → resolution text (becomes a decision at projection time) */
|
|
21
25
|
readonly promotedOpens: Map<string, string>;
|
|
26
|
+
/** decision ids hidden from the projection (the underlying session body keeps the original line). */
|
|
27
|
+
readonly dismissedDecisions: Set<string>;
|
|
28
|
+
/** decision id → corrected text shown in place of the original. */
|
|
29
|
+
readonly revisedDecisions: Map<string, string>;
|
|
30
|
+
/** entity canonical → user-asserted coherence bucket. Overrides the
|
|
31
|
+
* computed (session_count + age) classification at projection time;
|
|
32
|
+
* last non-reverted write wins. */
|
|
33
|
+
readonly coherenceOverrides: Map<string, "active" | "sparse" | "stale">;
|
|
34
|
+
/** source canonical → target canonical. Source is hidden at projection
|
|
35
|
+
* time (treated as retired); target absorbs the source's session count. */
|
|
36
|
+
readonly mergedEntities: Map<string, string>;
|
|
22
37
|
}
|
|
23
38
|
export declare const EMPTY_OVERLAY: ActionOverlay;
|
|
24
39
|
export declare function loadActionOverlay(db: Database.Database): ActionOverlay;
|
|
@@ -28,3 +43,10 @@ export declare function loadActionOverlay(db: Database.Database): ActionOverlay;
|
|
|
28
43
|
* subject_ids round-trip.
|
|
29
44
|
*/
|
|
30
45
|
export declare function openQuestionId(sessionId: string, text: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Stable id for a decision: `${sessionId}::dec::${hash12(text)}`. Same
|
|
48
|
+
* deterministic-hash trick as open questions; the `dec::` infix keeps the
|
|
49
|
+
* two ID spaces disjoint so a decision and an open question with the same
|
|
50
|
+
* text in the same session don't collide.
|
|
51
|
+
*/
|
|
52
|
+
export declare function decisionId(sessionId: string, text: string): string;
|
|
@@ -14,8 +14,13 @@ export const EMPTY_OVERLAY = {
|
|
|
14
14
|
retiredEntities: new Set(),
|
|
15
15
|
snoozedEntities: new Map(),
|
|
16
16
|
labeledEntities: new Map(),
|
|
17
|
+
renamedEntities: new Map(),
|
|
17
18
|
resolvedOpens: new Set(),
|
|
18
19
|
promotedOpens: new Map(),
|
|
20
|
+
dismissedDecisions: new Set(),
|
|
21
|
+
revisedDecisions: new Map(),
|
|
22
|
+
coherenceOverrides: new Map(),
|
|
23
|
+
mergedEntities: new Map(),
|
|
19
24
|
};
|
|
20
25
|
export function loadActionOverlay(db) {
|
|
21
26
|
const hasActions = db
|
|
@@ -29,14 +34,22 @@ export function loadActionOverlay(db) {
|
|
|
29
34
|
retiredEntities: new Set(),
|
|
30
35
|
snoozedEntities: new Map(),
|
|
31
36
|
labeledEntities: new Map(),
|
|
37
|
+
renamedEntities: new Map(),
|
|
32
38
|
resolvedOpens: new Set(),
|
|
33
39
|
promotedOpens: new Map(),
|
|
40
|
+
dismissedDecisions: new Set(),
|
|
41
|
+
revisedDecisions: new Map(),
|
|
42
|
+
coherenceOverrides: new Map(),
|
|
43
|
+
mergedEntities: new Map(),
|
|
34
44
|
};
|
|
45
|
+
// ORDER BY id keeps reducer deterministic: later writes overwrite earlier
|
|
46
|
+
// ones, so the latest non-reverted rename per subject wins.
|
|
35
47
|
const rows = db
|
|
36
48
|
.prepare(`
|
|
37
49
|
SELECT kind, subject_type, subject_id, payload
|
|
38
50
|
FROM actions
|
|
39
51
|
WHERE reverted_by IS NULL
|
|
52
|
+
ORDER BY id
|
|
40
53
|
`)
|
|
41
54
|
.all();
|
|
42
55
|
const now = new Date().toISOString();
|
|
@@ -63,6 +76,13 @@ export function loadActionOverlay(db) {
|
|
|
63
76
|
if (newType)
|
|
64
77
|
overlay.labeledEntities.set(r.subject_id, newType);
|
|
65
78
|
}
|
|
79
|
+
else if (r.kind === "rename_entity" && r.subject_type === "entity") {
|
|
80
|
+
const to = typeof payload?.["to"] === "string" ? payload["to"].trim() : "";
|
|
81
|
+
if (to && to !== r.subject_id)
|
|
82
|
+
overlay.renamedEntities.set(r.subject_id, to);
|
|
83
|
+
else
|
|
84
|
+
overlay.renamedEntities.delete(r.subject_id);
|
|
85
|
+
}
|
|
66
86
|
else if (r.kind === "resolve_open" && r.subject_type === "open_question") {
|
|
67
87
|
overlay.resolvedOpens.add(r.subject_id);
|
|
68
88
|
}
|
|
@@ -71,6 +91,33 @@ export function loadActionOverlay(db) {
|
|
|
71
91
|
if (resolution)
|
|
72
92
|
overlay.promotedOpens.set(r.subject_id, resolution);
|
|
73
93
|
}
|
|
94
|
+
else if (r.kind === "dismiss_decision" && r.subject_type === "decision") {
|
|
95
|
+
overlay.dismissedDecisions.add(r.subject_id);
|
|
96
|
+
}
|
|
97
|
+
else if (r.kind === "revise_decision" && r.subject_type === "decision") {
|
|
98
|
+
const to = typeof payload?.["to"] === "string" ? payload["to"].trim() : "";
|
|
99
|
+
if (to)
|
|
100
|
+
overlay.revisedDecisions.set(r.subject_id, to);
|
|
101
|
+
else
|
|
102
|
+
overlay.revisedDecisions.delete(r.subject_id);
|
|
103
|
+
}
|
|
104
|
+
else if (r.kind === "merge_entity" && r.subject_type === "entity") {
|
|
105
|
+
const into = typeof payload?.["into"] === "string" ? payload["into"].trim() : "";
|
|
106
|
+
if (into)
|
|
107
|
+
overlay.mergedEntities.set(r.subject_id, into);
|
|
108
|
+
else
|
|
109
|
+
overlay.mergedEntities.delete(r.subject_id);
|
|
110
|
+
}
|
|
111
|
+
else if (r.kind === "set_coherence" && r.subject_type === "entity") {
|
|
112
|
+
const state = typeof payload?.["state"] === "string" ? payload["state"] : "";
|
|
113
|
+
if (state === "active" || state === "sparse" || state === "stale") {
|
|
114
|
+
overlay.coherenceOverrides.set(r.subject_id, state);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// Empty payload reverts to the computed bucket.
|
|
118
|
+
overlay.coherenceOverrides.delete(r.subject_id);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
74
121
|
}
|
|
75
122
|
return overlay;
|
|
76
123
|
}
|
|
@@ -82,6 +129,15 @@ export function loadActionOverlay(db) {
|
|
|
82
129
|
export function openQuestionId(sessionId, text) {
|
|
83
130
|
return `${sessionId}::${stableHash12(text)}`;
|
|
84
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Stable id for a decision: `${sessionId}::dec::${hash12(text)}`. Same
|
|
134
|
+
* deterministic-hash trick as open questions; the `dec::` infix keeps the
|
|
135
|
+
* two ID spaces disjoint so a decision and an open question with the same
|
|
136
|
+
* text in the same session don't collide.
|
|
137
|
+
*/
|
|
138
|
+
export function decisionId(sessionId, text) {
|
|
139
|
+
return `${sessionId}::dec::${stableHash12(text)}`;
|
|
140
|
+
}
|
|
85
141
|
function stableHash12(text) {
|
|
86
142
|
let h = 0xcbf29ce484222325n;
|
|
87
143
|
for (let i = 0; i < text.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/core/actions/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/core/actions/overlay.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,9 @@ export interface DatasetSession {
|
|
|
17
17
|
readonly summary: string;
|
|
18
18
|
readonly entities: ReadonlyArray<string>;
|
|
19
19
|
readonly decisions: ReadonlyArray<string>;
|
|
20
|
+
/** Stable ids parallel to `decisions[]`. Same length and order; use to
|
|
21
|
+
* target overlay actions (dismiss_decision, revise_decision). */
|
|
22
|
+
readonly decision_ids: ReadonlyArray<string>;
|
|
20
23
|
readonly open: ReadonlyArray<string>;
|
|
21
24
|
readonly open_questions: ReadonlyArray<{
|
|
22
25
|
id: string;
|
|
@@ -29,12 +32,20 @@ export interface DatasetSession {
|
|
|
29
32
|
readonly supersedes?: string;
|
|
30
33
|
readonly superseded_by?: string;
|
|
31
34
|
}
|
|
35
|
+
export type TopicCoherence = "active" | "sparse" | "stale";
|
|
32
36
|
export interface DatasetEntity {
|
|
33
37
|
readonly canonical: string;
|
|
34
38
|
readonly type: string;
|
|
35
39
|
readonly status: string;
|
|
36
40
|
readonly session_count: number;
|
|
37
41
|
readonly last_seen_session: string | null;
|
|
42
|
+
/** Renamed display label from the action overlay; absent if not renamed. */
|
|
43
|
+
readonly display?: string;
|
|
44
|
+
/** Effective coherence bucket (override if user set one, else computed). */
|
|
45
|
+
readonly coherence: TopicCoherence;
|
|
46
|
+
/** Computed bucket from session_count + age, ignoring any override. Lets
|
|
47
|
+
* the UI show "would naturally be X" alongside the user assertion. */
|
|
48
|
+
readonly coherence_computed: TopicCoherence;
|
|
38
49
|
}
|
|
39
50
|
export interface DatasetResponse {
|
|
40
51
|
readonly meta: {
|
|
@@ -49,6 +60,8 @@ export interface DatasetResponse {
|
|
|
49
60
|
readonly entity_colors: Record<string, string>;
|
|
50
61
|
readonly entity_type: Record<string, string>;
|
|
51
62
|
readonly entity_status: Record<string, string>;
|
|
63
|
+
/** canonical → display label; only canonicals with an active rename appear. */
|
|
64
|
+
readonly entity_display: Record<string, string>;
|
|
52
65
|
readonly metrics: {
|
|
53
66
|
readonly this_week: number;
|
|
54
67
|
readonly last_week: number;
|
|
@@ -61,7 +74,7 @@ export interface DatasetResponse {
|
|
|
61
74
|
readonly alerts: ReadonlyArray<{
|
|
62
75
|
readonly id: string;
|
|
63
76
|
readonly type: "stale";
|
|
64
|
-
readonly severity: "high" | "medium";
|
|
77
|
+
readonly severity: "high" | "medium" | "low";
|
|
65
78
|
readonly entity: string;
|
|
66
79
|
readonly summary: string;
|
|
67
80
|
readonly sessions: ReadonlyArray<string>;
|
|
@@ -11,7 +11,7 @@ import { existsSync } from "node:fs";
|
|
|
11
11
|
import Database from "better-sqlite3";
|
|
12
12
|
import * as sqliteVec from "sqlite-vec";
|
|
13
13
|
import { liveSessionStatus } from "../storage/live-status.js";
|
|
14
|
-
import { loadActionOverlay, openQuestionId } from "../actions/overlay.js";
|
|
14
|
+
import { loadActionOverlay, openQuestionId, decisionId } from "../actions/overlay.js";
|
|
15
15
|
const EMPTY_DATASET = (dbPath, present) => ({
|
|
16
16
|
meta: {
|
|
17
17
|
last_sync: new Date().toISOString(),
|
|
@@ -25,6 +25,7 @@ const EMPTY_DATASET = (dbPath, present) => ({
|
|
|
25
25
|
entity_colors: {},
|
|
26
26
|
entity_type: {},
|
|
27
27
|
entity_status: {},
|
|
28
|
+
entity_display: {},
|
|
28
29
|
metrics: { this_week: 0, last_week: 0, sparkline: [0, 0, 0, 0, 0, 0, 0], healthy: 0, sparse: 0, stale: 0, closed_decisions: 0 },
|
|
29
30
|
alerts: [],
|
|
30
31
|
runtimes: [],
|
|
@@ -130,14 +131,32 @@ function projectFromDb(db, dbPath, includePaths) {
|
|
|
130
131
|
`)
|
|
131
132
|
.all();
|
|
132
133
|
const overlay = loadActionOverlay(db);
|
|
134
|
+
// Count-folding pass (Option B): runs before coherence computation so the
|
|
135
|
+
// target entity's bucket reflects the absorbed session count.
|
|
136
|
+
if (overlay.mergedEntities.size > 0) {
|
|
137
|
+
const byCanonical = new Map(allEntityRows.map((e) => [e.canonical, e]));
|
|
138
|
+
for (const [source, into] of overlay.mergedEntities) {
|
|
139
|
+
const src = byCanonical.get(source);
|
|
140
|
+
const tgt = byCanonical.get(into);
|
|
141
|
+
if (src && tgt)
|
|
142
|
+
tgt.session_count += src.session_count;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const sessionStartByIdForCoherence = new Map(sessionRows.map((s) => [s.id, s.started_at]));
|
|
146
|
+
const nowMs = Date.now();
|
|
133
147
|
for (const e of allEntityRows) {
|
|
134
|
-
if (overlay.retiredEntities.has(e.canonical))
|
|
148
|
+
if (overlay.retiredEntities.has(e.canonical) || overlay.mergedEntities.has(e.canonical))
|
|
135
149
|
e.status = "retired";
|
|
136
150
|
else if (overlay.snoozedEntities.has(e.canonical))
|
|
137
151
|
e.status = "snoozed";
|
|
138
152
|
const newType = overlay.labeledEntities.get(e.canonical);
|
|
139
153
|
if (newType)
|
|
140
154
|
e.type = newType;
|
|
155
|
+
const newDisplay = overlay.renamedEntities.get(e.canonical);
|
|
156
|
+
if (newDisplay)
|
|
157
|
+
e.display = newDisplay;
|
|
158
|
+
e.coherence_computed = computeCoherence(e, sessionStartByIdForCoherence, nowMs);
|
|
159
|
+
e.coherence = overlay.coherenceOverrides.get(e.canonical) ?? e.coherence_computed;
|
|
141
160
|
}
|
|
142
161
|
const entityRows = includePaths
|
|
143
162
|
? allEntityRows
|
|
@@ -153,6 +172,24 @@ function projectFromDb(db, dbPath, includePaths) {
|
|
|
153
172
|
const promotedDecisions = rawOpen
|
|
154
173
|
.filter((o) => overlay.promotedOpens.has(o.id))
|
|
155
174
|
.map((o) => overlay.promotedOpens.get(o.id));
|
|
175
|
+
// Project decision overlays: dismissed lines drop out; revised lines
|
|
176
|
+
// show the corrected text. Promoted-from-open lines pass through as-is
|
|
177
|
+
// (the open-question id already governs them).
|
|
178
|
+
const rawDecisions = decisionsBySession.get(s.id) ?? [];
|
|
179
|
+
const projectedDecisions = [];
|
|
180
|
+
const projectedDecisionIds = [];
|
|
181
|
+
for (const text of rawDecisions) {
|
|
182
|
+
const id = decisionId(s.id, text);
|
|
183
|
+
if (overlay.dismissedDecisions.has(id))
|
|
184
|
+
continue;
|
|
185
|
+
const revised = overlay.revisedDecisions.get(id);
|
|
186
|
+
projectedDecisions.push(revised ?? text);
|
|
187
|
+
projectedDecisionIds.push(id);
|
|
188
|
+
}
|
|
189
|
+
for (const text of promotedDecisions) {
|
|
190
|
+
projectedDecisions.push(text);
|
|
191
|
+
projectedDecisionIds.push(decisionId(s.id, text));
|
|
192
|
+
}
|
|
156
193
|
return {
|
|
157
194
|
id: s.id,
|
|
158
195
|
date: (s.started_at ?? "").slice(0, 10),
|
|
@@ -161,7 +198,8 @@ function projectFromDb(db, dbPath, includePaths) {
|
|
|
161
198
|
label: s.label,
|
|
162
199
|
summary: s.summary,
|
|
163
200
|
entities: includePaths ? rawEntities : rawEntities.filter((name) => keptEntities.has(name)),
|
|
164
|
-
decisions:
|
|
201
|
+
decisions: projectedDecisions,
|
|
202
|
+
decision_ids: projectedDecisionIds,
|
|
165
203
|
open: activeOpen.map((o) => o.text),
|
|
166
204
|
open_questions: activeOpen.map((o) => ({ id: o.id, text: o.text, resolved: false })),
|
|
167
205
|
status,
|
|
@@ -176,10 +214,13 @@ function projectFromDb(db, dbPath, includePaths) {
|
|
|
176
214
|
const entityColors = {};
|
|
177
215
|
const entityType = {};
|
|
178
216
|
const entityStatus = {};
|
|
217
|
+
const entityDisplay = {};
|
|
179
218
|
for (const e of entityRows) {
|
|
180
219
|
entityColors[e.canonical] = stableColor(e.canonical);
|
|
181
220
|
entityType[e.canonical] = e.type;
|
|
182
221
|
entityStatus[e.canonical] = e.status;
|
|
222
|
+
if (e.display)
|
|
223
|
+
entityDisplay[e.canonical] = e.display;
|
|
183
224
|
}
|
|
184
225
|
const metrics = computeMetrics(sessions, entityRows);
|
|
185
226
|
const alerts = computeStaleAlerts(sessions, entityRows, overlay);
|
|
@@ -197,6 +238,7 @@ function projectFromDb(db, dbPath, includePaths) {
|
|
|
197
238
|
entity_colors: entityColors,
|
|
198
239
|
entity_type: entityType,
|
|
199
240
|
entity_status: entityStatus,
|
|
241
|
+
entity_display: entityDisplay,
|
|
200
242
|
metrics,
|
|
201
243
|
alerts,
|
|
202
244
|
runtimes,
|
|
@@ -263,19 +305,18 @@ function computeMetrics(sessions, entityRows) {
|
|
|
263
305
|
lastWeek += 1;
|
|
264
306
|
}
|
|
265
307
|
}
|
|
266
|
-
|
|
308
|
+
// Aggregate by the effective coherence (override wins, else computed) so
|
|
309
|
+
// the headline bars match what the user sees after asserting a bucket.
|
|
267
310
|
let healthy = 0;
|
|
268
311
|
let sparse = 0;
|
|
269
312
|
let stale = 0;
|
|
270
313
|
for (const e of entityRows) {
|
|
271
314
|
if (e.session_count === 0)
|
|
272
315
|
continue;
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
const ageDays = Number.isFinite(lastT) ? (now - lastT) / 86_400_000 : 999;
|
|
276
|
-
if (ageDays > 30)
|
|
316
|
+
const bucket = e.coherence ?? "sparse";
|
|
317
|
+
if (bucket === "stale")
|
|
277
318
|
stale += 1;
|
|
278
|
-
else if (
|
|
319
|
+
else if (bucket === "active")
|
|
279
320
|
healthy += 1;
|
|
280
321
|
else
|
|
281
322
|
sparse += 1;
|
|
@@ -283,6 +324,20 @@ function computeMetrics(sessions, entityRows) {
|
|
|
283
324
|
const closedDecisions = sessions.reduce((sum, s) => sum + (s.status === "superseded" ? 0 : s.decisions.length), 0);
|
|
284
325
|
return { this_week: thisWeek, last_week: lastWeek, sparkline, healthy, sparse, stale, closed_decisions: closedDecisions };
|
|
285
326
|
}
|
|
327
|
+
/** Natural coherence bucket for an entity, ignoring overlay overrides.
|
|
328
|
+
* Stale dominates: any topic last touched >30d is stale regardless of count. */
|
|
329
|
+
function computeCoherence(e, startedAtBySession, nowMs) {
|
|
330
|
+
if (e.session_count === 0)
|
|
331
|
+
return "sparse";
|
|
332
|
+
const startedAt = startedAtBySession.get(e.last_seen_session ?? "") ?? null;
|
|
333
|
+
const lastT = startedAt ? Date.parse(startedAt) : NaN;
|
|
334
|
+
const ageDays = Number.isFinite(lastT) ? (nowMs - lastT) / 86_400_000 : 999;
|
|
335
|
+
if (ageDays > 30)
|
|
336
|
+
return "stale";
|
|
337
|
+
if (e.session_count >= 3)
|
|
338
|
+
return "active";
|
|
339
|
+
return "sparse";
|
|
340
|
+
}
|
|
286
341
|
function computeStaleAlerts(sessions, entityRows, overlay) {
|
|
287
342
|
const now = Date.now();
|
|
288
343
|
const sessionsById = new Map(sessions.map((s) => [s.id, s]));
|
|
@@ -313,7 +368,7 @@ function computeStaleAlerts(sessions, entityRows, overlay) {
|
|
|
313
368
|
alerts.push({
|
|
314
369
|
id: alertId,
|
|
315
370
|
type: "stale",
|
|
316
|
-
severity: ageDays > 60 ? "high" : "medium",
|
|
371
|
+
severity: ageDays > 60 ? "high" : ageDays > 45 ? "medium" : "low",
|
|
317
372
|
entity: e.canonical,
|
|
318
373
|
summary,
|
|
319
374
|
sessions: last ? [last.id] : [],
|
|
@@ -321,7 +376,9 @@ function computeStaleAlerts(sessions, entityRows, overlay) {
|
|
|
321
376
|
last_touch_at: last?.started_at ?? null,
|
|
322
377
|
});
|
|
323
378
|
}
|
|
324
|
-
|
|
379
|
+
// high → medium → low, then secondary by age desc so older items surface first within a tier.
|
|
380
|
+
const severityRank = { high: 0, medium: 1, low: 2 };
|
|
381
|
+
alerts.sort((a, b) => severityRank[a.severity] - severityRank[b.severity] || b.age_days - a.age_days);
|
|
325
382
|
return alerts;
|
|
326
383
|
}
|
|
327
384
|
const HUES = [200, 270, 320, 30, 90, 150, 220, 290, 340, 50, 110, 170];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-dataset.js","sourceRoot":"","sources":["../../../src/core/dataset/build-dataset.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build-dataset.js","sourceRoot":"","sources":["../../../src/core/dataset/build-dataset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect "recall misses" — sessions the agent explicitly fetched or cited
|
|
3
|
+
* in its response but which the hook's pre-prompt recall never surfaced
|
|
4
|
+
* in this conversation.
|
|
5
|
+
*
|
|
6
|
+
* A miss is the inverse signal of a citation:
|
|
7
|
+
* - Citation = surfaced id appeared in the agent's tool calls / prose
|
|
8
|
+
* - Miss = id appeared in a get_session(id) or cite_session(id) call
|
|
9
|
+
* but was NOT surfaced
|
|
10
|
+
*
|
|
11
|
+
* Only explicit-id tool_use calls count. We don't scan recall_sessions
|
|
12
|
+
* results — those are exploratory and don't mean the agent thought any
|
|
13
|
+
* specific returned id was the right answer. get_session and cite_session,
|
|
14
|
+
* by contrast, are deterministic single-id signals: "I want this session
|
|
15
|
+
* specifically" or "I am citing this exact session."
|
|
16
|
+
*
|
|
17
|
+
* Aggregated miss data shows where the hook's selection gate is wrong —
|
|
18
|
+
* sessions that were relevant but didn't score high enough to fire. Spec E
|
|
19
|
+
* v1 is passive: just log, surface via the `nlm misses` CLI for review.
|
|
20
|
+
* Future specs may consume this data to retrain reranking or trigger
|
|
21
|
+
* targeted reclassification.
|
|
22
|
+
*/
|
|
23
|
+
import type { ToolUseBlock } from "./transcript.js";
|
|
24
|
+
export interface DetectedMiss {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly kind: "get_session" | "cite_session";
|
|
27
|
+
}
|
|
28
|
+
export interface MissDetectInput {
|
|
29
|
+
readonly toolUses: ReadonlyArray<ToolUseBlock>;
|
|
30
|
+
readonly surfacedIds: Iterable<string>;
|
|
31
|
+
}
|
|
32
|
+
export declare function detectMisses(input: MissDetectInput): DetectedMiss[];
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect "recall misses" — sessions the agent explicitly fetched or cited
|
|
3
|
+
* in its response but which the hook's pre-prompt recall never surfaced
|
|
4
|
+
* in this conversation.
|
|
5
|
+
*
|
|
6
|
+
* A miss is the inverse signal of a citation:
|
|
7
|
+
* - Citation = surfaced id appeared in the agent's tool calls / prose
|
|
8
|
+
* - Miss = id appeared in a get_session(id) or cite_session(id) call
|
|
9
|
+
* but was NOT surfaced
|
|
10
|
+
*
|
|
11
|
+
* Only explicit-id tool_use calls count. We don't scan recall_sessions
|
|
12
|
+
* results — those are exploratory and don't mean the agent thought any
|
|
13
|
+
* specific returned id was the right answer. get_session and cite_session,
|
|
14
|
+
* by contrast, are deterministic single-id signals: "I want this session
|
|
15
|
+
* specifically" or "I am citing this exact session."
|
|
16
|
+
*
|
|
17
|
+
* Aggregated miss data shows where the hook's selection gate is wrong —
|
|
18
|
+
* sessions that were relevant but didn't score high enough to fire. Spec E
|
|
19
|
+
* v1 is passive: just log, surface via the `nlm misses` CLI for review.
|
|
20
|
+
* Future specs may consume this data to retrain reranking or trigger
|
|
21
|
+
* targeted reclassification.
|
|
22
|
+
*/
|
|
23
|
+
const MIN_ID_LEN = 6;
|
|
24
|
+
export function detectMisses(input) {
|
|
25
|
+
const surfaced = new Set();
|
|
26
|
+
for (const id of input.surfacedIds) {
|
|
27
|
+
if (id.length >= MIN_ID_LEN)
|
|
28
|
+
surfaced.add(id);
|
|
29
|
+
}
|
|
30
|
+
const seenMissed = new Set();
|
|
31
|
+
const misses = [];
|
|
32
|
+
for (const tu of input.toolUses) {
|
|
33
|
+
if (!isNlmTool(tu.name))
|
|
34
|
+
continue;
|
|
35
|
+
const kind = explicitIdKind(tu.name);
|
|
36
|
+
if (!kind)
|
|
37
|
+
continue;
|
|
38
|
+
const id = extractId(tu.input);
|
|
39
|
+
if (!id || id.length < MIN_ID_LEN)
|
|
40
|
+
continue;
|
|
41
|
+
if (surfaced.has(id))
|
|
42
|
+
continue;
|
|
43
|
+
if (seenMissed.has(id))
|
|
44
|
+
continue;
|
|
45
|
+
seenMissed.add(id);
|
|
46
|
+
misses.push({ id, kind });
|
|
47
|
+
}
|
|
48
|
+
return misses;
|
|
49
|
+
}
|
|
50
|
+
function isNlmTool(name) {
|
|
51
|
+
return /^mcp__[^_]*nlm[^_]*__/.test(name);
|
|
52
|
+
}
|
|
53
|
+
function explicitIdKind(name) {
|
|
54
|
+
if (name.endsWith("__get_session"))
|
|
55
|
+
return "get_session";
|
|
56
|
+
if (name.endsWith("__cite_session"))
|
|
57
|
+
return "cite_session";
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
function extractId(input) {
|
|
61
|
+
if (input === null || typeof input !== "object")
|
|
62
|
+
return null;
|
|
63
|
+
const obj = input;
|
|
64
|
+
const candidate = obj["id"];
|
|
65
|
+
return typeof candidate === "string" ? candidate : null;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=miss-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miss-detect.js","sourceRoot":"","sources":["../../../src/core/hook/miss-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAcH,MAAM,UAAU,GAAG,CAAC,CAAC;AAErB,MAAM,UAAU,YAAY,CAAC,KAAsB;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,MAAM,IAAI,UAAU;YAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,SAAS;QAClC,MAAM,IAAI,GAAG,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,UAAU;YAAE,SAAS;QAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAC/B,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QACjC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,aAAa,CAAC;IACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,cAAc,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,CAAC"}
|