Repository Public
1import { askOwnerTool, finishTool, proposeCriteriaTool, updateCriteriaTool } from './control.js';2import { editFileTool, listDirTool, readArtifactTool, readFileTool, searchTool, writeFileTool } from './files.js';3import { gitCommitTool, gitDiffTool, gitPushTool, gitStatusTool } from './git.js';4import { shellTool } from './shell.js';5import type { Tool } from './types.js';67export * from './types.js';8export * from './control.js';9export { PathError, protectedReason, resolveInWorkspace, ROOT_INSTRUCTION_FILES, SHELL_RC_FILES, type ResolvedPath } from './paths.js';10export { opt, strictSchemaProblems, toStrictJsonSchema } from './schema.js';11export { unifiedDiff } from './diff.js';12export {13 artifactNameFor, finalizeToolOutput, loadArtifact, sha256Hex, OUTPUT_HEAD_CHARS, OUTPUT_OFFLOAD_THRESHOLD, OUTPUT_TAIL_CHARS, type FinalizedOutput,14} from './output.js';15export {16 buildSeatbeltProfile, cleanupRunTmp, runSandboxed, runTmpDir, sandboxEnv, secretReadDenies, SandboxUnavailableError, DEFAULT_SANDBOX_EXEC,17 SHELL_OUTPUT_CAP_BYTES, type SandboxRunOptions, type SandboxRunResult, type SeatbeltSpec,18} from './sandbox.js';19export { GIT_SAFE_CONFIG, runGit, type GitResult } from './git.js';20export { MAX_FILE_BYTES } from './files.js';21export { SHELL_DEFAULT_TIMEOUT_SEC, SHELL_MAX_TIMEOUT_SEC } from './shell.js';2223// Each tool is typed on its own input; the registry erases it (the engine validates with `tool.input` first).24// eslint-disable-next-line @typescript-eslint/no-explicit-any -- heterogeneous registry: Tool<I> is invariant in I25const t = (tool: Tool<any>): Tool => tool as Tool;2627/** Registry, in the deterministic order the engine should present tools to the model. */28export const TOOLS: Record<string, Tool> = {29 read_file: t(readFileTool),30 list_dir: t(listDirTool),31 search: t(searchTool),32 edit_file: t(editFileTool),33 write_file: t(writeFileTool),34 shell: t(shellTool),35 git_status: t(gitStatusTool),36 git_diff: t(gitDiffTool),37 git_commit: t(gitCommitTool),38 git_push: t(gitPushTool),39 ask_owner: t(askOwnerTool),40 propose_criteria: t(proposeCriteriaTool),41 update_criteria: t(updateCriteriaTool),42 read_artifact: t(readArtifactTool),43 finish: t(finishTool),44};45export const TOOL_NAMES: readonly string[] = Object.keys(TOOLS);46