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.
- package/config/skills/agent/core/app-data/SKILL.md +5 -0
- package/config/skills/agent/core/app-data/execute.sh +9 -0
- package/config/skills/agent/core/app-data/execute.test.sh +12 -0
- package/dist/backend/backend/src/constants.d.ts +17 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +17 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/recurring-change-handoff.d.ts +8 -0
- package/dist/backend/backend/src/services/decisions/recurring-change-handoff.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/recurring-change-handoff.js +15 -2
- package/dist/backend/backend/src/services/decisions/recurring-change-handoff.js.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts +30 -4
- package/dist/backend/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-exec.utils.js +150 -56
- package/dist/backend/backend/src/services/harness/harness-exec.utils.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +17 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +17 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts +30 -4
- package/dist/cli/backend/src/services/harness/harness-exec.utils.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-exec.utils.js +150 -56
- package/dist/cli/backend/src/services/harness/harness-exec.utils.js.map +1 -1
- 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 =
|
|
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 =
|
|
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":"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
|
|
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
|
|
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
|
|
80
|
-
* Secrets must go through `options.stdin`, never through
|
|
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;
|
|
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
|
|
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
|
|
146
|
-
* Secrets must go through `options.stdin`, never through
|
|
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 = (
|
|
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":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAA+B,EAAE,UAAkB,EAAE,CAAC,OAAO,EAAE;IAC/F,MAAM,OAAO,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC3B,WAA+B,EAC/B,UAAkB,EAAE,CAAC,OAAO,EAAE,EAC9B,aAAqB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;IAEnD,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;AAC9H,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IACnE,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAChC,OAAe,EACf,OAA2B,EAC3B,eAA0C,mBAAmB;IAE7D,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,YAAY,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACxC,IAAI,CAAC;QACJ,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,KAA+B;IAChD,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC/C,IAAI,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACpC,OAAO;QACR,CAAC;QAAC,MAAM,CAAC;YACR,uDAAuD;QACxD,CAAC;IACF,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC;AAYD;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,GAAW;IAClC,IAAI,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAC1D,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAuB,EAAE;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,cAAc,CAAC;IAC/C,MAAM,IAAI,GACT,IAAI,CAAC,IAAI;QACT,CAAC,CAAC,OAAe,EAAE,IAA6B,EAAQ,EAAE,CACzD,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE7C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAU,EAAE;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,KAAa,EAAQ,EAAE;QACrD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,iBAAiB,CAAC,sBAAsB;YAAE,OAAO;QAC1F,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,iEAAiE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACtH,CAAC,CAAC;IAEF,OAAO,CAAC,OAAe,EAAE,IAAuB,EAAE,UAA6B,EAAE,EAA0B,EAAE,CAC5G,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QACzF,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAClB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACxB,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,oDAAoD,EAAE,CAAC,CAAC;YACnH,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,iBAAiB,CAAC,2BAA2B,EAAE,CAAC;YAC1F,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACjB,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,8CAA8C,EAAE,CAAC,CAAC;YAC7G,OAAO;QACR,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,KAAK,GAA0B,IAAI,CAAC;QACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,OAAO,GAAG,GAAS,EAAE;YAC1B,IAAI,QAAQ,IAAI,CAAC,OAAO;gBAAE,OAAO;YACjC,QAAQ,GAAG,IAAI,CAAC;YAChB,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,MAAqB,EAAQ,EAAE;YAC9C,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC;QAEF,IAAI,KAA+B,CAAC;QACpC,IAAI,CAAC;YACJ,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;gBACnC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;gBAC/B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;aACtC,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/G,OAAO;QACR,CAAC;QACD,IAAI,OAAO;YAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACvB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,iEAAiE;gBACjE,oEAAoE;gBACpE,qCAAqC;gBACrC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;oBACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACpB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtB,CAAC;gBACD,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,OAAO,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;YAC1F,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,IAAI,CAAC;YACf,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,IAAI,CAAC;YACf,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3F,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAE9D,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;QACpB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAe,gBAAgB,EAAE,CAAC"}
|
|
@@ -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) */
|