247-cli 0.8.3 → 1.0.0
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/agent/dist/db/index.d.ts.map +1 -1
- package/agent/dist/db/index.js +41 -2
- package/agent/dist/db/index.js.map +1 -1
- package/agent/dist/db/schema.d.ts +12 -2
- package/agent/dist/db/schema.d.ts.map +1 -1
- package/agent/dist/db/schema.js +8 -2
- package/agent/dist/db/schema.js.map +1 -1
- package/agent/dist/db/sessions.d.ts +5 -0
- package/agent/dist/db/sessions.d.ts.map +1 -1
- package/agent/dist/db/sessions.js +21 -3
- package/agent/dist/db/sessions.js.map +1 -1
- package/agent/dist/heartbeat-monitor.d.ts +20 -0
- package/agent/dist/heartbeat-monitor.d.ts.map +1 -0
- package/agent/dist/heartbeat-monitor.js +99 -0
- package/agent/dist/heartbeat-monitor.js.map +1 -0
- package/agent/dist/routes/heartbeat.d.ts +10 -0
- package/agent/dist/routes/heartbeat.d.ts.map +1 -0
- package/agent/dist/routes/heartbeat.js +103 -0
- package/agent/dist/routes/heartbeat.js.map +1 -0
- package/agent/dist/routes/index.d.ts +1 -1
- package/agent/dist/routes/index.d.ts.map +1 -1
- package/agent/dist/routes/index.js +1 -1
- package/agent/dist/routes/index.js.map +1 -1
- package/agent/dist/routes/sessions.d.ts.map +1 -1
- package/agent/dist/routes/sessions.js +30 -1
- package/agent/dist/routes/sessions.js.map +1 -1
- package/agent/dist/server.d.ts.map +1 -1
- package/agent/dist/server.js +10 -2
- package/agent/dist/server.js.map +1 -1
- package/agent/dist/setup-statusline.d.ts +10 -0
- package/agent/dist/setup-statusline.d.ts.map +1 -0
- package/agent/dist/setup-statusline.js +94 -0
- package/agent/dist/setup-statusline.js.map +1 -0
- package/agent/dist/status.d.ts +6 -0
- package/agent/dist/status.d.ts.map +1 -1
- package/agent/dist/status.js.map +1 -1
- package/agent/dist/websocket-handlers.d.ts.map +1 -1
- package/agent/dist/websocket-handlers.js +19 -2
- package/agent/dist/websocket-handlers.js.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.d.ts +6 -1
- package/agent/node_modules/247-shared/dist/types/index.d.ts.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.js.map +1 -1
- package/agent/node_modules/247-shared/package.json +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +8 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/hooks.d.ts.map +1 -1
- package/dist/commands/hooks.js +37 -89
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +0 -21
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +0 -18
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +6 -9
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +0 -10
- package/dist/commands/update.js.map +1 -1
- package/dist/hooks/installer.d.ts +4 -21
- package/dist/hooks/installer.d.ts.map +1 -1
- package/dist/hooks/installer.js +6 -129
- package/dist/hooks/installer.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/paths.d.ts +1 -3
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +1 -5
- package/dist/lib/paths.js.map +1 -1
- package/package.json +1 -1
- package/agent/dist/routes/hooks.d.ts +0 -6
- package/agent/dist/routes/hooks.d.ts.map +0 -1
- package/agent/dist/routes/hooks.js +0 -80
- package/agent/dist/routes/hooks.js.map +0 -1
- package/hooks/.claude-plugin/plugin.json +0 -5
- package/hooks/hooks/hooks.json +0 -66
- package/hooks/scripts/check-duplication.sh +0 -91
- package/hooks/scripts/notify-status.sh +0 -89
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAqC,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAalF;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAK/C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAqB/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,CAIpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAMpC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAqC,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAalF;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAK/C;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAqB/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,CAIpD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAMpC;AAsKD;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CA0DhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB,CAkBA;AAGD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
package/agent/dist/db/index.js
CHANGED
|
@@ -77,6 +77,9 @@ function runMigrations(database) {
|
|
|
77
77
|
if (currentVersion < 3) {
|
|
78
78
|
migrateToV3(database);
|
|
79
79
|
}
|
|
80
|
+
if (currentVersion < 4) {
|
|
81
|
+
migrateToV4(database);
|
|
82
|
+
}
|
|
80
83
|
// Record the new version
|
|
81
84
|
database
|
|
82
85
|
.prepare(`
|
|
@@ -102,12 +105,28 @@ function ensureRequiredColumns(database) {
|
|
|
102
105
|
console.log('[DB] Adding missing icon column to environments');
|
|
103
106
|
database.exec('ALTER TABLE environments ADD COLUMN icon TEXT');
|
|
104
107
|
}
|
|
105
|
-
// Check sessions
|
|
108
|
+
// Check sessions columns
|
|
106
109
|
const sessionColumns = database.pragma('table_info(sessions)');
|
|
107
|
-
|
|
110
|
+
const sessionColumnNames = new Set(sessionColumns.map((c) => c.name));
|
|
111
|
+
// v3: archived_at
|
|
112
|
+
if (!sessionColumnNames.has('archived_at')) {
|
|
108
113
|
console.log('[DB] Adding missing archived_at column to sessions');
|
|
109
114
|
database.exec('ALTER TABLE sessions ADD COLUMN archived_at INTEGER');
|
|
110
115
|
}
|
|
116
|
+
// v4: StatusLine metrics
|
|
117
|
+
const metricsColumns = [
|
|
118
|
+
{ name: 'model', sql: 'ALTER TABLE sessions ADD COLUMN model TEXT' },
|
|
119
|
+
{ name: 'cost_usd', sql: 'ALTER TABLE sessions ADD COLUMN cost_usd REAL' },
|
|
120
|
+
{ name: 'context_usage', sql: 'ALTER TABLE sessions ADD COLUMN context_usage INTEGER' },
|
|
121
|
+
{ name: 'lines_added', sql: 'ALTER TABLE sessions ADD COLUMN lines_added INTEGER' },
|
|
122
|
+
{ name: 'lines_removed', sql: 'ALTER TABLE sessions ADD COLUMN lines_removed INTEGER' },
|
|
123
|
+
];
|
|
124
|
+
for (const col of metricsColumns) {
|
|
125
|
+
if (!sessionColumnNames.has(col.name)) {
|
|
126
|
+
console.log(`[DB] Adding missing ${col.name} column to sessions`);
|
|
127
|
+
database.exec(col.sql);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
111
130
|
}
|
|
112
131
|
/**
|
|
113
132
|
* Migration to v2: Add icon column to environments table
|
|
@@ -133,6 +152,26 @@ function migrateToV3(database) {
|
|
|
133
152
|
database.exec('ALTER TABLE sessions ADD COLUMN archived_at INTEGER');
|
|
134
153
|
}
|
|
135
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Migration to v4: Add StatusLine metric columns to sessions table
|
|
157
|
+
*/
|
|
158
|
+
function migrateToV4(database) {
|
|
159
|
+
const columns = database.pragma('table_info(sessions)');
|
|
160
|
+
const columnNames = new Set(columns.map((c) => c.name));
|
|
161
|
+
const metricsColumns = [
|
|
162
|
+
{ name: 'model', sql: 'ALTER TABLE sessions ADD COLUMN model TEXT' },
|
|
163
|
+
{ name: 'cost_usd', sql: 'ALTER TABLE sessions ADD COLUMN cost_usd REAL' },
|
|
164
|
+
{ name: 'context_usage', sql: 'ALTER TABLE sessions ADD COLUMN context_usage INTEGER' },
|
|
165
|
+
{ name: 'lines_added', sql: 'ALTER TABLE sessions ADD COLUMN lines_added INTEGER' },
|
|
166
|
+
{ name: 'lines_removed', sql: 'ALTER TABLE sessions ADD COLUMN lines_removed INTEGER' },
|
|
167
|
+
];
|
|
168
|
+
for (const col of metricsColumns) {
|
|
169
|
+
if (!columnNames.has(col.name)) {
|
|
170
|
+
console.log(`[DB] v4 migration: Adding ${col.name} column to sessions`);
|
|
171
|
+
database.exec(col.sql);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
136
175
|
/**
|
|
137
176
|
* Get current schema version
|
|
138
177
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,11 @@ export interface DbSession {
|
|
|
12
12
|
archived_at: number | null;
|
|
13
13
|
created_at: number;
|
|
14
14
|
updated_at: number;
|
|
15
|
+
model: string | null;
|
|
16
|
+
cost_usd: number | null;
|
|
17
|
+
context_usage: number | null;
|
|
18
|
+
lines_added: number | null;
|
|
19
|
+
lines_removed: number | null;
|
|
15
20
|
}
|
|
16
21
|
export interface DbStatusHistory {
|
|
17
22
|
id: number;
|
|
@@ -47,6 +52,11 @@ export interface UpsertSessionInput {
|
|
|
47
52
|
lastActivity: number;
|
|
48
53
|
lastStatusChange: number;
|
|
49
54
|
environmentId?: string | null;
|
|
55
|
+
model?: string | null;
|
|
56
|
+
costUsd?: number | null;
|
|
57
|
+
contextUsage?: number | null;
|
|
58
|
+
linesAdded?: number | null;
|
|
59
|
+
linesRemoved?: number | null;
|
|
50
60
|
}
|
|
51
61
|
export interface UpsertEnvironmentInput {
|
|
52
62
|
id: string;
|
|
@@ -55,8 +65,8 @@ export interface UpsertEnvironmentInput {
|
|
|
55
65
|
isDefault: boolean;
|
|
56
66
|
variables: Record<string, string>;
|
|
57
67
|
}
|
|
58
|
-
export declare const SCHEMA_VERSION =
|
|
59
|
-
export declare const CREATE_TABLES_SQL = "\n-- Sessions: current state of terminal sessions\nCREATE TABLE IF NOT EXISTS sessions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n project TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'init',\n attention_reason TEXT,\n last_event TEXT,\n last_activity INTEGER NOT NULL,\n last_status_change INTEGER NOT NULL,\n environment_id TEXT,\n archived_at INTEGER,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_name ON sessions(name);\nCREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project);\nCREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status);\nCREATE INDEX IF NOT EXISTS idx_sessions_last_activity ON sessions(last_activity);\n\n-- Status history: audit trail of status changes\nCREATE TABLE IF NOT EXISTS status_history (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n session_name TEXT NOT NULL,\n status TEXT NOT NULL,\n attention_reason TEXT,\n event TEXT,\n timestamp INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_history_session ON status_history(session_name);\nCREATE INDEX IF NOT EXISTS idx_history_timestamp ON status_history(timestamp);\n\n-- Environments: API provider configurations\nCREATE TABLE IF NOT EXISTS environments (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n provider TEXT NOT NULL,\n icon TEXT,\n is_default INTEGER NOT NULL DEFAULT 0,\n variables TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_environments_default ON environments(is_default);\n\n-- Session-environment mapping\nCREATE TABLE IF NOT EXISTS session_environments (\n session_name TEXT PRIMARY KEY,\n environment_id TEXT NOT NULL\n);\n\n-- Schema version tracking\nCREATE TABLE IF NOT EXISTS schema_version (\n version INTEGER PRIMARY KEY,\n applied_at INTEGER NOT NULL\n);\n";
|
|
68
|
+
export declare const SCHEMA_VERSION = 4;
|
|
69
|
+
export declare const CREATE_TABLES_SQL = "\n-- Sessions: current state of terminal sessions\nCREATE TABLE IF NOT EXISTS sessions (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n project TEXT NOT NULL,\n status TEXT NOT NULL DEFAULT 'init',\n attention_reason TEXT,\n last_event TEXT,\n last_activity INTEGER NOT NULL,\n last_status_change INTEGER NOT NULL,\n environment_id TEXT,\n archived_at INTEGER,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL,\n -- StatusLine metrics (v4)\n model TEXT,\n cost_usd REAL,\n context_usage INTEGER,\n lines_added INTEGER,\n lines_removed INTEGER\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_name ON sessions(name);\nCREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project);\nCREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status);\nCREATE INDEX IF NOT EXISTS idx_sessions_last_activity ON sessions(last_activity);\n\n-- Status history: audit trail of status changes\nCREATE TABLE IF NOT EXISTS status_history (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n session_name TEXT NOT NULL,\n status TEXT NOT NULL,\n attention_reason TEXT,\n event TEXT,\n timestamp INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_history_session ON status_history(session_name);\nCREATE INDEX IF NOT EXISTS idx_history_timestamp ON status_history(timestamp);\n\n-- Environments: API provider configurations\nCREATE TABLE IF NOT EXISTS environments (\n id TEXT PRIMARY KEY,\n name TEXT NOT NULL,\n provider TEXT NOT NULL,\n icon TEXT,\n is_default INTEGER NOT NULL DEFAULT 0,\n variables TEXT NOT NULL,\n created_at INTEGER NOT NULL,\n updated_at INTEGER NOT NULL\n);\n\nCREATE INDEX IF NOT EXISTS idx_environments_default ON environments(is_default);\n\n-- Session-environment mapping\nCREATE TABLE IF NOT EXISTS session_environments (\n session_name TEXT PRIMARY KEY,\n environment_id TEXT NOT NULL\n);\n\n-- Schema version tracking\nCREATE TABLE IF NOT EXISTS schema_version (\n version INTEGER PRIMARY KEY,\n applied_at INTEGER NOT NULL\n);\n";
|
|
60
70
|
export declare const RETENTION_CONFIG: {
|
|
61
71
|
/** Max age for sessions before cleanup (24 hours) */
|
|
62
72
|
sessionMaxAge: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;IACtB,gBAAgB,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
|
package/agent/dist/db/schema.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// SQL Schema Definitions
|
|
3
3
|
// ============================================================================
|
|
4
|
-
export const SCHEMA_VERSION =
|
|
4
|
+
export const SCHEMA_VERSION = 4;
|
|
5
5
|
export const CREATE_TABLES_SQL = `
|
|
6
6
|
-- Sessions: current state of terminal sessions
|
|
7
7
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
@@ -16,7 +16,13 @@ CREATE TABLE IF NOT EXISTS sessions (
|
|
|
16
16
|
environment_id TEXT,
|
|
17
17
|
archived_at INTEGER,
|
|
18
18
|
created_at INTEGER NOT NULL,
|
|
19
|
-
updated_at INTEGER NOT NULL
|
|
19
|
+
updated_at INTEGER NOT NULL,
|
|
20
|
+
-- StatusLine metrics (v4)
|
|
21
|
+
model TEXT,
|
|
22
|
+
cost_usd REAL,
|
|
23
|
+
context_usage INTEGER,
|
|
24
|
+
lines_added INTEGER,
|
|
25
|
+
lines_removed INTEGER
|
|
20
26
|
);
|
|
21
27
|
|
|
22
28
|
CREATE INDEX IF NOT EXISTS idx_sessions_name ON sessions(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAqFA,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEhC,CAAC;AAEF,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,qDAAqD;IACrD,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAClC,6DAA6D;IAC7D,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACxC,0CAA0C;IAC1C,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACtC,gCAAgC;IAChC,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;CAChC,CAAC"}
|
|
@@ -71,5 +71,10 @@ export declare function toHookStatus(session: DbSession): {
|
|
|
71
71
|
lastStatusChange: number;
|
|
72
72
|
project?: string;
|
|
73
73
|
archivedAt?: number;
|
|
74
|
+
model?: string;
|
|
75
|
+
costUsd?: number;
|
|
76
|
+
contextUsage?: number;
|
|
77
|
+
linesAdded?: number;
|
|
78
|
+
linesRemoved?: number;
|
|
74
79
|
};
|
|
75
80
|
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMzD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAK5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,EAAE,CAKjD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAKjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMzD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAK5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,EAAE,CAKjD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAKjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,SAAS,CA0DhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI,EACxC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAsCT;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAInD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAyB7D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CA4BpF;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CA6BvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM1E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAQxF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAGnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG;IAChD,MAAM,EAAE,aAAa,CAAC;IACtB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAgBA"}
|
|
@@ -48,11 +48,13 @@ export function upsertSession(name, input) {
|
|
|
48
48
|
const stmt = db.prepare(`
|
|
49
49
|
INSERT INTO sessions (
|
|
50
50
|
name, project, status, attention_reason, last_event,
|
|
51
|
-
last_activity, last_status_change, environment_id, created_at, updated_at
|
|
51
|
+
last_activity, last_status_change, environment_id, created_at, updated_at,
|
|
52
|
+
model, cost_usd, context_usage, lines_added, lines_removed
|
|
52
53
|
)
|
|
53
54
|
VALUES (
|
|
54
55
|
@name, @project, @status, @attentionReason, @lastEvent,
|
|
55
|
-
@lastActivity, @lastStatusChange, @environmentId, @createdAt, @updatedAt
|
|
56
|
+
@lastActivity, @lastStatusChange, @environmentId, @createdAt, @updatedAt,
|
|
57
|
+
@model, @costUsd, @contextUsage, @linesAdded, @linesRemoved
|
|
56
58
|
)
|
|
57
59
|
ON CONFLICT(name) DO UPDATE SET
|
|
58
60
|
status = @status,
|
|
@@ -61,7 +63,12 @@ export function upsertSession(name, input) {
|
|
|
61
63
|
last_activity = @lastActivity,
|
|
62
64
|
last_status_change = @lastStatusChange,
|
|
63
65
|
environment_id = COALESCE(@environmentId, environment_id),
|
|
64
|
-
updated_at = @updatedAt
|
|
66
|
+
updated_at = @updatedAt,
|
|
67
|
+
model = COALESCE(@model, model),
|
|
68
|
+
cost_usd = COALESCE(@costUsd, cost_usd),
|
|
69
|
+
context_usage = COALESCE(@contextUsage, context_usage),
|
|
70
|
+
lines_added = COALESCE(@linesAdded, lines_added),
|
|
71
|
+
lines_removed = COALESCE(@linesRemoved, lines_removed)
|
|
65
72
|
`);
|
|
66
73
|
stmt.run({
|
|
67
74
|
name,
|
|
@@ -74,6 +81,11 @@ export function upsertSession(name, input) {
|
|
|
74
81
|
environmentId: input.environmentId ?? null,
|
|
75
82
|
createdAt: existing?.created_at ?? now,
|
|
76
83
|
updatedAt: now,
|
|
84
|
+
model: input.model ?? null,
|
|
85
|
+
costUsd: input.costUsd ?? null,
|
|
86
|
+
contextUsage: input.contextUsage ?? null,
|
|
87
|
+
linesAdded: input.linesAdded ?? null,
|
|
88
|
+
linesRemoved: input.linesRemoved ?? null,
|
|
77
89
|
});
|
|
78
90
|
// Record status history if status changed
|
|
79
91
|
if (statusChanged) {
|
|
@@ -239,6 +251,12 @@ export function toHookStatus(session) {
|
|
|
239
251
|
lastStatusChange: session.last_status_change,
|
|
240
252
|
project: session.project,
|
|
241
253
|
archivedAt: session.archived_at ?? undefined,
|
|
254
|
+
// StatusLine metrics
|
|
255
|
+
model: session.model ?? undefined,
|
|
256
|
+
costUsd: session.cost_usd ?? undefined,
|
|
257
|
+
contextUsage: session.context_usage ?? undefined,
|
|
258
|
+
linesAdded: session.lines_added ?? undefined,
|
|
259
|
+
linesRemoved: session.lines_removed ?? undefined,
|
|
242
260
|
};
|
|
243
261
|
}
|
|
244
262
|
//# sourceMappingURL=sessions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIlD;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,IAAI,CAE3D,CAAC;IACd,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE;SACN,OAAO,CAAC,8EAA8E,CAAC;SACvF,GAAG,EAAiB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE;SACN,OAAO,CAAC,gFAAgF,CAAC;SACzF,GAAG,EAAiB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,OAAO,EAAE;SACN,OAAO,CAAC,sEAAsE,CAAC;SAC/E,GAAG,CAAC,OAAO,CAAgB,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAyB;IACnE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,qDAAqD;IACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;IAEpE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat timeout monitor.
|
|
3
|
+
* Detects when Claude Code stops sending statusLine updates.
|
|
4
|
+
*
|
|
5
|
+
* Logic:
|
|
6
|
+
* - Heartbeat received → status "working"
|
|
7
|
+
* - No heartbeat for 2s → status "needs_attention"
|
|
8
|
+
* - tmux session removed → status "idle" (handled by cleanupStatusMaps)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Start the heartbeat timeout monitor.
|
|
12
|
+
* Checks every second for sessions that haven't sent a heartbeat.
|
|
13
|
+
*/
|
|
14
|
+
export declare function startHeartbeatMonitor(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Stop the heartbeat monitor.
|
|
17
|
+
* Called during graceful shutdown.
|
|
18
|
+
*/
|
|
19
|
+
export declare function stopHeartbeatMonitor(): void;
|
|
20
|
+
//# sourceMappingURL=heartbeat-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat-monitor.d.ts","sourceRoot":"","sources":["../src/heartbeat-monitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CA2E5C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat timeout monitor.
|
|
3
|
+
* Detects when Claude Code stops sending statusLine updates.
|
|
4
|
+
*
|
|
5
|
+
* Logic:
|
|
6
|
+
* - Heartbeat received → status "working"
|
|
7
|
+
* - No heartbeat for 2s → status "needs_attention"
|
|
8
|
+
* - tmux session removed → status "idle" (handled by cleanupStatusMaps)
|
|
9
|
+
*/
|
|
10
|
+
import { lastHeartbeat } from './routes/heartbeat.js';
|
|
11
|
+
import { tmuxSessionStatus, broadcastStatusUpdate } from './status.js';
|
|
12
|
+
import * as sessionsDb from './db/sessions.js';
|
|
13
|
+
import { getEnvironmentMetadata, getSessionEnvironment } from './db/environments.js';
|
|
14
|
+
// Timeout threshold: if no heartbeat for 3 seconds, Claude has stopped working
|
|
15
|
+
// Increased from 2s to reduce false-positive "needs_attention" during brief API pauses
|
|
16
|
+
const HEARTBEAT_TIMEOUT_MS = 3000;
|
|
17
|
+
// Check interval: how often we check for timeouts
|
|
18
|
+
const CHECK_INTERVAL_MS = 1000;
|
|
19
|
+
let intervalId = null;
|
|
20
|
+
/**
|
|
21
|
+
* Start the heartbeat timeout monitor.
|
|
22
|
+
* Checks every second for sessions that haven't sent a heartbeat.
|
|
23
|
+
*/
|
|
24
|
+
export function startHeartbeatMonitor() {
|
|
25
|
+
if (intervalId) {
|
|
26
|
+
console.warn('[HeartbeatMonitor] Already running');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
intervalId = setInterval(() => {
|
|
30
|
+
const now = Date.now();
|
|
31
|
+
for (const [sessionName, lastBeat] of lastHeartbeat) {
|
|
32
|
+
const timeSinceLastBeat = now - lastBeat;
|
|
33
|
+
const status = tmuxSessionStatus.get(sessionName);
|
|
34
|
+
// Only transition if currently "working" and timeout exceeded
|
|
35
|
+
if (timeSinceLastBeat > HEARTBEAT_TIMEOUT_MS && status?.status === 'working') {
|
|
36
|
+
const newStatus = {
|
|
37
|
+
...status,
|
|
38
|
+
status: 'needs_attention',
|
|
39
|
+
lastEvent: 'HeartbeatTimeout',
|
|
40
|
+
lastStatusChange: now,
|
|
41
|
+
};
|
|
42
|
+
tmuxSessionStatus.set(sessionName, newStatus);
|
|
43
|
+
// Persist to database
|
|
44
|
+
sessionsDb.upsertSession(sessionName, {
|
|
45
|
+
project: status.project || sessionName.split('--')[0] || '',
|
|
46
|
+
status: 'needs_attention',
|
|
47
|
+
lastEvent: 'HeartbeatTimeout',
|
|
48
|
+
lastActivity: status.lastActivity,
|
|
49
|
+
lastStatusChange: now,
|
|
50
|
+
});
|
|
51
|
+
// Get environment info for broadcast
|
|
52
|
+
const envId = getSessionEnvironment(sessionName);
|
|
53
|
+
const envMeta = envId ? getEnvironmentMetadata(envId) : undefined;
|
|
54
|
+
// Get actual createdAt from database to prevent card reordering
|
|
55
|
+
const dbSession = sessionsDb.getSession(sessionName);
|
|
56
|
+
// Broadcast status change
|
|
57
|
+
broadcastStatusUpdate({
|
|
58
|
+
name: sessionName,
|
|
59
|
+
project: status.project || '',
|
|
60
|
+
status: 'needs_attention',
|
|
61
|
+
statusSource: 'hook',
|
|
62
|
+
lastEvent: 'HeartbeatTimeout',
|
|
63
|
+
lastStatusChange: now,
|
|
64
|
+
createdAt: dbSession?.created_at || status.lastActivity || now,
|
|
65
|
+
lastActivity: status.lastActivity,
|
|
66
|
+
environmentId: envId,
|
|
67
|
+
environment: envMeta
|
|
68
|
+
? {
|
|
69
|
+
id: envMeta.id,
|
|
70
|
+
name: envMeta.name,
|
|
71
|
+
provider: envMeta.provider,
|
|
72
|
+
icon: envMeta.icon,
|
|
73
|
+
isDefault: envMeta.isDefault,
|
|
74
|
+
}
|
|
75
|
+
: undefined,
|
|
76
|
+
model: status.model,
|
|
77
|
+
costUsd: status.costUsd,
|
|
78
|
+
contextUsage: status.contextUsage,
|
|
79
|
+
linesAdded: status.linesAdded,
|
|
80
|
+
linesRemoved: status.linesRemoved,
|
|
81
|
+
});
|
|
82
|
+
console.log(`[HeartbeatMonitor] ${sessionName} → needs_attention (no heartbeat for ${timeSinceLastBeat}ms)`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}, CHECK_INTERVAL_MS);
|
|
86
|
+
console.log('[HeartbeatMonitor] Started');
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Stop the heartbeat monitor.
|
|
90
|
+
* Called during graceful shutdown.
|
|
91
|
+
*/
|
|
92
|
+
export function stopHeartbeatMonitor() {
|
|
93
|
+
if (intervalId) {
|
|
94
|
+
clearInterval(intervalId);
|
|
95
|
+
intervalId = null;
|
|
96
|
+
console.log('[HeartbeatMonitor] Stopped');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=heartbeat-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat-monitor.js","sourceRoot":"","sources":["../src/heartbeat-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat API route: receives statusLine updates from Claude Code.
|
|
3
|
+
* Replaces the old hooks system with a simpler heartbeat-based approach.
|
|
4
|
+
*/
|
|
5
|
+
import { Router, type Router as RouterType } from 'express';
|
|
6
|
+
declare const router: RouterType;
|
|
7
|
+
export declare const lastHeartbeat: Map<string, number>;
|
|
8
|
+
export declare function createHeartbeatRoutes(): Router;
|
|
9
|
+
export default router;
|
|
10
|
+
//# sourceMappingURL=heartbeat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/routes/heartbeat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AAM5D,QAAA,MAAM,MAAM,EAAE,UAAqB,CAAC;AAGpC,eAAO,MAAM,aAAa,qBAA4B,CAAC;AAkIvD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat API route: receives statusLine updates from Claude Code.
|
|
3
|
+
* Replaces the old hooks system with a simpler heartbeat-based approach.
|
|
4
|
+
*/
|
|
5
|
+
import { Router } from 'express';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { tmuxSessionStatus, broadcastStatusUpdate } from '../status.js';
|
|
8
|
+
import * as sessionsDb from '../db/sessions.js';
|
|
9
|
+
import { getEnvironmentMetadata, getSessionEnvironment } from '../db/environments.js';
|
|
10
|
+
const router = Router();
|
|
11
|
+
// Track last heartbeat per session for timeout detection
|
|
12
|
+
export const lastHeartbeat = new Map();
|
|
13
|
+
/**
|
|
14
|
+
* Receive heartbeat from Claude Code statusLine.
|
|
15
|
+
* Any heartbeat means Claude is actively working.
|
|
16
|
+
*/
|
|
17
|
+
router.post('/', (req, res) => {
|
|
18
|
+
const payload = req.body;
|
|
19
|
+
const { tmux_session } = payload;
|
|
20
|
+
if (!tmux_session) {
|
|
21
|
+
return res.status(400).json({ error: 'Missing tmux_session' });
|
|
22
|
+
}
|
|
23
|
+
const now = Date.now();
|
|
24
|
+
lastHeartbeat.set(tmux_session, now);
|
|
25
|
+
// Extract project from cwd or session name
|
|
26
|
+
const project = payload.cwd
|
|
27
|
+
? path.basename(payload.cwd)
|
|
28
|
+
: tmux_session.split('--')[0] || undefined;
|
|
29
|
+
const existing = tmuxSessionStatus.get(tmux_session);
|
|
30
|
+
const statusChanged = !existing || existing.status !== 'working';
|
|
31
|
+
// Calculate context usage percentage
|
|
32
|
+
let contextUsage;
|
|
33
|
+
if (payload.context_window?.current_usage && payload.context_window?.context_window_size) {
|
|
34
|
+
const { input_tokens, cache_read_input_tokens } = payload.context_window.current_usage;
|
|
35
|
+
const totalUsed = input_tokens + cache_read_input_tokens;
|
|
36
|
+
contextUsage = Math.round((totalUsed / payload.context_window.context_window_size) * 100);
|
|
37
|
+
}
|
|
38
|
+
const hookData = {
|
|
39
|
+
status: 'working',
|
|
40
|
+
lastEvent: 'Heartbeat',
|
|
41
|
+
lastActivity: now,
|
|
42
|
+
lastStatusChange: statusChanged ? now : existing?.lastStatusChange || now,
|
|
43
|
+
project,
|
|
44
|
+
transcriptPath: payload.transcript_path,
|
|
45
|
+
model: payload.model?.display_name,
|
|
46
|
+
costUsd: payload.cost?.total_cost_usd,
|
|
47
|
+
contextUsage,
|
|
48
|
+
linesAdded: payload.cost?.total_lines_added,
|
|
49
|
+
linesRemoved: payload.cost?.total_lines_removed,
|
|
50
|
+
};
|
|
51
|
+
tmuxSessionStatus.set(tmux_session, hookData);
|
|
52
|
+
// Persist to database (including metrics)
|
|
53
|
+
const dbSession = sessionsDb.upsertSession(tmux_session, {
|
|
54
|
+
project: project || tmux_session.split('--')[0] || '',
|
|
55
|
+
status: 'working',
|
|
56
|
+
lastEvent: 'Heartbeat',
|
|
57
|
+
lastActivity: now,
|
|
58
|
+
lastStatusChange: statusChanged ? now : (existing?.lastStatusChange ?? now),
|
|
59
|
+
// StatusLine metrics
|
|
60
|
+
model: hookData.model,
|
|
61
|
+
costUsd: hookData.costUsd,
|
|
62
|
+
contextUsage,
|
|
63
|
+
linesAdded: hookData.linesAdded,
|
|
64
|
+
linesRemoved: hookData.linesRemoved,
|
|
65
|
+
});
|
|
66
|
+
// Broadcast status change to dashboard
|
|
67
|
+
if (statusChanged) {
|
|
68
|
+
const envId = getSessionEnvironment(tmux_session);
|
|
69
|
+
const envMeta = envId ? getEnvironmentMetadata(envId) : undefined;
|
|
70
|
+
broadcastStatusUpdate({
|
|
71
|
+
name: tmux_session,
|
|
72
|
+
project: project || '',
|
|
73
|
+
status: 'working',
|
|
74
|
+
statusSource: 'hook',
|
|
75
|
+
lastEvent: 'Heartbeat',
|
|
76
|
+
lastStatusChange: hookData.lastStatusChange,
|
|
77
|
+
createdAt: dbSession?.created_at || now,
|
|
78
|
+
lastActivity: now,
|
|
79
|
+
environmentId: envId,
|
|
80
|
+
environment: envMeta
|
|
81
|
+
? {
|
|
82
|
+
id: envMeta.id,
|
|
83
|
+
name: envMeta.name,
|
|
84
|
+
provider: envMeta.provider,
|
|
85
|
+
icon: envMeta.icon,
|
|
86
|
+
isDefault: envMeta.isDefault,
|
|
87
|
+
}
|
|
88
|
+
: undefined,
|
|
89
|
+
model: hookData.model,
|
|
90
|
+
costUsd: hookData.costUsd,
|
|
91
|
+
contextUsage,
|
|
92
|
+
linesAdded: hookData.linesAdded,
|
|
93
|
+
linesRemoved: hookData.linesRemoved,
|
|
94
|
+
});
|
|
95
|
+
console.log(`[Heartbeat] ${tmux_session}: → working`);
|
|
96
|
+
}
|
|
97
|
+
res.json({ ok: true });
|
|
98
|
+
});
|
|
99
|
+
export function createHeartbeatRoutes() {
|
|
100
|
+
return router;
|
|
101
|
+
}
|
|
102
|
+
export default router;
|
|
103
|
+
//# sourceMappingURL=heartbeat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/routes/heartbeat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAA6B,MAAM,SAAS,CAAC;AAC5D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAmB,MAAM,cAAc,CAAC;AACzF,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEtF,MAAM,MAAM,GAAe,MAAM,EAAE,CAAC;AAEpC,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AA+BvD;;;GAGG;AACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC5B,MAAM,OAAO,GAAsB,GAAG,CAAC,IAAI,CAAC;IAC5C,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IAEjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAErC,2CAA2C;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG;QACzB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QAC5B,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAE7C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;IAEjE,qCAAqC;IACrC,IAAI,YAAgC,CAAC;IACrC,IAAI,OAAO,CAAC,cAAc,EAAE,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,mBAAmB,EAAE,CAAC;QACzF,MAAM,EAAE,YAAY,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC;QACvF,MAAM,SAAS,GAAG,YAAY,GAAG,uBAAuB,CAAC;QACzD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,mBAAmB,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,QAAQ,GAAe;QAC3B,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,WAAW;QACtB,YAAY,EAAE,GAAG;QACjB,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,gBAAgB,IAAI,GAAG;QACzE,OAAO;QACP,cAAc,EAAE,OAAO,CAAC,eAAe;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY;QAClC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc;QACrC,YAAY;QACZ,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,iBAAiB;QAC3C,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,mBAAmB;KAChD,CAAC;IAEF,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAE9C,0CAA0C;IAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,EAAE;QACvD,OAAO,EAAE,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QACrD,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,WAAW;QACtB,YAAY,EAAE,GAAG;QACjB,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,gBAAgB,IAAI,GAAG,CAAC;QAC3E,qBAAqB;QACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY;QACZ,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;KACpC,CAAC,CAAC;IAEH,uCAAuC;IACvC,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElE,qBAAqB,CAAC;YACpB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,MAAM,EAAE,SAAS;YACjB,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,WAAW;YACtB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;YAC3C,SAAS,EAAE,SAAS,EAAE,UAAU,IAAI,GAAG;YACvC,YAAY,EAAE,GAAG;YACjB,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,OAAO;gBAClB,CAAC,CAAC;oBACE,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B;gBACH,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,YAAY;YACZ,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,eAAe,YAAY,aAAa,CAAC,CAAC;IACxD,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export { createProjectRoutes } from './projects.js';
|
|
5
5
|
export { createEnvironmentRoutes } from './environments.js';
|
|
6
6
|
export { createSessionRoutes } from './sessions.js';
|
|
7
|
-
export {
|
|
7
|
+
export { createHeartbeatRoutes } from './heartbeat.js';
|
|
8
8
|
export { createEditorRoutes, isProjectAllowed, updateEditorActivity, getOrStartEditor, } from './editor.js';
|
|
9
9
|
export { createFilesRoutes } from './files.js';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export { createProjectRoutes } from './projects.js';
|
|
5
5
|
export { createEnvironmentRoutes } from './environments.js';
|
|
6
6
|
export { createSessionRoutes } from './sessions.js';
|
|
7
|
-
export {
|
|
7
|
+
export { createHeartbeatRoutes } from './heartbeat.js';
|
|
8
8
|
export { createEditorRoutes, isProjectAllowed, updateEditorActivity, getOrStartEditor, } from './editor.js';
|
|
9
9
|
export { createFilesRoutes } from './files.js';
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAUjC,wBAAgB,mBAAmB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAUjC,wBAAgB,mBAAmB,IAAI,MAAM,CAwP5C"}
|