mirror of
https://github.com/PR0M3TH3AN/TORCH.git
synced 2026-10-27 07:51:52 +00:00
Fix: Correctly detect agent platform for locks
- Updated `src/utils.mjs` to detect 'claude' platform via `CLAUDE_API_KEY`, `ANTHROPIC_API_KEY`, or `CLAUDE_SESSION_ID`. - Updated `scripts/agent/scheduler-utils.mjs` `getSafeEnv` to preserve `JULES_`, `CODEX_`, `CLAUDE_`, `ANTHROPIC_`, and `GOOSE_` environment variables when spawning child processes. - Updated `scripts/agent/run-scheduler-cycle.mjs` to use `detectPlatform()` as a fallback for `AGENT_PLATFORM` instead of hardcoding `'codex'`, ensuring the correct platform is used for lock creation. - Added unit tests for `detectPlatform` in `test/utils.test.mjs`. This resolves the issue where lock cards displayed "Unknown" or incorrect platforms. Co-authored-by: PR0M3TH3AN <[email protected]>
This commit is contained in:
1 parent
a5c8912487
commit
ae2e382bfd
4 files changed
+69
-3
No files matched your search
@@ -25,6 +25,8 @@ import {
|
||||
summarizeLockFailureReasons,
|
||||
} from './scheduler-lock.mjs';
|
||||
|
||||
import { detectPlatform } from '../../src/utils.mjs';
|
||||
|
||||
const VALID_CADENCES = new Set(['daily', 'weekly']);
|
||||
const ALL_EXCLUDED_REASON = 'All roster tasks currently claimed by other agents';
|
||||
const FAILURE_CATEGORY = {
|
||||
@@ -35,7 +37,7 @@ const FAILURE_CATEGORY = {
|
||||
};
|
||||
|
||||
function parseArgs(argv) {
|
||||
const args = { cadence: null, platform: process.env.AGENT_PLATFORM || 'codex', model: process.env.AGENT_MODEL || null };
|
||||
const args = { cadence: null, platform: process.env.AGENT_PLATFORM || detectPlatform() || 'unknown', model: process.env.AGENT_MODEL || null };
|
||||
for (let i = 0; i < argv.length; i += 1) {
|
||||
const value = argv[i];
|
||||
if (!value.startsWith('--') && !args.cadence) {
|
||||
|
||||
@@ -20,7 +20,12 @@ export function getSafeEnv() {
|
||||
key.startsWith('NOSTR_') ||
|
||||
key.startsWith('TORCH_') ||
|
||||
key.startsWith('SCHEDULER_') ||
|
||||
key.startsWith('AGENT_')) {
|
||||
key.startsWith('AGENT_') ||
|
||||
key.startsWith('JULES_') ||
|
||||
key.startsWith('CODEX_') ||
|
||||
key.startsWith('CLAUDE_') ||
|
||||
key.startsWith('ANTHROPIC_') ||
|
||||
key.startsWith('GOOSE_')) {
|
||||
safeEnv[key] = process.env[key];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ export function detectPlatform() {
|
||||
if (process.env.JULES_API_KEY || process.env.JULES_SESSION_ID) return 'jules';
|
||||
if (process.env.CODEX_API_KEY || process.env.CODEX_SESSION_ID) return 'codex';
|
||||
if (process.env.GOOSE_API_KEY || process.env.GOOSE_SESSION_ID) return 'goose';
|
||||
if (process.env.CLAUDE_API_KEY || process.env.ANTHROPIC_API_KEY || process.env.CLAUDE_SESSION_ID) return 'claude';
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
+59
-1
@@ -2,7 +2,7 @@ import { describe, it, after } from 'node:test';
|
||||
import assert from 'node:assert';
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { getIsoWeekStr, todayDateStr, nowUnix, ensureDir } from '../src/utils.mjs';
|
||||
import { getIsoWeekStr, todayDateStr, nowUnix, ensureDir, detectPlatform } from '../src/utils.mjs';
|
||||
|
||||
describe('Date Utilities', () => {
|
||||
describe('todayDateStr', () => {
|
||||
@@ -59,6 +59,64 @@ describe('Date Utilities', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('Platform Utilities', () => {
|
||||
describe('detectPlatform', () => {
|
||||
const originalEnv = { ...process.env };
|
||||
|
||||
// Helper to clear relevant env vars
|
||||
const clearEnv = () => {
|
||||
delete process.env.JULES_SESSION_ID;
|
||||
delete process.env.JULES_API_KEY;
|
||||
delete process.env.CODEX_SESSION_ID;
|
||||
delete process.env.CODEX_API_KEY;
|
||||
delete process.env.GOOSE_SESSION_ID;
|
||||
delete process.env.GOOSE_API_KEY;
|
||||
delete process.env.CLAUDE_SESSION_ID;
|
||||
delete process.env.CLAUDE_API_KEY;
|
||||
delete process.env.ANTHROPIC_API_KEY;
|
||||
};
|
||||
|
||||
after(() => {
|
||||
process.env = originalEnv;
|
||||
});
|
||||
|
||||
it('detects jules', () => {
|
||||
clearEnv();
|
||||
process.env.JULES_SESSION_ID = 'test';
|
||||
assert.strictEqual(detectPlatform(), 'jules');
|
||||
});
|
||||
|
||||
it('detects codex', () => {
|
||||
clearEnv();
|
||||
process.env.CODEX_API_KEY = 'test';
|
||||
assert.strictEqual(detectPlatform(), 'codex');
|
||||
});
|
||||
|
||||
it('detects goose', () => {
|
||||
clearEnv();
|
||||
process.env.GOOSE_SESSION_ID = 'test';
|
||||
assert.strictEqual(detectPlatform(), 'goose');
|
||||
});
|
||||
|
||||
it('detects claude via CLAUDE_API_KEY', () => {
|
||||
clearEnv();
|
||||
process.env.CLAUDE_API_KEY = 'test';
|
||||
assert.strictEqual(detectPlatform(), 'claude');
|
||||
});
|
||||
|
||||
it('detects claude via ANTHROPIC_API_KEY', () => {
|
||||
clearEnv();
|
||||
process.env.ANTHROPIC_API_KEY = 'test';
|
||||
assert.strictEqual(detectPlatform(), 'claude');
|
||||
});
|
||||
|
||||
it('returns null if no platform detected', () => {
|
||||
clearEnv();
|
||||
assert.strictEqual(detectPlatform(), null);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('File Utilities', () => {
|
||||
describe('ensureDir', () => {
|
||||
const tempBase = fs.mkdtempSync(path.join(process.cwd(), 'test-utils-'));
|
||||
|
||||
Reference in new issue
Block a user