@agentteams/runner 0.0.113 → 0.0.115

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 (113) hide show
  1. package/dist/api-client.d.ts +7 -0
  2. package/dist/api-client.js +39 -0
  3. package/dist/api-client.js.map +1 -1
  4. package/dist/api-client.test.js +23 -0
  5. package/dist/api-client.test.js.map +1 -1
  6. package/dist/commands/update.js +1 -7
  7. package/dist/commands/update.js.map +1 -1
  8. package/dist/executable.d.ts +19 -2
  9. package/dist/executable.js +144 -7
  10. package/dist/executable.js.map +1 -1
  11. package/dist/executable.test.js +70 -1
  12. package/dist/executable.test.js.map +1 -1
  13. package/dist/handlers/trigger-handler.js +3 -0
  14. package/dist/handlers/trigger-handler.js.map +1 -1
  15. package/dist/poller.d.ts +5 -1
  16. package/dist/poller.js +92 -1
  17. package/dist/poller.js.map +1 -1
  18. package/dist/poller.test.js +187 -0
  19. package/dist/poller.test.js.map +1 -1
  20. package/dist/runners/amp.js +3 -16
  21. package/dist/runners/amp.js.map +1 -1
  22. package/dist/runners/antigravity.js +3 -16
  23. package/dist/runners/antigravity.js.map +1 -1
  24. package/dist/runners/capabilities.d.ts +7 -1
  25. package/dist/runners/capabilities.js +21 -9
  26. package/dist/runners/capabilities.js.map +1 -1
  27. package/dist/runners/capabilities.test.js +12 -0
  28. package/dist/runners/capabilities.test.js.map +1 -1
  29. package/dist/runners/claude-code.js +3 -8
  30. package/dist/runners/claude-code.js.map +1 -1
  31. package/dist/runners/claude-code.test.js +10 -0
  32. package/dist/runners/claude-code.test.js.map +1 -1
  33. package/dist/runners/codex.js +3 -16
  34. package/dist/runners/codex.js.map +1 -1
  35. package/dist/runners/copilot-cli.js +2 -8
  36. package/dist/runners/copilot-cli.js.map +1 -1
  37. package/dist/runners/cursor-cli.js +2 -8
  38. package/dist/runners/cursor-cli.js.map +1 -1
  39. package/dist/runners/cursor-cli.test.js +14 -0
  40. package/dist/runners/cursor-cli.test.js.map +1 -1
  41. package/dist/runners/engine-commands.d.ts +11 -0
  42. package/dist/runners/engine-commands.js +27 -0
  43. package/dist/runners/engine-commands.js.map +1 -0
  44. package/dist/runners/grok-build-identity.d.ts +8 -0
  45. package/dist/runners/grok-build-identity.js +17 -0
  46. package/dist/runners/grok-build-identity.js.map +1 -0
  47. package/dist/runners/grok-build.d.ts +60 -0
  48. package/dist/runners/grok-build.js +360 -0
  49. package/dist/runners/grok-build.js.map +1 -0
  50. package/dist/runners/grok-build.test.d.ts +1 -0
  51. package/dist/runners/grok-build.test.js +233 -0
  52. package/dist/runners/grok-build.test.js.map +1 -0
  53. package/dist/runners/index.js +3 -0
  54. package/dist/runners/index.js.map +1 -1
  55. package/dist/runners/index.test.js +2 -0
  56. package/dist/runners/index.test.js.map +1 -1
  57. package/dist/runners/kimi-cli.js +2 -8
  58. package/dist/runners/kimi-cli.js.map +1 -1
  59. package/dist/runners/kimi-cli.test.js +8 -0
  60. package/dist/runners/kimi-cli.test.js.map +1 -1
  61. package/dist/runners/kiro-cli.js +2 -8
  62. package/dist/runners/kiro-cli.js.map +1 -1
  63. package/dist/runners/kiro-cli.test.js +1 -0
  64. package/dist/runners/kiro-cli.test.js.map +1 -1
  65. package/dist/runners/log-merger.d.ts +8 -0
  66. package/dist/runners/log-merger.js +33 -0
  67. package/dist/runners/log-merger.js.map +1 -0
  68. package/dist/runners/log-reporter.d.ts +2 -2
  69. package/dist/runners/log-reporter.js +2 -29
  70. package/dist/runners/log-reporter.js.map +1 -1
  71. package/dist/runners/opencode.js +3 -16
  72. package/dist/runners/opencode.js.map +1 -1
  73. package/dist/runners/session-env.d.ts +24 -0
  74. package/dist/runners/session-env.js +61 -0
  75. package/dist/runners/session-env.js.map +1 -0
  76. package/dist/runners/session-env.test.d.ts +1 -0
  77. package/dist/runners/session-env.test.js +78 -0
  78. package/dist/runners/session-env.test.js.map +1 -0
  79. package/dist/runners/stream-json-parser.js +45 -0
  80. package/dist/runners/stream-json-parser.js.map +1 -1
  81. package/dist/runners/types.d.ts +2 -0
  82. package/dist/utils/auto-update.d.ts +17 -2
  83. package/dist/utils/auto-update.js +165 -52
  84. package/dist/utils/auto-update.js.map +1 -1
  85. package/dist/utils/auto-update.test.js +357 -7
  86. package/dist/utils/auto-update.test.js.map +1 -1
  87. package/dist/utils/engine-probe.d.ts +15 -0
  88. package/dist/utils/engine-probe.js +52 -0
  89. package/dist/utils/engine-probe.js.map +1 -0
  90. package/dist/utils/engine-probe.test.d.ts +1 -0
  91. package/dist/utils/engine-probe.test.js +108 -0
  92. package/dist/utils/engine-probe.test.js.map +1 -0
  93. package/dist/utils/model-enumerator.d.ts +42 -0
  94. package/dist/utils/model-enumerator.js +223 -0
  95. package/dist/utils/model-enumerator.js.map +1 -0
  96. package/dist/utils/model-enumerator.test.d.ts +1 -0
  97. package/dist/utils/model-enumerator.test.js +132 -0
  98. package/dist/utils/model-enumerator.test.js.map +1 -0
  99. package/dist/utils/npm-global-permission.d.ts +18 -0
  100. package/dist/utils/npm-global-permission.js +41 -0
  101. package/dist/utils/npm-global-permission.js.map +1 -0
  102. package/dist/utils/npm-global-permission.test.d.ts +1 -0
  103. package/dist/utils/npm-global-permission.test.js +75 -0
  104. package/dist/utils/npm-global-permission.test.js.map +1 -0
  105. package/dist/utils/npm-install-error.d.ts +12 -0
  106. package/dist/utils/npm-install-error.js +19 -0
  107. package/dist/utils/npm-install-error.js.map +1 -0
  108. package/dist/utils/npm-install-error.test.d.ts +1 -0
  109. package/dist/utils/npm-install-error.test.js +28 -0
  110. package/dist/utils/npm-install-error.test.js.map +1 -0
  111. package/native/bin/win32-x64/agentrunner-launcher.exe +0 -0
  112. package/native/bin/win32-x64/manifest.json +2 -2
  113. package/package.json +1 -1
@@ -0,0 +1,60 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createWriteStream } from 'node:fs';
3
+ import { mkdir, rm, writeFile } from 'node:fs/promises';
4
+ import { platform } from 'node:os';
5
+ import { resolveExecutablePathsWithPreferenceAsync, runProbeCommand } from '../executable.js';
6
+ import { setupCloseWatchdog, terminateRunnerChild } from './process-control.js';
7
+ import type { Runner, RunnerOptions, RunResult } from './types.js';
8
+ /**
9
+ * Grok Build emits update notices on stderr and would otherwise self-update mid-run.
10
+ * The CLI has no `--no-auto-update` flag (verified against grok 1.0.3); this env var is the
11
+ * only documented suppression switch, and it keeps stdout reserved for the NDJSON stream.
12
+ */
13
+ export declare const GROK_AUTOUPDATER_ENV = "GROK_DISABLE_AUTOUPDATER";
14
+ /**
15
+ * Headless argument contract, measured against grok 1.0.3 (1a29d5bc12d4) on 2026-08-14.
16
+ *
17
+ * - The prompt is passed via `--prompt-file`, never `-p/--single`. A prompt whose first
18
+ * character is `-` (every runner prompt starts with a markdown bullet) makes clap abort
19
+ * with `error: unexpected argument '- ' found` and exit code 2 before the agent starts.
20
+ * - `--output-format streaming-messages-json` produces the Anthropic Messages wire format,
21
+ * which the shared stream-json parser already understands. The native `streaming-json`
22
+ * alternative streams per-token `thought` deltas (63 lines vs 5 for the same prompt) and
23
+ * would need a dedicated parser for no gain.
24
+ * - Permission bypass is `--permission-mode bypassPermissions`. The documented `--yolo`
25
+ * alias does not exist in this build.
26
+ * - `--effort` is accepted and validates its levels (xhigh|high|medium|low), but the effect
27
+ * was not reproducible, so the runner does not pass it (see capabilities.ts).
28
+ */
29
+ export declare const buildGrokBuildArgs: (promptFilePath: string, cwd: string, model?: string | null) => string[];
30
+ /**
31
+ * The official installer links the binary into `$GROK_HOME/bin` (default `~/.grok/bin`) and
32
+ * `~/.local/bin`. An unrelated npm package (`@vibe-kit/grok-cli`) also installs a `grok`
33
+ * binary, so name resolution alone is not enough — see `resolveGrokBuildExecutable` and the
34
+ * identity check in `utils/engine-probe.ts`.
35
+ */
36
+ export declare const getGrokExecutablePreference: (isWindows: boolean) => string[];
37
+ export declare const toGrokBuildPowerShellEncodedCommand: (resolvedExecutablePath: string, promptFilePath: string, cwd: string, model?: string | null) => string;
38
+ /**
39
+ * Pulls the final answer out of the captured NDJSON so the history fallback shows prose
40
+ * instead of a JSON dump. Mirrors the claude-code helper because the wire format is the same.
41
+ */
42
+ export declare const extractGrokResultText: (outputText: string) => string;
43
+ type GrokBuildRunnerDependencies = {
44
+ platform: typeof platform;
45
+ resolveExecutablePathsWithPreferenceAsync: typeof resolveExecutablePathsWithPreferenceAsync;
46
+ runProbeCommand: typeof runProbeCommand;
47
+ spawn: typeof spawn;
48
+ createWriteStream: typeof createWriteStream;
49
+ mkdir: typeof mkdir;
50
+ writeFile: typeof writeFile;
51
+ rm: typeof rm;
52
+ setupCloseWatchdog: typeof setupCloseWatchdog;
53
+ terminateRunnerChild: typeof terminateRunnerChild;
54
+ };
55
+ export declare class GrokBuildRunner implements Runner {
56
+ private readonly deps;
57
+ constructor(dependencies?: Partial<GrokBuildRunnerDependencies>);
58
+ run(opts: RunnerOptions): Promise<RunResult>;
59
+ }
60
+ export {};
@@ -0,0 +1,360 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { createWriteStream } from 'node:fs';
3
+ import { mkdir, rm, writeFile } from 'node:fs/promises';
4
+ import { platform } from 'node:os';
5
+ import { dirname, join } from 'node:path';
6
+ import { resolveExecutablePathsWithPreferenceAsync, runProbeCommand } from '../executable.js';
7
+ import { logger } from '../logger.js';
8
+ import { selectRunnerFailureMessage } from './failure-message.js';
9
+ import { setupCloseWatchdog, terminateRunnerChild } from './process-control.js';
10
+ import { createResultLineCapturer, createStreamJsonLineParser } from './stream-json-parser.js';
11
+ import { buildRunnerChildEnv } from './session-env.js';
12
+ import { findGrokBuildExecutable, isGrokBuildExecutable } from './grok-build-identity.js';
13
+ const OUTPUT_PREVIEW_MAX = 400;
14
+ const OUTPUT_CAPTURE_MAX = 200_000;
15
+ /**
16
+ * Grok Build emits update notices on stderr and would otherwise self-update mid-run.
17
+ * The CLI has no `--no-auto-update` flag (verified against grok 1.0.3); this env var is the
18
+ * only documented suppression switch, and it keeps stdout reserved for the NDJSON stream.
19
+ */
20
+ export const GROK_AUTOUPDATER_ENV = 'GROK_DISABLE_AUTOUPDATER';
21
+ const normalizedModel = (model) => (typeof model === 'string' ? model.trim() : '');
22
+ /**
23
+ * Headless argument contract, measured against grok 1.0.3 (1a29d5bc12d4) on 2026-08-14.
24
+ *
25
+ * - The prompt is passed via `--prompt-file`, never `-p/--single`. A prompt whose first
26
+ * character is `-` (every runner prompt starts with a markdown bullet) makes clap abort
27
+ * with `error: unexpected argument '- ' found` and exit code 2 before the agent starts.
28
+ * - `--output-format streaming-messages-json` produces the Anthropic Messages wire format,
29
+ * which the shared stream-json parser already understands. The native `streaming-json`
30
+ * alternative streams per-token `thought` deltas (63 lines vs 5 for the same prompt) and
31
+ * would need a dedicated parser for no gain.
32
+ * - Permission bypass is `--permission-mode bypassPermissions`. The documented `--yolo`
33
+ * alias does not exist in this build.
34
+ * - `--effort` is accepted and validates its levels (xhigh|high|medium|low), but the effect
35
+ * was not reproducible, so the runner does not pass it (see capabilities.ts).
36
+ */
37
+ export const buildGrokBuildArgs = (promptFilePath, cwd, model) => {
38
+ const selectedModel = normalizedModel(model);
39
+ // `default` is the platform sentinel for "no model pinned"; Grok would reject it as an
40
+ // unknown model id and exit 1.
41
+ const modelArgs = selectedModel.length > 0 && selectedModel !== 'default' ? ['-m', selectedModel] : [];
42
+ return [
43
+ '--prompt-file',
44
+ promptFilePath,
45
+ '--cwd',
46
+ cwd,
47
+ '--output-format',
48
+ 'streaming-messages-json',
49
+ '--permission-mode',
50
+ 'bypassPermissions',
51
+ ...modelArgs,
52
+ ];
53
+ };
54
+ /**
55
+ * The official installer links the binary into `$GROK_HOME/bin` (default `~/.grok/bin`) and
56
+ * `~/.local/bin`. An unrelated npm package (`@vibe-kit/grok-cli`) also installs a `grok`
57
+ * binary, so name resolution alone is not enough — see `resolveGrokBuildExecutable` and the
58
+ * identity check in `utils/engine-probe.ts`.
59
+ */
60
+ export const getGrokExecutablePreference = (isWindows) => isWindows ? ['grok.exe', 'grok'] : ['grok'];
61
+ const toPowerShellLiteral = (value) => `'${value.replaceAll("'", "''")}'`;
62
+ export const toGrokBuildPowerShellEncodedCommand = (resolvedExecutablePath, promptFilePath, cwd, model) => {
63
+ // The Windows path must carry the same structured-output flags as the POSIX argv, or the
64
+ // runner would silently fall back to plain text there.
65
+ const argSegment = buildGrokBuildArgs(promptFilePath, cwd, model)
66
+ .map((arg) => ` ${toPowerShellLiteral(arg)}`)
67
+ .join('');
68
+ const scriptContent = [
69
+ "$ErrorActionPreference = 'Stop'",
70
+ '$utf8NoBom = [System.Text.UTF8Encoding]::new($false)',
71
+ '[Console]::InputEncoding = $utf8NoBom',
72
+ '[Console]::OutputEncoding = $utf8NoBom',
73
+ '$OutputEncoding = $utf8NoBom',
74
+ 'chcp 65001 > $null',
75
+ `& ${toPowerShellLiteral(resolvedExecutablePath)}${argSegment}`,
76
+ ].join('\r\n');
77
+ return Buffer.from(scriptContent, 'utf16le').toString('base64');
78
+ };
79
+ const toOutputPreview = (chunk) => {
80
+ const text = (typeof chunk === 'string' ? chunk : String(chunk)).trim();
81
+ return text.length <= OUTPUT_PREVIEW_MAX ? text : `${text.slice(0, OUTPUT_PREVIEW_MAX)}...`;
82
+ };
83
+ /**
84
+ * Pulls the final answer out of the captured NDJSON so the history fallback shows prose
85
+ * instead of a JSON dump. Mirrors the claude-code helper because the wire format is the same.
86
+ */
87
+ export const extractGrokResultText = (outputText) => {
88
+ const trimmedOutput = outputText.trim();
89
+ const lines = trimmedOutput
90
+ .split(/\r?\n/)
91
+ .map((line) => line.trim())
92
+ .filter((line) => line.length > 0);
93
+ for (let index = lines.length - 1; index >= 0; index -= 1) {
94
+ const line = lines[index];
95
+ if (!line.includes('"type":"result"')) {
96
+ continue;
97
+ }
98
+ try {
99
+ const parsed = JSON.parse(line);
100
+ if (parsed.type === 'result' && typeof parsed.result === 'string' && parsed.result.trim().length > 0) {
101
+ return parsed.result.trim();
102
+ }
103
+ }
104
+ catch {
105
+ return trimmedOutput;
106
+ }
107
+ }
108
+ return trimmedOutput;
109
+ };
110
+ const defaultDependencies = {
111
+ platform,
112
+ resolveExecutablePathsWithPreferenceAsync,
113
+ runProbeCommand,
114
+ spawn,
115
+ createWriteStream,
116
+ mkdir,
117
+ writeFile,
118
+ rm,
119
+ setupCloseWatchdog,
120
+ terminateRunnerChild,
121
+ };
122
+ export class GrokBuildRunner {
123
+ deps;
124
+ constructor(dependencies = {}) {
125
+ this.deps = { ...defaultDependencies, ...dependencies };
126
+ }
127
+ async run(opts) {
128
+ if (!opts.authPath || opts.authPath.trim().length === 0) {
129
+ logger.error('authPath is missing for trigger');
130
+ return { exitCode: 1, errorMessage: 'authPath is missing for trigger' };
131
+ }
132
+ const cwd = opts.authPath;
133
+ const logPath = join(cwd, '.agentteams', 'runner', 'log', `${opts.triggerId}.log`);
134
+ await this.deps.mkdir(dirname(logPath), { recursive: true });
135
+ const isWindows = this.deps.platform() === 'win32';
136
+ const resolvedExecutablePath = await findGrokBuildExecutable(getGrokExecutablePreference(isWindows), {
137
+ resolveExecutablePathsWithPreferenceAsync: this.deps.resolveExecutablePathsWithPreferenceAsync,
138
+ runProbeCommand: this.deps.runProbeCommand,
139
+ platform: this.deps.platform,
140
+ });
141
+ if (!resolvedExecutablePath) {
142
+ const message = "Cannot find an official Grok Build executable. Every 'grok' candidate failed the 'Grok Build TUI' identity check.";
143
+ logger.error('Grok Build executable identity check failed', { triggerId: opts.triggerId });
144
+ return { exitCode: 1, errorMessage: message };
145
+ }
146
+ // Unlike other runners this file is not a Windows-only workaround: `--prompt-file` is the
147
+ // only safe way to hand Grok a markdown prompt on every platform.
148
+ const promptFilePath = join(cwd, '.agentteams', 'runner', 'tmp', `${opts.triggerId}.prompt.md`);
149
+ await this.deps.mkdir(dirname(promptFilePath), { recursive: true });
150
+ await this.deps.writeFile(promptFilePath, opts.prompt, { encoding: 'utf8' });
151
+ const removePromptFile = async () => {
152
+ try {
153
+ await this.deps.rm(promptFilePath, { force: true });
154
+ }
155
+ catch (error) {
156
+ logger.warn('Failed to remove Grok Build prompt temp file', {
157
+ triggerId: opts.triggerId,
158
+ promptFilePath,
159
+ error: error instanceof Error ? error.message : String(error),
160
+ });
161
+ }
162
+ };
163
+ const args = buildGrokBuildArgs(promptFilePath, cwd, opts.model);
164
+ logger.info('Runner prompt prepared', {
165
+ triggerId: opts.triggerId,
166
+ promptLength: opts.prompt.length,
167
+ promptFilePath,
168
+ requestedCommand: 'grok',
169
+ resolvedExecutablePath,
170
+ platform: isWindows ? 'win32' : this.deps.platform(),
171
+ shell: false,
172
+ detached: !isWindows,
173
+ windowsWrapper: isWindows ? 'powershell.exe -EncodedCommand' : null,
174
+ });
175
+ const env = buildRunnerChildEnv(process.env, opts);
176
+ // AgentTeams never writes Grok credentials; this only stops the self-updater from
177
+ // interleaving its notice with the NDJSON stream.
178
+ env[GROK_AUTOUPDATER_ENV] = '1';
179
+ // Re-check the exact resolved path immediately before spawn. Detection and candidate
180
+ // selection can precede execution, so a replaced symlink/binary must fail closed before
181
+ // it receives the prompt file path or permission-bypass arguments.
182
+ if (!(await isGrokBuildExecutable(resolvedExecutablePath, {
183
+ runProbeCommand: this.deps.runProbeCommand,
184
+ platform: this.deps.platform,
185
+ }))) {
186
+ await removePromptFile();
187
+ const message = 'The resolved Grok Build executable changed identity before launch; execution was refused.';
188
+ logger.error('Grok Build executable identity changed before launch', { triggerId: opts.triggerId });
189
+ return { exitCode: 1, errorMessage: message };
190
+ }
191
+ let child;
192
+ try {
193
+ child = isWindows
194
+ ? this.deps.spawn('powershell.exe', [
195
+ '-NoLogo',
196
+ '-NonInteractive',
197
+ '-ExecutionPolicy',
198
+ 'Bypass',
199
+ '-EncodedCommand',
200
+ toGrokBuildPowerShellEncodedCommand(resolvedExecutablePath, promptFilePath, cwd, opts.model),
201
+ ], { cwd, detached: false, shell: false, windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'], env })
202
+ : this.deps.spawn(resolvedExecutablePath, args, {
203
+ cwd,
204
+ detached: true,
205
+ shell: false,
206
+ windowsHide: true,
207
+ stdio: ['ignore', 'pipe', 'pipe'],
208
+ env,
209
+ });
210
+ }
211
+ catch (error) {
212
+ await removePromptFile();
213
+ const message = error instanceof Error ? error.message : String(error);
214
+ logger.error('Runner process launch failed', { triggerId: opts.triggerId, error: message });
215
+ return { exitCode: 1, errorMessage: message };
216
+ }
217
+ const logStream = this.deps.createWriteStream(logPath, { flags: 'a' });
218
+ logStream.on('error', (error) => logger.warn('Runner log stream error', { triggerId: opts.triggerId, error: error.message }));
219
+ child.stdout?.pipe(logStream);
220
+ child.stderr?.pipe(logStream);
221
+ let lastOutput = '';
222
+ let lastErrorOutput = '';
223
+ let outputText = '';
224
+ const appendOutputText = (chunk) => {
225
+ if (outputText.length < OUTPUT_CAPTURE_MAX) {
226
+ outputText += chunk.slice(0, OUTPUT_CAPTURE_MAX - outputText.length);
227
+ }
228
+ };
229
+ // The head-capped capture can drop the terminal `result` line on long runs; keep it aside
230
+ // so the history fallback still ends with the final answer.
231
+ const resultLineCapturer = createResultLineCapturer();
232
+ const finalizeOutputText = () => {
233
+ const trimmed = outputText.trim();
234
+ const resultLine = resultLineCapturer.get();
235
+ if (resultLine && !trimmed.includes('"type":"result"')) {
236
+ return trimmed.length > 0 ? `${trimmed}\n${resultLine}` : resultLine;
237
+ }
238
+ return trimmed || undefined;
239
+ };
240
+ const idleTimer = { reset: () => { } };
241
+ const streamParser = createStreamJsonLineParser((entries) => {
242
+ for (const entry of entries) {
243
+ opts.onStdoutChunk?.(entry.message, entry.category, entry.toolName);
244
+ }
245
+ }, { cwd });
246
+ child.stdout?.on('data', (chunk) => {
247
+ const rawOutput = Buffer.isBuffer(chunk) ? chunk.toString('utf8') : String(chunk);
248
+ appendOutputText(rawOutput);
249
+ resultLineCapturer.push(rawOutput);
250
+ streamParser.push(rawOutput);
251
+ const output = toOutputPreview(rawOutput);
252
+ if (output.length > 0) {
253
+ lastOutput = output;
254
+ idleTimer.reset();
255
+ logger.info('Runner stdout', { triggerId: opts.triggerId, pid: child.pid, output });
256
+ }
257
+ });
258
+ child.stderr?.on('data', (chunk) => {
259
+ const output = toOutputPreview(Buffer.isBuffer(chunk) ? chunk.toString('utf8') : chunk);
260
+ if (output.length > 0) {
261
+ lastErrorOutput = output;
262
+ idleTimer.reset();
263
+ opts.onStderrChunk?.(output, 'STDERR');
264
+ logger.warn('Runner stderr', { triggerId: opts.triggerId, pid: child.pid, output });
265
+ }
266
+ });
267
+ logger.info('Runner started', { triggerId: opts.triggerId, cwd, logPath, pid: child.pid });
268
+ return await new Promise((resolve) => {
269
+ let finished = false;
270
+ let timedOut = false;
271
+ let idleTimedOut = false;
272
+ let cancelled = false;
273
+ let idleTimeoutId = null;
274
+ const startIdleTimeout = () => {
275
+ if (idleTimeoutId)
276
+ clearTimeout(idleTimeoutId);
277
+ idleTimeoutId = setTimeout(() => {
278
+ idleTimedOut = true;
279
+ timedOut = true;
280
+ logger.warn('Runner idle timeout reached; no output for configured idle period', {
281
+ triggerId: opts.triggerId,
282
+ idleTimeoutMs: opts.idleTimeoutMs,
283
+ });
284
+ this.deps.terminateRunnerChild(child, isWindows, opts.triggerId, 'timeout');
285
+ }, opts.idleTimeoutMs);
286
+ };
287
+ idleTimer.reset = startIdleTimeout;
288
+ startIdleTimeout();
289
+ const handleAbort = () => {
290
+ cancelled = true;
291
+ this.deps.terminateRunnerChild(child, isWindows, opts.triggerId, 'cancel');
292
+ };
293
+ const cleanup = async () => {
294
+ if (finished)
295
+ return;
296
+ finished = true;
297
+ if (idleTimeoutId)
298
+ clearTimeout(idleTimeoutId);
299
+ idleTimer.reset = () => { };
300
+ logStream.end();
301
+ await removePromptFile();
302
+ opts.signal?.removeEventListener('abort', handleAbort);
303
+ };
304
+ const timeoutId = setTimeout(() => {
305
+ timedOut = true;
306
+ this.deps.terminateRunnerChild(child, isWindows, opts.triggerId, 'timeout');
307
+ }, opts.timeoutMs);
308
+ if (opts.signal?.aborted)
309
+ handleAbort();
310
+ else
311
+ opts.signal?.addEventListener('abort', handleAbort, { once: true });
312
+ child.on('error', async (error) => {
313
+ clearTimeout(timeoutId);
314
+ await cleanup();
315
+ logger.error('Runner process launch failed', { triggerId: opts.triggerId, error: error.message });
316
+ resolve({ exitCode: 1, lastOutput, outputText: finalizeOutputText(), errorMessage: error.message });
317
+ });
318
+ const closeWatchdog = this.deps.setupCloseWatchdog(child, opts.triggerId);
319
+ child.on('close', async (code) => {
320
+ closeWatchdog.cancel();
321
+ clearTimeout(timeoutId);
322
+ streamParser.flush();
323
+ resultLineCapturer.flush();
324
+ await cleanup();
325
+ logger.info('Runner process closed', { triggerId: opts.triggerId, pid: child.pid, exitCode: code, timedOut });
326
+ if (timedOut) {
327
+ const finalizedOutputText = finalizeOutputText();
328
+ const resolvedOutputText = idleTimedOut && finalizedOutputText ? extractGrokResultText(finalizedOutputText) : finalizedOutputText;
329
+ resolve({
330
+ exitCode: 1,
331
+ idleTimedOut,
332
+ lastOutput,
333
+ outputText: resolvedOutputText,
334
+ errorMessage: idleTimedOut
335
+ ? `Runner idle timed out after ${Math.round(opts.idleTimeoutMs / 60_000)}m of no output`
336
+ : `Runner fail-safe timed out after ${Math.round(opts.timeoutMs / 3_600_000)}h`,
337
+ });
338
+ return;
339
+ }
340
+ if (cancelled) {
341
+ resolve({
342
+ exitCode: 1,
343
+ cancelled: true,
344
+ lastOutput,
345
+ outputText: finalizeOutputText(),
346
+ errorMessage: 'Runner cancelled by user',
347
+ });
348
+ return;
349
+ }
350
+ resolve({
351
+ exitCode: code ?? 1,
352
+ lastOutput,
353
+ outputText: finalizeOutputText(),
354
+ errorMessage: selectRunnerFailureMessage({ exitCode: code, lastErrorOutput, lastOutput }),
355
+ });
356
+ });
357
+ });
358
+ }
359
+ }
360
+ //# sourceMappingURL=grok-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok-build.js","sourceRoot":"","sources":["../../src/runners/grok-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};