247-cli 2.21.1 → 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/config.d.ts +4 -7
- package/agent/dist/config.d.ts.map +1 -1
- package/agent/dist/config.js +1 -2
- package/agent/dist/config.js.map +1 -1
- package/agent/dist/db/index.d.ts +0 -7
- package/agent/dist/db/index.d.ts.map +1 -1
- package/agent/dist/db/index.js +68 -333
- package/agent/dist/db/index.js.map +1 -1
- package/agent/dist/db/schema.d.ts +3 -90
- package/agent/dist/db/schema.d.ts.map +1 -1
- package/agent/dist/db/schema.js +4 -105
- package/agent/dist/db/schema.js.map +1 -1
- package/agent/dist/db/sessions.d.ts +0 -53
- package/agent/dist/db/sessions.d.ts.map +1 -1
- package/agent/dist/db/sessions.js +3 -224
- package/agent/dist/db/sessions.js.map +1 -1
- package/agent/dist/index.js +1 -0
- package/agent/dist/index.js.map +1 -1
- package/agent/dist/logger.d.ts +0 -2
- package/agent/dist/logger.d.ts.map +1 -1
- package/agent/dist/logger.js +0 -4
- package/agent/dist/logger.js.map +1 -1
- package/agent/dist/routes/attention.d.ts +10 -0
- package/agent/dist/routes/attention.d.ts.map +1 -0
- package/agent/dist/routes/attention.js +123 -0
- package/agent/dist/routes/attention.js.map +1 -0
- package/agent/dist/routes/index.d.ts +3 -7
- package/agent/dist/routes/index.d.ts.map +1 -1
- package/agent/dist/routes/index.js +3 -7
- package/agent/dist/routes/index.js.map +1 -1
- package/agent/dist/routes/pair.d.ts +26 -0
- package/agent/dist/routes/pair.d.ts.map +1 -0
- package/agent/dist/routes/pair.js +381 -0
- package/agent/dist/routes/pair.js.map +1 -0
- package/agent/dist/routes/projects.d.ts +2 -1
- package/agent/dist/routes/projects.d.ts.map +1 -1
- package/agent/dist/routes/projects.js +7 -39
- package/agent/dist/routes/projects.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 +14 -379
- package/agent/dist/routes/sessions.js.map +1 -1
- package/agent/dist/server.d.ts.map +1 -1
- package/agent/dist/server.js +11 -81
- package/agent/dist/server.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/setup-hooks.d.ts +10 -0
- package/agent/dist/setup-hooks.d.ts.map +1 -0
- package/agent/dist/setup-hooks.js +157 -0
- package/agent/dist/setup-hooks.js.map +1 -0
- package/agent/dist/status.d.ts +0 -6
- package/agent/dist/status.d.ts.map +1 -1
- package/agent/dist/status.js +2 -12
- 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 +3 -187
- package/agent/dist/websocket-handlers.js.map +1 -1
- package/agent/node_modules/247-shared/dist/types/index.d.ts +0 -232
- 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 -63
- 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 +3 -3
- package/agent/dist/db/environments.d.ts +0 -60
- package/agent/dist/db/environments.d.ts.map +0 -1
- package/agent/dist/db/environments.js +0 -235
- package/agent/dist/db/environments.js.map +0 -1
- package/agent/dist/db/events.d.ts +0 -46
- package/agent/dist/db/events.d.ts.map +0 -1
- package/agent/dist/db/events.js +0 -193
- package/agent/dist/db/events.js.map +0 -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/db/push-subscriptions.d.ts +0 -44
- package/agent/dist/db/push-subscriptions.d.ts.map +0 -1
- package/agent/dist/db/push-subscriptions.js +0 -98
- package/agent/dist/db/push-subscriptions.js.map +0 -1
- package/agent/dist/editor.d.ts +0 -18
- package/agent/dist/editor.d.ts.map +0 -1
- package/agent/dist/editor.js +0 -222
- package/agent/dist/editor.js.map +0 -1
- package/agent/dist/environments.d.ts +0 -59
- package/agent/dist/environments.d.ts.map +0 -1
- package/agent/dist/environments.js +0 -229
- package/agent/dist/environments.js.map +0 -1
- package/agent/dist/git.d.ts +0 -39
- package/agent/dist/git.d.ts.map +0 -1
- package/agent/dist/git.js +0 -436
- package/agent/dist/git.js.map +0 -1
- package/agent/dist/heartbeat-monitor.d.ts +0 -24
- package/agent/dist/heartbeat-monitor.d.ts.map +0 -1
- package/agent/dist/heartbeat-monitor.js +0 -105
- package/agent/dist/heartbeat-monitor.js.map +0 -1
- package/agent/dist/push/sender.d.ts +0 -26
- package/agent/dist/push/sender.d.ts.map +0 -1
- package/agent/dist/push/sender.js +0 -122
- package/agent/dist/push/sender.js.map +0 -1
- package/agent/dist/push/vapid.d.ts +0 -25
- package/agent/dist/push/vapid.d.ts.map +0 -1
- package/agent/dist/push/vapid.js +0 -81
- package/agent/dist/push/vapid.js.map +0 -1
- package/agent/dist/routes/editor.d.ts +0 -9
- package/agent/dist/routes/editor.d.ts.map +0 -1
- package/agent/dist/routes/editor.js +0 -63
- package/agent/dist/routes/editor.js.map +0 -1
- package/agent/dist/routes/environments.d.ts +0 -6
- package/agent/dist/routes/environments.d.ts.map +0 -1
- package/agent/dist/routes/environments.js +0 -94
- package/agent/dist/routes/environments.js.map +0 -1
- package/agent/dist/routes/files.d.ts +0 -6
- package/agent/dist/routes/files.d.ts.map +0 -1
- package/agent/dist/routes/files.js +0 -84
- package/agent/dist/routes/files.js.map +0 -1
- package/agent/dist/routes/heartbeat.d.ts +0 -10
- package/agent/dist/routes/heartbeat.d.ts.map +0 -1
- package/agent/dist/routes/heartbeat.js +0 -124
- package/agent/dist/routes/heartbeat.js.map +0 -1
- package/agent/dist/routes/notification.d.ts +0 -9
- package/agent/dist/routes/notification.d.ts.map +0 -1
- package/agent/dist/routes/notification.js +0 -172
- package/agent/dist/routes/notification.js.map +0 -1
- package/agent/dist/routes/push.d.ts +0 -7
- package/agent/dist/routes/push.d.ts.map +0 -1
- package/agent/dist/routes/push.js +0 -98
- package/agent/dist/routes/push.js.map +0 -1
- package/agent/dist/routes/stop.d.ts +0 -9
- package/agent/dist/routes/stop.d.ts.map +0 -1
- package/agent/dist/routes/stop.js +0 -121
- package/agent/dist/routes/stop.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/stream-json.d.ts +0 -109
- package/agent/dist/services/stream-json.d.ts.map +0 -1
- package/agent/dist/services/stream-json.js +0 -335
- package/agent/dist/services/stream-json.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/setup-statusline.d.ts +0 -10
- package/agent/dist/setup-statusline.d.ts.map +0 -1
- package/agent/dist/setup-statusline.js +0 -234
- package/agent/dist/setup-statusline.js.map +0 -1
package/agent/dist/server.js
CHANGED
|
@@ -6,19 +6,12 @@ import express from 'express';
|
|
|
6
6
|
import cors from 'cors';
|
|
7
7
|
import { WebSocketServer } from 'ws';
|
|
8
8
|
import { createServer as createHttpServer } from 'http';
|
|
9
|
-
import
|
|
10
|
-
import { initEditor, shutdownAllEditors } from './editor.js';
|
|
11
|
-
import { initDatabase, closeDatabase, migrateEnvironmentsFromJson } from './db/index.js';
|
|
12
|
-
import { ensureDefaultEnvironment } from './db/environments.js';
|
|
9
|
+
import { initDatabase, closeDatabase } from './db/index.js';
|
|
13
10
|
import * as sessionsDb from './db/sessions.js';
|
|
14
|
-
import { config } from './config.js';
|
|
15
11
|
// Routes
|
|
16
|
-
import { createProjectRoutes,
|
|
17
|
-
|
|
18
|
-
import {
|
|
19
|
-
// StatusLine setup and heartbeat monitor
|
|
20
|
-
import { ensureStatusLineConfigured } from './setup-statusline.js';
|
|
21
|
-
import { startHeartbeatMonitor, stopHeartbeatMonitor } from './heartbeat-monitor.js';
|
|
12
|
+
import { createProjectRoutes, createSessionRoutes, createAttentionRoutes, createPairRoutes, } from './routes/index.js';
|
|
13
|
+
// Hook setup
|
|
14
|
+
import { ensureHooksConfigured } from './setup-hooks.js';
|
|
22
15
|
// Status and WebSocket
|
|
23
16
|
import { tmuxSessionStatus, cleanupStatusMaps, getActiveTmuxSessions } from './status.js';
|
|
24
17
|
import { handleTerminalConnection, handleStatusConnection } from './websocket-handlers.js';
|
|
@@ -28,13 +21,8 @@ export async function createServer() {
|
|
|
28
21
|
app.use(express.json());
|
|
29
22
|
const server = createHttpServer(app);
|
|
30
23
|
const wss = new WebSocketServer({ noServer: true });
|
|
31
|
-
// Initialize editor manager
|
|
32
|
-
const typedConfig = config;
|
|
33
|
-
await initEditor(typedConfig.editor, config.projects.basePath);
|
|
34
24
|
// Initialize SQLite database
|
|
35
|
-
|
|
36
|
-
migrateEnvironmentsFromJson(db);
|
|
37
|
-
ensureDefaultEnvironment();
|
|
25
|
+
initDatabase();
|
|
38
26
|
// Reconcile sessions with active tmux sessions
|
|
39
27
|
const activeTmuxSessions = getActiveTmuxSessions();
|
|
40
28
|
sessionsDb.reconcileWithTmux(activeTmuxSessions);
|
|
@@ -44,55 +32,19 @@ export async function createServer() {
|
|
|
44
32
|
tmuxSessionStatus.set(session.name, sessionsDb.toHookStatus(session));
|
|
45
33
|
}
|
|
46
34
|
console.log(`[DB] Loaded ${dbSessions.length} sessions from database`);
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
editorProxy.on('error', (err, _req, res) => {
|
|
50
|
-
console.error('[Editor Proxy] HTTP Error:', err.message);
|
|
51
|
-
if (res && 'writeHead' in res) {
|
|
52
|
-
res.writeHead(502, { 'Content-Type': 'application/json' });
|
|
53
|
-
res.end(JSON.stringify({ error: 'Editor proxy error', message: err.message }));
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
// Configure statusLine for Claude Code integration
|
|
57
|
-
ensureStatusLineConfigured();
|
|
58
|
-
// Initialize Web Push for notifications
|
|
59
|
-
initWebPush();
|
|
60
|
-
// Start heartbeat timeout monitor
|
|
61
|
-
startHeartbeatMonitor();
|
|
35
|
+
// Configure attention hook for Claude Code integration
|
|
36
|
+
ensureHooksConfigured();
|
|
62
37
|
// Health check endpoint for container orchestration
|
|
63
38
|
app.get('/health', (_req, res) => {
|
|
64
39
|
res.json({ status: 'ok', timestamp: Date.now() });
|
|
65
40
|
});
|
|
66
41
|
// Mount API routes
|
|
67
42
|
app.use('/api', createProjectRoutes());
|
|
68
|
-
app.use('/api/environments', createEnvironmentRoutes());
|
|
69
43
|
app.use('/api/sessions', createSessionRoutes());
|
|
70
|
-
app.use('/api/
|
|
71
|
-
|
|
72
|
-
app.use('/
|
|
73
|
-
app.use('/api/
|
|
74
|
-
app.use('/api/files', createFilesRoutes());
|
|
75
|
-
app.use('/api/push', createPushRoutes());
|
|
76
|
-
// Editor proxy middleware
|
|
77
|
-
app.use('/editor/:project', async (req, res) => {
|
|
78
|
-
const { project } = req.params;
|
|
79
|
-
if (!isProjectAllowed(project)) {
|
|
80
|
-
return res.status(403).json({ error: 'Project not allowed' });
|
|
81
|
-
}
|
|
82
|
-
if (!typedConfig.editor?.enabled) {
|
|
83
|
-
return res.status(400).json({ error: 'Editor is disabled in config' });
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
const editor = await getOrStartEditor(project);
|
|
87
|
-
updateEditorActivity(project);
|
|
88
|
-
req.url = req.url.replace(`/editor/${project}`, '') || '/';
|
|
89
|
-
editorProxy.web(req, res, { target: `http://127.0.0.1:${editor.port}` });
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
console.error('[Editor Proxy] Failed:', err);
|
|
93
|
-
res.status(502).json({ error: 'Failed to proxy to editor' });
|
|
94
|
-
}
|
|
95
|
-
});
|
|
44
|
+
app.use('/api/attention', createAttentionRoutes());
|
|
45
|
+
// Mount pairing routes (both at /pair and /api/pair for flexibility)
|
|
46
|
+
app.use('/pair', createPairRoutes());
|
|
47
|
+
app.use('/api/pair', createPairRoutes());
|
|
96
48
|
// Handle WebSocket upgrades
|
|
97
49
|
server.on('upgrade', async (req, socket, head) => {
|
|
98
50
|
const url = new URL(req.url, `http://${req.headers.host}`);
|
|
@@ -108,26 +60,6 @@ export async function createServer() {
|
|
|
108
60
|
});
|
|
109
61
|
return;
|
|
110
62
|
}
|
|
111
|
-
if (url.pathname.startsWith('/editor/')) {
|
|
112
|
-
const pathParts = url.pathname.split('/');
|
|
113
|
-
const project = pathParts[2];
|
|
114
|
-
if (!project || !isProjectAllowed(project) || !typedConfig.editor?.enabled) {
|
|
115
|
-
socket.destroy();
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
try {
|
|
119
|
-
const editor = await getOrStartEditor(project);
|
|
120
|
-
updateEditorActivity(project);
|
|
121
|
-
const rewrittenPath = url.pathname.replace(`/editor/${project}`, '') || '/';
|
|
122
|
-
req.url = rewrittenPath + url.search;
|
|
123
|
-
editorProxy.ws(req, socket, head, { target: `http://127.0.0.1:${editor.port}` });
|
|
124
|
-
}
|
|
125
|
-
catch (err) {
|
|
126
|
-
console.error('[Editor WS] Failed:', err);
|
|
127
|
-
socket.destroy();
|
|
128
|
-
}
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
63
|
socket.destroy();
|
|
132
64
|
});
|
|
133
65
|
// Periodic cleanup
|
|
@@ -135,8 +67,6 @@ export async function createServer() {
|
|
|
135
67
|
// Graceful shutdown
|
|
136
68
|
const shutdown = () => {
|
|
137
69
|
console.log('[Server] Shutting down...');
|
|
138
|
-
stopHeartbeatMonitor();
|
|
139
|
-
shutdownAllEditors();
|
|
140
70
|
closeDatabase();
|
|
141
71
|
server.close();
|
|
142
72
|
process.exit(0);
|
package/agent/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAE/C,SAAS;AACT,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,aAAa;AACb,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,uBAAuB;AACvB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpD,6BAA6B;IAC7B,YAAY,EAAE,CAAC;IAEf,+CAA+C;IAC/C,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD,UAAU,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAEjD,uCAAuC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;QACjC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,MAAM,yBAAyB,CAAC,CAAC;IAEvE,uDAAuD;IACvD,qBAAqB,EAAE,CAAC;IAExB,oDAAoD;IACpD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAEnD,qEAAqE;IACrE,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACrC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEzC,4BAA4B;IAC5B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAI,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC1C,wBAAwB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC1C,sBAAsB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,mBAAmB;IACnB,WAAW,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE/C,oBAAoB;IACpB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,aAAa,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type { WorktreeInfo } from './worktree.js';
|
|
3
|
-
export { ExecutionManager, executionManager } from './execution.js';
|
|
4
|
-
export type { SessionInfo, CapacityInfo } from './execution.js';
|
|
5
|
-
export { CleanupService, initCleanupService, getCleanupService } from './cleanup.js';
|
|
6
|
-
export type { CleanupConfig, CleanupResult } from './cleanup.js';
|
|
1
|
+
export {};
|
|
7
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// Services index -
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export {
|
|
1
|
+
// Services index - simplified (no worktree, execution, or cleanup services)
|
|
2
|
+
// These services were removed as part of the simplification effort
|
|
3
|
+
// The agent now focuses on simple terminal access without git worktree isolation
|
|
4
|
+
export {};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,mEAAmE;AACnE,iFAAiF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-configuration for Claude Code attention hook integration.
|
|
3
|
+
* Creates the attention script and configures Claude settings at agent startup.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Ensure attention hook is configured for 247 integration.
|
|
7
|
+
* Called at agent startup.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureHooksConfigured(): void;
|
|
10
|
+
//# sourceMappingURL=setup-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-hooks.d.ts","sourceRoot":"","sources":["../src/setup-hooks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAQ5C"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-configuration for Claude Code attention hook integration.
|
|
3
|
+
* Creates the attention script and configures Claude settings at agent startup.
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, chmodSync } from 'fs';
|
|
6
|
+
import { homedir } from 'os';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
const CLAUDE_SETTINGS_PATH = join(homedir(), '.claude', 'settings.json');
|
|
9
|
+
const HOOK_DIR = join(homedir(), '.247');
|
|
10
|
+
const ATTENTION_SCRIPT_PATH = join(HOOK_DIR, 'attention.sh');
|
|
11
|
+
// Patterns to detect old hooks that need cleanup
|
|
12
|
+
const OLD_HOOK_PATTERNS = [
|
|
13
|
+
/statusline\.sh/,
|
|
14
|
+
/notification\.sh/,
|
|
15
|
+
/stop\.sh/,
|
|
16
|
+
/notify-status\.sh/,
|
|
17
|
+
/packages\/hooks/,
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* Ensure attention hook is configured for 247 integration.
|
|
21
|
+
* Called at agent startup.
|
|
22
|
+
*/
|
|
23
|
+
export function ensureHooksConfigured() {
|
|
24
|
+
try {
|
|
25
|
+
ensureAttentionScript();
|
|
26
|
+
ensureClaudeSettings();
|
|
27
|
+
console.log('[Setup] Attention hook configured successfully');
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
console.error('[Setup] Failed to configure hooks:', err);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Create the attention.sh script that forwards Claude Code notifications to the agent.
|
|
35
|
+
* This is called when Claude needs user attention (permission, input, etc.)
|
|
36
|
+
*/
|
|
37
|
+
function ensureAttentionScript() {
|
|
38
|
+
if (!existsSync(HOOK_DIR)) {
|
|
39
|
+
mkdirSync(HOOK_DIR, { recursive: true });
|
|
40
|
+
}
|
|
41
|
+
const script = `#!/bin/bash
|
|
42
|
+
# 247 Attention Hook - forwards Claude Code attention events to agent
|
|
43
|
+
# Auto-generated by 247 agent - do not edit manually
|
|
44
|
+
|
|
45
|
+
INPUT=$(cat)
|
|
46
|
+
TMUX_SESSION="\${CLAUDE_TMUX_SESSION:-}"
|
|
47
|
+
|
|
48
|
+
# Only forward if we're in a tmux session managed by 247
|
|
49
|
+
[ -z "$TMUX_SESSION" ] && exit 0
|
|
50
|
+
|
|
51
|
+
# Forward JSON to agent (add tmux_session field)
|
|
52
|
+
echo "$INPUT" | jq --arg ts "$TMUX_SESSION" '. + {tmux_session: $ts}' | \\
|
|
53
|
+
curl -s -X POST "http://localhost:4678/api/attention" \\
|
|
54
|
+
-H "Content-Type: application/json" \\
|
|
55
|
+
-d @- > /dev/null 2>&1 &
|
|
56
|
+
|
|
57
|
+
exit 0
|
|
58
|
+
`;
|
|
59
|
+
writeFileSync(ATTENTION_SCRIPT_PATH, script);
|
|
60
|
+
chmodSync(ATTENTION_SCRIPT_PATH, 0o755);
|
|
61
|
+
console.log(`[Setup] Created attention script at ${ATTENTION_SCRIPT_PATH}`);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Remove old 247 hooks from settings.json.
|
|
65
|
+
*/
|
|
66
|
+
function cleanupOldHooks(settings) {
|
|
67
|
+
let cleaned = false;
|
|
68
|
+
// Clean statusLine if it's one of ours
|
|
69
|
+
const statusLine = settings.statusLine;
|
|
70
|
+
if (statusLine?.command && OLD_HOOK_PATTERNS.some((p) => p.test(statusLine.command || ''))) {
|
|
71
|
+
delete settings.statusLine;
|
|
72
|
+
console.log('[Setup] Removed old statusLine from settings.json');
|
|
73
|
+
cleaned = true;
|
|
74
|
+
}
|
|
75
|
+
// Clean old hooks
|
|
76
|
+
const hooks = settings.hooks;
|
|
77
|
+
if (hooks) {
|
|
78
|
+
for (const hookType of ['Notification', 'Stop', 'PreToolUse', 'PostToolUse']) {
|
|
79
|
+
const hookList = hooks[hookType];
|
|
80
|
+
if (hookList) {
|
|
81
|
+
const filtered = hookList.filter((h) => !h.hooks?.some((hook) => OLD_HOOK_PATTERNS.some((p) => p.test(hook.command || ''))));
|
|
82
|
+
if (filtered.length !== hookList.length) {
|
|
83
|
+
if (filtered.length === 0) {
|
|
84
|
+
delete hooks[hookType];
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
hooks[hookType] = filtered;
|
|
88
|
+
}
|
|
89
|
+
console.log(`[Setup] Cleaned old ${hookType} hooks from settings.json`);
|
|
90
|
+
cleaned = true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Remove hooks object if empty
|
|
95
|
+
if (Object.keys(hooks).length === 0) {
|
|
96
|
+
delete settings.hooks;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return cleaned;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Configure Claude settings.json to use our attention hook.
|
|
103
|
+
*/
|
|
104
|
+
function ensureClaudeSettings() {
|
|
105
|
+
const claudeDir = join(homedir(), '.claude');
|
|
106
|
+
// Ensure .claude directory exists
|
|
107
|
+
if (!existsSync(claudeDir)) {
|
|
108
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
109
|
+
}
|
|
110
|
+
// Read existing settings or start fresh
|
|
111
|
+
let settings = {};
|
|
112
|
+
if (existsSync(CLAUDE_SETTINGS_PATH)) {
|
|
113
|
+
try {
|
|
114
|
+
settings = JSON.parse(readFileSync(CLAUDE_SETTINGS_PATH, 'utf-8'));
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
console.warn('[Setup] Could not parse existing settings.json, will create new');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Clean up old hooks if present
|
|
121
|
+
const cleaned = cleanupOldHooks(settings);
|
|
122
|
+
const expectedAttentionCommand = `bash ${ATTENTION_SCRIPT_PATH}`;
|
|
123
|
+
// Check if Notification hook is already configured correctly
|
|
124
|
+
const currentHooks = settings.hooks;
|
|
125
|
+
const notificationHooks = currentHooks?.Notification;
|
|
126
|
+
const attentionConfigured = notificationHooks?.some((h) => h.hooks?.some((hook) => hook.command === expectedAttentionCommand));
|
|
127
|
+
if (attentionConfigured && !cleaned) {
|
|
128
|
+
console.log('[Setup] Attention hook already configured');
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// Configure hooks
|
|
132
|
+
const hooks = (settings.hooks || {});
|
|
133
|
+
// Add our Notification hook (this fires when Claude needs attention)
|
|
134
|
+
if (!attentionConfigured) {
|
|
135
|
+
// Get existing user hooks (preserve them)
|
|
136
|
+
const existingHooks = (hooks.Notification || []);
|
|
137
|
+
// Filter out any old 247 hooks
|
|
138
|
+
const userHooks = existingHooks.filter((h) => !h.hooks?.some((hook) => hook.command?.includes('.247/')));
|
|
139
|
+
hooks.Notification = [
|
|
140
|
+
...userHooks,
|
|
141
|
+
{
|
|
142
|
+
matcher: '*',
|
|
143
|
+
hooks: [
|
|
144
|
+
{
|
|
145
|
+
type: 'command',
|
|
146
|
+
command: expectedAttentionCommand,
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
console.log('[Setup] Configured Notification hook');
|
|
152
|
+
}
|
|
153
|
+
settings.hooks = hooks;
|
|
154
|
+
writeFileSync(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2));
|
|
155
|
+
console.log(`[Setup] Configured Claude settings in ${CLAUDE_SETTINGS_PATH}`);
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=setup-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-hooks.js","sourceRoot":"","sources":["../src/setup-hooks.ts"],"names":[],"mappings":"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"}
|
package/agent/dist/status.d.ts
CHANGED
|
@@ -12,12 +12,6 @@ export interface HookStatus {
|
|
|
12
12
|
lastActivity: number;
|
|
13
13
|
lastStatusChange: number;
|
|
14
14
|
project?: string;
|
|
15
|
-
transcriptPath?: string;
|
|
16
|
-
model?: string;
|
|
17
|
-
costUsd?: number;
|
|
18
|
-
contextUsage?: number;
|
|
19
|
-
linesAdded?: number;
|
|
20
|
-
linesRemoved?: number;
|
|
21
15
|
}
|
|
22
16
|
export declare const tmuxSessionStatus: Map<string, HookStatus>;
|
|
23
17
|
export declare const activeConnections: Map<string, Set<WebSocket>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,aAAa,EAEd,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,aAAa,EAEd,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,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;CAClB;AAGD,eAAO,MAAM,iBAAiB,yBAAgC,CAAC;AAG/D,eAAO,MAAM,iBAAiB,6BAAoC,CAAC;AAGnE,eAAO,MAAM,iBAAiB,gBAAuB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAelE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAYjE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAY1F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAyCxC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,GAAG,CAAC,MAAM,CAAC,CASnD"}
|
package/agent/dist/status.js
CHANGED
|
@@ -6,8 +6,6 @@ import { WebSocket } from 'ws';
|
|
|
6
6
|
import { execSync } from 'child_process';
|
|
7
7
|
import { RETENTION_CONFIG } from './db/index.js';
|
|
8
8
|
import * as sessionsDb from './db/sessions.js';
|
|
9
|
-
import * as historyDb from './db/history.js';
|
|
10
|
-
import { sendPushNotification } from './push/sender.js';
|
|
11
9
|
// Store by tmux session name - single source of truth for status
|
|
12
10
|
export const tmuxSessionStatus = new Map();
|
|
13
11
|
// Track active WebSocket connections per session
|
|
@@ -29,13 +27,6 @@ export function broadcastStatusUpdate(session) {
|
|
|
29
27
|
}
|
|
30
28
|
console.log(`[Status WS] Broadcast status update for ${session.name}: ${session.status} to ${statusSubscribers.size} subscribers`);
|
|
31
29
|
}
|
|
32
|
-
// Send Web Push notification for needs_attention status
|
|
33
|
-
// This reaches users even when browser is closed
|
|
34
|
-
if (session.status === 'needs_attention') {
|
|
35
|
-
sendPushNotification(session).catch((err) => {
|
|
36
|
-
console.error('[Status] Failed to send push notification:', err);
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
30
|
}
|
|
40
31
|
/**
|
|
41
32
|
* Broadcast session removed to all subscribers
|
|
@@ -128,9 +119,8 @@ export function cleanupStatusMaps() {
|
|
|
128
119
|
}
|
|
129
120
|
// Also cleanup SQLite database
|
|
130
121
|
const dbSessionsCleaned = sessionsDb.cleanupStaleSessions(STALE_THRESHOLD, RETENTION_CONFIG.archivedMaxAge);
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
console.log(`[DB Cleanup] Sessions: ${dbSessionsCleaned}, History: ${dbHistoryCleaned}`);
|
|
122
|
+
if (dbSessionsCleaned > 0) {
|
|
123
|
+
console.log(`[DB Cleanup] Sessions: ${dbSessionsCleaned}`);
|
|
134
124
|
}
|
|
135
125
|
}
|
|
136
126
|
/**
|
package/agent/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
package/agent/dist/terminal.d.ts
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get the path to the output file for a spawn session
|
|
3
|
-
*/
|
|
4
|
-
export declare function getSpawnOutputPath(sessionName: string): string;
|
|
5
|
-
/**
|
|
6
|
-
* Read and cleanup spawn output file
|
|
7
|
-
* Returns the content or undefined if file doesn't exist
|
|
8
|
-
*/
|
|
9
|
-
export declare function readAndCleanupSpawnOutput(sessionName: string): string | undefined;
|
|
10
1
|
export interface Terminal {
|
|
11
2
|
write(data: string): void;
|
|
12
3
|
resize(cols: number, rows: number): void;
|
|
@@ -23,8 +14,6 @@ export interface Terminal {
|
|
|
23
14
|
export interface CreateTerminalOptions {
|
|
24
15
|
/** Custom environment variables to inject into the session */
|
|
25
16
|
customEnvVars?: Record<string, string>;
|
|
26
|
-
/** For spawned sessions - run this command directly instead of interactive shell */
|
|
27
|
-
spawnCommand?: string;
|
|
28
17
|
}
|
|
29
18
|
export declare function createTerminal(cwd: string, sessionName: string, options?: CreateTerminalOptions | Record<string, string>): Terminal;
|
|
30
19
|
//# sourceMappingURL=terminal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAaA
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,IAAI,CAAC;IACf,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,iBAAiB,IAAI,OAAO,CAAC;IAC7B,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAC3D,QAAQ,CA+LV"}
|
package/agent/dist/terminal.js
CHANGED
|
@@ -1,37 +1,14 @@
|
|
|
1
1
|
import * as pty from '@homebridge/node-pty-prebuilt-multiarch';
|
|
2
2
|
import { exec, execSync } from 'child_process';
|
|
3
3
|
import { promisify } from 'util';
|
|
4
|
-
import * as fs from 'fs';
|
|
5
|
-
import * as os from 'os';
|
|
6
4
|
import { generateInitScript, writeInitScript, cleanupInitScript, detectUserShell, } from './lib/init-script.js';
|
|
7
5
|
import * as path from 'path';
|
|
8
|
-
/**
|
|
9
|
-
* Get the path to the output file for a spawn session
|
|
10
|
-
*/
|
|
11
|
-
export function getSpawnOutputPath(sessionName) {
|
|
12
|
-
return path.join(os.tmpdir(), `247-spawn-${sessionName}.txt`);
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Read and cleanup spawn output file
|
|
16
|
-
* Returns the content or undefined if file doesn't exist
|
|
17
|
-
*/
|
|
18
|
-
export function readAndCleanupSpawnOutput(sessionName) {
|
|
19
|
-
const outputPath = getSpawnOutputPath(sessionName);
|
|
20
|
-
try {
|
|
21
|
-
const content = fs.readFileSync(outputPath, 'utf-8');
|
|
22
|
-
fs.unlinkSync(outputPath); // Cleanup
|
|
23
|
-
return content;
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
return undefined;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
6
|
const execAsync = promisify(exec);
|
|
30
7
|
export function createTerminal(cwd, sessionName, options = {}) {
|
|
31
8
|
// Support both old signature (customEnvVars object) and new options object
|
|
32
|
-
const
|
|
33
|
-
? options
|
|
34
|
-
:
|
|
9
|
+
const customEnvVars = 'customEnvVars' in options
|
|
10
|
+
? (options.customEnvVars ?? {})
|
|
11
|
+
: options;
|
|
35
12
|
// Check if session already exists before spawning
|
|
36
13
|
let existingSession = false;
|
|
37
14
|
try {
|
|
@@ -56,29 +33,6 @@ export function createTerminal(cwd, sessionName, options = {}) {
|
|
|
56
33
|
if (existingSession) {
|
|
57
34
|
tmuxArgs = ['attach-session', '-t', sessionName];
|
|
58
35
|
}
|
|
59
|
-
else if (spawnCommand) {
|
|
60
|
-
// Spawn mode: run command directly without init script (for claude -p)
|
|
61
|
-
console.log(`[Terminal] Spawn mode: running command directly`);
|
|
62
|
-
// Build environment variables for tmux -e flags
|
|
63
|
-
const envFlags = [
|
|
64
|
-
'-e',
|
|
65
|
-
`CLAUDE_TMUX_SESSION=${sessionName}`,
|
|
66
|
-
'-e',
|
|
67
|
-
`TERM=xterm-256color`,
|
|
68
|
-
];
|
|
69
|
-
// Add custom env vars
|
|
70
|
-
for (const [key, value] of Object.entries(customEnvVars)) {
|
|
71
|
-
if (value && value.trim() !== '') {
|
|
72
|
-
envFlags.push('-e', `${key}=${value}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Wrap command with tee to capture output to file
|
|
76
|
-
// Use PIPESTATUS to preserve the exit code from the actual command
|
|
77
|
-
const outputPath = getSpawnOutputPath(sessionName);
|
|
78
|
-
const wrappedCommand = `bash -c '${spawnCommand.replace(/'/g, "'\\''")} 2>&1 | tee "${outputPath}"; exit \${PIPESTATUS[0]}'`;
|
|
79
|
-
// Run command with output capture - file will be read in onExit handler
|
|
80
|
-
tmuxArgs = ['new-session', '-s', sessionName, '-c', cwd, ...envFlags, wrappedCommand];
|
|
81
|
-
}
|
|
82
36
|
else {
|
|
83
37
|
// Extract project name from cwd (last directory component)
|
|
84
38
|
const projectName = path.basename(cwd) || 'unknown';
|
|
@@ -148,8 +102,8 @@ export function createTerminal(cwd, sessionName, options = {}) {
|
|
|
148
102
|
console.log(`[Terminal] Shell exited: code=${exitCode}, signal=${signal}, session='${sessionName}'`);
|
|
149
103
|
});
|
|
150
104
|
// Track terminal readiness state for onReady callback
|
|
151
|
-
// Existing sessions
|
|
152
|
-
let isReady = existingSession
|
|
105
|
+
// Existing sessions are ready immediately
|
|
106
|
+
let isReady = existingSession;
|
|
153
107
|
const readyCallbacks = [];
|
|
154
108
|
const fireReadyCallbacks = () => {
|
|
155
109
|
console.log(`[Terminal] fireReadyCallbacks: firing ${readyCallbacks.length} callbacks for '${sessionName}'`);
|
|
@@ -158,15 +112,7 @@ export function createTerminal(cwd, sessionName, options = {}) {
|
|
|
158
112
|
readyCallbacks.length = 0; // Clear the array
|
|
159
113
|
};
|
|
160
114
|
// Handle session initialization and readiness
|
|
161
|
-
if (
|
|
162
|
-
// Spawn mode: command runs directly, ready immediately
|
|
163
|
-
console.log(`[Terminal] Spawn session '${sessionName}' ready (direct command)`);
|
|
164
|
-
// Enable mouse for tmux
|
|
165
|
-
setTimeout(() => {
|
|
166
|
-
exec(`tmux set-option -t "${sessionName}" mouse on`);
|
|
167
|
-
}, 100);
|
|
168
|
-
}
|
|
169
|
-
else if (!existingSession) {
|
|
115
|
+
if (!existingSession) {
|
|
170
116
|
// For new sessions, the init script handles env vars and tmux config
|
|
171
117
|
// Fire ready callbacks once shell is likely initialized
|
|
172
118
|
setTimeout(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,yCAAyC,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket-handlers.d.ts","sourceRoot":"","sources":["../src/websocket-handlers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"websocket-handlers.d.ts","sourceRoot":"","sources":["../src/websocket-handlers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAkC/B;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,IAAI,CAgMtE;AAsDD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAqGrE"}
|