@agentteams/runner 0.0.84 → 0.0.85-dev.209
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/dist/api-client.d.ts +2 -2
- package/dist/api-client.js +66 -66
- package/dist/api-client.js.map +1 -1
- package/dist/api-client.test.js +63 -54
- package/dist/api-client.test.js.map +1 -1
- package/dist/autostart.js +81 -81
- package/dist/autostart.js.map +1 -1
- package/dist/autostart.test.js +35 -35
- package/dist/autostart.test.js.map +1 -1
- package/dist/commands/cleanup.js +4 -4
- package/dist/commands/init.js +14 -14
- package/dist/commands/restart.js +3 -3
- package/dist/commands/start.js +10 -10
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.js +7 -7
- package/dist/commands/stop.js +7 -7
- package/dist/commands/uninstall.js +6 -6
- package/dist/commands/update.d.ts +4 -4
- package/dist/commands/update.js +20 -22
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/update.test.js +38 -42
- package/dist/commands/update.test.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +12 -12
- package/dist/config.test.js +61 -61
- package/dist/config.test.js.map +1 -1
- package/dist/daemon-control.d.ts +5 -5
- package/dist/daemon-control.js +21 -22
- package/dist/daemon-control.js.map +1 -1
- package/dist/daemon-control.test.js +29 -29
- package/dist/executable.d.ts +3 -3
- package/dist/executable.js +46 -49
- package/dist/executable.js.map +1 -1
- package/dist/executable.test.js +62 -62
- package/dist/executable.test.js.map +1 -1
- package/dist/handlers/trigger-handler.d.ts +6 -6
- package/dist/handlers/trigger-handler.js +172 -134
- package/dist/handlers/trigger-handler.js.map +1 -1
- package/dist/handlers/trigger-handler.test.js +442 -328
- package/dist/handlers/trigger-handler.test.js.map +1 -1
- package/dist/index.js +25 -25
- package/dist/logger.js +1 -1
- package/dist/pid.js +6 -6
- package/dist/poller.d.ts +7 -7
- package/dist/poller.js +54 -53
- package/dist/poller.js.map +1 -1
- package/dist/poller.test.js +209 -181
- package/dist/poller.test.js.map +1 -1
- package/dist/runners/amp.d.ts +1 -1
- package/dist/runners/amp.js +74 -81
- package/dist/runners/amp.js.map +1 -1
- package/dist/runners/antigravity.d.ts +3 -3
- package/dist/runners/antigravity.js +116 -127
- package/dist/runners/antigravity.js.map +1 -1
- package/dist/runners/antigravity.replay.test.js +25 -25
- package/dist/runners/antigravity.replay.test.js.map +1 -1
- package/dist/runners/antigravity.test.js +98 -98
- package/dist/runners/antigravity.test.js.map +1 -1
- package/dist/runners/claude-code.d.ts +1 -1
- package/dist/runners/claude-code.js +85 -84
- package/dist/runners/claude-code.js.map +1 -1
- package/dist/runners/claude-code.test.js +37 -40
- package/dist/runners/claude-code.test.js.map +1 -1
- package/dist/runners/codex.d.ts +1 -1
- package/dist/runners/codex.js +87 -96
- package/dist/runners/codex.js.map +1 -1
- package/dist/runners/codex.test.js +68 -68
- package/dist/runners/codex.test.js.map +1 -1
- package/dist/runners/index.d.ts +1 -1
- package/dist/runners/index.js +10 -10
- package/dist/runners/index.test.js +16 -16
- package/dist/runners/log-reporter.d.ts +2 -2
- package/dist/runners/log-reporter.js +12 -10
- package/dist/runners/log-reporter.js.map +1 -1
- package/dist/runners/log-reporter.test.js +70 -70
- package/dist/runners/log-reporter.test.js.map +1 -1
- package/dist/runners/opencode.d.ts +1 -1
- package/dist/runners/opencode.js +68 -75
- package/dist/runners/opencode.js.map +1 -1
- package/dist/runners/process-control.d.ts +1 -1
- package/dist/runners/process-control.js +13 -11
- package/dist/runners/process-control.js.map +1 -1
- package/dist/runners/stream-json-parser.d.ts +1 -1
- package/dist/runners/stream-json-parser.js +70 -67
- package/dist/runners/stream-json-parser.js.map +1 -1
- package/dist/runners/stream-json-parser.replay.test.js +17 -17
- package/dist/runners/stream-json-parser.replay.test.js.map +1 -1
- package/dist/runners/stream-json-parser.test.js +76 -78
- package/dist/runners/stream-json-parser.test.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/utils/auth-path-store.js +7 -7
- package/dist/utils/auth-path-store.test.js +24 -29
- package/dist/utils/auth-path-store.test.js.map +1 -1
- package/dist/utils/auto-update.d.ts +4 -4
- package/dist/utils/auto-update.js +30 -28
- package/dist/utils/auto-update.js.map +1 -1
- package/dist/utils/auto-update.test.js +30 -30
- package/dist/utils/convention-evaluator.d.ts +1 -1
- package/dist/utils/convention-evaluator.js +22 -21
- package/dist/utils/convention-evaluator.js.map +1 -1
- package/dist/utils/convention-evaluator.test.js +120 -110
- package/dist/utils/convention-evaluator.test.js.map +1 -1
- package/dist/utils/convention-sync.d.ts +3 -3
- package/dist/utils/convention-sync.js +10 -10
- package/dist/utils/convention-sync.test.js +43 -25
- package/dist/utils/convention-sync.test.js.map +1 -1
- package/dist/utils/git-worktree.js +20 -18
- package/dist/utils/git-worktree.js.map +1 -1
- package/dist/utils/git-worktree.test.js +98 -98
- package/dist/utils/git-worktree.test.js.map +1 -1
- package/dist/utils/origin-issue-safeguard.js +35 -30
- package/dist/utils/origin-issue-safeguard.js.map +1 -1
- package/dist/utils/power-save-blocker.d.ts +4 -4
- package/dist/utils/power-save-blocker.js +33 -33
- package/dist/utils/power-save-blocker.test.js +37 -37
- package/dist/utils/power-save-blocker.test.js.map +1 -1
- package/dist/utils/runner-cleanup.d.ts +3 -3
- package/dist/utils/runner-cleanup.js +13 -13
- package/dist/utils/runner-cleanup.test.js +35 -35
- package/dist/utils/runner-history.js +3 -3
- package/dist/utils/runner-history.test.js +17 -17
- package/package.json +9 -2
- package/readme.md +10 -10
package/dist/executable.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { execFileSync, spawn } from
|
|
2
|
-
import { existsSync } from
|
|
3
|
-
import { platform as getPlatform } from
|
|
4
|
-
import { join } from
|
|
5
|
-
const DEFAULT_WINDOWS_EXTENSIONS = [
|
|
1
|
+
import { execFileSync, spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { platform as getPlatform } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
const DEFAULT_WINDOWS_EXTENSIONS = ['.com', '.exe', '.bat', '.cmd'];
|
|
6
6
|
const getOutputLines = (output) => output
|
|
7
7
|
.split(/\r?\n/u)
|
|
8
8
|
.map((line) => line.trim())
|
|
@@ -11,18 +11,18 @@ const getFirstOutputLine = (output) => {
|
|
|
11
11
|
const firstLine = getOutputLines(output)[0];
|
|
12
12
|
return firstLine ?? null;
|
|
13
13
|
};
|
|
14
|
-
const getWindowsCommandBaseName = (name) => name.replace(/\.(?:cmd|exe|bat|com)$/iu,
|
|
14
|
+
const getWindowsCommandBaseName = (name) => name.replace(/\.(?:cmd|exe|bat|com)$/iu, '').toLowerCase();
|
|
15
15
|
const getWindowsPathFileName = (path) => {
|
|
16
16
|
const parts = path.split(/[\\/]/u);
|
|
17
|
-
return parts[parts.length - 1]?.toLowerCase() ??
|
|
17
|
+
return parts[parts.length - 1]?.toLowerCase() ?? '';
|
|
18
18
|
};
|
|
19
19
|
const selectPathLookupResult = (name, output, os) => {
|
|
20
|
-
if (os !==
|
|
20
|
+
if (os !== 'win32') {
|
|
21
21
|
return getFirstOutputLine(output);
|
|
22
22
|
}
|
|
23
23
|
const lines = getOutputLines(output);
|
|
24
24
|
const commandBaseName = getWindowsCommandBaseName(name);
|
|
25
|
-
if (commandBaseName ===
|
|
25
|
+
if (commandBaseName === 'npm' || commandBaseName === 'npx') {
|
|
26
26
|
const cmdShim = lines.find((line) => getWindowsPathFileName(line) === `${commandBaseName}.cmd`);
|
|
27
27
|
if (cmdShim) {
|
|
28
28
|
return cmdShim;
|
|
@@ -34,8 +34,7 @@ const getWindowsExecutableNames = (name, env) => {
|
|
|
34
34
|
if (/\.[^./\\]+$/u.test(name)) {
|
|
35
35
|
return [name];
|
|
36
36
|
}
|
|
37
|
-
const pathExt = env.PATHEXT
|
|
38
|
-
?.split(";")
|
|
37
|
+
const pathExt = env.PATHEXT?.split(';')
|
|
39
38
|
.map((entry) => entry.trim().toLowerCase())
|
|
40
39
|
.filter((entry) => entry.length > 0);
|
|
41
40
|
const extensions = pathExt && pathExt.length > 0 ? pathExt : DEFAULT_WINDOWS_EXTENSIONS;
|
|
@@ -44,7 +43,7 @@ const getWindowsExecutableNames = (name, env) => {
|
|
|
44
43
|
const getNpmGlobalBinPath = (deps) => {
|
|
45
44
|
const run = deps.execFileSync ?? execFileSync;
|
|
46
45
|
try {
|
|
47
|
-
const output = run(
|
|
46
|
+
const output = run('npm', ['prefix', '-g'], { encoding: 'utf8', windowsHide: true }).trim();
|
|
48
47
|
return output.length > 0 ? output : null;
|
|
49
48
|
}
|
|
50
49
|
catch {
|
|
@@ -54,9 +53,9 @@ const getNpmGlobalBinPath = (deps) => {
|
|
|
54
53
|
const resolveFromPathLookup = (name, deps) => {
|
|
55
54
|
const os = (deps.platform ?? getPlatform)();
|
|
56
55
|
const run = deps.execFileSync ?? execFileSync;
|
|
57
|
-
const lookupCommand = os ===
|
|
56
|
+
const lookupCommand = os === 'win32' ? 'where' : 'which';
|
|
58
57
|
try {
|
|
59
|
-
const output = run(lookupCommand, [name], { encoding:
|
|
58
|
+
const output = run(lookupCommand, [name], { encoding: 'utf8', windowsHide: true });
|
|
60
59
|
return selectPathLookupResult(name, output, os);
|
|
61
60
|
}
|
|
62
61
|
catch {
|
|
@@ -70,7 +69,7 @@ const resolveFromNpmGlobalBin = (name, deps) => {
|
|
|
70
69
|
if (!npmGlobalBinPath) {
|
|
71
70
|
return null;
|
|
72
71
|
}
|
|
73
|
-
const candidateNames = os ===
|
|
72
|
+
const candidateNames = os === 'win32' ? getWindowsExecutableNames(name, deps.env ?? process.env) : [name];
|
|
74
73
|
for (const candidateName of candidateNames) {
|
|
75
74
|
const candidatePath = join(npmGlobalBinPath, candidateName);
|
|
76
75
|
if (fileExists(candidatePath)) {
|
|
@@ -81,15 +80,15 @@ const resolveFromNpmGlobalBin = (name, deps) => {
|
|
|
81
80
|
};
|
|
82
81
|
const getKnownWindowsBinPaths = (name, deps) => {
|
|
83
82
|
const env = deps.env ?? process.env;
|
|
84
|
-
const normalizedName = name.replace(/\.(?:cmd|exe|bat|com)$/iu,
|
|
85
|
-
if (normalizedName !==
|
|
83
|
+
const normalizedName = name.replace(/\.(?:cmd|exe|bat|com)$/iu, '');
|
|
84
|
+
if (normalizedName !== 'agy') {
|
|
86
85
|
return [];
|
|
87
86
|
}
|
|
88
|
-
return env.LOCALAPPDATA ? [join(env.LOCALAPPDATA,
|
|
87
|
+
return env.LOCALAPPDATA ? [join(env.LOCALAPPDATA, 'agy', 'bin')] : [];
|
|
89
88
|
};
|
|
90
89
|
const resolveFromKnownWindowsBin = (name, deps) => {
|
|
91
90
|
const os = (deps.platform ?? getPlatform)();
|
|
92
|
-
if (os !==
|
|
91
|
+
if (os !== 'win32') {
|
|
93
92
|
return null;
|
|
94
93
|
}
|
|
95
94
|
const fileExists = deps.existsSync ?? existsSync;
|
|
@@ -107,24 +106,22 @@ const resolveFromKnownWindowsBin = (name, deps) => {
|
|
|
107
106
|
const escapeForPowerShell = (value) => `'${value.replaceAll("'", "''")}'`;
|
|
108
107
|
export const buildPowerShellCommand = (executablePath, args) => {
|
|
109
108
|
const serializedArgs = [escapeForPowerShell(executablePath), ...args.map(escapeForPowerShell)];
|
|
110
|
-
return `& ${serializedArgs.join(
|
|
109
|
+
return `& ${serializedArgs.join(' ')}`;
|
|
111
110
|
};
|
|
112
111
|
export const resolveExecutablePath = (name, deps = {}) => {
|
|
113
112
|
const os = (deps.platform ?? getPlatform)();
|
|
114
|
-
const resolvedPath = resolveFromPathLookup(name, deps)
|
|
115
|
-
?? resolveFromNpmGlobalBin(name, deps)
|
|
116
|
-
?? resolveFromKnownWindowsBin(name, deps);
|
|
113
|
+
const resolvedPath = resolveFromPathLookup(name, deps) ?? resolveFromNpmGlobalBin(name, deps) ?? resolveFromKnownWindowsBin(name, deps);
|
|
117
114
|
if (resolvedPath) {
|
|
118
115
|
return resolvedPath;
|
|
119
116
|
}
|
|
120
|
-
const checkedLocations = os ===
|
|
117
|
+
const checkedLocations = os === 'win32' ? 'PATH, npm global bin, and known app install paths' : 'PATH';
|
|
121
118
|
throw new Error(`Cannot find '${name}' executable. Checked ${checkedLocations}. Ensure it is installed and available globally.`);
|
|
122
119
|
};
|
|
123
120
|
export const resolveExecutablePathWithPreference = (name, preferredNames, deps = {}) => {
|
|
124
121
|
for (const preferredName of preferredNames) {
|
|
125
|
-
const resolvedPath = resolveFromPathLookup(preferredName, deps)
|
|
126
|
-
|
|
127
|
-
|
|
122
|
+
const resolvedPath = resolveFromPathLookup(preferredName, deps) ??
|
|
123
|
+
resolveFromNpmGlobalBin(preferredName, deps) ??
|
|
124
|
+
resolveFromKnownWindowsBin(preferredName, deps);
|
|
128
125
|
if (resolvedPath) {
|
|
129
126
|
return resolvedPath;
|
|
130
127
|
}
|
|
@@ -137,54 +134,54 @@ export const describeExecutableResolution = (name, deps = {}) => {
|
|
|
137
134
|
requestedCommand: name,
|
|
138
135
|
resolvedExecutablePath: resolveExecutablePath(name, deps),
|
|
139
136
|
platform: os,
|
|
140
|
-
shell: false
|
|
137
|
+
shell: false,
|
|
141
138
|
};
|
|
142
139
|
};
|
|
143
140
|
export const spawnExecutable = (name, args, options) => {
|
|
144
141
|
const os = (options.platform ?? getPlatform)();
|
|
145
142
|
const executablePath = resolveExecutablePath(name, options);
|
|
146
|
-
if (os ===
|
|
147
|
-
return spawn(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
buildPowerShellCommand(executablePath, args)
|
|
143
|
+
if (os === 'win32') {
|
|
144
|
+
return spawn('powershell.exe', [
|
|
145
|
+
'-NoLogo',
|
|
146
|
+
'-NonInteractive',
|
|
147
|
+
'-ExecutionPolicy',
|
|
148
|
+
'Bypass',
|
|
149
|
+
'-Command',
|
|
150
|
+
buildPowerShellCommand(executablePath, args),
|
|
154
151
|
], {
|
|
155
152
|
...options,
|
|
156
153
|
shell: false,
|
|
157
|
-
windowsHide: options.windowsHide ?? true
|
|
154
|
+
windowsHide: options.windowsHide ?? true,
|
|
158
155
|
});
|
|
159
156
|
}
|
|
160
157
|
return spawn(executablePath, args, {
|
|
161
158
|
...options,
|
|
162
|
-
shell: false
|
|
159
|
+
shell: false,
|
|
163
160
|
});
|
|
164
161
|
};
|
|
165
162
|
export const runExecutableSync = (name, args, options = {}) => {
|
|
166
163
|
const os = (options.platform ?? getPlatform)();
|
|
167
164
|
const run = options.execFileSync ?? execFileSync;
|
|
168
165
|
const executablePath = resolveExecutablePath(name, options);
|
|
169
|
-
if (os ===
|
|
170
|
-
return String(run(
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
buildPowerShellCommand(executablePath, args)
|
|
166
|
+
if (os === 'win32') {
|
|
167
|
+
return String(run('powershell.exe', [
|
|
168
|
+
'-NoLogo',
|
|
169
|
+
'-NonInteractive',
|
|
170
|
+
'-ExecutionPolicy',
|
|
171
|
+
'Bypass',
|
|
172
|
+
'-Command',
|
|
173
|
+
buildPowerShellCommand(executablePath, args),
|
|
177
174
|
], {
|
|
178
175
|
cwd: options.cwd,
|
|
179
176
|
env: options.env,
|
|
180
|
-
encoding:
|
|
181
|
-
windowsHide: true
|
|
177
|
+
encoding: 'utf8',
|
|
178
|
+
windowsHide: true,
|
|
182
179
|
}));
|
|
183
180
|
}
|
|
184
181
|
return String(run(executablePath, args, {
|
|
185
182
|
cwd: options.cwd,
|
|
186
183
|
env: options.env,
|
|
187
|
-
encoding:
|
|
184
|
+
encoding: 'utf8',
|
|
188
185
|
}));
|
|
189
186
|
};
|
|
190
187
|
//# sourceMappingURL=executable.js.map
|
package/dist/executable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executable.js","sourceRoot":"","sources":["../src/executable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAwC,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,0BAA0B,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAcpE,MAAM,cAAc,GAAG,CAAC,MAAc,EAAY,EAAE,CAClD,MAAM;KACH,KAAK,CAAC,QAAQ,CAAC;KACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEvC,MAAM,kBAAkB,GAAG,CAAC,MAAc,EAAiB,EAAE;IAC3D,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,OAAO,SAAS,IAAI,IAAI,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,IAAY,EAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"executable.js","sourceRoot":"","sources":["../src/executable.ts"],"names":[],"mappings":"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"}
|
package/dist/executable.test.js
CHANGED
|
@@ -1,108 +1,108 @@
|
|
|
1
|
-
import assert from
|
|
2
|
-
import test from
|
|
3
|
-
import { buildPowerShellCommand, resolveExecutablePath, resolveExecutablePathWithPreference } from
|
|
4
|
-
test(
|
|
5
|
-
const resolved = resolveExecutablePath(
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { buildPowerShellCommand, resolveExecutablePath, resolveExecutablePathWithPreference } from './executable.js';
|
|
4
|
+
test('resolveExecutablePath falls back to npm global bin on Windows', () => {
|
|
5
|
+
const resolved = resolveExecutablePath('opencode', {
|
|
6
6
|
env: {
|
|
7
|
-
PATHEXT:
|
|
7
|
+
PATHEXT: '.COM;.EXE;.BAT;.CMD',
|
|
8
8
|
},
|
|
9
|
-
platform: () =>
|
|
9
|
+
platform: () => 'win32',
|
|
10
10
|
execFileSync: ((command, args) => {
|
|
11
|
-
if (command ===
|
|
12
|
-
throw new Error(
|
|
11
|
+
if (command === 'where') {
|
|
12
|
+
throw new Error('not found');
|
|
13
13
|
}
|
|
14
|
-
if (command ===
|
|
15
|
-
return
|
|
14
|
+
if (command === 'npm' && args[0] === 'prefix') {
|
|
15
|
+
return 'C:\\Users\\rlaru\\AppData\\Roaming\\npm\n';
|
|
16
16
|
}
|
|
17
17
|
throw new Error(`unexpected command: ${command}`);
|
|
18
18
|
}),
|
|
19
|
-
existsSync: ((path) => /AppData[\\/]+Roaming[\\/]+npm[\\/]+opencode\.cmd$/u.test(path))
|
|
19
|
+
existsSync: ((path) => /AppData[\\/]+Roaming[\\/]+npm[\\/]+opencode\.cmd$/u.test(path)),
|
|
20
20
|
});
|
|
21
21
|
assert.match(resolved, /C:\\Users\\rlaru\\AppData\\Roaming\\npm[\\/]opencode\.cmd$/u);
|
|
22
22
|
});
|
|
23
|
-
test(
|
|
24
|
-
const resolved = resolveExecutablePath(
|
|
25
|
-
platform: () =>
|
|
23
|
+
test('resolveExecutablePath prefers npm.cmd when Windows PATH lookup returns npm first', () => {
|
|
24
|
+
const resolved = resolveExecutablePath('npm', {
|
|
25
|
+
platform: () => 'win32',
|
|
26
26
|
execFileSync: ((command, args) => {
|
|
27
|
-
if (command ===
|
|
28
|
-
return
|
|
27
|
+
if (command === 'where' && args[0] === 'npm') {
|
|
28
|
+
return 'C:\\nvm4w\\nodejs\\npm\nC:\\nvm4w\\nodejs\\npm.cmd\n';
|
|
29
29
|
}
|
|
30
|
-
throw new Error(`unexpected command: ${command} ${args.join(
|
|
31
|
-
})
|
|
30
|
+
throw new Error(`unexpected command: ${command} ${args.join(' ')}`);
|
|
31
|
+
}),
|
|
32
32
|
});
|
|
33
|
-
assert.equal(resolved,
|
|
33
|
+
assert.equal(resolved, 'C:\\nvm4w\\nodejs\\npm.cmd');
|
|
34
34
|
});
|
|
35
|
-
test(
|
|
36
|
-
const resolved = resolveExecutablePath(
|
|
35
|
+
test('resolveExecutablePath falls back to Antigravity local app bin on Windows', () => {
|
|
36
|
+
const resolved = resolveExecutablePath('agy', {
|
|
37
37
|
env: {
|
|
38
|
-
LOCALAPPDATA:
|
|
39
|
-
PATHEXT:
|
|
38
|
+
LOCALAPPDATA: 'C:\\Users\\rlaru\\AppData\\Local',
|
|
39
|
+
PATHEXT: '.COM;.EXE;.BAT;.CMD',
|
|
40
40
|
},
|
|
41
|
-
platform: () =>
|
|
41
|
+
platform: () => 'win32',
|
|
42
42
|
execFileSync: ((command, args) => {
|
|
43
|
-
if (command ===
|
|
44
|
-
throw new Error(
|
|
43
|
+
if (command === 'where') {
|
|
44
|
+
throw new Error('not found');
|
|
45
45
|
}
|
|
46
|
-
if (command ===
|
|
47
|
-
throw new Error(
|
|
46
|
+
if (command === 'npm' && args?.[0] === 'prefix') {
|
|
47
|
+
throw new Error('npm unavailable');
|
|
48
48
|
}
|
|
49
49
|
throw new Error(`unexpected command: ${command}`);
|
|
50
50
|
}),
|
|
51
|
-
existsSync: ((path) => /AppData[\\/]+Local[\\/]+agy[\\/]+bin[\\/]+agy\.exe$/u.test(path))
|
|
51
|
+
existsSync: ((path) => /AppData[\\/]+Local[\\/]+agy[\\/]+bin[\\/]+agy\.exe$/u.test(path)),
|
|
52
52
|
});
|
|
53
53
|
assert.match(resolved, /C:\\Users\\rlaru\\AppData\\Local[\\/]agy[\\/]bin[\\/]agy\.exe$/u);
|
|
54
54
|
});
|
|
55
|
-
test(
|
|
56
|
-
const resolved = resolveExecutablePath(
|
|
57
|
-
platform: () =>
|
|
55
|
+
test('resolveExecutablePath prefers PATH lookup results', () => {
|
|
56
|
+
const resolved = resolveExecutablePath('codex', {
|
|
57
|
+
platform: () => 'linux',
|
|
58
58
|
execFileSync: ((command) => {
|
|
59
|
-
if (command ===
|
|
60
|
-
return
|
|
59
|
+
if (command === 'which') {
|
|
60
|
+
return '/usr/local/bin/codex\n';
|
|
61
61
|
}
|
|
62
62
|
throw new Error(`unexpected command: ${command}`);
|
|
63
|
-
})
|
|
63
|
+
}),
|
|
64
64
|
});
|
|
65
|
-
assert.equal(resolved,
|
|
65
|
+
assert.equal(resolved, '/usr/local/bin/codex');
|
|
66
66
|
});
|
|
67
|
-
test(
|
|
68
|
-
const resolved = resolveExecutablePathWithPreference(
|
|
69
|
-
platform: () =>
|
|
67
|
+
test('resolveExecutablePathWithPreference prefers opencode.cmd on Windows', () => {
|
|
68
|
+
const resolved = resolveExecutablePathWithPreference('opencode', ['opencode.cmd', 'opencode'], {
|
|
69
|
+
platform: () => 'win32',
|
|
70
70
|
execFileSync: ((command, args) => {
|
|
71
|
-
if (command ===
|
|
72
|
-
return
|
|
71
|
+
if (command === 'where' && args[0] === 'opencode.cmd') {
|
|
72
|
+
return 'C:\\Users\\rlaru\\AppData\\Roaming\\npm\\opencode.cmd\n';
|
|
73
73
|
}
|
|
74
|
-
if (command ===
|
|
75
|
-
return
|
|
74
|
+
if (command === 'where' && args[0] === 'opencode') {
|
|
75
|
+
return 'C:\\Users\\rlaru\\AppData\\Roaming\\npm\\opencode\n';
|
|
76
76
|
}
|
|
77
|
-
throw new Error(`unexpected command: ${command} ${args.join(
|
|
78
|
-
})
|
|
77
|
+
throw new Error(`unexpected command: ${command} ${args.join(' ')}`);
|
|
78
|
+
}),
|
|
79
79
|
});
|
|
80
|
-
assert.equal(resolved,
|
|
80
|
+
assert.equal(resolved, 'C:\\Users\\rlaru\\AppData\\Roaming\\npm\\opencode.cmd');
|
|
81
81
|
});
|
|
82
|
-
test(
|
|
83
|
-
const resolved = resolveExecutablePathWithPreference(
|
|
82
|
+
test('resolveExecutablePathWithPreference falls back to agy.exe for preferred agy names on Windows', () => {
|
|
83
|
+
const resolved = resolveExecutablePathWithPreference('agy', ['agy.cmd', 'agy'], {
|
|
84
84
|
env: {
|
|
85
|
-
LOCALAPPDATA:
|
|
86
|
-
PATHEXT:
|
|
85
|
+
LOCALAPPDATA: 'C:\\Users\\rlaru\\AppData\\Local',
|
|
86
|
+
PATHEXT: '.COM;.EXE;.BAT;.CMD',
|
|
87
87
|
},
|
|
88
|
-
platform: () =>
|
|
88
|
+
platform: () => 'win32',
|
|
89
89
|
execFileSync: ((command, args) => {
|
|
90
|
-
if (command ===
|
|
91
|
-
throw new Error(
|
|
90
|
+
if (command === 'where') {
|
|
91
|
+
throw new Error('not found');
|
|
92
92
|
}
|
|
93
|
-
if (command ===
|
|
94
|
-
throw new Error(
|
|
93
|
+
if (command === 'npm' && args?.[0] === 'prefix') {
|
|
94
|
+
throw new Error('npm unavailable');
|
|
95
95
|
}
|
|
96
|
-
throw new Error(`unexpected command: ${command} ${args?.join(
|
|
96
|
+
throw new Error(`unexpected command: ${command} ${args?.join(' ') ?? ''}`);
|
|
97
97
|
}),
|
|
98
|
-
existsSync: ((path) => /AppData[\\/]+Local[\\/]+agy[\\/]+bin[\\/]+agy\.exe$/u.test(path))
|
|
98
|
+
existsSync: ((path) => /AppData[\\/]+Local[\\/]+agy[\\/]+bin[\\/]+agy\.exe$/u.test(path)),
|
|
99
99
|
});
|
|
100
100
|
assert.match(resolved, /C:\\Users\\rlaru\\AppData\\Local[\\/]agy[\\/]bin[\\/]agy\.exe$/u);
|
|
101
101
|
});
|
|
102
|
-
test(
|
|
103
|
-
const command = buildPowerShellCommand(
|
|
104
|
-
|
|
105
|
-
"line 1\nline '2'"
|
|
102
|
+
test('buildPowerShellCommand preserves multiline arguments and escapes single quotes', () => {
|
|
103
|
+
const command = buildPowerShellCommand('C:\\Users\\rlaru\\AppData\\Roaming\\npm\\opencode.cmd', [
|
|
104
|
+
'run',
|
|
105
|
+
"line 1\nline '2'",
|
|
106
106
|
]);
|
|
107
107
|
assert.equal(command, "& 'C:\\Users\\rlaru\\AppData\\Roaming\\npm\\opencode.cmd' 'run' 'line 1\nline ''2'''");
|
|
108
108
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executable.test.js","sourceRoot":"","sources":["../src/executable.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"executable.test.js","sourceRoot":"","sources":["../src/executable.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type { DaemonTrigger, RuntimeConfig } from
|
|
2
|
-
import { DaemonApiClient } from
|
|
3
|
-
import { createRunnerFactory } from
|
|
4
|
-
import { TriggerLogReporter } from
|
|
5
|
-
import { resolveRunnerHistoryPaths } from
|
|
1
|
+
import type { DaemonTrigger, RuntimeConfig } from '../types.js';
|
|
2
|
+
import { DaemonApiClient } from '../api-client.js';
|
|
3
|
+
import { createRunnerFactory } from '../runners/index.js';
|
|
4
|
+
import { TriggerLogReporter } from '../runners/log-reporter.js';
|
|
5
|
+
import { resolveRunnerHistoryPaths } from '../utils/runner-history.js';
|
|
6
6
|
type TriggerHandlerOptions = {
|
|
7
7
|
config: RuntimeConfig;
|
|
8
8
|
client: DaemonApiClient;
|
|
9
9
|
onAuthPathDiscovered?: (authPath: string) => void;
|
|
10
10
|
};
|
|
11
|
-
type ReporterLike = Pick<TriggerLogReporter,
|
|
11
|
+
type ReporterLike = Pick<TriggerLogReporter, 'start' | 'append' | 'stop'>;
|
|
12
12
|
type ReadHistoryFile = (path: string, encoding: BufferEncoding) => Promise<string>;
|
|
13
13
|
type WriteHistoryFile = (path: string, content: string) => Promise<void>;
|
|
14
14
|
type FetchAttachmentFile = (downloadUrl: string) => Promise<Uint8Array>;
|