feat: Model based toolset switching (#111)

Co-authored-by: cpacker <packercharles@gmail.com>
This commit is contained in:
Kevin Lin
2025-11-23 19:49:39 -08:00
committed by GitHub
parent 9ceae2af58
commit cd6b29e686
34 changed files with 1124 additions and 68 deletions

View File

@@ -1,37 +1,55 @@
import ApplyPatchDescription from "./descriptions/ApplyPatch.md";
import BashDescription from "./descriptions/Bash.md";
import BashOutputDescription from "./descriptions/BashOutput.md";
import EditDescription from "./descriptions/Edit.md";
import ExitPlanModeDescription from "./descriptions/ExitPlanMode.md";
import GlobDescription from "./descriptions/Glob.md";
import GrepDescription from "./descriptions/Grep.md";
import GrepFilesDescription from "./descriptions/GrepFiles.md";
import KillBashDescription from "./descriptions/KillBash.md";
import ListDirCodexDescription from "./descriptions/ListDirCodex.md";
import LSDescription from "./descriptions/LS.md";
import MultiEditDescription from "./descriptions/MultiEdit.md";
import ReadDescription from "./descriptions/Read.md";
import ReadFileCodexDescription from "./descriptions/ReadFileCodex.md";
import ShellDescription from "./descriptions/Shell.md";
import ShellCommandDescription from "./descriptions/ShellCommand.md";
import TodoWriteDescription from "./descriptions/TodoWrite.md";
import WriteDescription from "./descriptions/Write.md";
import { apply_patch } from "./impl/ApplyPatch";
import { bash } from "./impl/Bash";
import { bash_output } from "./impl/BashOutput";
import { edit } from "./impl/Edit";
import { exit_plan_mode } from "./impl/ExitPlanMode";
import { glob } from "./impl/Glob";
import { grep } from "./impl/Grep";
import { grep_files } from "./impl/GrepFiles";
import { kill_bash } from "./impl/KillBash";
import { list_dir } from "./impl/ListDirCodex";
import { ls } from "./impl/LS";
import { multi_edit } from "./impl/MultiEdit";
import { read } from "./impl/Read";
import { read_file } from "./impl/ReadFileCodex";
import { shell } from "./impl/Shell";
import { shell_command } from "./impl/ShellCommand";
import { todo_write } from "./impl/TodoWrite";
import { write } from "./impl/Write";
import ApplyPatchSchema from "./schemas/ApplyPatch.json";
import BashSchema from "./schemas/Bash.json";
import BashOutputSchema from "./schemas/BashOutput.json";
import EditSchema from "./schemas/Edit.json";
import ExitPlanModeSchema from "./schemas/ExitPlanMode.json";
import GlobSchema from "./schemas/Glob.json";
import GrepSchema from "./schemas/Grep.json";
import GrepFilesSchema from "./schemas/GrepFiles.json";
import KillBashSchema from "./schemas/KillBash.json";
import ListDirCodexSchema from "./schemas/ListDirCodex.json";
import LSSchema from "./schemas/LS.json";
import MultiEditSchema from "./schemas/MultiEdit.json";
import ReadSchema from "./schemas/Read.json";
import ReadFileCodexSchema from "./schemas/ReadFileCodex.json";
import ShellSchema from "./schemas/Shell.json";
import ShellCommandSchema from "./schemas/ShellCommand.json";
import TodoWriteSchema from "./schemas/TodoWrite.json";
import WriteSchema from "./schemas/Write.json";
@@ -104,6 +122,36 @@ const toolDefinitions = {
description: WriteDescription.trim(),
impl: write as unknown as ToolImplementation,
},
shell_command: {
schema: ShellCommandSchema,
description: ShellCommandDescription.trim(),
impl: shell_command as unknown as ToolImplementation,
},
shell: {
schema: ShellSchema,
description: ShellDescription.trim(),
impl: shell as unknown as ToolImplementation,
},
read_file: {
schema: ReadFileCodexSchema,
description: ReadFileCodexDescription.trim(),
impl: read_file as unknown as ToolImplementation,
},
list_dir: {
schema: ListDirCodexSchema,
description: ListDirCodexDescription.trim(),
impl: list_dir as unknown as ToolImplementation,
},
grep_files: {
schema: GrepFilesSchema,
description: GrepFilesDescription.trim(),
impl: grep_files as unknown as ToolImplementation,
},
apply_patch: {
schema: ApplyPatchSchema,
description: ApplyPatchDescription.trim(),
impl: apply_patch as unknown as ToolImplementation,
},
} as const satisfies Record<string, ToolAssets>;
export type ToolName = keyof typeof toolDefinitions;