chronicle-ai 0.0.1
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 +132 -0
- package/package.json +86 -0
- package/packages/README.md +139 -0
- package/packages/cli/README.md +92 -0
- package/packages/cli/bin/chronicle.js +2 -0
- package/packages/cli/dist/commands/add.d.ts +2 -0
- package/packages/cli/dist/commands/add.d.ts.map +1 -0
- package/packages/cli/dist/commands/add.js +82 -0
- package/packages/cli/dist/commands/add.js.map +1 -0
- package/packages/cli/dist/commands/diff.d.ts +11 -0
- package/packages/cli/dist/commands/diff.d.ts.map +1 -0
- package/packages/cli/dist/commands/diff.js +164 -0
- package/packages/cli/dist/commands/diff.js.map +1 -0
- package/packages/cli/dist/commands/init.d.ts +2 -0
- package/packages/cli/dist/commands/init.d.ts.map +1 -0
- package/packages/cli/dist/commands/init.js +54 -0
- package/packages/cli/dist/commands/init.js.map +1 -0
- package/packages/cli/dist/commands/list.d.ts +2 -0
- package/packages/cli/dist/commands/list.d.ts.map +1 -0
- package/packages/cli/dist/commands/list.js +62 -0
- package/packages/cli/dist/commands/list.js.map +1 -0
- package/packages/cli/dist/commands/log.d.ts +4 -0
- package/packages/cli/dist/commands/log.d.ts.map +1 -0
- package/packages/cli/dist/commands/log.js +223 -0
- package/packages/cli/dist/commands/log.js.map +1 -0
- package/packages/cli/dist/commands/pause.d.ts +3 -0
- package/packages/cli/dist/commands/pause.d.ts.map +1 -0
- package/packages/cli/dist/commands/pause.js +49 -0
- package/packages/cli/dist/commands/pause.js.map +1 -0
- package/packages/cli/dist/commands/queue.d.ts +2 -0
- package/packages/cli/dist/commands/queue.d.ts.map +1 -0
- package/packages/cli/dist/commands/queue.js +96 -0
- package/packages/cli/dist/commands/queue.js.map +1 -0
- package/packages/cli/dist/commands/remove.d.ts +2 -0
- package/packages/cli/dist/commands/remove.d.ts.map +1 -0
- package/packages/cli/dist/commands/remove.js +80 -0
- package/packages/cli/dist/commands/remove.js.map +1 -0
- package/packages/cli/dist/commands/reset.d.ts +5 -0
- package/packages/cli/dist/commands/reset.d.ts.map +1 -0
- package/packages/cli/dist/commands/reset.js +90 -0
- package/packages/cli/dist/commands/reset.js.map +1 -0
- package/packages/cli/dist/commands/restart.d.ts +2 -0
- package/packages/cli/dist/commands/restart.d.ts.map +1 -0
- package/packages/cli/dist/commands/restart.js +72 -0
- package/packages/cli/dist/commands/restart.js.map +1 -0
- package/packages/cli/dist/commands/start.d.ts +2 -0
- package/packages/cli/dist/commands/start.d.ts.map +1 -0
- package/packages/cli/dist/commands/start.js +127 -0
- package/packages/cli/dist/commands/start.js.map +1 -0
- package/packages/cli/dist/commands/status.d.ts +2 -0
- package/packages/cli/dist/commands/status.d.ts.map +1 -0
- package/packages/cli/dist/commands/status.js +181 -0
- package/packages/cli/dist/commands/status.js.map +1 -0
- package/packages/cli/dist/commands/stop.d.ts +2 -0
- package/packages/cli/dist/commands/stop.d.ts.map +1 -0
- package/packages/cli/dist/commands/stop.js +64 -0
- package/packages/cli/dist/commands/stop.js.map +1 -0
- package/packages/cli/dist/index.d.ts +2 -0
- package/packages/cli/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/index.js +85 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/dist/utils/paths.d.ts +26 -0
- package/packages/cli/dist/utils/paths.d.ts.map +1 -0
- package/packages/cli/dist/utils/paths.js +183 -0
- package/packages/cli/dist/utils/paths.js.map +1 -0
- package/packages/cli/package.json +25 -0
- package/packages/daemon/README.md +83 -0
- package/packages/daemon/dist/ai_test.d.ts +2 -0
- package/packages/daemon/dist/ai_test.d.ts.map +1 -0
- package/packages/daemon/dist/ai_test.js +4 -0
- package/packages/daemon/dist/ai_test.js.map +1 -0
- package/packages/daemon/dist/index.d.ts +2 -0
- package/packages/daemon/dist/index.d.ts.map +1 -0
- package/packages/daemon/dist/index.js +147 -0
- package/packages/daemon/dist/index.js.map +1 -0
- package/packages/daemon/dist/jobs/AIProcessor.d.ts +6 -0
- package/packages/daemon/dist/jobs/AIProcessor.d.ts.map +1 -0
- package/packages/daemon/dist/jobs/AIProcessor.js +58 -0
- package/packages/daemon/dist/jobs/AIProcessor.js.map +1 -0
- package/packages/daemon/dist/jobs/DocProcessor.d.ts +8 -0
- package/packages/daemon/dist/jobs/DocProcessor.d.ts.map +1 -0
- package/packages/daemon/dist/jobs/DocProcessor.js +336 -0
- package/packages/daemon/dist/jobs/DocProcessor.js.map +1 -0
- package/packages/daemon/dist/jobs/FileProcessor.d.ts +7 -0
- package/packages/daemon/dist/jobs/FileProcessor.d.ts.map +1 -0
- package/packages/daemon/dist/jobs/FileProcessor.js +29 -0
- package/packages/daemon/dist/jobs/FileProcessor.js.map +1 -0
- package/packages/daemon/dist/jobs/SystemProcessor.d.ts +13 -0
- package/packages/daemon/dist/jobs/SystemProcessor.d.ts.map +1 -0
- package/packages/daemon/dist/jobs/SystemProcessor.js +38 -0
- package/packages/daemon/dist/jobs/SystemProcessor.js.map +1 -0
- package/packages/daemon/dist/jobs/UpdateProcessor.d.ts +21 -0
- package/packages/daemon/dist/jobs/UpdateProcessor.d.ts.map +1 -0
- package/packages/daemon/dist/jobs/UpdateProcessor.js +222 -0
- package/packages/daemon/dist/jobs/UpdateProcessor.js.map +1 -0
- package/packages/daemon/dist/services/AIService.d.ts +90 -0
- package/packages/daemon/dist/services/AIService.d.ts.map +1 -0
- package/packages/daemon/dist/services/AIService.js +451 -0
- package/packages/daemon/dist/services/AIService.js.map +1 -0
- package/packages/daemon/dist/services/ConfigService.d.ts +30 -0
- package/packages/daemon/dist/services/ConfigService.d.ts.map +1 -0
- package/packages/daemon/dist/services/ConfigService.js +69 -0
- package/packages/daemon/dist/services/ConfigService.js.map +1 -0
- package/packages/daemon/dist/services/DatabaseService.d.ts +204 -0
- package/packages/daemon/dist/services/DatabaseService.d.ts.map +1 -0
- package/packages/daemon/dist/services/DatabaseService.js +692 -0
- package/packages/daemon/dist/services/DatabaseService.js.map +1 -0
- package/packages/daemon/dist/services/GitService.d.ts +12 -0
- package/packages/daemon/dist/services/GitService.d.ts.map +1 -0
- package/packages/daemon/dist/services/GitService.js +68 -0
- package/packages/daemon/dist/services/GitService.js.map +1 -0
- package/packages/daemon/dist/services/QueueService.d.ts +16 -0
- package/packages/daemon/dist/services/QueueService.d.ts.map +1 -0
- package/packages/daemon/dist/services/QueueService.js +87 -0
- package/packages/daemon/dist/services/QueueService.js.map +1 -0
- package/packages/daemon/dist/services/TriggerService.d.ts +37 -0
- package/packages/daemon/dist/services/TriggerService.d.ts.map +1 -0
- package/packages/daemon/dist/services/TriggerService.js +150 -0
- package/packages/daemon/dist/services/TriggerService.js.map +1 -0
- package/packages/daemon/dist/services/WatcherService.d.ts +12 -0
- package/packages/daemon/dist/services/WatcherService.d.ts.map +1 -0
- package/packages/daemon/dist/services/WatcherService.js +77 -0
- package/packages/daemon/dist/services/WatcherService.js.map +1 -0
- package/packages/daemon/dist/services/index.d.ts +2 -0
- package/packages/daemon/dist/services/index.d.ts.map +1 -0
- package/packages/daemon/dist/services/index.js +18 -0
- package/packages/daemon/dist/services/index.js.map +1 -0
- package/packages/daemon/dist/test-ignore.js +0 -0
- package/packages/daemon/package.json +28 -0
- package/packages/ui/app/actions.ts +73 -0
- package/packages/ui/app/api/ai-activity/route.ts +14 -0
- package/packages/ui/app/globals.css +98 -0
- package/packages/ui/app/layout.tsx +29 -0
- package/packages/ui/app/page.tsx +109 -0
- package/packages/ui/components/AutoRefresh.tsx +18 -0
- package/packages/ui/components/DocumentationViewer.tsx +276 -0
- package/packages/ui/components/FileList.tsx +69 -0
- package/packages/ui/components/HeaderWithThinking.tsx +102 -0
- package/packages/ui/components/JobQueue.tsx +194 -0
- package/packages/ui/components/JobQueueWrapper.tsx +31 -0
- package/packages/ui/components/MermaidInit.tsx +24 -0
- package/packages/ui/components/ProjectContentArea.tsx +186 -0
- package/packages/ui/components/ProjectList.tsx +136 -0
- package/packages/ui/components/ThinkingDrawer.tsx +377 -0
- package/packages/ui/components/ThinkingPanel.tsx +63 -0
- package/packages/ui/components/TriggerSettings.tsx +185 -0
- package/packages/ui/components/VersionSelector.tsx +132 -0
- package/packages/ui/lib/db.ts +521 -0
- package/packages/ui/next-env.d.ts +5 -0
- package/packages/ui/next.config.js +4 -0
- package/packages/ui/package.json +32 -0
- package/packages/ui/postcss.config.js +6 -0
- package/packages/ui/public/logo.png +0 -0
- package/packages/ui/tailwind.config.ts +32 -0
- package/packages/ui/tsconfig.json +40 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createDocProcessor = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const createDocProcessor = (db, ai, configService, git) => {
|
|
10
|
+
return async (data) => {
|
|
11
|
+
const { projectPath } = data;
|
|
12
|
+
const config = configService.loadConfig(projectPath);
|
|
13
|
+
const docsFolder = config.documentation.modules_folder || 'docs';
|
|
14
|
+
const docsDir = path_1.default.join(projectPath, docsFolder);
|
|
15
|
+
console.log(`🕵️♀️ Starting Multi-Stage Documentation for: ${projectPath}`);
|
|
16
|
+
// Get project ID
|
|
17
|
+
let project = db.getProjectByPath(projectPath);
|
|
18
|
+
if (!project) {
|
|
19
|
+
// Try finding parent project
|
|
20
|
+
const projects = db.getProjects();
|
|
21
|
+
project = projects.find(p => projectPath.startsWith(p.path)) || null;
|
|
22
|
+
}
|
|
23
|
+
if (!project) {
|
|
24
|
+
console.error('❌ Project not found in database');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// ===== Create Doc Version =====
|
|
28
|
+
const commitHash = await git.getHeadCommit(projectPath).catch(() => null);
|
|
29
|
+
const versionId = db.createDocVersion(project.id, 'init', commitHash || undefined);
|
|
30
|
+
console.log(`📦 Created doc version #${versionId}`);
|
|
31
|
+
// 1. Scan Project Structure
|
|
32
|
+
const files = await git.listFiles(projectPath);
|
|
33
|
+
// 2. Structural Analysis
|
|
34
|
+
console.log('🧠 Analyzing project structure...');
|
|
35
|
+
const analysis = await ai.analyzeProjectStructure(files);
|
|
36
|
+
const projectType = await ai.detectProjectType(files);
|
|
37
|
+
console.log(`📊 Project type: ${JSON.stringify(projectType)}`);
|
|
38
|
+
// 3. Generate/Update README with thought capture
|
|
39
|
+
const readmePath = path_1.default.join(projectPath, 'README.md');
|
|
40
|
+
console.log('📝 Generating README.md...');
|
|
41
|
+
const readmeResult = await ai.generateWithThoughts(`
|
|
42
|
+
CRITICAL: Output ONLY the raw markdown content. No preamble.
|
|
43
|
+
Generate a professional README.md for this project based on the analysis below.
|
|
44
|
+
Include: Title, Description, Tech Stack, Structure, Getting Started.
|
|
45
|
+
|
|
46
|
+
Analysis: ${analysis}
|
|
47
|
+
File List Sample: ${files.slice(0, 50).join('\\n')}
|
|
48
|
+
|
|
49
|
+
Start directly with the markdown heading.
|
|
50
|
+
`, { db, projectId: project.id, versionId, activityType: 'analyze' });
|
|
51
|
+
const readme = readmeResult.content;
|
|
52
|
+
fs_1.default.writeFileSync(readmePath, readme);
|
|
53
|
+
// Store in version
|
|
54
|
+
const readmeFileId = db.addDocFile(versionId, 'README.md', readme);
|
|
55
|
+
if (readmeResult.thoughts.length > 0) {
|
|
56
|
+
db.addThoughtLog(versionId, 'README.md', readmeResult.thoughts.join('\n\n'));
|
|
57
|
+
}
|
|
58
|
+
db.logEvent('doc:readme_generated', { projectPath, versionId });
|
|
59
|
+
// 4. Create docs folder if needed
|
|
60
|
+
if (!fs_1.default.existsSync(docsDir)) {
|
|
61
|
+
fs_1.default.mkdirSync(docsDir, { recursive: true });
|
|
62
|
+
}
|
|
63
|
+
// ===== STAGE 1: Coverage Planning =====
|
|
64
|
+
console.log('📋 Stage 1: Creating documentation coverage plan...');
|
|
65
|
+
const coveragePlan = await ai.planDocumentation(analysis, files, projectType);
|
|
66
|
+
// Save coverage plan to database
|
|
67
|
+
db.setDocStage(project.id, JSON.stringify(coveragePlan), coveragePlan.stages.length);
|
|
68
|
+
db.updateDocStage(project.id, 1);
|
|
69
|
+
// Write coverage plan to docs (will be removed at end)
|
|
70
|
+
const coveragePlanPath = path_1.default.join(docsDir, '.coverage-plan.md');
|
|
71
|
+
fs_1.default.writeFileSync(coveragePlanPath, formatCoveragePlan(coveragePlan));
|
|
72
|
+
console.log(` 📄 Created ${coveragePlan.folders.length} folders, planned ${coveragePlan.files.length} files`);
|
|
73
|
+
// ===== STAGE 2: Create Folder Structure & Index =====
|
|
74
|
+
console.log('📂 Stage 2: Creating folder structure...');
|
|
75
|
+
for (const folder of coveragePlan.folders) {
|
|
76
|
+
const folderPath = path_1.default.join(projectPath, folder.path);
|
|
77
|
+
if (!fs_1.default.existsSync(folderPath)) {
|
|
78
|
+
fs_1.default.mkdirSync(folderPath, { recursive: true });
|
|
79
|
+
console.log(` 📁 Created: ${folder.path} `);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
db.updateDocStage(project.id, 2);
|
|
83
|
+
// ===== STAGES 3-4: Generate Documentation Files =====
|
|
84
|
+
for (const stage of coveragePlan.stages.slice(1)) { // Skip stage 1 (planning)
|
|
85
|
+
console.log(`📝 Stage ${stage.stage}: ${stage.focus}...`);
|
|
86
|
+
for (const filePath of stage.files) {
|
|
87
|
+
// Find file details from plan
|
|
88
|
+
const fileInfo = coveragePlan.files.find(f => f.path === filePath || filePath.includes('*') && f.path.startsWith(filePath.replace('/*', '')));
|
|
89
|
+
if (!fileInfo) {
|
|
90
|
+
// If it's a wildcard pattern, generate for matching paths
|
|
91
|
+
if (filePath.includes('*')) {
|
|
92
|
+
const matchingFiles = coveragePlan.files.filter(f => f.path.startsWith(filePath.replace('/*', '').replace('/index.md', '')));
|
|
93
|
+
for (const matchedFile of matchingFiles) {
|
|
94
|
+
await generateDocFile(matchedFile, stage.stage >= 4);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
await generateDocFile(fileInfo, stage.stage >= 4);
|
|
100
|
+
}
|
|
101
|
+
db.updateDocStage(project.id, stage.stage);
|
|
102
|
+
}
|
|
103
|
+
async function generateDocFile(fileInfo, includeMermaid) {
|
|
104
|
+
const fullPath = path_1.default.join(projectPath, fileInfo.path);
|
|
105
|
+
const dir = path_1.default.dirname(fullPath);
|
|
106
|
+
// Ensure directory exists
|
|
107
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
108
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
109
|
+
}
|
|
110
|
+
// Generate content with thought capture
|
|
111
|
+
console.log(` 📄 Generating: ${fileInfo.path} `);
|
|
112
|
+
const result = await ai.generateWithThoughts(`
|
|
113
|
+
CRITICAL: Output ONLY the raw markdown content. No preamble.
|
|
114
|
+
|
|
115
|
+
Generate documentation file: ${fileInfo.path}
|
|
116
|
+
Title: ${fileInfo.title}
|
|
117
|
+
Purpose: ${fileInfo.description}
|
|
118
|
+
|
|
119
|
+
Context:
|
|
120
|
+
${analysis}
|
|
121
|
+
|
|
122
|
+
Relevant Files:
|
|
123
|
+
${files.slice(0, 100).join('\\n')}
|
|
124
|
+
|
|
125
|
+
${includeMermaid ? 'Include mermaid diagrams where appropriate for architecture visualization.' : ''}
|
|
126
|
+
|
|
127
|
+
IMPORTANT: If you make any assumptions about the codebase, explicitly state them as:
|
|
128
|
+
[ASSUMPTION: your assumption here]
|
|
129
|
+
|
|
130
|
+
Start directly with the markdown content.
|
|
131
|
+
`, { db, projectId: project.id, versionId, activityType: 'generate' });
|
|
132
|
+
const content = result.content;
|
|
133
|
+
fs_1.default.writeFileSync(fullPath, content);
|
|
134
|
+
// Store in version database
|
|
135
|
+
const docFileId = db.addDocFile(versionId, fileInfo.path, content);
|
|
136
|
+
// Store thoughts
|
|
137
|
+
if (result.thoughts.length > 0) {
|
|
138
|
+
db.addThoughtLog(versionId, fileInfo.path, result.thoughts.join('\n\n'));
|
|
139
|
+
}
|
|
140
|
+
// Extract and store assumptions
|
|
141
|
+
const assumptionMatches = content.match(/\[ASSUMPTION:\s*([^\]]+)\]/g);
|
|
142
|
+
if (assumptionMatches) {
|
|
143
|
+
for (const match of assumptionMatches) {
|
|
144
|
+
const claim = match.replace('[ASSUMPTION:', '').replace(']', '').trim();
|
|
145
|
+
db.addAssumption(docFileId, claim);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
db.logEvent('doc:file_generated', { projectPath, file: fileInfo.path, versionId });
|
|
149
|
+
}
|
|
150
|
+
// ===== FINAL: Clean up coverage plan =====
|
|
151
|
+
console.log('🧹 Cleaning up coverage plan...');
|
|
152
|
+
if (fs_1.default.existsSync(coveragePlanPath)) {
|
|
153
|
+
fs_1.default.unlinkSync(coveragePlanPath);
|
|
154
|
+
}
|
|
155
|
+
// ===== Update Chronicle =====
|
|
156
|
+
const chroniclePath = path_1.default.join(projectPath, 'chronicle.md');
|
|
157
|
+
const generatedFiles = coveragePlan.files.map(f => f.path).join(', ');
|
|
158
|
+
if (!fs_1.default.existsSync(chroniclePath)) {
|
|
159
|
+
console.log('📜 Creating chronicle.md...');
|
|
160
|
+
const chronicleInit = await ai.generateChronicleInit(analysis);
|
|
161
|
+
fs_1.default.writeFileSync(chroniclePath, chronicleInit);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
console.log('📜 Updating chronicle.md...');
|
|
165
|
+
const entry = await ai.generateChronicleEntry('Documentation Updated', `Multi - stage docs generated: ${coveragePlan.files.length} files across ${coveragePlan.folders.length} folders`);
|
|
166
|
+
const existing = fs_1.default.readFileSync(chroniclePath, 'utf-8');
|
|
167
|
+
fs_1.default.writeFileSync(chroniclePath, existing + '\n\n' + entry);
|
|
168
|
+
}
|
|
169
|
+
db.logEvent('doc:chronicle_updated', { projectPath });
|
|
170
|
+
// ===== Phase 1.6: Verification Stage =====
|
|
171
|
+
console.log('🕵️ Starting verification stage...');
|
|
172
|
+
const unverifiedAssumptions = db.getUnverifiedAssumptions(versionId);
|
|
173
|
+
if (unverifiedAssumptions.length > 0) {
|
|
174
|
+
console.log(`Found ${unverifiedAssumptions.length} assumptions to verify.`);
|
|
175
|
+
for (const assumption of unverifiedAssumptions) {
|
|
176
|
+
// Log verification attempt
|
|
177
|
+
const verifyActivityId = db.logAIActivity({
|
|
178
|
+
projectId: project.id,
|
|
179
|
+
versionId,
|
|
180
|
+
activityType: 'plan', // Using plan/verify
|
|
181
|
+
promptSummary: `Verifying: ${assumption.claim} `,
|
|
182
|
+
status: 'running',
|
|
183
|
+
thinkingSummary: `Locating relevant code for: "${assumption.claim}"...`
|
|
184
|
+
});
|
|
185
|
+
try {
|
|
186
|
+
// 1. Locate relevant files
|
|
187
|
+
// Simple heuristic: Ask AI which files from the file list are relevant
|
|
188
|
+
const locationResult = await ai.generateWithThoughts(`
|
|
189
|
+
I need to verify this claim about the codebase: "${assumption.claim}"
|
|
190
|
+
|
|
191
|
+
Based on the file list below, which 3 files are most likely to contain the evidence ?
|
|
192
|
+
Respond with ONLY the file paths, one per line.
|
|
193
|
+
|
|
194
|
+
Files:
|
|
195
|
+
${files.slice(0, 500).join('\n')}
|
|
196
|
+
`, { db, projectId: project.id, versionId, activityType: 'plan' });
|
|
197
|
+
const relevantFiles = locationResult.content.split('\n').map(l => l.trim()).filter(l => files.includes(l));
|
|
198
|
+
// 2. Read file contents
|
|
199
|
+
let evidenceContext = '';
|
|
200
|
+
for (const file of relevantFiles) {
|
|
201
|
+
try {
|
|
202
|
+
const content = fs_1.default.readFileSync(path_1.default.join(projectPath, file), 'utf-8');
|
|
203
|
+
evidenceContext += `-- - ${file} ---\n${content.slice(0, 5000)} \n\n`; // Limit context
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
// Ignore missing files
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// 3. Verify
|
|
210
|
+
const verificationResult = await ai.generateWithThoughts(`
|
|
211
|
+
Verify this assumption: "${assumption.claim}"
|
|
212
|
+
|
|
213
|
+
Evidence from Code:
|
|
214
|
+
${evidenceContext}
|
|
215
|
+
|
|
216
|
+
Task:
|
|
217
|
+
1. Determine if the assumption is TRUE, FALSE, or UNVERIFIABLE.
|
|
218
|
+
2. If FALSE, provide the correct fact.
|
|
219
|
+
|
|
220
|
+
Respond in JSON:
|
|
221
|
+
{
|
|
222
|
+
"status": "TRUE" | "FALSE" | "UNVERIFIABLE",
|
|
223
|
+
"reason": "explanation...",
|
|
224
|
+
"correction": "correct fact if false"
|
|
225
|
+
}
|
|
226
|
+
`, { db, projectId: project.id, versionId, activityType: 'analyze' });
|
|
227
|
+
const verification = JSON.parse(verificationResult.content.replace(/```json/g, '').replace(/```/g, '').trim());
|
|
228
|
+
// 4. Update DB
|
|
229
|
+
if (verification.status === 'TRUE') {
|
|
230
|
+
db.updateAssumptionStatus(assumption.id, 1, verification.reason); // 1 = verified
|
|
231
|
+
console.log(`✅ Verified: ${assumption.claim}`);
|
|
232
|
+
}
|
|
233
|
+
else if (verification.status === 'FALSE') {
|
|
234
|
+
db.updateAssumptionStatus(assumption.id, -1, verification.reason); // -1 = rejected
|
|
235
|
+
console.log(`❌ Rejected: ${assumption.claim} -> ${verification.correction}`);
|
|
236
|
+
// 5. Update Doc Content (Correction)
|
|
237
|
+
// Load the doc file
|
|
238
|
+
const docFileId = db.getDocFileId(versionId, assumption.doc_path); // Need this method
|
|
239
|
+
if (docFileId) {
|
|
240
|
+
const currentContent = fs_1.default.readFileSync(path_1.default.join(projectPath, assumption.doc_path), 'utf-8'); // wait, doc_path is full path? DB doc_path is relative?
|
|
241
|
+
// Check DB schema. doc_files.path is relative usually.
|
|
242
|
+
// Actually, in generateDocFile: fileInfo.path is generated from full path.
|
|
243
|
+
// Let's assume relative path to project root.
|
|
244
|
+
// Actually, extracting matching doc file is tricky without docFileId in assumption.
|
|
245
|
+
// Assumptions table has doc_file_id.
|
|
246
|
+
// db.getUnverifiedAssumptions returns { id, claim, doc_path }.
|
|
247
|
+
// We need to read the generated doc file.
|
|
248
|
+
// The generated doc file is at `fullPath` which is `docsDir + / + fileInfo.path`.
|
|
249
|
+
// Wait, `process` method defines `docsDir`.
|
|
250
|
+
const docsDir = path_1.default.join(projectPath, '.chronicle', 'docs');
|
|
251
|
+
const docFullPath = path_1.default.join(docsDir, assumption.doc_path);
|
|
252
|
+
if (fs_1.default.existsSync(docFullPath)) {
|
|
253
|
+
const docContent = fs_1.default.readFileSync(docFullPath, 'utf-8');
|
|
254
|
+
const correctedContent = docContent.replace(`[ASSUMPTION: ${assumption.claim}]`, `> **Correction**: ${verification.correction} (Verified: ${verification.reason})`);
|
|
255
|
+
fs_1.default.writeFileSync(docFullPath, correctedContent);
|
|
256
|
+
// Update DB content too
|
|
257
|
+
db.updateDocFileContent(docFileId, correctedContent); // Need this method
|
|
258
|
+
// 6. Log Action for Thinking Platform
|
|
259
|
+
db.logAIActivity({
|
|
260
|
+
projectId: project.id,
|
|
261
|
+
versionId,
|
|
262
|
+
activityType: 'action',
|
|
263
|
+
promptSummary: `📝 Corrected Assumption in ${assumption.doc_path}`,
|
|
264
|
+
status: 'completed',
|
|
265
|
+
thinkingSummary: `**Assumption Corrected**
|
|
266
|
+
|
|
267
|
+
❌ **Before:** ${assumption.claim}
|
|
268
|
+
|
|
269
|
+
✅ **After:** ${verification.correction}
|
|
270
|
+
|
|
271
|
+
**Reason:** ${verification.reason}
|
|
272
|
+
|
|
273
|
+
**File:** ${assumption.doc_path}`
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
// Update activity log
|
|
279
|
+
db.updateAIActivity(verifyActivityId, {
|
|
280
|
+
status: 'completed',
|
|
281
|
+
thinkingSummary: `Verification Step: ${verification.status}\n\nReasoning: ${verification.reason}`
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
console.error('Verification failed:', error);
|
|
286
|
+
db.updateAIActivity(verifyActivityId, {
|
|
287
|
+
status: 'error',
|
|
288
|
+
responsePreview: `Verification failed: ${error.message}`
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// ===== Finalize Version =====
|
|
294
|
+
// Re-check unverified (some might remain unverified)
|
|
295
|
+
const remainingUnverified = db.getUnverifiedAssumptions(versionId);
|
|
296
|
+
if (unverifiedAssumptions.length > 0) {
|
|
297
|
+
// Mark as pending review if there are unverified assumptions
|
|
298
|
+
db.updateDocVersionStatus(versionId, 'pending_review');
|
|
299
|
+
console.log(`⚠️ Version has ${unverifiedAssumptions.length} unverified assumptions - marked for review`);
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
// Activate the version (archives previous active)
|
|
303
|
+
db.activateDocVersion(versionId, project.id);
|
|
304
|
+
console.log(`✅ Version activated`);
|
|
305
|
+
}
|
|
306
|
+
// Reset stage counter (job is complete)
|
|
307
|
+
db.resetDocStage(project.id);
|
|
308
|
+
console.log(`✅ Multi-stage documentation complete for ${projectPath}`);
|
|
309
|
+
console.log(` 📦 Version: #${versionId}`);
|
|
310
|
+
console.log(` 📁 Created: ${coveragePlan.folders.length} folders`);
|
|
311
|
+
console.log(` 📄 Generated: ${coveragePlan.files.length} files`);
|
|
312
|
+
};
|
|
313
|
+
};
|
|
314
|
+
exports.createDocProcessor = createDocProcessor;
|
|
315
|
+
function formatCoveragePlan(plan) {
|
|
316
|
+
let md = '# Documentation Coverage Plan\n\n';
|
|
317
|
+
md += '> This file is temporary and will be removed after documentation is complete.\n\n';
|
|
318
|
+
md += '## Folders\n\n';
|
|
319
|
+
for (const folder of plan.folders) {
|
|
320
|
+
md += `- \`${folder.path}\` - ${folder.purpose}\n`;
|
|
321
|
+
}
|
|
322
|
+
md += '\n## Files\n\n';
|
|
323
|
+
for (const file of plan.files) {
|
|
324
|
+
md += `- \`${file.path}\` - **${file.title}**: ${file.description}\n`;
|
|
325
|
+
}
|
|
326
|
+
md += '\n## Stages\n\n';
|
|
327
|
+
for (const stage of plan.stages) {
|
|
328
|
+
md += `### Stage ${stage.stage}: ${stage.focus}\n`;
|
|
329
|
+
for (const file of stage.files) {
|
|
330
|
+
md += `- ${file}\n`;
|
|
331
|
+
}
|
|
332
|
+
md += '\n';
|
|
333
|
+
}
|
|
334
|
+
return md;
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=DocProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocProcessor.js","sourceRoot":"","sources":["../../src/jobs/DocProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { GitService } from '../services/GitService';
|
|
2
|
+
import { DatabaseService } from '../services/DatabaseService';
|
|
3
|
+
export declare const createFileProcessor: (git: GitService, db: DatabaseService) => (data: {
|
|
4
|
+
filePath: string;
|
|
5
|
+
event: string;
|
|
6
|
+
}) => Promise<void>;
|
|
7
|
+
//# sourceMappingURL=FileProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileProcessor.d.ts","sourceRoot":"","sources":["../../src/jobs/FileProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,eAAO,MAAM,mBAAmB,GAAI,KAAK,UAAU,EAAE,IAAI,eAAe,MACtD,MAAM;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,kBAuB1D,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createFileProcessor = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const createFileProcessor = (git, db) => {
|
|
9
|
+
return async (data) => {
|
|
10
|
+
const { filePath, event } = data;
|
|
11
|
+
// Resolve to absolute path for consistent storage and querying
|
|
12
|
+
const absolutePath = path_1.default.isAbsolute(filePath)
|
|
13
|
+
? filePath
|
|
14
|
+
: path_1.default.resolve(process.cwd(), filePath);
|
|
15
|
+
console.log(`🧠 AI Agent processing change in: ${absolutePath} (${event})`);
|
|
16
|
+
// Log to structural memory
|
|
17
|
+
db.upsertFile(absolutePath, '', Date.now());
|
|
18
|
+
db.logEvent('file:processed', { filePath: absolutePath, event });
|
|
19
|
+
// Trigger AI Embedding Job if it's a valid code file
|
|
20
|
+
// Simple filter: ignore non-text files
|
|
21
|
+
const isEmbeddable = /\.(ts|tsx|js|jsx|md|json|css|html)$/.test(absolutePath);
|
|
22
|
+
if (isEmbeddable) {
|
|
23
|
+
console.log(`✨ Enqueuing AI Embedding for: ${absolutePath}`);
|
|
24
|
+
db.enqueueJob('ai:embed', { filePath: absolutePath });
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
exports.createFileProcessor = createFileProcessor;
|
|
29
|
+
//# sourceMappingURL=FileProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileProcessor.js","sourceRoot":"","sources":["../../src/jobs/FileProcessor.ts"],"names":[],"mappings":";;;;;;AAEA,gDAAwB;AAEjB,MAAM,mBAAmB,GAAG,CAAC,GAAe,EAAE,EAAmB,EAAE,EAAE;IACxE,OAAO,KAAK,EAAE,IAAyC,EAAE,EAAE;QACvD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEjC,+DAA+D;QAC/D,MAAM,YAAY,GAAG,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC1C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,qCAAqC,YAAY,KAAK,KAAK,GAAG,CAAC,CAAC;QAE5E,2BAA2B;QAC3B,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjE,qDAAqD;QACrD,uCAAuC;QACvC,MAAM,YAAY,GAAG,qCAAqC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE9E,IAAI,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;YAC7D,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AAxBW,QAAA,mBAAmB,uBAwB9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DatabaseService } from '../services/DatabaseService';
|
|
2
|
+
import { WatcherService } from '../services/WatcherService';
|
|
3
|
+
import { ConfigService } from '../services/ConfigService';
|
|
4
|
+
import { QueueService } from '../services/QueueService';
|
|
5
|
+
import { TriggerService } from '../services/TriggerService';
|
|
6
|
+
interface ProjectPayload {
|
|
7
|
+
path: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const createSystemProcessor: (db: DatabaseService, watcher: WatcherService, configService: ConfigService, queue: QueueService, triggerService: TriggerService) => (data: ProjectPayload & {
|
|
10
|
+
action: "add" | "remove";
|
|
11
|
+
}) => Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=SystemProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemProcessor.d.ts","sourceRoot":"","sources":["../../src/jobs/SystemProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,UAAU,cAAc;IACpB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,qBAAqB,GAC9B,IAAI,eAAe,EACnB,SAAS,cAAc,EACvB,eAAe,aAAa,EAC5B,OAAO,YAAY,EACnB,gBAAgB,cAAc,MAEhB,MAAM,cAAc,GAAG;IAAE,MAAM,EAAE,KAAK,GAAG,QAAQ,CAAA;CAAE,kBAoCpE,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSystemProcessor = void 0;
|
|
4
|
+
const createSystemProcessor = (db, watcher, configService, queue, triggerService) => {
|
|
5
|
+
return async (data) => {
|
|
6
|
+
const { path, action } = data;
|
|
7
|
+
if (action === 'add') {
|
|
8
|
+
console.log(`➕ Adding project: ${path}`);
|
|
9
|
+
db.addProject(path);
|
|
10
|
+
// Generate default config if missing
|
|
11
|
+
configService.generateDefaultConfigFile(path);
|
|
12
|
+
// Load config and register triggers
|
|
13
|
+
const config = configService.loadConfig(path);
|
|
14
|
+
triggerService.registerProject(path, config);
|
|
15
|
+
watcher.addPath(path);
|
|
16
|
+
db.logEvent('project:added', { path });
|
|
17
|
+
// Trigger Documentation Recon
|
|
18
|
+
queue.add('doc:initialize', { projectPath: path });
|
|
19
|
+
console.log(`🚀 Triggered Doc Recon for: ${path}`);
|
|
20
|
+
}
|
|
21
|
+
else if (action === 'remove') {
|
|
22
|
+
console.log(`➖ Removing project: ${path}`);
|
|
23
|
+
const result = db.removeProject(path);
|
|
24
|
+
if (result.changes > 0) {
|
|
25
|
+
watcher.removePath(path);
|
|
26
|
+
triggerService.unregisterProject(path);
|
|
27
|
+
db.logEvent('project:removed', { path });
|
|
28
|
+
console.log(`✅ Project removed successfully: ${path}`);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
console.warn(`⚠️ Project not found in database: ${path}`);
|
|
32
|
+
console.warn(` It may have already been removed or the path doesn't match.`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
exports.createSystemProcessor = createSystemProcessor;
|
|
38
|
+
//# sourceMappingURL=SystemProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SystemProcessor.js","sourceRoot":"","sources":["../../src/jobs/SystemProcessor.ts"],"names":[],"mappings":";;;AAUO,MAAM,qBAAqB,GAAG,CACjC,EAAmB,EACnB,OAAuB,EACvB,aAA4B,EAC5B,KAAmB,EACnB,cAA8B,EAChC,EAAE;IACA,OAAO,KAAK,EAAE,IAAmD,EAAE,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAE9B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;YACzC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEpB,qCAAqC;YACrC,aAAa,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAE9C,oCAAoC;YACpC,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9C,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAE7C,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvC,8BAA8B;YAC9B,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QAEvD,CAAC;aAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAEtC,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACzB,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACvC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YACnF,CAAC;QACL,CAAC;IACL,CAAC,CAAC;AACN,CAAC,CAAC;AA3CW,QAAA,qBAAqB,yBA2ChC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DatabaseService } from '../services/DatabaseService';
|
|
2
|
+
import { AIService } from '../services/AIService';
|
|
3
|
+
import { ConfigService } from '../services/ConfigService';
|
|
4
|
+
import { GitService } from '../services/GitService';
|
|
5
|
+
interface UpdateJobData {
|
|
6
|
+
projectPath: string;
|
|
7
|
+
triggerType: 'manual' | 'on_change' | 'on_commit' | 'schedule';
|
|
8
|
+
incremental: boolean;
|
|
9
|
+
changedFiles?: string[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Creates an incremental doc update processor.
|
|
13
|
+
* Unlike doc:initialize which regenerates everything, this:
|
|
14
|
+
* 1. Analyzes what files changed since last doc version
|
|
15
|
+
* 2. Determines which docs are affected
|
|
16
|
+
* 3. Updates only those docs
|
|
17
|
+
* 4. Creates a new version with the changes
|
|
18
|
+
*/
|
|
19
|
+
export declare const createUpdateProcessor: (db: DatabaseService, ai: AIService, configService: ConfigService, git: GitService) => (data: UpdateJobData) => Promise<void>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=UpdateProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateProcessor.d.ts","sourceRoot":"","sources":["../../src/jobs/UpdateProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKpD,UAAU,aAAa;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;IAC/D,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,GAC9B,IAAI,eAAe,EACnB,IAAI,SAAS,EACb,eAAe,aAAa,EAC5B,KAAK,UAAU,MAED,MAAM,aAAa,kBA0JpC,CAAC"}
|