open source is social v-it.org
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2026 sol pbc
3
4const CODING_AGENTS = {
5 CLAUDECODE: 'claude code',
6 GEMINI_CLI: 'gemini cli',
7 CODEX_CI: 'codex',
8};
9
10export function detectCodingAgent() {
11 for (const [envVar, name] of Object.entries(CODING_AGENTS)) {
12 if (process.env[envVar] === '1') return { name, envVar };
13 }
14 return null;
15}
16
17export function requireAgent() {
18 const agent = detectCodingAgent();
19 if (agent) return { ok: true, ...agent };
20 return { ok: false };
21}
22
23export function requireNotAgent() {
24 const agent = detectCodingAgent();
25 if (!agent) return { ok: true };
26 return { ok: false, ...agent };
27}
28
29const SANDBOX_NAMES = {
30 'claude code': 'claude',
31 'gemini cli': 'gemini',
32 'codex': 'codex',
33};
34
35export function toSandboxName(agentName) {
36 return SANDBOX_NAMES[agentName] || null;
37}