aws-cdk
Version:
AWS CDK Toolkit CLI, the command line tool for CDK apps
62 lines • 8.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.guessAgent = guessAgent;
/**
* Environment variables that indicate an AI agent is executing the command.
*
* Only variables set by the agent itself when running commands belong here.
* Variables that merely indicate an agent-capable IDE or environment
* (e.g. CURSOR_TRACE_ID, REPL_ID) do not: a human typing in such a terminal
* would be misdetected.
*
* Each entry links to the documentation or source code that establishes the variable.
*/
const AGENT_ENV_VARS = [
// https://github.com/vercel/detect-agent/blob/3ab1df1e4eaae153cf66f4a5018e4c5854855212/README.md#the-ai_agent-standard
'AI_AGENT',
// Amp, Crush, Goose, opencode; e.g. https://github.com/charmbracelet/crush/blob/7d78d7422a92918441a68d01d96d48fa3b9fd9db/internal/shell/shell.go#L46
'AGENT',
// https://code.claude.com/docs/en/env-vars#variables
'CLAUDECODE',
// https://github.com/openai/codex/blob/4a942885c8b4745757a9f86ad2075e16c42483c5/codex-rs/protocol/src/shell_environment.rs#L7
'CODEX_THREAD_ID',
// https://github.com/openai/codex/blob/4a942885c8b4745757a9f86ad2075e16c42483c5/codex-rs/core/src/spawn.rs#L26
'CODEX_SANDBOX',
// https://github.com/openai/codex/blob/4a942885c8b4745757a9f86ad2075e16c42483c5/codex-rs/core/src/unified_exec/process_manager.rs#L93
'CODEX_CI',
// https://cursor.com/docs/agent/terminal#disable-heavy-prompts-for-cursor-sessions
'CURSOR_AGENT',
// https://code.visualstudio.com/updates/v1_121#_agentaware-terminal-commands
'VSCODE_AGENT',
// https://github.com/cline/cline/blob/16875140fbc7bae51aad79c203837b4f51e54aa5/apps/vscode/src/hosts/vscode/terminal/VscodeTerminalRegistry.ts#L31
'CLINE_ACTIVE',
// https://google-gemini.github.io/gemini-cli/docs/tools/shell.html#environment-variables
'GEMINI_CLI',
// https://github.com/anomalyco/opencode/blob/b155b15694dbcc6768f11d2f25cc2bdd1f738ab4/packages/opencode/src/index.ts#L76
'OPENCODE',
// https://github.com/github/copilot-cli/blob/3f9c5e1ce792150a852804132e2b08c58e9a8e95/changelog.md#L1971
'COPILOT_CLI',
// https://docs.augmentcode.com/cli/reference#shell-environment
'AUGMENT_AGENT',
// https://github.com/QwenLM/qwen-code/blob/099a71c9364473303adb31e0dfb5f488b31634d9/packages/core/src/services/shellExecutionService.ts#L806
'QWEN_CODE',
];
/**
* Guess whether we're being executed by an AI agent
*
* It's hard for us to say `false` for sure, so we only respond
* with `yes` or `don't know`.
*/
function guessAgent() {
if (AGENT_ENV_VARS.some((envVar) => process.env[envVar])) {
return true;
}
// Amazon Q CLI and Kiro identify themselves in the value of AWS_EXECUTION_ENV
// https://github.com/aws/amazon-q-developer-cli/blob/15cc8f3cd18c4272925ce1c7053268eedff1ea0a/crates/chat-cli/src/cli/chat/consts.rs#L31
const awsExecutionEnv = (process.env.AWS_EXECUTION_ENV ?? '').toLocaleLowerCase();
if (awsExecutionEnv.includes('amazonq') || awsExecutionEnv.includes('kiro')) {
return true;
}
return undefined;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Vlc3MtYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJndWVzcy1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStDQSxnQ0FhQztBQTVERDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGNBQWMsR0FBRztJQUNyQix1SEFBdUg7SUFDdkgsVUFBVTtJQUNWLHFKQUFxSjtJQUNySixPQUFPO0lBQ1AscURBQXFEO0lBQ3JELFlBQVk7SUFDWiw4SEFBOEg7SUFDOUgsaUJBQWlCO0lBQ2pCLCtHQUErRztJQUMvRyxlQUFlO0lBQ2Ysc0lBQXNJO0lBQ3RJLFVBQVU7SUFDVixtRkFBbUY7SUFDbkYsY0FBYztJQUNkLDZFQUE2RTtJQUM3RSxjQUFjO0lBQ2QsbUpBQW1KO0lBQ25KLGNBQWM7SUFDZCx5RkFBeUY7SUFDekYsWUFBWTtJQUNaLHlIQUF5SDtJQUN6SCxVQUFVO0lBQ1YseUdBQXlHO0lBQ3pHLGFBQWE7SUFDYiwrREFBK0Q7SUFDL0QsZUFBZTtJQUNmLDZJQUE2STtJQUM3SSxXQUFXO0NBQ1osQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0gsU0FBZ0IsVUFBVTtJQUN4QixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSx5SUFBeUk7SUFDekksTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDbEYsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBpbmRpY2F0ZSBhbiBBSSBhZ2VudCBpcyBleGVjdXRpbmcgdGhlIGNvbW1hbmQuXG4gKlxuICogT25seSB2YXJpYWJsZXMgc2V0IGJ5IHRoZSBhZ2VudCBpdHNlbGYgd2hlbiBydW5uaW5nIGNvbW1hbmRzIGJlbG9uZyBoZXJlLlxuICogVmFyaWFibGVzIHRoYXQgbWVyZWx5IGluZGljYXRlIGFuIGFnZW50LWNhcGFibGUgSURFIG9yIGVudmlyb25tZW50XG4gKiAoZS5nLiBDVVJTT1JfVFJBQ0VfSUQsIFJFUExfSUQpIGRvIG5vdDogYSBodW1hbiB0eXBpbmcgaW4gc3VjaCBhIHRlcm1pbmFsXG4gKiB3b3VsZCBiZSBtaXNkZXRlY3RlZC5cbiAqXG4gKiBFYWNoIGVudHJ5IGxpbmtzIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBjb2RlIHRoYXQgZXN0YWJsaXNoZXMgdGhlIHZhcmlhYmxlLlxuICovXG5jb25zdCBBR0VOVF9FTlZfVkFSUyA9IFtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9kZXRlY3QtYWdlbnQvYmxvYi8zYWIxZGYxZTRlYWFlMTUzY2Y2NmY0YTUwMThlNGM1ODU0ODU1MjEyL1JFQURNRS5tZCN0aGUtYWlfYWdlbnQtc3RhbmRhcmRcbiAgJ0FJX0FHRU5UJyxcbiAgLy8gQW1wLCBDcnVzaCwgR29vc2UsIG9wZW5jb2RlOyBlLmcuIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFybWJyYWNlbGV0L2NydXNoL2Jsb2IvN2Q3OGQ3NDIyYTkyOTE4NDQxYTY4ZDAxZDk2ZDQ4ZmEzYjlmZDlkYi9pbnRlcm5hbC9zaGVsbC9zaGVsbC5nbyNMNDZcbiAgJ0FHRU5UJyxcbiAgLy8gaHR0cHM6Ly9jb2RlLmNsYXVkZS5jb20vZG9jcy9lbi9lbnYtdmFycyN2YXJpYWJsZXNcbiAgJ0NMQVVERUNPREUnLFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vb3BlbmFpL2NvZGV4L2Jsb2IvNGE5NDI4ODVjOGI0NzQ1NzU3YTlmODZhZDIwNzVlMTZjNDI0ODNjNS9jb2RleC1ycy9wcm90b2NvbC9zcmMvc2hlbGxfZW52aXJvbm1lbnQucnMjTDdcbiAgJ0NPREVYX1RIUkVBRF9JRCcsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYWkvY29kZXgvYmxvYi80YTk0Mjg4NWM4YjQ3NDU3NTdhOWY4NmFkMjA3NWUxNmM0MjQ4M2M1L2NvZGV4LXJzL2NvcmUvc3JjL3NwYXduLnJzI0wyNlxuICAnQ09ERVhfU0FOREJPWCcsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuYWkvY29kZXgvYmxvYi80YTk0Mjg4NWM4YjQ3NDU3NTdhOWY4NmFkMjA3NWUxNmM0MjQ4M2M1L2NvZGV4LXJzL2NvcmUvc3JjL3VuaWZpZWRfZXhlYy9wcm9jZXNzX21hbmFnZXIucnMjTDkzXG4gICdDT0RFWF9DSScsXG4gIC8vIGh0dHBzOi8vY3Vyc29yLmNvbS9kb2NzL2FnZW50L3Rlcm1pbmFsI2Rpc2FibGUtaGVhdnktcHJvbXB0cy1mb3ItY3Vyc29yLXNlc3Npb25zXG4gICdDVVJTT1JfQUdFTlQnLFxuICAvLyBodHRwczovL2NvZGUudmlzdWFsc3R1ZGlvLmNvbS91cGRhdGVzL3YxXzEyMSNfYWdlbnRhd2FyZS10ZXJtaW5hbC1jb21tYW5kc1xuICAnVlNDT0RFX0FHRU5UJyxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2NsaW5lL2NsaW5lL2Jsb2IvMTY4NzUxNDBmYmM3YmFlNTFhYWQ3OWMyMDM4MzdiNGY1MWU1NGFhNS9hcHBzL3ZzY29kZS9zcmMvaG9zdHMvdnNjb2RlL3Rlcm1pbmFsL1ZzY29kZVRlcm1pbmFsUmVnaXN0cnkudHMjTDMxXG4gICdDTElORV9BQ1RJVkUnLFxuICAvLyBodHRwczovL2dvb2dsZS1nZW1pbmkuZ2l0aHViLmlvL2dlbWluaS1jbGkvZG9jcy90b29scy9zaGVsbC5odG1sI2Vudmlyb25tZW50LXZhcmlhYmxlc1xuICAnR0VNSU5JX0NMSScsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbm9tYWx5Y28vb3BlbmNvZGUvYmxvYi9iMTU1YjE1Njk0ZGJjYzY3NjhmMTFkMmYyNWNjMmJkZDFmNzM4YWI0L3BhY2thZ2VzL29wZW5jb2RlL3NyYy9pbmRleC50cyNMNzZcbiAgJ09QRU5DT0RFJyxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9jb3BpbG90LWNsaS9ibG9iLzNmOWM1ZTFjZTc5MjE1MGE4NTI4MDQxMzJlMmIwOGM1OGU5YThlOTUvY2hhbmdlbG9nLm1kI0wxOTcxXG4gICdDT1BJTE9UX0NMSScsXG4gIC8vIGh0dHBzOi8vZG9jcy5hdWdtZW50Y29kZS5jb20vY2xpL3JlZmVyZW5jZSNzaGVsbC1lbnZpcm9ubWVudFxuICAnQVVHTUVOVF9BR0VOVCcsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Rd2VuTE0vcXdlbi1jb2RlL2Jsb2IvMDk5YTcxYzkzNjQ0NzMzMDNhZGIzMWUwZGZiNWY0ODhiMzE2MzRkOS9wYWNrYWdlcy9jb3JlL3NyYy9zZXJ2aWNlcy9zaGVsbEV4ZWN1dGlvblNlcnZpY2UudHMjTDgwNlxuICAnUVdFTl9DT0RFJyxcbl07XG5cbi8qKlxuICogR3Vlc3Mgd2hldGhlciB3ZSdyZSBiZWluZyBleGVjdXRlZCBieSBhbiBBSSBhZ2VudFxuICpcbiAqIEl0J3MgaGFyZCBmb3IgdXMgdG8gc2F5IGBmYWxzZWAgZm9yIHN1cmUsIHNvIHdlIG9ubHkgcmVzcG9uZFxuICogd2l0aCBgeWVzYCBvciBgZG9uJ3Qga25vd2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBndWVzc0FnZW50KCk6IHRydWUgfCB1bmRlZmluZWQge1xuICBpZiAoQUdFTlRfRU5WX1ZBUlMuc29tZSgoZW52VmFyKSA9PiBwcm9jZXNzLmVudltlbnZWYXJdKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gQW1hem9uIFEgQ0xJIGFuZCBLaXJvIGlkZW50aWZ5IHRoZW1zZWx2ZXMgaW4gdGhlIHZhbHVlIG9mIEFXU19FWEVDVVRJT05fRU5WXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYW1hem9uLXEtZGV2ZWxvcGVyLWNsaS9ibG9iLzE1Y2M4ZjNjZDE4YzQyNzI5MjVjZTFjNzA1MzI2OGVlZGZmMWVhMGEvY3JhdGVzL2NoYXQtY2xpL3NyYy9jbGkvY2hhdC9jb25zdHMucnMjTDMxXG4gIGNvbnN0IGF3c0V4ZWN1dGlvbkVudiA9IChwcm9jZXNzLmVudi5BV1NfRVhFQ1VUSU9OX0VOViA/PyAnJykudG9Mb2NhbGVMb3dlckNhc2UoKTtcbiAgaWYgKGF3c0V4ZWN1dGlvbkVudi5pbmNsdWRlcygnYW1hem9ucScpIHx8IGF3c0V4ZWN1dGlvbkVudi5pbmNsdWRlcygna2lybycpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19