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,164 @@
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.diff = diff;
7
+ exports.versions = versions;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const paths_1 = require("../utils/paths");
12
+ function getDb() {
13
+ const dbPath = (0, paths_1.findDaemonDbPath)();
14
+ if (!dbPath) {
15
+ return null;
16
+ }
17
+ return new better_sqlite3_1.default(dbPath);
18
+ }
19
+ /**
20
+ * Trigger an incremental documentation update.
21
+ * This analyzes what changed since the last doc version and updates only affected docs.
22
+ * Similar to what happens when a commit is made or trigger conditions are met.
23
+ */
24
+ async function diff(projectPath) {
25
+ const targetDir = projectPath ? path_1.default.resolve(process.cwd(), projectPath) : process.cwd();
26
+ const db = getDb();
27
+ if (!db) {
28
+ console.error(chalk_1.default.red('Daemon database not found. Is the daemon running?'));
29
+ return;
30
+ }
31
+ try {
32
+ // Get project
33
+ const project = db.prepare('SELECT id, path FROM projects WHERE path = ?').get(targetDir);
34
+ if (!project) {
35
+ console.log(chalk_1.default.yellow(`Project not found: ${targetDir}`));
36
+ console.log(chalk_1.default.yellow('Run "chronicle add" first.'));
37
+ return;
38
+ }
39
+ // Check if docs exist (need init first)
40
+ const existingVersions = db.prepare(`
41
+ SELECT COUNT(*) as count FROM doc_versions WHERE project_id = ?
42
+ `).get(project.id);
43
+ if (existingVersions.count === 0) {
44
+ console.log(chalk_1.default.yellow('No documentation found. Run "chronicle init" first.'));
45
+ return;
46
+ }
47
+ // Enqueue incremental update job
48
+ console.log(chalk_1.default.blue('Triggering incremental documentation update...'));
49
+ const stmt = db.prepare(`
50
+ INSERT INTO jobs (name, data, status, created_at)
51
+ VALUES (?, ?, 'pending', unixepoch())
52
+ `);
53
+ stmt.run('doc:update', JSON.stringify({
54
+ projectPath: project.path,
55
+ triggerType: 'manual',
56
+ incremental: true
57
+ }));
58
+ console.log(chalk_1.default.green('Update job queued. The daemon will process changes.'));
59
+ console.log(chalk_1.default.gray(' Use "chronicle versions" to see doc version history.'));
60
+ }
61
+ finally {
62
+ db.close();
63
+ }
64
+ }
65
+ /**
66
+ * View documentation version history and differences.
67
+ */
68
+ async function versions(projectPath) {
69
+ const targetDir = projectPath ? path_1.default.resolve(process.cwd(), projectPath) : process.cwd();
70
+ const db = getDb();
71
+ if (!db) {
72
+ console.error(chalk_1.default.red('Daemon database not found. Is the daemon running?'));
73
+ return;
74
+ }
75
+ try {
76
+ // Get project
77
+ const project = db.prepare('SELECT id, path FROM projects WHERE path = ?').get(targetDir);
78
+ if (!project) {
79
+ console.log(chalk_1.default.yellow(`Project not found: ${targetDir}`));
80
+ console.log(chalk_1.default.yellow('Run "chronicle add" first.'));
81
+ return;
82
+ }
83
+ // Get all versions
84
+ const versionList = db.prepare(`
85
+ SELECT id, version_number, trigger_type, status, created_at
86
+ FROM doc_versions
87
+ WHERE project_id = ?
88
+ ORDER BY version_number DESC
89
+ LIMIT 10
90
+ `).all(project.id);
91
+ if (versionList.length === 0) {
92
+ console.log(chalk_1.default.yellow('No documentation versions found.'));
93
+ console.log(chalk_1.default.yellow('Run "chronicle init" to generate initial docs.'));
94
+ return;
95
+ }
96
+ console.log(chalk_1.default.bold('\nDocumentation Versions\n'));
97
+ for (const version of versionList) {
98
+ const date = new Date(version.created_at * 1000).toLocaleString();
99
+ const statusColor = version.status === 'active' ? chalk_1.default.green :
100
+ version.status === 'pending_review' ? chalk_1.default.yellow : chalk_1.default.gray;
101
+ console.log(` ${statusColor('●')} v${version.version_number} - ${version.trigger_type} - ${date} ${statusColor(`[${version.status}]`)}`);
102
+ }
103
+ // If we have at least 2 versions, show diff summary
104
+ if (versionList.length >= 2) {
105
+ const latest = versionList[0];
106
+ const previous = versionList[1];
107
+ console.log(chalk_1.default.bold(`\nChanges: v${previous.version_number} → v${latest.version_number}\n`));
108
+ const latestFiles = db.prepare(`
109
+ SELECT path, content_hash FROM doc_files WHERE version_id = ?
110
+ `).all(latest.id);
111
+ const previousFiles = db.prepare(`
112
+ SELECT path, content_hash FROM doc_files WHERE version_id = ?
113
+ `).all(previous.id);
114
+ const previousMap = new Map(previousFiles.map(f => [f.path, f.content_hash]));
115
+ const latestMap = new Map(latestFiles.map(f => [f.path, f.content_hash]));
116
+ let added = 0, modified = 0, removed = 0;
117
+ for (const file of latestFiles) {
118
+ const prevHash = previousMap.get(file.path);
119
+ if (!prevHash) {
120
+ console.log(chalk_1.default.green(` + ${file.path}`));
121
+ added++;
122
+ }
123
+ else if (prevHash !== file.content_hash) {
124
+ console.log(chalk_1.default.yellow(` ~ ${file.path}`));
125
+ modified++;
126
+ }
127
+ }
128
+ for (const file of previousFiles) {
129
+ if (!latestMap.has(file.path)) {
130
+ console.log(chalk_1.default.red(` - ${file.path}`));
131
+ removed++;
132
+ }
133
+ }
134
+ if (added === 0 && modified === 0 && removed === 0) {
135
+ console.log(chalk_1.default.gray(' No file changes between versions.'));
136
+ }
137
+ else {
138
+ console.log(`\n Summary: ${chalk_1.default.green(`+${added}`)} added, ${chalk_1.default.yellow(`~${modified}`)} modified, ${chalk_1.default.red(`-${removed}`)} removed`);
139
+ }
140
+ }
141
+ // Show unverified assumptions if any
142
+ const activeVersion = versionList.find(v => v.status === 'active') || versionList[0];
143
+ const assumptions = db.prepare(`
144
+ SELECT a.claim, df.path as doc_path
145
+ FROM assumptions a
146
+ JOIN doc_files df ON a.doc_file_id = df.id
147
+ WHERE df.version_id = ? AND a.verified = 0
148
+ `).all(activeVersion.id);
149
+ if (assumptions.length > 0) {
150
+ console.log(chalk_1.default.bold.yellow(`\nWARNING: Unverified Assumptions (${assumptions.length})\n`));
151
+ for (const a of assumptions.slice(0, 10)) {
152
+ console.log(chalk_1.default.yellow(` • ${a.doc_path}: "${a.claim}"`));
153
+ }
154
+ if (assumptions.length > 10) {
155
+ console.log(chalk_1.default.gray(` ... and ${assumptions.length - 10} more`));
156
+ }
157
+ }
158
+ console.log('');
159
+ }
160
+ finally {
161
+ db.close();
162
+ }
163
+ }
164
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function init(projectPath?: string): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAMA,wBAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,iBA2C9C"}
@@ -0,0 +1,54 @@
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.init = init;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const paths_1 = require("../utils/paths");
12
+ async function init(projectPath) {
13
+ // Resolve absolute path from arg or cwd
14
+ const targetDir = projectPath ? path_1.default.resolve(process.cwd(), projectPath) : process.cwd();
15
+ // Check if path exists
16
+ if (!fs_1.default.existsSync(targetDir)) {
17
+ console.error(chalk_1.default.red(`Directory not found: ${targetDir}`));
18
+ return;
19
+ }
20
+ // Connect to Daemon DB
21
+ let dbPath;
22
+ try {
23
+ dbPath = (0, paths_1.getDaemonDbPath)();
24
+ }
25
+ catch (error) {
26
+ console.error(chalk_1.default.red(error.message));
27
+ return;
28
+ }
29
+ const db = new better_sqlite3_1.default(dbPath);
30
+ // Register project first if missing, then enqueue docs init.
31
+ // This keeps `chronicle init` usable as a one-step entrypoint.
32
+ try {
33
+ const project = db.prepare('SELECT id FROM projects WHERE path = ?').get(targetDir);
34
+ const enqueue = db.prepare(`
35
+ INSERT INTO jobs (name, data, status)
36
+ VALUES (?, ?, 'pending')
37
+ `);
38
+ if (!project) {
39
+ enqueue.run('system:project_add', JSON.stringify({ path: targetDir, action: 'add' }));
40
+ console.log(chalk_1.default.green(`Project not tracked yet. Queued project add + initialization for "${targetDir}"`));
41
+ }
42
+ else {
43
+ enqueue.run('doc:initialize', JSON.stringify({ projectPath: targetDir }));
44
+ console.log(chalk_1.default.green(`Queued documentation initialization for "${targetDir}"`));
45
+ }
46
+ }
47
+ catch (e) {
48
+ console.error(chalk_1.default.red(`Failed to queue init: ${e.message}`));
49
+ }
50
+ finally {
51
+ db.close();
52
+ }
53
+ }
54
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;AAMA,oBA2CC;AAjDD,gDAAwB;AACxB,4CAAoB;AACpB,oEAAsC;AACtC,kDAA0B;AAC1B,0CAAiD;AAE1C,KAAK,UAAU,IAAI,CAAC,WAAoB;IAC3C,wCAAwC;IACxC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzF,uBAAuB;IACvB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO;IACX,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACD,MAAM,GAAG,IAAA,uBAAe,GAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,OAAO;IACX,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,MAAM,CAAC,CAAC;IAEhC,6DAA6D;IAC7D,+DAA+D;IAC/D,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,SAAS,CAA+B,CAAC;QAElH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;;SAG1B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qEAAqE,SAAS,GAAG,CAAC,CAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4CAA4C,SAAS,GAAG,CAAC,CAAC,CAAC;QACvF,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,yBAA0B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;YAAS,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function list(): Promise<void>;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,kBAwDzB"}
@@ -0,0 +1,62 @@
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.list = list;
7
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const paths_1 = require("../utils/paths");
10
+ async function list() {
11
+ let dbPath;
12
+ try {
13
+ dbPath = (0, paths_1.getDaemonDbPath)();
14
+ }
15
+ catch (error) {
16
+ console.error(chalk_1.default.red(error.message));
17
+ return;
18
+ }
19
+ const db = new better_sqlite3_1.default(dbPath, { readonly: true });
20
+ try {
21
+ const projects = db.prepare(`
22
+ SELECT id, path, name, is_paused, created_at
23
+ FROM projects
24
+ ORDER BY created_at DESC
25
+ `).all();
26
+ if (projects.length === 0) {
27
+ console.log(chalk_1.default.yellow('No projects are currently being monitored.'));
28
+ console.log(chalk_1.default.gray(' Run "chronicle add" to start monitoring a project.'));
29
+ db.close();
30
+ return;
31
+ }
32
+ console.log(chalk_1.default.bold(`\nMonitored Projects (${projects.length}):\n`));
33
+ for (const project of projects) {
34
+ const status = project.is_paused ? chalk_1.default.yellow('[PAUSED]') : chalk_1.default.green('[ACTIVE]');
35
+ const date = new Date(project.created_at * 1000).toLocaleDateString();
36
+ console.log(` ${status} ${chalk_1.default.bold(project.name)}`);
37
+ console.log(` ${chalk_1.default.gray(project.path)}`);
38
+ console.log(` ${chalk_1.default.gray(`Added: ${date}`)}`);
39
+ console.log();
40
+ }
41
+ // Also show job queue status
42
+ const pendingJobs = db.prepare(`SELECT COUNT(*) as count FROM jobs WHERE status = 'pending'`).get();
43
+ const processingJob = db.prepare(`SELECT * FROM jobs WHERE status = 'processing'`).get();
44
+ if (pendingJobs.count > 0 || processingJob) {
45
+ console.log(chalk_1.default.bold(`\nJob Queue:\n`));
46
+ if (processingJob) {
47
+ console.log(` [PROCESSING] ${processingJob.name}`);
48
+ }
49
+ if (pendingJobs.count > 0) {
50
+ console.log(` [PENDING] ${pendingJobs.count} jobs`);
51
+ }
52
+ console.log();
53
+ }
54
+ }
55
+ catch (e) {
56
+ console.error(chalk_1.default.red(`Failed to list projects: ${e.message}`));
57
+ }
58
+ finally {
59
+ db.close();
60
+ }
61
+ }
62
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function log(options?: {
2
+ follow?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"AAkEA,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,iBA6JvD"}
@@ -0,0 +1,223 @@
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.log = log;
7
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const os_1 = __importDefault(require("os"));
11
+ const paths_1 = require("../utils/paths");
12
+ // ANSI color codes
13
+ const colors = {
14
+ reset: '\x1b[0m',
15
+ bright: '\x1b[1m',
16
+ dim: '\x1b[2m',
17
+ red: '\x1b[31m',
18
+ green: '\x1b[32m',
19
+ yellow: '\x1b[33m',
20
+ blue: '\x1b[34m',
21
+ magenta: '\x1b[35m',
22
+ cyan: '\x1b[36m',
23
+ white: '\x1b[37m',
24
+ gray: '\x1b[90m'
25
+ };
26
+ function formatTimestamp(ts) {
27
+ const date = new Date(ts);
28
+ return date.toLocaleTimeString('en-US', { hour12: false });
29
+ }
30
+ function formatEventType(type) {
31
+ const typeColors = {
32
+ 'doc:': colors.blue,
33
+ 'watcher:': colors.cyan,
34
+ 'queue:': colors.magenta,
35
+ 'trigger:': colors.yellow,
36
+ 'system:': colors.green,
37
+ 'error': colors.red
38
+ };
39
+ for (const [prefix, color] of Object.entries(typeColors)) {
40
+ if (type.includes(prefix) || type.includes('error')) {
41
+ return `${color}${type}${colors.reset}`;
42
+ }
43
+ }
44
+ return `${colors.white}${type}${colors.reset}`;
45
+ }
46
+ function formatAIActivity(activity) {
47
+ const statusColors = {
48
+ 'running': colors.yellow,
49
+ 'completed': colors.green,
50
+ 'error': colors.red
51
+ };
52
+ const statusColor = statusColors[activity.status] || colors.white;
53
+ const icon = activity.status === 'running' ? '[RUNNING]' : activity.status === 'completed' ? '[DONE]' : '[ERROR]';
54
+ return `${statusColor}[AI:${activity.activity_type}]${colors.reset} ${icon} ${activity.prompt_summary?.slice(0, 60) || 'No prompt'}...`;
55
+ }
56
+ async function log(options) {
57
+ // Find database using the same utility as other commands
58
+ let DB_PATH = null;
59
+ try {
60
+ DB_PATH = (0, paths_1.findDaemonDbPath)();
61
+ }
62
+ catch {
63
+ // Fallback to checking common locations
64
+ const possiblePaths = [
65
+ path_1.default.join(process.cwd(), '.chronicle', 'db.sqlite'),
66
+ path_1.default.join(os_1.default.homedir(), '.chronicle', 'db.sqlite'),
67
+ path_1.default.join(process.cwd(), 'packages', 'daemon', '.chronicle', 'db.sqlite')
68
+ ];
69
+ DB_PATH = possiblePaths.find(p => fs_1.default.existsSync(p)) || null;
70
+ }
71
+ if (!DB_PATH) {
72
+ console.error('ERROR: No Chronicle database found. Is the daemon running?');
73
+ console.log(' Make sure you run "chronicle start" first.');
74
+ process.exit(1);
75
+ }
76
+ const db = new better_sqlite3_1.default(DB_PATH, { readonly: true });
77
+ console.log(`${colors.bright}Chronicle Logs${colors.reset}`);
78
+ console.log(`${colors.dim}Database: ${DB_PATH}${colors.reset}`);
79
+ console.log(`${colors.dim}─────────────────────────────────────────────────${colors.reset}\n`);
80
+ let lastEventId = 0;
81
+ let lastActivityId = 0;
82
+ // Get initial last IDs (start from recent)
83
+ const initEvents = db.prepare(`SELECT MAX(id) as max FROM events`).get();
84
+ const initActivity = db.prepare(`SELECT MAX(id) as max FROM ai_activity`).get();
85
+ // Show last 20 entries initially
86
+ const recentEvents = db.prepare(`
87
+ SELECT id, type, payload, created_at
88
+ FROM events
89
+ ORDER BY created_at DESC
90
+ LIMIT 20
91
+ `).all();
92
+ const recentActivity = db.prepare(`
93
+ SELECT id, activity_type, prompt_summary, status, created_at
94
+ FROM ai_activity
95
+ ORDER BY created_at DESC
96
+ LIMIT 10
97
+ `).all();
98
+ // Merge and sort by timestamp
99
+ const combined = [];
100
+ for (const event of recentEvents) {
101
+ combined.push({
102
+ id: event.id,
103
+ source: 'event',
104
+ type: event.type,
105
+ message: tryParsePayload(event.payload),
106
+ timestamp: event.created_at * 1000, // Convert if in seconds
107
+ data: event.payload
108
+ });
109
+ }
110
+ for (const activity of recentActivity) {
111
+ combined.push({
112
+ id: activity.id,
113
+ source: 'ai',
114
+ type: `ai:${activity.activity_type}`,
115
+ message: `[${activity.status}] ${activity.prompt_summary?.slice(0, 80) || 'Processing...'}`,
116
+ timestamp: activity.created_at, // Already in ms
117
+ });
118
+ }
119
+ // Sort by timestamp ascending (oldest first)
120
+ combined.sort((a, b) => a.timestamp - b.timestamp);
121
+ // Print historical logs
122
+ console.log(`${colors.dim}─── Recent History (last 30 entries) ───${colors.reset}\n`);
123
+ for (const entry of combined) {
124
+ printLogEntry(entry);
125
+ }
126
+ // Update lastIds to current max
127
+ lastEventId = initEvents?.max || 0;
128
+ lastActivityId = initActivity?.max || 0;
129
+ console.log(`\n${colors.dim}─── Live Stream ───${colors.reset}\n`);
130
+ console.log(`${colors.cyan}Streaming logs... Press Ctrl+C to exit.${colors.reset}\n`);
131
+ // Poll for new entries
132
+ const pollInterval = setInterval(() => {
133
+ try {
134
+ // Check for new events
135
+ const newEvents = db.prepare(`
136
+ SELECT id, type, payload, created_at
137
+ FROM events
138
+ WHERE id > ?
139
+ ORDER BY id ASC
140
+ `).all(lastEventId);
141
+ for (const event of newEvents) {
142
+ const entry = {
143
+ id: event.id,
144
+ source: 'event',
145
+ type: event.type,
146
+ message: tryParsePayload(event.payload),
147
+ timestamp: event.created_at * 1000
148
+ };
149
+ printLogEntry(entry);
150
+ lastEventId = event.id;
151
+ }
152
+ // Check for new AI activity
153
+ const newActivity = db.prepare(`
154
+ SELECT id, activity_type, prompt_summary, status, created_at, thinking_summary
155
+ FROM ai_activity
156
+ WHERE id > ?
157
+ ORDER BY id ASC
158
+ `).all(lastActivityId);
159
+ for (const activity of newActivity) {
160
+ const entry = {
161
+ id: activity.id,
162
+ source: 'ai',
163
+ type: `ai:${activity.activity_type}`,
164
+ message: `[${activity.status}] ${activity.prompt_summary?.slice(0, 80) || 'Processing...'}`,
165
+ timestamp: activity.created_at
166
+ };
167
+ printLogEntry(entry);
168
+ lastActivityId = activity.id;
169
+ }
170
+ // Also check for updated AI activity (status changes)
171
+ const updatedActivity = db.prepare(`
172
+ SELECT id, activity_type, prompt_summary, status, duration_ms, created_at
173
+ FROM ai_activity
174
+ WHERE id <= ? AND status IN ('completed', 'error')
175
+ ORDER BY created_at DESC
176
+ LIMIT 5
177
+ `).all(lastActivityId);
178
+ // We'd need to track which ones we've already printed as completed
179
+ // For simplicity, skip the update tracking for now
180
+ }
181
+ catch (error) {
182
+ // Database might be locked, just skip this poll
183
+ }
184
+ }, 500); // Poll every 500ms
185
+ // Handle graceful shutdown
186
+ process.on('SIGINT', () => {
187
+ clearInterval(pollInterval);
188
+ db.close();
189
+ console.log(`\n${colors.dim}Log stream ended.${colors.reset}`);
190
+ process.exit(0);
191
+ });
192
+ }
193
+ function printLogEntry(entry) {
194
+ const time = formatTimestamp(entry.timestamp);
195
+ const source = entry.source === 'ai'
196
+ ? `${colors.magenta}[AI]${colors.reset}`
197
+ : `${colors.cyan}[EVT]${colors.reset}`;
198
+ const type = formatEventType(entry.type);
199
+ console.log(`${colors.gray}${time}${colors.reset} ${source} ${type} ${entry.message}`);
200
+ }
201
+ function tryParsePayload(payload) {
202
+ try {
203
+ const parsed = JSON.parse(payload);
204
+ // Extract key info from common payloads
205
+ if (parsed.projectPath) {
206
+ const shortPath = parsed.projectPath.split('/').slice(-2).join('/');
207
+ if (parsed.file)
208
+ return `${shortPath}: ${parsed.file}`;
209
+ if (parsed.error)
210
+ return `${shortPath}: ${parsed.error}`;
211
+ return shortPath;
212
+ }
213
+ if (parsed.path)
214
+ return parsed.path.split('/').slice(-2).join('/');
215
+ if (parsed.error)
216
+ return parsed.error;
217
+ return JSON.stringify(parsed).slice(0, 80);
218
+ }
219
+ catch {
220
+ return payload?.slice(0, 80) || '';
221
+ }
222
+ }
223
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function pause(projectPath?: string): void;
2
+ export declare function resume(projectPath?: string): void;
3
+ //# sourceMappingURL=pause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../src/commands/pause.ts"],"names":[],"mappings":"AAYA,wBAAgB,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,QAEzC;AAED,wBAAgB,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,QAE1C"}
@@ -0,0 +1,49 @@
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.pause = pause;
7
+ exports.resume = resume;
8
+ const path_1 = __importDefault(require("path"));
9
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const paths_1 = require("../utils/paths");
12
+ function getDb() {
13
+ const dbPath = (0, paths_1.findDaemonDbPath)();
14
+ if (!dbPath)
15
+ return null;
16
+ return new better_sqlite3_1.default(dbPath);
17
+ }
18
+ function pause(projectPath) {
19
+ toggle(true, projectPath);
20
+ }
21
+ function resume(projectPath) {
22
+ toggle(false, projectPath);
23
+ }
24
+ function toggle(paused, projectPath) {
25
+ const targetDir = projectPath ? path_1.default.resolve(process.cwd(), projectPath) : process.cwd();
26
+ const db = getDb();
27
+ if (!db) {
28
+ console.error(chalk_1.default.red('Daemon database not found. Is the daemon running?'));
29
+ return;
30
+ }
31
+ try {
32
+ const stmt = db.prepare('UPDATE projects SET is_paused = ? WHERE path = ?');
33
+ const result = stmt.run(paused ? 1 : 0, targetDir);
34
+ if (result.changes > 0) {
35
+ console.log(chalk_1.default.green(`Project ${paused ? 'paused' : 'resumed'}: ${targetDir}`));
36
+ }
37
+ else {
38
+ console.log(chalk_1.default.yellow(`ERROR: Project not found in Chronicle: ${targetDir}`));
39
+ console.log(chalk_1.default.yellow(' Run "chronicle add" first.'));
40
+ }
41
+ }
42
+ catch (e) {
43
+ console.error(chalk_1.default.red(`Failed to update project: ${e.message}`));
44
+ }
45
+ finally {
46
+ db.close();
47
+ }
48
+ }
49
+ //# sourceMappingURL=pause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause.js","sourceRoot":"","sources":["../../src/commands/pause.ts"],"names":[],"mappings":";;;;;AAYA,sBAEC;AAED,wBAEC;AAlBD,gDAAwB;AAExB,oEAAsC;AACtC,kDAA0B;AAC1B,0CAAkD;AAElD,SAAS,KAAK;IACV,MAAM,MAAM,GAAG,IAAA,wBAAgB,GAAE,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,IAAI,wBAAQ,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,KAAK,CAAC,WAAoB;IACtC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,MAAM,CAAC,WAAoB;IACvC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,MAAM,CAAC,MAAe,EAAE,WAAoB;IACjD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACzF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;QAC9E,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAEnD,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA8B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;YAAS,CAAC;QACP,EAAE,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function queue(action: string): Promise<void>;
2
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"AAMA,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,iBA8FzC"}