crewly 1.20.341 → 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 (25) 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/services/decisions/recurring-change-handoff.d.ts +8 -0
  9. package/dist/backend/backend/src/services/decisions/recurring-change-handoff.d.ts.map +1 -1
  10. package/dist/backend/backend/src/services/decisions/recurring-change-handoff.js +15 -2
  11. package/dist/backend/backend/src/services/decisions/recurring-change-handoff.js.map +1 -1
  12. package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts +30 -4
  13. package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -1
  14. package/dist/backend/backend/src/services/harness/harness-exec.utils.js +150 -56
  15. package/dist/backend/backend/src/services/harness/harness-exec.utils.js.map +1 -1
  16. package/dist/backend/build-info.json +2 -2
  17. package/dist/cli/backend/src/constants.d.ts +17 -0
  18. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  19. package/dist/cli/backend/src/constants.js +17 -0
  20. package/dist/cli/backend/src/constants.js.map +1 -1
  21. package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts +30 -4
  22. package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -1
  23. package/dist/cli/backend/src/services/harness/harness-exec.utils.js +150 -56
  24. package/dist/cli/backend/src/services/harness/harness-exec.utils.js.map +1 -1
  25. package/package.json +1 -1
@@ -39,6 +39,14 @@ export interface HandoffDeps {
39
39
  * @returns Lower-cased distinct terms
40
40
  */
41
41
  export declare function termsOf(text: string): Set<string>;
42
+ /**
43
+ * Terms that say what a text is about: {@link termsOf} without the when-words
44
+ * (every morning, daily, Monday...) that unrelated jobs share.
45
+ *
46
+ * @param text - Any text
47
+ * @returns Lower-cased distinct subject terms
48
+ */
49
+ export declare function subjectTermsOf(text: string): Set<string>;
42
50
  /**
43
51
  * The part of a schedule label that names the job: its name and the start of
44
52
  * its title, up to the first `:` / `(` / sentence end. The rest of a label is
@@ -1 +1 @@
1
- {"version":3,"file":"recurring-change-handoff.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/recurring-change-handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACd;AAED,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC3B,kDAAkD;IAClD,aAAa,EAAE,MAAM,iBAAiB,EAAE,CAAC;IACzC,wEAAwE;IACxE,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClG;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAUjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAUpF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAI1D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,iBAAiB,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAgBtH;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAO3E;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxG"}
1
+ {"version":3,"file":"recurring-change-handoff.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/recurring-change-handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,4CAA4C;AAC5C,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;CACd;AAED,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC3B,kDAAkD;IAClD,aAAa,EAAE,MAAM,iBAAiB,EAAE,CAAC;IACzC,wEAAwE;IACxE,MAAM,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClG;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAUjD;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAIxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAUpF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAI1D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,iBAAiB,EAAE,GAAG,iBAAiB,GAAG,IAAI,CAgBtH;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAO3E;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxG"}
@@ -36,6 +36,19 @@ export function termsOf(text) {
36
36
  }
37
37
  return out;
38
38
  }
39
+ /**
40
+ * Terms that say what a text is about: {@link termsOf} without the when-words
41
+ * (every morning, daily, Monday...) that unrelated jobs share.
42
+ *
43
+ * @param text - Any text
44
+ * @returns Lower-cased distinct subject terms
45
+ */
46
+ export function subjectTermsOf(text) {
47
+ const out = termsOf(text.replace(C.GENERIC_CADENCE_PATTERN, ' '));
48
+ for (const w of C.GENERIC_CADENCE_WORDS)
49
+ out.delete(w);
50
+ return out;
51
+ }
39
52
  /**
40
53
  * The part of a schedule label that names the job: its name and the start of
41
54
  * its title, up to the first `:` / `(` / sentence end. The rest of a label is
@@ -91,12 +104,12 @@ export function scheduleOfDecision(d, schedules) {
91
104
  // The card says what it is about; the owner's free-text answer (often a long
92
105
  // voice transcript) says what they want, and its common words match any job.
93
106
  const text = [d.question, ...d.options.map((o) => `${o.label} ${o.detail ?? ''}`)].join(' ');
94
- const have = termsOf(text);
107
+ const have = subjectTermsOf(text);
95
108
  let best = null;
96
109
  for (const s of schedules) {
97
110
  if (s.owner === d.asker || s.owner === d.requestedBy)
98
111
  continue;
99
- const terms = termsOf(identityOf(s.label));
112
+ const terms = subjectTermsOf(identityOf(s.label));
100
113
  if (terms.size === 0)
101
114
  continue;
102
115
  const shared = [...terms].filter((t) => have.has(t)).length;
@@ -1 +1 @@
1
- {"version":3,"file":"recurring-change-handoff.js","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/recurring-change-handoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,kCAAkC,IAAI,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAqB7E;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9E,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,cAAc;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,4EAA4E,CAAC,IAAI,EAAE,EAAE,CAAC;QAClH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA4B;IAC9D,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc;YAAE,SAAS;QAC5F,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC;QACpC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;QAC7F,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9G,IAAI,KAAK,IAAI,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAgB;IAChD,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAChH,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAgB,EAAE,SAAuC;IAC3F,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAsD,IAAI,CAAC;IACnE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,WAAW;YAAE,SAAS;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;QACrC,IAAI,MAAM,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC,iBAAiB,CAAC;YAAE,SAAS;QACzG,IAAI,CAAC,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ;YAAE,IAAI,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,CAAgB,EAAE,CAAoB;IAClE,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACzH,OAAO,CACN,kDAAkD,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,SAAS,KAAK;QACxF,GAAG,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,4BAA4B,MAAM,KAAK;QAC/E,sJAAsJ,CACtJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,CAAgB,EAAE,IAAiB;IAC/E,IAAI,CAAC;QACJ,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACpB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,OAAO,2BAA2B,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,KAAK,8BAA8B,CAAC,CAAC,KAAK,qDAAqD,CAAC;IACxJ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"recurring-change-handoff.js","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/recurring-change-handoff.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -1,4 +1,4 @@
1
1
  {
2
- "commit": "356612b53815582cf1a03dea268b238dbc5c90e4",
3
- "builtAt": "2026-10-14T05:32:07.698Z"
2
+ "commit": "56cdf0a6769b5cf5279557053d74ae59fb7c06bb",
3
+ "builtAt": "2026-10-14T12:37:01.527Z"
4
4
  }
@@ -6025,6 +6025,14 @@ export declare const HARNESS_CONSTANTS: {
6025
6025
  readonly LATEST_VERSION_FAILURE_TTL_MS: number;
6026
6026
  /** Timeout for short probe commands (which, --version, login status) */
6027
6027
  readonly PROBE_TIMEOUT_MS: 15000;
6028
+ /**
6029
+ * Guard against probe pile-ups (500 hung `codex` on one Mac). Concurrent
6030
+ * timeout-bounded runs allowed per executable; beyond it `runCommand`
6031
+ * fails fast instead of spawning.
6032
+ */
6033
+ readonly MAX_INFLIGHT_PER_EXECUTABLE: 4;
6034
+ /** Minimum gap between "executable is stuck" warnings, per executable (ms) */
6035
+ readonly STUCK_WARN_INTERVAL_MS: number;
6028
6036
  /** Timeout for `npm view` */
6029
6037
  readonly NPM_VIEW_TIMEOUT_MS: 20000;
6030
6038
  /** Timeout for one `npm install -g` attempt */
@@ -8379,6 +8387,15 @@ export declare const RECURRING_CHANGE_HANDOFF_CONSTANTS: {
8379
8387
  readonly MIN_WORD_CHARS: 3;
8380
8388
  /** Chars of a schedule label that name the job (the rest is its instructions) */
8381
8389
  readonly MAX_IDENTITY_CHARS: 80;
8390
+ /**
8391
+ * When-words that say how often or at what time of day a job runs, not what
8392
+ * it is about. Two unrelated jobs share them ("every morning"), so they never
8393
+ * count towards a match (D-747 was matched to a different 8am job through
8394
+ * "每天早上" alone).
8395
+ */
8396
+ readonly GENERIC_CADENCE_PATTERN: RegExp;
8397
+ /** Latin words of the same kind (lower-case) */
8398
+ readonly GENERIC_CADENCE_WORDS: readonly ["daily", "weekly", "monthly", "nightly", "hourly", "every", "each", "day", "week", "month", "morning", "evening", "night", "today", "tomorrow", "yesterday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"];
8382
8399
  /** `WorkItem.metadata` marker on the hand-off WorkItem */
8383
8400
  readonly METADATA_KEY: "recurringChangeHandoff";
8384
8401
  /** Option labels / answers that decline a change (nothing to hand off) */