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,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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"AAMA,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,iBA8FzC"}
|