@proletariat/cli 0.3.109 → 0.3.111
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/dist/commands/orchestrator/attach.d.ts +2 -0
- package/dist/commands/orchestrator/attach.js +80 -118
- package/dist/commands/orchestrator/attach.js.map +1 -1
- package/dist/commands/orchestrator/start.js +21 -0
- package/dist/commands/orchestrator/start.js.map +1 -1
- package/dist/commands/orchestrator/status.d.ts +3 -0
- package/dist/commands/orchestrator/status.js +104 -130
- package/dist/commands/orchestrator/status.js.map +1 -1
- package/dist/commands/orchestrator/stop.d.ts +2 -0
- package/dist/commands/orchestrator/stop.js +105 -107
- package/dist/commands/orchestrator/stop.js.map +1 -1
- package/dist/commands/session/attach.d.ts +2 -6
- package/dist/commands/session/attach.js +68 -97
- package/dist/commands/session/attach.js.map +1 -1
- package/dist/commands/session/list.d.ts +4 -1
- package/dist/commands/session/list.js +160 -326
- package/dist/commands/session/list.js.map +1 -1
- package/dist/commands/work/start.js +104 -49
- package/dist/commands/work/start.js.map +1 -1
- package/dist/lib/execution/session-utils.d.ts +4 -1
- package/dist/lib/execution/session-utils.js +3 -0
- package/dist/lib/execution/session-utils.js.map +1 -1
- package/dist/lib/machine-db-mirror.d.ts +64 -0
- package/dist/lib/machine-db-mirror.js +82 -0
- package/dist/lib/machine-db-mirror.js.map +1 -0
- package/dist/lib/machine-db.d.ts +11 -0
- package/dist/lib/machine-db.js +17 -0
- package/dist/lib/machine-db.js.map +1 -1
- package/dist/lib/orchestrate/actions.d.ts +8 -0
- package/dist/lib/orchestrate/actions.js +166 -94
- package/dist/lib/orchestrate/actions.js.map +1 -1
- package/dist/lib/orchestrate/prompt-chain.d.ts +181 -0
- package/dist/lib/orchestrate/prompt-chain.js +323 -0
- package/dist/lib/orchestrate/prompt-chain.js.map +1 -0
- package/dist/lib/prompt-command.d.ts +61 -1
- package/dist/lib/prompt-command.js +167 -1
- package/dist/lib/prompt-command.js.map +1 -1
- package/dist/lib/prompt-json.d.ts +129 -2
- package/dist/lib/prompt-json.js +157 -0
- package/dist/lib/prompt-json.js.map +1 -1
- package/dist/lib/runtime-command.d.ts +3 -1
- package/dist/lib/runtime-command.js +4 -2
- package/dist/lib/runtime-command.js.map +1 -1
- package/dist/lib/session/renderer.d.ts +121 -0
- package/dist/lib/session/renderer.js +547 -0
- package/dist/lib/session/renderer.js.map +1 -0
- package/dist/lib/update-check.d.ts +64 -7
- package/dist/lib/update-check.js +164 -20
- package/dist/lib/update-check.js.map +1 -1
- package/oclif.manifest.json +1173 -1062
- package/package.json +1 -1
|
@@ -1,30 +1,42 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
2
|
import { styles } from '../../lib/styles.js';
|
|
3
|
-
import { getWorkspaceInfo } from '../../lib/agents/commands.js';
|
|
4
|
-
import { openWorkspaceDatabase } from '../../lib/database/index.js';
|
|
5
|
-
import { ExecutionStorage } from '../../lib/execution/index.js';
|
|
6
|
-
import { parseSessionName, getHostTmuxSessionNames, getContainerTmuxSessionMap, flattenContainerSessions, findContainerSessionsByPrefix, discoverSessionId, isContainerEnvironment, isSessionAlive, checkContainerLiveness, } from '../../lib/execution/session-utils.js';
|
|
7
3
|
import { PromptCommand } from '../../lib/prompt-command.js';
|
|
8
4
|
import { machineOutputFlags } from '../../lib/pmo/index.js';
|
|
9
5
|
import { shouldOutputJson } from '../../lib/prompt-json.js';
|
|
10
6
|
import { visualPadEnd } from '../../lib/string-utils.js';
|
|
11
|
-
import {
|
|
7
|
+
import { collectAllSessions, groupSessionsByHQ, bucketElsewhereByHq, formatRelativeAge, tildifyPath, } from '../../lib/session/renderer.js';
|
|
8
|
+
import { findHQRoot } from '../../lib/workspace.js';
|
|
12
9
|
export default class SessionList extends PromptCommand {
|
|
13
|
-
static description = 'List active agent sessions
|
|
10
|
+
static description = 'List active agent sessions across the entire machine, grouped by current HQ vs other locations.';
|
|
14
11
|
static examples = [
|
|
15
12
|
'<%= config.bin %> <%= command.id %>',
|
|
13
|
+
'<%= config.bin %> <%= command.id %> --here',
|
|
14
|
+
'<%= config.bin %> <%= command.id %> --hq ~/Projects/backend-hq',
|
|
15
|
+
'<%= config.bin %> <%= command.id %> --role orchestrator',
|
|
16
16
|
'<%= config.bin %> <%= command.id %> --all',
|
|
17
|
-
'<%= config.bin %> <%= command.id %> --orphans',
|
|
18
17
|
];
|
|
19
18
|
static flags = {
|
|
20
19
|
...machineOutputFlags,
|
|
20
|
+
here: Flags.boolean({
|
|
21
|
+
description: 'Filter to sessions in the current HQ only',
|
|
22
|
+
default: false,
|
|
23
|
+
exclusive: ['hq'],
|
|
24
|
+
}),
|
|
25
|
+
hq: Flags.string({
|
|
26
|
+
description: 'Filter to sessions in a specific HQ path',
|
|
27
|
+
exclusive: ['here'],
|
|
28
|
+
}),
|
|
29
|
+
role: Flags.string({
|
|
30
|
+
description: 'Filter by session role',
|
|
31
|
+
options: ['orchestrator', 'worker', 'headless'],
|
|
32
|
+
}),
|
|
21
33
|
all: Flags.boolean({
|
|
22
34
|
char: 'a',
|
|
23
|
-
description: '
|
|
35
|
+
description: 'Include stopped/completed sessions (default excludes them)',
|
|
24
36
|
default: false,
|
|
25
37
|
}),
|
|
26
|
-
|
|
27
|
-
description: '
|
|
38
|
+
grouped: Flags.boolean({
|
|
39
|
+
description: 'In --json mode, emit the grouped { sessions, grouped } object instead of the flat array',
|
|
28
40
|
default: false,
|
|
29
41
|
}),
|
|
30
42
|
};
|
|
@@ -34,334 +46,156 @@ export default class SessionList extends PromptCommand {
|
|
|
34
46
|
async run() {
|
|
35
47
|
const { flags } = await this.parse(SessionList);
|
|
36
48
|
const jsonMode = shouldOutputJson(flags);
|
|
37
|
-
//
|
|
38
|
-
let
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
catch {
|
|
47
|
-
// Not in a workspace, but we can still discover tmux sessions
|
|
48
|
-
hasWorkspace = false;
|
|
49
|
-
}
|
|
50
|
-
// =========================================================================
|
|
51
|
-
// Machine DB: cross-repo execution tracking (works from anywhere)
|
|
52
|
-
// =========================================================================
|
|
53
|
-
let machineDb = null;
|
|
54
|
-
try {
|
|
55
|
-
machineDb = new MachineDB();
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
// Machine DB not available — non-fatal
|
|
59
|
-
}
|
|
60
|
-
try {
|
|
61
|
-
// =========================================================================
|
|
62
|
-
// DB-first: Query all executions from the database (source of truth)
|
|
63
|
-
// =========================================================================
|
|
64
|
-
const runningExecutions = executionStorage?.listExecutions({ status: 'running' }) || [];
|
|
65
|
-
const startingExecutions = executionStorage?.listExecutions({ status: 'starting' }) || [];
|
|
66
|
-
const activeExecutions = [...runningExecutions, ...startingExecutions];
|
|
67
|
-
// Refresh execution state so dead sessions aren't reported as running.
|
|
68
|
-
executionStorage?.cleanupStaleExecutions();
|
|
69
|
-
// Also pull ticketless executions from machine DB
|
|
70
|
-
const machineActiveExecutions = machineDb?.getActiveExecutions() || [];
|
|
71
|
-
// Track machine execution IDs already covered by workspace DB to avoid duplicates
|
|
72
|
-
const workspaceSessionIds = new Set(activeExecutions.map(e => e.sessionId).filter(Boolean));
|
|
73
|
-
// Get tmux sessions for liveness verification
|
|
74
|
-
const hostTmuxSessions = getHostTmuxSessionNames();
|
|
75
|
-
const containerTmuxSessions = getContainerTmuxSessionMap();
|
|
76
|
-
// Track which tmux sessions we've matched to DB records (for orphan detection)
|
|
77
|
-
const matchedHostSessions = new Set();
|
|
78
|
-
const matchedContainerSessions = new Set();
|
|
79
|
-
// Build verified session list from DB records
|
|
80
|
-
const sessions = [];
|
|
81
|
-
for (const exec of activeExecutions) {
|
|
82
|
-
const isContainer = isContainerEnvironment(exec.environment);
|
|
83
|
-
let exists = false;
|
|
84
|
-
let containerId;
|
|
85
|
-
// Use shared discoverSessionId for NULL sessionId cases (same path as poke)
|
|
86
|
-
let actualSessionId = discoverSessionId(exec, hostTmuxSessions, containerTmuxSessions) || exec.sessionId;
|
|
87
|
-
if (isContainer && exec.containerId) {
|
|
88
|
-
// =====================================================================
|
|
89
|
-
// Container-based execution: check Docker container liveness first,
|
|
90
|
-
// then verify tmux session inside the container
|
|
91
|
-
// =====================================================================
|
|
92
|
-
containerId = exec.containerId;
|
|
93
|
-
const containerStatus = checkContainerLiveness(exec.containerId);
|
|
94
|
-
if (containerStatus === 'running') {
|
|
95
|
-
if (actualSessionId) {
|
|
96
|
-
// Verify the discovered/known session is actually alive
|
|
97
|
-
const containerSessions = findContainerSessionsByPrefix(containerTmuxSessions, exec.containerId);
|
|
98
|
-
exists = containerSessions.includes(actualSessionId);
|
|
99
|
-
}
|
|
100
|
-
// Even if tmux session isn't found, the container is running —
|
|
101
|
-
// the agent may be alive without a tmux session (direct mode)
|
|
102
|
-
if (!exists && containerStatus === 'running') {
|
|
103
|
-
exists = true;
|
|
104
|
-
actualSessionId = actualSessionId || `container:${exec.containerId.substring(0, 12)}`;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// If container is not running, exists remains false (stale)
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
// =====================================================================
|
|
111
|
-
// Host/sandbox execution: verify tmux session exists on host
|
|
112
|
-
// =====================================================================
|
|
113
|
-
if (actualSessionId) {
|
|
114
|
-
exists = hostTmuxSessions.includes(actualSessionId);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// Track matched sessions to detect orphans later
|
|
118
|
-
if (exists && actualSessionId) {
|
|
119
|
-
if (isContainer && containerId) {
|
|
120
|
-
matchedContainerSessions.add(`${containerId}:${actualSessionId}`);
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
matchedHostSessions.add(actualSessionId);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Skip entries with no session ID at all (truly has no session)
|
|
127
|
-
if (!actualSessionId)
|
|
128
|
-
continue;
|
|
129
|
-
// Only include active sessions by default.
|
|
130
|
-
// Use --all to include stale DB records (exists=false).
|
|
131
|
-
if (exists || flags.all) {
|
|
132
|
-
sessions.push({
|
|
133
|
-
sessionId: actualSessionId,
|
|
134
|
-
ticketId: exec.ticketId,
|
|
135
|
-
agentName: exec.agentName,
|
|
136
|
-
status: exists ? exec.status : 'stale',
|
|
137
|
-
environment: isContainer ? 'container' : 'host',
|
|
138
|
-
containerId,
|
|
139
|
-
exists,
|
|
140
|
-
source: 'db',
|
|
141
|
-
lastHeartbeat: exec.lastHeartbeat,
|
|
142
|
-
lifecycleState: exec.lifecycleState,
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
// PRLT-1077: Self-healing recovery for background-mode spawns.
|
|
147
|
-
// Uses shared isSessionAlive() — same check as session poke's recovery path.
|
|
148
|
-
if (executionStorage) {
|
|
149
|
-
const stoppedExecutions = executionStorage.listExecutions({ status: 'stopped' });
|
|
150
|
-
for (const exec of stoppedExecutions) {
|
|
151
|
-
const isContainer = isContainerEnvironment(exec.environment);
|
|
152
|
-
if (!exec.sessionId)
|
|
153
|
-
continue;
|
|
154
|
-
const containerId = isContainer ? exec.containerId : undefined;
|
|
155
|
-
if (isSessionAlive(exec)) {
|
|
156
|
-
// Recover: update status back to 'running'
|
|
157
|
-
executionStorage.updateStatus(exec.id, 'running');
|
|
158
|
-
// Track as matched so it's not reported as orphan
|
|
159
|
-
if (isContainer && containerId) {
|
|
160
|
-
matchedContainerSessions.add(`${containerId}:${exec.sessionId}`);
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
matchedHostSessions.add(exec.sessionId);
|
|
164
|
-
}
|
|
165
|
-
sessions.push({
|
|
166
|
-
sessionId: exec.sessionId,
|
|
167
|
-
ticketId: exec.ticketId,
|
|
168
|
-
agentName: exec.agentName,
|
|
169
|
-
status: 'running',
|
|
170
|
-
environment: isContainer ? 'container' : 'host',
|
|
171
|
-
containerId,
|
|
172
|
-
exists: true,
|
|
173
|
-
source: 'db',
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
// =========================================================================
|
|
179
|
-
// Machine DB: Add ticketless executions from machine.db
|
|
180
|
-
// These are cross-repo and work without a workspace.
|
|
181
|
-
// =========================================================================
|
|
182
|
-
for (const mExec of machineActiveExecutions) {
|
|
183
|
-
// Skip if already covered by workspace DB (dedupe by session ID)
|
|
184
|
-
if (mExec.sessionId && workspaceSessionIds.has(mExec.sessionId))
|
|
185
|
-
continue;
|
|
186
|
-
const isContainer = mExec.environment === 'docker' || mExec.environment === 'devcontainer';
|
|
187
|
-
let exists = false;
|
|
188
|
-
let actualSessionId = mExec.sessionId;
|
|
189
|
-
if (isContainer && mExec.containerId) {
|
|
190
|
-
const containerStatus = checkContainerLiveness(mExec.containerId);
|
|
191
|
-
if (containerStatus === 'running') {
|
|
192
|
-
if (mExec.sessionId) {
|
|
193
|
-
const containerSessions = findContainerSessionsByPrefix(containerTmuxSessions, mExec.containerId);
|
|
194
|
-
exists = containerSessions.includes(mExec.sessionId);
|
|
195
|
-
}
|
|
196
|
-
if (!exists) {
|
|
197
|
-
exists = true;
|
|
198
|
-
actualSessionId = actualSessionId || `container:${mExec.containerId.substring(0, 12)}`;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
else if (mExec.sessionId) {
|
|
203
|
-
exists = hostTmuxSessions.includes(mExec.sessionId);
|
|
204
|
-
}
|
|
205
|
-
if (exists && actualSessionId) {
|
|
206
|
-
if (isContainer && mExec.containerId) {
|
|
207
|
-
matchedContainerSessions.add(`${mExec.containerId}:${actualSessionId}`);
|
|
49
|
+
// Resolve HQ filter
|
|
50
|
+
let hqPathFilter;
|
|
51
|
+
if (flags.here) {
|
|
52
|
+
const cwdHq = findHQRoot(process.cwd());
|
|
53
|
+
if (!cwdHq) {
|
|
54
|
+
if (jsonMode) {
|
|
55
|
+
// Backward-compat: emit a flat (empty) array unless --grouped was requested.
|
|
56
|
+
if (flags.grouped) {
|
|
57
|
+
this.log(JSON.stringify({ sessions: [], grouped: { current_hq: null, here: [], elsewhere: [] } }, null, 2));
|
|
208
58
|
}
|
|
209
59
|
else {
|
|
210
|
-
|
|
60
|
+
this.log('[]');
|
|
211
61
|
}
|
|
62
|
+
return;
|
|
212
63
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
sessionId: actualSessionId,
|
|
218
|
-
ticketId: mExec.ticketId || mExec.id,
|
|
219
|
-
agentName: mExec.agentName,
|
|
220
|
-
status: exists ? mExec.status : 'stale',
|
|
221
|
-
environment: isContainer ? 'container' : 'host',
|
|
222
|
-
containerId: mExec.containerId,
|
|
223
|
-
exists,
|
|
224
|
-
source: 'db',
|
|
225
|
-
});
|
|
226
|
-
}
|
|
64
|
+
this.log('');
|
|
65
|
+
this.log(styles.warning('--here requires being inside an HQ workspace.'));
|
|
66
|
+
this.log('');
|
|
67
|
+
return;
|
|
227
68
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
// Container orphan sessions
|
|
254
|
-
for (const { sessionName, containerId } of allContainerSessions) {
|
|
255
|
-
if (matchedContainerSessions.has(`${containerId}:${sessionName}`))
|
|
256
|
-
continue;
|
|
257
|
-
const parsed = parseSessionName(sessionName);
|
|
258
|
-
if (parsed) {
|
|
259
|
-
sessions.push({
|
|
260
|
-
sessionId: sessionName,
|
|
261
|
-
ticketId: parsed.ticketId,
|
|
262
|
-
agentName: parsed.agentName,
|
|
263
|
-
status: 'orphan',
|
|
264
|
-
environment: 'container',
|
|
265
|
-
containerId,
|
|
266
|
-
exists: true,
|
|
267
|
-
source: 'discovered',
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
}
|
|
69
|
+
hqPathFilter = cwdHq;
|
|
70
|
+
}
|
|
71
|
+
else if (flags.hq) {
|
|
72
|
+
hqPathFilter = flags.hq;
|
|
73
|
+
}
|
|
74
|
+
// Always query machine-wide; filters are applied inside collectAllSessions.
|
|
75
|
+
const sessions = collectAllSessions({
|
|
76
|
+
hqPathFilter,
|
|
77
|
+
roleFilter: flags.role,
|
|
78
|
+
includeAll: flags.all,
|
|
79
|
+
});
|
|
80
|
+
const grouped = groupSessionsByHQ(sessions);
|
|
81
|
+
if (jsonMode) {
|
|
82
|
+
// Default shape is a flat array for backward compatibility with
|
|
83
|
+
// existing agents and e2e tests. Pass --grouped to get the new
|
|
84
|
+
// { sessions, grouped: { current_hq, here, elsewhere } } shape.
|
|
85
|
+
if (flags.grouped) {
|
|
86
|
+
this.log(JSON.stringify({
|
|
87
|
+
sessions: sessions.map(toJsonSession),
|
|
88
|
+
grouped: {
|
|
89
|
+
current_hq: grouped.currentHq ? tildifyPath(grouped.currentHq) : null,
|
|
90
|
+
here: grouped.here.map(toJsonSession),
|
|
91
|
+
elsewhere: grouped.elsewhere.map(toJsonSession),
|
|
92
|
+
},
|
|
93
|
+
}, null, 2));
|
|
271
94
|
}
|
|
272
|
-
|
|
273
|
-
this.log(JSON.stringify(sessions, null, 2));
|
|
274
|
-
return;
|
|
95
|
+
else {
|
|
96
|
+
this.log(JSON.stringify(sessions.map(toJsonSession), null, 2));
|
|
275
97
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
// For sessions with died lifecycle state, append warning
|
|
295
|
-
let statusText = session.source === 'discovered' ? `${session.status}*` : session.status;
|
|
296
|
-
if (session.lifecycleState === 'died') {
|
|
297
|
-
statusText = 'died';
|
|
298
|
-
}
|
|
299
|
-
// Truncate long session names to fit column
|
|
300
|
-
const displaySession = session.sessionId.length > 32
|
|
301
|
-
? session.sessionId.substring(0, 29) + '...'
|
|
302
|
-
: session.sessionId;
|
|
303
|
-
this.log(' ' +
|
|
304
|
-
visualPadEnd(displaySession, 34) +
|
|
305
|
-
visualPadEnd(session.ticketId, 12) +
|
|
306
|
-
visualPadEnd(session.agentName, 18) +
|
|
307
|
-
visualPadEnd(typeIcon, 15) +
|
|
308
|
-
statusColor(statusText));
|
|
309
|
-
}
|
|
310
|
-
this.log('');
|
|
311
|
-
this.log('='.repeat(90));
|
|
312
|
-
// Show attach command example
|
|
313
|
-
const firstSession = sessions.find(s => s.exists);
|
|
314
|
-
if (firstSession) {
|
|
315
|
-
this.log(styles.muted('\nCommands:'));
|
|
316
|
-
this.log(styles.muted(` prlt session attach ${firstSession.sessionId} Attach to session`));
|
|
317
|
-
this.log('');
|
|
318
|
-
}
|
|
319
|
-
// Show stale sessions warning
|
|
320
|
-
const staleSessions = sessions.filter(s => !s.exists);
|
|
321
|
-
if (staleSessions.length > 0) {
|
|
322
|
-
this.log(styles.warning(`\n ${staleSessions.length} stale session(s) in DB without live runtime.`));
|
|
323
|
-
this.log(styles.muted(' Run `prlt work stop <work-id>` to clean up.'));
|
|
324
|
-
this.log('');
|
|
325
|
-
}
|
|
326
|
-
// Show died/unresponsive sessions warning
|
|
327
|
-
const diedSessions = sessions.filter(s => s.lifecycleState === 'died');
|
|
328
|
-
if (diedSessions.length > 0) {
|
|
329
|
-
this.log(styles.error(`\n ${diedSessions.length} agent(s) detected as unresponsive (heartbeat timeout).`));
|
|
330
|
-
this.log(styles.muted(' These agents were auto-terminated. Run `prlt session watch --once` for details.'));
|
|
331
|
-
this.log('');
|
|
332
|
-
}
|
|
333
|
-
// Show orphan sessions note (only visible with --orphans flag)
|
|
334
|
-
const orphanSessions = sessions.filter(s => s.source === 'discovered');
|
|
335
|
-
if (orphanSessions.length > 0) {
|
|
336
|
-
this.log(styles.muted(`\n ${orphanSessions.length} orphan session(s) found (marked with *).`));
|
|
337
|
-
this.log(styles.muted(' These are NOT tracked in the DB. Run `prlt session prune` to clean up.'));
|
|
338
|
-
this.log('');
|
|
339
|
-
}
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (sessions.length === 0) {
|
|
101
|
+
this.log('');
|
|
102
|
+
this.log(styles.muted('No active sessions found on this machine.'));
|
|
103
|
+
this.log('');
|
|
104
|
+
this.log(styles.muted('Start work with: prlt work start <ticket-id>'));
|
|
105
|
+
this.log(styles.muted('Or ticketless: prlt work run --prompt "your task"'));
|
|
106
|
+
this.log('');
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
this.log('');
|
|
110
|
+
// Render "Current HQ" section
|
|
111
|
+
if (grouped.currentHq) {
|
|
112
|
+
const label = `Current HQ: ${tildifyPath(grouped.currentHq)} (${grouped.here.length} session${grouped.here.length === 1 ? '' : 's'})`;
|
|
113
|
+
this.log(styles.header(label));
|
|
114
|
+
if (grouped.here.length === 0) {
|
|
115
|
+
this.log(styles.muted(' (none)'));
|
|
340
116
|
}
|
|
341
117
|
else {
|
|
342
|
-
this.log(
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (!flags.orphans) {
|
|
355
|
-
this.log(styles.muted('Use --orphans to check for untracked tmux sessions.'));
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
this.log('');
|
|
118
|
+
renderSessionRows(this.log.bind(this), grouped.here);
|
|
119
|
+
}
|
|
120
|
+
this.log('');
|
|
121
|
+
}
|
|
122
|
+
// Render "Other locations" section
|
|
123
|
+
if (grouped.elsewhere.length > 0) {
|
|
124
|
+
this.log(styles.muted(`Other locations (${grouped.elsewhere.length} session${grouped.elsewhere.length === 1 ? '' : 's'})`));
|
|
125
|
+
const buckets = bucketElsewhereByHq(grouped.elsewhere);
|
|
126
|
+
for (const bucket of buckets) {
|
|
127
|
+
const hqLabel = bucket.hqPath ? tildifyPath(bucket.hqPath) : '(no HQ)';
|
|
128
|
+
this.log(styles.muted(` ${bucket.hqName} — ${hqLabel}`));
|
|
129
|
+
renderSessionRows(this.log.bind(this), bucket.sessions, /* dim */ true);
|
|
359
130
|
}
|
|
131
|
+
this.log('');
|
|
360
132
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
133
|
+
// Stale + died warnings (across all sessions)
|
|
134
|
+
const stale = sessions.filter(s => !s.exists);
|
|
135
|
+
if (stale.length > 0) {
|
|
136
|
+
this.log(styles.warning(` ${stale.length} stale session(s) in DB without live runtime.`));
|
|
137
|
+
this.log(styles.muted(' Run `prlt work stop <work-id>` to clean up.'));
|
|
138
|
+
this.log('');
|
|
139
|
+
}
|
|
140
|
+
const died = sessions.filter(s => s.lifecycleState === 'died');
|
|
141
|
+
if (died.length > 0) {
|
|
142
|
+
this.log(styles.error(` ${died.length} agent(s) detected as unresponsive (heartbeat timeout).`));
|
|
143
|
+
this.log(styles.muted(' These agents were auto-terminated. Run `prlt session watch --once` for details.'));
|
|
144
|
+
this.log('');
|
|
364
145
|
}
|
|
365
146
|
}
|
|
366
147
|
}
|
|
148
|
+
function toJsonSession(s) {
|
|
149
|
+
return {
|
|
150
|
+
id: s.id,
|
|
151
|
+
sessionId: s.sessionId,
|
|
152
|
+
ticketId: s.ticketId,
|
|
153
|
+
agentName: s.agentName,
|
|
154
|
+
role: s.role,
|
|
155
|
+
status: s.status,
|
|
156
|
+
environment: s.environment,
|
|
157
|
+
containerId: s.containerId ?? null,
|
|
158
|
+
exists: s.exists,
|
|
159
|
+
source: s.source,
|
|
160
|
+
hqPath: s.hqPath ?? null,
|
|
161
|
+
hqName: s.hqName ?? null,
|
|
162
|
+
repoPath: s.repoPath ?? null,
|
|
163
|
+
startedAt: s.startedAt?.toISOString() ?? null,
|
|
164
|
+
lastHeartbeat: s.lastHeartbeat?.toISOString() ?? null,
|
|
165
|
+
lifecycleState: s.lifecycleState ?? null,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function renderSessionRows(log, sessions, dim = false) {
|
|
169
|
+
for (const s of sessions) {
|
|
170
|
+
const statusColor = s.status === 'running' || s.status === 'starting'
|
|
171
|
+
? styles.success
|
|
172
|
+
: s.status === 'idle'
|
|
173
|
+
? styles.warning
|
|
174
|
+
: s.status === 'stale' || s.status === 'died' || s.status === 'failed'
|
|
175
|
+
? styles.error
|
|
176
|
+
: styles.muted;
|
|
177
|
+
const displayName = truncateName(s.agentName, 16);
|
|
178
|
+
const ticket = truncateName(s.ticketId, 14);
|
|
179
|
+
const age = formatRelativeAge(s.startedAt);
|
|
180
|
+
const row = ' ○ ' +
|
|
181
|
+
visualPadEnd(displayName, 18) +
|
|
182
|
+
visualPadEnd(ticket, 16) +
|
|
183
|
+
visualPadEnd(statusColor(s.status), 20) +
|
|
184
|
+
styles.muted(age);
|
|
185
|
+
log(dim ? styles.muted(stripColor(row)) : row);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function truncateName(name, max) {
|
|
189
|
+
if (!name)
|
|
190
|
+
return '';
|
|
191
|
+
if (name.length <= max)
|
|
192
|
+
return name;
|
|
193
|
+
return name.slice(0, max - 1) + '…';
|
|
194
|
+
}
|
|
195
|
+
// chalk strings already include ANSI codes; for the dim "elsewhere" rendering
|
|
196
|
+
// we render the row text without inner colors so the dim style applies cleanly.
|
|
197
|
+
function stripColor(s) {
|
|
198
|
+
// eslint-disable-next-line no-control-regex
|
|
199
|
+
return s.replace(/\x1B\[[0-9;]*m/g, '');
|
|
200
|
+
}
|
|
367
201
|
//# sourceMappingURL=list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/session/list.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/session/list.ts"],"names":[],"mappings":"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"}
|