πŸ“„ File detail

tools/REPLTool/constants.ts

🧩 .tsπŸ“ 47 linesπŸ’Ύ 1,799 bytesπŸ“ text
← Back to All Files

🎯 Use case

This module implements the β€œREPLTool” tool (R E P L) β€” something the model can call at runtime alongside other agent tools. On the API surface it exposes REPL_TOOL_NAME, isReplModeEnabled, and REPL_ONLY_TOOLS β€” mainly types, interfaces, or factory objects. It composes internal code from utils, AgentTool, BashTool, FileEditTool, and FileReadTool (relative imports).

Generated from folder role, exports, dependency roots, and inline comments β€” not hand-reviewed for every path.

🧠 Inline summary

import { isEnvDefinedFalsy, isEnvTruthy } from '../../utils/envUtils.js' import { AGENT_TOOL_NAME } from '../AgentTool/constants.js' import { BASH_TOOL_NAME } from '../BashTool/toolName.js' import { FILE_EDIT_TOOL_NAME } from '../FileEditTool/constants.js' import { FILE_READ_TOOL_NAME } from '../FileReadTool/prompt.js'

πŸ“€ Exports (heuristic)

  • REPL_TOOL_NAME
  • isReplModeEnabled
  • REPL_ONLY_TOOLS

πŸ–₯️ Source preview

import { isEnvDefinedFalsy, isEnvTruthy } from '../../utils/envUtils.js'
import { AGENT_TOOL_NAME } from '../AgentTool/constants.js'
import { BASH_TOOL_NAME } from '../BashTool/toolName.js'
import { FILE_EDIT_TOOL_NAME } from '../FileEditTool/constants.js'
import { FILE_READ_TOOL_NAME } from '../FileReadTool/prompt.js'
import { FILE_WRITE_TOOL_NAME } from '../FileWriteTool/prompt.js'
import { GLOB_TOOL_NAME } from '../GlobTool/prompt.js'
import { GREP_TOOL_NAME } from '../GrepTool/prompt.js'
import { NOTEBOOK_EDIT_TOOL_NAME } from '../NotebookEditTool/constants.js'

export const REPL_TOOL_NAME = 'REPL'

/**
 * REPL mode is default-on for ants in the interactive CLI (opt out with
 * CLAUDE_CODE_REPL=0). The legacy CLAUDE_REPL_MODE=1 also forces it on.
 *
 * SDK entrypoints (sdk-ts, sdk-py, sdk-cli) are NOT defaulted on β€” SDK
 * consumers script direct tool calls (Bash, Read, etc.) and REPL mode
 * hides those tools. USER_TYPE is a build-time --define, so the ant-native
 * binary would otherwise force REPL mode on every SDK subprocess regardless
 * of the env the caller passes.
 */
export function isReplModeEnabled(): boolean {
  if (isEnvDefinedFalsy(process.env.CLAUDE_CODE_REPL)) return false
  if (isEnvTruthy(process.env.CLAUDE_REPL_MODE)) return true
  return (
    process.env.USER_TYPE === 'ant' &&
    process.env.CLAUDE_CODE_ENTRYPOINT === 'cli'
  )
}

/**
 * Tools that are only accessible via REPL when REPL mode is enabled.
 * When REPL mode is on, these tools are hidden from Claude's direct use,
 * forcing Claude to use REPL for batch operations.
 */
export const REPL_ONLY_TOOLS = new Set([
  FILE_READ_TOOL_NAME,
  FILE_WRITE_TOOL_NAME,
  FILE_EDIT_TOOL_NAME,
  GLOB_TOOL_NAME,
  GREP_TOOL_NAME,
  BASH_TOOL_NAME,
  NOTEBOOK_EDIT_TOOL_NAME,
  AGENT_TOOL_NAME,
])