clawck 0.4.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -11
- package/dist/cli/index.js +29 -44
- package/dist/cli/index.js.map +1 -1
- package/dist/core/atp.d.ts +1 -1
- package/dist/core/atp.d.ts.map +1 -1
- package/dist/core/atp.js +1 -1
- package/dist/core/atp.js.map +1 -1
- package/dist/core/clawck.d.ts.map +1 -1
- package/dist/core/clawck.js +40 -1
- package/dist/core/clawck.js.map +1 -1
- package/dist/core/config.d.ts +10 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +58 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/database.d.ts +13 -0
- package/dist/core/database.d.ts.map +1 -1
- package/dist/core/database.js +150 -65
- package/dist/core/database.js.map +1 -1
- package/dist/core/errors.d.ts +19 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +40 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/logger.d.ts +14 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +39 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/pricing.d.ts +28 -0
- package/dist/core/pricing.d.ts.map +1 -0
- package/dist/core/pricing.js +48 -0
- package/dist/core/pricing.js.map +1 -0
- package/dist/core/runtime.d.ts +10 -0
- package/dist/core/runtime.d.ts.map +1 -1
- package/dist/core/runtime.js +34 -0
- package/dist/core/runtime.js.map +1 -1
- package/dist/core/sync.d.ts.map +1 -1
- package/dist/core/sync.js +3 -0
- package/dist/core/sync.js.map +1 -1
- package/dist/core/types.d.ts +14 -3
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/webhooks.d.ts.map +1 -1
- package/dist/core/webhooks.js +5 -2
- package/dist/core/webhooks.js.map +1 -1
- package/dist/dashboard/index.js +3 -3
- package/dist/hooks/adapters.d.ts.map +1 -1
- package/dist/hooks/adapters.js +27 -8
- package/dist/hooks/adapters.js.map +1 -1
- package/dist/hooks/handler.d.ts.map +1 -1
- package/dist/hooks/handler.js +17 -5
- package/dist/hooks/handler.js.map +1 -1
- package/dist/hooks/types.d.ts +1 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/reports/html.d.ts +2 -2
- package/dist/reports/html.d.ts.map +1 -1
- package/dist/reports/html.js +238 -84
- package/dist/reports/html.js.map +1 -1
- package/dist/reports/pdf.d.ts.map +1 -1
- package/dist/reports/pdf.js +5 -4
- package/dist/reports/pdf.js.map +1 -1
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +57 -18
- package/dist/server/api.js.map +1 -1
- package/dist/server/mcp.d.ts.map +1 -1
- package/dist/server/mcp.js +3 -3
- package/dist/server/mcp.js.map +1 -1
- package/docs/api-reference.md +380 -0
- package/docs/deployment.md +140 -0
- package/docs/deprecation-policy.md +32 -0
- package/docs/migration-guide.md +78 -0
- package/docs/security.md +70 -0
- package/docs/skills/clawck-setup.md +19 -0
- package/docs/skills/clawck-usage.md +6 -0
- package/docs/versioning.md +49 -0
- package/package.json +7 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clawck.d.ts","sourceRoot":"","sources":["../../src/core/clawck.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"clawck.d.ts","sourceRoot":"","sources":["../../src/core/clawck.ts"],"names":[],"mappings":"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"}
|
package/dist/core/clawck.js
CHANGED
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.Clawck = void 0;
|
|
8
8
|
const uuid_1 = require("uuid");
|
|
9
9
|
const types_1 = require("./types");
|
|
10
|
+
const pricing_1 = require("./pricing");
|
|
10
11
|
const database_1 = require("./database");
|
|
11
12
|
const webhooks_1 = require("./webhooks");
|
|
12
13
|
const patterns_1 = require("./patterns");
|
|
@@ -84,6 +85,19 @@ class Clawck {
|
|
|
84
85
|
cost_usd: input.cost_usd,
|
|
85
86
|
tool_calls: input.tool_calls,
|
|
86
87
|
};
|
|
88
|
+
// Cost estimation fallback: if no cost_usd provided but tokens exist, compute from pricing
|
|
89
|
+
if (updates.cost_usd == null || updates.cost_usd === 0) {
|
|
90
|
+
const existing = this._db.getById(input.id);
|
|
91
|
+
const tokIn = input.tokens_in ?? existing?.tokens_in ?? 0;
|
|
92
|
+
const tokOut = input.tokens_out ?? existing?.tokens_out ?? 0;
|
|
93
|
+
const model = existing?.model || 'unknown';
|
|
94
|
+
if (tokIn > 0 || tokOut > 0) {
|
|
95
|
+
const estimated = (0, pricing_1.estimateCost)(model, tokIn, tokOut, true);
|
|
96
|
+
if (estimated != null) {
|
|
97
|
+
updates.cost_usd = Math.round(estimated * 10000) / 10000;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
87
101
|
// Calculate wall clock and agent runtime
|
|
88
102
|
const existing = this._db.getById(input.id);
|
|
89
103
|
if (existing) {
|
|
@@ -98,6 +112,21 @@ class Clawck {
|
|
|
98
112
|
else {
|
|
99
113
|
// No token data available (e.g. hook-based tracking) — wall clock is the best proxy
|
|
100
114
|
updates.agent_runtime_ms = updates.wall_clock_ms;
|
|
115
|
+
// Reverse-estimate tokens from wall clock time
|
|
116
|
+
if (updates.wall_clock_ms && updates.wall_clock_ms > 0) {
|
|
117
|
+
const runtimeConfig = this.getRuntimeConfig();
|
|
118
|
+
const speed = (0, runtime_1.findModelSpeed)(model, runtimeConfig);
|
|
119
|
+
// 0.5 factor: not all wall clock time is active generation
|
|
120
|
+
const estimatedOut = Math.round((updates.wall_clock_ms / 1000) * speed * 0.5);
|
|
121
|
+
if (estimatedOut > 0) {
|
|
122
|
+
updates.tokens_out = estimatedOut;
|
|
123
|
+
updates.tokens_in = Math.round(estimatedOut * 2); // rough input:output ratio
|
|
124
|
+
const estimated = (0, pricing_1.estimateCost)(model, updates.tokens_in, estimatedOut, true);
|
|
125
|
+
if (estimated != null) {
|
|
126
|
+
updates.cost_usd = Math.round(estimated * 10000) / 10000;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
101
130
|
}
|
|
102
131
|
}
|
|
103
132
|
const entry = this._db.update(input.id, updates);
|
|
@@ -120,6 +149,16 @@ class Clawck {
|
|
|
120
149
|
const runtimeConfig = this.getRuntimeConfig();
|
|
121
150
|
agentRuntimeMs = (0, runtime_1.estimateAgentRuntime)({ tokens_out: tokensOut, model, tool_calls: toolCalls }, runtimeConfig);
|
|
122
151
|
}
|
|
152
|
+
let costUsd = input.cost_usd || 0;
|
|
153
|
+
if (costUsd === 0) {
|
|
154
|
+
const tokIn = input.tokens_in || 0;
|
|
155
|
+
if (tokIn > 0 || tokensOut > 0) {
|
|
156
|
+
const estimated = (0, pricing_1.estimateCost)(model, tokIn, tokensOut, true);
|
|
157
|
+
if (estimated != null) {
|
|
158
|
+
costUsd = Math.round(estimated * 10000) / 10000;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
123
162
|
const entry = {
|
|
124
163
|
id: (0, uuid_1.v4)(),
|
|
125
164
|
agent: input.agent || pat?.agent || this.config.default_agent || 'unknown-agent',
|
|
@@ -133,7 +172,7 @@ class Clawck {
|
|
|
133
172
|
status: 'completed',
|
|
134
173
|
tokens_in: input.tokens_in || 0,
|
|
135
174
|
tokens_out: tokensOut,
|
|
136
|
-
cost_usd:
|
|
175
|
+
cost_usd: costUsd,
|
|
137
176
|
tool_calls: toolCalls,
|
|
138
177
|
summary: input.summary || '',
|
|
139
178
|
tags: input.tags || pat?.tags || [],
|
package/dist/core/clawck.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clawck.js","sourceRoot":"","sources":["../../src/core/clawck.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clawck.js","sourceRoot":"","sources":["../../src/core/clawck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ⏱️🦀 Clawck — Config Validation
|
|
3
|
+
* Shared validation for CLI and server config loading.
|
|
4
|
+
*/
|
|
5
|
+
export interface ConfigValidationResult {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
errors: string[];
|
|
8
|
+
}
|
|
9
|
+
export declare function validateConfig(config: Record<string, any>): ConfigValidationResult;
|
|
10
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,sBAAsB,CAsDlF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ⏱️🦀 Clawck — Config Validation
|
|
4
|
+
* Shared validation for CLI and server config loading.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.validateConfig = validateConfig;
|
|
8
|
+
function validateConfig(config) {
|
|
9
|
+
const errors = [];
|
|
10
|
+
if (config.port !== undefined) {
|
|
11
|
+
if (typeof config.port !== 'number' || config.port < 1 || config.port > 65535) {
|
|
12
|
+
errors.push(`"port" must be a number between 1 and 65535 (got ${JSON.stringify(config.port)})`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (config.human_equivalents !== undefined) {
|
|
16
|
+
if (typeof config.human_equivalents !== 'object' || config.human_equivalents === null) {
|
|
17
|
+
errors.push('"human_equivalents" must be an object');
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
for (const [key, val] of Object.entries(config.human_equivalents)) {
|
|
21
|
+
const v = val;
|
|
22
|
+
if (typeof v.multiplier !== 'number' || typeof v.human_rate_usd !== 'number') {
|
|
23
|
+
errors.push(`"human_equivalents.${key}" must have numeric "multiplier" and "human_rate_usd"`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (config.remote_sources !== undefined && !Array.isArray(config.remote_sources)) {
|
|
29
|
+
errors.push('"remote_sources" must be an array');
|
|
30
|
+
}
|
|
31
|
+
if (config.webhooks !== undefined) {
|
|
32
|
+
if (!Array.isArray(config.webhooks)) {
|
|
33
|
+
errors.push('"webhooks" must be an array');
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
for (const [i, wh] of config.webhooks.entries()) {
|
|
37
|
+
if (!wh.url || typeof wh.url !== 'string') {
|
|
38
|
+
errors.push(`"webhooks[${i}].url" must be a string`);
|
|
39
|
+
}
|
|
40
|
+
if (!Array.isArray(wh.events)) {
|
|
41
|
+
errors.push(`"webhooks[${i}].events" must be an array`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (config.sync_interval !== undefined) {
|
|
47
|
+
if (typeof config.sync_interval !== 'number' || config.sync_interval < 1) {
|
|
48
|
+
errors.push('"sync_interval" must be a positive number');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (config.idle_alert_hours !== undefined) {
|
|
52
|
+
if (typeof config.idle_alert_hours !== 'number' || config.idle_alert_hours < 0) {
|
|
53
|
+
errors.push('"idle_alert_hours" must be a non-negative number');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { valid: errors.length === 0, errors };
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/database.d.ts
CHANGED
|
@@ -8,7 +8,20 @@ export declare class ClawckDB {
|
|
|
8
8
|
private config;
|
|
9
9
|
private dbPath;
|
|
10
10
|
constructor(config: ClawckConfig);
|
|
11
|
+
/** Current schema version — bump when adding a new migration. */
|
|
12
|
+
static readonly SCHEMA_VERSION = 5;
|
|
13
|
+
private static readonly MIGRATIONS;
|
|
11
14
|
private migrate;
|
|
15
|
+
private getCurrentVersion;
|
|
16
|
+
private tableExists;
|
|
17
|
+
private columnExists;
|
|
18
|
+
/**
|
|
19
|
+
* For databases created before the versioned migration system existed,
|
|
20
|
+
* probe the schema to determine which migrations have already been applied.
|
|
21
|
+
*/
|
|
22
|
+
private detectLegacyVersion;
|
|
23
|
+
/** Expose the current schema version for diagnostics. */
|
|
24
|
+
getSchemaVersion(): number;
|
|
12
25
|
ensureReady(): Promise<void>;
|
|
13
26
|
insert(entry: ClawckEntry): ClawckEntry;
|
|
14
27
|
update(id: string, updates: Partial<ClawckEntry>): ClawckEntry | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/core/database.ts"],"names":[],"mappings":"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"}
|
package/dist/core/database.js
CHANGED
|
@@ -11,6 +11,7 @@ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
|
11
11
|
const path_1 = __importDefault(require("path"));
|
|
12
12
|
const fs_1 = __importDefault(require("fs"));
|
|
13
13
|
const types_1 = require("./types");
|
|
14
|
+
const runtime_1 = require("./runtime");
|
|
14
15
|
class ClawckDB {
|
|
15
16
|
db;
|
|
16
17
|
config;
|
|
@@ -24,71 +25,148 @@ class ClawckDB {
|
|
|
24
25
|
this.db = new better_sqlite3_1.default(this.dbPath);
|
|
25
26
|
this.migrate();
|
|
26
27
|
}
|
|
28
|
+
// ─── Versioned Migration System ────────────────────────
|
|
29
|
+
//
|
|
30
|
+
// Each migration is a function that receives the db handle and runs DDL.
|
|
31
|
+
// Migrations are numbered starting at 1. The schema_version table tracks
|
|
32
|
+
// which migrations have been applied. On a fresh DB we detect the absence
|
|
33
|
+
// of any tables and run all migrations. On an existing pre-versioned DB
|
|
34
|
+
// (has entries table but no schema_version table) we detect already-applied
|
|
35
|
+
// columns and start from the right version.
|
|
36
|
+
/** Current schema version — bump when adding a new migration. */
|
|
37
|
+
static SCHEMA_VERSION = 5;
|
|
38
|
+
static MIGRATIONS = [
|
|
39
|
+
// ── Migration 1: initial schema (entries + sync_state + indexes) ──
|
|
40
|
+
(db) => {
|
|
41
|
+
db.exec(`CREATE TABLE IF NOT EXISTS entries (
|
|
42
|
+
id TEXT PRIMARY KEY, agent TEXT NOT NULL, model TEXT NOT NULL DEFAULT 'unknown',
|
|
43
|
+
client TEXT NOT NULL DEFAULT 'default', project TEXT NOT NULL DEFAULT 'default',
|
|
44
|
+
task TEXT NOT NULL, category TEXT NOT NULL DEFAULT 'other', start TEXT NOT NULL,
|
|
45
|
+
end_ TEXT, status TEXT NOT NULL DEFAULT 'running', tokens_in INTEGER NOT NULL DEFAULT 0,
|
|
46
|
+
tokens_out INTEGER NOT NULL DEFAULT 0, cost_usd REAL NOT NULL DEFAULT 0,
|
|
47
|
+
tool_calls INTEGER NOT NULL DEFAULT 0, summary TEXT NOT NULL DEFAULT '',
|
|
48
|
+
tags TEXT NOT NULL DEFAULT '[]', source TEXT NOT NULL DEFAULT 'manual',
|
|
49
|
+
spec_version TEXT NOT NULL DEFAULT '0.1.0',
|
|
50
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
51
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
52
|
+
)`);
|
|
53
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entries_agent ON entries(agent)`);
|
|
54
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entries_client ON entries(client)`);
|
|
55
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entries_project ON entries(project)`);
|
|
56
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entries_status ON entries(status)`);
|
|
57
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entries_start ON entries(start)`);
|
|
58
|
+
db.exec(`CREATE TABLE IF NOT EXISTS sync_state (
|
|
59
|
+
source_name TEXT PRIMARY KEY,
|
|
60
|
+
last_sync_at TEXT NOT NULL,
|
|
61
|
+
last_status TEXT NOT NULL DEFAULT 'success',
|
|
62
|
+
last_error TEXT,
|
|
63
|
+
entries_synced INTEGER NOT NULL DEFAULT 0
|
|
64
|
+
)`);
|
|
65
|
+
},
|
|
66
|
+
// ── Migration 2: add approved column ──
|
|
67
|
+
(db) => {
|
|
68
|
+
db.exec(`ALTER TABLE entries ADD COLUMN approved INTEGER NOT NULL DEFAULT 0`);
|
|
69
|
+
},
|
|
70
|
+
// ── Migration 3: add agent_runtime_ms and wall_clock_ms ──
|
|
71
|
+
(db) => {
|
|
72
|
+
db.exec(`ALTER TABLE entries ADD COLUMN agent_runtime_ms INTEGER`);
|
|
73
|
+
db.exec(`ALTER TABLE entries ADD COLUMN wall_clock_ms INTEGER`);
|
|
74
|
+
},
|
|
75
|
+
// ── Migration 4: personal baselines table ──
|
|
76
|
+
(db) => {
|
|
77
|
+
db.exec(`CREATE TABLE IF NOT EXISTS personal_baselines (
|
|
78
|
+
id TEXT PRIMARY KEY,
|
|
79
|
+
category TEXT NOT NULL,
|
|
80
|
+
task_type TEXT NOT NULL,
|
|
81
|
+
description TEXT NOT NULL DEFAULT '',
|
|
82
|
+
my_minutes REAL NOT NULL,
|
|
83
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
84
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
85
|
+
)`);
|
|
86
|
+
},
|
|
87
|
+
// ── Migration 5: reports table ──
|
|
88
|
+
(db) => {
|
|
89
|
+
db.exec(`CREATE TABLE IF NOT EXISTS reports (
|
|
90
|
+
id TEXT PRIMARY KEY,
|
|
91
|
+
name TEXT NOT NULL DEFAULT '',
|
|
92
|
+
period TEXT NOT NULL,
|
|
93
|
+
period_start TEXT NOT NULL,
|
|
94
|
+
period_end TEXT NOT NULL,
|
|
95
|
+
style TEXT NOT NULL DEFAULT 'full',
|
|
96
|
+
format TEXT NOT NULL DEFAULT 'terminal',
|
|
97
|
+
content BLOB,
|
|
98
|
+
metadata TEXT NOT NULL DEFAULT '{}',
|
|
99
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
100
|
+
)`);
|
|
101
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_reports_created ON reports(created_at)`);
|
|
102
|
+
},
|
|
103
|
+
];
|
|
27
104
|
migrate() {
|
|
28
105
|
this.db.pragma('journal_mode = WAL');
|
|
29
106
|
this.db.pragma('synchronous = NORMAL');
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
task TEXT NOT NULL, category TEXT NOT NULL DEFAULT 'other', start TEXT NOT NULL,
|
|
34
|
-
end_ TEXT, status TEXT NOT NULL DEFAULT 'running', tokens_in INTEGER NOT NULL DEFAULT 0,
|
|
35
|
-
tokens_out INTEGER NOT NULL DEFAULT 0, cost_usd REAL NOT NULL DEFAULT 0,
|
|
36
|
-
tool_calls INTEGER NOT NULL DEFAULT 0, summary TEXT NOT NULL DEFAULT '',
|
|
37
|
-
tags TEXT NOT NULL DEFAULT '[]', source TEXT NOT NULL DEFAULT 'manual',
|
|
38
|
-
spec_version TEXT NOT NULL DEFAULT '0.1.0',
|
|
39
|
-
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
40
|
-
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
107
|
+
// Bootstrap the schema_version table
|
|
108
|
+
this.db.exec(`CREATE TABLE IF NOT EXISTS schema_version (
|
|
109
|
+
version INTEGER NOT NULL
|
|
41
110
|
)`);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
this.
|
|
111
|
+
let currentVersion = this.getCurrentVersion();
|
|
112
|
+
// Detect pre-versioned databases: entries table exists but no schema_version row.
|
|
113
|
+
// Probe which columns/tables already exist to infer the correct starting version.
|
|
114
|
+
if (currentVersion === 0 && this.tableExists('entries')) {
|
|
115
|
+
currentVersion = this.detectLegacyVersion();
|
|
116
|
+
this.db.prepare('INSERT INTO schema_version (version) VALUES (?)').run(currentVersion);
|
|
117
|
+
}
|
|
118
|
+
else if (currentVersion === 0) {
|
|
119
|
+
// Fresh database — seed version tracker at 0
|
|
120
|
+
this.db.prepare('INSERT INTO schema_version (version) VALUES (0)').run();
|
|
121
|
+
}
|
|
122
|
+
// Run pending migrations inside a transaction
|
|
123
|
+
if (currentVersion < ClawckDB.SCHEMA_VERSION) {
|
|
124
|
+
const runMigrations = this.db.transaction(() => {
|
|
125
|
+
for (let v = currentVersion + 1; v <= ClawckDB.SCHEMA_VERSION; v++) {
|
|
126
|
+
const migration = ClawckDB.MIGRATIONS[v - 1];
|
|
127
|
+
if (!migration) {
|
|
128
|
+
throw new Error(`Missing migration for version ${v}`);
|
|
129
|
+
}
|
|
130
|
+
migration(this.db);
|
|
131
|
+
}
|
|
132
|
+
this.db.prepare('UPDATE schema_version SET version = ?').run(ClawckDB.SCHEMA_VERSION);
|
|
133
|
+
});
|
|
134
|
+
runMigrations();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
getCurrentVersion() {
|
|
138
|
+
// If schema_version table was just created, it will be empty
|
|
139
|
+
const row = this.db.prepare('SELECT version FROM schema_version LIMIT 1').get();
|
|
140
|
+
return row?.version ?? 0;
|
|
141
|
+
}
|
|
142
|
+
tableExists(name) {
|
|
143
|
+
const row = this.db.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name=?").get(name);
|
|
144
|
+
return !!row;
|
|
145
|
+
}
|
|
146
|
+
columnExists(table, column) {
|
|
147
|
+
const cols = this.db.pragma(`table_info(${table})`);
|
|
148
|
+
return cols.some(c => c.name === column);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* For databases created before the versioned migration system existed,
|
|
152
|
+
* probe the schema to determine which migrations have already been applied.
|
|
153
|
+
*/
|
|
154
|
+
detectLegacyVersion() {
|
|
155
|
+
// Walk backwards from the latest migration to find the highest already-applied one
|
|
156
|
+
if (this.tableExists('reports'))
|
|
157
|
+
return 5;
|
|
158
|
+
if (this.tableExists('personal_baselines'))
|
|
159
|
+
return 4;
|
|
160
|
+
if (this.columnExists('entries', 'agent_runtime_ms'))
|
|
161
|
+
return 3;
|
|
162
|
+
if (this.columnExists('entries', 'approved'))
|
|
163
|
+
return 2;
|
|
164
|
+
// entries table exists but none of the later columns/tables → version 1
|
|
165
|
+
return 1;
|
|
166
|
+
}
|
|
167
|
+
/** Expose the current schema version for diagnostics. */
|
|
168
|
+
getSchemaVersion() {
|
|
169
|
+
return this.getCurrentVersion();
|
|
92
170
|
}
|
|
93
171
|
async ensureReady() { }
|
|
94
172
|
insert(entry) {
|
|
@@ -233,18 +311,24 @@ class ClawckDB {
|
|
|
233
311
|
const equivs = this.config.human_equivalents || types_1.DEFAULT_HUMAN_EQUIVALENTS;
|
|
234
312
|
const rows = entries.map(e => {
|
|
235
313
|
const wallClockMs = e.wall_clock_ms ?? (e.end ? (new Date(e.end).getTime() - new Date(e.start).getTime()) : (Date.now() - new Date(e.start).getTime()));
|
|
236
|
-
const
|
|
237
|
-
|
|
314
|
+
const agentRuntimeMs = e.agent_runtime_ms ?? null;
|
|
315
|
+
// Primary duration: agent_runtime_ms when available, fall back to wall_clock_ms, then computed
|
|
316
|
+
const primaryMs = agentRuntimeMs ?? wallClockMs;
|
|
317
|
+
const durationMin = primaryMs / 60000;
|
|
318
|
+
const agentTotalRuntimeMin = agentRuntimeMs != null ? agentRuntimeMs / 60000 : undefined;
|
|
238
319
|
const equiv = equivs[e.category] || equivs.other;
|
|
239
320
|
const agentHours = durationMin / 60;
|
|
240
321
|
const humanEquivHours = agentHours * equiv.multiplier;
|
|
241
|
-
|
|
322
|
+
const timeSavedHours = Math.round((humanEquivHours - agentHours) * 100) / 100;
|
|
323
|
+
return { date: e.start.split('T')[0], start_time: e.start, end_time: e.end, agent: e.agent, client: e.client, project: e.project, task: e.task, category: e.category, duration_minutes: Math.round(durationMin * 100) / 100, tokens_in: e.tokens_in, tokens_out: e.tokens_out, tokens_total: e.tokens_in + e.tokens_out, cost_usd: e.cost_usd, human_equiv_hours: Math.round(humanEquivHours * 100) / 100, human_equiv_cost_saved: Math.round(humanEquivHours * equiv.human_rate_usd * 100) / 100, time_saved_hours: timeSavedHours, status: e.status, approved: e.approved ?? false, agent_total_runtime_minutes: agentTotalRuntimeMin != null ? Math.round(agentTotalRuntimeMin * 100) / 100 : undefined, wall_clock_minutes: Math.round(wallClockMs / 60000 * 100) / 100 };
|
|
242
324
|
});
|
|
243
325
|
const totalAgentHours = rows.reduce((s, r) => s + r.duration_minutes / 60, 0);
|
|
244
326
|
const totalHumanEquiv = rows.reduce((s, r) => s + r.human_equiv_hours, 0);
|
|
245
327
|
const totalCost = rows.reduce((s, r) => s + r.cost_usd, 0);
|
|
246
328
|
const totalSavings = rows.reduce((s, r) => s + r.human_equiv_cost_saved, 0);
|
|
247
329
|
const totalTokens = rows.reduce((s, r) => s + r.tokens_total, 0);
|
|
330
|
+
const totalTokensIn = entries.reduce((s, e) => s + e.tokens_in, 0);
|
|
331
|
+
const totalTokensOut = entries.reduce((s, e) => s + e.tokens_out, 0);
|
|
248
332
|
const clientMap = new Map();
|
|
249
333
|
for (const r of rows) {
|
|
250
334
|
const c = clientMap.get(r.client) || { client: r.client, agent_hours: 0, human_equiv_hours: 0, cost_usd: 0, savings_usd: 0, entries: 0 };
|
|
@@ -290,7 +374,8 @@ class ClawckDB {
|
|
|
290
374
|
catMap.set(r.category, c);
|
|
291
375
|
}
|
|
292
376
|
const round2 = (n) => Math.round(n * 100) / 100;
|
|
293
|
-
|
|
377
|
+
const mergedMs = (0, runtime_1.computeMergedRuntimeMs)(entries.map(e => ({ start: e.start, end: e.end })));
|
|
378
|
+
return { period_start: from, period_end: to, total_entries: entries.length, total_agent_hours: round2(totalAgentHours), total_human_equiv_hours: round2(totalHumanEquiv), total_cost_usd: round2(totalCost), total_savings_usd: round2(totalSavings), total_tokens: totalTokens, total_tokens_in: totalTokensIn, total_tokens_out: totalTokensOut, total_time_saved_hours: round2(totalHumanEquiv - mergedMs / 3600000), total_agent_merged_runtime_hours: round2(mergedMs / 3600000),
|
|
294
379
|
by_client: [...clientMap.values()].map(c => ({ ...c, agent_hours: round2(c.agent_hours), human_equiv_hours: round2(c.human_equiv_hours), cost_usd: round2(c.cost_usd), savings_usd: round2(c.savings_usd) })),
|
|
295
380
|
by_agent: [...agentMap.values()].map(a => ({ ...a, agent_hours: round2(a.agent_hours), human_equiv_hours: round2(a.human_equiv_hours), cost_usd: round2(a.cost_usd), success_rate: a.entries > 0 ? Math.round((a.completed / a.entries) * 100) : 0 })),
|
|
296
381
|
by_project: [...projMap.values()].map(p => ({ ...p, agent_hours: round2(p.agent_hours), human_equiv_hours: round2(p.human_equiv_hours), cost_usd: round2(p.cost_usd) })),
|