Compare commits

..

4 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
d8cb10656f Initial plan 2025-12-02 06:09:23 +00:00
Zijun Yang
a7abd8d09f fix(shell-utils): resolve command detection on Ubuntu by using shell for builtins (#1123) 2025-12-02 11:49:40 +08:00
Mingholy
c9af74816a fix: reset authType settings (#1091)
* fix: reset authType settings

* fix: failed json-output tests

* fix: sandbox exception log to stderr
2025-11-23 17:59:35 +08:00
pomelo
9cfea73207 Merge pull request #1097 from QwenLM/chore-action
fix(ci): remove non-existent label from release failure issue creation
2025-11-23 08:27:34 +08:00
3 changed files with 32 additions and 16 deletions

View File

@@ -54,6 +54,7 @@ describe('JSON output', () => {
});
it('should return a JSON error for enforced auth mismatch before running', async () => {
const originalOpenaiApiKey = process.env['OPENAI_API_KEY'];
process.env['OPENAI_API_KEY'] = 'test-key';
await rig.setup('json-output-auth-mismatch', {
settings: {
@@ -68,7 +69,7 @@ describe('JSON output', () => {
} catch (e) {
thrown = e as Error;
} finally {
delete process.env['OPENAI_API_KEY'];
process.env['OPENAI_API_KEY'] = originalOpenaiApiKey;
}
expect(thrown).toBeDefined();

View File

@@ -848,7 +848,7 @@ export async function start_sandbox(
sandboxProcess?.on('close', (code, signal) => {
process.stdin.resume();
if (code !== 0 && code !== null) {
console.log(
console.error(
`Sandbox process exited with code: ${code}, signal: ${signal}`,
);
}

View File

@@ -517,24 +517,39 @@ export function resolveCommandPath(command: string): {
try {
const isWin = process.platform === 'win32';
const checkCommand = isWin ? 'where' : 'command';
const checkArgs = isWin ? [command] : ['-v', command];
if (isWin) {
const checkCommand = 'where.exe';
const checkArgs = [command];
let result: string | null = null;
try {
result = execFileSync(checkCommand, checkArgs, {
encoding: 'utf8',
shell: isWin,
}).trim();
} catch {
console.warn(`Command ${checkCommand} not found`);
}
let result: string | null = null;
try {
result = execFileSync(checkCommand, checkArgs, {
encoding: 'utf8',
shell: false,
}).trim();
} catch {
return { path: null, error: undefined };
}
if (!result) return { path: null, error: undefined };
if (!isWin) {
return result ? { path: result } : { path: null };
} else {
const shell = '/bin/sh';
const checkArgs = ['-c', `command -v ${escapeShellArg(command, 'bash')}`];
let result: string | null = null;
try {
result = execFileSync(shell, checkArgs, {
encoding: 'utf8',
shell: false,
}).trim();
} catch {
return { path: null, error: undefined };
}
if (!result) return { path: null, error: undefined };
accessSync(result, fsConstants.X_OK);
return { path: result, error: undefined };
}
return { path: result, error: undefined };
} catch (error) {
return {
path: null,