agent-recall-core 3.3.9 → 3.3.11
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 +111 -18
- 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 +47 -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/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -2
- 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 +102 -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/palace/insights-index.d.ts +11 -3
- package/dist/palace/insights-index.d.ts.map +1 -1
- package/dist/palace/insights-index.js +38 -7
- package/dist/palace/insights-index.js.map +1 -1
- package/dist/palace/salience.d.ts +31 -2
- package/dist/palace/salience.d.ts.map +1 -1
- package/dist/palace/salience.js +54 -9
- package/dist/palace/salience.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 +85 -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/knowledge-write.d.ts.map +1 -1
- package/dist/tools-logic/knowledge-write.js +7 -1
- 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 +91 -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 +136 -0
- package/dist/tools-logic/smart-remember.js.map +1 -0
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/palace/salience.js
CHANGED
|
@@ -1,17 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Salience scoring for palace memories and rooms.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* v2 formula (2026-04-10):
|
|
5
|
+
* salience = (recency × 0.30) + (access × 0.25) + (connections × 0.20)
|
|
6
|
+
* + (urgency × 0.15) + (importance × 0.10)
|
|
7
|
+
*
|
|
8
|
+
* Key changes from v1:
|
|
9
|
+
* - importance dropped from 0.4 → 0.1 (humans over/under-estimate)
|
|
10
|
+
* - urgency added at 0.15 ("need this today" is a clearer signal)
|
|
11
|
+
* - connections raised to 0.20 (network position matters more than self-reported importance)
|
|
12
|
+
* - access raised to 0.25 (what you actually use = what actually matters)
|
|
13
|
+
* - category-based decay: architecture decisions decay slower than daily blockers
|
|
14
|
+
* - pinned items always return 1.0
|
|
5
15
|
*/
|
|
6
16
|
const IMPORTANCE_WEIGHTS = {
|
|
7
17
|
high: 1.0,
|
|
8
18
|
medium: 0.6,
|
|
9
19
|
low: 0.3,
|
|
10
20
|
};
|
|
11
|
-
|
|
12
|
-
|
|
21
|
+
const URGENCY_WEIGHTS = {
|
|
22
|
+
today: 1.0,
|
|
23
|
+
"this-week": 0.7,
|
|
24
|
+
eventual: 0.3,
|
|
25
|
+
none: 0.0,
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Category-specific decay rates.
|
|
29
|
+
* Architecture decisions barely decay. Daily blockers decay fast.
|
|
30
|
+
* Higher = slower decay.
|
|
31
|
+
*/
|
|
32
|
+
const CATEGORY_DECAY = {
|
|
33
|
+
goal: 0.99, // goals persist — almost no decay
|
|
34
|
+
architecture: 0.98, // architecture decisions last months
|
|
35
|
+
decision: 0.97, // decisions decay slightly faster
|
|
36
|
+
lesson: 0.97, // learned lessons persist
|
|
37
|
+
observation: 0.95, // observations decay at standard rate
|
|
38
|
+
blocker: 0.90, // blockers decay fast once resolved
|
|
39
|
+
general: 0.95, // default
|
|
40
|
+
};
|
|
41
|
+
/** Category-aware exponential decay. */
|
|
42
|
+
function recencyScore(lastUpdated, category = "general") {
|
|
13
43
|
const days = (Date.now() - new Date(lastUpdated).getTime()) / (1000 * 60 * 60 * 24);
|
|
14
|
-
|
|
44
|
+
const rate = CATEGORY_DECAY[category] ?? 0.95;
|
|
45
|
+
return Math.max(0.05, Math.pow(rate, days));
|
|
15
46
|
}
|
|
16
47
|
/** Normalized access frequency: min(1.0, count / 20). */
|
|
17
48
|
function accessScore(accessCount) {
|
|
@@ -21,13 +52,27 @@ function accessScore(accessCount) {
|
|
|
21
52
|
function connectionScore(edgeCount) {
|
|
22
53
|
return Math.min(1.0, edgeCount / 10);
|
|
23
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Compute salience score.
|
|
57
|
+
*
|
|
58
|
+
* Backward-compatible: urgency, category, and pin are optional.
|
|
59
|
+
* If omitted, urgency defaults to "none" (0 contribution),
|
|
60
|
+
* category defaults to "general" (standard decay),
|
|
61
|
+
* and pin defaults to unpinned.
|
|
62
|
+
*/
|
|
24
63
|
export function computeSalience(params) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
|
|
64
|
+
// Pinned items always return maximum salience
|
|
65
|
+
if (params.pin?.pinned)
|
|
66
|
+
return 1.0;
|
|
67
|
+
const imp = IMPORTANCE_WEIGHTS[params.importance] * 0.10;
|
|
68
|
+
const rec = recencyScore(params.lastUpdated, params.category) * 0.30;
|
|
69
|
+
const acc = accessScore(params.accessCount) * 0.25;
|
|
70
|
+
const con = connectionScore(params.connectionCount) * 0.20;
|
|
71
|
+
const urg = URGENCY_WEIGHTS[params.urgency ?? "none"] * 0.15;
|
|
72
|
+
return Math.round((imp + rec + acc + con + urg) * 1000) / 1000;
|
|
30
73
|
}
|
|
31
74
|
export const ARCHIVE_THRESHOLD = 0.15;
|
|
32
75
|
export const AUTO_ARCHIVE_THRESHOLD = 0.05;
|
|
76
|
+
// Export category decay for testing/debugging
|
|
77
|
+
export { CATEGORY_DECAY, URGENCY_WEIGHTS };
|
|
33
78
|
//# sourceMappingURL=salience.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"salience.js","sourceRoot":"","sources":["../../src/palace/salience.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"salience.js","sourceRoot":"","sources":["../../src/palace/salience.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,MAAM,kBAAkB,GAA+B;IACrD,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;CACT,CAAC;AAEF,MAAM,eAAe,GAA4B;IAC/C,KAAK,EAAE,GAAG;IACV,WAAW,EAAE,GAAG;IAChB,QAAQ,EAAE,GAAG;IACb,IAAI,EAAE,GAAG;CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,cAAc,GAAmC;IACrD,IAAI,EAAE,IAAI,EAAW,kCAAkC;IACvD,YAAY,EAAE,IAAI,EAAG,qCAAqC;IAC1D,QAAQ,EAAE,IAAI,EAAO,kCAAkC;IACvD,MAAM,EAAE,IAAI,EAAS,0BAA0B;IAC/C,WAAW,EAAE,IAAI,EAAI,sCAAsC;IAC3D,OAAO,EAAE,IAAI,EAAQ,oCAAoC;IACzD,OAAO,EAAE,IAAI,EAAQ,UAAU;CAChC,CAAC;AAEF,wCAAwC;AACxC,SAAS,YAAY,CAAC,WAAmB,EAAE,WAA2B,SAAS;IAC7E,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,yDAAyD;AACzD,SAAS,WAAW,CAAC,WAAmB;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,kDAAkD;AAClD,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAQ/B;IACC,8CAA8C;IAC9C,IAAI,MAAM,CAAC,GAAG,EAAE,MAAM;QAAE,OAAO,GAAG,CAAC;IAEnC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACzD,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACrE,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IACnD,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IAC3D,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC;IAE7D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAE3C,8CAA8C;AAC9C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* check — measure understanding gap with predictive guidance.
|
|
3
|
+
*
|
|
4
|
+
* Replaces: alignment_check (enhanced with past-delta analysis)
|
|
5
|
+
* Phase 5: auto-promotes strong correction patterns (3+) to awareness.
|
|
6
|
+
*/
|
|
7
|
+
export interface CheckInput {
|
|
8
|
+
goal: string;
|
|
9
|
+
confidence: "high" | "medium" | "low";
|
|
10
|
+
assumptions?: string[];
|
|
11
|
+
human_correction?: string;
|
|
12
|
+
delta?: string;
|
|
13
|
+
project?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface WatchFor {
|
|
16
|
+
pattern: string;
|
|
17
|
+
frequency: number;
|
|
18
|
+
suggestion: string;
|
|
19
|
+
}
|
|
20
|
+
export interface PastDelta {
|
|
21
|
+
date: string;
|
|
22
|
+
goal: string;
|
|
23
|
+
delta: string;
|
|
24
|
+
}
|
|
25
|
+
export interface CheckResult {
|
|
26
|
+
recorded: boolean;
|
|
27
|
+
project: string;
|
|
28
|
+
watch_for: WatchFor[];
|
|
29
|
+
similar_past_deltas: PastDelta[];
|
|
30
|
+
auto_promoted?: number;
|
|
31
|
+
}
|
|
32
|
+
export declare function check(input: CheckInput): Promise<CheckResult>;
|
|
33
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/tools-logic/check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,mBAAmB,EAAE,SAAS,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD,wBAAsB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAoEnE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* check — measure understanding gap with predictive guidance.
|
|
3
|
+
*
|
|
4
|
+
* Replaces: alignment_check (enhanced with past-delta analysis)
|
|
5
|
+
* Phase 5: auto-promotes strong correction patterns (3+) to awareness.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from "node:fs";
|
|
8
|
+
import * as path from "node:path";
|
|
9
|
+
import { resolveProject } from "../storage/project.js";
|
|
10
|
+
import { getRoot } from "../types.js";
|
|
11
|
+
import { ensureDir, todayISO } from "../storage/fs-utils.js";
|
|
12
|
+
import { extractKeywords } from "../helpers/auto-name.js";
|
|
13
|
+
import { readAlignmentLog as readLog, extractWatchPatterns, } from "../helpers/alignment-patterns.js";
|
|
14
|
+
import { awarenessUpdate } from "./awareness-update.js";
|
|
15
|
+
function alignmentLogPath(project) {
|
|
16
|
+
return path.join(getRoot(), "projects", project, "alignment-log.json");
|
|
17
|
+
}
|
|
18
|
+
function writeAlignmentLog(project, records) {
|
|
19
|
+
const p = alignmentLogPath(project);
|
|
20
|
+
ensureDir(path.dirname(p));
|
|
21
|
+
fs.writeFileSync(p, JSON.stringify(records, null, 2), "utf-8");
|
|
22
|
+
}
|
|
23
|
+
export async function check(input) {
|
|
24
|
+
const slug = await resolveProject(input.project);
|
|
25
|
+
// 1. Record this alignment check
|
|
26
|
+
const record = {
|
|
27
|
+
date: todayISO(),
|
|
28
|
+
goal: input.goal,
|
|
29
|
+
confidence: input.confidence,
|
|
30
|
+
assumptions: input.assumptions ?? [],
|
|
31
|
+
corrections: input.human_correction ? [input.human_correction] : undefined,
|
|
32
|
+
delta: input.delta,
|
|
33
|
+
};
|
|
34
|
+
const log = readLog(slug);
|
|
35
|
+
log.push(record);
|
|
36
|
+
const trimmed = log.slice(-50);
|
|
37
|
+
writeAlignmentLog(slug, trimmed);
|
|
38
|
+
// 2. Find similar past goals (keyword overlap)
|
|
39
|
+
const goalKeywords = extractKeywords(input.goal, 5);
|
|
40
|
+
const similarDeltas = [];
|
|
41
|
+
for (const past of trimmed.slice(0, -1)) {
|
|
42
|
+
if (!past.delta && !past.corrections?.length)
|
|
43
|
+
continue;
|
|
44
|
+
const pastKeywords = extractKeywords(past.goal, 5);
|
|
45
|
+
const overlap = goalKeywords.filter((k) => pastKeywords.some((pk) => pk.includes(k) || k.includes(pk)));
|
|
46
|
+
if (overlap.length >= 2) {
|
|
47
|
+
similarDeltas.push({
|
|
48
|
+
date: past.date,
|
|
49
|
+
goal: past.goal.slice(0, 80),
|
|
50
|
+
delta: (past.delta ?? past.corrections?.join("; ") ?? "").slice(0, 120),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// 3. Extract patterns using shared helper
|
|
55
|
+
const watchFor = extractWatchPatterns(trimmed, 3);
|
|
56
|
+
// 4. Phase 5: auto-promote strong patterns (3+) to awareness
|
|
57
|
+
let autoPromoted = 0;
|
|
58
|
+
for (const w of watchFor) {
|
|
59
|
+
if (w.frequency >= 3) {
|
|
60
|
+
try {
|
|
61
|
+
await awarenessUpdate({
|
|
62
|
+
insights: [{
|
|
63
|
+
title: `Human preference: ${w.pattern.slice(0, 60)}`,
|
|
64
|
+
evidence: `Detected from ${w.frequency} corrections in alignment log`,
|
|
65
|
+
applies_when: w.pattern.split(/[\s\-:()]+/).filter((word) => word.length > 3).slice(0, 5),
|
|
66
|
+
source: `check auto-promote ${todayISO()}`,
|
|
67
|
+
severity: "important",
|
|
68
|
+
}],
|
|
69
|
+
});
|
|
70
|
+
autoPromoted++;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Best effort
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
recorded: true,
|
|
79
|
+
project: slug,
|
|
80
|
+
watch_for: watchFor,
|
|
81
|
+
similar_past_deltas: similarDeltas.slice(0, 3),
|
|
82
|
+
auto_promoted: autoPromoted > 0 ? autoPromoted : undefined,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/tools-logic/check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EACL,gBAAgB,IAAI,OAAO,EAC3B,oBAAoB,GAGrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AA+BxD,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe,EAAE,OAA0B;IACpE,MAAM,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACpC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,KAAiB;IAC3C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEjD,iCAAiC;IACjC,MAAM,MAAM,GAAoB;QAC9B,IAAI,EAAE,QAAQ,EAAE;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;QACpC,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1E,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;IAEF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/B,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAEjC,+CAA+C;IAC/C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,aAAa,GAAgB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM;YAAE,SAAS;QAEvD,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAExG,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC5B,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aACxE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAElD,6DAA6D;IAC7D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC;oBACpB,QAAQ,EAAE,CAAC;4BACT,KAAK,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;4BACpD,QAAQ,EAAE,iBAAiB,CAAC,CAAC,SAAS,+BAA+B;4BACrE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;4BACzF,MAAM,EAAE,sBAAsB,QAAQ,EAAE,EAAE;4BAC1C,QAAQ,EAAE,WAAW;yBACtB,CAAC;iBACH,CAAC,CAAC;gBACH,YAAY,EAAE,CAAC;YACjB,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,QAAQ;QACnB,mBAAmB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,aAAa,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -11,6 +11,7 @@ export interface JournalCaptureResult {
|
|
|
11
11
|
palace: {
|
|
12
12
|
room: string;
|
|
13
13
|
} | null;
|
|
14
|
+
auto_tags?: string[];
|
|
14
15
|
}
|
|
15
16
|
export declare function journalCapture(input: JournalCaptureInput): Promise<JournalCaptureResult>;
|
|
16
17
|
//# sourceMappingURL=journal-capture.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal-capture.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"journal-capture.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4D9F"}
|
|
@@ -4,6 +4,7 @@ import { resolveProject } from "../storage/project.js";
|
|
|
4
4
|
import { journalDir } from "../storage/paths.js";
|
|
5
5
|
import { ensureDir, todayISO } from "../storage/fs-utils.js";
|
|
6
6
|
import { countLogEntries } from "../helpers/journal-files.js";
|
|
7
|
+
import { detectContentType, extractKeywords } from "../helpers/auto-name.js";
|
|
7
8
|
import { ensurePalaceInitialized, roomExists, createRoom } from "../palace/rooms.js";
|
|
8
9
|
import { palaceDir } from "../storage/paths.js";
|
|
9
10
|
import { fanOut } from "../palace/fan-out.js";
|
|
@@ -13,6 +14,15 @@ export async function journalCapture(input) {
|
|
|
13
14
|
const date = todayISO();
|
|
14
15
|
const dir = journalDir(slug);
|
|
15
16
|
ensureDir(dir);
|
|
17
|
+
// Auto-tag: generate tags from content when none provided
|
|
18
|
+
let autoTags;
|
|
19
|
+
if (!input.tags || input.tags.length === 0) {
|
|
20
|
+
const combined = `${input.question} ${input.answer}`;
|
|
21
|
+
const type = detectContentType(combined);
|
|
22
|
+
const kws = extractKeywords(combined, 2);
|
|
23
|
+
input.tags = [type, ...kws];
|
|
24
|
+
autoTags = input.tags;
|
|
25
|
+
}
|
|
16
26
|
const logPath = path.join(dir, `${date}-log.md`);
|
|
17
27
|
const entryNum = countLogEntries(logPath) + 1;
|
|
18
28
|
const tagStr = input.tags && input.tags.length > 0 ? ` [${input.tags.join(", ")}]` : "";
|
|
@@ -52,6 +62,6 @@ export async function journalCapture(input) {
|
|
|
52
62
|
// Palace integration is optional
|
|
53
63
|
}
|
|
54
64
|
}
|
|
55
|
-
return { success: true, entry_number: entryNum, palace: palaceResult };
|
|
65
|
+
return { success: true, entry_number: entryNum, palace: palaceResult, auto_tags: autoTags };
|
|
56
66
|
}
|
|
57
67
|
//# sourceMappingURL=journal-capture.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal-capture.js","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.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,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"journal-capture.js","sourceRoot":"","sources":["../../src/tools-logic/journal-capture.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,CA2D9F"}
|
|
@@ -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`;
|
|
@@ -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,CA6ExF"}
|