nlm-memory 0.5.21 → 0.6.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 +129 -19
- package/dist/cli/classify-parity.js +1 -1
- package/dist/cli/classify-parity.js.map +1 -1
- package/dist/cli/nlm.js +152 -12
- package/dist/cli/nlm.js.map +1 -1
- 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/adapters/pi.js +13 -3
- package/dist/core/adapters/pi.js.map +1 -1
- package/dist/core/classifier/prompt.d.ts +1 -1
- package/dist/core/classifier/prompt.js +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/hook/pointer-block.d.ts +12 -1
- package/dist/core/hook/pointer-block.js +25 -8
- package/dist/core/hook/pointer-block.js.map +1 -1
- package/dist/core/providers/provider-registry.js +1 -1
- package/dist/core/providers/provider-registry.js.map +1 -1
- 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/recall-service.d.ts +9 -0
- package/dist/core/recall/recall-service.js +81 -18
- package/dist/core/recall/recall-service.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/recall-facts/fact-recall-service.d.ts +11 -0
- package/dist/core/recall-facts/fact-recall-service.js +69 -4
- package/dist/core/recall-facts/fact-recall-service.js.map +1 -1
- package/dist/core/scheduler/scheduler.d.ts +7 -0
- package/dist/core/scheduler/scheduler.js +26 -0
- package/dist/core/scheduler/scheduler.js.map +1 -1
- package/dist/core/signals/aggregate.d.ts +21 -0
- package/dist/core/signals/aggregate.js +34 -0
- package/dist/core/signals/aggregate.js.map +1 -0
- package/dist/core/signals/failure-mode-recall.d.ts +18 -0
- package/dist/core/signals/failure-mode-recall.js +28 -0
- package/dist/core/signals/failure-mode-recall.js.map +1 -0
- package/dist/core/signals/ingest-signal.d.ts +19 -0
- package/dist/core/signals/ingest-signal.js +63 -0
- package/dist/core/signals/ingest-signal.js.map +1 -0
- package/dist/core/signals/install-scope.d.ts +8 -0
- package/dist/core/signals/install-scope.js +41 -0
- package/dist/core/signals/install-scope.js.map +1 -0
- package/dist/core/signals/recommend.d.ts +13 -0
- package/dist/core/signals/recommend.js +24 -0
- package/dist/core/signals/recommend.js.map +1 -0
- package/dist/core/storage/pg-fact-store.d.ts +5 -0
- package/dist/core/storage/pg-fact-store.js +29 -0
- package/dist/core/storage/pg-fact-store.js.map +1 -1
- 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/pg-signal-store.d.ts +16 -0
- package/dist/core/storage/pg-signal-store.js +100 -0
- package/dist/core/storage/pg-signal-store.js.map +1 -0
- package/dist/core/storage/pg-storage.d.ts +2 -0
- package/dist/core/storage/pg-storage.js +3 -0
- package/dist/core/storage/pg-storage.js.map +1 -1
- package/dist/core/storage/pg-tx-context.d.ts +5 -0
- package/dist/core/storage/pg-tx-context.js +3 -0
- package/dist/core/storage/pg-tx-context.js.map +1 -1
- package/dist/core/storage/sqlite-fact-store.d.ts +5 -0
- package/dist/core/storage/sqlite-fact-store.js +30 -0
- package/dist/core/storage/sqlite-fact-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/core/storage/sqlite-signal-store.d.ts +20 -0
- package/dist/core/storage/sqlite-signal-store.js +112 -0
- package/dist/core/storage/sqlite-signal-store.js.map +1 -0
- package/dist/core/storage/sqlite-storage.d.ts +2 -0
- package/dist/core/storage/sqlite-storage.js +6 -2
- package/dist/core/storage/sqlite-storage.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.d.ts +10 -1
- package/dist/hook/prompt-recall-hook.js +11 -5
- package/dist/hook/prompt-recall-hook.js.map +1 -1
- package/dist/hook/recall-over-http.d.ts +11 -1
- package/dist/hook/recall-over-http.js +21 -6
- package/dist/hook/recall-over-http.js.map +1 -1
- package/dist/hook/session-start-hook.d.ts +2 -0
- package/dist/hook/session-start-hook.js +36 -3
- package/dist/hook/session-start-hook.js.map +1 -1
- package/dist/hook/stop-hook.js +16 -0
- package/dist/hook/stop-hook.js.map +1 -1
- package/dist/http/app.d.ts +9 -0
- package/dist/http/app.js +125 -10
- package/dist/http/app.js.map +1 -1
- package/dist/install/codex.d.ts +1 -1
- package/dist/install/codex.js +4 -4
- package/dist/install/codex.js.map +1 -1
- package/dist/install/ollama.d.ts +10 -0
- package/dist/install/ollama.js +19 -3
- package/dist/install/ollama.js.map +1 -1
- package/dist/install/pi.d.ts +1 -1
- package/dist/install/pi.js +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/install/setup.js +63 -10
- package/dist/install/setup.js.map +1 -1
- package/dist/llm/classifier-box.d.ts +2 -1
- package/dist/llm/classifier-box.js +3 -0
- package/dist/llm/classifier-box.js.map +1 -1
- package/dist/llm/deepseek-client.d.ts +5 -2
- package/dist/llm/deepseek-client.js +51 -1
- package/dist/llm/deepseek-client.js.map +1 -1
- package/dist/llm/ollama-client.d.ts +3 -2
- package/dist/llm/ollama-client.js +45 -2
- package/dist/llm/ollama-client.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +23 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/ports/fact-store.d.ts +0 -0
- package/dist/ports/fact-store.js +0 -0
- package/dist/ports/fact-store.js.map +1 -1
- package/dist/ports/llm-client.d.ts +24 -0
- package/dist/ports/signal-store.d.ts +30 -0
- package/dist/ports/signal-store.js +9 -0
- package/dist/ports/signal-store.js.map +1 -0
- package/dist/ports/storage.d.ts +2 -0
- package/dist/ports/transcript-adapter.d.ts +6 -0
- package/dist/shared/types.d.ts +76 -0
- package/dist/ui/assets/index-CgHq6xeZ.css +1 -0
- package/dist/ui/assets/index-DLDd-OM_.js +69 -0
- package/dist/ui/index.html +2 -2
- package/nlm/README.md +1 -1
- package/nlm/index.js +46 -21
- package/package.json +7 -5
- package/plugin/.codex-plugin/plugin.json +2 -2
- package/plugin/README.md +3 -3
- package/plugin/scripts/prompt-recall-hook.mjs +45 -20
- package/plugin/scripts/stop-hook.mjs +80 -6
- 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
|
@@ -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"}
|
|
@@ -5,10 +5,21 @@
|
|
|
5
5
|
* cross-runtime distribution surface for teaching the tool inventory —
|
|
6
6
|
* fresh-install users never edit a prompt or settings file, so anything
|
|
7
7
|
* we want the agent to know about the tool surface ships here.
|
|
8
|
+
*
|
|
9
|
+
* Spec G.2: when `facts` is provided, a "Known facts" section is inserted
|
|
10
|
+
* between the session list and the tool footer. Each fact renders as
|
|
11
|
+
* `<subject> <predicate>: <value> [N sessions]` so the agent has structured
|
|
12
|
+
* context alongside the session pointers.
|
|
8
13
|
*/
|
|
9
14
|
export interface PointerHit {
|
|
10
15
|
readonly id: string;
|
|
11
16
|
readonly label: string;
|
|
12
17
|
readonly startedAt: string;
|
|
13
18
|
}
|
|
14
|
-
export
|
|
19
|
+
export interface PointerFact {
|
|
20
|
+
readonly subject: string;
|
|
21
|
+
readonly predicate: string;
|
|
22
|
+
readonly value: string;
|
|
23
|
+
readonly corroborationCount: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function formatPointerBlock(hits: ReadonlyArray<PointerHit>, facts?: ReadonlyArray<PointerFact>): string;
|
|
@@ -5,15 +5,32 @@
|
|
|
5
5
|
* cross-runtime distribution surface for teaching the tool inventory —
|
|
6
6
|
* fresh-install users never edit a prompt or settings file, so anything
|
|
7
7
|
* we want the agent to know about the tool surface ships here.
|
|
8
|
+
*
|
|
9
|
+
* Spec G.2: when `facts` is provided, a "Known facts" section is inserted
|
|
10
|
+
* between the session list and the tool footer. Each fact renders as
|
|
11
|
+
* `<subject> <predicate>: <value> [N sessions]` so the agent has structured
|
|
12
|
+
* context alongside the session pointers.
|
|
8
13
|
*/
|
|
9
|
-
export function formatPointerBlock(hits) {
|
|
10
|
-
if (hits.length === 0)
|
|
14
|
+
export function formatPointerBlock(hits, facts = []) {
|
|
15
|
+
if (hits.length === 0 && facts.length === 0)
|
|
11
16
|
return "";
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
"## Possibly-relevant prior sessions (nlm-memory)"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
const out = [];
|
|
18
|
+
if (hits.length > 0) {
|
|
19
|
+
out.push("## Possibly-relevant prior sessions (nlm-memory)");
|
|
20
|
+
for (const h of hits) {
|
|
21
|
+
out.push(`- ${h.id} · ${h.label} (${h.startedAt.slice(0, 10)})`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (facts.length > 0) {
|
|
25
|
+
if (out.length > 0)
|
|
26
|
+
out.push("");
|
|
27
|
+
out.push("## Known facts about top entities");
|
|
28
|
+
for (const f of facts) {
|
|
29
|
+
const tag = f.corroborationCount > 1 ? ` [${f.corroborationCount} sessions]` : "";
|
|
30
|
+
out.push(`- ${f.subject} ${f.predicate}: ${f.value}${tag}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
out.push("NLM tools: recall_sessions (search), get_session (full transcript), recall_facts (prior decisions), get_fact_history (how a decision evolved).");
|
|
34
|
+
return out.join("\n");
|
|
18
35
|
}
|
|
19
36
|
//# sourceMappingURL=pointer-block.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-block.js","sourceRoot":"","sources":["../../../src/core/hook/pointer-block.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pointer-block.js","sourceRoot":"","sources":["../../../src/core/hook/pointer-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,UAAU,kBAAkB,CAChC,IAA+B,EAC/B,QAAoC,EAAE;IAEtC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC7D,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CACN,gJAAgJ,CACjJ,CAAC;IACF,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -36,7 +36,7 @@ const DEFAULT_BASE_URLS = {
|
|
|
36
36
|
};
|
|
37
37
|
const DEFAULT_MODELS = {
|
|
38
38
|
deepseek: "deepseek-v4-flash",
|
|
39
|
-
ollama: "
|
|
39
|
+
ollama: "qwen3:4b-instruct-2507-q4_K_M",
|
|
40
40
|
openai: "gpt-4o-mini",
|
|
41
41
|
anthropic: "claude-haiku-4-5-20251001",
|
|
42
42
|
openrouter: "anthropic/claude-haiku-4-5",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../../src/core/providers/provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuDH,SAAS,SAAS,CAAC,CAAgB,EAAE,aAAsB;IACzD,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAoB;QAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,QAAQ;QACnB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QACxC,SAAS,EAAE,CAAC,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACrD,YAAY,EAAE,CAAC,CAAC,aAAa;QAC7B,OAAO,EAAE,CAAC,CAAC,OAAO,KAAK,CAAC;QACxB,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,SAAS,EAAE,CAAC,CAAC,UAAU;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAwC;IAC7D,QAAQ,EAAE,0BAA0B;IACpC,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,2BAA2B;IACnC,SAAS,EAAE,2BAA2B;IACtC,UAAU,EAAE,8BAA8B;IAC1C,mBAAmB,EAAE,IAAI;CAC1B,CAAC;AAEF,MAAM,cAAc,GAAwC;IAC1D,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../../src/core/providers/provider-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append-only JSONL miss log. One line per session the agent explicitly
|
|
3
|
+
* fetched or cited but which the hook's pre-prompt recall never surfaced
|
|
4
|
+
* in this conversation. Source: Stop hook's miss-detection pass (spec E).
|
|
5
|
+
*
|
|
6
|
+
* Default path ~/.nlm/miss-log.jsonl, overridable via NLM_MISS_LOG.
|
|
7
|
+
* Disable emission entirely with NLM_MISS_LOG_ENABLED=0 — used by
|
|
8
|
+
* deployments that want recall but not telemetry. Telemetry path — never
|
|
9
|
+
* raises; failure to write is silently swallowed.
|
|
10
|
+
*/
|
|
11
|
+
export type MissKind = "get_session" | "cite_session";
|
|
12
|
+
export interface MissEntry {
|
|
13
|
+
readonly conversationId: string;
|
|
14
|
+
readonly missedId: string;
|
|
15
|
+
readonly kind: MissKind;
|
|
16
|
+
/**
|
|
17
|
+
* Count of how many sessions WERE surfaced this conversation. Helps
|
|
18
|
+
* distinguish "hook never fired" (surfacedCount=0) from "hook fired but
|
|
19
|
+
* missed this one" (surfacedCount>0). Aggregation can filter accordingly.
|
|
20
|
+
*/
|
|
21
|
+
readonly surfacedCount: number;
|
|
22
|
+
}
|
|
23
|
+
export interface MissStats {
|
|
24
|
+
readonly days: number;
|
|
25
|
+
readonly total: number;
|
|
26
|
+
readonly distinctIds: number;
|
|
27
|
+
/** Top missed sessions ordered by miss count, with diagnostic context. */
|
|
28
|
+
readonly topIds: ReadonlyArray<{
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly count: number;
|
|
31
|
+
readonly conversations: number;
|
|
32
|
+
}>;
|
|
33
|
+
readonly logPresent: boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare function appendMiss(entry: MissEntry, logPath?: string): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Append multiple misses in one call. Each gets the same timestamp.
|
|
38
|
+
* Quieter than appendMiss × N when several misses fire in a single Stop
|
|
39
|
+
* hook invocation (which is the common case).
|
|
40
|
+
*/
|
|
41
|
+
export declare function appendMisses(entries: ReadonlyArray<MissEntry>, logPath?: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Read the miss log and aggregate by missedId. Used by the `nlm misses`
|
|
44
|
+
* CLI. Days filter applied at parse time. Bad lines (non-JSON or missing
|
|
45
|
+
* fields) are skipped silently.
|
|
46
|
+
*/
|
|
47
|
+
export declare function missStats(days: number, logPath?: string): Promise<MissStats>;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Append-only JSONL miss log. One line per session the agent explicitly
|
|
3
|
+
* fetched or cited but which the hook's pre-prompt recall never surfaced
|
|
4
|
+
* in this conversation. Source: Stop hook's miss-detection pass (spec E).
|
|
5
|
+
*
|
|
6
|
+
* Default path ~/.nlm/miss-log.jsonl, overridable via NLM_MISS_LOG.
|
|
7
|
+
* Disable emission entirely with NLM_MISS_LOG_ENABLED=0 — used by
|
|
8
|
+
* deployments that want recall but not telemetry. Telemetry path — never
|
|
9
|
+
* raises; failure to write is silently swallowed.
|
|
10
|
+
*/
|
|
11
|
+
import { appendFile, mkdir, readFile, stat } from "node:fs/promises";
|
|
12
|
+
import { dirname, join } from "node:path";
|
|
13
|
+
import { homedir } from "node:os";
|
|
14
|
+
function defaultLogPath() {
|
|
15
|
+
return process.env["NLM_MISS_LOG"] ?? join(homedir(), ".nlm", "miss-log.jsonl");
|
|
16
|
+
}
|
|
17
|
+
function isEnabled() {
|
|
18
|
+
const raw = process.env["NLM_MISS_LOG_ENABLED"];
|
|
19
|
+
if (raw === undefined)
|
|
20
|
+
return true;
|
|
21
|
+
return raw !== "0" && raw.toLowerCase() !== "false";
|
|
22
|
+
}
|
|
23
|
+
export async function appendMiss(entry, logPath) {
|
|
24
|
+
if (!isEnabled())
|
|
25
|
+
return;
|
|
26
|
+
const path = logPath ?? defaultLogPath();
|
|
27
|
+
try {
|
|
28
|
+
await mkdir(dirname(path), { recursive: true });
|
|
29
|
+
const line = `${JSON.stringify({
|
|
30
|
+
ts: new Date().toISOString(),
|
|
31
|
+
...entry,
|
|
32
|
+
})}\n`;
|
|
33
|
+
await appendFile(path, line, "utf8");
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Telemetry must never break recall.
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Append multiple misses in one call. Each gets the same timestamp.
|
|
41
|
+
* Quieter than appendMiss × N when several misses fire in a single Stop
|
|
42
|
+
* hook invocation (which is the common case).
|
|
43
|
+
*/
|
|
44
|
+
export async function appendMisses(entries, logPath) {
|
|
45
|
+
if (!isEnabled())
|
|
46
|
+
return;
|
|
47
|
+
if (entries.length === 0)
|
|
48
|
+
return;
|
|
49
|
+
const path = logPath ?? defaultLogPath();
|
|
50
|
+
try {
|
|
51
|
+
await mkdir(dirname(path), { recursive: true });
|
|
52
|
+
const ts = new Date().toISOString();
|
|
53
|
+
const block = entries.map((e) => `${JSON.stringify({ ts, ...e })}\n`).join("");
|
|
54
|
+
await appendFile(path, block, "utf8");
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Swallow.
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Read the miss log and aggregate by missedId. Used by the `nlm misses`
|
|
62
|
+
* CLI. Days filter applied at parse time. Bad lines (non-JSON or missing
|
|
63
|
+
* fields) are skipped silently.
|
|
64
|
+
*/
|
|
65
|
+
export async function missStats(days, logPath) {
|
|
66
|
+
const path = logPath ?? defaultLogPath();
|
|
67
|
+
try {
|
|
68
|
+
await stat(path);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return { days, total: 0, distinctIds: 0, topIds: [], logPresent: false };
|
|
72
|
+
}
|
|
73
|
+
const raw = await readFile(path, "utf8");
|
|
74
|
+
const cutoff = Date.now() - days * 86_400_000;
|
|
75
|
+
const counts = new Map();
|
|
76
|
+
let total = 0;
|
|
77
|
+
for (const line of raw.split("\n")) {
|
|
78
|
+
if (!line)
|
|
79
|
+
continue;
|
|
80
|
+
let parsed;
|
|
81
|
+
try {
|
|
82
|
+
parsed = JSON.parse(line);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (!parsed.ts || !parsed.missedId || !parsed.conversationId)
|
|
88
|
+
continue;
|
|
89
|
+
if (Date.parse(parsed.ts) < cutoff)
|
|
90
|
+
continue;
|
|
91
|
+
total += 1;
|
|
92
|
+
let bucket = counts.get(parsed.missedId);
|
|
93
|
+
if (!bucket) {
|
|
94
|
+
bucket = { count: 0, convs: new Set() };
|
|
95
|
+
counts.set(parsed.missedId, bucket);
|
|
96
|
+
}
|
|
97
|
+
bucket.count += 1;
|
|
98
|
+
bucket.convs.add(parsed.conversationId);
|
|
99
|
+
}
|
|
100
|
+
const topIds = [...counts.entries()]
|
|
101
|
+
.map(([id, b]) => ({ id, count: b.count, conversations: b.convs.size }))
|
|
102
|
+
.sort((a, b) => b.count - a.count)
|
|
103
|
+
.slice(0, 20);
|
|
104
|
+
return {
|
|
105
|
+
days,
|
|
106
|
+
total,
|
|
107
|
+
distinctIds: counts.size,
|
|
108
|
+
topIds,
|
|
109
|
+
logPresent: true,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=miss-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"miss-log.js","sourceRoot":"","sources":["../../../src/core/recall/miss-log.ts"],"names":[],"mappings":"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"}
|