agent-recall-core 3.3.4
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/journal-files.d.ts +30 -0
- package/dist/helpers/journal-files.d.ts.map +1 -0
- package/dist/helpers/journal-files.js +96 -0
- package/dist/helpers/journal-files.js.map +1 -0
- package/dist/helpers/rollup.d.ts +35 -0
- package/dist/helpers/rollup.d.ts.map +1 -0
- package/dist/helpers/rollup.js +78 -0
- package/dist/helpers/rollup.js.map +1 -0
- package/dist/helpers/sections.d.ts +12 -0
- package/dist/helpers/sections.d.ts.map +1 -0
- package/dist/helpers/sections.js +84 -0
- package/dist/helpers/sections.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/palace/awareness.d.ts +67 -0
- package/dist/palace/awareness.d.ts.map +1 -0
- package/dist/palace/awareness.js +231 -0
- package/dist/palace/awareness.js.map +1 -0
- package/dist/palace/consolidate.d.ts +28 -0
- package/dist/palace/consolidate.d.ts.map +1 -0
- package/dist/palace/consolidate.js +129 -0
- package/dist/palace/consolidate.js.map +1 -0
- package/dist/palace/fan-out.d.ts +15 -0
- package/dist/palace/fan-out.d.ts.map +1 -0
- package/dist/palace/fan-out.js +78 -0
- package/dist/palace/fan-out.js.map +1 -0
- package/dist/palace/graph.d.ts +11 -0
- package/dist/palace/graph.d.ts.map +1 -0
- package/dist/palace/graph.js +59 -0
- package/dist/palace/graph.js.map +1 -0
- package/dist/palace/identity.d.ts +6 -0
- package/dist/palace/identity.d.ts.map +1 -0
- package/dist/palace/identity.js +18 -0
- package/dist/palace/identity.js.map +1 -0
- package/dist/palace/index-manager.d.ts +7 -0
- package/dist/palace/index-manager.d.ts.map +1 -0
- package/dist/palace/index-manager.js +46 -0
- package/dist/palace/index-manager.js.map +1 -0
- package/dist/palace/insights-index.d.ts +39 -0
- package/dist/palace/insights-index.d.ts.map +1 -0
- package/dist/palace/insights-index.js +101 -0
- package/dist/palace/insights-index.js.map +1 -0
- package/dist/palace/log.d.ts +9 -0
- package/dist/palace/log.d.ts.map +1 -0
- package/dist/palace/log.js +28 -0
- package/dist/palace/log.js.map +1 -0
- package/dist/palace/obsidian.d.ts +12 -0
- package/dist/palace/obsidian.d.ts.map +1 -0
- package/dist/palace/obsidian.js +76 -0
- package/dist/palace/obsidian.js.map +1 -0
- package/dist/palace/rooms.d.ts +14 -0
- package/dist/palace/rooms.d.ts.map +1 -0
- package/dist/palace/rooms.js +117 -0
- package/dist/palace/rooms.js.map +1 -0
- package/dist/palace/salience.d.ts +15 -0
- package/dist/palace/salience.d.ts.map +1 -0
- package/dist/palace/salience.js +33 -0
- package/dist/palace/salience.js.map +1 -0
- package/dist/storage/fs-utils.d.ts +8 -0
- package/dist/storage/fs-utils.d.ts.map +1 -0
- package/dist/storage/fs-utils.js +28 -0
- package/dist/storage/fs-utils.js.map +1 -0
- package/dist/storage/paths.d.ts +21 -0
- package/dist/storage/paths.d.ts.map +1 -0
- package/dist/storage/paths.js +71 -0
- package/dist/storage/paths.js.map +1 -0
- package/dist/storage/project.d.ts +17 -0
- package/dist/storage/project.d.ts.map +1 -0
- package/dist/storage/project.js +131 -0
- package/dist/storage/project.js.map +1 -0
- package/dist/tools-logic/alignment-check.d.ts +19 -0
- package/dist/tools-logic/alignment-check.d.ts.map +1 -0
- package/dist/tools-logic/alignment-check.js +54 -0
- package/dist/tools-logic/alignment-check.js.map +1 -0
- package/dist/tools-logic/awareness-update.d.ts +23 -0
- package/dist/tools-logic/awareness-update.d.ts.map +1 -0
- package/dist/tools-logic/awareness-update.js +47 -0
- package/dist/tools-logic/awareness-update.js.map +1 -0
- package/dist/tools-logic/context-synthesize.d.ts +17 -0
- package/dist/tools-logic/context-synthesize.d.ts.map +1 -0
- package/dist/tools-logic/context-synthesize.js +174 -0
- package/dist/tools-logic/context-synthesize.js.map +1 -0
- package/dist/tools-logic/journal-archive.d.ts +11 -0
- package/dist/tools-logic/journal-archive.d.ts.map +1 -0
- package/dist/tools-logic/journal-archive.js +47 -0
- package/dist/tools-logic/journal-archive.js.map +1 -0
- package/dist/tools-logic/journal-capture.d.ts +16 -0
- package/dist/tools-logic/journal-capture.d.ts.map +1 -0
- package/dist/tools-logic/journal-capture.js +57 -0
- package/dist/tools-logic/journal-capture.js.map +1 -0
- package/dist/tools-logic/journal-cold-start.d.ts +37 -0
- package/dist/tools-logic/journal-cold-start.d.ts.map +1 -0
- package/dist/tools-logic/journal-cold-start.js +78 -0
- package/dist/tools-logic/journal-cold-start.js.map +1 -0
- package/dist/tools-logic/journal-list.d.ts +14 -0
- package/dist/tools-logic/journal-list.d.ts.map +1 -0
- package/dist/tools-logic/journal-list.js +18 -0
- package/dist/tools-logic/journal-list.js.map +1 -0
- package/dist/tools-logic/journal-projects.d.ts +10 -0
- package/dist/tools-logic/journal-projects.d.ts.map +1 -0
- package/dist/tools-logic/journal-projects.js +10 -0
- package/dist/tools-logic/journal-projects.js.map +1 -0
- package/dist/tools-logic/journal-read.d.ts +13 -0
- package/dist/tools-logic/journal-read.d.ts.map +1 -0
- package/dist/tools-logic/journal-read.js +22 -0
- package/dist/tools-logic/journal-read.js.map +1 -0
- package/dist/tools-logic/journal-rollup.d.ts +16 -0
- package/dist/tools-logic/journal-rollup.d.ts.map +1 -0
- package/dist/tools-logic/journal-rollup.js +79 -0
- package/dist/tools-logic/journal-rollup.js.map +1 -0
- package/dist/tools-logic/journal-search.d.ts +16 -0
- package/dist/tools-logic/journal-search.d.ts.map +1 -0
- package/dist/tools-logic/journal-search.js +80 -0
- package/dist/tools-logic/journal-search.js.map +1 -0
- package/dist/tools-logic/journal-state.d.ts +26 -0
- package/dist/tools-logic/journal-state.d.ts.map +1 -0
- package/dist/tools-logic/journal-state.js +80 -0
- package/dist/tools-logic/journal-state.js.map +1 -0
- package/dist/tools-logic/journal-write.d.ts +18 -0
- package/dist/tools-logic/journal-write.d.ts.map +1 -0
- package/dist/tools-logic/journal-write.js +54 -0
- package/dist/tools-logic/journal-write.js.map +1 -0
- package/dist/tools-logic/knowledge-read.d.ts +7 -0
- package/dist/tools-logic/knowledge-read.d.ts.map +1 -0
- package/dist/tools-logic/knowledge-read.js +88 -0
- package/dist/tools-logic/knowledge-read.js.map +1 -0
- package/dist/tools-logic/knowledge-write.d.ts +23 -0
- package/dist/tools-logic/knowledge-write.d.ts.map +1 -0
- package/dist/tools-logic/knowledge-write.js +58 -0
- package/dist/tools-logic/knowledge-write.js.map +1 -0
- package/dist/tools-logic/nudge.d.ts +15 -0
- package/dist/tools-logic/nudge.d.ts.map +1 -0
- package/dist/tools-logic/nudge.js +27 -0
- package/dist/tools-logic/nudge.js.map +1 -0
- package/dist/tools-logic/palace-lint.d.ts +20 -0
- package/dist/tools-logic/palace-lint.d.ts.map +1 -0
- package/dist/tools-logic/palace-lint.js +87 -0
- package/dist/tools-logic/palace-lint.js.map +1 -0
- package/dist/tools-logic/palace-read.d.ts +24 -0
- package/dist/tools-logic/palace-read.d.ts.map +1 -0
- package/dist/tools-logic/palace-read.js +45 -0
- package/dist/tools-logic/palace-read.js.map +1 -0
- package/dist/tools-logic/palace-search.d.ts +19 -0
- package/dist/tools-logic/palace-search.d.ts.map +1 -0
- package/dist/tools-logic/palace-search.js +46 -0
- package/dist/tools-logic/palace-search.js.map +1 -0
- package/dist/tools-logic/palace-walk.d.ts +18 -0
- package/dist/tools-logic/palace-walk.d.ts.map +1 -0
- package/dist/tools-logic/palace-walk.js +89 -0
- package/dist/tools-logic/palace-walk.js.map +1 -0
- package/dist/tools-logic/palace-write.d.ts +22 -0
- package/dist/tools-logic/palace-write.d.ts.map +1 -0
- package/dist/tools-logic/palace-write.js +60 -0
- package/dist/tools-logic/palace-write.js.map +1 -0
- package/dist/tools-logic/recall-insight.d.ts +20 -0
- package/dist/tools-logic/recall-insight.d.ts.map +1 -0
- package/dist/tools-logic/recall-insight.js +27 -0
- package/dist/tools-logic/recall-insight.js.map +1 -0
- package/dist/types.d.ts +123 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +54 -0
- package/dist/types.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Journal and palace directory path resolution.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { getRoot, getLegacyRoot } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the journal directory for a project.
|
|
9
|
+
* For writes, always use the new location.
|
|
10
|
+
*/
|
|
11
|
+
export function journalDir(project) {
|
|
12
|
+
const safe = project.replace(/[^a-zA-Z0-9_\-\.]/g, "-");
|
|
13
|
+
const root = getRoot();
|
|
14
|
+
const resolved = path.join(root, "projects", safe, "journal");
|
|
15
|
+
if (!resolved.startsWith(root)) {
|
|
16
|
+
throw new Error(`Invalid project name: ${project}`);
|
|
17
|
+
}
|
|
18
|
+
return resolved;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Find all journal directories for a project (new + legacy fallback).
|
|
22
|
+
*/
|
|
23
|
+
export function journalDirs(project) {
|
|
24
|
+
const dirs = [];
|
|
25
|
+
const primary = journalDir(project);
|
|
26
|
+
if (fs.existsSync(primary))
|
|
27
|
+
dirs.push(primary);
|
|
28
|
+
// Legacy: ~/.claude/projects/*/memory/journal/
|
|
29
|
+
const legacyRoot = getLegacyRoot();
|
|
30
|
+
if (fs.existsSync(legacyRoot)) {
|
|
31
|
+
try {
|
|
32
|
+
const entries = fs.readdirSync(legacyRoot);
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
if (entry.includes(project)) {
|
|
35
|
+
const legacyJournal = path.join(legacyRoot, entry, "memory", "journal");
|
|
36
|
+
if (fs.existsSync(legacyJournal)) {
|
|
37
|
+
dirs.push(legacyJournal);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// ignore
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return dirs;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Resolve the palace directory for a project.
|
|
50
|
+
*/
|
|
51
|
+
export function palaceDir(project) {
|
|
52
|
+
const safe = project.replace(/[^a-zA-Z0-9_\-\.]/g, "-");
|
|
53
|
+
const root = getRoot();
|
|
54
|
+
const resolved = path.join(root, "projects", safe, "palace");
|
|
55
|
+
if (!resolved.startsWith(root)) {
|
|
56
|
+
throw new Error(`Invalid project name: ${project}`);
|
|
57
|
+
}
|
|
58
|
+
return resolved;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve a room directory within a project's palace.
|
|
62
|
+
*/
|
|
63
|
+
export function roomDir(project, roomSlug) {
|
|
64
|
+
const safeSlug = roomSlug.replace(/[^a-zA-Z0-9_\-]/g, "-");
|
|
65
|
+
const resolved = path.join(palaceDir(project), "rooms", safeSlug);
|
|
66
|
+
if (!resolved.startsWith(getRoot())) {
|
|
67
|
+
throw new Error(`Invalid room slug: ${roomSlug}`);
|
|
68
|
+
}
|
|
69
|
+
return resolved;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/storage/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project detection and listing.
|
|
3
|
+
*/
|
|
4
|
+
import type { ProjectInfo } from "../types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Auto-detect project slug from environment, git, or cwd.
|
|
7
|
+
*/
|
|
8
|
+
export declare function detectProject(): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Resolve "auto" project to actual slug.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveProject(project: string | undefined): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* List all projects (from both new and legacy locations).
|
|
15
|
+
*/
|
|
16
|
+
export declare function listAllProjects(): ProjectInfo[];
|
|
17
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/storage/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CA0CrD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAKjF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,WAAW,EAAE,CA2D/C"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project detection and listing.
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from "node:fs";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
import { execFile } from "node:child_process";
|
|
7
|
+
import { promisify } from "node:util";
|
|
8
|
+
import { getRoot, getLegacyRoot } from "../types.js";
|
|
9
|
+
const execFileAsync = promisify(execFile);
|
|
10
|
+
let _cachedProject = null;
|
|
11
|
+
/**
|
|
12
|
+
* Auto-detect project slug from environment, git, or cwd.
|
|
13
|
+
*/
|
|
14
|
+
export async function detectProject() {
|
|
15
|
+
if (_cachedProject)
|
|
16
|
+
return _cachedProject;
|
|
17
|
+
// 1. Env var
|
|
18
|
+
if (process.env.AGENT_RECALL_PROJECT) {
|
|
19
|
+
_cachedProject = process.env.AGENT_RECALL_PROJECT;
|
|
20
|
+
return _cachedProject;
|
|
21
|
+
}
|
|
22
|
+
// 2. Git repo name (async)
|
|
23
|
+
try {
|
|
24
|
+
const { stdout } = await execFileAsync("git", ["config", "--get", "remote.origin.url"], { timeout: 3000 });
|
|
25
|
+
const remote = stdout.trim();
|
|
26
|
+
if (remote) {
|
|
27
|
+
const name = path.basename(remote, ".git");
|
|
28
|
+
if (name) {
|
|
29
|
+
_cachedProject = name;
|
|
30
|
+
return name;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
try {
|
|
36
|
+
const { stdout } = await execFileAsync("git", ["rev-parse", "--show-toplevel"], { timeout: 3000 });
|
|
37
|
+
const root = stdout.trim();
|
|
38
|
+
if (root) {
|
|
39
|
+
_cachedProject = path.basename(root);
|
|
40
|
+
return _cachedProject;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// fall through
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// 3. package.json name
|
|
48
|
+
const cwd = process.cwd();
|
|
49
|
+
const pkgPath = path.join(cwd, "package.json");
|
|
50
|
+
if (fs.existsSync(pkgPath)) {
|
|
51
|
+
try {
|
|
52
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
53
|
+
if (pkg.name) {
|
|
54
|
+
_cachedProject = pkg.name.replace(/^@[^/]+\//, "");
|
|
55
|
+
return _cachedProject;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// fall through
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// 4. Basename of cwd
|
|
63
|
+
_cachedProject = path.basename(cwd);
|
|
64
|
+
return _cachedProject;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resolve "auto" project to actual slug.
|
|
68
|
+
*/
|
|
69
|
+
export async function resolveProject(project) {
|
|
70
|
+
if (!project || project === "auto") {
|
|
71
|
+
return await detectProject();
|
|
72
|
+
}
|
|
73
|
+
return project;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* List all projects (from both new and legacy locations).
|
|
77
|
+
*/
|
|
78
|
+
export function listAllProjects() {
|
|
79
|
+
const projects = new Map();
|
|
80
|
+
// New location
|
|
81
|
+
const projectsDir = path.join(getRoot(), "projects");
|
|
82
|
+
if (fs.existsSync(projectsDir)) {
|
|
83
|
+
const dirs = fs.readdirSync(projectsDir);
|
|
84
|
+
for (const slug of dirs) {
|
|
85
|
+
const jDir = path.join(projectsDir, slug, "journal");
|
|
86
|
+
if (fs.existsSync(jDir)) {
|
|
87
|
+
const files = fs.readdirSync(jDir).filter((f) => /^\d{4}-\d{2}-\d{2}\.md$/.test(f));
|
|
88
|
+
if (files.length > 0) {
|
|
89
|
+
files.sort().reverse();
|
|
90
|
+
projects.set(slug, {
|
|
91
|
+
slug,
|
|
92
|
+
lastEntry: files[0].replace(".md", ""),
|
|
93
|
+
entryCount: files.length,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Legacy location
|
|
100
|
+
const legacyRoot = getLegacyRoot();
|
|
101
|
+
if (fs.existsSync(legacyRoot)) {
|
|
102
|
+
try {
|
|
103
|
+
const entries = fs.readdirSync(legacyRoot);
|
|
104
|
+
for (const entry of entries) {
|
|
105
|
+
const journalPath = path.join(legacyRoot, entry, "memory", "journal");
|
|
106
|
+
if (fs.existsSync(journalPath)) {
|
|
107
|
+
const parts = entry.split("-").filter(Boolean);
|
|
108
|
+
const slug = parts[parts.length - 1] || entry;
|
|
109
|
+
if (!projects.has(slug)) {
|
|
110
|
+
const files = fs.readdirSync(journalPath).filter((f) => /^\d{4}-\d{2}-\d{2}\.md$/.test(f));
|
|
111
|
+
if (files.length > 0) {
|
|
112
|
+
files.sort().reverse();
|
|
113
|
+
projects.set(slug, {
|
|
114
|
+
slug,
|
|
115
|
+
lastEntry: files[0].replace(".md", ""),
|
|
116
|
+
entryCount: files.length,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// ignore
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
const result = Array.from(projects.values());
|
|
128
|
+
result.sort((a, b) => b.lastEntry.localeCompare(a.lastEntry));
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/storage/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface AlignmentCheckInput {
|
|
2
|
+
goal: string;
|
|
3
|
+
confidence: "high" | "medium" | "low";
|
|
4
|
+
assumptions?: string[];
|
|
5
|
+
unclear?: string;
|
|
6
|
+
human_correction?: string;
|
|
7
|
+
delta?: string;
|
|
8
|
+
category?: "goal" | "scope" | "priority" | "technical" | "aesthetic";
|
|
9
|
+
project?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AlignmentCheckResult {
|
|
12
|
+
success: boolean;
|
|
13
|
+
date: string;
|
|
14
|
+
confidence: string;
|
|
15
|
+
delta: string;
|
|
16
|
+
file: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function alignmentCheck(input: AlignmentCheckInput): Promise<AlignmentCheckResult>;
|
|
19
|
+
//# sourceMappingURL=alignment-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignment-check.d.ts","sourceRoot":"","sources":["../../src/tools-logic/alignment-check.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8C9F"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { resolveProject } from "../storage/project.js";
|
|
4
|
+
import { journalDir, palaceDir } from "../storage/paths.js";
|
|
5
|
+
import { ensureDir, todayISO } from "../storage/fs-utils.js";
|
|
6
|
+
import { ensurePalaceInitialized, roomExists } from "../palace/rooms.js";
|
|
7
|
+
import { updatePalaceIndex } from "../palace/index-manager.js";
|
|
8
|
+
export async function alignmentCheck(input) {
|
|
9
|
+
const slug = await resolveProject(input.project);
|
|
10
|
+
const date = todayISO();
|
|
11
|
+
const dir = journalDir(slug);
|
|
12
|
+
ensureDir(dir);
|
|
13
|
+
const category = input.category ?? "goal";
|
|
14
|
+
const time = new Date().toISOString().slice(11, 19);
|
|
15
|
+
const assumeStr = input.assumptions?.length ? input.assumptions.map(a => ` - ${a}`).join("\n") : " (none)";
|
|
16
|
+
let entry = `### Alignment (${time})\n`;
|
|
17
|
+
entry += `**Goal**: ${input.goal}\n**Confidence**: ${input.confidence}\n**Category**: ${category}\n`;
|
|
18
|
+
entry += `**Assumptions**:\n${assumeStr}\n`;
|
|
19
|
+
if (input.unclear)
|
|
20
|
+
entry += `**Unclear**: ${input.unclear}\n`;
|
|
21
|
+
if (input.human_correction)
|
|
22
|
+
entry += `**Human**: ${input.human_correction}\n**Delta**: ${input.delta || "not specified"}\n`;
|
|
23
|
+
entry += "\n";
|
|
24
|
+
const logPath = path.join(dir, `${date}-alignment.md`);
|
|
25
|
+
if (!fs.existsSync(logPath)) {
|
|
26
|
+
fs.writeFileSync(logPath, `# ${date} — Alignment Records\n\n---\n\n${entry}`, "utf-8");
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
fs.appendFileSync(logPath, entry, "utf-8");
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
ensurePalaceInitialized(slug);
|
|
33
|
+
if (roomExists(slug, "alignment")) {
|
|
34
|
+
const pd = palaceDir(slug);
|
|
35
|
+
const alignFile = path.join(pd, "rooms", "alignment", `${category}.md`);
|
|
36
|
+
ensureDir(path.dirname(alignFile));
|
|
37
|
+
if (input.human_correction) {
|
|
38
|
+
const palaceEntry = `\n### ${date} ${time} — ${input.confidence}\n**Goal**: ${input.goal}\n**Human correction**: ${input.human_correction}\n**Delta**: ${input.delta || "pending"}\n`;
|
|
39
|
+
if (fs.existsSync(alignFile)) {
|
|
40
|
+
fs.appendFileSync(alignFile, palaceEntry, "utf-8");
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
fs.writeFileSync(alignFile, `# alignment / ${category}\n${palaceEntry}`, "utf-8");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
updatePalaceIndex(slug);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Palace integration is optional
|
|
51
|
+
}
|
|
52
|
+
return { success: true, date, confidence: input.confidence, delta: input.delta || "pending", file: logPath };
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=alignment-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignment-check.js","sourceRoot":"","sources":["../../src/tools-logic/alignment-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface AwarenessUpdateInput {
|
|
2
|
+
insights: Array<{
|
|
3
|
+
title: string;
|
|
4
|
+
evidence: string;
|
|
5
|
+
applies_when: string[];
|
|
6
|
+
source: string;
|
|
7
|
+
severity?: "critical" | "important" | "minor";
|
|
8
|
+
}>;
|
|
9
|
+
trajectory?: string;
|
|
10
|
+
blind_spots?: string[];
|
|
11
|
+
identity?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AwarenessUpdateResult {
|
|
14
|
+
success: boolean;
|
|
15
|
+
insights_processed: Array<{
|
|
16
|
+
title: string;
|
|
17
|
+
action: string;
|
|
18
|
+
}>;
|
|
19
|
+
compound_insights_detected: number;
|
|
20
|
+
total_insights: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function awarenessUpdate(input: AwarenessUpdateInput): Promise<AwarenessUpdateResult>;
|
|
23
|
+
//# sourceMappingURL=awareness-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"awareness-update.d.ts","sourceRoot":"","sources":["../../src/tools-logic/awareness-update.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;KAC/C,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,0BAA0B,EAAE,MAAM,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAoDjG"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { readAwarenessState, writeAwarenessState, initAwareness, addInsight, detectCompoundInsights, renderAwareness, } from "../palace/awareness.js";
|
|
2
|
+
import { addIndexedInsight } from "../palace/insights-index.js";
|
|
3
|
+
export async function awarenessUpdate(input) {
|
|
4
|
+
let state = readAwarenessState();
|
|
5
|
+
if (!state) {
|
|
6
|
+
state = initAwareness(input.identity || "(unknown user)");
|
|
7
|
+
}
|
|
8
|
+
if (input.identity) {
|
|
9
|
+
state.identity = input.identity;
|
|
10
|
+
}
|
|
11
|
+
const results = [];
|
|
12
|
+
for (const insight of input.insights) {
|
|
13
|
+
const result = addInsight({
|
|
14
|
+
title: insight.title,
|
|
15
|
+
evidence: insight.evidence,
|
|
16
|
+
appliesWhen: insight.applies_when,
|
|
17
|
+
source: insight.source,
|
|
18
|
+
});
|
|
19
|
+
results.push({ title: insight.title, action: result.action });
|
|
20
|
+
addIndexedInsight({
|
|
21
|
+
title: insight.title,
|
|
22
|
+
source: insight.source,
|
|
23
|
+
applies_when: insight.applies_when,
|
|
24
|
+
file: undefined,
|
|
25
|
+
severity: insight.severity ?? "important",
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
// Re-read state after addInsight loop (addInsight writes its own state)
|
|
29
|
+
state = readAwarenessState();
|
|
30
|
+
if (input.trajectory) {
|
|
31
|
+
state.trajectory = input.trajectory;
|
|
32
|
+
}
|
|
33
|
+
if (input.blind_spots && input.blind_spots.length > 0) {
|
|
34
|
+
state.blindSpots = input.blind_spots.slice(0, 5);
|
|
35
|
+
}
|
|
36
|
+
state.lastUpdated = new Date().toISOString();
|
|
37
|
+
writeAwarenessState(state);
|
|
38
|
+
renderAwareness(state);
|
|
39
|
+
const compounds = detectCompoundInsights();
|
|
40
|
+
return {
|
|
41
|
+
success: true,
|
|
42
|
+
insights_processed: results,
|
|
43
|
+
compound_insights_detected: compounds.length,
|
|
44
|
+
total_insights: readAwarenessState()?.topInsights.length ?? 0,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=awareness-update.js.map
|
|
@@ -0,0 +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;AAsBhE,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,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,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,CAAC,CAAC,CAAC;IACnD,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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ContextSynthesizeInput {
|
|
2
|
+
entries?: number;
|
|
3
|
+
focus?: "full" | "decisions" | "blockers" | "goals";
|
|
4
|
+
include_palace?: boolean;
|
|
5
|
+
consolidate?: boolean;
|
|
6
|
+
project?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ContextSynthesizeResult {
|
|
9
|
+
project: string;
|
|
10
|
+
entries_analyzed: number;
|
|
11
|
+
palace_rooms: number;
|
|
12
|
+
consolidated: number;
|
|
13
|
+
synthesis: string;
|
|
14
|
+
error?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function contextSynthesize(input: ContextSynthesizeInput): Promise<ContextSynthesizeResult>;
|
|
17
|
+
//# sourceMappingURL=context-synthesize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-synthesize.d.ts","sourceRoot":"","sources":["../../src/tools-logic/context-synthesize.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;IACpD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4KvG"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { resolveProject } from "../storage/project.js";
|
|
4
|
+
import { journalDir, palaceDir } from "../storage/paths.js";
|
|
5
|
+
import { ensureDir, todayISO } from "../storage/fs-utils.js";
|
|
6
|
+
import { listJournalFiles } from "../helpers/journal-files.js";
|
|
7
|
+
import { extractSection } from "../helpers/sections.js";
|
|
8
|
+
import { ensurePalaceInitialized, listRooms, roomExists, createRoom } from "../palace/rooms.js";
|
|
9
|
+
import { fanOut } from "../palace/fan-out.js";
|
|
10
|
+
import { generateFrontmatter } from "../palace/obsidian.js";
|
|
11
|
+
import { updatePalaceIndex } from "../palace/index-manager.js";
|
|
12
|
+
export async function contextSynthesize(input) {
|
|
13
|
+
const slug = await resolveProject(input.project);
|
|
14
|
+
const journalEntries = listJournalFiles(slug);
|
|
15
|
+
const count = input.entries ?? 5;
|
|
16
|
+
const focus = input.focus ?? "full";
|
|
17
|
+
if (journalEntries.length === 0) {
|
|
18
|
+
return { project: slug, entries_analyzed: 0, palace_rooms: 0, consolidated: 0, synthesis: "", error: `No entries for '${slug}'` };
|
|
19
|
+
}
|
|
20
|
+
const toRead = journalEntries.slice(0, count);
|
|
21
|
+
const data = [];
|
|
22
|
+
for (const entry of toRead) {
|
|
23
|
+
const content = fs.readFileSync(path.join(entry.dir, entry.file), "utf-8");
|
|
24
|
+
data.push({
|
|
25
|
+
date: entry.date,
|
|
26
|
+
brief: extractSection(content, "brief"),
|
|
27
|
+
decisions: extractSection(content, "decisions"),
|
|
28
|
+
blockers: extractSection(content, "blockers"),
|
|
29
|
+
next: extractSection(content, "next"),
|
|
30
|
+
observations: extractSection(content, "observations"),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
let syn = `# L3 Synthesis — ${slug}\n`;
|
|
34
|
+
syn += `> ${toRead.length} entries: ${toRead[toRead.length - 1]?.date} → ${toRead[0]?.date}\n\n`;
|
|
35
|
+
if (focus === "full" || focus === "goals") {
|
|
36
|
+
syn += `## Goal Evolution\n\n`;
|
|
37
|
+
for (const e of data) {
|
|
38
|
+
if (e.brief)
|
|
39
|
+
syn += `**${e.date}**: ${e.brief.split("\n")[0]}\n`;
|
|
40
|
+
}
|
|
41
|
+
syn += "\n";
|
|
42
|
+
}
|
|
43
|
+
if (focus === "full" || focus === "decisions") {
|
|
44
|
+
syn += `## Decisions\n\n`;
|
|
45
|
+
const allDecisions = [];
|
|
46
|
+
for (const e of data) {
|
|
47
|
+
if (e.decisions)
|
|
48
|
+
allDecisions.push(`**${e.date}**:\n${e.decisions}\n`);
|
|
49
|
+
}
|
|
50
|
+
syn += allDecisions.length > 0 ? allDecisions.join("\n") : "(none recorded)\n";
|
|
51
|
+
if (allDecisions.length >= 2) {
|
|
52
|
+
syn += "\n### Potential Contradictions\n\n";
|
|
53
|
+
syn += "Review the decisions above. Flag if:\n";
|
|
54
|
+
syn += "- A decision from an earlier date was reversed without explanation\n";
|
|
55
|
+
syn += "- The same topic has conflicting approaches across dates\n";
|
|
56
|
+
syn += "- A goal stated in one entry differs from another\n\n";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (focus === "full" || focus === "blockers") {
|
|
60
|
+
syn += `## Active Blockers\n\n`;
|
|
61
|
+
const latest = data.find(e => e.blockers);
|
|
62
|
+
syn += latest ? `**${latest.date}**:\n${latest.blockers}\n\n` : "(none)\n\n";
|
|
63
|
+
const oldBlockers = data.filter(e => e.blockers && e !== latest);
|
|
64
|
+
if (oldBlockers.length > 0) {
|
|
65
|
+
syn += "### Recurring Blockers (appeared in older entries too)\n\n";
|
|
66
|
+
for (const ob of oldBlockers.slice(0, 2)) {
|
|
67
|
+
syn += `**${ob.date}**: ${ob.blockers?.split("\n")[0] || ""}\n`;
|
|
68
|
+
}
|
|
69
|
+
syn += "\n";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (focus === "full") {
|
|
73
|
+
const obs = data.filter(e => e.observations);
|
|
74
|
+
if (obs.length > 0) {
|
|
75
|
+
syn += `## Patterns from Agent Observations\n\n`;
|
|
76
|
+
for (const o of obs.slice(0, 3)) {
|
|
77
|
+
syn += `**${o.date}**: ${o.observations?.split("\n").slice(0, 2).join(" ") || ""}\n`;
|
|
78
|
+
}
|
|
79
|
+
syn += "\n";
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const alignPath = path.join(journalDir(slug), `${todayISO()}-alignment.md`);
|
|
83
|
+
if (fs.existsSync(alignPath)) {
|
|
84
|
+
const alignContent = fs.readFileSync(alignPath, "utf-8");
|
|
85
|
+
const checks = (alignContent.match(/### .*Alignment/g) || []).length;
|
|
86
|
+
const nudges = (alignContent.match(/### .*Nudge/g) || []).length;
|
|
87
|
+
const low = (alignContent.match(/Confidence: low/g) || []).length;
|
|
88
|
+
if (checks > 0 || nudges > 0) {
|
|
89
|
+
syn += `## Today's Alignment\n\n`;
|
|
90
|
+
syn += `- Alignment checks: ${checks}\n- Nudges: ${nudges}\n- Low confidence: ${low}\n\n`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
let palaceRoomCount = 0;
|
|
94
|
+
if (input.include_palace !== false) {
|
|
95
|
+
try {
|
|
96
|
+
ensurePalaceInitialized(slug);
|
|
97
|
+
const rooms = listRooms(slug);
|
|
98
|
+
if (rooms.length > 0) {
|
|
99
|
+
syn += `## Memory Palace — Room Summaries\n\n`;
|
|
100
|
+
for (const room of rooms.slice(0, 5)) {
|
|
101
|
+
syn += `- **${room.name}** (salience: ${room.salience.toFixed(2)}) — ${room.description}\n`;
|
|
102
|
+
if (room.connections.length > 0) {
|
|
103
|
+
syn += ` Connected to: ${room.connections.join(", ")}\n`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
syn += "\n";
|
|
107
|
+
palaceRoomCount = rooms.length;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Palace not initialized
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
let consolidated = 0;
|
|
115
|
+
if (input.consolidate) {
|
|
116
|
+
try {
|
|
117
|
+
ensurePalaceInitialized(slug);
|
|
118
|
+
const pd = palaceDir(slug);
|
|
119
|
+
const date = todayISO();
|
|
120
|
+
const decisionsData = data.filter(e => e.decisions).map(e => `**${e.date}**: ${e.decisions}`).join("\n");
|
|
121
|
+
if (decisionsData) {
|
|
122
|
+
if (!roomExists(slug, "architecture")) {
|
|
123
|
+
createRoom(slug, "architecture", "Architecture", "Technical decisions and patterns", ["technical"]);
|
|
124
|
+
}
|
|
125
|
+
const decPath = path.join(pd, "rooms", "architecture", "decisions.md");
|
|
126
|
+
ensureDir(path.dirname(decPath));
|
|
127
|
+
const entry = `\n### Consolidated ${date}\n\n${decisionsData}\n`;
|
|
128
|
+
if (fs.existsSync(decPath)) {
|
|
129
|
+
fs.appendFileSync(decPath, entry, "utf-8");
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
const fm = generateFrontmatter({ room: "architecture", topic: "decisions", created: new Date().toISOString(), source: "consolidation" });
|
|
133
|
+
fs.writeFileSync(decPath, `${fm}# architecture / decisions\n${entry}`, "utf-8");
|
|
134
|
+
}
|
|
135
|
+
fanOut(slug, "architecture", "decisions", decisionsData, ["goals"], "high");
|
|
136
|
+
consolidated++;
|
|
137
|
+
}
|
|
138
|
+
const goalsData = data.filter(e => e.brief).map(e => `**${e.date}**: ${e.brief?.split("\n")[0]}`).join("\n");
|
|
139
|
+
if (goalsData) {
|
|
140
|
+
const evoPath = path.join(pd, "rooms", "goals", "evolution.md");
|
|
141
|
+
ensureDir(path.dirname(evoPath));
|
|
142
|
+
const entry = `\n### Consolidated ${date}\n\n${goalsData}\n`;
|
|
143
|
+
if (fs.existsSync(evoPath)) {
|
|
144
|
+
fs.appendFileSync(evoPath, entry, "utf-8");
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const fm = generateFrontmatter({ room: "goals", topic: "evolution", created: new Date().toISOString(), source: "consolidation" });
|
|
148
|
+
fs.writeFileSync(evoPath, `${fm}# goals / evolution\n${entry}`, "utf-8");
|
|
149
|
+
}
|
|
150
|
+
consolidated++;
|
|
151
|
+
}
|
|
152
|
+
const blockersData = data.filter(e => e.blockers).map(e => `**${e.date}**: ${e.blockers?.split("\n")[0]}`).join("\n");
|
|
153
|
+
if (blockersData) {
|
|
154
|
+
const blkPath = path.join(pd, "rooms", "blockers", "history.md");
|
|
155
|
+
ensureDir(path.dirname(blkPath));
|
|
156
|
+
const entry = `\n### Consolidated ${date}\n\n${blockersData}\n`;
|
|
157
|
+
if (fs.existsSync(blkPath)) {
|
|
158
|
+
fs.appendFileSync(blkPath, entry, "utf-8");
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const fm = generateFrontmatter({ room: "blockers", topic: "history", created: new Date().toISOString(), source: "consolidation" });
|
|
162
|
+
fs.writeFileSync(blkPath, `${fm}# blockers / history\n${entry}`, "utf-8");
|
|
163
|
+
}
|
|
164
|
+
consolidated++;
|
|
165
|
+
}
|
|
166
|
+
updatePalaceIndex(slug);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// Consolidation is optional
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return { project: slug, entries_analyzed: toRead.length, palace_rooms: palaceRoomCount, consolidated, synthesis: syn };
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=context-synthesize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-synthesize.js","sourceRoot":"","sources":["../../src/tools-logic/context-synthesize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface JournalArchiveInput {
|
|
2
|
+
older_than_days?: number;
|
|
3
|
+
project?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface JournalArchiveResult {
|
|
6
|
+
archived: number;
|
|
7
|
+
summaries: string[];
|
|
8
|
+
archive_dir: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function journalArchive(input: JournalArchiveInput): Promise<JournalArchiveResult>;
|
|
11
|
+
//# sourceMappingURL=journal-archive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal-archive.d.ts","sourceRoot":"","sources":["../../src/tools-logic/journal-archive.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8C9F"}
|