247-cli 2.23.2 → 2.23.3
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 +0 -1
- package/agent/dist/db/index.d.ts.map +1 -1
- package/agent/dist/db/index.js +62 -381
- package/agent/dist/db/index.js.map +1 -1
- package/agent/dist/db/schema.d.ts +2 -42
- package/agent/dist/db/schema.d.ts.map +1 -1
- package/agent/dist/db/schema.js +4 -40
- package/agent/dist/db/schema.js.map +1 -1
- package/agent/dist/db/sessions.d.ts +0 -33
- package/agent/dist/db/sessions.d.ts.map +1 -1
- package/agent/dist/db/sessions.js +3 -138
- package/agent/dist/db/sessions.js.map +1 -1
- package/agent/dist/routes/sessions.d.ts +1 -0
- package/agent/dist/routes/sessions.d.ts.map +1 -1
- package/agent/dist/routes/sessions.js +3 -309
- package/agent/dist/routes/sessions.js.map +1 -1
- package/agent/dist/services/index.d.ts +1 -6
- package/agent/dist/services/index.d.ts.map +1 -1
- package/agent/dist/services/index.js +4 -4
- package/agent/dist/services/index.js.map +1 -1
- package/agent/dist/status.d.ts +0 -6
- package/agent/dist/status.d.ts.map +1 -1
- package/agent/dist/status.js +2 -4
- package/agent/dist/status.js.map +1 -1
- package/agent/dist/terminal.d.ts +0 -11
- package/agent/dist/terminal.d.ts.map +1 -1
- package/agent/dist/terminal.js +6 -60
- package/agent/dist/terminal.js.map +1 -1
- package/agent/dist/websocket-handlers.d.ts +1 -0
- package/agent/dist/websocket-handlers.d.ts.map +1 -1
- package/agent/dist/websocket-handlers.js +2 -49
- package/agent/dist/websocket-handlers.js.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.d.ts +0 -85
- package/agent/node_modules/247-shared/dist/types/index.d.ts.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.js +1 -47
- 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/index.js +1 -1
- package/package.json +1 -1
- package/agent/dist/db/history.d.ts +0 -37
- package/agent/dist/db/history.d.ts.map +0 -1
- package/agent/dist/db/history.js +0 -98
- package/agent/dist/db/history.js.map +0 -1
- package/agent/dist/services/cleanup.d.ts +0 -45
- package/agent/dist/services/cleanup.d.ts.map +0 -1
- package/agent/dist/services/cleanup.js +0 -130
- package/agent/dist/services/cleanup.js.map +0 -1
- package/agent/dist/services/execution.d.ts +0 -53
- package/agent/dist/services/execution.d.ts.map +0 -1
- package/agent/dist/services/execution.js +0 -75
- package/agent/dist/services/execution.js.map +0 -1
- package/agent/dist/services/worktree.d.ts +0 -41
- package/agent/dist/services/worktree.d.ts.map +0 -1
- package/agent/dist/services/worktree.js +0 -139
- package/agent/dist/services/worktree.js.map +0 -1
package/agent/dist/db/schema.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
|
-
// SQL Schema Definitions
|
|
2
|
+
// SQL Schema Definitions (Simplified v15)
|
|
3
3
|
// ============================================================================
|
|
4
|
-
export const SCHEMA_VERSION =
|
|
4
|
+
export const SCHEMA_VERSION = 15;
|
|
5
5
|
export const CREATE_TABLES_SQL = `
|
|
6
|
-
-- Sessions: current state of terminal sessions
|
|
6
|
+
-- Sessions: current state of terminal sessions (simplified)
|
|
7
7
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
8
8
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
9
9
|
name TEXT NOT NULL UNIQUE,
|
|
@@ -13,49 +13,15 @@ CREATE TABLE IF NOT EXISTS sessions (
|
|
|
13
13
|
last_event TEXT,
|
|
14
14
|
last_activity INTEGER NOT NULL,
|
|
15
15
|
last_status_change INTEGER NOT NULL,
|
|
16
|
-
environment_id TEXT,
|
|
17
16
|
archived_at INTEGER,
|
|
18
17
|
created_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,
|
|
26
|
-
-- Worktree isolation (v6)
|
|
27
|
-
worktree_path TEXT,
|
|
28
|
-
branch_name TEXT,
|
|
29
|
-
-- Spawn/orchestration fields (v9)
|
|
30
|
-
spawn_prompt TEXT,
|
|
31
|
-
parent_session TEXT,
|
|
32
|
-
task_id TEXT,
|
|
33
|
-
exit_code INTEGER,
|
|
34
|
-
exited_at INTEGER,
|
|
35
|
-
-- Output capture (v10)
|
|
36
|
-
output_content TEXT,
|
|
37
|
-
output_captured_at INTEGER
|
|
18
|
+
updated_at INTEGER NOT NULL
|
|
38
19
|
);
|
|
39
20
|
|
|
40
21
|
CREATE INDEX IF NOT EXISTS idx_sessions_name ON sessions(name);
|
|
41
22
|
CREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project);
|
|
42
23
|
CREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status);
|
|
43
24
|
CREATE INDEX IF NOT EXISTS idx_sessions_last_activity ON sessions(last_activity);
|
|
44
|
-
CREATE INDEX IF NOT EXISTS idx_sessions_parent ON sessions(parent_session);
|
|
45
|
-
CREATE INDEX IF NOT EXISTS idx_sessions_task ON sessions(task_id);
|
|
46
|
-
|
|
47
|
-
-- Status history: audit trail of status changes
|
|
48
|
-
CREATE TABLE IF NOT EXISTS status_history (
|
|
49
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
50
|
-
session_name TEXT NOT NULL,
|
|
51
|
-
status TEXT NOT NULL,
|
|
52
|
-
attention_reason TEXT,
|
|
53
|
-
event TEXT,
|
|
54
|
-
timestamp INTEGER NOT NULL
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
CREATE INDEX IF NOT EXISTS idx_history_session ON status_history(session_name);
|
|
58
|
-
CREATE INDEX IF NOT EXISTS idx_history_timestamp ON status_history(timestamp);
|
|
59
25
|
|
|
60
26
|
-- Schema version tracking
|
|
61
27
|
CREATE TABLE IF NOT EXISTS schema_version (
|
|
@@ -71,8 +37,6 @@ export const RETENTION_CONFIG = {
|
|
|
71
37
|
sessionMaxAge: 24 * 60 * 60 * 1000,
|
|
72
38
|
/** Max age for archived sessions before cleanup (30 days) */
|
|
73
39
|
archivedMaxAge: 30 * 24 * 60 * 60 * 1000,
|
|
74
|
-
/** Max age for status history (7 days) */
|
|
75
|
-
historyMaxAge: 7 * 24 * 60 * 60 * 1000,
|
|
76
40
|
/** Cleanup interval (1 hour) */
|
|
77
41
|
cleanupInterval: 60 * 60 * 1000,
|
|
78
42
|
};
|
|
@@ -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":"AAsCA,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BhC,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,gCAAgC;IAChC,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;CAChC,CAAC"}
|
|
@@ -18,7 +18,6 @@ export declare function getArchivedSessions(): DbSession[];
|
|
|
18
18
|
export declare function getSessionsByProject(project: string): DbSession[];
|
|
19
19
|
/**
|
|
20
20
|
* Upsert a session (insert or update)
|
|
21
|
-
* Records status history if status changed
|
|
22
21
|
*/
|
|
23
22
|
export declare function upsertSession(name: string, input: UpsertSessionInput): DbSession;
|
|
24
23
|
/**
|
|
@@ -48,18 +47,6 @@ export declare function cleanupStaleSessions(maxAge: number, archivedMaxAge?: nu
|
|
|
48
47
|
* - Archived sessions are skipped (they don't have tmux sessions)
|
|
49
48
|
*/
|
|
50
49
|
export declare function reconcileWithTmux(activeTmuxSessions: Set<string>): void;
|
|
51
|
-
/**
|
|
52
|
-
* Get session environment mapping
|
|
53
|
-
*/
|
|
54
|
-
export declare function getSessionEnvironmentId(sessionName: string): string | null;
|
|
55
|
-
/**
|
|
56
|
-
* Set session environment mapping
|
|
57
|
-
*/
|
|
58
|
-
export declare function setSessionEnvironmentId(sessionName: string, environmentId: string): void;
|
|
59
|
-
/**
|
|
60
|
-
* Clear session environment mapping
|
|
61
|
-
*/
|
|
62
|
-
export declare function clearSessionEnvironmentId(sessionName: string): void;
|
|
63
50
|
/**
|
|
64
51
|
* Convert DbSession to HookStatus format (for compatibility with existing code)
|
|
65
52
|
*/
|
|
@@ -71,25 +58,5 @@ export declare function toHookStatus(session: DbSession): {
|
|
|
71
58
|
lastStatusChange: number;
|
|
72
59
|
project?: string;
|
|
73
60
|
archivedAt?: number;
|
|
74
|
-
model?: string;
|
|
75
|
-
costUsd?: number;
|
|
76
|
-
contextUsage?: number;
|
|
77
|
-
linesAdded?: number;
|
|
78
|
-
linesRemoved?: number;
|
|
79
|
-
worktreePath?: string;
|
|
80
|
-
branchName?: string;
|
|
81
61
|
};
|
|
82
|
-
/**
|
|
83
|
-
* Update worktree info for a session
|
|
84
|
-
*/
|
|
85
|
-
export declare function updateSessionWorktree(name: string, worktreePath: string, branchName: string): boolean;
|
|
86
|
-
/**
|
|
87
|
-
* Clear worktree info for a session (after cleanup)
|
|
88
|
-
*/
|
|
89
|
-
export declare function clearSessionWorktree(name: string): boolean;
|
|
90
|
-
/**
|
|
91
|
-
* Get sessions with worktrees that can be cleaned up
|
|
92
|
-
* (archived and last activity older than maxAge)
|
|
93
|
-
*/
|
|
94
|
-
export declare function getCleanableWorktreeSessions(maxAgeMs: number): DbSession[];
|
|
95
62
|
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"AACA,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;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAuChF;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,CAiCT;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,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;CACrB,CAUA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { getDatabase } from './index.js';
|
|
2
|
-
import { recordStatusChange } from './history.js';
|
|
3
2
|
/**
|
|
4
3
|
* Get a session by name
|
|
5
4
|
*/
|
|
@@ -37,7 +36,6 @@ export function getSessionsByProject(project) {
|
|
|
37
36
|
}
|
|
38
37
|
/**
|
|
39
38
|
* Upsert a session (insert or update)
|
|
40
|
-
* Records status history if status changed
|
|
41
39
|
*/
|
|
42
40
|
export function upsertSession(name, input) {
|
|
43
41
|
const db = getDatabase();
|
|
@@ -48,19 +46,11 @@ export function upsertSession(name, input) {
|
|
|
48
46
|
const stmt = db.prepare(`
|
|
49
47
|
INSERT INTO sessions (
|
|
50
48
|
name, project, status, attention_reason, last_event,
|
|
51
|
-
last_activity, last_status_change,
|
|
52
|
-
model, cost_usd, context_usage, lines_added, lines_removed,
|
|
53
|
-
worktree_path, branch_name,
|
|
54
|
-
spawn_prompt, parent_session, task_id, exit_code, exited_at,
|
|
55
|
-
output_content, output_captured_at
|
|
49
|
+
last_activity, last_status_change, created_at, updated_at
|
|
56
50
|
)
|
|
57
51
|
VALUES (
|
|
58
52
|
@name, @project, @status, @attentionReason, @lastEvent,
|
|
59
|
-
@lastActivity, @lastStatusChange, @
|
|
60
|
-
@model, @costUsd, @contextUsage, @linesAdded, @linesRemoved,
|
|
61
|
-
@worktreePath, @branchName,
|
|
62
|
-
@spawnPrompt, @parentSession, @taskId, @exitCode, @exitedAt,
|
|
63
|
-
@outputContent, @outputCapturedAt
|
|
53
|
+
@lastActivity, @lastStatusChange, @createdAt, @updatedAt
|
|
64
54
|
)
|
|
65
55
|
ON CONFLICT(name) DO UPDATE SET
|
|
66
56
|
status = COALESCE(@status, status),
|
|
@@ -68,22 +58,7 @@ export function upsertSession(name, input) {
|
|
|
68
58
|
last_event = COALESCE(@lastEvent, last_event),
|
|
69
59
|
last_activity = COALESCE(@lastActivity, last_activity),
|
|
70
60
|
last_status_change = @lastStatusChange,
|
|
71
|
-
|
|
72
|
-
updated_at = @updatedAt,
|
|
73
|
-
model = COALESCE(@model, model),
|
|
74
|
-
cost_usd = COALESCE(@costUsd, cost_usd),
|
|
75
|
-
context_usage = COALESCE(@contextUsage, context_usage),
|
|
76
|
-
lines_added = COALESCE(@linesAdded, lines_added),
|
|
77
|
-
lines_removed = COALESCE(@linesRemoved, lines_removed),
|
|
78
|
-
worktree_path = COALESCE(@worktreePath, worktree_path),
|
|
79
|
-
branch_name = COALESCE(@branchName, branch_name),
|
|
80
|
-
spawn_prompt = COALESCE(@spawnPrompt, spawn_prompt),
|
|
81
|
-
parent_session = COALESCE(@parentSession, parent_session),
|
|
82
|
-
task_id = COALESCE(@taskId, task_id),
|
|
83
|
-
exit_code = COALESCE(@exitCode, exit_code),
|
|
84
|
-
exited_at = COALESCE(@exitedAt, exited_at),
|
|
85
|
-
output_content = COALESCE(@outputContent, output_content),
|
|
86
|
-
output_captured_at = COALESCE(@outputCapturedAt, output_captured_at)
|
|
61
|
+
updated_at = @updatedAt
|
|
87
62
|
`);
|
|
88
63
|
stmt.run({
|
|
89
64
|
name,
|
|
@@ -93,28 +68,9 @@ export function upsertSession(name, input) {
|
|
|
93
68
|
lastEvent: input.lastEvent ?? null,
|
|
94
69
|
lastActivity: input.lastActivity ?? now,
|
|
95
70
|
lastStatusChange: statusChanged ? now : (existing?.last_status_change ?? now),
|
|
96
|
-
environmentId: input.environmentId ?? null,
|
|
97
71
|
createdAt: existing?.created_at ?? now,
|
|
98
72
|
updatedAt: now,
|
|
99
|
-
model: input.model ?? null,
|
|
100
|
-
costUsd: input.costUsd ?? null,
|
|
101
|
-
contextUsage: input.contextUsage ?? null,
|
|
102
|
-
linesAdded: input.linesAdded ?? null,
|
|
103
|
-
linesRemoved: input.linesRemoved ?? null,
|
|
104
|
-
worktreePath: input.worktreePath ?? null,
|
|
105
|
-
branchName: input.branchName ?? null,
|
|
106
|
-
spawnPrompt: input.spawn_prompt ?? null,
|
|
107
|
-
parentSession: input.parent_session ?? null,
|
|
108
|
-
taskId: input.task_id ?? null,
|
|
109
|
-
exitCode: input.exit_code ?? null,
|
|
110
|
-
exitedAt: input.exited_at ?? null,
|
|
111
|
-
outputContent: input.output_content ?? null,
|
|
112
|
-
outputCapturedAt: input.output_captured_at ?? null,
|
|
113
73
|
});
|
|
114
|
-
// Record status history if status changed
|
|
115
|
-
if (statusChanged && input.status) {
|
|
116
|
-
recordStatusChange(name, input.status, input.attentionReason ?? null, input.lastEvent ?? null);
|
|
117
|
-
}
|
|
118
74
|
return getSession(name);
|
|
119
75
|
}
|
|
120
76
|
/**
|
|
@@ -139,10 +95,6 @@ export function updateSessionStatus(name, status, attentionReason, lastEvent) {
|
|
|
139
95
|
WHERE name = ?
|
|
140
96
|
`);
|
|
141
97
|
stmt.run(status, attentionReason ?? null, lastEvent, now, statusChanged ? now : existing.last_status_change, now, name);
|
|
142
|
-
// Record status history if status changed
|
|
143
|
-
if (statusChanged) {
|
|
144
|
-
recordStatusChange(name, status, attentionReason ?? null, lastEvent ?? null);
|
|
145
|
-
}
|
|
146
98
|
return true;
|
|
147
99
|
}
|
|
148
100
|
/**
|
|
@@ -236,33 +188,6 @@ export function reconcileWithTmux(activeTmuxSessions) {
|
|
|
236
188
|
// These will be created when they receive their first status update
|
|
237
189
|
// We don't create them here because we don't have project info
|
|
238
190
|
}
|
|
239
|
-
/**
|
|
240
|
-
* Get session environment mapping
|
|
241
|
-
*/
|
|
242
|
-
export function getSessionEnvironmentId(sessionName) {
|
|
243
|
-
const db = getDatabase();
|
|
244
|
-
const row = db
|
|
245
|
-
.prepare('SELECT environment_id FROM session_environments WHERE session_name = ?')
|
|
246
|
-
.get(sessionName);
|
|
247
|
-
return row?.environment_id ?? null;
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Set session environment mapping
|
|
251
|
-
*/
|
|
252
|
-
export function setSessionEnvironmentId(sessionName, environmentId) {
|
|
253
|
-
const db = getDatabase();
|
|
254
|
-
db.prepare(`
|
|
255
|
-
INSERT OR REPLACE INTO session_environments (session_name, environment_id)
|
|
256
|
-
VALUES (?, ?)
|
|
257
|
-
`).run(sessionName, environmentId);
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Clear session environment mapping
|
|
261
|
-
*/
|
|
262
|
-
export function clearSessionEnvironmentId(sessionName) {
|
|
263
|
-
const db = getDatabase();
|
|
264
|
-
db.prepare('DELETE FROM session_environments WHERE session_name = ?').run(sessionName);
|
|
265
|
-
}
|
|
266
191
|
/**
|
|
267
192
|
* Convert DbSession to HookStatus format (for compatibility with existing code)
|
|
268
193
|
*/
|
|
@@ -275,66 +200,6 @@ export function toHookStatus(session) {
|
|
|
275
200
|
lastStatusChange: session.last_status_change,
|
|
276
201
|
project: session.project,
|
|
277
202
|
archivedAt: session.archived_at ?? undefined,
|
|
278
|
-
// StatusLine metrics
|
|
279
|
-
model: session.model ?? undefined,
|
|
280
|
-
costUsd: session.cost_usd ?? undefined,
|
|
281
|
-
contextUsage: session.context_usage ?? undefined,
|
|
282
|
-
linesAdded: session.lines_added ?? undefined,
|
|
283
|
-
linesRemoved: session.lines_removed ?? undefined,
|
|
284
|
-
// Worktree isolation
|
|
285
|
-
worktreePath: session.worktree_path ?? undefined,
|
|
286
|
-
branchName: session.branch_name ?? undefined,
|
|
287
203
|
};
|
|
288
204
|
}
|
|
289
|
-
// ============================================================================
|
|
290
|
-
// Worktree Functions
|
|
291
|
-
// ============================================================================
|
|
292
|
-
/**
|
|
293
|
-
* Update worktree info for a session
|
|
294
|
-
*/
|
|
295
|
-
export function updateSessionWorktree(name, worktreePath, branchName) {
|
|
296
|
-
const db = getDatabase();
|
|
297
|
-
const result = db
|
|
298
|
-
.prepare(`
|
|
299
|
-
UPDATE sessions SET
|
|
300
|
-
worktree_path = ?,
|
|
301
|
-
branch_name = ?,
|
|
302
|
-
updated_at = ?
|
|
303
|
-
WHERE name = ?
|
|
304
|
-
`)
|
|
305
|
-
.run(worktreePath, branchName, Date.now(), name);
|
|
306
|
-
return result.changes > 0;
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Clear worktree info for a session (after cleanup)
|
|
310
|
-
*/
|
|
311
|
-
export function clearSessionWorktree(name) {
|
|
312
|
-
const db = getDatabase();
|
|
313
|
-
const result = db
|
|
314
|
-
.prepare(`
|
|
315
|
-
UPDATE sessions SET
|
|
316
|
-
worktree_path = NULL,
|
|
317
|
-
branch_name = NULL,
|
|
318
|
-
updated_at = ?
|
|
319
|
-
WHERE name = ?
|
|
320
|
-
`)
|
|
321
|
-
.run(Date.now(), name);
|
|
322
|
-
return result.changes > 0;
|
|
323
|
-
}
|
|
324
|
-
/**
|
|
325
|
-
* Get sessions with worktrees that can be cleaned up
|
|
326
|
-
* (archived and last activity older than maxAge)
|
|
327
|
-
*/
|
|
328
|
-
export function getCleanableWorktreeSessions(maxAgeMs) {
|
|
329
|
-
const db = getDatabase();
|
|
330
|
-
const cutoff = Date.now() - maxAgeMs;
|
|
331
|
-
return db
|
|
332
|
-
.prepare(`
|
|
333
|
-
SELECT * FROM sessions
|
|
334
|
-
WHERE worktree_path IS NOT NULL
|
|
335
|
-
AND archived_at IS NOT NULL
|
|
336
|
-
AND last_activity < ?
|
|
337
|
-
`)
|
|
338
|
-
.all(cutoff);
|
|
339
|
-
}
|
|
340
205
|
//# 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;
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/db/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC;;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;;GAEG;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;;;;;;;;;;;;;;;;GAgBvB,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC;QACP,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,SAAS;QACxD,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,MAAM;QAClD,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;QAC9C,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;QAClC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,GAAG;QACvC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,kBAAkB,IAAI,GAAG,CAAC;QAC7E,SAAS,EAAE,QAAQ,EAAE,UAAU,IAAI,GAAG;QACtC,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,IAAI,CAAE,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,MAAqB,EACrB,eAAwC,EACxC,SAAyB;IAEzB,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC;IAEjD,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;GASvB,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CACN,MAAM,EACN,eAAe,IAAI,IAAI,EACvB,SAAS,EACT,GAAG,EACH,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EACjD,GAAG,EACH,IAAI,CACL,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,OAAO,CACR;;;;;GAKD,CACA,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,cAAuB;IAC1E,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAE5B,qCAAqC;IACrC,MAAM,YAAY,GAAG,EAAE;SACpB,OAAO,CAAC,sEAAsE,CAAC;SAC/E,GAAG,CAAC,MAAM,CAAC,CAAC;IAEf,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,GAAG,GAAG,GAAG,cAAc,CAAC;QAC5C,MAAM,cAAc,GAAG,EAAE;aACtB,OAAO,CAAC,wEAAwE,CAAC;aACjF,GAAG,CAAC,cAAc,CAAC,CAAC;QACvB,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,GAAG,eAAe,CAAC;IAE5D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CACT,mBAAmB,YAAY,CAAC,OAAO,oBAAoB,eAAe,wBAAwB,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,kBAA+B;IAC/D,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC,CAAC,kCAAkC;IACvE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;IAE/C,OAAO,CAAC,GAAG,CACT,oBAAoB,UAAU,CAAC,MAAM,qBAAqB,kBAAkB,CAAC,IAAI,gBAAgB,CAClG,CAAC;IAEF,kFAAkF;IAClF,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;YAExC,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;gBACjB,sBAAsB;gBACtB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACrC,0CAA0C;gBAC1C,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;gBACjE,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,oEAAoE;IACpE,+DAA+D;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAkB;IAS7C,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,eAAe,EAAE,OAAO,CAAC,gBAAgB,IAAI,SAAS;QACtD,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE;QACnC,YAAY,EAAE,OAAO,CAAC,aAAa;QACnC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,WAAW,IAAI,SAAS;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/routes/sessions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC,wBAAgB,mBAAmB,IAAI,MAAM,CA4U5C"}
|