crewly 1.20.16 → 1.20.17

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.
@@ -1,4 +1,4 @@
1
1
  {
2
- "commit": "b5ed634609de97059883e6b5ece3417113a57a3f",
3
- "builtAt": "2026-09-19T03:41:59.666Z"
2
+ "commit": "c3f61bb20dc97ce8bbbfcd3432ba5d2132883055",
3
+ "builtAt": "2026-09-19T03:51:44.895Z"
4
4
  }
@@ -12,10 +12,33 @@
12
12
  * @param logFn - Logging function for status messages.
13
13
  */
14
14
  export declare function killZombieProcesses(port: number, logFn?: (msg: string) => void): void;
15
+ /**
16
+ * Whether a parent pid means "the real parent is gone": pid 1, or a
17
+ * `systemd --user` / launchd subreaper that adopted the process.
18
+ *
19
+ * @param ppid - Parent pid
20
+ * @returns True when the process has been reparented
21
+ */
22
+ export declare function isOrphanParent(ppid: number): boolean;
23
+ /**
24
+ * Pick the test-runner pids that are truly orphaned from a `pid ppid`
25
+ * listing: roots whose parent is gone, plus their descendants in the same
26
+ * listing (vitest's worker pool survives its main process being killed).
27
+ *
28
+ * A test run with a live parent chain (`make → npm → vitest`) belongs to
29
+ * someone else on this machine — the SteamFun release pipeline lost its
30
+ * unit tests to every Crewly restart (TKT427) — and is left alone.
31
+ *
32
+ * @param rows - `[pid, ppid]` pairs of matching test processes
33
+ * @param isOrphan - Parent-gone predicate (injectable for tests)
34
+ * @returns Pids safe to kill
35
+ */
36
+ export declare function selectOrphanedTestPids(rows: Array<[number, number]>, isOrphan?: (ppid: number) => boolean): number[];
15
37
  /**
16
38
  * Kill orphaned vitest worker processes that survived agent session termination.
17
39
  * These accumulate when exec() kills only the parent shell but leaves
18
- * vitest's forked worker pool running.
40
+ * vitest's forked worker pool running. Only processes whose parent is gone
41
+ * (see {@link selectOrphanedTestPids}) are touched.
19
42
  *
20
43
  * @param myPid - Current process PID to exclude from killing.
21
44
  * @param logFn - Logging function for status messages.
@@ -1 +1 @@
1
- {"version":3,"file":"process-cleanup.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GAAG,IAAI,CAiElG;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,GAAE,MAAoB,EAC3B,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GACxC,IAAI,CAsCN"}
1
+ {"version":3,"file":"process-cleanup.d.ts","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GAAG,IAAI,CAiElG;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC7B,QAAQ,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAwB,GAClD,MAAM,EAAE,CAkBV;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,GAAE,MAAoB,EAC3B,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GACxC,IAAI,CAwCN"}
@@ -75,10 +75,62 @@ export function killZombieProcesses(port, logFn = console.log) {
75
75
  // Kill orphaned vitest/test runner processes from previous agent sessions
76
76
  killOrphanedTestProcesses(myPid, logFn);
77
77
  }
78
+ /**
79
+ * Whether a parent pid means "the real parent is gone": pid 1, or a
80
+ * `systemd --user` / launchd subreaper that adopted the process.
81
+ *
82
+ * @param ppid - Parent pid
83
+ * @returns True when the process has been reparented
84
+ */
85
+ export function isOrphanParent(ppid) {
86
+ if (ppid <= 1)
87
+ return true;
88
+ try {
89
+ const comm = execSync(`ps -o comm= -p ${ppid}`, { encoding: 'utf8', timeout: 2000 }).trim();
90
+ return comm === 'systemd' || comm === 'launchd' || comm === '';
91
+ }
92
+ catch {
93
+ return true; // parent already gone
94
+ }
95
+ }
96
+ /**
97
+ * Pick the test-runner pids that are truly orphaned from a `pid ppid`
98
+ * listing: roots whose parent is gone, plus their descendants in the same
99
+ * listing (vitest's worker pool survives its main process being killed).
100
+ *
101
+ * A test run with a live parent chain (`make → npm → vitest`) belongs to
102
+ * someone else on this machine — the SteamFun release pipeline lost its
103
+ * unit tests to every Crewly restart (TKT427) — and is left alone.
104
+ *
105
+ * @param rows - `[pid, ppid]` pairs of matching test processes
106
+ * @param isOrphan - Parent-gone predicate (injectable for tests)
107
+ * @returns Pids safe to kill
108
+ */
109
+ export function selectOrphanedTestPids(rows, isOrphan = isOrphanParent) {
110
+ const listed = new Set(rows.map(([pid]) => pid));
111
+ const doomed = new Set();
112
+ for (const [pid, ppid] of rows) {
113
+ // A parent that is itself in the listing is judged by its own parent, not here.
114
+ if (!listed.has(ppid) && isOrphan(ppid))
115
+ doomed.add(pid);
116
+ }
117
+ let grew = true;
118
+ while (grew) {
119
+ grew = false;
120
+ for (const [pid, ppid] of rows) {
121
+ if (!doomed.has(pid) && doomed.has(ppid)) {
122
+ doomed.add(pid);
123
+ grew = true;
124
+ }
125
+ }
126
+ }
127
+ return [...doomed];
128
+ }
78
129
  /**
79
130
  * Kill orphaned vitest worker processes that survived agent session termination.
80
131
  * These accumulate when exec() kills only the parent shell but leaves
81
- * vitest's forked worker pool running.
132
+ * vitest's forked worker pool running. Only processes whose parent is gone
133
+ * (see {@link selectOrphanedTestPids}) are touched.
82
134
  *
83
135
  * @param myPid - Current process PID to exclude from killing.
84
136
  * @param logFn - Logging function for status messages.
@@ -88,10 +140,12 @@ export function killOrphanedTestProcesses(myPid = process.pid, logFn = console.l
88
140
  const result = execSync('ps -eo pid,ppid,command | grep -E "node.*vitest|npx vitest" | grep -v grep', { encoding: 'utf8', timeout: 5000 }).trim();
89
141
  if (!result)
90
142
  return;
91
- const pids = result
143
+ const rows = result
92
144
  .split('\n')
93
- .map(line => parseInt(line.trim()))
94
- .filter(pid => !isNaN(pid) && pid !== myPid);
145
+ .map(line => line.trim().split(/\s+/))
146
+ .map(cols => [parseInt(cols[0]), parseInt(cols[1])])
147
+ .filter(([pid, ppid]) => !isNaN(pid) && !isNaN(ppid) && pid !== myPid);
148
+ const pids = selectOrphanedTestPids(rows);
95
149
  if (pids.length > 0) {
96
150
  logFn(`Found ${pids.length} orphaned test process(es), killing...`);
97
151
  for (const pid of pids) {
@@ -1 +1 @@
1
- {"version":3,"file":"process-cleanup.js","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-cleanup.js","sourceRoot":"","sources":["../../../../../cli/src/utils/process-cleanup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crewly",
3
- "version": "1.20.16",
3
+ "version": "1.20.17",
4
4
  "type": "module",
5
5
  "description": "Multi-agent orchestration platform for AI coding teams — coordinates Claude Code, Gemini CLI, and Codex agents with a real-time web dashboard",
6
6
  "workspaces": [