@detergent-software/conductor 3.5.0-dev.5 → 3.5.0-dev.6
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/CHANGELOG.md +8 -0
- package/README.md +2 -2
- package/build/broker.js +9 -3
- package/build/broker.js.map +1 -1
- package/build/daemon.js +2 -0
- package/build/daemon.js.map +1 -1
- package/build/host/worktree-processes.js +389 -0
- package/build/host/worktree-processes.js.map +1 -0
- package/build/manager.js +60 -7
- package/build/manager.js.map +1 -1
- package/build/scheduler.js +25 -6
- package/build/scheduler.js.map +1 -1
- package/build/worktrees.js +9 -3
- package/build/worktrees.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Releases are tagged `conductor-v<version>` and staged on npm by `atk-conductor-release` (`pipelines/release-conductor.yml`), which writes each section below. `scripts/check-changelog.mjs` fails when a tag has no section here.
|
|
4
4
|
|
|
5
|
+
## [3.5.0-dev.6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.5&targetVersion=GTconductor-v3.5.0-dev.6) (2026-10-31)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **conductor:** keep a worktree whose process won't stop (ATK-865) ([0c5ea66](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0c5ea66f8d131b78e77df1de68d49a4f5cb9bf05))
|
|
10
|
+
* **conductor:** stop a worktree's own processes before retiring it (ATK-865) ([c458470](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/c45847025d4d05d7df502e24e0e86c124ba100b6))
|
|
11
|
+
* **conductor:** stop only processes that run from the worktree (ATK-865) ([f6c537d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f6c537d2b57582a041cfac2f3e99bc8f28f85f5a))
|
|
12
|
+
|
|
5
13
|
## [3.5.0-dev.5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTconductor-v3.5.0-dev.4&targetVersion=GTconductor-v3.5.0-dev.5) (2026-10-31)
|
|
6
14
|
|
|
7
15
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -140,7 +140,7 @@ The session manager owns the `claude --bg` sessions it launches, and only those:
|
|
|
140
140
|
- **not merged** (abandoned or closed, or no PR with work in it): it stops and removes the session and frees the ports, and keeps the worktree and its branch, so nothing the PR didn't land is lost. `worker.retired` names it under `kept`, which raises one `failed` inbox item with the path, the branch and the commands that remove them. A PR the project's code host can't read at all counts as not merged;
|
|
141
141
|
- **unread** (the code host didn't answer): it refuses, as a refusal that passes on its own, and the scheduler tries again.
|
|
142
142
|
|
|
143
|
-
A probe's worktree and a `--force` retire's always go. The removal moves the worktree aside, has git forget it, deletes the branch and then the directory with Node, which unlinks pnpm's junctions without following them (`git worktree remove` leaves them on Windows). The delete is asynchronous, so the API goes on answering through a minute of `node_modules`. It works in the repository the worktree's own `.git` names, so a worker launched before the daemon owned clones retires from the checkout its worktree was made in; it removes only a linked worktree that repository lists, never a main checkout. With the directory gone already, it deletes the `worktree-<name>` branch in the project's clone only when none of its commits is unpushed. If the stop fails, nothing is removed. If the stop succeeds (or a fresh listing shows no process to stop) and a later step fails, `worker.retire-partial` says `parked`: the worker is parked with its waits closed: no sweep reads it as stopped unexpectedly, resumes it or compacts it, and the retire is tried again.
|
|
143
|
+
A probe's worktree and a `--force` retire's always go. Before it removes or keeps a worktree, the retire stops the worktree's own processes, the ones its worker left running such as a dev server (`stop processes`, ATK-865): those that run from the worktree (their executable, program or interpreter's script is in it, as for `node <worktree>/node_modules/next/…`; a process that only takes the worktree as an argument, such as a terminal or editor opened there, doesn't), those listening on a port the broker gave it, and their descendants, never the daemon or a process it descends from. The step's note and `stopped` name each PID and command, or say `none`. It lists them with one PowerShell on Windows (`Win32_Process`, `Get-NetTCPConnection`), from `/proc` and `ss` on Linux, and with `ps` and `lsof` on macOS; a process whose working folder alone is in the worktree has no path to match, so a server is found by its `node_modules` path or its port. A process that won't stop marks the step `held` and keeps the worktree, as a session that won't stop does (on macOS and Linux the removal would go through and leave it running orphaned); a removal still refused after the stop (`… is in use`) marks its step `held` with what the OS names still there. Either way the worktree's ports stay assigned, so the broker doesn't hand them out and the next try still finds the process by its port, even once the folder is gone. The removal moves the worktree aside, has git forget it, deletes the branch and then the directory with Node, which unlinks pnpm's junctions without following them (`git worktree remove` leaves them on Windows). The delete is asynchronous, so the API goes on answering through a minute of `node_modules`. It works in the repository the worktree's own `.git` names, so a worker launched before the daemon owned clones retires from the checkout its worktree was made in; it removes only a linked worktree that repository lists, never a main checkout. With the directory gone already, it deletes the `worktree-<name>` branch in the project's clone only when none of its commits is unpushed. If the stop fails, nothing is removed. If the stop succeeds (or a fresh listing shows no process to stop) and a later step fails, `worker.retire-partial` says `parked`: the worker is parked with its waits closed: no sweep reads it as stopped unexpectedly, resumes it or compacts it, and the retire is tried again.
|
|
144
144
|
- **restarts:** a launch the daemon was stopped in adopts its session if one was started, and otherwise fails and removes its clean worktree.
|
|
145
145
|
- **attach:** a parked worker is resumed with no event text, so it wakes idle and keeps running when its tab closes. The daemon sees the tab by its `claude attach <session>` client process (Windows PowerShell's `Win32_Process` on Windows, `ps` elsewhere), on each attach and, while a worker is attached, at most every 30 s of the sweep (ATK-520). An attach of a running worker that has a client already (its attach's tab, its launch's, or one opened by hand in another terminal) opens no second tab: it prints `already attached to <name> (its tab is open)`, logs `worker.attached` with `tabOpen: true`, and marks the worker attached if it wasn't. An attached worker isn't parked until it registers a new wait, until its turn is over and two scans in a row found no client after one since the attach had found it (`worker.detached`, `reason: tab closed`), or until its turn has been over `sessions.idleMinutes` (`worker.detached`). A client counts by the worker's short id, session id or name, or any id it had since the attach. A tab whose client no scan found (a tab that failed to open, a worker woken outside the daemon, a `ps` that shows only the client's process title) is never taken as closed, so only the idle release ends that attach, which also delivers a wait that resolved while the worker was attached. The scan is proven on Windows; on macOS and Linux it depends on `ps` showing the client's arguments. A wait that resolves after the attach, on a worker whose transcript shows no turn since then, is delivered at once: the worker is detached (`reason: wait resolved`), parked, which closes its tab, and resumed with the event. A worker someone woke outside the daemon counts as attached since its stop, so the turn that woke it counts. One that took a turn since the attach (or has no transcript to tell), or whose wait resolved before the attach, keeps it until the idle release, logs `worker.resume-held` (`reason: attached`) once, and `conduct status` shows it as `idle, holding resolved waits for the attached session`.
|
|
146
146
|
- **park failures:** a session whose process outlives `claude stop` by 30 s logs one `worker.park-failed` per spell, which raises a `stall` in the inbox (see Inbox), and the park is tried again every 5 minutes.
|
|
@@ -459,7 +459,7 @@ The scheduler is the work loop's tick, in the daemon (design note, section 8). E
|
|
|
459
459
|
- **Release waits:** a profile's `tracker.releaseWait: { "label": "waits-release", "shipped": "release · Shipped" }` marks work that needs a dependency released, not only merged (a CLI change on npm `latest`, a prod deploy). It works on every tracker: the label is a Linear label, a Boards tag or a GitHub Issues label (matched without regard to case on the last two), and the blockers are Linear's blocking relations, Boards Predecessors or GitHub's issue dependencies. An item with that label waits, once its open blockers have closed, until every Done blocker has a comment whose first line starts with the `shipped` text, under any heading or bold (`waits for ENG-311 to ship`), and starts on the first tick after. On Boards that is a discussion comment, markdown or the web UI's HTML. A comment that only quotes the text doesn't count. A blocker still open in another team, or in a Boards state the profile doesn't map, waits the same way; a canceled one (Removed on Boards, closed as not planned or a duplicate on GitHub) holds nothing. A Boards Predecessor in another ADO project, or a GitHub blocker in another repo, has its comments read there. A blocker whose comments can't be read (a 403, a 404, a provider error) holds and is asked again next read, while the rest of the read goes on; so does a Boards Predecessor ADO doesn't return at all (deleted, or in a project the account can't read). A blocker that shipped with no such note holds until you add the note or remove the label. With the label and no blocker at all it waits until you act (`labelled waits-release with no blocker to wait on`), for something outside the tracker such as a Claude Code release. Such an item doesn't keep its tracker project from `queue.ready-to-release`, since the release is what it waits for. On Linear the read asks about the Done blockers in one more request, only when a labelled item has one. On Boards and GitHub Issues it reads the comments of a Done blocker that has any, and again only once its comment count or revision moves (its comment count or update time on GitHub), as a new comment does; on GitHub a labelled issue also reads its blocker list every read, since GitHub's summary counts only open blockers. Without the setting, a Done blocker never holds anything.
|
|
460
460
|
- **Slots:** `scheduler.slots` (4) across projects and the profile's `slots` per project, or `conduct focus --slots`, never more than the global ones. Slots count running workers only: a parked worker keeps its Area and frees its slot.
|
|
461
461
|
- **Holds:** quiet hours and `conduct pause` turn picks into waits that say why.
|
|
462
|
-
3. **Act.** It runs the rules on what it found: `queue.pick` → `launch` (default `launch`), `item.closed` → `retire` (default `retire-closed`; a refused retire raises an inbox item once, except one refused while the worker's turn runs or its session starts, which is tried again each tick and raised only after 15 minutes; a partial retire is tried again after 15 minutes, and after 3 in a row it raises one inbox item that names the failed steps and any worktree left on disk, which the conductor never deletes, and is tried once a day), `item.shelved` → `retire` with the worktree and branch kept (default `retire-shelved`, retried and raised the same way), `queue.drained` → an inbox item once a day, `queue.ready-to-release` → a `release` inbox item when a tracker project has no open item and an item of its conductor project has a Landed note since the scheduler's last `release` item for the project, or since it was added when it has none; the project stays ready while that item is open (ATK-710: a project just added with an empty queue has nothing to release, and a dismissed `release` item comes back only after another item lands), `queue.triage` → a `triage` inbox item per item (default `triage`), resolved once the label goes. Each action is a `rule.fired` event, then `rule.done` or `rule.failed`. A launch that failed isn't tried again while its inbox item is open.
|
|
462
|
+
3. **Act.** It runs the rules on what it found: `queue.pick` → `launch` (default `launch`), `item.closed` → `retire` (default `retire-closed`; a refused retire raises an inbox item once, except one refused while the worker's turn runs or its session starts, which is tried again each tick and raised only after 15 minutes; a partial retire is tried again after 15 minutes, and after 3 in a row it raises one inbox item that names the failed steps and any worktree left on disk, which the conductor never deletes, and is tried once a day; a `held` one, whose worktree something still holds after its processes were stopped, raises that inbox item on the first try, naming the holder where the OS can tell and the commands that stop it, and is tried again on the same schedule, so a lock that passes retires it and resolves the item, ATK-865), `item.shelved` → `retire` with the worktree and branch kept (default `retire-shelved`, retried and raised the same way), `queue.drained` → an inbox item once a day, `queue.ready-to-release` → a `release` inbox item when a tracker project has no open item and an item of its conductor project has a Landed note since the scheduler's last `release` item for the project, or since it was added when it has none; the project stays ready while that item is open (ATK-710: a project just added with an empty queue has nothing to release, and a dismissed `release` item comes back only after another item lands), `queue.triage` → a `triage` inbox item per item (default `triage`), resolved once the label goes. Each action is a `rule.fired` event, then `rule.done` or `rule.failed`. A launch that failed isn't tried again while its inbox item is open.
|
|
463
463
|
|
|
464
464
|
`scheduler.mode` decides how far it goes:
|
|
465
465
|
- **`on`** (the default): it acts.
|
package/build/broker.js
CHANGED
|
@@ -102,9 +102,7 @@ export function broker({ exists = existsSync, free = portFree, now = () => new D
|
|
|
102
102
|
}
|
|
103
103
|
// Frees the ports of a worktree (a retired worker's, or one whose directory is gone).
|
|
104
104
|
export function freePorts(store, worktree, reason) {
|
|
105
|
-
for (const held of store
|
|
106
|
-
if (!samePath(held.worktree, worktree))
|
|
107
|
-
continue;
|
|
105
|
+
for (const held of assignmentsOf(store, worktree)) {
|
|
108
106
|
store.deletePorts(held.worktree);
|
|
109
107
|
store.appendEvent({
|
|
110
108
|
data: { ports: held.ports, reason, worktree: held.worktree },
|
|
@@ -162,6 +160,14 @@ export function releaseLocks(store, holder, reason) {
|
|
|
162
160
|
store.appendEvent({ data: { holder, reason }, kind: 'lock.released', subject: lock.name });
|
|
163
161
|
}
|
|
164
162
|
}
|
|
163
|
+
// The ports the broker gave a worktree.
|
|
164
|
+
export function worktreePorts(store, worktree) {
|
|
165
|
+
return assignmentsOf(store, worktree).flatMap((held) => Object.values(held.ports));
|
|
166
|
+
}
|
|
167
|
+
// A worktree's assignments, however its path is spelled.
|
|
168
|
+
function assignmentsOf(store, worktree) {
|
|
169
|
+
return store.portAssignments().filter((held) => samePath(held.worktree, worktree));
|
|
170
|
+
}
|
|
165
171
|
function sameNames(ports, names) {
|
|
166
172
|
return Object.keys(ports).length === names.length && names.every((name) => Object.hasOwn(ports, name));
|
|
167
173
|
}
|
package/build/broker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"broker.js","sourceRoot":"","sources":["../src/broker.ts"],"names":[],"mappings":"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"}
|
package/build/daemon.js
CHANGED
|
@@ -14,6 +14,7 @@ import { ConductorError } from "./errors.js";
|
|
|
14
14
|
import { followUpService } from "./follow-ups.js";
|
|
15
15
|
import { attachClients } from "./host/attach-clients.js";
|
|
16
16
|
import { terminal, workerTabs } from "./host/terminal.js";
|
|
17
|
+
import { worktreeProcesses } from "./host/worktree-processes.js";
|
|
17
18
|
import { storeOrganizations } from "./in-process.js";
|
|
18
19
|
import { inboxService } from "./inbox.js";
|
|
19
20
|
import { acquirePidLock, processAlive } from "./lock.js";
|
|
@@ -202,6 +203,7 @@ export async function startDaemon(paths, { consoleGraceMs, keepaliveMs, ports =
|
|
|
202
203
|
return { allowed: rule !== null, rule };
|
|
203
204
|
},
|
|
204
205
|
processAlive: ports.processAlive,
|
|
206
|
+
processes: ports.processes ?? worktreeProcesses(),
|
|
205
207
|
projectsDir: ports.projectsDir ?? claudeProjectsDir(),
|
|
206
208
|
// The code hosts are set up below, before anything retires.
|
|
207
209
|
prs: (profile, ref) => prStatus(hosts)(profile, ref),
|
package/build/daemon.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, readlinkSync } from 'node:fs';
|
|
2
|
+
import { posix, win32 } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { ConductorError } from "../errors.js";
|
|
5
|
+
import { processAlive } from "../lock.js";
|
|
6
|
+
import { realOr } from "../paths.js";
|
|
7
|
+
import { outputOf, run as runCommand } from "../run.js";
|
|
8
|
+
import { hostPlatform } from "./platform.js";
|
|
9
|
+
// The programs that run a script file: the first absolute path among their words that aren't options
|
|
10
|
+
// is the script. Not shells, whose options take folders (`pwsh -WorkingDirectory <dir>`, `bash
|
|
11
|
+
// --rcfile <file>`): a terminal opened in the worktree is the operator's.
|
|
12
|
+
const INTERPRETERS = new Set([
|
|
13
|
+
'bun',
|
|
14
|
+
'deno',
|
|
15
|
+
'node',
|
|
16
|
+
'nodejs',
|
|
17
|
+
'perl',
|
|
18
|
+
'php',
|
|
19
|
+
'python',
|
|
20
|
+
'python3',
|
|
21
|
+
'ruby',
|
|
22
|
+
]);
|
|
23
|
+
// How long a POSIX process gets after SIGTERM before SIGKILL.
|
|
24
|
+
const TERM_MS = 5000;
|
|
25
|
+
// The processes of the listing that belong to the worktree (worktreeProcesses' find), parents first.
|
|
26
|
+
export function belonging(listing, worktree, ports, self, platform) {
|
|
27
|
+
const byPid = new Map(listing.processes.map((p) => [p.pid, p]));
|
|
28
|
+
// The conductor and every process it descends from (a terminal, a supervisor): never stopped, and
|
|
29
|
+
// never looked through for children.
|
|
30
|
+
const guarded = new Set();
|
|
31
|
+
for (let pid = self; pid !== undefined && !guarded.has(pid);) {
|
|
32
|
+
guarded.add(pid);
|
|
33
|
+
const entry = byPid.get(pid);
|
|
34
|
+
if (entry === undefined || entry.ppid === pid)
|
|
35
|
+
break;
|
|
36
|
+
const parent = byPid.get(entry.ppid);
|
|
37
|
+
// A parent that started after its child is a reused pid's process (Windows), not its parent: the
|
|
38
|
+
// walk stops there, or it would guard a process of the worktree.
|
|
39
|
+
const reused = parent !== undefined && parent.started !== null && entry.started !== null && parent.started > entry.started;
|
|
40
|
+
pid = reused ? undefined : entry.ppid;
|
|
41
|
+
}
|
|
42
|
+
const roots = worktreeRoots(worktree, platform);
|
|
43
|
+
const found = new Map();
|
|
44
|
+
const add = (entry, why) => {
|
|
45
|
+
if (!guarded.has(entry.pid) && !found.has(entry.pid))
|
|
46
|
+
found.set(entry.pid, { command: entry.command, pid: entry.pid, why });
|
|
47
|
+
};
|
|
48
|
+
for (const entry of listing.processes)
|
|
49
|
+
if (programPaths(entry, platform).some((path) => roots.some((root) => isUnder(path, root, platform))))
|
|
50
|
+
add(entry, 'path');
|
|
51
|
+
for (const port of ports)
|
|
52
|
+
for (const pid of listing.listeners.get(port) ?? []) {
|
|
53
|
+
const entry = byPid.get(pid);
|
|
54
|
+
add(entry ?? { command: '', executable: null, pid, ppid: 0, started: null }, 'port');
|
|
55
|
+
}
|
|
56
|
+
// Each one's descendants, as each is stopped with its tree.
|
|
57
|
+
const children = new Map();
|
|
58
|
+
for (const entry of listing.processes) {
|
|
59
|
+
if (entry.ppid === entry.pid)
|
|
60
|
+
continue;
|
|
61
|
+
children.set(entry.ppid, [...(children.get(entry.ppid) ?? []), entry]);
|
|
62
|
+
}
|
|
63
|
+
const queue = [...found.keys()];
|
|
64
|
+
for (let pid = queue.shift(); pid !== undefined; pid = queue.shift()) {
|
|
65
|
+
const parent = byPid.get(pid);
|
|
66
|
+
// A listener the process listing missed (it started between the two): with no start to compare,
|
|
67
|
+
// a child of its pid could be a reused pid's.
|
|
68
|
+
if (!parent)
|
|
69
|
+
continue;
|
|
70
|
+
for (const child of children.get(pid) ?? []) {
|
|
71
|
+
if (guarded.has(child.pid) || found.has(child.pid))
|
|
72
|
+
continue;
|
|
73
|
+
// A pid Windows reused: the "child" started before its parent did.
|
|
74
|
+
if (parent.started !== null && child.started !== null && child.started < parent.started)
|
|
75
|
+
continue;
|
|
76
|
+
add(child, 'child');
|
|
77
|
+
queue.push(child.pid);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return [...found.values()];
|
|
81
|
+
}
|
|
82
|
+
// The command that ends a process by hand, for an inbox item: one that outlived the conductor's own
|
|
83
|
+
// stop, so forcibly, and that process alone, as the item names each one (taskkill /T would walk
|
|
84
|
+
// parent pids Windows may have reused).
|
|
85
|
+
export function killCommand(pid, platform = hostPlatform()) {
|
|
86
|
+
return platform === 'win32' ? `taskkill /PID ${pid} /F` : `kill -9 ${pid}`;
|
|
87
|
+
}
|
|
88
|
+
// `lsof -F pn` output: a `p<pid>` line, then one `n<name>` line per file (other field lines, such as
|
|
89
|
+
// `f<fd>`, are skipped). Listening sockets are named `*:41000`, `127.0.0.1:41000` or `[::1]:41000`.
|
|
90
|
+
export function parseLsofListeners(stdout, ports) {
|
|
91
|
+
const listeners = new Map();
|
|
92
|
+
let pid = null;
|
|
93
|
+
for (const line of stdout.split(/\r?\n/)) {
|
|
94
|
+
if (line.startsWith('p'))
|
|
95
|
+
pid = Number(line.slice(1)) || null;
|
|
96
|
+
else if (line.startsWith('n') && pid !== null)
|
|
97
|
+
addListener(listeners, ports, portOf(line.slice(1)), pid);
|
|
98
|
+
}
|
|
99
|
+
return listeners;
|
|
100
|
+
}
|
|
101
|
+
// `ps -A -ww -o pid=,ppid=,args=` output.
|
|
102
|
+
export function parsePs(stdout) {
|
|
103
|
+
const entries = [];
|
|
104
|
+
for (const line of stdout.split(/\r?\n/)) {
|
|
105
|
+
const match = /^\s*(\d+)\s+(\d+)\s+(.*)$/.exec(line);
|
|
106
|
+
if (!match)
|
|
107
|
+
continue;
|
|
108
|
+
entries.push({
|
|
109
|
+
command: match[3] ?? '',
|
|
110
|
+
executable: null,
|
|
111
|
+
pid: Number(match[1]),
|
|
112
|
+
ppid: Number(match[2]),
|
|
113
|
+
started: null,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return entries;
|
|
117
|
+
}
|
|
118
|
+
// `ss -ltnpH` output: `LISTEN 0 511 *:41000 *:* users:(("node",pid=1234,fd=20))`. The local address
|
|
119
|
+
// is the fourth column.
|
|
120
|
+
export function parseSs(stdout, ports) {
|
|
121
|
+
const listeners = new Map();
|
|
122
|
+
for (const line of stdout.split(/\r?\n/)) {
|
|
123
|
+
const local = line.trim().split(/\s+/)[3];
|
|
124
|
+
if (local === undefined)
|
|
125
|
+
continue;
|
|
126
|
+
for (const match of line.matchAll(/pid=(\d+)/g))
|
|
127
|
+
addListener(listeners, ports, portOf(local), Number(match[1]));
|
|
128
|
+
}
|
|
129
|
+
return listeners;
|
|
130
|
+
}
|
|
131
|
+
// The Windows script's JSON (windowsListingScript).
|
|
132
|
+
export function parseWindowsListing(stdout, ports) {
|
|
133
|
+
const parsed = windowsListing.safeParse(parseJson(stdout));
|
|
134
|
+
if (!parsed.success)
|
|
135
|
+
throw new ConductorError("couldn't read the process listing", [stdout.slice(0, 500)]);
|
|
136
|
+
const listeners = new Map();
|
|
137
|
+
for (const l of parsed.data.listeners)
|
|
138
|
+
addListener(listeners, ports, l.port, l.pid);
|
|
139
|
+
return {
|
|
140
|
+
listeners,
|
|
141
|
+
processes: parsed.data.processes.map((p) => ({
|
|
142
|
+
command: p.c ?? '',
|
|
143
|
+
executable: p.e ?? null,
|
|
144
|
+
pid: p.p,
|
|
145
|
+
ppid: p.pp,
|
|
146
|
+
started: p.s ?? null,
|
|
147
|
+
})),
|
|
148
|
+
unseen: parsed.data.gap === null || parsed.data.gap === undefined ? [] : [parsed.data.gap],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Processes as a retire step or an inbox item names them: `8640 node …\next dev; 912 …`.
|
|
152
|
+
export function processesText(processes) {
|
|
153
|
+
return processes
|
|
154
|
+
.map(({ command, pid }) => {
|
|
155
|
+
const text = command.replace(/\s+/g, ' ').trim();
|
|
156
|
+
return text === '' ? String(pid) : `${pid} ${text.length > 160 ? `${text.slice(0, 159)}…` : text}`;
|
|
157
|
+
})
|
|
158
|
+
.join('; ');
|
|
159
|
+
}
|
|
160
|
+
// One Windows PowerShell run, encoded so its own command line never holds the worktree's path: every
|
|
161
|
+
// process with its parent, executable, command line and start, and the owners of the given ports
|
|
162
|
+
// listening. Get-NetTCPConnection answers an error for a port nobody listens on, hence
|
|
163
|
+
// SilentlyContinue; a Windows without it says so in `gap`.
|
|
164
|
+
export function windowsListingScript(ports) {
|
|
165
|
+
return [
|
|
166
|
+
'[Console]::OutputEncoding = [Text.Encoding]::UTF8',
|
|
167
|
+
`$ports = @(${ports.map((p) => String(Math.trunc(p))).join(',')})`,
|
|
168
|
+
'$procs = @(Get-CimInstance Win32_Process | ForEach-Object { [pscustomobject]@{ p = [int]$_.ProcessId; pp = [int]$_.ParentProcessId; e = $_.ExecutablePath; c = $_.CommandLine; s = $(if ($_.CreationDate) { ([DateTimeOffset]$_.CreationDate).ToUnixTimeMilliseconds() } else { $null }) } })',
|
|
169
|
+
'$gap = $null',
|
|
170
|
+
'$listen = @()',
|
|
171
|
+
"if ($ports.Count -gt 0) { if (Get-Command Get-NetTCPConnection -ErrorAction SilentlyContinue) { $listen = @(Get-NetTCPConnection -State Listen -LocalPort $ports -ErrorAction SilentlyContinue | ForEach-Object { [pscustomobject]@{ port = [int]$_.LocalPort; pid = [int]$_.OwningProcess } }) } else { $gap = 'listening ports: no Get-NetTCPConnection' } }",
|
|
172
|
+
'[pscustomobject]@{ processes = $procs; listeners = $listen; gap = $gap } | ConvertTo-Json -Compress -Depth 3',
|
|
173
|
+
].join('\n');
|
|
174
|
+
}
|
|
175
|
+
export function worktreeProcesses(host = {}) {
|
|
176
|
+
const platform = host.platform ?? hostPlatform();
|
|
177
|
+
const run = host.run ?? runCommand;
|
|
178
|
+
const self = host.self ?? process.pid;
|
|
179
|
+
const kill = host.kill ?? ((pid, signal) => process.kill(pid, signal));
|
|
180
|
+
const proc = host.proc ?? realProc;
|
|
181
|
+
// A zombie answers kill(pid, 0) until its parent reaps it, but it has ended: Linux says so in /proc.
|
|
182
|
+
const alive = host.alive ??
|
|
183
|
+
(platform === 'linux'
|
|
184
|
+
? (pid) => processAlive(pid) && !isZombie(proc.read(posix.join('/proc', String(pid), 'stat')))
|
|
185
|
+
: processAlive);
|
|
186
|
+
const sleep = host.sleep ?? ((ms) => new Promise((done) => setTimeout(done, ms)));
|
|
187
|
+
return {
|
|
188
|
+
find: async (worktree, ports) => {
|
|
189
|
+
const listing = await listProcesses(platform, ports, run, proc);
|
|
190
|
+
return { processes: belonging(listing, worktree, ports, self, platform), unseen: listing.unseen };
|
|
191
|
+
},
|
|
192
|
+
stop: async (pids) => {
|
|
193
|
+
const send = (signal, to) => {
|
|
194
|
+
for (const pid of to) {
|
|
195
|
+
try {
|
|
196
|
+
kill(pid, signal);
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Gone already, or not ours to end: what still runs is reported below.
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
// On Windows every signal ends the process at once (TerminateProcess).
|
|
204
|
+
send(platform === 'win32' ? 'SIGKILL' : 'SIGTERM', pids);
|
|
205
|
+
for (let waited = 0; waited < (platform === 'win32' ? 1000 : TERM_MS); waited += 250) {
|
|
206
|
+
if (!pids.some(alive))
|
|
207
|
+
return [];
|
|
208
|
+
await sleep(250);
|
|
209
|
+
}
|
|
210
|
+
if (platform !== 'win32') {
|
|
211
|
+
send('SIGKILL', pids.filter(alive));
|
|
212
|
+
await sleep(250);
|
|
213
|
+
}
|
|
214
|
+
return pids.filter(alive);
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function addListener(listeners, ports, port, pid) {
|
|
219
|
+
if (port === null || !ports.includes(port) || !Number.isInteger(pid) || pid <= 0)
|
|
220
|
+
return;
|
|
221
|
+
const pids = listeners.get(port) ?? [];
|
|
222
|
+
if (!pids.includes(pid))
|
|
223
|
+
listeners.set(port, [...pids, pid]);
|
|
224
|
+
}
|
|
225
|
+
// Whether the path is inside the root: a file in it, never the folder itself, which only an argument
|
|
226
|
+
// names (a terminal's or an editor's). Both are normal().
|
|
227
|
+
function isUnder(path, root, platform) {
|
|
228
|
+
const sep = platform === 'win32' ? '\\' : '/';
|
|
229
|
+
const prefix = root.endsWith(sep) ? root : `${root}${sep}`;
|
|
230
|
+
return path.length > prefix.length && path.startsWith(prefix);
|
|
231
|
+
}
|
|
232
|
+
// Whether a /proc/<pid>/stat says the process is a zombie: its state, after the command's `) `, is Z.
|
|
233
|
+
function isZombie(stat) {
|
|
234
|
+
return stat !== null && stat.charAt(stat.lastIndexOf(')') + 2) === 'Z';
|
|
235
|
+
}
|
|
236
|
+
// Linux: every process's parent and start from /proc/<pid>/stat, its executable and its command line.
|
|
237
|
+
// A process that ends while it is read, or one of another user's whose exe can't be read, keeps what
|
|
238
|
+
// could be read.
|
|
239
|
+
function linuxProcesses(proc) {
|
|
240
|
+
const entries = [];
|
|
241
|
+
for (const name of proc.list()) {
|
|
242
|
+
if (!/^\d+$/.test(name))
|
|
243
|
+
continue;
|
|
244
|
+
const stat = proc.read(posix.join('/proc', name, 'stat'));
|
|
245
|
+
// pid (comm) state ppid … starttime (field 22); comm may hold spaces and parentheses.
|
|
246
|
+
const fields = stat?.slice(stat.lastIndexOf(')') + 2).split(' ');
|
|
247
|
+
if (!fields)
|
|
248
|
+
continue;
|
|
249
|
+
const cmdline = proc.read(posix.join('/proc', name, 'cmdline')) ?? '';
|
|
250
|
+
entries.push({
|
|
251
|
+
// Quoted where a word holds a space, so programPaths reads the words back.
|
|
252
|
+
command: cmdline
|
|
253
|
+
.split('\0')
|
|
254
|
+
.filter(Boolean)
|
|
255
|
+
.map((word) => (/\s/.test(word) ? `"${word}"` : word))
|
|
256
|
+
.join(' '),
|
|
257
|
+
executable: proc.link(posix.join('/proc', name, 'exe')),
|
|
258
|
+
pid: Number(name),
|
|
259
|
+
ppid: Number(fields[1]),
|
|
260
|
+
started: Number(fields[19]) || null,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
return entries;
|
|
264
|
+
}
|
|
265
|
+
async function listProcesses(platform, ports, run, proc) {
|
|
266
|
+
if (platform === 'win32') {
|
|
267
|
+
const result = await run('powershell.exe', [
|
|
268
|
+
'-NoProfile',
|
|
269
|
+
'-NonInteractive',
|
|
270
|
+
'-EncodedCommand',
|
|
271
|
+
Buffer.from(windowsListingScript(ports), 'utf16le').toString('base64'),
|
|
272
|
+
], { timeoutMs: 30_000 });
|
|
273
|
+
if (result.code !== 0)
|
|
274
|
+
throw new ConductorError("couldn't list the processes", [outputOf(result, 500)]);
|
|
275
|
+
return parseWindowsListing(result.stdout, ports);
|
|
276
|
+
}
|
|
277
|
+
const unseen = [];
|
|
278
|
+
let processes;
|
|
279
|
+
if (platform === 'linux') {
|
|
280
|
+
processes = linuxProcesses(proc);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
// -ww: BSD ps cuts a line at the terminal's width, or 80 columns with none.
|
|
284
|
+
const ps = await run('ps', ['-A', '-ww', '-o', 'pid=,ppid=,args='], { timeoutMs: 20_000 });
|
|
285
|
+
if (ps.code !== 0)
|
|
286
|
+
throw new ConductorError("couldn't list the processes", [outputOf(ps, 500)]);
|
|
287
|
+
processes = parsePs(ps.stdout);
|
|
288
|
+
}
|
|
289
|
+
let listeners = new Map();
|
|
290
|
+
if (ports.length > 0) {
|
|
291
|
+
const result = platform === 'linux'
|
|
292
|
+
? await run('ss', ['-ltnpH'], { timeoutMs: 20_000 })
|
|
293
|
+
: await run('lsof', ['-nP', '-iTCP', '-sTCP:LISTEN', '-Fpn'], { timeoutMs: 20_000 });
|
|
294
|
+
// lsof exits 1 when nothing listens.
|
|
295
|
+
if (result.code === 0 || (platform === 'darwin' && result.code === 1 && result.stdout.trim() === ''))
|
|
296
|
+
listeners = platform === 'linux' ? parseSs(result.stdout, ports) : parseLsofListeners(result.stdout, ports);
|
|
297
|
+
else
|
|
298
|
+
unseen.push(`listening ports: ${platform === 'linux' ? 'ss' : 'lsof'} failed: ${outputOf(result, 200)}`);
|
|
299
|
+
}
|
|
300
|
+
return { listeners, processes, unseen };
|
|
301
|
+
}
|
|
302
|
+
// A path as compared: Windows' without case and with backslashes alone, so `C:/wt/X` matches `C:\wt\X`.
|
|
303
|
+
function normal(path, platform) {
|
|
304
|
+
return platform === 'win32' ? path.replace(/\//g, '\\').toLowerCase() : path;
|
|
305
|
+
}
|
|
306
|
+
function parseJson(text) {
|
|
307
|
+
try {
|
|
308
|
+
// A PowerShell can start its UTF-8 output with a byte order mark.
|
|
309
|
+
return JSON.parse(text.charCodeAt(0) === 0xfeff ? text.slice(1) : text);
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
return null;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function portOf(address) {
|
|
316
|
+
const port = Number(/:(\d+)$/.exec(address.trim())?.[1]);
|
|
317
|
+
return Number.isInteger(port) && port > 0 ? port : null;
|
|
318
|
+
}
|
|
319
|
+
// A program's file name, lower case and without .exe on Windows.
|
|
320
|
+
function programName(path, platform) {
|
|
321
|
+
const base = platform === 'win32' ? win32.basename(path.replace(/\//g, '\\')) : posix.basename(path);
|
|
322
|
+
return platform === 'win32' ? base.toLowerCase().replace(/\.exe$/, '') : base;
|
|
323
|
+
}
|
|
324
|
+
// The paths a process runs from, normal(): its executable, its program word, and, for an interpreter
|
|
325
|
+
// such as node, the script it runs (the first absolute path among the words after the program that
|
|
326
|
+
// aren't options, past an option's value such as `--import tsx`). Never another argument: a process
|
|
327
|
+
// that only takes the worktree as one, such as a terminal or editor opened there or a shell told to
|
|
328
|
+
// cd there, doesn't run from it, and its tree isn't the worker's.
|
|
329
|
+
function programPaths(entry, platform) {
|
|
330
|
+
const path = platform === 'win32' ? win32 : posix;
|
|
331
|
+
const words = [...entry.command.matchAll(/"([^"]*)"|(\S+)/g)].map((m) => m[1] ?? m[2] ?? '');
|
|
332
|
+
const [program = '', ...rest] = words;
|
|
333
|
+
const paths = [program, ...(entry.executable === null ? [] : [entry.executable])];
|
|
334
|
+
if (INTERPRETERS.has(programName(entry.executable ?? program, platform))) {
|
|
335
|
+
const script = rest.find((word) => !word.startsWith('-') && path.isAbsolute(word));
|
|
336
|
+
if (script !== undefined)
|
|
337
|
+
paths.push(script);
|
|
338
|
+
}
|
|
339
|
+
// Normalized, so `<worktree>\..\elsewhere` isn't taken for a path in the worktree.
|
|
340
|
+
return paths.filter((p) => path.isAbsolute(p)).map((p) => normal(path.normalize(p), platform));
|
|
341
|
+
}
|
|
342
|
+
// The worktree's path as given and as its real (long, linked) form, without a trailing separator.
|
|
343
|
+
function worktreeRoots(worktree, platform) {
|
|
344
|
+
const path = platform === 'win32' ? win32 : posix;
|
|
345
|
+
const trim = (p) => {
|
|
346
|
+
const n = normal(p, platform);
|
|
347
|
+
return n.length > 1 && /[\\/]$/.test(n) && !/^[a-z]:\\$/.test(n) ? n.slice(0, -1) : n;
|
|
348
|
+
};
|
|
349
|
+
return [...new Set([trim(path.resolve(worktree)), trim(realOr(worktree))])];
|
|
350
|
+
}
|
|
351
|
+
const realProc = {
|
|
352
|
+
link: (p) => {
|
|
353
|
+
try {
|
|
354
|
+
return readlinkSync(p);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
},
|
|
360
|
+
list: () => {
|
|
361
|
+
try {
|
|
362
|
+
return readdirSync('/proc');
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
return [];
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
read: (p) => {
|
|
369
|
+
try {
|
|
370
|
+
return readFileSync(p, 'utf8');
|
|
371
|
+
}
|
|
372
|
+
catch {
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
};
|
|
377
|
+
const windowsListing = z.object({
|
|
378
|
+
gap: z.string().nullish(),
|
|
379
|
+
// ConvertTo-Json writes a one-element array as the element alone in some PowerShells.
|
|
380
|
+
listeners: z.preprocess((v) => (v === null || v === undefined ? [] : Array.isArray(v) ? v : [v]), z.array(z.object({ pid: z.number(), port: z.number() }))),
|
|
381
|
+
processes: z.preprocess((v) => (v === null || v === undefined ? [] : Array.isArray(v) ? v : [v]), z.array(z.object({
|
|
382
|
+
c: z.string().nullish(),
|
|
383
|
+
e: z.string().nullish(),
|
|
384
|
+
p: z.number(),
|
|
385
|
+
pp: z.number(),
|
|
386
|
+
s: z.number().nullish(),
|
|
387
|
+
}))),
|
|
388
|
+
});
|
|
389
|
+
//# sourceMappingURL=worktree-processes.js.map
|