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.
Files changed (155) hide show
  1. package/README.md +132 -0
  2. package/package.json +86 -0
  3. package/packages/README.md +139 -0
  4. package/packages/cli/README.md +92 -0
  5. package/packages/cli/bin/chronicle.js +2 -0
  6. package/packages/cli/dist/commands/add.d.ts +2 -0
  7. package/packages/cli/dist/commands/add.d.ts.map +1 -0
  8. package/packages/cli/dist/commands/add.js +82 -0
  9. package/packages/cli/dist/commands/add.js.map +1 -0
  10. package/packages/cli/dist/commands/diff.d.ts +11 -0
  11. package/packages/cli/dist/commands/diff.d.ts.map +1 -0
  12. package/packages/cli/dist/commands/diff.js +164 -0
  13. package/packages/cli/dist/commands/diff.js.map +1 -0
  14. package/packages/cli/dist/commands/init.d.ts +2 -0
  15. package/packages/cli/dist/commands/init.d.ts.map +1 -0
  16. package/packages/cli/dist/commands/init.js +54 -0
  17. package/packages/cli/dist/commands/init.js.map +1 -0
  18. package/packages/cli/dist/commands/list.d.ts +2 -0
  19. package/packages/cli/dist/commands/list.d.ts.map +1 -0
  20. package/packages/cli/dist/commands/list.js +62 -0
  21. package/packages/cli/dist/commands/list.js.map +1 -0
  22. package/packages/cli/dist/commands/log.d.ts +4 -0
  23. package/packages/cli/dist/commands/log.d.ts.map +1 -0
  24. package/packages/cli/dist/commands/log.js +223 -0
  25. package/packages/cli/dist/commands/log.js.map +1 -0
  26. package/packages/cli/dist/commands/pause.d.ts +3 -0
  27. package/packages/cli/dist/commands/pause.d.ts.map +1 -0
  28. package/packages/cli/dist/commands/pause.js +49 -0
  29. package/packages/cli/dist/commands/pause.js.map +1 -0
  30. package/packages/cli/dist/commands/queue.d.ts +2 -0
  31. package/packages/cli/dist/commands/queue.d.ts.map +1 -0
  32. package/packages/cli/dist/commands/queue.js +96 -0
  33. package/packages/cli/dist/commands/queue.js.map +1 -0
  34. package/packages/cli/dist/commands/remove.d.ts +2 -0
  35. package/packages/cli/dist/commands/remove.d.ts.map +1 -0
  36. package/packages/cli/dist/commands/remove.js +80 -0
  37. package/packages/cli/dist/commands/remove.js.map +1 -0
  38. package/packages/cli/dist/commands/reset.d.ts +5 -0
  39. package/packages/cli/dist/commands/reset.d.ts.map +1 -0
  40. package/packages/cli/dist/commands/reset.js +90 -0
  41. package/packages/cli/dist/commands/reset.js.map +1 -0
  42. package/packages/cli/dist/commands/restart.d.ts +2 -0
  43. package/packages/cli/dist/commands/restart.d.ts.map +1 -0
  44. package/packages/cli/dist/commands/restart.js +72 -0
  45. package/packages/cli/dist/commands/restart.js.map +1 -0
  46. package/packages/cli/dist/commands/start.d.ts +2 -0
  47. package/packages/cli/dist/commands/start.d.ts.map +1 -0
  48. package/packages/cli/dist/commands/start.js +127 -0
  49. package/packages/cli/dist/commands/start.js.map +1 -0
  50. package/packages/cli/dist/commands/status.d.ts +2 -0
  51. package/packages/cli/dist/commands/status.d.ts.map +1 -0
  52. package/packages/cli/dist/commands/status.js +181 -0
  53. package/packages/cli/dist/commands/status.js.map +1 -0
  54. package/packages/cli/dist/commands/stop.d.ts +2 -0
  55. package/packages/cli/dist/commands/stop.d.ts.map +1 -0
  56. package/packages/cli/dist/commands/stop.js +64 -0
  57. package/packages/cli/dist/commands/stop.js.map +1 -0
  58. package/packages/cli/dist/index.d.ts +2 -0
  59. package/packages/cli/dist/index.d.ts.map +1 -0
  60. package/packages/cli/dist/index.js +85 -0
  61. package/packages/cli/dist/index.js.map +1 -0
  62. package/packages/cli/dist/utils/paths.d.ts +26 -0
  63. package/packages/cli/dist/utils/paths.d.ts.map +1 -0
  64. package/packages/cli/dist/utils/paths.js +183 -0
  65. package/packages/cli/dist/utils/paths.js.map +1 -0
  66. package/packages/cli/package.json +25 -0
  67. package/packages/daemon/README.md +83 -0
  68. package/packages/daemon/dist/ai_test.d.ts +2 -0
  69. package/packages/daemon/dist/ai_test.d.ts.map +1 -0
  70. package/packages/daemon/dist/ai_test.js +4 -0
  71. package/packages/daemon/dist/ai_test.js.map +1 -0
  72. package/packages/daemon/dist/index.d.ts +2 -0
  73. package/packages/daemon/dist/index.d.ts.map +1 -0
  74. package/packages/daemon/dist/index.js +147 -0
  75. package/packages/daemon/dist/index.js.map +1 -0
  76. package/packages/daemon/dist/jobs/AIProcessor.d.ts +6 -0
  77. package/packages/daemon/dist/jobs/AIProcessor.d.ts.map +1 -0
  78. package/packages/daemon/dist/jobs/AIProcessor.js +58 -0
  79. package/packages/daemon/dist/jobs/AIProcessor.js.map +1 -0
  80. package/packages/daemon/dist/jobs/DocProcessor.d.ts +8 -0
  81. package/packages/daemon/dist/jobs/DocProcessor.d.ts.map +1 -0
  82. package/packages/daemon/dist/jobs/DocProcessor.js +336 -0
  83. package/packages/daemon/dist/jobs/DocProcessor.js.map +1 -0
  84. package/packages/daemon/dist/jobs/FileProcessor.d.ts +7 -0
  85. package/packages/daemon/dist/jobs/FileProcessor.d.ts.map +1 -0
  86. package/packages/daemon/dist/jobs/FileProcessor.js +29 -0
  87. package/packages/daemon/dist/jobs/FileProcessor.js.map +1 -0
  88. package/packages/daemon/dist/jobs/SystemProcessor.d.ts +13 -0
  89. package/packages/daemon/dist/jobs/SystemProcessor.d.ts.map +1 -0
  90. package/packages/daemon/dist/jobs/SystemProcessor.js +38 -0
  91. package/packages/daemon/dist/jobs/SystemProcessor.js.map +1 -0
  92. package/packages/daemon/dist/jobs/UpdateProcessor.d.ts +21 -0
  93. package/packages/daemon/dist/jobs/UpdateProcessor.d.ts.map +1 -0
  94. package/packages/daemon/dist/jobs/UpdateProcessor.js +222 -0
  95. package/packages/daemon/dist/jobs/UpdateProcessor.js.map +1 -0
  96. package/packages/daemon/dist/services/AIService.d.ts +90 -0
  97. package/packages/daemon/dist/services/AIService.d.ts.map +1 -0
  98. package/packages/daemon/dist/services/AIService.js +451 -0
  99. package/packages/daemon/dist/services/AIService.js.map +1 -0
  100. package/packages/daemon/dist/services/ConfigService.d.ts +30 -0
  101. package/packages/daemon/dist/services/ConfigService.d.ts.map +1 -0
  102. package/packages/daemon/dist/services/ConfigService.js +69 -0
  103. package/packages/daemon/dist/services/ConfigService.js.map +1 -0
  104. package/packages/daemon/dist/services/DatabaseService.d.ts +204 -0
  105. package/packages/daemon/dist/services/DatabaseService.d.ts.map +1 -0
  106. package/packages/daemon/dist/services/DatabaseService.js +692 -0
  107. package/packages/daemon/dist/services/DatabaseService.js.map +1 -0
  108. package/packages/daemon/dist/services/GitService.d.ts +12 -0
  109. package/packages/daemon/dist/services/GitService.d.ts.map +1 -0
  110. package/packages/daemon/dist/services/GitService.js +68 -0
  111. package/packages/daemon/dist/services/GitService.js.map +1 -0
  112. package/packages/daemon/dist/services/QueueService.d.ts +16 -0
  113. package/packages/daemon/dist/services/QueueService.d.ts.map +1 -0
  114. package/packages/daemon/dist/services/QueueService.js +87 -0
  115. package/packages/daemon/dist/services/QueueService.js.map +1 -0
  116. package/packages/daemon/dist/services/TriggerService.d.ts +37 -0
  117. package/packages/daemon/dist/services/TriggerService.d.ts.map +1 -0
  118. package/packages/daemon/dist/services/TriggerService.js +150 -0
  119. package/packages/daemon/dist/services/TriggerService.js.map +1 -0
  120. package/packages/daemon/dist/services/WatcherService.d.ts +12 -0
  121. package/packages/daemon/dist/services/WatcherService.d.ts.map +1 -0
  122. package/packages/daemon/dist/services/WatcherService.js +77 -0
  123. package/packages/daemon/dist/services/WatcherService.js.map +1 -0
  124. package/packages/daemon/dist/services/index.d.ts +2 -0
  125. package/packages/daemon/dist/services/index.d.ts.map +1 -0
  126. package/packages/daemon/dist/services/index.js +18 -0
  127. package/packages/daemon/dist/services/index.js.map +1 -0
  128. package/packages/daemon/dist/test-ignore.js +0 -0
  129. package/packages/daemon/package.json +28 -0
  130. package/packages/ui/app/actions.ts +73 -0
  131. package/packages/ui/app/api/ai-activity/route.ts +14 -0
  132. package/packages/ui/app/globals.css +98 -0
  133. package/packages/ui/app/layout.tsx +29 -0
  134. package/packages/ui/app/page.tsx +109 -0
  135. package/packages/ui/components/AutoRefresh.tsx +18 -0
  136. package/packages/ui/components/DocumentationViewer.tsx +276 -0
  137. package/packages/ui/components/FileList.tsx +69 -0
  138. package/packages/ui/components/HeaderWithThinking.tsx +102 -0
  139. package/packages/ui/components/JobQueue.tsx +194 -0
  140. package/packages/ui/components/JobQueueWrapper.tsx +31 -0
  141. package/packages/ui/components/MermaidInit.tsx +24 -0
  142. package/packages/ui/components/ProjectContentArea.tsx +186 -0
  143. package/packages/ui/components/ProjectList.tsx +136 -0
  144. package/packages/ui/components/ThinkingDrawer.tsx +377 -0
  145. package/packages/ui/components/ThinkingPanel.tsx +63 -0
  146. package/packages/ui/components/TriggerSettings.tsx +185 -0
  147. package/packages/ui/components/VersionSelector.tsx +132 -0
  148. package/packages/ui/lib/db.ts +521 -0
  149. package/packages/ui/next-env.d.ts +5 -0
  150. package/packages/ui/next.config.js +4 -0
  151. package/packages/ui/package.json +32 -0
  152. package/packages/ui/postcss.config.js +6 -0
  153. package/packages/ui/public/logo.png +0 -0
  154. package/packages/ui/tailwind.config.ts +32 -0
  155. package/packages/ui/tsconfig.json +40 -0
@@ -0,0 +1,222 @@
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.createUpdateProcessor = void 0;
7
+ const GitService_1 = require("../services/GitService");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const crypto_1 = __importDefault(require("crypto"));
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
+ const createUpdateProcessor = (db, ai, configService, git) => {
20
+ return async (data) => {
21
+ const { projectPath, triggerType } = data;
22
+ const config = configService.loadConfig(projectPath);
23
+ const docsFolder = config.documentation.modules_folder || 'docs';
24
+ const docsDir = path_1.default.join(projectPath, docsFolder);
25
+ console.log(`🔄 Incremental Doc Update for: ${projectPath} (trigger: ${triggerType})`);
26
+ // Get project - must be exact match or verified parent
27
+ let project = db.getProjectByPath(projectPath);
28
+ if (!project) {
29
+ // Only check parent projects if exact match fails
30
+ const projects = db.getProjects();
31
+ const parentProject = projects.find(p => projectPath.startsWith(p.path));
32
+ // Verify it's actually a monitored project, not just a path match
33
+ if (parentProject) {
34
+ // Double-check: is this file actually within the monitored project?
35
+ const normalizedProjectPath = path_1.default.resolve(parentProject.path);
36
+ const normalizedFilePath = path_1.default.resolve(projectPath);
37
+ if (normalizedFilePath.startsWith(normalizedProjectPath)) {
38
+ project = parentProject;
39
+ }
40
+ }
41
+ }
42
+ if (!project) {
43
+ console.warn(`⚠️ Project not found in database: ${projectPath}`);
44
+ console.warn(` Skipping doc update. Run "chronicle add" to monitor this project.`);
45
+ return;
46
+ }
47
+ // Get active version
48
+ const activeVersion = db.getActiveDocVersion(project.id);
49
+ if (!activeVersion) {
50
+ const errorMsg = '❌ No active doc version found. Run "chronicle init" first to generate initial documentation.';
51
+ console.error(errorMsg);
52
+ db.logEvent('doc:update_error', { projectPath, error: 'No active version - run chronicle init first' });
53
+ throw new Error(errorMsg);
54
+ }
55
+ // Get files from last version
56
+ const lastDocFiles = db.getDocFiles(activeVersion.id);
57
+ const lastDocHashes = new Map(lastDocFiles.map(f => [f.path, crypto_1.default.createHash('md5').update(f.content).digest('hex')]));
58
+ // Get current project files
59
+ const currentFiles = await git.listFiles(projectPath);
60
+ const commitHash = await git.getHeadCommit(projectPath);
61
+ // Analyze what changed in the codebase
62
+ console.log('🔍 Analyzing changes...');
63
+ const changedSourceFiles = await detectChangedFiles(projectPath, db, project.id);
64
+ if (changedSourceFiles.length === 0) {
65
+ console.log('✅ No significant changes detected. Docs are up to date.');
66
+ return;
67
+ }
68
+ console.log(` Found ${changedSourceFiles.length} changed source files`);
69
+ // Create new version
70
+ const versionId = db.createDocVersion(project.id, triggerType, commitHash || undefined);
71
+ console.log(`📦 Created doc version #${versionId}`);
72
+ // Determine which docs need updating based on changed files
73
+ const affectedDocs = await determineAffectedDocs(changedSourceFiles, lastDocFiles, ai);
74
+ console.log(`📝 Updating ${affectedDocs.length} affected doc files...`);
75
+ // Get project analysis for context
76
+ const analysis = await ai.analyzeProjectStructure(currentFiles);
77
+ // Update affected docs
78
+ for (const docPath of affectedDocs) {
79
+ const existingDoc = lastDocFiles.find(f => f.path === docPath);
80
+ console.log(` 📄 Updating: ${docPath}`);
81
+ const result = await ai.generateWithThoughts(`
82
+ CRITICAL: Output ONLY the raw markdown content. No preamble.
83
+
84
+ You are updating an existing documentation file based on code changes.
85
+
86
+ File: ${docPath}
87
+
88
+ ${existingDoc ? `Current Content:\n${existingDoc.content.slice(0, 2000)}...\n` : ''}
89
+
90
+ Changed source files:
91
+ ${changedSourceFiles.slice(0, 20).join('\\n')}
92
+
93
+ Project context:
94
+ ${analysis}
95
+
96
+ Update the documentation to reflect any changes. Keep the same structure and style.
97
+ If you make assumptions, mark them as: [ASSUMPTION: your assumption]
98
+
99
+ Start directly with the markdown content.
100
+ `);
101
+ const content = result.content;
102
+ const fullPath = path_1.default.join(projectPath, docPath);
103
+ // Ensure directory exists
104
+ const dir = path_1.default.dirname(fullPath);
105
+ if (!fs_1.default.existsSync(dir)) {
106
+ fs_1.default.mkdirSync(dir, { recursive: true });
107
+ }
108
+ fs_1.default.writeFileSync(fullPath, content);
109
+ // Store in version
110
+ const docFileId = db.addDocFile(versionId, docPath, content);
111
+ // Store thoughts
112
+ if (result.thoughts.length > 0) {
113
+ db.addThoughtLog(versionId, docPath, result.thoughts.join('\n\n'));
114
+ }
115
+ // Extract assumptions
116
+ const assumptionMatches = content.match(/\[ASSUMPTION:\s*([^\]]+)\]/g);
117
+ if (assumptionMatches) {
118
+ for (const match of assumptionMatches) {
119
+ const claim = match.replace('[ASSUMPTION:', '').replace(']', '').trim();
120
+ db.addAssumption(docFileId, claim);
121
+ }
122
+ }
123
+ db.logEvent('doc:file_updated', { projectPath, file: docPath, versionId });
124
+ }
125
+ // Copy unchanged docs to new version
126
+ for (const doc of lastDocFiles) {
127
+ if (!affectedDocs.includes(doc.path)) {
128
+ db.addDocFile(versionId, doc.path, doc.content);
129
+ }
130
+ }
131
+ // Finalize version
132
+ const unverifiedAssumptions = db.getUnverifiedAssumptions(versionId);
133
+ if (unverifiedAssumptions.length > 0) {
134
+ db.updateDocVersionStatus(versionId, 'pending_review');
135
+ console.log(`⚠️ Version has ${unverifiedAssumptions.length} unverified assumptions - marked for review`);
136
+ }
137
+ else {
138
+ db.activateDocVersion(versionId, project.id);
139
+ console.log(`✅ Version activated`);
140
+ }
141
+ // Reset stage counter (job is complete)
142
+ db.resetDocStage(project.id);
143
+ console.log(`✅ Incremental update complete`);
144
+ console.log(` 📦 Version: #${versionId}`);
145
+ console.log(` 📄 Updated: ${affectedDocs.length} files`);
146
+ };
147
+ };
148
+ exports.createUpdateProcessor = createUpdateProcessor;
149
+ /**
150
+ * Detect which source files have changed since last doc version.
151
+ * Uses git diff to find modified files.
152
+ */
153
+ async function detectChangedFiles(projectPath, db, projectId) {
154
+ const git = new GitService_1.GitService(projectPath);
155
+ try {
156
+ // Use git status to find uncommitted changes
157
+ const status = await git.getStatus();
158
+ const changedFiles = [];
159
+ // Add modified, added, and renamed files
160
+ for (const file of [...status.modified, ...status.created, ...status.renamed.map(r => r.to)]) {
161
+ // Skip non-source files
162
+ if (file.includes('node_modules') || file.includes('.git') || file.startsWith('docs/'))
163
+ continue;
164
+ changedFiles.push(file);
165
+ }
166
+ // Also check for recent commits (last 5)
167
+ const log = await git.getLog(5);
168
+ // If there are recent commits (within last hour), consider those files changed too
169
+ const oneHourAgo = Date.now() - (60 * 60 * 1000);
170
+ for (const commit of log.all) {
171
+ const commitDate = new Date(commit.date).getTime();
172
+ if (commitDate > oneHourAgo) {
173
+ // This is a recent commit - the diffs are likely significant
174
+ // We'll include any staged/modified files
175
+ }
176
+ }
177
+ return changedFiles;
178
+ }
179
+ catch (error) {
180
+ console.warn('Could not detect changes via git:', error);
181
+ return [];
182
+ }
183
+ }
184
+ /**
185
+ * Determine which doc files are affected by the source changes.
186
+ */
187
+ async function determineAffectedDocs(changedSourceFiles, lastDocFiles, ai) {
188
+ // Simple heuristic: map source files to doc files
189
+ const affectedDocs = new Set();
190
+ for (const sourceFile of changedSourceFiles) {
191
+ // Find docs that might reference this file
192
+ for (const doc of lastDocFiles) {
193
+ // Check if doc content mentions the source file
194
+ const basename = path_1.default.basename(sourceFile);
195
+ const dirname = path_1.default.dirname(sourceFile);
196
+ if (doc.content.includes(basename) || doc.content.includes(dirname)) {
197
+ affectedDocs.add(doc.path);
198
+ }
199
+ }
200
+ // Map by directory structure
201
+ const parts = sourceFile.split('/');
202
+ if (parts.length > 1) {
203
+ const packageOrDir = parts[0];
204
+ // Find corresponding doc folder
205
+ for (const doc of lastDocFiles) {
206
+ if (doc.path.includes(packageOrDir)) {
207
+ affectedDocs.add(doc.path);
208
+ }
209
+ }
210
+ }
211
+ }
212
+ // If no specific docs found, update main index files
213
+ if (affectedDocs.size === 0) {
214
+ for (const doc of lastDocFiles) {
215
+ if (doc.path.endsWith('index.md') || doc.path === 'docs/index.md') {
216
+ affectedDocs.add(doc.path);
217
+ }
218
+ }
219
+ }
220
+ return Array.from(affectedDocs);
221
+ }
222
+ //# sourceMappingURL=UpdateProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateProcessor.js","sourceRoot":"","sources":["../../src/jobs/UpdateProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { DatabaseService } from './DatabaseService';
2
+ export interface AIContext {
3
+ db: DatabaseService;
4
+ projectId?: number;
5
+ versionId?: number;
6
+ activityType?: 'analyze' | 'generate' | 'plan' | 'embed' | 'action' | 'other';
7
+ }
8
+ export declare class AIService {
9
+ private genAI;
10
+ private apiKey;
11
+ private readonly THINKING_MODEL;
12
+ private readonly FAST_MODEL;
13
+ private readonly EMBEDDING_MODEL;
14
+ constructor(apiKey: string);
15
+ /**
16
+ * Generates a vector embedding for the given text.
17
+ * Returns a 768-element Float32Array (or number array).
18
+ */
19
+ generateEmbedding(text: string): Promise<number[]>;
20
+ /**
21
+ * Helper to generate content with retry logic for rate limiting.
22
+ */
23
+ private generateWithRetry;
24
+ /**
25
+ * Generates content with thinking and returns both the content and thought summaries.
26
+ * Uses HIGH thinking level with includeThoughts for capturing reasoning.
27
+ */
28
+ generateWithThoughts(prompt: string, context?: AIContext, retries?: number, delay?: number): Promise<{
29
+ content: string;
30
+ thoughts: string[];
31
+ hasExtendedReasoning: boolean;
32
+ }>;
33
+ /**
34
+ * Generates a concise summary of the provided text.
35
+ */
36
+ generateSummary(text: string): Promise<string>;
37
+ analyzeProjectStructure(files: string[]): Promise<string>;
38
+ generateReadme(analysis: string, files: string[]): Promise<string>;
39
+ generateChronicleInit(analysis: string): Promise<string>;
40
+ /**
41
+ * Generates a single chronicle entry to append (not full file).
42
+ */
43
+ generateChronicleEntry(action: string, details: string): Promise<string>;
44
+ /**
45
+ * Generates ARCHITECTURE.md content.
46
+ */
47
+ generateArchitectureDoc(analysis: string, files: string[]): Promise<string>;
48
+ /**
49
+ * Generates MODULES.md content.
50
+ */
51
+ generateModulesDoc(analysis: string, files: string[]): Promise<string>;
52
+ /**
53
+ * Detects project type to determine which docs to generate.
54
+ */
55
+ detectProjectType(files: string[]): Promise<{
56
+ hasApi: boolean;
57
+ hasCli: boolean;
58
+ isMonorepo: boolean;
59
+ }>;
60
+ /**
61
+ * Creates a documentation coverage plan - Stage 1 of multi-stage documentation.
62
+ * Returns a structured plan for what docs to generate and in what folder structure.
63
+ */
64
+ planDocumentation(analysis: string, files: string[], projectType: {
65
+ hasApi: boolean;
66
+ hasCli: boolean;
67
+ isMonorepo: boolean;
68
+ }): Promise<{
69
+ folders: {
70
+ path: string;
71
+ purpose: string;
72
+ }[];
73
+ files: {
74
+ path: string;
75
+ title: string;
76
+ description: string;
77
+ }[];
78
+ stages: {
79
+ stage: number;
80
+ focus: string;
81
+ files: string[];
82
+ }[];
83
+ }>;
84
+ /**
85
+ * Generates a single documentation file based on the plan.
86
+ * Used in stages 2-4 of multi-stage documentation.
87
+ */
88
+ generateDocFile(filePath: string, title: string, description: string, analysis: string, files: string[], includeMermaid?: boolean): Promise<string>;
89
+ }
90
+ //# sourceMappingURL=AIService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AIService.d.ts","sourceRoot":"","sources":["../../src/services/AIService.ts"],"names":[],"mappings":"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"}