agent-recall-core 3.3.26 → 3.3.27
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/auto-name.d.ts.map +1 -1
- package/dist/helpers/auto-name.js +10 -1
- package/dist/helpers/auto-name.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/palace/awareness.d.ts +3 -0
- package/dist/palace/awareness.d.ts.map +1 -1
- package/dist/palace/awareness.js +35 -1
- package/dist/palace/awareness.js.map +1 -1
- package/dist/palace/consolidate.d.ts.map +1 -1
- package/dist/palace/consolidate.js +5 -5
- package/dist/palace/consolidate.js.map +1 -1
- package/dist/palace/rooms.d.ts +4 -0
- package/dist/palace/rooms.d.ts.map +1 -1
- package/dist/palace/rooms.js +13 -0
- package/dist/palace/rooms.js.map +1 -1
- package/dist/storage/project.d.ts +2 -0
- package/dist/storage/project.d.ts.map +1 -1
- package/dist/storage/project.js +13 -25
- package/dist/storage/project.js.map +1 -1
- package/dist/tools-logic/awareness-update.d.ts +1 -0
- package/dist/tools-logic/awareness-update.d.ts.map +1 -1
- package/dist/tools-logic/awareness-update.js +6 -0
- package/dist/tools-logic/awareness-update.js.map +1 -1
- package/dist/tools-logic/palace-search.d.ts.map +1 -1
- package/dist/tools-logic/palace-search.js +77 -3
- package/dist/tools-logic/palace-search.js.map +1 -1
- package/dist/tools-logic/project-status.d.ts +24 -0
- package/dist/tools-logic/project-status.d.ts.map +1 -0
- package/dist/tools-logic/project-status.js +115 -0
- package/dist/tools-logic/project-status.js.map +1 -0
- package/dist/tools-logic/session-end.d.ts +8 -0
- package/dist/tools-logic/session-end.d.ts.map +1 -1
- package/dist/tools-logic/session-end.js +48 -0
- package/dist/tools-logic/session-end.js.map +1 -1
- package/dist/tools-logic/session-start.d.ts +7 -0
- package/dist/tools-logic/session-start.d.ts.map +1 -1
- package/dist/tools-logic/session-start.js +52 -19
- package/dist/tools-logic/session-start.js.map +1 -1
- package/dist/tools-logic/smart-remember.d.ts.map +1 -1
- package/dist/tools-logic/smart-remember.js +8 -0
- package/dist/tools-logic/smart-remember.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,11 +16,17 @@ export async function awarenessUpdate(input) {
|
|
|
16
16
|
appliesWhen: insight.applies_when,
|
|
17
17
|
source: insight.source,
|
|
18
18
|
});
|
|
19
|
+
// Rejected by quality gate — record reason, skip indexing
|
|
20
|
+
if ("accepted" in result) {
|
|
21
|
+
results.push({ title: insight.title, action: `rejected:${result.reason}` });
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
19
24
|
results.push({ title: insight.title, action: result.action });
|
|
20
25
|
addIndexedInsight({
|
|
21
26
|
title: insight.title,
|
|
22
27
|
source: insight.source,
|
|
23
28
|
applies_when: insight.applies_when,
|
|
29
|
+
projects: input.project ? [input.project] : undefined,
|
|
24
30
|
file: undefined,
|
|
25
31
|
severity: insight.severity ?? "important",
|
|
26
32
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"awareness-update.js","sourceRoot":"","sources":["../../src/tools-logic/awareness-update.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,sBAAsB,EACtB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"awareness-update.js","sourceRoot":"","sources":["../../src/tools-logic/awareness-update.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,sBAAsB,EACtB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAuBhE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAA2B;IAC/D,IAAI,KAAK,GAAG,kBAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,MAAM,OAAO,GAA6C,EAAE,CAAC;IAC7D,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,YAAY;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,0DAA0D;QAC1D,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5E,SAAS;QACX,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAE9D,iBAAiB,CAAC;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;YACrD,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,KAAK,GAAG,kBAAkB,EAAG,CAAC;IAE9B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3B,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvB,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAE3C,OAAO;QACL,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,OAAO;QAC3B,0BAA0B,EAAE,SAAS,CAAC,MAAM;QAC5C,cAAc,EAAE,kBAAkB,EAAE,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC;KAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palace-search.d.ts","sourceRoot":"","sources":["../../src/tools-logic/palace-search.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,qGAAqG;QACrG,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAyBD,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"palace-search.d.ts","sourceRoot":"","sources":["../../src/tools-logic/palace-search.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,qGAAqG;QACrG,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAyBD,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+JxF"}
|
|
@@ -37,7 +37,26 @@ export async function palaceSearch(input) {
|
|
|
37
37
|
// New approach: count matched keywords, compute overlap ratio for scoring.
|
|
38
38
|
// v3.3.21: use stemming + synonym expansion for query words
|
|
39
39
|
const rawQueryWords = input.query.toLowerCase().split(/\s+/).filter((w) => w.length > 2);
|
|
40
|
-
|
|
40
|
+
// Fix RC1: project-scope keyword inflation.
|
|
41
|
+
// When searching within a project, every file contains the project name —
|
|
42
|
+
// it adds zero discriminating signal. Strip the project slug and its
|
|
43
|
+
// normalized variants (lowercase, no hyphens/spaces) from query words so
|
|
44
|
+
// they don't boost files that merely mention the project name.
|
|
45
|
+
const projectVariants = new Set();
|
|
46
|
+
if (input.project) {
|
|
47
|
+
const base = input.project.toLowerCase();
|
|
48
|
+
projectVariants.add(base); // "agentrecall"
|
|
49
|
+
projectVariants.add(base.replace(/[-_\s]+/g, "")); // "agentrecall" (remove separators)
|
|
50
|
+
projectVariants.add(stem(base)); // stemmed form
|
|
51
|
+
for (const part of base.split(/[-_\s]+/)) {
|
|
52
|
+
if (part.length > 2) {
|
|
53
|
+
projectVariants.add(part);
|
|
54
|
+
projectVariants.add(stem(part));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const filteredRawQueryWords = rawQueryWords.filter((w) => !projectVariants.has(w) && !projectVariants.has(stem(w)));
|
|
59
|
+
const queryWords = expandQuery(filteredRawQueryWords);
|
|
41
60
|
const results = [];
|
|
42
61
|
const targetRooms = input.room ? rooms.filter((r) => r.slug === input.room) : rooms;
|
|
43
62
|
for (const roomMeta of targetRooms) {
|
|
@@ -51,8 +70,12 @@ export async function palaceSearch(input) {
|
|
|
51
70
|
const lines = content.split("\n");
|
|
52
71
|
// Parse YAML frontmatter tags for bonus scoring
|
|
53
72
|
const fileTags = parseFrontmatterTags(content);
|
|
54
|
-
// Check if any query words match file-level tags
|
|
55
|
-
|
|
73
|
+
// Check if any query words match file-level tags.
|
|
74
|
+
// Reduced from 0.3 to 0.10: a flat +0.3 tag bonus bypassed IDF entirely and
|
|
75
|
+
// caused files whose only match was a generic tag (e.g. "deployment") to rank
|
|
76
|
+
// above files with genuine content matches. 0.10 preserves the signal without
|
|
77
|
+
// overriding IDF-based content scoring.
|
|
78
|
+
const tagBonus = queryWords.some((w) => fileTags.some((t) => t.toLowerCase().includes(w) || w.includes(t.toLowerCase()))) ? 0.10 : 0;
|
|
56
79
|
for (let i = 0; i < lines.length; i++) {
|
|
57
80
|
const lineLower = lines[i].toLowerCase();
|
|
58
81
|
if (queryWords.length === 0)
|
|
@@ -90,6 +113,57 @@ export async function palaceSearch(input) {
|
|
|
90
113
|
recordAccess(slug, roomMeta.slug);
|
|
91
114
|
}
|
|
92
115
|
}
|
|
116
|
+
// Fix RC3: IDF (inverse document frequency) re-scoring.
|
|
117
|
+
// Pure TF (keyword overlap ratio) treats "agentrecall" the same as "rrf-scoring"
|
|
118
|
+
// even though the former appears in every file. IDF penalises keywords that appear
|
|
119
|
+
// in many documents so rare, specific terms drive ranking.
|
|
120
|
+
//
|
|
121
|
+
// We use a lightweight file-level doc-frequency map built from the results we
|
|
122
|
+
// already collected (no second filesystem pass needed).
|
|
123
|
+
//
|
|
124
|
+
// IDF formula: log(1 + totalDocs / (docFreq + 1)) — smoothed log-IDF.
|
|
125
|
+
// A keyword in all docs → IDF ≈ log(1) = 0 (no contribution).
|
|
126
|
+
// A keyword in 1 of 100 docs → IDF ≈ log(101) ≈ 4.6 (strong signal).
|
|
127
|
+
// We then normalise the IDF weights so they scale between 0 and 1.
|
|
128
|
+
if (results.length > 0) {
|
|
129
|
+
// Count distinct files each queryWord appears in
|
|
130
|
+
const totalDocs = new Set(results.map((r) => `${r.room}/${r.file}`)).size;
|
|
131
|
+
const docFreq = new Map();
|
|
132
|
+
for (const r of results) {
|
|
133
|
+
const docId = `${r.room}/${r.file}`;
|
|
134
|
+
const combined = (r.excerpt + " " + r.room + " " + r.file).toLowerCase();
|
|
135
|
+
for (const w of queryWords) {
|
|
136
|
+
if (combined.includes(w)) {
|
|
137
|
+
if (!docFreq.has(w))
|
|
138
|
+
docFreq.set(w, new Set());
|
|
139
|
+
docFreq.get(w).add(docId);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Compute IDF per keyword, normalise to [0,1]
|
|
144
|
+
const idfRaw = new Map();
|
|
145
|
+
for (const w of queryWords) {
|
|
146
|
+
const df = docFreq.get(w)?.size ?? 0;
|
|
147
|
+
idfRaw.set(w, Math.log(1 + totalDocs / (df + 1)));
|
|
148
|
+
}
|
|
149
|
+
const maxIdf = Math.max(1, ...Array.from(idfRaw.values()));
|
|
150
|
+
const idf = new Map();
|
|
151
|
+
for (const [w, v] of idfRaw)
|
|
152
|
+
idf.set(w, v / maxIdf);
|
|
153
|
+
// Re-score: replace raw keyword_score with IDF-weighted version.
|
|
154
|
+
// keyword_score already contains tagBonus; we blend 70% IDF-weighted + 30% raw
|
|
155
|
+
// so files with many matching rare terms beat files with one ubiquitous term.
|
|
156
|
+
for (const r of results) {
|
|
157
|
+
const combined = (r.excerpt + " " + r.room + " " + r.file).toLowerCase();
|
|
158
|
+
const matchedIdfWords = queryWords.filter((w) => combined.includes(w));
|
|
159
|
+
if (matchedIdfWords.length === 0)
|
|
160
|
+
continue;
|
|
161
|
+
const idfWeightedScore = matchedIdfWords.reduce((sum, w) => sum + (idf.get(w) ?? 0), 0)
|
|
162
|
+
/ queryWords.length;
|
|
163
|
+
// Blend: 70% IDF-weighted, 30% original ratio (preserves tagBonus signal)
|
|
164
|
+
r.keyword_score = Math.min(1.0, idfWeightedScore * 0.70 + r.keyword_score * 0.30);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
93
167
|
// Sort by keyword_score × salience so most relevant + important rooms surface first
|
|
94
168
|
results.sort((a, b) => (b.keyword_score * b.salience) - (a.keyword_score * a.salience) || a.line - b.line);
|
|
95
169
|
const limited = results.slice(0, input.limit ?? 20);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palace-search.js","sourceRoot":"","sources":["../../src/tools-logic/palace-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAwB5D;;;GAGG;AACH,SAAS,oBAAoB,CAAC,OAAe;IAC3C,0CAA0C;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,+DAA+D;IAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,OAAO,UAAU,CAAC,CAAC,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;SAChD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAwB;IACzD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,iEAAiE;IACjE,+EAA+E;IAC/E,qFAAqF;IACrF,2EAA2E;IAC3E,4DAA4D;IAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"palace-search.js","sourceRoot":"","sources":["../../src/tools-logic/palace-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* project_status — one-call operational briefing for any agent landing in a long project.
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes: last trajectory, active blockers, next steps, palace room freshness.
|
|
5
|
+
* Target: orient in seconds without reading multiple sources.
|
|
6
|
+
*/
|
|
7
|
+
export interface ProjectStatusInput {
|
|
8
|
+
project?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ProjectStatusResult {
|
|
11
|
+
project: string;
|
|
12
|
+
last_trajectory: string | null;
|
|
13
|
+
active_blockers: string[];
|
|
14
|
+
next_steps: string[];
|
|
15
|
+
last_journal_date: string | null;
|
|
16
|
+
palace_rooms: Array<{
|
|
17
|
+
name: string;
|
|
18
|
+
updated: string;
|
|
19
|
+
stale: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
summary_line: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function projectStatus(input: ProjectStatusInput): Promise<ProjectStatusResult>;
|
|
24
|
+
//# sourceMappingURL=project-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-status.d.ts","sourceRoot":"","sources":["../../src/tools-logic/project-status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvE,YAAY,EAAE,MAAM,CAAC;CACtB;AA6BD,wBAAsB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiF3F"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* project_status — one-call operational briefing for any agent landing in a long project.
|
|
3
|
+
*
|
|
4
|
+
* Synthesizes: last trajectory, active blockers, next steps, palace room freshness.
|
|
5
|
+
* Target: orient in seconds without reading multiple sources.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from "node:fs";
|
|
8
|
+
import * as path from "node:path";
|
|
9
|
+
import { resolveProject } from "../storage/project.js";
|
|
10
|
+
import { listRooms, isRoomStale } from "../palace/rooms.js";
|
|
11
|
+
import { journalDirs, palaceDir } from "../storage/paths.js";
|
|
12
|
+
import { extractSection } from "../helpers/sections.js";
|
|
13
|
+
/** Extract bullet lines (- or *) from markdown content. */
|
|
14
|
+
function extractBullets(content) {
|
|
15
|
+
return content
|
|
16
|
+
.split("\n")
|
|
17
|
+
.map((l) => l.trim())
|
|
18
|
+
.filter((l) => l.startsWith("- ") || l.startsWith("* "))
|
|
19
|
+
.map((l) => l.slice(2).trim())
|
|
20
|
+
.filter(Boolean);
|
|
21
|
+
}
|
|
22
|
+
/** Read all .md files in a room directory (skip README.md) and return their concatenated content. */
|
|
23
|
+
function readRoomMarkdown(roomPath) {
|
|
24
|
+
if (!fs.existsSync(roomPath))
|
|
25
|
+
return "";
|
|
26
|
+
const files = fs.readdirSync(roomPath).filter((f) => f.endsWith(".md") && f !== "README.md");
|
|
27
|
+
return files
|
|
28
|
+
.map((f) => {
|
|
29
|
+
try {
|
|
30
|
+
return fs.readFileSync(path.join(roomPath, f), "utf-8");
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return "";
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
.join("\n");
|
|
37
|
+
}
|
|
38
|
+
export async function projectStatus(input) {
|
|
39
|
+
const slug = await resolveProject(input.project);
|
|
40
|
+
// 1. Palace rooms — list all, compute stale flag
|
|
41
|
+
const rooms = listRooms(slug);
|
|
42
|
+
const palace_rooms = rooms.map((r) => ({
|
|
43
|
+
name: r.name,
|
|
44
|
+
updated: r.updated.slice(0, 10),
|
|
45
|
+
stale: isRoomStale(r),
|
|
46
|
+
}));
|
|
47
|
+
// 2. Active blockers — read palace/rooms/blockers/ markdown files
|
|
48
|
+
const pd = palaceDir(slug);
|
|
49
|
+
const blockersPath = path.join(pd, "rooms", "blockers");
|
|
50
|
+
const blockersContent = readRoomMarkdown(blockersPath);
|
|
51
|
+
const active_blockers = extractBullets(blockersContent);
|
|
52
|
+
// 3. Next steps — read palace/rooms/goals/ markdown files
|
|
53
|
+
const goalsPath = path.join(pd, "rooms", "goals");
|
|
54
|
+
const goalsContent = readRoomMarkdown(goalsPath);
|
|
55
|
+
const next_steps = extractBullets(goalsContent);
|
|
56
|
+
// 4. Most recent journal — find latest file across all journal dirs
|
|
57
|
+
const dirs = journalDirs(slug);
|
|
58
|
+
let latestFile = null;
|
|
59
|
+
let latestDate = null;
|
|
60
|
+
for (const dir of dirs) {
|
|
61
|
+
if (!fs.existsSync(dir))
|
|
62
|
+
continue;
|
|
63
|
+
const files = fs.readdirSync(dir)
|
|
64
|
+
.filter((f) => f.endsWith(".md") && f !== "index.md")
|
|
65
|
+
.sort()
|
|
66
|
+
.reverse();
|
|
67
|
+
for (const file of files) {
|
|
68
|
+
const dateMatch = file.match(/^(\d{4}-\d{2}-\d{2})/);
|
|
69
|
+
if (!dateMatch)
|
|
70
|
+
continue;
|
|
71
|
+
const d = dateMatch[1];
|
|
72
|
+
if (!latestDate || d > latestDate) {
|
|
73
|
+
latestDate = d;
|
|
74
|
+
latestFile = path.join(dir, file);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// 5. Extract trajectory from latest journal (stored under ## Next)
|
|
79
|
+
let last_trajectory = null;
|
|
80
|
+
if (latestFile && fs.existsSync(latestFile)) {
|
|
81
|
+
try {
|
|
82
|
+
const content = fs.readFileSync(latestFile, "utf-8");
|
|
83
|
+
const nextSection = extractSection(content, "next");
|
|
84
|
+
if (nextSection) {
|
|
85
|
+
// Strip the header line "## Next", take remaining non-empty lines
|
|
86
|
+
const lines = nextSection
|
|
87
|
+
.split("\n")
|
|
88
|
+
.slice(1)
|
|
89
|
+
.map((l) => l.trim())
|
|
90
|
+
.filter(Boolean);
|
|
91
|
+
last_trajectory = lines.join(" ") || null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// non-blocking
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// 6. Assemble summary line
|
|
99
|
+
const blockerCount = active_blockers.length;
|
|
100
|
+
const datePart = latestDate ?? "no journal";
|
|
101
|
+
const trajectorySnippet = last_trajectory
|
|
102
|
+
? last_trajectory.slice(0, 80) + (last_trajectory.length > 80 ? "…" : "")
|
|
103
|
+
: "no trajectory";
|
|
104
|
+
const summary_line = `${blockerCount} blocker${blockerCount !== 1 ? "s" : ""} | last session: ${datePart} | ${trajectorySnippet}`;
|
|
105
|
+
return {
|
|
106
|
+
project: slug,
|
|
107
|
+
last_trajectory,
|
|
108
|
+
active_blockers,
|
|
109
|
+
next_steps,
|
|
110
|
+
last_journal_date: latestDate,
|
|
111
|
+
palace_rooms,
|
|
112
|
+
summary_line,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=project-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-status.js","sourceRoot":"","sources":["../../src/tools-logic/project-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,12 @@ export interface MergeSuggestion {
|
|
|
23
23
|
overlap_keywords: string[];
|
|
24
24
|
reason: string;
|
|
25
25
|
}
|
|
26
|
+
export interface InsightQualityWarning {
|
|
27
|
+
index: number;
|
|
28
|
+
title: string;
|
|
29
|
+
issues: string[];
|
|
30
|
+
suggestion: string;
|
|
31
|
+
}
|
|
26
32
|
export interface SessionEndResult {
|
|
27
33
|
success: boolean;
|
|
28
34
|
journal_written: boolean;
|
|
@@ -32,6 +38,8 @@ export interface SessionEndResult {
|
|
|
32
38
|
palace_consolidated: boolean;
|
|
33
39
|
card: string;
|
|
34
40
|
merge_suggestions?: MergeSuggestion[];
|
|
41
|
+
quality_warnings?: InsightQualityWarning[];
|
|
35
42
|
}
|
|
43
|
+
export declare function checkInsightQuality(insights: SessionEndInput["insights"]): InsightQualityWarning[];
|
|
36
44
|
export declare function sessionEnd(input: SessionEndInput): Promise<SessionEndResult>;
|
|
37
45
|
//# sourceMappingURL=session-end.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;KAC/C,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;KAC/C,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC5C;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GACpC,qBAAqB,EAAE,CA6CzB;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuNlF"}
|
|
@@ -15,7 +15,52 @@ import { readAwarenessState } from "../palace/awareness.js";
|
|
|
15
15
|
import { todayISO } from "../storage/fs-utils.js";
|
|
16
16
|
import { getRoot } from "../types.js";
|
|
17
17
|
import { extractKeywords } from "../helpers/auto-name.js";
|
|
18
|
+
export function checkInsightQuality(insights) {
|
|
19
|
+
if (!insights || insights.length === 0)
|
|
20
|
+
return [];
|
|
21
|
+
const warnings = [];
|
|
22
|
+
for (let i = 0; i < insights.length; i++) {
|
|
23
|
+
const insight = insights[i];
|
|
24
|
+
const issues = [];
|
|
25
|
+
// Rule 1: Title too short (< 20 chars) — almost always too vague to be useful
|
|
26
|
+
if (insight.title.trim().length < 20) {
|
|
27
|
+
issues.push("Title too short (< 20 chars) — likely too vague to be useful");
|
|
28
|
+
}
|
|
29
|
+
// Rule 2: Title starts with a past-tense event verb with no outcome described
|
|
30
|
+
if (/^(fixed|resolved|updated|added|removed|changed)\s+\w/i.test(insight.title.trim()) &&
|
|
31
|
+
insight.title.length < 50) {
|
|
32
|
+
issues.push("Title describes an event ('fixed X'), not a reusable pattern — state what was learned, not what was done");
|
|
33
|
+
}
|
|
34
|
+
// Rule 3: Evidence too short (< 15 chars) — not enough to validate the insight
|
|
35
|
+
if (!insight.evidence || insight.evidence.trim().length < 15) {
|
|
36
|
+
issues.push("Evidence too short — add what specifically happened that confirmed this insight");
|
|
37
|
+
}
|
|
38
|
+
// Rule 4: applies_when has fewer than 2 keywords — too broad
|
|
39
|
+
if (!insight.applies_when || insight.applies_when.length < 2) {
|
|
40
|
+
issues.push("applies_when needs at least 2 keywords — when exactly would a future agent apply this?");
|
|
41
|
+
}
|
|
42
|
+
if (issues.length > 0) {
|
|
43
|
+
let suggestion = "Rewrite as: '[Specific trigger/condition] — [concrete fact + what to do]'";
|
|
44
|
+
if (issues[0].includes("event")) {
|
|
45
|
+
suggestion = `Instead of '${insight.title}', try: 'When [condition], [concrete outcome/action]'`;
|
|
46
|
+
}
|
|
47
|
+
warnings.push({ index: i, title: insight.title, issues, suggestion });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return warnings;
|
|
51
|
+
}
|
|
18
52
|
export async function sessionEnd(input) {
|
|
53
|
+
if (!input.summary || input.summary.trim().length < 10) {
|
|
54
|
+
return {
|
|
55
|
+
success: false,
|
|
56
|
+
journal_written: false,
|
|
57
|
+
insights_processed: 0,
|
|
58
|
+
awareness_updated: false,
|
|
59
|
+
palace_consolidated: false,
|
|
60
|
+
card: "Summary too short (minimum 10 characters). Nothing saved.",
|
|
61
|
+
journal_write_error: "Summary too short (minimum 10 characters). Nothing saved.",
|
|
62
|
+
};
|
|
63
|
+
}
|
|
19
64
|
const slug = await resolveProject(input.project);
|
|
20
65
|
let journalWritten = false;
|
|
21
66
|
let journalWriteError;
|
|
@@ -66,6 +111,7 @@ export async function sessionEnd(input) {
|
|
|
66
111
|
source: i.source ?? `session_end ${new Date().toISOString().slice(0, 10)}`,
|
|
67
112
|
severity: i.severity,
|
|
68
113
|
})),
|
|
114
|
+
project: slug,
|
|
69
115
|
trajectory: input.trajectory,
|
|
70
116
|
});
|
|
71
117
|
insightsProcessed = result.insights_processed?.length ?? input.insights.length;
|
|
@@ -188,6 +234,7 @@ export async function sessionEnd(input) {
|
|
|
188
234
|
}
|
|
189
235
|
cardLines.push(line);
|
|
190
236
|
const card = cardLines.join("\n");
|
|
237
|
+
const qualityWarnings = checkInsightQuality(input.insights ?? []);
|
|
191
238
|
return {
|
|
192
239
|
success: journalWritten || awarenessUpdated,
|
|
193
240
|
journal_written: journalWritten,
|
|
@@ -197,6 +244,7 @@ export async function sessionEnd(input) {
|
|
|
197
244
|
palace_consolidated: palaceConsolidated,
|
|
198
245
|
card,
|
|
199
246
|
merge_suggestions: mergeSuggestions.length > 0 ? mergeSuggestions : undefined,
|
|
247
|
+
quality_warnings: qualityWarnings.length > 0 ? qualityWarnings : undefined,
|
|
200
248
|
};
|
|
201
249
|
}
|
|
202
250
|
//# sourceMappingURL=session-end.js.map
|
|
@@ -1 +1 @@
|
|
|
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,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,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;
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ export interface SessionStartResult {
|
|
|
23
23
|
salience: number;
|
|
24
24
|
one_liner: string;
|
|
25
25
|
topics?: string[];
|
|
26
|
+
last_updated: string;
|
|
27
|
+
stale: boolean;
|
|
26
28
|
}>;
|
|
27
29
|
cross_project: Array<{
|
|
28
30
|
title: string;
|
|
@@ -36,6 +38,11 @@ export interface SessionStartResult {
|
|
|
36
38
|
};
|
|
37
39
|
watch_for: WatchForPattern[];
|
|
38
40
|
corrections: CorrectionRecord[];
|
|
41
|
+
resume: {
|
|
42
|
+
last_date: string | null;
|
|
43
|
+
last_trajectory: string | null;
|
|
44
|
+
sessions_count: number;
|
|
45
|
+
} | null;
|
|
39
46
|
}
|
|
40
47
|
export declare function sessionStart(input: SessionStartInput): Promise<SessionStartResult>;
|
|
41
48
|
//# sourceMappingURL=session-start.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAChH,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAarF,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,CAAA;KAAE,CAAC,CAAC;IACxE,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,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAChH,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAarF,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,CAAA;KAAE,CAAC,CAAC;IACxE,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,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;CACV;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsJxF"}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* Target: <400 tokens output. No awareness duplication.
|
|
6
6
|
*/
|
|
7
7
|
import { resolveProject } from "../storage/project.js";
|
|
8
|
-
import { ensurePalaceInitialized, listRooms } from "../palace/rooms.js";
|
|
8
|
+
import { ensurePalaceInitialized, listRooms, isRoomStale } from "../palace/rooms.js";
|
|
9
9
|
import { readIdentity } from "../palace/identity.js";
|
|
10
10
|
import { readAwarenessState } from "../palace/awareness.js";
|
|
11
11
|
import { recallInsights } from "../palace/insights-index.js";
|
|
12
|
-
import { journalDirs
|
|
12
|
+
import { journalDirs } from "../storage/paths.js";
|
|
13
13
|
import { extractSection } from "../helpers/sections.js";
|
|
14
14
|
import { todayISO } from "../storage/fs-utils.js";
|
|
15
15
|
import { readAlignmentLog, extractWatchPatterns } from "../helpers/alignment-patterns.js";
|
|
@@ -58,7 +58,7 @@ export async function sessionStart(input) {
|
|
|
58
58
|
const insights = sortedInsights.slice(0, 5).map((i) => ({
|
|
59
59
|
title: sliceAtWord(i.title, 200),
|
|
60
60
|
confirmed: i.confirmations ?? 1,
|
|
61
|
-
severity: "important",
|
|
61
|
+
severity: i.severity ?? "important",
|
|
62
62
|
}));
|
|
63
63
|
// 3. Active rooms — top 5 by salience
|
|
64
64
|
const rooms = listRooms(slug).slice(0, 5);
|
|
@@ -66,30 +66,25 @@ export async function sessionStart(input) {
|
|
|
66
66
|
name: r.name,
|
|
67
67
|
salience: r.salience,
|
|
68
68
|
one_liner: sliceAtWord(r.description, 200),
|
|
69
|
+
last_updated: r.updated,
|
|
70
|
+
stale: isRoomStale(r),
|
|
69
71
|
}));
|
|
70
|
-
// 3b.
|
|
71
|
-
|
|
72
|
-
for (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (allContent.length > 0) {
|
|
79
|
-
const topics = extractKeywords(allContent, 4);
|
|
80
|
-
if (topics.length > 0)
|
|
81
|
-
room.topics = topics;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
72
|
+
// 3b. Populate topics from room description (clean semantic labels)
|
|
73
|
+
// Previously extracted from raw file content — produced noisy date/name keywords.
|
|
74
|
+
for (let i = 0; i < active_rooms.length; i++) {
|
|
75
|
+
const meta = rooms[i]; // RoomMeta, aligned with active_rooms by index
|
|
76
|
+
if (meta.description) {
|
|
77
|
+
const topics = extractKeywords(meta.description, 4);
|
|
78
|
+
if (topics.length > 0)
|
|
79
|
+
active_rooms[i].topics = topics;
|
|
84
80
|
}
|
|
85
|
-
catch { /* non-blocking — topics are best-effort */ }
|
|
86
81
|
}
|
|
87
82
|
// 4. Cross-project insights matching current context
|
|
88
83
|
const context = input.context ?? slug;
|
|
89
84
|
const matched = recallInsights(context, 5);
|
|
90
85
|
const cross_project = matched.map((i) => ({
|
|
91
86
|
title: sliceAtWord(i.title, 100),
|
|
92
|
-
from_project: (i.source ?? "unknown").slice(0, 30),
|
|
87
|
+
from_project: (i.projects?.[0] ?? i.source ?? "unknown").slice(0, 30),
|
|
93
88
|
relevance: Math.round((i.relevance ?? 0) * 100) / 100,
|
|
94
89
|
}));
|
|
95
90
|
// 5. Recent journal briefs — today + yesterday only
|
|
@@ -129,6 +124,43 @@ export async function sessionStart(input) {
|
|
|
129
124
|
const watch_for = extractWatchPatterns(alignLog, 2);
|
|
130
125
|
// 7. P0 corrections — always-load behavioral rules (max 10 most recent)
|
|
131
126
|
const corrections = readP0Corrections(slug).slice(0, 10);
|
|
127
|
+
// 8. Resume block — structured re-entry briefing for returning sessions
|
|
128
|
+
const sessionsCount = olderCount + (yesterdayBrief ? 1 : 0) + (todayBrief ? 1 : 0);
|
|
129
|
+
let resume = null;
|
|
130
|
+
if (sessionsCount > 0) {
|
|
131
|
+
// Find the most recent journal file across all journal dirs
|
|
132
|
+
let mostRecentDate = null;
|
|
133
|
+
let mostRecentFilePath = null;
|
|
134
|
+
for (const dir of dirs) {
|
|
135
|
+
if (!fs.existsSync(dir))
|
|
136
|
+
continue;
|
|
137
|
+
const files = fs.readdirSync(dir).filter((f) => f.endsWith(".md")).sort().reverse();
|
|
138
|
+
for (const file of files) {
|
|
139
|
+
const dateMatch = file.match(/^(\d{4}-\d{2}-\d{2})/);
|
|
140
|
+
if (!dateMatch)
|
|
141
|
+
continue;
|
|
142
|
+
const d = dateMatch[1];
|
|
143
|
+
if (!mostRecentDate || d > mostRecentDate) {
|
|
144
|
+
mostRecentDate = d;
|
|
145
|
+
mostRecentFilePath = path.join(dir, file);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
let lastTrajectory = null;
|
|
150
|
+
if (mostRecentFilePath && fs.existsSync(mostRecentFilePath)) {
|
|
151
|
+
const content = fs.readFileSync(mostRecentFilePath, "utf-8");
|
|
152
|
+
// session_end writes trajectory under "## Next" — use "next" key to extract it
|
|
153
|
+
const trajectorySection = extractSection(content, "next") ?? extractSection(content, "trajectory");
|
|
154
|
+
if (trajectorySection) {
|
|
155
|
+
lastTrajectory = sliceAtWord(trajectorySection, 200);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
resume = {
|
|
159
|
+
last_date: mostRecentDate,
|
|
160
|
+
last_trajectory: lastTrajectory,
|
|
161
|
+
sessions_count: sessionsCount,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
132
164
|
return {
|
|
133
165
|
project: slug,
|
|
134
166
|
identity,
|
|
@@ -138,6 +170,7 @@ export async function sessionStart(input) {
|
|
|
138
170
|
recent: { today: todayBrief, yesterday: yesterdayBrief, older_count: olderCount },
|
|
139
171
|
watch_for,
|
|
140
172
|
corrections,
|
|
173
|
+
resume,
|
|
141
174
|
};
|
|
142
175
|
}
|
|
143
176
|
//# sourceMappingURL=session-start.js.map
|