crewly 1.20.340 → 1.20.342

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.
Files changed (32) hide show
  1. package/config/skills/agent/core/app-data/SKILL.md +5 -0
  2. package/config/skills/agent/core/app-data/execute.sh +9 -0
  3. package/config/skills/agent/core/app-data/execute.test.sh +12 -0
  4. package/dist/backend/backend/src/constants.d.ts +17 -0
  5. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  6. package/dist/backend/backend/src/constants.js +17 -0
  7. package/dist/backend/backend/src/constants.js.map +1 -1
  8. package/dist/backend/backend/src/index.d.ts.map +1 -1
  9. package/dist/backend/backend/src/index.js +4 -0
  10. package/dist/backend/backend/src/index.js.map +1 -1
  11. package/dist/backend/backend/src/services/decisions/recurring-change-handoff.d.ts +8 -0
  12. package/dist/backend/backend/src/services/decisions/recurring-change-handoff.d.ts.map +1 -1
  13. package/dist/backend/backend/src/services/decisions/recurring-change-handoff.js +15 -2
  14. package/dist/backend/backend/src/services/decisions/recurring-change-handoff.js.map +1 -1
  15. package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts +30 -4
  16. package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -1
  17. package/dist/backend/backend/src/services/harness/harness-exec.utils.js +150 -56
  18. package/dist/backend/backend/src/services/harness/harness-exec.utils.js.map +1 -1
  19. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +7 -0
  20. package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -1
  21. package/dist/backend/backend/src/services/restart/interrupted-turns.js +25 -5
  22. package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -1
  23. package/dist/backend/build-info.json +2 -2
  24. package/dist/cli/backend/src/constants.d.ts +17 -0
  25. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  26. package/dist/cli/backend/src/constants.js +17 -0
  27. package/dist/cli/backend/src/constants.js.map +1 -1
  28. package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts +30 -4
  29. package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -1
  30. package/dist/cli/backend/src/services/harness/harness-exec.utils.js +150 -56
  31. package/dist/cli/backend/src/services/harness/harness-exec.utils.js.map +1 -1
  32. package/package.json +1 -1
@@ -12,6 +12,7 @@
12
12
  *
13
13
  * @module services/harness/harness-exec.utils
14
14
  */
15
+ import { spawn } from 'child_process';
15
16
  import type { RunCommand } from './harness.types.js';
16
17
  /**
17
18
  * The user-owned npm prefix used when a global install is not permitted.
@@ -69,16 +70,41 @@ export declare function withHarnessPath(env?: NodeJS.ProcessEnv): NodeJS.Process
69
70
  * @returns Absolute path, or null when not found
70
71
  */
71
72
  export declare function resolveExecutable(command: string, envPath: string | undefined, isExecutable?: (file: string) => boolean): string | null;
73
+ /** Injectable seams of {@link createRunCommand}. */
74
+ export interface RunCommandDeps {
75
+ spawn?: typeof spawn;
76
+ now?: () => number;
77
+ /** Whether a pid still exists (default: `process.kill(pid, 0)`) */
78
+ isAlive?: (pid: number) => boolean;
79
+ /** Receives the rate-limited stuck-executable warning */
80
+ warn?: (message: string, data: Record<string, unknown>) => void;
81
+ }
82
+ /**
83
+ * Build a command runner with per-executable pile-up protection.
84
+ *
85
+ * On macOS a process stuck in exec / Gatekeeper verification survives SIGKILL
86
+ * until the kernel call returns, so killing a timed-out probe does not free
87
+ * it, and every new probe of that executable hangs too (hundreds of `codex`
88
+ * processes). The runner therefore remembers killed-but-still-alive children
89
+ * per executable and, while any exist, returns `{ code: null, error }`
90
+ * without spawning. It also caps concurrent timeout-bounded runs per
91
+ * executable. Callers already treat `code: null` as "could not run".
92
+ *
93
+ * @param deps - Injectable seams (tests)
94
+ * @returns A {@link RunCommand}
95
+ */
96
+ export declare function createRunCommand(deps?: RunCommandDeps): RunCommand;
72
97
  /**
73
98
  * Run a command without a shell and collect its output.
74
99
  *
75
- * Never rejects: a spawn failure (ENOENT) or timeout comes back as
100
+ * Never rejects: a spawn failure (ENOENT), timeout, or a refusal because an
101
+ * earlier run of the same executable is still stuck comes back as
76
102
  * `{ code: null, error }`. The command runs in its own process group and a
77
103
  * timeout kills the whole group: harness CLIs such as `codex` are Node
78
104
  * wrappers around a native binary, and SIGKILL on the wrapper alone left the
79
- * native child running forever (hundreds of hung `codex login status`).
80
- * Secrets must go through `options.stdin`, never through `args`, so they
81
- * cannot appear in `ps` output.
105
+ * native child running forever. See {@link createRunCommand} for the
106
+ * pile-up guard. Secrets must go through `options.stdin`, never through
107
+ * `args`, so they cannot appear in `ps` output.
82
108
  *
83
109
  * @param command - Executable
84
110
  * @param args - Arguments
@@ -1 +1 @@
1
- {"version":3,"file":"harness-exec.utils.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-exec.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH,OAAO,KAAK,EAAiB,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,CAOxG;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,GAAE,MAAqB,EAC9B,UAAU,GAAE,MAAuC,GACjD,MAAM,CAGR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAEvF;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAA6B,GAC3D,MAAM,GAAG,IAAI,CAUf;AAkCD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,EAAE,UAwDtB,CAAC"}
1
+ {"version":3,"file":"harness-exec.utils.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-exec.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAOtC,OAAO,KAAK,EAAiB,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,CAOxG;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC3B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,GAAE,MAAqB,EAC9B,UAAU,GAAE,MAAuC,GACjD,MAAM,CAGR;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAEvF;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAA6B,GAC3D,MAAM,GAAG,IAAI,CAUf;AAkCD,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,yDAAyD;IACzD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAChE;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE,cAAmB,GAAG,UAAU,CA6GtE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,UAAU,EAAE,UAA+B,CAAC"}
@@ -17,6 +17,7 @@ import * as fs from 'fs';
17
17
  import * as os from 'os';
18
18
  import * as path from 'path';
19
19
  import { HARNESS_CONSTANTS } from '../../constants.js';
20
+ import { LoggerService } from '../core/logger.service.js';
20
21
  import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
21
22
  /**
22
23
  * The user-owned npm prefix used when a global install is not permitted.
@@ -135,72 +136,165 @@ function killTree(child) {
135
136
  }
136
137
  child.kill('SIGKILL');
137
138
  }
139
+ /**
140
+ * Whether anything from a run is still alive. Runs are spawned as their own
141
+ * process group (pgid = the child's pid), and the process that hangs is
142
+ * usually the native binary a wrapper started, not the wrapper itself, so on
143
+ * POSIX the whole group is checked.
144
+ *
145
+ * @param pid - Pid of the spawned child (its process group id on POSIX)
146
+ * @returns True when signal 0 to the group (or pid) succeeds; EPERM still means alive
147
+ */
148
+ function defaultIsAlive(pid) {
149
+ try {
150
+ process.kill(process.platform === 'win32' ? pid : -pid, 0);
151
+ return true;
152
+ }
153
+ catch (error) {
154
+ return error.code === 'EPERM';
155
+ }
156
+ }
157
+ /**
158
+ * Build a command runner with per-executable pile-up protection.
159
+ *
160
+ * On macOS a process stuck in exec / Gatekeeper verification survives SIGKILL
161
+ * until the kernel call returns, so killing a timed-out probe does not free
162
+ * it, and every new probe of that executable hangs too (hundreds of `codex`
163
+ * processes). The runner therefore remembers killed-but-still-alive children
164
+ * per executable and, while any exist, returns `{ code: null, error }`
165
+ * without spawning. It also caps concurrent timeout-bounded runs per
166
+ * executable. Callers already treat `code: null` as "could not run".
167
+ *
168
+ * @param deps - Injectable seams (tests)
169
+ * @returns A {@link RunCommand}
170
+ */
171
+ export function createRunCommand(deps = {}) {
172
+ const spawnFn = deps.spawn ?? spawn;
173
+ const now = deps.now ?? Date.now;
174
+ const isAlive = deps.isAlive ?? defaultIsAlive;
175
+ const warn = deps.warn ??
176
+ ((message, data) => LoggerService.getInstance().createComponentLogger('HarnessExec').warn(message, data));
177
+ const stuck = new Map();
178
+ const inflight = new Map();
179
+ const lastWarnAt = new Map();
180
+ const stuckCount = (key) => {
181
+ const pids = stuck.get(key);
182
+ if (!pids)
183
+ return 0;
184
+ for (const pid of [...pids])
185
+ if (!isAlive(pid))
186
+ pids.delete(pid);
187
+ if (pids.size === 0)
188
+ stuck.delete(key);
189
+ return pids.size;
190
+ };
191
+ const warnOnce = (key, count) => {
192
+ const last = lastWarnAt.get(key);
193
+ if (last !== undefined && now() - last < HARNESS_CONSTANTS.STUCK_WARN_INTERVAL_MS)
194
+ return;
195
+ lastWarnAt.set(key, now());
196
+ warn(`${key} is not responding; skipping new runs until the stuck ones exit`, { executable: key, stuckPids: count });
197
+ };
198
+ return (command, args, options = {}) => new Promise((resolve) => {
199
+ const key = resolveExecutable(command, options.env?.PATH ?? process.env.PATH) ?? command;
200
+ const stuckNow = stuckCount(key);
201
+ if (stuckNow > 0) {
202
+ warnOnce(key, stuckNow);
203
+ resolve({ code: null, stdout: '', stderr: '', error: `${key} is not responding (an earlier run is still stuck)` });
204
+ return;
205
+ }
206
+ const bounded = Boolean(options.timeoutMs);
207
+ if (bounded && (inflight.get(key) ?? 0) >= HARNESS_CONSTANTS.MAX_INFLIGHT_PER_EXECUTABLE) {
208
+ warnOnce(key, 0);
209
+ resolve({ code: null, stdout: '', stderr: '', error: `${key} is not responding (too many runs in flight)` });
210
+ return;
211
+ }
212
+ let stdout = '';
213
+ let stderr = '';
214
+ let settled = false;
215
+ let timer = null;
216
+ let released = false;
217
+ const release = () => {
218
+ if (released || !bounded)
219
+ return;
220
+ released = true;
221
+ inflight.set(key, Math.max(0, (inflight.get(key) ?? 1) - 1));
222
+ };
223
+ const finish = (result) => {
224
+ if (settled)
225
+ return;
226
+ settled = true;
227
+ if (timer)
228
+ clearTimeout(timer);
229
+ release();
230
+ resolve(result);
231
+ };
232
+ let child;
233
+ try {
234
+ child = spawnFn(command, [...args], {
235
+ env: options.env ?? process.env,
236
+ ...(options.cwd ? { cwd: options.cwd } : {}),
237
+ stdio: ['pipe', 'pipe', 'pipe'],
238
+ detached: process.platform !== 'win32',
239
+ });
240
+ }
241
+ catch (error) {
242
+ resolve({ code: null, stdout: '', stderr: '', error: error instanceof Error ? error.message : String(error) });
243
+ return;
244
+ }
245
+ if (bounded)
246
+ inflight.set(key, (inflight.get(key) ?? 0) + 1);
247
+ if (options.timeoutMs) {
248
+ timer = setTimeout(() => {
249
+ killTree(child);
250
+ // Remember the group even if the wrapper itself dies: its native
251
+ // child may be the one that cannot be reaped. stuckCount() drops it
252
+ // once nothing in the group is left.
253
+ if (child.pid !== undefined) {
254
+ const pids = stuck.get(key) ?? new Set();
255
+ pids.add(child.pid);
256
+ stuck.set(key, pids);
257
+ }
258
+ finish({ code: null, stdout, stderr, error: `timed out after ${options.timeoutMs} ms` });
259
+ }, options.timeoutMs);
260
+ }
261
+ child.stdout?.on('data', (chunk) => {
262
+ const text = chunk.toString();
263
+ stdout += text;
264
+ options.onOutput?.(text);
265
+ });
266
+ child.stderr?.on('data', (chunk) => {
267
+ const text = chunk.toString();
268
+ stderr += text;
269
+ options.onOutput?.(text);
270
+ });
271
+ child.on('error', (error) => finish({ code: null, stdout, stderr, error: error.message }));
272
+ child.on('close', (code) => finish({ code, stdout, stderr }));
273
+ child.stdin?.on('error', () => undefined);
274
+ if (options.stdin !== undefined) {
275
+ child.stdin?.end(options.stdin);
276
+ }
277
+ else {
278
+ child.stdin?.end();
279
+ }
280
+ });
281
+ }
138
282
  /**
139
283
  * Run a command without a shell and collect its output.
140
284
  *
141
- * Never rejects: a spawn failure (ENOENT) or timeout comes back as
285
+ * Never rejects: a spawn failure (ENOENT), timeout, or a refusal because an
286
+ * earlier run of the same executable is still stuck comes back as
142
287
  * `{ code: null, error }`. The command runs in its own process group and a
143
288
  * timeout kills the whole group: harness CLIs such as `codex` are Node
144
289
  * wrappers around a native binary, and SIGKILL on the wrapper alone left the
145
- * native child running forever (hundreds of hung `codex login status`).
146
- * Secrets must go through `options.stdin`, never through `args`, so they
147
- * cannot appear in `ps` output.
290
+ * native child running forever. See {@link createRunCommand} for the
291
+ * pile-up guard. Secrets must go through `options.stdin`, never through
292
+ * `args`, so they cannot appear in `ps` output.
148
293
  *
149
294
  * @param command - Executable
150
295
  * @param args - Arguments
151
296
  * @param options - env, timeout, stdin, streaming output callback
152
297
  * @returns Exit code and output
153
298
  */
154
- export const runCommand = (command, args, options = {}) => new Promise((resolve) => {
155
- let stdout = '';
156
- let stderr = '';
157
- let settled = false;
158
- let timer = null;
159
- const finish = (result) => {
160
- if (settled)
161
- return;
162
- settled = true;
163
- if (timer)
164
- clearTimeout(timer);
165
- resolve(result);
166
- };
167
- let child;
168
- try {
169
- child = spawn(command, [...args], {
170
- env: options.env ?? process.env,
171
- ...(options.cwd ? { cwd: options.cwd } : {}),
172
- stdio: ['pipe', 'pipe', 'pipe'],
173
- detached: process.platform !== 'win32',
174
- });
175
- }
176
- catch (error) {
177
- resolve({ code: null, stdout: '', stderr: '', error: error instanceof Error ? error.message : String(error) });
178
- return;
179
- }
180
- if (options.timeoutMs) {
181
- timer = setTimeout(() => {
182
- killTree(child);
183
- finish({ code: null, stdout, stderr, error: `timed out after ${options.timeoutMs} ms` });
184
- }, options.timeoutMs);
185
- }
186
- child.stdout?.on('data', (chunk) => {
187
- const text = chunk.toString();
188
- stdout += text;
189
- options.onOutput?.(text);
190
- });
191
- child.stderr?.on('data', (chunk) => {
192
- const text = chunk.toString();
193
- stderr += text;
194
- options.onOutput?.(text);
195
- });
196
- child.on('error', (error) => finish({ code: null, stdout, stderr, error: error.message }));
197
- child.on('close', (code) => finish({ code, stdout, stderr }));
198
- child.stdin?.on('error', () => undefined);
199
- if (options.stdin !== undefined) {
200
- child.stdin?.end(options.stdin);
201
- }
202
- else {
203
- child.stdin?.end();
204
- }
205
- });
299
+ export const runCommand = createRunCommand();
206
300
  //# sourceMappingURL=harness-exec.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-exec.utils.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-exec.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-exec.utils.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-exec.utils.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.340",
3
+ "version": "1.20.342",
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": [