@timmeck/brain-core 2.36.90 → 2.36.92
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/command-center.html +8 -0
- package/dist/hypothesis/engine.d.ts +22 -0
- package/dist/hypothesis/engine.js +62 -0
- package/dist/hypothesis/engine.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/prediction/prediction-engine.d.ts +15 -2
- package/dist/prediction/prediction-engine.js +37 -5
- package/dist/prediction/prediction-engine.js.map +1 -1
- package/dist/prediction/tracker.d.ts +6 -0
- package/dist/prediction/tracker.js +63 -0
- package/dist/prediction/tracker.js.map +1 -1
- package/dist/research/knowledge-distiller.d.ts +28 -0
- package/dist/research/knowledge-distiller.js +74 -0
- package/dist/research/knowledge-distiller.js.map +1 -1
- package/dist/research/research-orchestrator.d.ts +1 -1
- package/dist/research/research-orchestrator.js +34 -1
- package/dist/research/research-orchestrator.js.map +1 -1
- package/dist/utils/uptime-tracker.d.ts +36 -0
- package/dist/utils/uptime-tracker.js +67 -0
- package/dist/utils/uptime-tracker.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cumulative Uptime Tracker — tracks real running time across restarts.
|
|
3
|
+
*
|
|
4
|
+
* Stores heartbeats in DB. On startup, loads previous cumulative uptime.
|
|
5
|
+
* Call heartbeat() periodically (e.g. every cycle) to accumulate runtime.
|
|
6
|
+
* When daemon stops and restarts, the gap is not counted.
|
|
7
|
+
*/
|
|
8
|
+
import type Database from 'better-sqlite3';
|
|
9
|
+
export interface UptimeStats {
|
|
10
|
+
/** Current session uptime in ms */
|
|
11
|
+
sessionMs: number;
|
|
12
|
+
/** Cumulative uptime across all sessions in ms */
|
|
13
|
+
cumulativeMs: number;
|
|
14
|
+
/** Number of restarts/sessions */
|
|
15
|
+
sessions: number;
|
|
16
|
+
/** Timestamp when tracking started (first ever boot) */
|
|
17
|
+
trackingSince: string;
|
|
18
|
+
/** Human-readable cumulative uptime */
|
|
19
|
+
cumulativeFormatted: string;
|
|
20
|
+
/** Human-readable session uptime */
|
|
21
|
+
sessionFormatted: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class UptimeTracker {
|
|
24
|
+
private db;
|
|
25
|
+
private sessionStart;
|
|
26
|
+
private previousCumulative;
|
|
27
|
+
private sessions;
|
|
28
|
+
private trackingSince;
|
|
29
|
+
constructor(db: Database.Database);
|
|
30
|
+
private init;
|
|
31
|
+
/** Call periodically (every cycle) to persist cumulative uptime. */
|
|
32
|
+
heartbeat(): void;
|
|
33
|
+
/** Get current uptime statistics. */
|
|
34
|
+
getStats(): UptimeStats;
|
|
35
|
+
private formatDuration;
|
|
36
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export class UptimeTracker {
|
|
2
|
+
db;
|
|
3
|
+
sessionStart = Date.now();
|
|
4
|
+
previousCumulative = 0;
|
|
5
|
+
sessions = 0;
|
|
6
|
+
trackingSince = '';
|
|
7
|
+
constructor(db) {
|
|
8
|
+
this.db = db;
|
|
9
|
+
this.init();
|
|
10
|
+
}
|
|
11
|
+
init() {
|
|
12
|
+
this.db.exec(`
|
|
13
|
+
CREATE TABLE IF NOT EXISTS brain_uptime (
|
|
14
|
+
id INTEGER PRIMARY KEY CHECK(id = 1),
|
|
15
|
+
cumulative_ms INTEGER NOT NULL DEFAULT 0,
|
|
16
|
+
sessions INTEGER NOT NULL DEFAULT 0,
|
|
17
|
+
tracking_since TEXT NOT NULL DEFAULT (datetime('now')),
|
|
18
|
+
last_heartbeat TEXT NOT NULL DEFAULT (datetime('now'))
|
|
19
|
+
);
|
|
20
|
+
INSERT OR IGNORE INTO brain_uptime (id) VALUES (1);
|
|
21
|
+
`);
|
|
22
|
+
// Load previous state
|
|
23
|
+
const row = this.db.prepare('SELECT * FROM brain_uptime WHERE id = 1').get();
|
|
24
|
+
this.previousCumulative = row.cumulative_ms;
|
|
25
|
+
this.sessions = row.sessions + 1; // new session
|
|
26
|
+
this.trackingSince = row.tracking_since;
|
|
27
|
+
// Record new session start
|
|
28
|
+
this.db.prepare(`
|
|
29
|
+
UPDATE brain_uptime SET sessions = ?, last_heartbeat = datetime('now') WHERE id = 1
|
|
30
|
+
`).run(this.sessions);
|
|
31
|
+
}
|
|
32
|
+
/** Call periodically (every cycle) to persist cumulative uptime. */
|
|
33
|
+
heartbeat() {
|
|
34
|
+
const sessionMs = Date.now() - this.sessionStart;
|
|
35
|
+
const totalMs = this.previousCumulative + sessionMs;
|
|
36
|
+
this.db.prepare(`
|
|
37
|
+
UPDATE brain_uptime SET cumulative_ms = ?, last_heartbeat = datetime('now') WHERE id = 1
|
|
38
|
+
`).run(totalMs);
|
|
39
|
+
}
|
|
40
|
+
/** Get current uptime statistics. */
|
|
41
|
+
getStats() {
|
|
42
|
+
const sessionMs = Date.now() - this.sessionStart;
|
|
43
|
+
const cumulativeMs = this.previousCumulative + sessionMs;
|
|
44
|
+
return {
|
|
45
|
+
sessionMs,
|
|
46
|
+
cumulativeMs,
|
|
47
|
+
sessions: this.sessions,
|
|
48
|
+
trackingSince: this.trackingSince,
|
|
49
|
+
cumulativeFormatted: this.formatDuration(cumulativeMs),
|
|
50
|
+
sessionFormatted: this.formatDuration(sessionMs),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
formatDuration(ms) {
|
|
54
|
+
const seconds = Math.floor(ms / 1000);
|
|
55
|
+
const minutes = Math.floor(seconds / 60);
|
|
56
|
+
const hours = Math.floor(minutes / 60);
|
|
57
|
+
const days = Math.floor(hours / 24);
|
|
58
|
+
if (days > 0)
|
|
59
|
+
return `${days}d ${hours % 24}h ${minutes % 60}m`;
|
|
60
|
+
if (hours > 0)
|
|
61
|
+
return `${hours}h ${minutes % 60}m`;
|
|
62
|
+
if (minutes > 0)
|
|
63
|
+
return `${minutes}m ${seconds % 60}s`;
|
|
64
|
+
return `${seconds}s`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=uptime-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uptime-tracker.js","sourceRoot":"","sources":["../../src/utils/uptime-tracker.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,aAAa;IAMJ;IALZ,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC1B,kBAAkB,GAAG,CAAC,CAAC;IACvB,QAAQ,GAAG,CAAC,CAAC;IACb,aAAa,GAAG,EAAE,CAAC;IAE3B,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;QACvC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;KASZ,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAEzE,CAAC;QAEF,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,cAAc;QAChD,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC;QAExC,2BAA2B;QAC3B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEf,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,oEAAoE;IACpE,SAAS;QACP,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;KAEf,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC;IAED,qCAAqC;IACrC,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QACjD,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QAEzD,OAAO;YACL,SAAS;YACT,YAAY;YACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;YACtD,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;SACjD,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,EAAU;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAEpC,IAAI,IAAI,GAAG,CAAC;YAAE,OAAO,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;QAChE,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;QACnD,IAAI,OAAO,GAAG,CAAC;YAAE,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;QACvD,OAAO,GAAG,OAAO,GAAG,CAAC;IACvB,CAAC;CACF"}
|
package/package.json
CHANGED