@cluesmith/codev 2.0.3 → 2.0.7
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/dashboard/dist/assets/index-BblS3DWL.js +135 -0
- package/dashboard/dist/assets/index-BblS3DWL.js.map +1 -0
- package/dashboard/dist/assets/index-Cr9PyjqX.css +32 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +54 -61
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts +5 -5
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +37 -20
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +19 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -1
- package/dist/agent-farm/commands/attach.js +169 -29
- package/dist/agent-farm/commands/attach.js.map +1 -1
- package/dist/agent-farm/commands/cleanup.d.ts +12 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +108 -7
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +22 -2
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +97 -178
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.d.ts +3 -9
- package/dist/agent-farm/commands/spawn-roles.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-roles.js +14 -53
- package/dist/agent-farm/commands/spawn-roles.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts +11 -18
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +35 -22
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/commands/spawn.d.ts +8 -6
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +207 -89
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +2 -6
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +5 -35
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +2 -6
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.d.ts +2 -9
- package/dist/agent-farm/commands/tower-cloud.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower-cloud.js +12 -47
- package/dist/agent-farm/commands/tower-cloud.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +6 -23
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +52 -2
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +1 -1
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +1 -1
- package/dist/agent-farm/lib/cloud-config.d.ts +1 -0
- package/dist/agent-farm/lib/cloud-config.d.ts.map +1 -1
- package/dist/agent-farm/lib/cloud-config.js +2 -2
- package/dist/agent-farm/lib/cloud-config.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +65 -6
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -1
- package/dist/agent-farm/lib/tower-client.js +57 -2
- package/dist/agent-farm/lib/tower-client.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts +157 -0
- package/dist/agent-farm/servers/overview.d.ts.map +1 -0
- package/dist/agent-farm/servers/overview.js +625 -0
- package/dist/agent-farm/servers/overview.js.map +1 -0
- package/dist/agent-farm/servers/tower-instances.d.ts +1 -3
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +12 -14
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-messages.d.ts +87 -0
- package/dist/agent-farm/servers/tower-messages.d.ts.map +1 -0
- package/dist/agent-farm/servers/tower-messages.js +202 -0
- package/dist/agent-farm/servers/tower-messages.js.map +1 -0
- package/dist/agent-farm/servers/tower-routes.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-routes.js +182 -34
- package/dist/agent-farm/servers/tower-routes.js.map +1 -1
- package/dist/agent-farm/servers/tower-server.js +30 -6
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts +9 -3
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +129 -84
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-tunnel.js +3 -19
- package/dist/agent-farm/servers/tower-tunnel.js.map +1 -1
- package/dist/agent-farm/servers/tower-types.d.ts +0 -2
- package/dist/agent-farm/servers/tower-types.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-websocket.js +27 -5
- package/dist/agent-farm/servers/tower-websocket.js.map +1 -1
- package/dist/agent-farm/types.d.ts +4 -5
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/agent-names.d.ts +85 -0
- package/dist/agent-farm/utils/agent-names.d.ts.map +1 -0
- package/dist/agent-farm/utils/agent-names.js +140 -0
- package/dist/agent-farm/utils/agent-names.js.map +1 -0
- package/dist/agent-farm/utils/display.d.ts +8 -0
- package/dist/agent-farm/utils/display.d.ts.map +1 -0
- package/dist/agent-farm/utils/display.js +26 -0
- package/dist/agent-farm/utils/display.js.map +1 -0
- package/dist/agent-farm/utils/message-format.d.ts +17 -0
- package/dist/agent-farm/utils/message-format.d.ts.map +1 -0
- package/dist/agent-farm/utils/message-format.js +41 -0
- package/dist/agent-farm/utils/message-format.js.map +1 -0
- package/dist/agent-farm/utils/notifications.d.ts.map +1 -1
- package/dist/agent-farm/utils/notifications.js +7 -16
- package/dist/agent-farm/utils/notifications.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +4 -0
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +20 -0
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/shell.d.ts +5 -0
- package/dist/agent-farm/utils/shell.d.ts.map +1 -1
- package/dist/agent-farm/utils/shell.js +15 -11
- package/dist/agent-farm/utils/shell.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +46 -15
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +1 -13
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +34 -9
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +617 -263
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/consult/metrics.d.ts +90 -0
- package/dist/commands/consult/metrics.d.ts.map +1 -0
- package/dist/commands/consult/metrics.js +203 -0
- package/dist/commands/consult/metrics.js.map +1 -0
- package/dist/commands/consult/stats.d.ts +18 -0
- package/dist/commands/consult/stats.d.ts.map +1 -0
- package/dist/commands/consult/stats.js +150 -0
- package/dist/commands/consult/stats.js.map +1 -0
- package/dist/commands/consult/usage-extractor.d.ts +41 -0
- package/dist/commands/consult/usage-extractor.d.ts.map +1 -0
- package/dist/commands/consult/usage-extractor.js +122 -0
- package/dist/commands/consult/usage-extractor.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +5 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +1 -13
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +13 -12
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +57 -77
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/plan.d.ts.map +1 -1
- package/dist/commands/porch/plan.js +17 -2
- package/dist/commands/porch/plan.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts +10 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +56 -29
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.js +2 -2
- package/dist/commands/porch/state.d.ts +13 -0
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +49 -2
- package/dist/commands/porch/state.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/lib/github.d.ts +82 -0
- package/dist/lib/github.d.ts.map +1 -0
- package/dist/lib/github.js +181 -0
- package/dist/lib/github.js.map +1 -0
- package/dist/lib/scaffold.d.ts +0 -21
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +0 -57
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +16 -0
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +14 -0
- package/dist/terminal/index.js.map +1 -1
- package/dist/terminal/pty-manager.d.ts.map +1 -1
- package/dist/terminal/pty-manager.js +8 -5
- package/dist/terminal/pty-manager.js.map +1 -1
- package/dist/terminal/pty-session.js +4 -4
- package/dist/terminal/pty-session.js.map +1 -1
- package/dist/terminal/session-manager.d.ts +64 -0
- package/dist/terminal/session-manager.d.ts.map +1 -1
- package/dist/terminal/session-manager.js +299 -10
- package/dist/terminal/session-manager.js.map +1 -1
- package/dist/terminal/shellper-client.d.ts +2 -1
- package/dist/terminal/shellper-client.d.ts.map +1 -1
- package/dist/terminal/shellper-client.js +4 -2
- package/dist/terminal/shellper-client.js.map +1 -1
- package/dist/terminal/shellper-main.js +33 -4
- package/dist/terminal/shellper-main.js.map +1 -1
- package/dist/terminal/shellper-process.d.ts +24 -7
- package/dist/terminal/shellper-process.d.ts.map +1 -1
- package/dist/terminal/shellper-process.js +139 -36
- package/dist/terminal/shellper-process.js.map +1 -1
- package/dist/terminal/shellper-protocol.d.ts +1 -0
- package/dist/terminal/shellper-protocol.d.ts.map +1 -1
- package/dist/terminal/shellper-protocol.js.map +1 -1
- package/package.json +4 -1
- package/skeleton/.claude/skills/af/SKILL.md +10 -10
- package/skeleton/.claude/skills/consult/SKILL.md +55 -38
- package/skeleton/.claude/skills/porch/SKILL.md +53 -0
- package/skeleton/DEPENDENCIES.md +2 -2
- package/skeleton/builders.md +8 -19
- package/skeleton/maintain/.gitkeep +1 -1
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/protocol-schema.json +1 -1
- package/skeleton/protocols/bugfix/prompts/pr.md +18 -7
- package/skeleton/protocols/bugfix/protocol.json +1 -1
- package/skeleton/protocols/experiment/protocol.md +17 -17
- package/skeleton/protocols/maintain/consult-types/impl-review.md +72 -0
- package/skeleton/protocols/maintain/consult-types/pr-review.md +72 -0
- package/skeleton/protocols/maintain/prompts/audit.md +2 -2
- package/skeleton/protocols/maintain/prompts/sync.md +1 -1
- package/skeleton/protocols/maintain/prompts/verify.md +1 -1
- package/skeleton/protocols/maintain/protocol.json +4 -4
- package/skeleton/protocols/maintain/protocol.md +11 -12
- package/skeleton/protocols/maintain/templates/maintenance-run.md +2 -2
- package/skeleton/protocols/protocol-schema.json +1 -1
- package/skeleton/protocols/spir/consult-types/impl-review.md +72 -0
- package/skeleton/protocols/spir/consult-types/phase-review.md +72 -0
- package/skeleton/protocols/spir/consult-types/pr-review.md +72 -0
- package/skeleton/protocols/spir/prompts/plan.md +4 -4
- package/skeleton/protocols/spir/prompts/review.md +8 -8
- package/skeleton/protocols/spir/prompts/specify.md +6 -6
- package/skeleton/protocols/spir/protocol.json +16 -16
- package/skeleton/protocols/spir/protocol.md +8 -8
- package/skeleton/protocols/spir/templates/review.md +2 -2
- package/skeleton/protocols/tick/consult-types/impl-review.md +72 -0
- package/skeleton/protocols/tick/consult-types/plan-review.md +59 -0
- package/skeleton/protocols/tick/consult-types/pr-review.md +72 -0
- package/skeleton/protocols/tick/consult-types/spec-review.md +55 -0
- package/skeleton/protocols/tick/protocol.json +2 -7
- package/skeleton/protocols/tick/protocol.md +31 -31
- package/skeleton/resources/commands/agent-farm.md +21 -19
- package/skeleton/resources/commands/codev.md +0 -36
- package/skeleton/resources/commands/consult.md +88 -234
- package/skeleton/resources/commands/overview.md +6 -7
- package/skeleton/resources/spikes.md +3 -3
- package/skeleton/resources/workflow-reference.md +28 -28
- package/skeleton/roles/architect.md +34 -38
- package/skeleton/roles/builder.md +14 -14
- package/skeleton/roles/consultant.md +6 -0
- package/skeleton/templates/AGENTS.md +6 -6
- package/skeleton/templates/CLAUDE.md +6 -6
- package/skeleton/templates/cheatsheet.md +22 -18
- package/skeleton/templates/lifecycle.md +9 -9
- package/skeleton/templates/pr-overview.md +5 -5
- package/templates/open.html +6 -3
- package/templates/tower.html +1 -41
- package/dashboard/dist/assets/index-4n9zpWLY.css +0 -32
- package/dashboard/dist/assets/index-UsH9ixz1.js +0 -136
- package/dashboard/dist/assets/index-UsH9ixz1.js.map +0 -1
- package/dist/agent-farm/commands/consult.d.ts +0 -15
- package/dist/agent-farm/commands/consult.d.ts.map +0 -1
- package/dist/agent-farm/commands/consult.js +0 -39
- package/dist/agent-farm/commands/consult.js.map +0 -1
- package/dist/agent-farm/utils/gate-status.d.ts +0 -16
- package/dist/agent-farm/utils/gate-status.d.ts.map +0 -1
- package/dist/agent-farm/utils/gate-status.js +0 -79
- package/dist/agent-farm/utils/gate-status.js.map +0 -1
- package/skeleton/templates/projectlist-archive.md +0 -21
- package/skeleton/templates/projectlist.md +0 -147
- /package/skeleton/{consult-types → protocols/bugfix/consult-types}/impl-review.md +0 -0
- /package/skeleton/{consult-types/pr-ready.md → protocols/bugfix/consult-types/pr-review.md} +0 -0
- /package/skeleton/{consult-types → protocols/spir/consult-types}/plan-review.md +0 -0
- /package/skeleton/{consult-types → protocols/spir/consult-types}/spec-review.md +0 -0
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Attach command - attach to a running builder terminal
|
|
3
|
+
*
|
|
4
|
+
* Default mode: connect directly to shellper Unix socket as a terminal client.
|
|
5
|
+
* --browser mode: open Tower dashboard in browser.
|
|
3
6
|
*/
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { homedir } from 'node:os';
|
|
4
10
|
import { logger, fatal } from '../utils/logger.js';
|
|
11
|
+
import { getTypeColor } from '../utils/display.js';
|
|
5
12
|
import { openBrowser } from '../utils/shell.js';
|
|
6
13
|
import { loadState, getBuilder, getBuilders } from '../state.js';
|
|
7
14
|
import { getConfig } from '../utils/config.js';
|
|
8
15
|
import { TowerClient } from '../lib/tower-client.js';
|
|
16
|
+
import { ShellperClient } from '../../terminal/shellper-client.js';
|
|
17
|
+
import { normalizeWorkspacePath } from '../servers/tower-utils.js';
|
|
18
|
+
import { getGlobalDb } from '../db/index.js';
|
|
9
19
|
import chalk from 'chalk';
|
|
10
20
|
/**
|
|
11
21
|
* Find a builder by issue number
|
|
@@ -70,29 +80,155 @@ async function displayBuilderList() {
|
|
|
70
80
|
}
|
|
71
81
|
logger.blank();
|
|
72
82
|
logger.info('Attach with:');
|
|
73
|
-
logger.info(' af attach -p <id> #
|
|
83
|
+
logger.info(' af attach -p <id> # terminal mode (direct)');
|
|
74
84
|
logger.info(' af attach --issue <num> # by issue number');
|
|
75
85
|
logger.info(' af attach -p <id> --browser # open in browser');
|
|
76
86
|
}
|
|
77
87
|
/**
|
|
78
|
-
*
|
|
88
|
+
* Find the shellper socket path for a builder.
|
|
89
|
+
*
|
|
90
|
+
* Discovery order:
|
|
91
|
+
* 1. SQLite terminal_sessions table (workspace-scoped)
|
|
92
|
+
* 2. Fallback: scan ~/.codev/run/shellper-*.sock
|
|
79
93
|
*/
|
|
80
|
-
function
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
export function findShellperSocket(builder) {
|
|
95
|
+
// 1. Try SQLite lookup
|
|
96
|
+
try {
|
|
97
|
+
const db = getGlobalDb();
|
|
98
|
+
const workspacePath = normalizeWorkspacePath(builder.worktree);
|
|
99
|
+
const session = db.prepare(`
|
|
100
|
+
SELECT shellper_socket FROM terminal_sessions
|
|
101
|
+
WHERE workspace_path = ? AND role_id = ? AND shellper_socket IS NOT NULL
|
|
102
|
+
ORDER BY created_at DESC LIMIT 1
|
|
103
|
+
`).get(workspacePath, builder.id);
|
|
104
|
+
if (session?.shellper_socket && fs.existsSync(session.shellper_socket)) {
|
|
105
|
+
return session.shellper_socket;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// SQLite unavailable — fall through to scan
|
|
110
|
+
}
|
|
111
|
+
// 2. Fallback: scan ~/.codev/run/ for matching sockets
|
|
112
|
+
const runDir = path.join(homedir(), '.codev', 'run');
|
|
113
|
+
try {
|
|
114
|
+
if (!fs.existsSync(runDir))
|
|
115
|
+
return null;
|
|
116
|
+
const files = fs.readdirSync(runDir);
|
|
117
|
+
for (const file of files) {
|
|
118
|
+
if (file.startsWith('shellper-') && file.endsWith('.sock')) {
|
|
119
|
+
const sockPath = path.join(runDir, file);
|
|
120
|
+
// Check if socket file exists and is accessible
|
|
121
|
+
try {
|
|
122
|
+
fs.accessSync(sockPath, fs.constants.R_OK | fs.constants.W_OK);
|
|
123
|
+
return sockPath;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
// Directory not readable
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
const DETACH_KEY = 0x1c; // Ctrl-\
|
|
137
|
+
/**
|
|
138
|
+
* Attach to a shellper process in terminal mode.
|
|
139
|
+
*
|
|
140
|
+
* Connects as a 'terminal' client, enters raw mode, pipes stdin/stdout,
|
|
141
|
+
* handles SIGWINCH for resize, and detaches on Ctrl-\.
|
|
142
|
+
*/
|
|
143
|
+
export async function attachTerminal(socketPath) {
|
|
144
|
+
const client = new ShellperClient(socketPath, 'terminal');
|
|
145
|
+
// Track terminal state for cleanup
|
|
146
|
+
let rawModeEnabled = false;
|
|
147
|
+
function restoreTerminal() {
|
|
148
|
+
if (rawModeEnabled && process.stdin.isTTY) {
|
|
149
|
+
process.stdin.setRawMode(false);
|
|
150
|
+
rawModeEnabled = false;
|
|
151
|
+
}
|
|
152
|
+
process.stdin.pause();
|
|
153
|
+
}
|
|
154
|
+
function cleanup() {
|
|
155
|
+
restoreTerminal();
|
|
156
|
+
client.disconnect();
|
|
157
|
+
process.stdout.write('\n');
|
|
158
|
+
}
|
|
159
|
+
// Ensure terminal is restored on process exit
|
|
160
|
+
process.on('exit', restoreTerminal);
|
|
161
|
+
try {
|
|
162
|
+
const welcome = await client.connect();
|
|
163
|
+
logger.info(`Attached to shellper (PID ${welcome.pid}, ${welcome.cols}x${welcome.rows})`);
|
|
164
|
+
logger.info('Detach with Ctrl-\\');
|
|
165
|
+
logger.blank();
|
|
166
|
+
// Write replay buffer to stdout
|
|
167
|
+
const replay = await client.waitForReplay(500);
|
|
168
|
+
if (replay.length > 0) {
|
|
169
|
+
process.stdout.write(replay);
|
|
170
|
+
}
|
|
171
|
+
// Enter raw mode
|
|
172
|
+
if (process.stdin.isTTY) {
|
|
173
|
+
process.stdin.setRawMode(true);
|
|
174
|
+
rawModeEnabled = true;
|
|
175
|
+
}
|
|
176
|
+
process.stdin.resume();
|
|
177
|
+
// Pipe PTY output to stdout
|
|
178
|
+
client.on('data', (buf) => {
|
|
179
|
+
process.stdout.write(buf);
|
|
180
|
+
});
|
|
181
|
+
// Handle PTY exit
|
|
182
|
+
client.on('exit', () => {
|
|
183
|
+
cleanup();
|
|
184
|
+
process.removeListener('exit', restoreTerminal);
|
|
185
|
+
logger.info('Session ended.');
|
|
186
|
+
process.exit(0);
|
|
187
|
+
});
|
|
188
|
+
// Handle connection close
|
|
189
|
+
client.on('close', () => {
|
|
190
|
+
cleanup();
|
|
191
|
+
process.removeListener('exit', restoreTerminal);
|
|
192
|
+
logger.info('Connection closed.');
|
|
193
|
+
process.exit(0);
|
|
194
|
+
});
|
|
195
|
+
// Handle connection error
|
|
196
|
+
client.on('error', (err) => {
|
|
197
|
+
cleanup();
|
|
198
|
+
process.removeListener('exit', restoreTerminal);
|
|
199
|
+
logger.error(`Connection error: ${err.message}`);
|
|
200
|
+
process.exit(1);
|
|
201
|
+
});
|
|
202
|
+
// Pipe stdin to shellper as DATA frames
|
|
203
|
+
process.stdin.on('data', (chunk) => {
|
|
204
|
+
// Check for detach key (Ctrl-\)
|
|
205
|
+
if (chunk.length === 1 && chunk[0] === DETACH_KEY) {
|
|
206
|
+
cleanup();
|
|
207
|
+
process.removeListener('exit', restoreTerminal);
|
|
208
|
+
logger.info('Detached.');
|
|
209
|
+
process.exit(0);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
client.write(chunk);
|
|
213
|
+
});
|
|
214
|
+
// Send RESIZE on terminal size change
|
|
215
|
+
const onResize = () => {
|
|
216
|
+
if (process.stdout.columns && process.stdout.rows) {
|
|
217
|
+
client.resize(process.stdout.columns, process.stdout.rows);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
process.stdout.on('resize', onResize);
|
|
221
|
+
// Send initial resize to match local terminal
|
|
222
|
+
onResize();
|
|
223
|
+
// Keep the process alive — stdin in raw mode keeps the event loop running
|
|
224
|
+
await new Promise(() => {
|
|
225
|
+
// Never resolves — process exits via cleanup paths above
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
cleanup();
|
|
230
|
+
process.removeListener('exit', restoreTerminal);
|
|
231
|
+
throw err;
|
|
96
232
|
}
|
|
97
233
|
}
|
|
98
234
|
/**
|
|
@@ -122,23 +258,27 @@ export async function attach(options) {
|
|
|
122
258
|
fatal('No builder specified. Use --project (-p) or --issue (-i).');
|
|
123
259
|
return; // TypeScript doesn't know fatal() never returns
|
|
124
260
|
}
|
|
125
|
-
//
|
|
126
|
-
const config = getConfig();
|
|
127
|
-
const client = new TowerClient();
|
|
128
|
-
const url = client.getWorkspaceUrl(config.workspaceRoot);
|
|
261
|
+
// --browser: open Tower dashboard
|
|
129
262
|
if (options.browser) {
|
|
263
|
+
const config = getConfig();
|
|
264
|
+
const towerClient = new TowerClient();
|
|
265
|
+
const url = towerClient.getWorkspaceUrl(config.workspaceRoot);
|
|
130
266
|
logger.info(`Opening Tower dashboard at ${url}...`);
|
|
131
267
|
await openBrowser(url);
|
|
132
268
|
logger.success('Opened Tower dashboard in browser');
|
|
133
269
|
return;
|
|
134
270
|
}
|
|
135
|
-
// Default:
|
|
136
|
-
|
|
137
|
-
|
|
271
|
+
// Default: terminal attach mode
|
|
272
|
+
const socketPath = findShellperSocket(builder);
|
|
273
|
+
if (!socketPath) {
|
|
274
|
+
fatal(`No shellper socket found for builder ${builder.id}. Is the builder running?`);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
await attachTerminal(socketPath);
|
|
279
|
+
}
|
|
280
|
+
catch (err) {
|
|
281
|
+
fatal(`Failed to attach to builder ${builder.id}: ${err.message}`);
|
|
138
282
|
}
|
|
139
|
-
logger.info(`Builder ${builder.id} terminal is available in the Tower dashboard.`);
|
|
140
|
-
logger.info(`Opening ${url}...`);
|
|
141
|
-
await openBrowser(url);
|
|
142
|
-
logger.success('Opened Tower dashboard in browser');
|
|
143
283
|
}
|
|
144
284
|
//# sourceMappingURL=attach.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/attach.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/attach.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;GAEG;AACH,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,EAAU;IACjC,wBAAwB;IACxB,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB;IAC/B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAEhC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClC,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAErD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,CAAC,GAAG,CAAC;YACT,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB,UAAU;SACX,EAAE,MAAM,CAAC,CAAC;IACb,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5B,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAClE,CAAC;AAGD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,uBAAuB;IACvB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;;;KAI1B,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,CAA2D,CAAC;QAE5F,IAAI,OAAO,EAAE,eAAe,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACvE,OAAO,OAAO,CAAC,eAAe,CAAC;QACjC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;IAED,uDAAuD;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,gDAAgD;gBAChD,IAAI,CAAC;oBACH,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC/D,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,yBAAyB;IAC3B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,SAAS;AAElC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACrD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAE1D,mCAAmC;IACnC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,SAAS,eAAe;QACtB,IAAI,cAAc,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,cAAc,GAAG,KAAK,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,SAAS,OAAO;QACd,eAAe,EAAE,CAAC;QAClB,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAEpC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1F,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,gCAAgC;QAChC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC/B,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAEvB,4BAA4B;QAC5B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,kBAAkB;QAClB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACrB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAChC,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,wCAAwC;QACxC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,gCAAgC;YAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;gBAClD,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,sCAAsC;QACtC,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEtC,8CAA8C;QAC9C,QAAQ,EAAE,CAAC;QAEX,0EAA0E;QAC1E,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE;YAC3B,yDAAyD;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAChD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,kDAAkD;IAClD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,kBAAkB,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,OAAO,GAAmB,IAAI,CAAC;IAEnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,+BAA+B,OAAO,CAAC,KAAK,4CAA4C,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,YAAY,OAAO,CAAC,OAAO,uDAAuD,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACnE,OAAO,CAAC,gDAAgD;IAC1D,CAAC;IAED,kCAAkC;IAClC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC,CAAC;QACpD,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,gCAAgC;IAChC,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,KAAK,CAAC,wCAAwC,OAAO,CAAC,EAAE,2BAA2B,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,+BAA+B,OAAO,CAAC,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Cleanup command - removes builder worktrees and branches
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Find and kill shellper processes associated with a worktree path (Bugfix #389).
|
|
6
|
+
*
|
|
7
|
+
* When Tower is not running (or the terminal was already removed from Tower's
|
|
8
|
+
* registry), the Tower API kill path silently fails, leaving shellper processes
|
|
9
|
+
* orphaned. This function searches `ps` output for shellper-main.js processes
|
|
10
|
+
* whose JSON config contains the worktree path as `cwd`, and kills them directly.
|
|
11
|
+
*
|
|
12
|
+
* Uses process group kill (-pid) to also terminate PTY children (Claude, bash).
|
|
13
|
+
*/
|
|
14
|
+
export declare function killShellperProcesses(worktreePath: string): Promise<number>;
|
|
4
15
|
export interface CleanupOptions {
|
|
5
16
|
project?: string;
|
|
6
17
|
issue?: number;
|
|
18
|
+
task?: string;
|
|
7
19
|
force?: boolean;
|
|
8
20
|
}
|
|
9
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsCH;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0CjF;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAuDD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DpE"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { existsSync, readdirSync } from 'node:fs';
|
|
5
5
|
import { rm } from 'node:fs/promises';
|
|
6
6
|
import { join } from 'node:path';
|
|
7
|
+
import { execFile } from 'node:child_process';
|
|
7
8
|
import { getConfig } from '../utils/index.js';
|
|
8
9
|
import { logger, fatal } from '../utils/logger.js';
|
|
9
10
|
import { run } from '../utils/shell.js';
|
|
@@ -31,6 +32,64 @@ async function cleanupPorchState(projectId, config) {
|
|
|
31
32
|
logger.warn(`Warning: Failed to cleanup porch state: ${error}`);
|
|
32
33
|
}
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Find and kill shellper processes associated with a worktree path (Bugfix #389).
|
|
37
|
+
*
|
|
38
|
+
* When Tower is not running (or the terminal was already removed from Tower's
|
|
39
|
+
* registry), the Tower API kill path silently fails, leaving shellper processes
|
|
40
|
+
* orphaned. This function searches `ps` output for shellper-main.js processes
|
|
41
|
+
* whose JSON config contains the worktree path as `cwd`, and kills them directly.
|
|
42
|
+
*
|
|
43
|
+
* Uses process group kill (-pid) to also terminate PTY children (Claude, bash).
|
|
44
|
+
*/
|
|
45
|
+
export async function killShellperProcesses(worktreePath) {
|
|
46
|
+
let killed = 0;
|
|
47
|
+
try {
|
|
48
|
+
const stdout = await new Promise((resolve, reject) => {
|
|
49
|
+
// -ww prevents arg truncation on macOS/Linux
|
|
50
|
+
execFile('ps', ['-ww', '-eo', 'pid,args'], (err, out) => {
|
|
51
|
+
if (err) {
|
|
52
|
+
reject(err);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
resolve(out);
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
// Match shellper-main.js processes whose JSON config cwd is this worktree.
|
|
59
|
+
// The shellper is spawned with JSON as argv[2]: {"cwd":"/path/to/worktree",...}
|
|
60
|
+
const cwdPattern = `"cwd":"${worktreePath}"`;
|
|
61
|
+
for (const line of stdout.split('\n')) {
|
|
62
|
+
if (!line.includes('shellper-main.js'))
|
|
63
|
+
continue;
|
|
64
|
+
if (!line.includes(cwdPattern))
|
|
65
|
+
continue;
|
|
66
|
+
const pid = parseInt(line.trim(), 10);
|
|
67
|
+
if (isNaN(pid) || pid <= 0 || pid === process.pid)
|
|
68
|
+
continue;
|
|
69
|
+
try {
|
|
70
|
+
// Kill process group (shellper + its PTY child) to prevent orphaned
|
|
71
|
+
// PTY processes. Shellper is spawned with detached:true, so it's a
|
|
72
|
+
// process group leader.
|
|
73
|
+
process.kill(-pid, 'SIGTERM');
|
|
74
|
+
killed++;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// Process group kill failed — try individual PID
|
|
78
|
+
try {
|
|
79
|
+
process.kill(pid, 'SIGTERM');
|
|
80
|
+
killed++;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Process already dead
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// ps not available or failed — non-fatal
|
|
90
|
+
}
|
|
91
|
+
return killed;
|
|
92
|
+
}
|
|
34
93
|
/**
|
|
35
94
|
* Check if a worktree has uncommitted changes
|
|
36
95
|
* Returns: dirty (has real changes), scaffoldOnly (only has .builder-* files)
|
|
@@ -99,9 +158,33 @@ export async function cleanup(options) {
|
|
|
99
158
|
fatal(`Bugfix builder not found for issue #${options.issue}`);
|
|
100
159
|
}
|
|
101
160
|
}
|
|
161
|
+
else if (options.task) {
|
|
162
|
+
// Find task builder by worktree name (e.g., "task-bEPd")
|
|
163
|
+
const taskName = options.task;
|
|
164
|
+
// Task builder IDs are "builder-task-<lowercased shortId>" (via buildAgentName)
|
|
165
|
+
// Extract the shortId from the worktree name (e.g., "task-bEPd" → "bEPd" → "bepd")
|
|
166
|
+
const shortId = taskName.startsWith('task-') ? taskName.slice(5) : taskName;
|
|
167
|
+
const normalizedId = `builder-task-${shortId.toLowerCase()}`;
|
|
168
|
+
builder = state.builders.find((b) => b.id === normalizedId);
|
|
169
|
+
if (!builder) {
|
|
170
|
+
// Fallback: check by worktree path containing the task name
|
|
171
|
+
builder = state.builders.find((b) => b.worktree.endsWith(`/${taskName}`) || b.worktree.endsWith(`/${taskName}/`));
|
|
172
|
+
}
|
|
173
|
+
if (!builder) {
|
|
174
|
+
fatal(`Task builder not found for: ${taskName}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
102
177
|
else if (options.project) {
|
|
103
178
|
const projectId = options.project;
|
|
104
179
|
builder = state.builders.find((b) => b.id === projectId);
|
|
180
|
+
if (!builder) {
|
|
181
|
+
// Try normalized task ID (e.g., "task-bEPd" → "builder-task-bepd")
|
|
182
|
+
if (projectId.startsWith('task-')) {
|
|
183
|
+
const shortId = projectId.slice(5);
|
|
184
|
+
const normalizedId = `builder-task-${shortId.toLowerCase()}`;
|
|
185
|
+
builder = state.builders.find((b) => b.id === normalizedId);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
105
188
|
if (!builder) {
|
|
106
189
|
// Try to find by name pattern
|
|
107
190
|
const byName = state.builders.find((b) => b.name.includes(projectId));
|
|
@@ -112,7 +195,7 @@ export async function cleanup(options) {
|
|
|
112
195
|
}
|
|
113
196
|
}
|
|
114
197
|
else {
|
|
115
|
-
fatal('Must specify either --project or --
|
|
198
|
+
fatal('Must specify either --project, --issue, or --task');
|
|
116
199
|
}
|
|
117
200
|
await cleanupBuilder(builder, options.force, options.issue);
|
|
118
201
|
}
|
|
@@ -120,7 +203,11 @@ async function cleanupBuilder(builder, force, issueNumber) {
|
|
|
120
203
|
const config = getConfig();
|
|
121
204
|
const isShellMode = builder.type === 'shell';
|
|
122
205
|
const isBugfixMode = builder.type === 'bugfix';
|
|
123
|
-
|
|
206
|
+
const isTaskMode = builder.type === 'task';
|
|
207
|
+
// Ephemeral builders (bugfix, task) get full cleanup: remove worktree + delete branches
|
|
208
|
+
const isEphemeral = isBugfixMode || isTaskMode;
|
|
209
|
+
const typeLabel = isShellMode ? 'Shell' : isBugfixMode ? 'Bugfix Builder' : isTaskMode ? 'Task Builder' : 'Builder';
|
|
210
|
+
logger.header(`Cleaning up ${typeLabel} ${builder.id}`);
|
|
124
211
|
logger.kv('Name', builder.name);
|
|
125
212
|
if (!isShellMode) {
|
|
126
213
|
logger.kv('Worktree', builder.worktree);
|
|
@@ -146,8 +233,17 @@ async function cleanupBuilder(builder, force, issueNumber) {
|
|
|
146
233
|
// Tower may not be running
|
|
147
234
|
}
|
|
148
235
|
}
|
|
149
|
-
//
|
|
150
|
-
if
|
|
236
|
+
// Bugfix #389: Kill shellper processes directly by worktree path.
|
|
237
|
+
// The Tower API kill may fail if Tower isn't running, the terminal was already
|
|
238
|
+
// removed, or Tower was restarted. This catches any surviving shellper processes.
|
|
239
|
+
if (!isShellMode && builder.worktree) {
|
|
240
|
+
const shellpersKilled = await killShellperProcesses(builder.worktree);
|
|
241
|
+
if (shellpersKilled > 0) {
|
|
242
|
+
logger.info(`Killed ${shellpersKilled} shellper process(es)`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// For ephemeral builders (bugfix, task): actually remove worktree and delete branches
|
|
246
|
+
if (isEphemeral && !isShellMode) {
|
|
151
247
|
// Remove worktree
|
|
152
248
|
if (existsSync(builder.worktree)) {
|
|
153
249
|
logger.info('Removing worktree...');
|
|
@@ -170,10 +266,15 @@ async function cleanupBuilder(builder, force, issueNumber) {
|
|
|
170
266
|
// Branch may not exist locally
|
|
171
267
|
}
|
|
172
268
|
}
|
|
173
|
-
// Delete remote branch
|
|
269
|
+
// Delete remote branch
|
|
270
|
+
// Task builders typically don't push to remote, so skip PR verification for them
|
|
174
271
|
if (builder.branch) {
|
|
175
|
-
if (
|
|
176
|
-
//
|
|
272
|
+
if (isTaskMode) {
|
|
273
|
+
// Task builders are ephemeral — always delete remote branch if it exists
|
|
274
|
+
await deleteRemoteBranch(builder.branch, config);
|
|
275
|
+
}
|
|
276
|
+
else if (!force) {
|
|
277
|
+
// Bugfix: verify PR is merged first unless --force
|
|
177
278
|
try {
|
|
178
279
|
const prStatus = await run(`gh pr list --head "${builder.branch}" --state merged --json number --limit 1`, { cwd: config.workspaceRoot });
|
|
179
280
|
const mergedPRs = JSON.parse(prStatus.stdout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/agent-farm/commands/cleanup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Send command - send
|
|
2
|
+
* Send command - send messages to agents via Tower POST /api/send endpoint.
|
|
3
|
+
* Spec 0110: Messaging Infrastructure — Phase 4
|
|
4
|
+
*
|
|
5
|
+
* Delegates address resolution, message formatting, and terminal writing
|
|
6
|
+
* to the Tower server. The CLI handles file reading, workspace detection,
|
|
7
|
+
* and argument parsing.
|
|
3
8
|
*/
|
|
4
9
|
import type { SendOptions } from '../types.js';
|
|
5
10
|
/**
|
|
6
|
-
*
|
|
11
|
+
* Detect workspace root from CWD by walking up to find .git or af-config.json.
|
|
12
|
+
* Builder worktrees are at .builders/<id>/ which is inside the workspace root.
|
|
13
|
+
*/
|
|
14
|
+
export declare function detectWorkspaceRoot(): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Detect the current builder ID from worktree path.
|
|
17
|
+
* Looks up the canonical builder ID from state.db by matching worktree path.
|
|
18
|
+
* Falls back to the worktree directory name if no match in state.db.
|
|
19
|
+
* Returns null if not in a builder worktree.
|
|
20
|
+
*/
|
|
21
|
+
export declare function detectCurrentBuilderId(): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Main send command handler.
|
|
24
|
+
*
|
|
25
|
+
* Delegates to Tower's POST /api/send for address resolution, formatting,
|
|
26
|
+
* and terminal writing. Supports [project:]agent addressing.
|
|
7
27
|
*/
|
|
8
28
|
export declare function send(options: SendOptions): Promise<void>;
|
|
9
29
|
//# sourceMappingURL=send.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/send.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/commands/send.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO/C;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAanD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAkBtD;AAsED;;;;;GAKG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiF9D"}
|