agent-recall-core 3.3.10 → 3.3.12
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 +2 -2
- package/dist/helpers/alignment-patterns.d.ts +19 -0
- package/dist/helpers/alignment-patterns.d.ts.map +1 -0
- package/dist/helpers/alignment-patterns.js +50 -0
- package/dist/helpers/alignment-patterns.js.map +1 -0
- package/dist/helpers/auto-name.d.ts +42 -0
- package/dist/helpers/auto-name.d.ts.map +1 -0
- package/dist/helpers/auto-name.js +210 -0
- package/dist/helpers/auto-name.js.map +1 -0
- package/dist/helpers/journal-files.d.ts.map +1 -1
- package/dist/helpers/journal-files.js +28 -0
- package/dist/helpers/journal-files.js.map +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/palace/awareness.d.ts +4 -0
- package/dist/palace/awareness.d.ts.map +1 -1
- package/dist/palace/awareness.js +107 -17
- package/dist/palace/awareness.js.map +1 -1
- package/dist/palace/fan-out.d.ts.map +1 -1
- package/dist/palace/fan-out.js +30 -1
- package/dist/palace/fan-out.js.map +1 -1
- package/dist/tools-logic/alignment-check.d.ts.map +1 -1
- package/dist/tools-logic/alignment-check.js +6 -1
- package/dist/tools-logic/alignment-check.js.map +1 -1
- package/dist/tools-logic/check.d.ts +33 -0
- package/dist/tools-logic/check.d.ts.map +1 -0
- package/dist/tools-logic/check.js +135 -0
- package/dist/tools-logic/check.js.map +1 -0
- package/dist/tools-logic/journal-capture.d.ts +1 -0
- package/dist/tools-logic/journal-capture.d.ts.map +1 -1
- package/dist/tools-logic/journal-capture.js +11 -1
- package/dist/tools-logic/journal-capture.js.map +1 -1
- package/dist/tools-logic/journal-search.d.ts.map +1 -1
- package/dist/tools-logic/journal-search.js +29 -7
- package/dist/tools-logic/journal-search.js.map +1 -1
- package/dist/tools-logic/knowledge-write.d.ts.map +1 -1
- package/dist/tools-logic/knowledge-write.js +16 -3
- package/dist/tools-logic/knowledge-write.js.map +1 -1
- package/dist/tools-logic/palace-write.d.ts +2 -0
- package/dist/tools-logic/palace-write.d.ts.map +1 -1
- package/dist/tools-logic/palace-write.js +13 -1
- package/dist/tools-logic/palace-write.js.map +1 -1
- package/dist/tools-logic/session-end.d.ts +26 -0
- package/dist/tools-logic/session-end.d.ts.map +1 -0
- package/dist/tools-logic/session-end.js +68 -0
- package/dist/tools-logic/session-end.js.map +1 -0
- package/dist/tools-logic/session-start.d.ts +38 -0
- package/dist/tools-logic/session-start.d.ts.map +1 -0
- package/dist/tools-logic/session-start.js +112 -0
- package/dist/tools-logic/session-start.js.map +1 -0
- package/dist/tools-logic/smart-recall.d.ts +35 -0
- package/dist/tools-logic/smart-recall.d.ts.map +1 -0
- package/dist/tools-logic/smart-recall.js +199 -0
- package/dist/tools-logic/smart-recall.js.map +1 -0
- package/dist/tools-logic/smart-remember.d.ts +20 -0
- package/dist/tools-logic/smart-remember.d.ts.map +1 -0
- package/dist/tools-logic/smart-remember.js +138 -0
- package/dist/tools-logic/smart-remember.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/package.json +1 -1
|
@@ -3,10 +3,32 @@ import * as path from "node:path";
|
|
|
3
3
|
import { resolveProject } from "../storage/project.js";
|
|
4
4
|
import { journalDirs, palaceDir } from "../storage/paths.js";
|
|
5
5
|
import { ensurePalaceInitialized, listRooms } from "../palace/rooms.js";
|
|
6
|
+
/** Split query into keywords (length > 2) for keyword-based matching. */
|
|
7
|
+
function queryKeywords(query) {
|
|
8
|
+
return query.toLowerCase().split(/\s+/).filter((w) => w.length > 2);
|
|
9
|
+
}
|
|
10
|
+
/** Return true if line contains enough query keywords (threshold: ≥1 keyword match). */
|
|
11
|
+
function lineMatchesQuery(line, keywords) {
|
|
12
|
+
if (keywords.length === 0)
|
|
13
|
+
return false;
|
|
14
|
+
const lineLower = line.toLowerCase();
|
|
15
|
+
return keywords.some((kw) => lineLower.includes(kw));
|
|
16
|
+
}
|
|
17
|
+
/** Find first keyword match position in line for excerpt anchoring. */
|
|
18
|
+
function firstMatchIndex(line, keywords) {
|
|
19
|
+
const lineLower = line.toLowerCase();
|
|
20
|
+
let first = line.length;
|
|
21
|
+
for (const kw of keywords) {
|
|
22
|
+
const idx = lineLower.indexOf(kw);
|
|
23
|
+
if (idx !== -1 && idx < first)
|
|
24
|
+
first = idx;
|
|
25
|
+
}
|
|
26
|
+
return first;
|
|
27
|
+
}
|
|
6
28
|
export async function journalSearch(input) {
|
|
7
29
|
const slug = await resolveProject(input.project);
|
|
8
30
|
const dirs = journalDirs(slug);
|
|
9
|
-
const
|
|
31
|
+
const keywords = queryKeywords(input.query);
|
|
10
32
|
const results = [];
|
|
11
33
|
for (const dir of dirs) {
|
|
12
34
|
if (!fs.existsSync(dir))
|
|
@@ -24,12 +46,12 @@ export async function journalSearch(input) {
|
|
|
24
46
|
}
|
|
25
47
|
if (input.section && currentSection !== input.section.toLowerCase())
|
|
26
48
|
continue;
|
|
27
|
-
if (line
|
|
49
|
+
if (lineMatchesQuery(line, keywords)) {
|
|
28
50
|
const dateMatch = file.match(/^(\d{4}-\d{2}-\d{2})/);
|
|
29
51
|
const date = dateMatch ? dateMatch[1] : file;
|
|
30
|
-
const matchIdx = line
|
|
52
|
+
const matchIdx = firstMatchIndex(line, keywords);
|
|
31
53
|
const start = Math.max(0, matchIdx - 40);
|
|
32
|
-
const end = Math.min(line.length, matchIdx +
|
|
54
|
+
const end = Math.min(line.length, matchIdx + 80);
|
|
33
55
|
let excerpt = line.slice(start, end).trim();
|
|
34
56
|
if (start > 0)
|
|
35
57
|
excerpt = "..." + excerpt;
|
|
@@ -55,10 +77,10 @@ export async function journalSearch(input) {
|
|
|
55
77
|
const content = fs.readFileSync(filePath, "utf-8");
|
|
56
78
|
const lines = content.split("\n");
|
|
57
79
|
for (let i = 0; i < lines.length; i++) {
|
|
58
|
-
if (lines[i]
|
|
59
|
-
const matchIdx = lines[i]
|
|
80
|
+
if (lineMatchesQuery(lines[i], keywords)) {
|
|
81
|
+
const matchIdx = firstMatchIndex(lines[i], keywords);
|
|
60
82
|
const start = Math.max(0, matchIdx - 40);
|
|
61
|
-
const end = Math.min(lines[i].length, matchIdx +
|
|
83
|
+
const end = Math.min(lines[i].length, matchIdx + 80);
|
|
62
84
|
let excerpt = lines[i].slice(start, end).trim();
|
|
63
85
|
if (start > 0)
|
|
64
86
|
excerpt = "..." + excerpt;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal-search.js","sourceRoot":"","sources":["../../src/tools-logic/journal-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,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAaxE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAyB;IAC3D,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,
|
|
1
|
+
{"version":3,"file":"journal-search.js","sourceRoot":"","sources":["../../src/tools-logic/journal-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/knowledge-write.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"knowledge-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/knowledge-write.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAChD;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkE9F"}
|
|
@@ -7,10 +7,16 @@ import { getRoot } from "../types.js";
|
|
|
7
7
|
import { ensurePalaceInitialized, roomExists, createRoom } from "../palace/rooms.js";
|
|
8
8
|
import { fanOut } from "../palace/fan-out.js";
|
|
9
9
|
import { updatePalaceIndex } from "../palace/index-manager.js";
|
|
10
|
+
import { generateSlug } from "../helpers/auto-name.js";
|
|
10
11
|
export async function knowledgeWrite(input) {
|
|
11
12
|
const slug = await resolveProject(input.project);
|
|
12
13
|
const safe = slug.replace(/[^a-zA-Z0-9_\-\.]/g, "-");
|
|
13
|
-
|
|
14
|
+
let safeCategory = input.category.replace(/[^a-zA-Z0-9_\-]/g, "-").toLowerCase();
|
|
15
|
+
// Auto-slug: generate meaningful category name for generic categories
|
|
16
|
+
if (["general", "misc", "other"].includes(safeCategory)) {
|
|
17
|
+
const autoSlug = generateSlug(input.what_happened, {});
|
|
18
|
+
safeCategory = autoSlug.slug.split("-").slice(0, 3).join("-");
|
|
19
|
+
}
|
|
14
20
|
const date = todayISO();
|
|
15
21
|
const severity = input.severity ?? "important";
|
|
16
22
|
let entry = `### ${input.title} (${slug}, ${date})\n`;
|
|
@@ -29,7 +35,11 @@ export async function knowledgeWrite(input) {
|
|
|
29
35
|
fs.writeFileSync(legacyPath, `# Knowledge — ${input.category}\n\n${entry}`, "utf-8");
|
|
30
36
|
}
|
|
31
37
|
else {
|
|
32
|
-
fs.
|
|
38
|
+
const legacyContent = fs.readFileSync(legacyPath, "utf-8");
|
|
39
|
+
// Dedup: skip if same title already recorded today
|
|
40
|
+
if (!legacyContent.includes(`### ${input.title} (${slug}, ${date})`)) {
|
|
41
|
+
fs.appendFileSync(legacyPath, entry, "utf-8");
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
44
|
let palaceResult = null;
|
|
35
45
|
try {
|
|
@@ -44,7 +54,10 @@ export async function knowledgeWrite(input) {
|
|
|
44
54
|
fs.writeFileSync(topicPath, `# knowledge / ${input.category}\n\n${entry}`, "utf-8");
|
|
45
55
|
}
|
|
46
56
|
else {
|
|
47
|
-
fs.
|
|
57
|
+
const topicContent = fs.readFileSync(topicPath, "utf-8");
|
|
58
|
+
if (!topicContent.includes(`### ${input.title} (${slug}, ${date})`)) {
|
|
59
|
+
fs.appendFileSync(topicPath, entry, "utf-8");
|
|
60
|
+
}
|
|
48
61
|
}
|
|
49
62
|
fanOut(slug, "knowledge", safeCategory, `${input.title}: ${input.what_happened}`, [], severity === "critical" ? "high" : "medium");
|
|
50
63
|
updatePalaceIndex(slug);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-write.js","sourceRoot":"","sources":["../../src/tools-logic/knowledge-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge-write.js","sourceRoot":"","sources":["../../src/tools-logic/knowledge-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export interface PalaceWriteInput {
|
|
|
6
6
|
connections?: string[];
|
|
7
7
|
importance?: Importance;
|
|
8
8
|
project?: string;
|
|
9
|
+
auto_name?: boolean;
|
|
9
10
|
}
|
|
10
11
|
export interface PalaceWriteResult {
|
|
11
12
|
success: boolean;
|
|
@@ -17,6 +18,7 @@ export interface PalaceWriteResult {
|
|
|
17
18
|
updated_rooms: string[];
|
|
18
19
|
new_edges: number;
|
|
19
20
|
};
|
|
21
|
+
generated_name?: string;
|
|
20
22
|
}
|
|
21
23
|
export declare function palaceWrite(input: PalaceWriteInput): Promise<PalaceWriteResult>;
|
|
22
24
|
//# sourceMappingURL=palace-write.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palace-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/palace-write.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"palace-write.d.ts","sourceRoot":"","sources":["../../src/tools-logic/palace-write.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE;QAAE,aAAa,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAoErF"}
|
|
@@ -8,6 +8,7 @@ import { fanOut } from "../palace/fan-out.js";
|
|
|
8
8
|
import { updatePalaceIndex } from "../palace/index-manager.js";
|
|
9
9
|
import { generateFrontmatter } from "../palace/obsidian.js";
|
|
10
10
|
import { appendToLog } from "../palace/log.js";
|
|
11
|
+
import { generateSlug } from "../helpers/auto-name.js";
|
|
11
12
|
export async function palaceWrite(input) {
|
|
12
13
|
const slug = await resolveProject(input.project);
|
|
13
14
|
const importance = input.importance ?? "medium";
|
|
@@ -16,7 +17,17 @@ export async function palaceWrite(input) {
|
|
|
16
17
|
createRoom(slug, input.room, input.room.charAt(0).toUpperCase() + input.room.slice(1), `Auto-created room for ${input.room}`, []);
|
|
17
18
|
}
|
|
18
19
|
const pd = palaceDir(slug);
|
|
19
|
-
|
|
20
|
+
// Auto-naming: generate topic name from content when explicitly enabled
|
|
21
|
+
// Default: false (preserves backward compat — no topic means README)
|
|
22
|
+
// smart_remember sets auto_name=true to get semantic topic names
|
|
23
|
+
let targetTopic = input.topic;
|
|
24
|
+
let generatedName;
|
|
25
|
+
if (!targetTopic && input.auto_name === true) {
|
|
26
|
+
const slugResult = generateSlug(input.content, { room: input.room });
|
|
27
|
+
targetTopic = slugResult.slug;
|
|
28
|
+
generatedName = slugResult.slug;
|
|
29
|
+
}
|
|
30
|
+
targetTopic = targetTopic ?? "README";
|
|
20
31
|
const targetFile = path.join(pd, "rooms", input.room, `${targetTopic}.md`);
|
|
21
32
|
ensureDir(path.dirname(targetFile));
|
|
22
33
|
const timestamp = new Date().toISOString();
|
|
@@ -55,6 +66,7 @@ export async function palaceWrite(input) {
|
|
|
55
66
|
project: slug,
|
|
56
67
|
importance,
|
|
57
68
|
fan_out: { updated_rooms: fanOutResult.updatedRooms, new_edges: fanOutResult.newEdges },
|
|
69
|
+
generated_name: generatedName,
|
|
58
70
|
};
|
|
59
71
|
}
|
|
60
72
|
//# sourceMappingURL=palace-write.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palace-write.js","sourceRoot":"","sources":["../../src/tools-logic/palace-write.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,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"palace-write.js","sourceRoot":"","sources":["../../src/tools-logic/palace-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session_end — combined session save in one call.
|
|
3
|
+
*
|
|
4
|
+
* Replaces: awareness_update + journal_write + palace consolidation
|
|
5
|
+
*/
|
|
6
|
+
export interface SessionEndInput {
|
|
7
|
+
summary: string;
|
|
8
|
+
insights?: Array<{
|
|
9
|
+
title: string;
|
|
10
|
+
evidence: string;
|
|
11
|
+
applies_when: string[];
|
|
12
|
+
source?: string;
|
|
13
|
+
severity?: "critical" | "important" | "minor";
|
|
14
|
+
}>;
|
|
15
|
+
trajectory?: string;
|
|
16
|
+
project?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SessionEndResult {
|
|
19
|
+
success: boolean;
|
|
20
|
+
journal_written: boolean;
|
|
21
|
+
insights_processed: number;
|
|
22
|
+
awareness_updated: boolean;
|
|
23
|
+
palace_consolidated: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function sessionEnd(input: SessionEndInput): Promise<SessionEndResult>;
|
|
26
|
+
//# sourceMappingURL=session-end.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-end.d.ts","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,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;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0DlF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session_end — combined session save in one call.
|
|
3
|
+
*
|
|
4
|
+
* Replaces: awareness_update + journal_write + palace consolidation
|
|
5
|
+
*/
|
|
6
|
+
import { journalWrite } from "./journal-write.js";
|
|
7
|
+
import { awarenessUpdate } from "./awareness-update.js";
|
|
8
|
+
import { consolidateJournalToPalace } from "../palace/consolidate.js";
|
|
9
|
+
import { resolveProject } from "../storage/project.js";
|
|
10
|
+
import { ensurePalaceInitialized } from "../palace/rooms.js";
|
|
11
|
+
export async function sessionEnd(input) {
|
|
12
|
+
const slug = await resolveProject(input.project);
|
|
13
|
+
let journalWritten = false;
|
|
14
|
+
let insightsProcessed = 0;
|
|
15
|
+
let awarenessUpdated = false;
|
|
16
|
+
let palaceConsolidated = false;
|
|
17
|
+
// 1. Write journal summary
|
|
18
|
+
try {
|
|
19
|
+
const journalContent = [
|
|
20
|
+
"## Brief",
|
|
21
|
+
input.summary,
|
|
22
|
+
"",
|
|
23
|
+
input.trajectory ? `## Next\n${input.trajectory}` : "",
|
|
24
|
+
].filter(Boolean).join("\n");
|
|
25
|
+
await journalWrite({ content: journalContent, project: slug });
|
|
26
|
+
journalWritten = true;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Journal write is best-effort
|
|
30
|
+
}
|
|
31
|
+
// 2. Update awareness with insights
|
|
32
|
+
if (input.insights && input.insights.length > 0) {
|
|
33
|
+
try {
|
|
34
|
+
const result = await awarenessUpdate({
|
|
35
|
+
insights: input.insights.map((i) => ({
|
|
36
|
+
title: i.title,
|
|
37
|
+
evidence: i.evidence,
|
|
38
|
+
applies_when: i.applies_when,
|
|
39
|
+
source: i.source ?? `session_end ${new Date().toISOString().slice(0, 10)}`,
|
|
40
|
+
severity: i.severity,
|
|
41
|
+
})),
|
|
42
|
+
trajectory: input.trajectory,
|
|
43
|
+
});
|
|
44
|
+
insightsProcessed = result.insights_processed?.length ?? input.insights.length;
|
|
45
|
+
awarenessUpdated = true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Awareness update is best-effort
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// 3. Consolidate journal to palace
|
|
52
|
+
try {
|
|
53
|
+
ensurePalaceInitialized(slug);
|
|
54
|
+
consolidateJournalToPalace(slug);
|
|
55
|
+
palaceConsolidated = true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Consolidation is best-effort
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
success: journalWritten || awarenessUpdated,
|
|
62
|
+
journal_written: journalWritten,
|
|
63
|
+
insights_processed: insightsProcessed,
|
|
64
|
+
awareness_updated: awarenessUpdated,
|
|
65
|
+
palace_consolidated: palaceConsolidated,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=session-end.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-end.js","sourceRoot":"","sources":["../../src/tools-logic/session-end.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,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,MAAM,oBAAoB,CAAC;AAuB7D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,2BAA2B;IAC3B,IAAI,CAAC;QACH,MAAM,cAAc,GAAG;YACrB,UAAU;YACV,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,YAAY,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IAED,oCAAoC;IACpC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,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,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB,CAAC,CAAC;gBACH,UAAU,EAAE,KAAK,CAAC,UAAU;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,MAAM,CAAC;YACP,kCAAkC;QACpC,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,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,cAAc,IAAI,gBAAgB;QAC3C,eAAe,EAAE,cAAc;QAC/B,kBAAkB,EAAE,iBAAiB;QACrC,iBAAiB,EAAE,gBAAgB;QACnC,mBAAmB,EAAE,kBAAkB;KACxC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session_start — combined cold-start in one call.
|
|
3
|
+
*
|
|
4
|
+
* Replaces: journal_cold_start + palace_walk + recall_insight
|
|
5
|
+
* Target: <400 tokens output. No awareness duplication.
|
|
6
|
+
*/
|
|
7
|
+
import { type WatchForPattern } from "../helpers/alignment-patterns.js";
|
|
8
|
+
export interface SessionStartInput {
|
|
9
|
+
project?: string;
|
|
10
|
+
context?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface SessionStartResult {
|
|
13
|
+
project: string;
|
|
14
|
+
identity: string;
|
|
15
|
+
insights: Array<{
|
|
16
|
+
title: string;
|
|
17
|
+
confirmed: number;
|
|
18
|
+
severity: string;
|
|
19
|
+
}>;
|
|
20
|
+
active_rooms: Array<{
|
|
21
|
+
name: string;
|
|
22
|
+
salience: number;
|
|
23
|
+
one_liner: string;
|
|
24
|
+
}>;
|
|
25
|
+
cross_project: Array<{
|
|
26
|
+
title: string;
|
|
27
|
+
from_project: string;
|
|
28
|
+
relevance: number;
|
|
29
|
+
}>;
|
|
30
|
+
recent: {
|
|
31
|
+
today: string | null;
|
|
32
|
+
yesterday: string | null;
|
|
33
|
+
older_count: number;
|
|
34
|
+
};
|
|
35
|
+
watch_for: WatchForPattern[];
|
|
36
|
+
}
|
|
37
|
+
export declare function sessionStart(input: SessionStartInput): Promise<SessionStartResult>;
|
|
38
|
+
//# sourceMappingURL=session-start.d.ts.map
|
|
@@ -0,0 +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;AAIhH,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,CAAA;KAAE,CAAC,CAAC;IAC3E,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;CAC9B;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA4FxF"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* session_start — combined cold-start in one call.
|
|
3
|
+
*
|
|
4
|
+
* Replaces: journal_cold_start + palace_walk + recall_insight
|
|
5
|
+
* Target: <400 tokens output. No awareness duplication.
|
|
6
|
+
*/
|
|
7
|
+
import { resolveProject } from "../storage/project.js";
|
|
8
|
+
import { ensurePalaceInitialized, listRooms } from "../palace/rooms.js";
|
|
9
|
+
import { readIdentity } from "../palace/identity.js";
|
|
10
|
+
import { readAwarenessState } from "../palace/awareness.js";
|
|
11
|
+
import { recallInsights } from "../palace/insights-index.js";
|
|
12
|
+
import { journalDirs } from "../storage/paths.js";
|
|
13
|
+
import { extractSection } from "../helpers/sections.js";
|
|
14
|
+
import { todayISO } from "../storage/fs-utils.js";
|
|
15
|
+
import { readAlignmentLog, extractWatchPatterns } from "../helpers/alignment-patterns.js";
|
|
16
|
+
import * as fs from "node:fs";
|
|
17
|
+
import * as path from "node:path";
|
|
18
|
+
export async function sessionStart(input) {
|
|
19
|
+
const slug = await resolveProject(input.project);
|
|
20
|
+
ensurePalaceInitialized(slug);
|
|
21
|
+
// 1. Identity — first meaningful lines, skipping YAML frontmatter keys and empty template stubs
|
|
22
|
+
const rawIdentity = readIdentity(slug);
|
|
23
|
+
const identityLines = rawIdentity.split("\n").filter((l) => {
|
|
24
|
+
const t = l.trim();
|
|
25
|
+
if (!t)
|
|
26
|
+
return false;
|
|
27
|
+
if (t.startsWith("---"))
|
|
28
|
+
return false;
|
|
29
|
+
if (t.startsWith(">"))
|
|
30
|
+
return false;
|
|
31
|
+
// Skip raw YAML frontmatter key-value lines like "project: foo" or "created: ..."
|
|
32
|
+
if (/^[a-z_]+:\s/.test(t))
|
|
33
|
+
return false;
|
|
34
|
+
// Skip unfilled template stubs
|
|
35
|
+
if (t.startsWith("_(fill in"))
|
|
36
|
+
return false;
|
|
37
|
+
return true;
|
|
38
|
+
});
|
|
39
|
+
const identity = identityLines.slice(0, 2).map((l) => l.trim().replace(/^#+\s*/, "")).join(" ").trim() || slug;
|
|
40
|
+
// 2. Top insights from awareness state — sort by confirmations DESC, recency DESC
|
|
41
|
+
const state = readAwarenessState();
|
|
42
|
+
const sortedInsights = (state?.topInsights ?? []).slice().sort((a, b) => {
|
|
43
|
+
if (b.confirmations !== a.confirmations)
|
|
44
|
+
return b.confirmations - a.confirmations;
|
|
45
|
+
// Tiebreak: most recently confirmed first
|
|
46
|
+
return (b.lastConfirmed ?? "").localeCompare(a.lastConfirmed ?? "");
|
|
47
|
+
});
|
|
48
|
+
const insights = sortedInsights.slice(0, 5).map((i) => ({
|
|
49
|
+
title: i.title.slice(0, 80),
|
|
50
|
+
confirmed: i.confirmations ?? 1,
|
|
51
|
+
severity: "important",
|
|
52
|
+
}));
|
|
53
|
+
// 3. Active rooms — top 3 by salience
|
|
54
|
+
const rooms = listRooms(slug).slice(0, 3);
|
|
55
|
+
const active_rooms = rooms.map((r) => ({
|
|
56
|
+
name: r.name,
|
|
57
|
+
salience: r.salience,
|
|
58
|
+
one_liner: r.description.slice(0, 80),
|
|
59
|
+
}));
|
|
60
|
+
// 4. Cross-project insights matching current context
|
|
61
|
+
const context = input.context ?? slug;
|
|
62
|
+
const matched = recallInsights(context, 3);
|
|
63
|
+
const cross_project = matched.map((i) => ({
|
|
64
|
+
title: i.title.slice(0, 80),
|
|
65
|
+
from_project: (i.source ?? "unknown").slice(0, 30),
|
|
66
|
+
relevance: Math.round((i.relevance ?? 0) * 100) / 100,
|
|
67
|
+
}));
|
|
68
|
+
// 5. Recent journal briefs — today + yesterday only
|
|
69
|
+
const dirs = journalDirs(slug);
|
|
70
|
+
const today = todayISO();
|
|
71
|
+
const yesterday = new Date(Date.now() - 86400000).toISOString().slice(0, 10);
|
|
72
|
+
let todayBrief = null;
|
|
73
|
+
let yesterdayBrief = null;
|
|
74
|
+
let olderCount = 0;
|
|
75
|
+
for (const dir of dirs) {
|
|
76
|
+
if (!fs.existsSync(dir))
|
|
77
|
+
continue;
|
|
78
|
+
const files = fs.readdirSync(dir).filter((f) => f.endsWith(".md")).sort().reverse();
|
|
79
|
+
for (const file of files) {
|
|
80
|
+
const dateMatch = file.match(/^(\d{4}-\d{2}-\d{2})/);
|
|
81
|
+
if (!dateMatch)
|
|
82
|
+
continue;
|
|
83
|
+
const d = dateMatch[1];
|
|
84
|
+
if (d === today && !todayBrief) {
|
|
85
|
+
const content = fs.readFileSync(path.join(dir, file), "utf-8");
|
|
86
|
+
const brief = extractSection(content, "brief");
|
|
87
|
+
todayBrief = brief ? brief.slice(0, 200) : content.split("\n").slice(0, 3).join(" ").slice(0, 200);
|
|
88
|
+
}
|
|
89
|
+
else if (d === yesterday && !yesterdayBrief) {
|
|
90
|
+
const content = fs.readFileSync(path.join(dir, file), "utf-8");
|
|
91
|
+
const brief = extractSection(content, "brief");
|
|
92
|
+
yesterdayBrief = brief ? brief.slice(0, 200) : content.split("\n").slice(0, 3).join(" ").slice(0, 200);
|
|
93
|
+
}
|
|
94
|
+
else if (d < yesterday) {
|
|
95
|
+
olderCount++;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// 6. Watch for — predictive warnings from past corrections
|
|
100
|
+
const alignLog = readAlignmentLog(slug);
|
|
101
|
+
const watch_for = extractWatchPatterns(alignLog, 2);
|
|
102
|
+
return {
|
|
103
|
+
project: slug,
|
|
104
|
+
identity,
|
|
105
|
+
insights,
|
|
106
|
+
active_rooms,
|
|
107
|
+
cross_project,
|
|
108
|
+
recent: { today: todayBrief, yesterday: yesterdayBrief, older_count: olderCount },
|
|
109
|
+
watch_for,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=session-start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* smart_recall — unified cross-store search.
|
|
3
|
+
*
|
|
4
|
+
* Searches palace, journal, and insights in one call.
|
|
5
|
+
* Returns ranked results with source attribution.
|
|
6
|
+
*/
|
|
7
|
+
export interface RecallFeedback {
|
|
8
|
+
id?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
useful: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface SmartRecallInput {
|
|
13
|
+
query: string;
|
|
14
|
+
project?: string;
|
|
15
|
+
limit?: number;
|
|
16
|
+
feedback?: RecallFeedback[];
|
|
17
|
+
}
|
|
18
|
+
export interface SmartRecallResultItem {
|
|
19
|
+
id: string;
|
|
20
|
+
source: "palace" | "journal" | "insight";
|
|
21
|
+
title: string;
|
|
22
|
+
excerpt: string;
|
|
23
|
+
score: number;
|
|
24
|
+
room?: string;
|
|
25
|
+
date?: string;
|
|
26
|
+
severity?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface SmartRecallResult {
|
|
29
|
+
query: string;
|
|
30
|
+
results: SmartRecallResultItem[];
|
|
31
|
+
total_searched: number;
|
|
32
|
+
sources_queried: string[];
|
|
33
|
+
}
|
|
34
|
+
export declare function smartRecall(input: SmartRecallInput): Promise<SmartRecallResult>;
|
|
35
|
+
//# sourceMappingURL=smart-recall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smart-recall.d.ts","sourceRoot":"","sources":["../../src/tools-logic/smart-recall.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAcD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAoDD,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+IrF"}
|