agent-recall-core 3.4.21 → 3.4.23
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/dist/helpers/handoff.d.ts +26 -0
- package/dist/helpers/handoff.d.ts.map +1 -0
- package/dist/helpers/handoff.js +225 -0
- package/dist/helpers/handoff.js.map +1 -0
- package/dist/helpers/journal-files.d.ts +23 -0
- package/dist/helpers/journal-files.d.ts.map +1 -1
- package/dist/helpers/journal-files.js +99 -0
- package/dist/helpers/journal-files.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/palace/index-manager.d.ts.map +1 -1
- package/dist/palace/index-manager.js +33 -28
- package/dist/palace/index-manager.js.map +1 -1
- package/dist/palace/insights-index.d.ts +31 -1
- package/dist/palace/insights-index.d.ts.map +1 -1
- package/dist/palace/insights-index.js +100 -30
- package/dist/palace/insights-index.js.map +1 -1
- package/dist/palace/rooms.d.ts +21 -3
- package/dist/palace/rooms.d.ts.map +1 -1
- package/dist/palace/rooms.js +74 -10
- package/dist/palace/rooms.js.map +1 -1
- package/dist/storage/corrections.d.ts +51 -1
- package/dist/storage/corrections.d.ts.map +1 -1
- package/dist/storage/corrections.js +111 -0
- package/dist/storage/corrections.js.map +1 -1
- package/dist/tools-logic/check.d.ts +6 -0
- package/dist/tools-logic/check.d.ts.map +1 -1
- package/dist/tools-logic/check.js +10 -1
- package/dist/tools-logic/check.js.map +1 -1
- package/dist/tools-logic/dashboard-export.d.ts +6 -0
- package/dist/tools-logic/dashboard-export.d.ts.map +1 -1
- package/dist/tools-logic/dashboard-export.js +3 -0
- package/dist/tools-logic/dashboard-export.js.map +1 -1
- package/dist/tools-logic/palace-write.d.ts.map +1 -1
- package/dist/tools-logic/palace-write.js +9 -2
- package/dist/tools-logic/palace-write.js.map +1 -1
- package/dist/tools-logic/project-status.d.ts.map +1 -1
- package/dist/tools-logic/project-status.js +30 -0
- package/dist/tools-logic/project-status.js.map +1 -1
- package/dist/tools-logic/recall-backend.d.ts +7 -2
- package/dist/tools-logic/recall-backend.d.ts.map +1 -1
- package/dist/tools-logic/recall-backend.js +36 -2
- package/dist/tools-logic/recall-backend.js.map +1 -1
- package/dist/tools-logic/session-end.d.ts +6 -0
- package/dist/tools-logic/session-end.d.ts.map +1 -1
- package/dist/tools-logic/session-end.js +88 -2
- package/dist/tools-logic/session-end.js.map +1 -1
- package/dist/tools-logic/session-start.d.ts +21 -0
- package/dist/tools-logic/session-start.d.ts.map +1 -1
- package/dist/tools-logic/session-start.js +151 -15
- package/dist/tools-logic/session-start.js.map +1 -1
- package/dist/tools-logic/smart-recall.d.ts +6 -0
- package/dist/tools-logic/smart-recall.d.ts.map +1 -1
- package/dist/tools-logic/smart-recall.js +51 -10
- package/dist/tools-logic/smart-recall.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/vector/embedding.d.ts +1 -1
- package/dist/vector/embedding.d.ts.map +1 -1
- package/dist/vector/embedding.js +5 -2
- package/dist/vector/embedding.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall-backend.d.ts","sourceRoot":"","sources":["../../src/tools-logic/recall-backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI/D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACpC,SAAS,IAAI,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,SAAS,IAAI,OAAO;IAId,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAOpC;AASD
|
|
1
|
+
{"version":3,"file":"recall-backend.d.ts","sourceRoot":"","sources":["../../src/tools-logic/recall-backend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI/D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACpC,SAAS,IAAI,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,SAAS,IAAI,OAAO;IAId,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAOpC;AAgBD,gFAAgF;AAChF,wBAAgB,mBAAmB,IAAI,OAAO,CAW7C;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AASD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAmC/D;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,IAAI,CAIzC"}
|
|
@@ -18,17 +18,49 @@ export class LocalRecallBackend {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
// ---------------------------------------------------------------------------
|
|
21
|
+
// Circuit breaker
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
/**
|
|
24
|
+
* Module-level consecutive failure counter for the remote (Supabase) backend.
|
|
25
|
+
* After BREAKER_THRESHOLD failures in a row the breaker trips and
|
|
26
|
+
* getRecallBackend() returns the local backend for the rest of the process.
|
|
27
|
+
* Logged once to stderr so operators can see it; reset with resetRecallBackend().
|
|
28
|
+
*/
|
|
29
|
+
const BREAKER_THRESHOLD = 2;
|
|
30
|
+
let _consecutiveRemoteFailures = 0;
|
|
31
|
+
let _breakerTripped = false;
|
|
32
|
+
/** Record a remote search failure. Returns true if the breaker just tripped. */
|
|
33
|
+
export function recordRemoteFailure() {
|
|
34
|
+
_consecutiveRemoteFailures += 1;
|
|
35
|
+
if (!_breakerTripped && _consecutiveRemoteFailures >= BREAKER_THRESHOLD) {
|
|
36
|
+
_breakerTripped = true;
|
|
37
|
+
process.stderr.write("[agent-recall] recall circuit breaker tripped: remote backend failed " +
|
|
38
|
+
`${_consecutiveRemoteFailures}x in a row — using local backend for this process\n`);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
/** Record a successful remote search (resets the consecutive counter). */
|
|
44
|
+
export function recordRemoteSuccess() {
|
|
45
|
+
_consecutiveRemoteFailures = 0;
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
21
48
|
// Backend factory
|
|
22
49
|
// ---------------------------------------------------------------------------
|
|
23
50
|
/** Cached backend instance. Reset via resetRecallBackend() in tests. */
|
|
24
51
|
let _cachedBackend = null;
|
|
25
52
|
/**
|
|
26
53
|
* Get the configured RecallBackend.
|
|
27
|
-
* Returns SupabaseRecallBackend if configured and
|
|
54
|
+
* Returns SupabaseRecallBackend if configured, available, and circuit not tripped.
|
|
55
|
+
* Falls back to LocalVectorRecallBackend or LocalRecallBackend otherwise.
|
|
28
56
|
* The function is async because the SupabaseRecallBackend module is loaded
|
|
29
57
|
* via dynamic import (avoids pulling Supabase client when not configured).
|
|
30
58
|
*/
|
|
31
59
|
export async function getRecallBackend() {
|
|
60
|
+
// If the breaker is tripped, always return local immediately.
|
|
61
|
+
if (_breakerTripped) {
|
|
62
|
+
return new LocalRecallBackend();
|
|
63
|
+
}
|
|
32
64
|
if (_cachedBackend)
|
|
33
65
|
return _cachedBackend;
|
|
34
66
|
try {
|
|
@@ -58,8 +90,10 @@ export async function getRecallBackend() {
|
|
|
58
90
|
_cachedBackend = new LocalRecallBackend();
|
|
59
91
|
return _cachedBackend;
|
|
60
92
|
}
|
|
61
|
-
/** Reset cached backend instance (for testing). */
|
|
93
|
+
/** Reset cached backend instance and circuit breaker (for testing). */
|
|
62
94
|
export function resetRecallBackend() {
|
|
63
95
|
_cachedBackend = null;
|
|
96
|
+
_consecutiveRemoteFailures = 0;
|
|
97
|
+
_breakerTripped = false;
|
|
64
98
|
}
|
|
65
99
|
//# sourceMappingURL=recall-backend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall-backend.js","sourceRoot":"","sources":["../../src/tools-logic/recall-backend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAgB7E;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAC7B,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAA2B,EAC3B,KAAa;QAEb,8CAA8C;QAC9C,2DAA2D;QAC3D,8DAA8D;QAC9D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAQ,CAAC;QACrD,OAAO,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAqC,CAAC;IAC1F,CAAC;CACF;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,wEAAwE;AACxE,IAAI,cAAc,GAAyB,IAAI,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"recall-backend.js","sourceRoot":"","sources":["../../src/tools-logic/recall-backend.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAgB7E;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAC7B,SAAS;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAa,EACb,OAA2B,EAC3B,KAAa;QAEb,8CAA8C;QAC9C,2DAA2D;QAC3D,8DAA8D;QAC9D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAQ,CAAC;QACrD,OAAO,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAqC,CAAC;IAC1F,CAAC;CACF;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,IAAI,0BAA0B,GAAG,CAAC,CAAC;AACnC,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,gFAAgF;AAChF,MAAM,UAAU,mBAAmB;IACjC,0BAA0B,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,eAAe,IAAI,0BAA0B,IAAI,iBAAiB,EAAE,CAAC;QACxE,eAAe,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;YACvE,GAAG,0BAA0B,qDAAqD,CACnF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB;IACjC,0BAA0B,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,wEAAwE;AACxE,IAAI,cAAc,GAAyB,IAAI,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,8DAA8D;IAC9D,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,IAAI,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,wEAAwE;YACxE,wEAAwE;YACxE,iDAAiD;YACjD,8DAA8D;YAC9D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,+BAAsC,CAAQ,CAAC;YACxE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAkB,CAAC;YACvE,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;gBACxB,cAAc,GAAG,OAAO,CAAC;gBACzB,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;IAED,6EAA6E;IAC7E,MAAM,aAAa,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACrD,IAAI,aAAa,CAAC,SAAS,EAAE,EAAE,CAAC;QAC9B,cAAc,GAAG,aAAa,CAAC;QAC/B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC1C,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB;IAChC,cAAc,GAAG,IAAI,CAAC;IACtB,0BAA0B,GAAG,CAAC,CAAC;IAC/B,eAAe,GAAG,KAAK,CAAC;AAC1B,CAAC"}
|
|
@@ -64,6 +64,10 @@ export interface SessionEndResult {
|
|
|
64
64
|
journal_written: boolean;
|
|
65
65
|
journal_write_error?: string;
|
|
66
66
|
insights_processed: number;
|
|
67
|
+
/** New insights added to the index (no prior match found). */
|
|
68
|
+
insights_added: number;
|
|
69
|
+
/** Existing insights confirmed (near-duplicate title matched, count++). */
|
|
70
|
+
insights_confirmed: number;
|
|
67
71
|
awareness_updated: boolean;
|
|
68
72
|
awareness_error?: string;
|
|
69
73
|
palace_consolidated: boolean;
|
|
@@ -73,6 +77,8 @@ export interface SessionEndResult {
|
|
|
73
77
|
quality_warnings?: InsightQualityWarning[];
|
|
74
78
|
pipeline_closed?: PipelinePhaseAction;
|
|
75
79
|
pipeline_opened?: PipelinePhaseAction;
|
|
80
|
+
/** Path to the handoff artifact written at session_end. Present on success. */
|
|
81
|
+
handoff_path?: string;
|
|
76
82
|
}
|
|
77
83
|
export declare function checkInsightQuality(insights: SessionEndInput["insights"]): InsightQualityWarning[];
|
|
78
84
|
export declare function sessionEnd(input: SessionEndInput): Promise<SessionEndResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,10 @@ import * as path from "node:path";
|
|
|
8
8
|
import { journalWrite } from "./journal-write.js";
|
|
9
9
|
import { awarenessUpdate } from "./awareness-update.js";
|
|
10
10
|
import { promoteConfirmedInsights } from "./insight-promotion.js";
|
|
11
|
+
import { readInsightsIndex, findSimilarInsight } from "../palace/insights-index.js";
|
|
11
12
|
import { consolidateJournalToPalace } from "../palace/consolidate.js";
|
|
12
13
|
import { resolveProject } from "../storage/project.js";
|
|
14
|
+
import { readCorrections, recordOutcome } from "../storage/corrections.js";
|
|
13
15
|
import { ensurePalaceInitialized, listRooms } from "../palace/rooms.js";
|
|
14
16
|
import { journalDir } from "../storage/paths.js";
|
|
15
17
|
import { readAwarenessState } from "../palace/awareness.js";
|
|
@@ -19,6 +21,7 @@ import { extractKeywords } from "../helpers/auto-name.js";
|
|
|
19
21
|
import { autoClassifySig, autoClassifyTheme } from "../helpers/journal-sig-theme.js";
|
|
20
22
|
import { pipelineOpen } from "./pipeline-open.js";
|
|
21
23
|
import { pipelineClose } from "./pipeline-close.js";
|
|
24
|
+
import { writeHandoff } from "../helpers/handoff.js";
|
|
22
25
|
export function checkInsightQuality(insights) {
|
|
23
26
|
if (!insights || insights.length === 0)
|
|
24
27
|
return [];
|
|
@@ -59,6 +62,8 @@ export async function sessionEnd(input) {
|
|
|
59
62
|
success: false,
|
|
60
63
|
journal_written: false,
|
|
61
64
|
insights_processed: 0,
|
|
65
|
+
insights_added: 0,
|
|
66
|
+
insights_confirmed: 0,
|
|
62
67
|
awareness_updated: false,
|
|
63
68
|
palace_consolidated: false,
|
|
64
69
|
card: "Summary too short (minimum 10 characters). Nothing saved.",
|
|
@@ -69,6 +74,8 @@ export async function sessionEnd(input) {
|
|
|
69
74
|
let journalWritten = false;
|
|
70
75
|
let journalWriteError;
|
|
71
76
|
let insightsProcessed = 0;
|
|
77
|
+
let insightsAdded = 0;
|
|
78
|
+
let insightsConfirmed = 0;
|
|
72
79
|
let awarenessUpdated = false;
|
|
73
80
|
let awarenessError;
|
|
74
81
|
let palaceConsolidated = false;
|
|
@@ -108,9 +115,71 @@ export async function sessionEnd(input) {
|
|
|
108
115
|
catch (err) {
|
|
109
116
|
journalWriteError = err instanceof Error ? err.message : String(err);
|
|
110
117
|
}
|
|
111
|
-
//
|
|
118
|
+
// 1b. P0-B: auto-record heeded/recurred outcomes for corrections that were
|
|
119
|
+
// retrieved today (last_retrieved date matches today). This is a default-heeded
|
|
120
|
+
// heuristic with recurrence detection — coarse but closes the learning loop
|
|
121
|
+
// automatically without requiring the agent to remember to call recordOutcome.
|
|
122
|
+
//
|
|
123
|
+
// Heuristic v1: classify "recurred" only when the session summary contains
|
|
124
|
+
// ≥ 2 content words from the correction rule (length ≥ 4, lowercased) AND
|
|
125
|
+
// also contains a recurrence marker. Default to "heeded" when markers absent.
|
|
126
|
+
// Precision improves when check_action wiring lands in a future sprint.
|
|
127
|
+
//
|
|
128
|
+
// Fire-and-forget: outcome tracking must NEVER affect the session_end result.
|
|
129
|
+
if (journalWritten) {
|
|
130
|
+
try {
|
|
131
|
+
// Local-TZ date matching (see session-start.ts guard comment).
|
|
132
|
+
const todayStr = new Date().toLocaleDateString("sv");
|
|
133
|
+
const nowISO = new Date().toISOString();
|
|
134
|
+
const todays = readCorrections(slug).filter((c) => c.last_retrieved && new Date(c.last_retrieved).toLocaleDateString("sv") === todayStr && c.active !== false);
|
|
135
|
+
const recurrenceMarker = /\b(again|recurred|repeated|violat|broke the rule|same mistake)\b/i;
|
|
136
|
+
const summaryLower = input.summary.toLowerCase();
|
|
137
|
+
for (const c of todays) {
|
|
138
|
+
try {
|
|
139
|
+
// Extract content words (≥ 4 chars) from the rule text
|
|
140
|
+
const ruleWords = c.rule
|
|
141
|
+
.toLowerCase()
|
|
142
|
+
.split(/\W+/)
|
|
143
|
+
.filter((w) => w.length >= 4);
|
|
144
|
+
const matchCount = ruleWords.filter((w) => summaryLower.includes(w)).length;
|
|
145
|
+
const hasRecurrenceMarker = recurrenceMarker.test(input.summary);
|
|
146
|
+
const violated = matchCount >= 2 && hasRecurrenceMarker;
|
|
147
|
+
recordOutcome({
|
|
148
|
+
correction_id: c.id,
|
|
149
|
+
project: slug,
|
|
150
|
+
kind: violated ? "recurred" : "heeded",
|
|
151
|
+
at: nowISO,
|
|
152
|
+
evidence: violated
|
|
153
|
+
? "recurrence markers in session summary"
|
|
154
|
+
: "no recurrence evidence in session summary",
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// Per-correction errors are swallowed — don't abort the loop
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// Outcome tracking must NEVER break session_end — swallow all errors
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// 2. Update awareness with insights — confirm-first classification
|
|
167
|
+
// Pre-classify each insight against the current index BEFORE passing to
|
|
168
|
+
// awarenessUpdate. This ensures the count tallies are accurate even if
|
|
169
|
+
// awarenessUpdate itself also performs its own similarity check.
|
|
112
170
|
if (input.insights && input.insights.length > 0) {
|
|
113
171
|
try {
|
|
172
|
+
// Read the current index once for confirm-first classification
|
|
173
|
+
const currentIndex = readInsightsIndex();
|
|
174
|
+
for (const insight of input.insights) {
|
|
175
|
+
const match = findSimilarInsight(insight.title, currentIndex.insights);
|
|
176
|
+
if (match) {
|
|
177
|
+
insightsConfirmed++;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
insightsAdded++;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
114
183
|
const scopedTrajectory = input.trajectory
|
|
115
184
|
? `${slug}: ${input.trajectory}`
|
|
116
185
|
: undefined;
|
|
@@ -131,6 +200,9 @@ export async function sessionEnd(input) {
|
|
|
131
200
|
}
|
|
132
201
|
catch (err) {
|
|
133
202
|
awarenessError = err instanceof Error ? err.message : String(err);
|
|
203
|
+
// Reset tallies on error so they don't misreport
|
|
204
|
+
insightsAdded = 0;
|
|
205
|
+
insightsConfirmed = 0;
|
|
134
206
|
}
|
|
135
207
|
}
|
|
136
208
|
// 3. Consolidate journal to palace
|
|
@@ -221,7 +293,7 @@ export async function sessionEnd(input) {
|
|
|
221
293
|
` Journal ${jDir.replace(root, "~/.agent-recall")}/`,
|
|
222
294
|
` └─ ${date}.md ${journalWritten ? "[written]" : journalWriteError ? `[FAILED: ${journalWriteError}]` : "[skipped]"}`,
|
|
223
295
|
"",
|
|
224
|
-
` Awareness ${
|
|
296
|
+
` Awareness ${insightsAdded} added, ${insightsConfirmed} confirmed (${totalInsights} total)`,
|
|
225
297
|
...(awarenessError ? [` [WARN: awareness update failed: ${awarenessError}]`] : []),
|
|
226
298
|
...(palaceError ? [` [WARN: palace consolidation failed: ${palaceError}]`] : []),
|
|
227
299
|
"",
|
|
@@ -281,11 +353,24 @@ export async function sessionEnd(input) {
|
|
|
281
353
|
? { ok: true, order: r.order, phase: r.phase, file_path: r.file_path }
|
|
282
354
|
: { ok: false, error: r.error };
|
|
283
355
|
}
|
|
356
|
+
// WS-5: Auto-write cross-agent handoff artifact — fire-and-forget.
|
|
357
|
+
// Only fires when the journal was successfully written (meaningful session).
|
|
358
|
+
// Never affects result or throws to caller.
|
|
359
|
+
let handoffPath;
|
|
360
|
+
if (journalWritten) {
|
|
361
|
+
try {
|
|
362
|
+
const h = writeHandoff(slug);
|
|
363
|
+
handoffPath = h.path;
|
|
364
|
+
}
|
|
365
|
+
catch { /* swallow — handoff is best-effort */ }
|
|
366
|
+
}
|
|
284
367
|
return {
|
|
285
368
|
success: journalWritten || awarenessUpdated,
|
|
286
369
|
journal_written: journalWritten,
|
|
287
370
|
...(journalWriteError ? { journal_write_error: journalWriteError } : {}),
|
|
288
371
|
insights_processed: insightsProcessed,
|
|
372
|
+
insights_added: insightsAdded,
|
|
373
|
+
insights_confirmed: insightsConfirmed,
|
|
289
374
|
awareness_updated: awarenessUpdated,
|
|
290
375
|
...(awarenessError ? { awareness_error: awarenessError } : {}),
|
|
291
376
|
palace_consolidated: palaceConsolidated,
|
|
@@ -295,6 +380,7 @@ export async function sessionEnd(input) {
|
|
|
295
380
|
quality_warnings: qualityWarnings.length > 0 ? qualityWarnings : undefined,
|
|
296
381
|
...(pipelineClosed ? { pipeline_closed: pipelineClosed } : {}),
|
|
297
382
|
...(pipelineOpened ? { pipeline_opened: pipelineOpened } : {}),
|
|
383
|
+
...(handoffPath ? { handoff_path: handoffPath } : {}),
|
|
298
384
|
};
|
|
299
385
|
}
|
|
300
386
|
//# sourceMappingURL=session-end.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAkFrD,MAAM,UAAU,mBAAmB,CACjC,QAAqC;IAErC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,8EAA8E;QAC9E,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC9E,CAAC;QAED,8EAA8E;QAC9E,IACE,uDAAuD,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EACzB,CAAC;YACD,MAAM,CAAC,IAAI,CACT,0GAA0G,CAC3G,CAAC;QACJ,CAAC;QAED,+EAA+E;QAC/E,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;QACjG,CAAC;QAED,6DAA6D;QAC7D,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CACT,wFAAwF,CACzF,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI,UAAU,GAAG,2EAA2E,CAAC;YAC7F,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,UAAU,GAAG,eAAe,OAAO,CAAC,KAAK,uDAAuD,CAAC;YACnG,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,eAAe,EAAE,KAAK;YACtB,kBAAkB,EAAE,CAAC;YACrB,cAAc,EAAE,CAAC;YACjB,kBAAkB,EAAE,CAAC;YACrB,iBAAiB,EAAE,KAAK;YACxB,mBAAmB,EAAE,KAAK;YAC1B,IAAI,EAAE,2DAA2D;YACjE,mBAAmB,EAAE,2DAA2D;SACjF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,iBAAqC,CAAC;IAC1C,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,cAAkC,CAAC;IACvC,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,WAA+B,CAAC;IAEpC,2BAA2B;IAC3B,+EAA+E;IAC/E,yFAAyF;IACzF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxB,IAAI,cAAc,GAAG,UAAU,CAAC;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;iBACvC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC;YAC5E,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC7D,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACtD,MAAM,EAAE,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACxD,cAAc,GAAG,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;oBACzC,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAG;YACrB,cAAc;YACd,KAAK,CAAC,OAAO;YACb,EAAE;YACF,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;SACvD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9D,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACjH,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iBAAiB,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,2EAA2E;IAC3E,gFAAgF;IAChF,4EAA4E;IAC5E,+EAA+E;IAC/E,EAAE;IACF,2EAA2E;IAC3E,0EAA0E;IAC1E,8EAA8E;IAC9E,wEAAwE;IACxE,EAAE;IACF,8EAA8E;IAC9E,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,+DAA+D;YAC/D,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAClH,CAAC;YACF,MAAM,gBAAgB,GAAG,mEAAmE,CAAC;YAC7F,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACjD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACH,uDAAuD;oBACvD,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI;yBACrB,WAAW,EAAE;yBACb,KAAK,CAAC,KAAK,CAAC;yBACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;oBAChC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC5E,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACjE,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,IAAI,mBAAmB,CAAC;oBACxD,aAAa,CAAC;wBACZ,aAAa,EAAE,CAAC,CAAC,EAAE;wBACnB,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;wBACtC,EAAE,EAAE,MAAM;wBACV,QAAQ,EAAE,QAAQ;4BAChB,CAAC,CAAC,uCAAuC;4BACzC,CAAC,CAAC,2CAA2C;qBAChD,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,6DAA6D;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;QACvE,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,wEAAwE;IACxE,uEAAuE;IACvE,iEAAiE;IACjE,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,+DAA+D;YAC/D,MAAM,YAAY,GAAG,iBAAiB,EAAE,CAAC;YACzC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvE,IAAI,KAAK,EAAE,CAAC;oBACV,iBAAiB,EAAE,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,aAAa,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU;gBACvC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,CAAC,UAAU,EAAE;gBAChC,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;gBACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnC,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,YAAY,EAAE,CAAC,CAAC,YAAY;oBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;oBAC1E,cAAc,EAAE,IAAI,IAAI,SAAS;oBACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB,CAAC,CAAC;gBACH,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,gBAAgB;aAC7B,CAAC,CAAC;YACH,iBAAiB,GAAG,MAAM,CAAC,kBAAkB,EAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/E,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,iDAAiD;YACjD,aAAa,GAAG,CAAC,CAAC;YAClB,iBAAiB,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC;QACH,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACjC,kBAAkB,GAAG,IAAI,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,mEAAmE;IACnE,MAAM,gBAAgB,GAAsB,EAAE,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;qBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC;qBAClD,IAAI,EAAE;qBACN,OAAO,EAAE,CAAC;gBAEb,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,wBAAwB;oBAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;oBACrD,IAAI,CAAC,SAAS;wBAAE,SAAS;oBACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAE9B,0CAA0C;oBAC1C,IAAI,QAAQ,KAAK,KAAK;wBAAE,SAAS;oBAEjC,yBAAyB;oBACzB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;oBACpF,IAAI,OAAO,GAAG,CAAC;wBAAE,MAAM;oBAEvB,0DAA0D;oBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBAClE,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAErD,kBAAkB;oBAClB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACrC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAC9D,CAAC;oBAEF,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACxB,gBAAgB,CAAC,IAAI,CAAC;4BACpB,IAAI;4BACJ,IAAI,EAAE,QAAQ;4BACd,gBAAgB,EAAE,OAAO;4BACzB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,0BAA0B,IAAI,EAAE;yBAChF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAEhD,oDAAoD;IACpD,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QACtC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC,MAAM;QAChF,CAAC,CAAC,CAAC,CAAC;IAEN,+BAA+B;IAC/B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,aAAa,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,oBAAoB;IACpB,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,qCAAqC;IACrC,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,OAAO,GAAG,GAAG,IAAI,aAAa,IAAI,cAAc,CAAC;IACvD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,eAAe,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,gEAAgE,CAAC;IAC9E,MAAM,SAAS,GAAG;QAChB,IAAI;QACJ,6BAA6B,IAAI,MAAM,IAAI,OAAO,YAAY,EAAE;QAChE,IAAI;QACJ,EAAE;QACF,mBAAmB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAAG;QAC3D,sBAAsB,IAAI,0BAA0B,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,iBAAiB,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE;QACvJ,EAAE;QACF,mBAAmB,aAAa,WAAW,iBAAiB,gBAAgB,aAAa,SAAS;QAClG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,qCAAqC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,yCAAyC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,EAAE;KACH,CAAC;IAEF,IAAI,kBAAkB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,GAAG,IAAI,aAAa,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACvF,SAAS,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC,mBAAmB,MAAM,UAAU,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;QAC3F,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,IAAI,CAAC,mBAAmB,eAAe,2CAA2C,CAAC,CAAC;QAC9F,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,SAAS,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAChE,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;IAED,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAErB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,eAAe,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAElE,+DAA+D;IAC/D,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAE5B,yEAAyE;IACzE,wEAAwE;IACxE,IAAI,cAA+C,CAAC;IACpD,IAAI,cAA+C,CAAC;IAEpD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;QAC7B,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC;YAC5B,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,EAAE,CAAC,aAAa;YAC/B,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,eAAe,EAAE,EAAE,CAAC,eAAe;YACnC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;SACtC,CAAC,CAAC;QACH,cAAc,GAAG,CAAC,CAAC,OAAO;YACxB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE;YACtE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;QAC5B,MAAM,CAAC,GAAG,MAAM,YAAY,CAAC;YAC3B,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,EAAE,CAAC,UAAU;YACzB,IAAI,EAAE,EAAE,CAAC,IAAI;SACd,CAAC,CAAC;QACH,cAAc,GAAG,CAAC,CAAC,OAAO;YACxB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE;YACtE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAED,mEAAmE;IACnE,6EAA6E;IAC7E,4CAA4C;IAC5C,IAAI,WAA+B,CAAC;IACpC,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAC7B,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,MAAM,CAAC,CAAC,sCAAsC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,cAAc,IAAI,gBAAgB;QAC3C,eAAe,EAAE,cAAc;QAC/B,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,kBAAkB,EAAE,iBAAiB;QACrC,cAAc,EAAE,aAAa;QAC7B,kBAAkB,EAAE,iBAAiB;QACrC,iBAAiB,EAAE,gBAAgB;QACnC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,mBAAmB,EAAE,kBAAkB;QACvC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI;QACJ,iBAAiB,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;QAC7E,gBAAgB,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QAC1E,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -39,6 +39,16 @@ export interface SessionStartResult {
|
|
|
39
39
|
yesterday: string | null;
|
|
40
40
|
older_count: number;
|
|
41
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* Capture-log entries written by `journal_capture` that have NOT yet been
|
|
44
|
+
* committed via `session_end`. Surfaced so the agent sees in-flight work
|
|
45
|
+
* instead of "No memory found". Empty array when there are none.
|
|
46
|
+
*/
|
|
47
|
+
recent_captures: Array<{
|
|
48
|
+
date: string;
|
|
49
|
+
question: string;
|
|
50
|
+
answer: string;
|
|
51
|
+
}>;
|
|
42
52
|
watch_for: WatchForPattern[];
|
|
43
53
|
corrections: CorrectionRecord[];
|
|
44
54
|
resume: {
|
|
@@ -70,6 +80,17 @@ export interface SessionStartResult {
|
|
|
70
80
|
closed_count: number;
|
|
71
81
|
last_synthesis: string | null;
|
|
72
82
|
} | null;
|
|
83
|
+
/**
|
|
84
|
+
* North-star alignment metric — correction precision (heeded/retrieved).
|
|
85
|
+
* Null when the project has zero retrieval outcome data (no fake claims).
|
|
86
|
+
* Populated automatically once corrections have been surfaced and outcomes recorded.
|
|
87
|
+
*/
|
|
88
|
+
alignment: {
|
|
89
|
+
precision: number;
|
|
90
|
+
retrieved: number;
|
|
91
|
+
heeded: number;
|
|
92
|
+
recurred: number;
|
|
93
|
+
} | null;
|
|
73
94
|
empty_state?: string;
|
|
74
95
|
}
|
|
75
96
|
export declare function sessionStart(input: SessionStartInput): Promise<SessionStartResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAsE,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5I,OAAO,
|
|
1
|
+
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,OAAO,EAAsE,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC5I,OAAO,EAAuD,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAUvH,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EAA0C,KAAK,YAAY,EAAE,MAAM,iCAAiC,CAAC;AA4B5G,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxF,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACpI,aAAa,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF;;;;OAIG;IACH,eAAe,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B;;;;OAIG;IACH,YAAY,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC;;;OAGG;IACH,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;QACnC,uBAAuB,EAAE,MAAM,CAAC;QAChC,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT;;;;OAIG;IACH,SAAS,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4VxF"}
|
|
@@ -6,17 +6,18 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { resolveProject } from "../storage/project.js";
|
|
8
8
|
import { resetOwnedFiles } from "../storage/session.js";
|
|
9
|
-
import { ensurePalaceInitialized, listRooms, isRoomStale } from "../palace/rooms.js";
|
|
9
|
+
import { ensurePalaceInitialized, listRooms, isRoomStale, countRoomEntries } from "../palace/rooms.js";
|
|
10
10
|
import { readIdentity } from "../palace/identity.js";
|
|
11
11
|
import { readAwarenessState, fetchDashboardArchivedTitles } from "../palace/awareness.js";
|
|
12
|
-
import { recallInsights } from "../palace/insights-index.js";
|
|
12
|
+
import { recallInsights, readInsightsIndex } from "../palace/insights-index.js";
|
|
13
13
|
import { journalDirs } from "../storage/paths.js";
|
|
14
14
|
import { extractSection } from "../helpers/sections.js";
|
|
15
15
|
import { todayISO } from "../storage/fs-utils.js";
|
|
16
16
|
import { readAlignmentLog, extractWatchPatterns, computeDecisionCalibration } from "../helpers/alignment-patterns.js";
|
|
17
|
-
import { readP0Corrections } from "../storage/corrections.js";
|
|
17
|
+
import { readP0Corrections, recordOutcome, getCorrectionKPIs } from "../storage/corrections.js";
|
|
18
18
|
import { extractKeywords } from "../helpers/auto-name.js";
|
|
19
19
|
import { isJournalFile } from "../helpers/journal-filter.js";
|
|
20
|
+
import { hasCaptureLogs, readRecentCaptures } from "../helpers/journal-files.js";
|
|
20
21
|
import * as fs from "node:fs";
|
|
21
22
|
import * as path from "node:path";
|
|
22
23
|
import { getRoot } from "../types.js";
|
|
@@ -33,6 +34,23 @@ function sliceAtWord(text, maxLen) {
|
|
|
33
34
|
const lastSpace = sliced.lastIndexOf(" ");
|
|
34
35
|
return lastSpace > maxLen * 0.6 ? sliced.slice(0, lastSpace) : sliced;
|
|
35
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Strip markdown ATX headers from a journal fragment before embedding it into
|
|
39
|
+
* a card field. `extractSection(content, "next")` returns the section heading
|
|
40
|
+
* line ("## Next") followed by the body, so a naive embed leaks
|
|
41
|
+
* "Trajectory: ## Next…" into the card. We drop entire heading lines
|
|
42
|
+
* (`^#+\s.*`) rather than just the `#` markers — otherwise "## Next" collapses
|
|
43
|
+
* to a stray "Next" line in front of the real content. Blank lines are then
|
|
44
|
+
* collapsed and the result trimmed.
|
|
45
|
+
*/
|
|
46
|
+
function stripMarkdownHeaders(text) {
|
|
47
|
+
return text
|
|
48
|
+
.split("\n")
|
|
49
|
+
.filter((line) => !/^\s*#+\s/.test(line))
|
|
50
|
+
.join("\n")
|
|
51
|
+
.replace(/\n{2,}/g, "\n")
|
|
52
|
+
.trim();
|
|
53
|
+
}
|
|
36
54
|
export async function sessionStart(input) {
|
|
37
55
|
// Reset owned-files state from any previous session in the same process
|
|
38
56
|
resetOwnedFiles();
|
|
@@ -65,10 +83,12 @@ export async function sessionStart(input) {
|
|
|
65
83
|
// Tiebreak: most recently confirmed first
|
|
66
84
|
return (b.lastConfirmed ?? "").localeCompare(a.lastConfirmed ?? "");
|
|
67
85
|
});
|
|
68
|
-
// Filter out insights archived via the dashboard (Supabase sync-back)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
86
|
+
// Filter out insights archived via the dashboard (Supabase sync-back).
|
|
87
|
+
// Case-insensitive match — dedup elsewhere normalizes to lowercase, so the
|
|
88
|
+
// archive filter must too (else "Bug Fix" fails to suppress "bug fix").
|
|
89
|
+
const archivedLower = new Set((await fetchDashboardArchivedTitles()).map((t) => t.toLowerCase()));
|
|
90
|
+
if (archivedLower.size > 0) {
|
|
91
|
+
sortedInsights = sortedInsights.filter(i => !archivedLower.has(i.title.toLowerCase()));
|
|
72
92
|
}
|
|
73
93
|
// Cap startup noise: top 3 awareness insights (was 8). Anything below the
|
|
74
94
|
// top 3 by salience pollutes more than it informs at session-start. Agents
|
|
@@ -79,8 +99,49 @@ export async function sessionStart(input) {
|
|
|
79
99
|
severity: i.severity ?? "important",
|
|
80
100
|
trend: i.trend,
|
|
81
101
|
}));
|
|
102
|
+
// 2b. P0-3 — guarantee a session-1 insight is visible at session-2.
|
|
103
|
+
// Confirmation count must control ORDER/verbosity, never EXISTENCE. The
|
|
104
|
+
// global awareness `topInsights` only receives an index insight once
|
|
105
|
+
// `promoteConfirmedInsights` fires (confirmed_count >= 3), so a brand-new
|
|
106
|
+
// single-confirmation insight stored by session_end can be absent from
|
|
107
|
+
// `topInsights` while living in the project-scoped insights-index. Surface
|
|
108
|
+
// those directly so they appear from confirmation count 1.
|
|
109
|
+
const index = readInsightsIndex();
|
|
110
|
+
const projectIndexInsights = index.insights
|
|
111
|
+
.filter((i) => (i.projects ?? []).includes(slug))
|
|
112
|
+
.filter((i) => !archivedLower.has(i.title.toLowerCase()))
|
|
113
|
+
.sort((a, b) => b.confirmed_count - a.confirmed_count || (b.last_confirmed ?? "").localeCompare(a.last_confirmed ?? ""));
|
|
114
|
+
// RESERVED SLOTS: project-scoped index insights get their own budget (up to 2)
|
|
115
|
+
// ON TOP of the awareness top-3. If we shared one cap, an established project
|
|
116
|
+
// whose global awareness already has 3+ insights would never surface a fresh
|
|
117
|
+
// session-1 insight — the cap would be full before this loop ran. P0-3 requires
|
|
118
|
+
// existence, not just ordering, so the budget must be independent.
|
|
119
|
+
const seenTitles = new Set(insights.map((i) => i.title.toLowerCase()));
|
|
120
|
+
const PROJECT_INSIGHT_BUDGET = 2;
|
|
121
|
+
let projectAdded = 0;
|
|
122
|
+
for (const idx of projectIndexInsights) {
|
|
123
|
+
if (projectAdded >= PROJECT_INSIGHT_BUDGET)
|
|
124
|
+
break;
|
|
125
|
+
if (seenTitles.has(idx.title.toLowerCase()))
|
|
126
|
+
continue;
|
|
127
|
+
insights.push({
|
|
128
|
+
title: sliceAtWord(idx.title, 200),
|
|
129
|
+
confirmed: idx.confirmed_count ?? 1,
|
|
130
|
+
severity: idx.severity ?? "important",
|
|
131
|
+
trend: undefined,
|
|
132
|
+
});
|
|
133
|
+
seenTitles.add(idx.title.toLowerCase());
|
|
134
|
+
projectAdded++;
|
|
135
|
+
}
|
|
136
|
+
// Keep highest-confirmed first (order, not existence, is the threshold's job).
|
|
137
|
+
// Total visible = up to 3 awareness + up to 2 project-scoped = max 5.
|
|
138
|
+
insights.sort((a, b) => b.confirmed - a.confirmed);
|
|
82
139
|
// 3. Active rooms — top 3 by salience (was 5). Same noise-cap rationale.
|
|
83
|
-
|
|
140
|
+
// Call listRooms ONCE — it internally scans every room via countRoomEntries
|
|
141
|
+
// to enforce the empty-last sort. Reuse the result for both active_rooms and
|
|
142
|
+
// the hasPalaceContent check below (avoids a 2nd full sort + 3rd scan pass).
|
|
143
|
+
const allRooms = listRooms(slug);
|
|
144
|
+
const rooms = allRooms.slice(0, 3);
|
|
84
145
|
const active_rooms = rooms.map((r) => ({
|
|
85
146
|
name: r.name,
|
|
86
147
|
salience: r.salience,
|
|
@@ -127,13 +188,15 @@ export async function sessionStart(input) {
|
|
|
127
188
|
if (d === today) {
|
|
128
189
|
const content = fs.readFileSync(path.join(dir, file), "utf-8");
|
|
129
190
|
const brief = extractSection(content, "brief");
|
|
130
|
-
const
|
|
191
|
+
const raw = brief ? brief : content.split("\n").slice(0, 3).join(" ");
|
|
192
|
+
const entry = sliceAtWord(stripMarkdownHeaders(raw), 400);
|
|
131
193
|
todayBrief = todayBrief ? `${todayBrief} | ${entry}` : entry;
|
|
132
194
|
}
|
|
133
195
|
else if (d === yesterday && !yesterdayBrief) {
|
|
134
196
|
const content = fs.readFileSync(path.join(dir, file), "utf-8");
|
|
135
197
|
const brief = extractSection(content, "brief");
|
|
136
|
-
|
|
198
|
+
const raw = brief ? brief : content.split("\n").slice(0, 3).join(" ");
|
|
199
|
+
yesterdayBrief = sliceAtWord(stripMarkdownHeaders(raw), 400);
|
|
137
200
|
}
|
|
138
201
|
else if (d < yesterday) {
|
|
139
202
|
olderCount++;
|
|
@@ -154,6 +217,34 @@ export async function sessionStart(input) {
|
|
|
154
217
|
}
|
|
155
218
|
// 7. P0 corrections — always-load behavioral rules (max 10 most recent)
|
|
156
219
|
const corrections = readP0Corrections(slug).slice(0, 10);
|
|
220
|
+
// P0-B: auto-record "retrieved" outcome for each surfaced correction.
|
|
221
|
+
// Automaticity Law: only automatic instrumentation captures real data.
|
|
222
|
+
// Guard: fire at most once per correction per calendar day — prevents
|
|
223
|
+
// double-counting if session_start is called twice in the same session
|
|
224
|
+
// (e.g. on reconnect or tool retry).
|
|
225
|
+
{
|
|
226
|
+
// Local-TZ date for the 1/day guard (Sprint-0 review: toISOString is UTC,
|
|
227
|
+
// which breaks the guard for users in UTC+5..+14 — e.g. 07:50 local in UTC+8
|
|
228
|
+
// is "yesterday" in UTC). "sv" locale formats as YYYY-MM-DD.
|
|
229
|
+
const todayStr = new Date().toLocaleDateString("sv");
|
|
230
|
+
const nowISO = new Date().toISOString();
|
|
231
|
+
for (const c of corrections) {
|
|
232
|
+
if (c.last_retrieved && new Date(c.last_retrieved).toLocaleDateString("sv") === todayStr)
|
|
233
|
+
continue; // already counted today
|
|
234
|
+
try {
|
|
235
|
+
recordOutcome({
|
|
236
|
+
correction_id: c.id,
|
|
237
|
+
project: slug,
|
|
238
|
+
kind: "retrieved",
|
|
239
|
+
at: nowISO,
|
|
240
|
+
evidence: "surfaced at session_start",
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
// Outcome tracking must NEVER break orientation — swallow all errors
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
157
248
|
// 8. Resume block — structured re-entry briefing for returning sessions
|
|
158
249
|
const sessionsCount = olderCount + (yesterdayBrief ? 1 : 0) + (todayBrief ? 1 : 0);
|
|
159
250
|
let resume = null;
|
|
@@ -182,7 +273,9 @@ export async function sessionStart(input) {
|
|
|
182
273
|
// session_end writes trajectory under "## Next" — use "next" key to extract it
|
|
183
274
|
const trajectorySection = extractSection(content, "next") ?? extractSection(content, "trajectory");
|
|
184
275
|
if (trajectorySection) {
|
|
185
|
-
|
|
276
|
+
// Strip the leading "## Next" (or any markdown header) so it never
|
|
277
|
+
// leaks into the rendered card as "Trajectory: ## Next…".
|
|
278
|
+
lastTrajectory = sliceAtWord(stripMarkdownHeaders(trajectorySection), 200);
|
|
186
279
|
}
|
|
187
280
|
}
|
|
188
281
|
resume = {
|
|
@@ -191,13 +284,31 @@ export async function sessionStart(input) {
|
|
|
191
284
|
sessions_count: sessionsCount,
|
|
192
285
|
};
|
|
193
286
|
}
|
|
194
|
-
//
|
|
195
|
-
//
|
|
196
|
-
//
|
|
287
|
+
// 8c. Recent captures — journal_capture writes that pre-date any session_end.
|
|
288
|
+
// These live in `*-log.md` / `--capture--` files the orientation path skips,
|
|
289
|
+
// so without this an agent that captured 4 things sees "No memory found".
|
|
290
|
+
const recentCaptures = readRecentCaptures(slug, 5);
|
|
291
|
+
// 9. Empty state detection — guide first-time agents on THIS project.
|
|
292
|
+
// The filesystem is the single source of truth: ANY committed store
|
|
293
|
+
// (resume/journal/corrections) OR uncommitted store (captures) OR real
|
|
294
|
+
// palace content makes the project non-empty. session_end is NOT a
|
|
295
|
+
// prerequisite for visibility.
|
|
296
|
+
//
|
|
297
|
+
// Short-circuit order is cheapest-first: in-memory checks (resume,
|
|
298
|
+
// corrections, briefs) before the fs/palace scans (captures, room content).
|
|
299
|
+
//
|
|
300
|
+
// hasPalaceContent: a freshly-initialized palace has scaffold rooms with
|
|
301
|
+
// zero `### ` entries — those don't count. countRoomEntries() (palace's own
|
|
302
|
+
// public helper) tells a real room from scaffold without touching palace
|
|
303
|
+
// internals, so "non-empty" is precise rather than `active_rooms.length > 0`.
|
|
304
|
+
const hasPalaceContent = allRooms.some((r) => countRoomEntries(slug, r.slug) > 0);
|
|
305
|
+
const hasCaptures = recentCaptures.length > 0 || hasCaptureLogs(slug);
|
|
197
306
|
const isEmpty = !resume &&
|
|
198
307
|
corrections.length === 0 &&
|
|
199
308
|
!todayBrief && !yesterdayBrief &&
|
|
200
|
-
olderCount === 0
|
|
309
|
+
olderCount === 0 &&
|
|
310
|
+
!hasCaptures &&
|
|
311
|
+
!hasPalaceContent;
|
|
201
312
|
// Trigger backfill if Supabase is configured (non-blocking)
|
|
202
313
|
const sbConfig = readSupabaseConfig();
|
|
203
314
|
if (sbConfig) {
|
|
@@ -211,6 +322,25 @@ export async function sessionStart(input) {
|
|
|
211
322
|
if (readBehaviorPolicies(slug).rules.length > 0)
|
|
212
323
|
recordPolicyLoad(slug);
|
|
213
324
|
const behaviorRules = readBehaviorPolicies(slug).rules;
|
|
325
|
+
// North-star alignment metric — correction precision (heeded/retrieved).
|
|
326
|
+
// Wrapped in try/catch so a corrupt or unreadable corrections dir never
|
|
327
|
+
// breaks session orientation. Null when no outcome data exists yet
|
|
328
|
+
// (retrieved === 0) — no fake claims.
|
|
329
|
+
let alignment = null;
|
|
330
|
+
try {
|
|
331
|
+
const kpis = getCorrectionKPIs(slug);
|
|
332
|
+
if (kpis.retrieved > 0) {
|
|
333
|
+
alignment = {
|
|
334
|
+
precision: kpis.precision,
|
|
335
|
+
retrieved: kpis.retrieved,
|
|
336
|
+
heeded: kpis.heeded,
|
|
337
|
+
recurred: kpis.recurred,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
// alignment remains null — session_start must always succeed
|
|
343
|
+
}
|
|
214
344
|
// Dream cron health — surface when broken for ≥2 nights
|
|
215
345
|
const dreamHealthRaw = getDreamHealth();
|
|
216
346
|
const dreamHealth = dreamHealthRaw.banner ? dreamHealthRaw : null;
|
|
@@ -242,12 +372,18 @@ export async function sessionStart(input) {
|
|
|
242
372
|
active_rooms,
|
|
243
373
|
cross_project,
|
|
244
374
|
recent: { today: todayBrief, yesterday: yesterdayBrief, older_count: olderCount },
|
|
375
|
+
recent_captures: recentCaptures.map((c) => ({
|
|
376
|
+
date: c.date,
|
|
377
|
+
question: sliceAtWord(c.question, 120),
|
|
378
|
+
answer: sliceAtWord(c.answer, 200),
|
|
379
|
+
})),
|
|
245
380
|
watch_for,
|
|
246
381
|
corrections,
|
|
247
382
|
resume,
|
|
248
383
|
behavior_rules: behaviorRules,
|
|
249
384
|
dream_health: dreamHealth,
|
|
250
385
|
pipeline,
|
|
386
|
+
alignment,
|
|
251
387
|
empty_state: isEmpty ? "No memory found for this project. Try: bootstrap_scan() to import existing projects, or start working and use remember() to save decisions." : undefined,
|
|
252
388
|
};
|
|
253
389
|
}
|